From a780838c2e71d5d682cc337ab852aef5b47248a2 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 12 Feb 2005 17:15:04 +0000 Subject: [PATCH 001/248] added stubs for NeedCurrentDirectoryForExePathA/W() svn path=/trunk/; revision=13511 --- reactos/include/ascii.h | 6 +++++ reactos/include/funcs.h | 2 ++ reactos/include/unicode.h | 6 +++++ reactos/lib/kernel32/file/dir.c | 40 +++++++++++++++++++++++++++++++ reactos/lib/kernel32/kernel32.def | 2 ++ 5 files changed, 56 insertions(+) diff --git a/reactos/include/ascii.h b/reactos/include/ascii.h index c694424e14f..49c32536b68 100644 --- a/reactos/include/ascii.h +++ b/reactos/include/ascii.h @@ -1107,6 +1107,12 @@ GetCurrentDirectoryA( LPSTR lpBuffer ); +BOOL +STDCALL +NeedCurrentDirectoryForExePathA( + LPCSTR ExeName + ); + WINBOOL STDCALL GetDiskFreeSpaceA( diff --git a/reactos/include/funcs.h b/reactos/include/funcs.h index 573b18eecd6..2a2fc546aa6 100644 --- a/reactos/include/funcs.h +++ b/reactos/include/funcs.h @@ -358,6 +358,7 @@ typedef PPROGRESS_ROUTINE LPPROGRESS_ROUTINE; #define GetWindowsDirectory GetWindowsDirectoryW #define SetCurrentDirectory SetCurrentDirectoryW #define GetCurrentDirectory GetCurrentDirectoryW +#define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathW #define GetDiskFreeSpace GetDiskFreeSpaceW #define GetDiskFreeSpaceEx GetDiskFreeSpaceExW #define CreateDirectory CreateDirectoryW @@ -878,6 +879,7 @@ typedef PPROGRESS_ROUTINE LPPROGRESS_ROUTINE; #define GetWindowsDirectory GetWindowsDirectoryA #define SetCurrentDirectory SetCurrentDirectoryA #define GetCurrentDirectory GetCurrentDirectoryA +#define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathA #define GetDiskFreeSpace GetDiskFreeSpaceA #define GetDiskFreeSpaceEx GetDiskFreeSpaceExA #define CreateDirectory CreateDirectoryA diff --git a/reactos/include/unicode.h b/reactos/include/unicode.h index e7d5e7471f2..847bad2269b 100644 --- a/reactos/include/unicode.h +++ b/reactos/include/unicode.h @@ -1118,6 +1118,12 @@ GetCurrentDirectoryW( LPWSTR lpBuffer ); +BOOL +STDCALL +NeedCurrentDirectoryForExePathW( + LPCWSTR ExeName + ); + WINBOOL STDCALL GetDiskFreeSpaceW( diff --git a/reactos/lib/kernel32/file/dir.c b/reactos/lib/kernel32/file/dir.c index b46e2d091a9..5011b836986 100644 --- a/reactos/lib/kernel32/file/dir.c +++ b/reactos/lib/kernel32/file/dir.c @@ -1059,4 +1059,44 @@ GetDllDirectoryA( return Ret; } + +/* + * @unimplemented + */ +BOOL STDCALL +NeedCurrentDirectoryForExePathW(LPCWSTR ExeName) +{ + DPRINT1("NeedCurrentDirectoryForExePathW(0x%x) not implemented!\n", ExeName); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + + +/* + * @implemented + */ +BOOL STDCALL +NeedCurrentDirectoryForExePathA(LPCSTR ExeName) +{ + ANSI_STRING ExeNameA; + UNICODE_STRING ExeNameU; + BOOL Ret; + + RtlInitAnsiString(&ExeNameA, ExeName); + if(bIsFileApiAnsi) + { + RtlAnsiStringToUnicodeString(&ExeNameU, &ExeNameA, TRUE); + } + else + { + RtlOemStringToUnicodeString(&ExeNameU, &ExeNameA, TRUE); + } + + Ret = NeedCurrentDirectoryForExePathW(ExeNameU.Buffer); + + RtlFreeUnicodeString(&ExeNameU); + + return Ret; +} + /* EOF */ diff --git a/reactos/lib/kernel32/kernel32.def b/reactos/lib/kernel32/kernel32.def index f618755bef1..383ec6db0ef 100644 --- a/reactos/lib/kernel32/kernel32.def +++ b/reactos/lib/kernel32/kernel32.def @@ -641,6 +641,8 @@ MoveFileW@8 MoveFileWithProgressW@20 MulDiv@12 MultiByteToWideChar@24 +NeedCurrentDirectoryForExePathA@4 +NeedCurrentDirectoryForExePathW@4 NlsConvertIntegerToString@20 ;NlsGetCacheUpdateCount ;NlsResetProcessLocale From 709af1f28a0b5d420bec9e7a23cf8cb73816bc96 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 12 Feb 2005 20:37:04 +0000 Subject: [PATCH 002/248] the callback management doesn't have to be serialized as it's only accessed by the thread itself svn path=/trunk/; revision=13512 --- reactos/include/napi/win32.h | 1 - reactos/ntoskrnl/ps/process.c | 353 +++++++++++------------- reactos/subsys/win32k/main/dllmain.c | 1 - reactos/subsys/win32k/ntuser/callback.c | 6 - 4 files changed, 159 insertions(+), 202 deletions(-) diff --git a/reactos/include/napi/win32.h b/reactos/include/napi/win32.h index fa740bd1eac..52f3c05843e 100644 --- a/reactos/include/napi/win32.h +++ b/reactos/include/napi/win32.h @@ -8,7 +8,6 @@ typedef struct _W32THREAD PVOID MessageQueue; FAST_MUTEX WindowListLock; LIST_ENTRY WindowListHead; - FAST_MUTEX W32CallbackListLock; LIST_ENTRY W32CallbackListHead; struct _KBDTABLES* KeyboardLayout; struct _DESKTOP_OBJECT* Desktop; diff --git a/reactos/ntoskrnl/ps/process.c b/reactos/ntoskrnl/ps/process.c index 00c5dec9c6c..3244eef69f7 100644 --- a/reactos/ntoskrnl/ps/process.c +++ b/reactos/ntoskrnl/ps/process.c @@ -51,7 +51,7 @@ static const INFORMATION_CLASS_INFO PsProcessInfoClass[] = ICI_SQ_SAME( sizeof(PROCESS_WS_WATCH_INFORMATION), sizeof(ULONG), ICIF_QUERY | ICIF_SET ), /* ProcessWorkingSetWatch */ ICI_SQ_SAME( 0 /* FIXME */, sizeof(ULONG), ICIF_SET ), /* ProcessUserModeIOPL */ ICI_SQ_SAME( sizeof(BOOLEAN), sizeof(ULONG), ICIF_SET ), /* ProcessEnableAlignmentFaultFixup */ - ICI_SQ_SAME( sizeof(PROCESS_PRIORITY_CLASS), sizeof(USHORT), ICIF_SET ), /* ProcessPriorityClass */ + ICI_SQ_SAME( sizeof(PROCESS_PRIORITY_CLASS), sizeof(USHORT), ICIF_QUERY | ICIF_SET ), /* ProcessPriorityClass */ ICI_SQ_SAME( sizeof(ULONG), sizeof(ULONG), ICIF_QUERY ), /* ProcessWx86Information */ ICI_SQ_SAME( sizeof(ULONG), sizeof(ULONG), ICIF_QUERY ), /* ProcessHandleCount */ ICI_SQ_SAME( sizeof(KAFFINITY), sizeof(ULONG), ICIF_SET ), /* ProcessAffinityMask */ @@ -1846,86 +1846,79 @@ NtSetInformationProcess(IN HANDLE ProcessHandle, case ProcessDebugPort: { - if(ProcessInformationLength != sizeof(HANDLE)) + HANDLE PortHandle = NULL; + + /* make a safe copy of the buffer on the stack */ + _SEH_TRY { - Status = STATUS_INFO_LENGTH_MISMATCH; + PortHandle = *(PHANDLE)ProcessInformation; + Status = (PortHandle != NULL ? STATUS_SUCCESS : STATUS_INVALID_PARAMETER); } - else + _SEH_HANDLE { - HANDLE PortHandle = NULL; + Status = _SEH_GetExceptionCode(); + } + _SEH_END; - /* make a safe copy of the buffer on the stack */ - _SEH_TRY - { - PortHandle = *(PHANDLE)ProcessInformation; - Status = (PortHandle != NULL ? STATUS_SUCCESS : STATUS_INVALID_PARAMETER); - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; + if(NT_SUCCESS(Status)) + { + PEPORT DebugPort; + /* in case we had success reading from the buffer, verify the provided + * LPC port handle + */ + Status = ObReferenceObjectByHandle(PortHandle, + 0, + LpcPortObjectType, + PreviousMode, + (PVOID)&DebugPort, + NULL); if(NT_SUCCESS(Status)) { - PEPORT DebugPort; + /* lock the process to be thread-safe! */ - /* in case we had success reading from the buffer, verify the provided - * LPC port handle - */ - Status = ObReferenceObjectByHandle(PortHandle, - 0, - LpcPortObjectType, - PreviousMode, - (PVOID)&DebugPort, - NULL); + Status = PsLockProcess(Process, FALSE); if(NT_SUCCESS(Status)) { - /* lock the process to be thread-safe! */ - - Status = PsLockProcess(Process, FALSE); - if(NT_SUCCESS(Status)) + /* + * according to "NT Native API" documentation, setting the debug + * port is only permitted once! + */ + if(Process->DebugPort == NULL) { - /* - * according to "NT Native API" documentation, setting the debug - * port is only permitted once! - */ - if(Process->DebugPort == NULL) + /* keep the reference to the handle! */ + Process->DebugPort = DebugPort; + + if(Process->Peb) { - /* keep the reference to the handle! */ - Process->DebugPort = DebugPort; - - if(Process->Peb) - { - /* we're now debugging the process, so set the flag in the PEB - structure. However, to access it we need to attach to the - process so we're sure we're in the right context! */ + /* we're now debugging the process, so set the flag in the PEB + structure. However, to access it we need to attach to the + process so we're sure we're in the right context! */ - KeAttachProcess(&Process->Pcb); - _SEH_TRY - { - Process->Peb->BeingDebugged = TRUE; - } - _SEH_HANDLE - { - DPRINT1("Trying to set the Peb->BeingDebugged field of process 0x%x failed, exception: 0x%x\n", Process, _SEH_GetExceptionCode()); - } - _SEH_END; - KeDetachProcess(); + KeAttachProcess(&Process->Pcb); + _SEH_TRY + { + Process->Peb->BeingDebugged = TRUE; } - Status = STATUS_SUCCESS; + _SEH_HANDLE + { + DPRINT1("Trying to set the Peb->BeingDebugged field of process 0x%x failed, exception: 0x%x\n", Process, _SEH_GetExceptionCode()); + } + _SEH_END; + KeDetachProcess(); } - else - { - ObDereferenceObject(DebugPort); - Status = STATUS_PORT_ALREADY_SET; - } - PsUnlockProcess(Process); + Status = STATUS_SUCCESS; } else { ObDereferenceObject(DebugPort); + Status = STATUS_PORT_ALREADY_SET; } + PsUnlockProcess(Process); + } + else + { + ObDereferenceObject(DebugPort); } } } @@ -1934,67 +1927,60 @@ NtSetInformationProcess(IN HANDLE ProcessHandle, case ProcessExceptionPort: { - if(ProcessInformationLength != sizeof(HANDLE)) - { - Status = STATUS_INFO_LENGTH_MISMATCH; - } - else - { - HANDLE PortHandle = NULL; + HANDLE PortHandle = NULL; - /* make a safe copy of the buffer on the stack */ - _SEH_TRY - { - PortHandle = *(PHANDLE)ProcessInformation; - Status = STATUS_SUCCESS; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; + /* make a safe copy of the buffer on the stack */ + _SEH_TRY + { + PortHandle = *(PHANDLE)ProcessInformation; + Status = STATUS_SUCCESS; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(NT_SUCCESS(Status)) + { + PEPORT ExceptionPort; + /* in case we had success reading from the buffer, verify the provided + * LPC port handle + */ + Status = ObReferenceObjectByHandle(PortHandle, + 0, + LpcPortObjectType, + PreviousMode, + (PVOID)&ExceptionPort, + NULL); if(NT_SUCCESS(Status)) { - PEPORT ExceptionPort; + /* lock the process to be thread-safe! */ - /* in case we had success reading from the buffer, verify the provided - * LPC port handle - */ - Status = ObReferenceObjectByHandle(PortHandle, - 0, - LpcPortObjectType, - PreviousMode, - (PVOID)&ExceptionPort, - NULL); + Status = PsLockProcess(Process, FALSE); if(NT_SUCCESS(Status)) { - /* lock the process to be thread-safe! */ - - Status = PsLockProcess(Process, FALSE); - if(NT_SUCCESS(Status)) + /* + * according to "NT Native API" documentation, setting the exception + * port is only permitted once! + */ + if(Process->ExceptionPort == NULL) { - /* - * according to "NT Native API" documentation, setting the exception - * port is only permitted once! - */ - if(Process->ExceptionPort == NULL) - { - /* keep the reference to the handle! */ - Process->ExceptionPort = ExceptionPort; - Status = STATUS_SUCCESS; - } - else - { - ObDereferenceObject(ExceptionPort); - Status = STATUS_PORT_ALREADY_SET; - } - PsUnlockProcess(Process); + /* keep the reference to the handle! */ + Process->ExceptionPort = ExceptionPort; + Status = STATUS_SUCCESS; } else { ObDereferenceObject(ExceptionPort); + Status = STATUS_PORT_ALREADY_SET; } + PsUnlockProcess(Process); + } + else + { + ObDereferenceObject(ExceptionPort); } } } @@ -2003,127 +1989,106 @@ NtSetInformationProcess(IN HANDLE ProcessHandle, case ProcessAccessToken: { - if(ProcessInformationLength != sizeof(PROCESS_ACCESS_TOKEN)) + HANDLE TokenHandle = NULL; + + /* make a safe copy of the buffer on the stack */ + _SEH_TRY { - Status = STATUS_INFO_LENGTH_MISMATCH; + TokenHandle = ((PPROCESS_ACCESS_TOKEN)ProcessInformation)->Token; + Status = STATUS_SUCCESS; } - else + _SEH_HANDLE { - HANDLE TokenHandle = NULL; + Status = _SEH_GetExceptionCode(); + } + _SEH_END; - /* make a safe copy of the buffer on the stack */ - _SEH_TRY - { - TokenHandle = ((PPROCESS_ACCESS_TOKEN)ProcessInformation)->Token; - Status = STATUS_SUCCESS; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - - if(NT_SUCCESS(Status)) - { - /* in case we had success reading from the buffer, perform the actual task */ - Status = PspAssignPrimaryToken(Process, TokenHandle); - } + if(NT_SUCCESS(Status)) + { + /* in case we had success reading from the buffer, perform the actual task */ + Status = PspAssignPrimaryToken(Process, TokenHandle); } break; } case ProcessDefaultHardErrorMode: { - if(ProcessInformationLength != sizeof(UINT)) + _SEH_TRY { - Status = STATUS_INFO_LENGTH_MISMATCH; + InterlockedExchange((LONG*)&Process->DefaultHardErrorProcessing, + *(PLONG)ProcessInformation); + Status = STATUS_SUCCESS; } - else + _SEH_HANDLE { - _SEH_TRY - { - InterlockedExchange((LONG*)&Process->DefaultHardErrorProcessing, - *(PLONG)ProcessInformation); - Status = STATUS_SUCCESS; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; + Status = _SEH_GetExceptionCode(); } + _SEH_END; break; } case ProcessSessionInformation: { - if(ProcessInformationLength != sizeof(UINT)) + PROCESS_SESSION_INFORMATION SessionInfo; + Status = STATUS_SUCCESS; + + _SEH_TRY { - Status = STATUS_INFO_LENGTH_MISMATCH; + /* copy the structure to the stack */ + SessionInfo = *(PPROCESS_SESSION_INFORMATION)ProcessInformation; } - else + _SEH_HANDLE { - PROCESS_SESSION_INFORMATION SessionInfo; - Status = STATUS_SUCCESS; + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(NT_SUCCESS(Status)) + { + /* we successfully copied the structure to the stack, continue processing */ - _SEH_TRY + /* + * setting the session id requires the SeTcbPrivilege! + */ + if(!SeSinglePrivilegeCheck(SeTcbPrivilege, + PreviousMode)) { - /* copy the structure to the stack */ - SessionInfo = *(PPROCESS_SESSION_INFORMATION)ProcessInformation; + DPRINT1("NtSetInformationProcess: Caller requires the SeTcbPrivilege privilege for setting ProcessSessionInformation!\n"); + /* can't set the session id, bail! */ + Status = STATUS_PRIVILEGE_NOT_HELD; + break; } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; + /* FIXME - update the session id for the process token */ + + Status = PsLockProcess(Process, FALSE); if(NT_SUCCESS(Status)) { - /* we successfully copied the structure to the stack, continue processing */ - - /* - * setting the session id requires the SeTcbPrivilege! - */ - if(!SeSinglePrivilegeCheck(SeTcbPrivilege, - PreviousMode)) - { - DPRINT1("NtSetInformationProcess: Caller requires the SeTcbPrivilege privilege for setting ProcessSessionInformation!\n"); - /* can't set the session id, bail! */ - Status = STATUS_PRIVILEGE_NOT_HELD; - break; - } - - /* FIXME - update the session id for the process token */ + Process->SessionId = SessionInfo.SessionId; - Status = PsLockProcess(Process, FALSE); - if(NT_SUCCESS(Status)) + /* Update the session id in the PEB structure */ + if(Process->Peb != NULL) { - Process->SessionId = SessionInfo.SessionId; + /* we need to attach to the process to make sure we're in the right + context to access the PEB structure */ + KeAttachProcess(&Process->Pcb); - /* Update the session id in the PEB structure */ - if(Process->Peb != NULL) + _SEH_TRY { - /* we need to attach to the process to make sure we're in the right - context to access the PEB structure */ - KeAttachProcess(&Process->Pcb); + /* FIXME: Process->Peb->SessionId = SessionInfo.SessionId; */ - _SEH_TRY - { - /* FIXME: Process->Peb->SessionId = SessionInfo.SessionId; */ - - Status = STATUS_SUCCESS; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - - KeDetachProcess(); + Status = STATUS_SUCCESS; } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; - PsUnlockProcess(Process); + KeDetachProcess(); } + + PsUnlockProcess(Process); } } break; diff --git a/reactos/subsys/win32k/main/dllmain.c b/reactos/subsys/win32k/main/dllmain.c index b977b9481a3..9a902d0284f 100644 --- a/reactos/subsys/win32k/main/dllmain.c +++ b/reactos/subsys/win32k/main/dllmain.c @@ -178,7 +178,6 @@ Win32kThreadCallback (struct _ETHREAD *Thread, InitializeListHead(&Win32Thread->WindowListHead); ExInitializeFastMutex(&Win32Thread->WindowListLock); InitializeListHead(&Win32Thread->W32CallbackListHead); - ExInitializeFastMutex(&Win32Thread->W32CallbackListLock); } else { diff --git a/reactos/subsys/win32k/ntuser/callback.c b/reactos/subsys/win32k/ntuser/callback.c index 030fab097ba..564d0ab7e6a 100644 --- a/reactos/subsys/win32k/ntuser/callback.c +++ b/reactos/subsys/win32k/ntuser/callback.c @@ -63,9 +63,7 @@ IntCbAllocateMemory(ULONG Size) /* insert the callback memory into the thread's callback list */ - ExAcquireFastMutex(&W32Thread->W32CallbackListLock); InsertTailList(&W32Thread->W32CallbackListHead, &Mem->ListEntry); - ExReleaseFastMutex(&W32Thread->W32CallbackListLock); return (Mem + 1); } @@ -84,9 +82,7 @@ IntCbFreeMemory(PVOID Data) ASSERT(W32Thread); /* remove the memory block from the thread's callback list */ - ExAcquireFastMutex(&W32Thread->W32CallbackListLock); RemoveEntryList(&Mem->ListEntry); - ExReleaseFastMutex(&W32Thread->W32CallbackListLock); /* free memory */ ExFreePool(Mem); @@ -98,7 +94,6 @@ IntCleanupThreadCallbacks(PW32THREAD W32Thread) PLIST_ENTRY CurrentEntry; PINT_CALLBACK_HEADER Mem; - ExAcquireFastMutex(&W32Thread->W32CallbackListLock); while (!IsListEmpty(&W32Thread->W32CallbackListHead)) { CurrentEntry = RemoveHeadList(&W32Thread->W32CallbackListHead); @@ -108,7 +103,6 @@ IntCleanupThreadCallbacks(PW32THREAD W32Thread) /* free memory */ ExFreePool(Mem); } - ExReleaseFastMutex(&W32Thread->W32CallbackListLock); } /* FUNCTIONS *****************************************************************/ From 2b5f93358aa6d7939dd2581b501055c21b133b46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sat, 12 Feb 2005 20:51:20 +0000 Subject: [PATCH 003/248] Sync to Wine-20050211 Francois Gouget - Assorted spelling fixes. Dimitrie O. Paun - Use the LVCFMT_{LEFT,RIGHT,CENTER} enumeration flags properly. Alexandre Julliard - Store the "managed" flag as a window property instead of the Wine-specific WS_EX_MANAGED style bit. Paul Vriens - Remove needless check for horizontal or vertical pager. Paul Vriens - Remove the checking/setting of the defaults in TRACKBAR_Create. svn path=/trunk/; revision=13513 --- reactos/lib/comctl32/datetime.c | 1 - reactos/lib/comctl32/listview.c | 10 +++++----- reactos/lib/comctl32/pager.c | 10 ---------- reactos/lib/comctl32/status.c | 8 ++++---- reactos/lib/comctl32/toolbar.c | 4 ++-- reactos/lib/comctl32/trackbar.c | 15 +++------------ 6 files changed, 14 insertions(+), 34 deletions(-) diff --git a/reactos/lib/comctl32/datetime.c b/reactos/lib/comctl32/datetime.c index daa068591b0..8b8af308a8d 100644 --- a/reactos/lib/comctl32/datetime.c +++ b/reactos/lib/comctl32/datetime.c @@ -1085,7 +1085,6 @@ DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) uMsg, wParam, lParam); return DefWindowProcW (hwnd, uMsg, wParam, lParam); } - return 0; } diff --git a/reactos/lib/comctl32/listview.c b/reactos/lib/comctl32/listview.c index b774e853bee..23875cf9df0 100644 --- a/reactos/lib/comctl32/listview.c +++ b/reactos/lib/comctl32/listview.c @@ -254,7 +254,7 @@ typedef struct tagLISTVIEW_INFO BOOL bRedraw; /* Turns on/off repaints & invalidations */ BOOL bAutoarrange; /* Autoarrange flag when NOT in LVS_AUTOARRANGE */ BOOL bFocus; - BOOL bDoChangeNotify; /* send change notification messages? */ + BOOL bDoChangeNotify; /* send change notification messages? */ INT nFocusedItem; RECT rcFocus; DWORD dwStyle; /* the cached window GWL_STYLE */ @@ -4145,7 +4145,7 @@ static BOOL LISTVIEW_DeleteAllItems(LISTVIEW_INFO *infoPtr) for (i = infoPtr->nItemCount - 1; i >= 0; i--) { - /* send LVN_DELETEITEM notification, if not supressed */ + /* send LVN_DELETEITEM notification, if not suppressed */ if (!bSuppress) notify_deleteitem(infoPtr, i); if (!(infoPtr->dwStyle & LVS_OWNERDATA)) { @@ -6296,11 +6296,11 @@ static void column_fill_hditem(LISTVIEW_INFO *infoPtr, HDITEMW *lphdi, INT nColu lphdi->mask |= HDI_FORMAT; /* set text alignment (leftmost column must be left-aligned) */ - if (nColumn == 0 || lpColumn->fmt & LVCFMT_LEFT) + if (nColumn == 0 || (lpColumn->fmt & LVCFMT_JUSTIFYMASK) == LVCFMT_LEFT) lphdi->fmt |= HDF_LEFT; - else if (lpColumn->fmt & LVCFMT_RIGHT) + else if ((lpColumn->fmt & LVCFMT_JUSTIFYMASK) == LVCFMT_RIGHT) lphdi->fmt |= HDF_RIGHT; - else if (lpColumn->fmt & LVCFMT_CENTER) + else if ((lpColumn->fmt & LVCFMT_JUSTIFYMASK) == LVCFMT_CENTER) lphdi->fmt |= HDF_CENTER; if (lpColumn->fmt & LVCFMT_BITMAP_ON_RIGHT) diff --git a/reactos/lib/comctl32/pager.c b/reactos/lib/comctl32/pager.c index 0cd5e67b8a3..bde664dd3bd 100644 --- a/reactos/lib/comctl32/pager.c +++ b/reactos/lib/comctl32/pager.c @@ -836,16 +836,6 @@ PAGER_Create (HWND hwnd, WPARAM wParam, LPARAM lParam) if (dwStyle & PGS_DRAGNDROP) FIXME("[%p] Drag and Drop style is not implemented yet.\n", hwnd); - /* - * If neither horizontal nor vertical style specified, default to vertical. - * This is probably not necessary, since the style may be set later on as - * the control is initialized, but just in case it isn't, set it here. - */ - if (!(dwStyle & PGS_HORZ) && !(dwStyle & PGS_VERT)) - { - dwStyle |= PGS_VERT; - SetWindowLongA(hwnd, GWL_STYLE, dwStyle); - } return 0; } diff --git a/reactos/lib/comctl32/status.c b/reactos/lib/comctl32/status.c index 4ee0b9c44fd..d5b94c44ae2 100644 --- a/reactos/lib/comctl32/status.c +++ b/reactos/lib/comctl32/status.c @@ -650,7 +650,7 @@ STATUSBAR_SetTextT (STATUS_INFO *infoPtr, INT nPart, WORD style, { STATUSWINDOWPART *part=NULL; BOOL changed = FALSE; - INT oldStyle; + INT oldStyle; if (style & SBT_OWNERDRAW) { TRACE("part %d, text %p\n",nPart,text); @@ -890,9 +890,9 @@ STATUSBAR_WMCreate (HWND hwnd, LPCREATESTRUCTA lpCreate) dwStyle = GetWindowLongW (hwnd, GWL_STYLE); /* statusbars on managed windows should not have SIZEGRIP style */ - if ((dwStyle & SBARS_SIZEGRIP) && lpCreate->hwndParent) - if (GetWindowLongW (lpCreate->hwndParent, GWL_EXSTYLE) & WS_EX_MANAGED) - SetWindowLongW (hwnd, GWL_STYLE, dwStyle & ~SBARS_SIZEGRIP); + if ((dwStyle & SBARS_SIZEGRIP) && lpCreate->hwndParent && + GetPropA( lpCreate->hwndParent, "__wine_x11_managed" )) + SetWindowLongW (hwnd, GWL_STYLE, dwStyle & ~SBARS_SIZEGRIP); if ((hdc = GetDC (hwnd))) { TEXTMETRICW tm; diff --git a/reactos/lib/comctl32/toolbar.c b/reactos/lib/comctl32/toolbar.c index 58f8b0e105c..0056c21655c 100644 --- a/reactos/lib/comctl32/toolbar.c +++ b/reactos/lib/comctl32/toolbar.c @@ -64,7 +64,7 @@ * enablebtn.exe, getbmp.exe, getbtn.exe, getflags.exe, hidebtn.exe, * indetbtn.exe, insbtn.exe, pressbtn.exe, setbtnsz.exe, setcmdid.exe, * setparnt.exe, setrows.exe, toolwnd.exe. - * - Microsofts controlspy examples. + * - Microsoft's controlspy examples. * - Charles Petzold's 'Programming Windows': gadgets.exe */ @@ -6080,7 +6080,7 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam) TRACKMOUSEEVENT trackinfo; INT nHit; TBUTTON_INFO *btnPtr; - + if (infoPtr->dwStyle & TBSTYLE_FLAT) { /* fill in the TRACKMOUSEEVENT struct */ trackinfo.cbSize = sizeof(TRACKMOUSEEVENT); diff --git a/reactos/lib/comctl32/trackbar.c b/reactos/lib/comctl32/trackbar.c index 8a364d9a5e4..6c291e55c1f 100644 --- a/reactos/lib/comctl32/trackbar.c +++ b/reactos/lib/comctl32/trackbar.c @@ -1336,7 +1336,7 @@ static LRESULT TRACKBAR_Create (HWND hwnd, LPCREATESTRUCTW lpcs) { TRACKBAR_INFO *infoPtr; - DWORD oldStyle, newStyle; + DWORD dwStyle; infoPtr = (TRACKBAR_INFO *)Alloc (sizeof(TRACKBAR_INFO)); if (!infoPtr) return -1; @@ -1359,19 +1359,10 @@ TRACKBAR_Create (HWND hwnd, LPCREATESTRUCTW lpcs) TRACKBAR_InitializeThumb (infoPtr); - oldStyle = newStyle = GetWindowLongW (hwnd, GWL_STYLE); - if (oldStyle & TBS_VERT) { - if (! (oldStyle & (TBS_LEFT | TBS_RIGHT | TBS_BOTH)) ) - newStyle |= TBS_RIGHT; - } else { - if (! (oldStyle & (TBS_TOP | TBS_BOTTOM | TBS_BOTH)) ) - newStyle |= TBS_BOTTOM; - } - if (newStyle != oldStyle) - SetWindowLongW (hwnd, GWL_STYLE, newStyle); + dwStyle = GetWindowLongW (hwnd, GWL_STYLE); /* Create tooltip control */ - if (newStyle & TBS_TOOLTIPS) { + if (dwStyle & TBS_TOOLTIPS) { infoPtr->hwndToolTip = CreateWindowExW (0, TOOLTIPS_CLASSW, NULL, 0, From b0c3deb666c2b43c034264e9431d2e9ec451190b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sat, 12 Feb 2005 21:03:08 +0000 Subject: [PATCH 004/248] Henning Gerhardt - Update German resources. Robert Shearman - Draw a representation of a document in the page setup dialog. - Change some FIXME's to TRACE's because everything we need is implemented and they fire for ones that we don't need to implement. Remi Assailly - char -> const char fixes. Jose Manuel Ferrer Ortiz - Updated Spanish resources. Dmitry Timoshkov - Correct coordinates of a couple of controls. - Do not forget to allocate internal OPENFILENAMEW structure for 16-bit GetOpenFileName, initialize it by zeros for 16/A cases. - Make GetOpenFileNameW with an old style open file dialog work with the original OPENFILENAMEW structure, making sure that all changes are passed back to the caller. Ulrich Czekalla - GetFileName31W should call unicode version of FD31_AllocPrivate. Jonathan Ernst - Updated French resources. svn path=/trunk/; revision=13514 --- reactos/lib/comdlg32/cdlg.h | 2 + reactos/lib/comdlg32/cdlg32.c | 2 +- reactos/lib/comdlg32/cdlg_De.rc | 22 ++++-- reactos/lib/comdlg32/cdlg_En.rc | 28 +++++++ reactos/lib/comdlg32/cdlg_Es.rc | 38 +++++----- reactos/lib/comdlg32/cdlg_Fr.rc | 11 +++ reactos/lib/comdlg32/cdlg_Ru.rc | 4 +- reactos/lib/comdlg32/filedlg.c | 48 ++++++++---- reactos/lib/comdlg32/filedlg16.c | 10 ++- reactos/lib/comdlg32/filedlg31.c | 44 +++++------ reactos/lib/comdlg32/filedlg31.h | 3 +- reactos/lib/comdlg32/printdlg.c | 123 +++++++++++++++++++++++++++++-- 12 files changed, 260 insertions(+), 75 deletions(-) diff --git a/reactos/lib/comdlg32/cdlg.h b/reactos/lib/comdlg32/cdlg.h index 3e3378e138c..4a470f20834 100644 --- a/reactos/lib/comdlg32/cdlg.h +++ b/reactos/lib/comdlg32/cdlg.h @@ -152,6 +152,8 @@ typedef struct { #define IDS_SAVE_AS 1204 #define IDS_OPEN_FILE 1205 +#define IDS_FAKEDOCTEXT 1300 + #include "windef.h" #include "winbase.h" #include "wingdi.h" diff --git a/reactos/lib/comdlg32/cdlg32.c b/reactos/lib/comdlg32/cdlg32.c index 197d986358e..eaf0eb5c017 100644 --- a/reactos/lib/comdlg32/cdlg32.c +++ b/reactos/lib/comdlg32/cdlg32.c @@ -63,7 +63,7 @@ BOOL (WINAPI *COMDLG32_SHGetFolderPathW)(HWND,int,HANDLE,DWORD,LPWSTR); * FALSE if sibling could not be loaded or instantiated twice, TRUE * otherwise. */ -static char * GPA_string = "Failed to get entry point %s for hinst = 0x%08x\n"; +static const char * GPA_string = "Failed to get entry point %s for hinst = 0x%08x\n"; #define GPA(dest, hinst, name) \ if(!(dest = (void*)GetProcAddress(hinst,name)))\ { \ diff --git a/reactos/lib/comdlg32/cdlg_De.rc b/reactos/lib/comdlg32/cdlg_De.rc index d7264e24dba..849c3531d44 100644 --- a/reactos/lib/comdlg32/cdlg_De.rc +++ b/reactos/lib/comdlg32/cdlg_De.rc @@ -148,7 +148,7 @@ END CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Font" +CAPTION "Schriftart" FONT 8, "MS Shell Dlg" { LTEXT "Schrift&art:",1088 ,6,3,40,9 @@ -315,7 +315,7 @@ FONT 8, "MS Shell Dlg" PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_CONTEXTHELP | DS_3DLOOK -CAPTION "Print Setup" +CAPTION "Druckereinrichtung" FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP @@ -441,15 +441,25 @@ STRINGTABLE DISCARDABLE /* Color names */ IDS_COLOR_GREEN "Grün" IDS_COLOR_OLIVE "Olivgrün" IDS_COLOR_NAVY "Dunkelblau" - IDS_COLOR_PURPLE "Violett" - IDS_COLOR_TEAL "Teal" + IDS_COLOR_PURPLE "Lila" + IDS_COLOR_TEAL "Blaugrün" IDS_COLOR_GRAY "Grau" IDS_COLOR_SILVER "Silber" IDS_COLOR_RED "Rot" IDS_COLOR_LIME "Hellgrün" IDS_COLOR_YELLOW "Gelb" IDS_COLOR_BLUE "Blau" - IDS_COLOR_FUCHSIA "Lila" - IDS_COLOR_AQUA "Aqua" + IDS_COLOR_FUCHSIA "Pink" + IDS_COLOR_AQUA "Aquamarin" IDS_COLOR_WHITE "Weiß" } + +STRINGTABLE DISCARDABLE +{ + IDS_FONT_SIZE "Wählen Sie eine Schriftgröße zwischen %d und %d Punkten aus." + IDS_SAVE_BUTTON "&Speichern" + IDS_SAVE_IN "Speichern &unter:" + IDS_SAVE "Speichern" + IDS_SAVE_AS "Speichern als" + IDS_OPEN_FILE "Öffne Datei" +} diff --git a/reactos/lib/comdlg32/cdlg_En.rc b/reactos/lib/comdlg32/cdlg_En.rc index 332eb1090ac..a18ad98c5a5 100644 --- a/reactos/lib/comdlg32/cdlg_En.rc +++ b/reactos/lib/comdlg32/cdlg_En.rc @@ -470,6 +470,34 @@ STRINGTABLE DISCARDABLE IDS_OPEN_FILE "Open File" } +/* Translators do not need to translate this text, unless the language uses a + * different character set or if the distribution of characters looks wrong. + * It is rendered illegibly small and is used to make a mock-up of a document. + */ +STRINGTABLE DISCARDABLE +{ + IDS_FAKEDOCTEXT + "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \ + Nulla a tortor. Etiam aliquet libero venenatis nunc. \n \ + \n \ + Sed augue ante, fermentum sit amet, imperdiet et, gravida eu, enim. \ + Donec nibh quam, sodales in, commodo vel, facilisis id, neque. \n \ + \n \ + Nunc eleifend bibendum nibh. Phasellus in lorem. Ut vel odio quis \ + libero adipiscing consequat. Donec consectetuer laoreet mauris. \n \ + \n \ + Maecenas tempor, ligula sed congue nonummy, arcu dolor ornare erat, \ + egestas iaculis magna purus sed turpis. \n \ + \n \ + Morbi ultricies est non ipsum. Cum sociis natoque penatibus et magnis \ + dis parturient montes, nascetur ridiculus mus. \n \ + \n \ + Duis sit amet nibh quis purus sollicitudin blandit. Curabitur justo. \ + Phasellus varius, erat eu luctus pharetra, odio elit fringilla leo, \ + non vulputate turpis elit id neque. Vestibulum sit amet tellus sed \ + tortor fermentum consectetuer." +} + /****************************************************************/ /* English neutral resources /****************************************************************/ diff --git a/reactos/lib/comdlg32/cdlg_Es.rc b/reactos/lib/comdlg32/cdlg_Es.rc index 25798e151c1..fe466299f97 100644 --- a/reactos/lib/comdlg32/cdlg_Es.rc +++ b/reactos/lib/comdlg32/cdlg_Es.rc @@ -47,7 +47,7 @@ FONT 8, "MS Shell Dlg" SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "&Guardar como..." +CAPTION "Guardar como..." FONT 8, "MS Shell Dlg" { LTEXT "Nombre de &archivo:", 1090, 6, 6, 76, 9 @@ -85,7 +85,7 @@ FONT 8, "MS Shell Dlg" LTEXT "&Hasta:", 1091, 120, 80, 30, 9 LTEXT "Calidad de impre&sión:", 1092, 6, 100, 76, 9 COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - CHECKBOX "Impri&mir en un archivo", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Impri&mir en archivo", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Condensado", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -96,7 +96,7 @@ CAPTION "Configuraci FONT 8, "MS Shell Dlg" { GROUPBOX "Impresora:", grp1, 6, 10, 180, 65, BS_GROUPBOX - RADIOBUTTON "Pre&determinada del sistema", rad1, 16, 20, 80, 12 + RADIOBUTTON "Impresora por &defecto", rad1, 16, 20, 80, 12 LTEXT "[ninguna]", 1088, 35, 35, 120, 9 RADIOBUTTON "Impresora &específica:", rad2, 16, 50, 80, 12 COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP @@ -187,7 +187,7 @@ STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Buscar" FONT 8, "MS Shell Dlg" { - LTEXT "Buscar:", -1, 4, 8, 42, 8 + LTEXT "Buscar:", -1, 4, 8, 42, 8 EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP CHECKBOX "&Sólo palabra entera", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "&Mayúsculas/minúsculas", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP @@ -202,7 +202,7 @@ FONT 8, "MS Shell Dlg" REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "R&eemplazar" +CAPTION "Reemplazar" FONT 8, "MS Shell Dlg" { LTEXT "Buscar:", -1, 4, 9, 48, 8 @@ -230,7 +230,7 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "&Ayuda", pshHelp, 50, 161, 48,14, WS_GROUP GROUPBOX "Impresora", grp4, 8, 4, 272,84, WS_GROUP - CONTROL "Imprimir a a&rchivo", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + CONTROL "Imprimir en a&rchivo", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 PUSHBUTTON "&Propiedades", psh2, 212, 17, 60,14, WS_GROUP LTEXT "&Nombre:", stc6, 16, 20, 36,8 COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP @@ -296,7 +296,7 @@ END PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Página de configuración" +CAPTION "Configuración de página" FONT 8, "MS Shell Dlg" BEGIN CONTROL "", rct1, "Static", SS_WHITERECT, 80, 8, 80, 80 @@ -392,8 +392,8 @@ STRINGTABLE DISCARDABLE página.\n\ Por favor, introduzca un valor entre %d y %d." PD32_FROM_NOT_ABOVE_TO "La entrada 'desde' no puede exceder \ a la entrada 'hasta'." - PD32_MARGINS_OVERLAP "Los márgenes overlap o fall outside \ -los boundaries del papel.\nPor favor, reintroduzca los márgenes." + PD32_MARGINS_OVERLAP "Los márgenes se superponen o quedan \ +fuera de los límites del papel.\nPor favor, reintroduzca los márgenes." PD32_NR_OF_COPIES_EMPTY "El número del valor 'Número de \ copias' no puede estar vacío." PD32_TOO_LARGE_COPIES "Este número tan grande de copias no \ @@ -421,11 +421,11 @@ desconocido." PD32_PRINTER_STATUS_PAPER_OUT "Sin papel; " PD32_PRINTER_STATUS_MANUAL_FEED "Ponga papel a mano; " PD32_PRINTER_STATUS_PAPER_PROBLEM "Problema con el papel; " - PD32_PRINTER_STATUS_OFFLINE "Impresora apagada; " + PD32_PRINTER_STATUS_OFFLINE "Impresora desconectada; " PD32_PRINTER_STATUS_IO_ACTIVE "E/S activa; " PD32_PRINTER_STATUS_BUSY "Ocupada; " PD32_PRINTER_STATUS_PRINTING "Imprimiendo; " - PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "La bandeja de salida está llena; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Bandeja de salida llena; " PD32_PRINTER_STATUS_NOT_AVAILABLE "No disponible; " PD32_PRINTER_STATUS_WAITING "Esperando; " PD32_PRINTER_STATUS_PROCESSING "Procesando; " @@ -434,10 +434,9 @@ desconocido." PD32_PRINTER_STATUS_TONER_LOW "Tóner bajo; " PD32_PRINTER_STATUS_NO_TONER "Sin tóner; " PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " - PD32_PRINTER_STATUS_USER_INTERVENTION "Interrumpido por el usuario; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Interrumpida por el usuario; " PD32_PRINTER_STATUS_OUT_OF_MEMORY "Sin memoria; " - PD32_PRINTER_STATUS_DOOR_OPEN "La puerta de la impresora está \ -abierta; " + PD32_PRINTER_STATUS_DOOR_OPEN "Puerta de la impresora abierta; " PD32_PRINTER_STATUS_SERVER_UNKNOWN "Servidor de impresión desconocido; " PD32_PRINTER_STATUS_POWER_SAVE "Modo de ahorro de energía; " } @@ -445,9 +444,9 @@ abierta; " STRINGTABLE DISCARDABLE /* Color names */ { IDS_COLOR_BLACK "Negro" - IDS_COLOR_MAROON "Marrón" + IDS_COLOR_MAROON "Granate" IDS_COLOR_GREEN "Verde" - IDS_COLOR_OLIVE "Oliva" + IDS_COLOR_OLIVE "Verde oliva" IDS_COLOR_NAVY "Azul marino" IDS_COLOR_PURPLE "Morado" IDS_COLOR_TEAL "Turquesa" @@ -464,5 +463,10 @@ STRINGTABLE DISCARDABLE /* Color names */ STRINGTABLE DISCARDABLE { - IDS_FONT_SIZE "Elija un tamaño de fuente entre %d and %d puntos." + IDS_FONT_SIZE "Elija un tamaño de fuente entre %d y %d puntos." + IDS_SAVE_BUTTON "&Guardar" + IDS_SAVE_IN "Guardar &en:" + IDS_SAVE "Guardar" + IDS_SAVE_AS "Guardar como" + IDS_OPEN_FILE "Abrir archivo" } diff --git a/reactos/lib/comdlg32/cdlg_Fr.rc b/reactos/lib/comdlg32/cdlg_Fr.rc index e1e67e085f8..c0e9e52c6fa 100644 --- a/reactos/lib/comdlg32/cdlg_Fr.rc +++ b/reactos/lib/comdlg32/cdlg_Fr.rc @@ -3,6 +3,7 @@ * French language support * * Copyright 1995 Alexandre Julliard + * Copyright 2005 Jonathan Ernst * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -462,3 +463,13 @@ STRINGTABLE DISCARDABLE /* Color names */ IDS_COLOR_AQUA "Aqua" IDS_COLOR_WHITE "Blanc" } + +STRINGTABLE DISCARDABLE +{ + IDS_FONT_SIZE "Sélectionnez une taille de police entre %d et %d points." + IDS_SAVE_BUTTON "&Sauver" + IDS_SAVE_IN "Sauver &dans:" + IDS_SAVE "Enregistrer" + IDS_SAVE_AS "Enregistrer sous" + IDS_OPEN_FILE "Ouvrir Fichier" +} diff --git a/reactos/lib/comdlg32/cdlg_Ru.rc b/reactos/lib/comdlg32/cdlg_Ru.rc index 1401f6cbccb..0e7447cb2a9 100644 --- a/reactos/lib/comdlg32/cdlg_Ru.rc +++ b/reactos/lib/comdlg32/cdlg_Ru.rc @@ -235,9 +235,9 @@ FONT 8, "MS Shell Dlg" LTEXT "&Èìÿ:", stc6, 16, 20, 36,8 COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP LTEXT "Ñòàòóñ:", stc8, 16, 36, 36,10, SS_NOPREFIX - LTEXT "Ýìóëèðîâàí", stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Ýìóëèðîâàí", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Òèï:", stc7, 16, 48, 36,10, SS_NOPREFIX - LTEXT "Ýìóëèðîâàí", stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Ýìóëèðîâàí", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Ìåñòî:", stc10, 16, 60, 36,10, SS_NOPREFIX LTEXT "Ýìóëèðîâàíî", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Ïðèìå÷àíèå:", stc9, 16, 72, 36,10, SS_NOPREFIX diff --git a/reactos/lib/comdlg32/filedlg.c b/reactos/lib/comdlg32/filedlg.c index 232b3273a09..86b66351cba 100644 --- a/reactos/lib/comdlg32/filedlg.c +++ b/reactos/lib/comdlg32/filedlg.c @@ -3377,7 +3377,7 @@ static void MemFree(void *mem) */ static BOOL FD32_GetTemplate(PFD31_DATA lfs) { - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; HANDLE hDlgTmpl; @@ -3445,9 +3445,9 @@ static BOOL CALLBACK FD32_Init(LPARAM lParam, PFD31_DATA lfs, DWORD data) if (NULL == lfs->private1632) return FALSE; if (IsUnicode) { - lfs->ofnW = *((LPOPENFILENAMEW) lParam); - if (lfs->ofnW.Flags & OFN_ENABLEHOOK) - if (lfs->ofnW.lpfnHook) + lfs->ofnW = (LPOPENFILENAMEW) lParam; + if (lfs->ofnW->Flags & OFN_ENABLEHOOK) + if (lfs->ofnW->lpfnHook) lfs->hook = TRUE; } else @@ -3456,7 +3456,8 @@ static BOOL CALLBACK FD32_Init(LPARAM lParam, PFD31_DATA lfs, DWORD data) if (priv->ofnA->Flags & OFN_ENABLEHOOK) if (priv->ofnA->lpfnHook) lfs->hook = TRUE; - FD31_MapOfnStructA(priv->ofnA, &lfs->ofnW, lfs->open); + lfs->ofnW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*lfs->ofnW)); + FD31_MapOfnStructA(priv->ofnA, lfs->ofnW, lfs->open); } if (! FD32_GetTemplate(lfs)) return FALSE; @@ -3472,18 +3473,25 @@ static BOOL CALLBACK FD32_Init(LPARAM lParam, PFD31_DATA lfs, DWORD data) BOOL CALLBACK FD32_CallWindowProc(PFD31_DATA lfs, UINT wMsg, WPARAM wParam, LPARAM lParam) { + BOOL ret; PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; if (priv->ofnA) { - return (BOOL) CallWindowProcA( - (WNDPROC)priv->ofnA->lpfnHook, lfs->hwnd, - wMsg, wParam, lParam); + TRACE("Call hookA %p (%p, %04x, %08x, %08lx)\n", + priv->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); + ret = priv->ofnA->lpfnHook(lfs->hwnd, wMsg, wParam, lParam); + TRACE("ret hookA %p (%p, %04x, %08x, %08lx)\n", + priv->ofnA->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); + return ret; } - return (BOOL) CallWindowProcW( - (WNDPROC)lfs->ofnW.lpfnHook, lfs->hwnd, - wMsg, wParam, lParam); + TRACE("Call hookW %p (%p, %04x, %08x, %08lx)\n", + lfs->ofnW->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); + ret = lfs->ofnW->lpfnHook(lfs->hwnd, wMsg, wParam, lParam); + TRACE("Ret hookW %p (%p, %04x, %08x, %08lx)\n", + lfs->ofnW->lpfnHook, lfs->hwnd, wMsg, wParam, lParam); + return ret; } /*********************************************************************** @@ -3493,7 +3501,7 @@ BOOL CALLBACK FD32_CallWindowProc(PFD31_DATA lfs, UINT wMsg, WPARAM wParam, static void CALLBACK FD32_UpdateResult(PFD31_DATA lfs) { PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; if (priv->ofnA) { @@ -3513,7 +3521,7 @@ static void CALLBACK FD32_UpdateResult(PFD31_DATA lfs) static void CALLBACK FD32_UpdateFileTitle(PFD31_DATA lfs) { PFD32_PRIVATE priv = (PFD32_PRIVATE) lfs->private1632; - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; if (priv->ofnA) { @@ -3544,7 +3552,10 @@ static void CALLBACK FD32_Destroy(PFD31_DATA lfs) /* if ofnW has been allocated, have to free everything in it */ if (NULL != priv && NULL != priv->ofnA) - FD31_FreeOfnW(&lfs->ofnW); + { + FD31_FreeOfnW(lfs->ofnW); + HeapFree(GetProcessHeap(), 0, lfs->ofnW); + } } static void FD32_SetupCallbacks(PFD31_CALLBACKS callbacks) @@ -3667,7 +3678,7 @@ static BOOL GetFileName31W(LPOPENFILENAMEW lpofn, /* addess of structure with da if (!lpofn || !FD31_Init()) return FALSE; FD32_SetupCallbacks(&callbacks); - lfs = FD31_AllocPrivate((LPARAM) lpofn, dlgType, &callbacks, (DWORD) FALSE); + lfs = FD31_AllocPrivate((LPARAM) lpofn, dlgType, &callbacks, (DWORD) TRUE); if (lfs) { hInst = (HINSTANCE)GetWindowLongPtrW( lpofn->hwndOwner, GWLP_HINSTANCE ); @@ -3676,7 +3687,8 @@ static BOOL GetFileName31W(LPOPENFILENAMEW lpofn, /* addess of structure with da FD31_DestroyPrivate(lfs); } - TRACE("return lpstrFile=%s !\n", debugstr_w(lpofn->lpstrFile)); + TRACE("file %s, file offset %d, ext offset %d\n", + debugstr_w(lpofn->lpstrFile), lpofn->nFileOffset, lpofn->nFileExtension); return bRet; } @@ -3697,6 +3709,10 @@ BOOL WINAPI GetOpenFileNameA( { BOOL win16look = FALSE; + /* OFN_FILEMUSTEXIST implies OFN_PATHMUSTEXIST */ + if (ofn->Flags & OFN_FILEMUSTEXIST) + ofn->Flags |= OFN_PATHMUSTEXIST; + if (ofn->Flags & (OFN_ALLOWMULTISELECT|OFN_ENABLEHOOK|OFN_ENABLETEMPLATE)) win16look = (ofn->Flags & OFN_EXPLORER) ? FALSE : TRUE; diff --git a/reactos/lib/comdlg32/filedlg16.c b/reactos/lib/comdlg32/filedlg16.c index ff50aa76057..d2d34804ff7 100644 --- a/reactos/lib/comdlg32/filedlg16.c +++ b/reactos/lib/comdlg32/filedlg16.c @@ -170,7 +170,8 @@ static BOOL CALLBACK FD16_Init(LPARAM lParam, PFD31_DATA lfs, DWORD data) if (priv->ofn16->lpfnHook) lfs->hook = TRUE; - FD16_MapOfnStruct16(priv->ofn16, &lfs->ofnW, lfs->open); + lfs->ofnW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*lfs->ofnW)); + FD16_MapOfnStruct16(priv->ofn16, lfs->ofnW, lfs->open); if (! FD16_GetTemplate(lfs)) return FALSE; @@ -204,7 +205,7 @@ BOOL CALLBACK FD16_CallWindowProc(PFD31_DATA lfs, UINT wMsg, WPARAM wParam, static void CALLBACK FD16_UpdateResult(PFD31_DATA lfs) { PFD16_PRIVATE priv = (PFD16_PRIVATE) lfs->private1632; - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; if (priv->ofn16) { /* we have to convert to short (8.3) path */ @@ -240,7 +241,7 @@ static void CALLBACK FD16_UpdateResult(PFD31_DATA lfs) static void CALLBACK FD16_UpdateFileTitle(PFD31_DATA lfs) { PFD16_PRIVATE priv = (PFD16_PRIVATE) lfs->private1632; - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; if (priv->ofn16) { @@ -279,7 +280,8 @@ static void CALLBACK FD16_Destroy(PFD31_DATA lfs) GlobalUnlock16(priv->hGlobal16); GlobalFree16(priv->hGlobal16); } - FD31_FreeOfnW(&lfs->ofnW); + FD31_FreeOfnW(lfs->ofnW); + HeapFree(GetProcessHeap(), 0, lfs->ofnW); } } diff --git a/reactos/lib/comdlg32/filedlg31.c b/reactos/lib/comdlg32/filedlg31.c index 9f26997c4ef..9542e557854 100644 --- a/reactos/lib/comdlg32/filedlg31.c +++ b/reactos/lib/comdlg32/filedlg31.c @@ -38,6 +38,7 @@ #include "cderr.h" #include "winreg.h" #include "winternl.h" +#include "shlwapi.h" WINE_DEFAULT_DEBUG_CHANNEL(commdlg); @@ -305,9 +306,9 @@ LONG FD31_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam, void FD31_UpdateResult(PFD31_DATA lfs, WCHAR *tmpstr) { int lenstr2; - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; WCHAR tmpstr2[BUFFILE]; - WCHAR *bs; + WCHAR *p; TRACE("%s\n", debugstr_w(tmpstr)); if(ofnW->Flags & OFN_NOVALIDATE) @@ -320,17 +321,18 @@ void FD31_UpdateResult(PFD31_DATA lfs, WCHAR *tmpstr) lstrcpynW(tmpstr2+lenstr2, tmpstr, BUFFILE-lenstr2); if (ofnW->lpstrFile) lstrcpynW(ofnW->lpstrFile, tmpstr2, ofnW->nMaxFile); - if((bs = strrchrW(tmpstr2, '\\')) != NULL) - ofnW->nFileOffset = bs - tmpstr2 +1; - else - ofnW->nFileOffset = 0; - ofnW->nFileExtension = 0; - while(tmpstr2[ofnW->nFileExtension] != '.' && tmpstr2[ofnW->nFileExtension] != '\0') - ofnW->nFileExtension++; - if (tmpstr2[ofnW->nFileExtension] == '\0') - ofnW->nFileExtension = 0; - else - ofnW->nFileExtension++; + + /* set filename offset */ + p = PathFindFileNameW(ofnW->lpstrFile); + ofnW->nFileOffset = (p - ofnW->lpstrFile); + + /* set extension offset */ + p = PathFindExtensionW(ofnW->lpstrFile); + ofnW->nFileExtension = (*p) ? (p - ofnW->lpstrFile) + 1 : 0; + + TRACE("file %s, file offset %d, ext offset %d\n", + debugstr_w(ofnW->lpstrFile), ofnW->nFileOffset, ofnW->nFileExtension); + /* update the real client structures if any */ lfs->callbacks->UpdateResult(lfs); } @@ -342,7 +344,7 @@ void FD31_UpdateResult(PFD31_DATA lfs, WCHAR *tmpstr) void FD31_UpdateFileTitle(PFD31_DATA lfs) { LONG lRet; - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; if (ofnW->lpstrFileTitle != NULL) { lRet = SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETCURSEL, 0, 0); @@ -447,14 +449,14 @@ static LRESULT FD31_TestPath( PFD31_DATA lfs, LPWSTR path ) else { strcpyW(tmpstr2, path); - if(!(lfs->ofnW.Flags & OFN_NOVALIDATE)) + if(!(lfs->ofnW->Flags & OFN_NOVALIDATE)) *path = 0; } TRACE("path=%s, tmpstr2=%s\n", debugstr_w(path), debugstr_w(tmpstr2)); SetDlgItemTextW( hWnd, edt1, tmpstr2 ); FD31_ScanDir(hWnd, path); - return (lfs->ofnW.Flags & OFN_NOVALIDATE) ? TRUE : FALSE; + return (lfs->ofnW->Flags & OFN_NOVALIDATE) ? TRUE : FALSE; } /* no wildcards, we might have a directory or a filename */ @@ -501,7 +503,7 @@ static LRESULT FD31_Validate( PFD31_DATA lfs, LPWSTR path, UINT control, INT ite LONG lRet; HWND hWnd = lfs->hwnd; OPENFILENAMEW ofnsav; - LPOPENFILENAMEW ofnW = &lfs->ofnW; + LPOPENFILENAMEW ofnW = lfs->ofnW; WCHAR filename[BUFFILE]; ofnsav = *ofnW; /* for later restoring */ @@ -610,9 +612,7 @@ LRESULT FD31_WMCommand(HWND hWnd, LPARAM lParam, UINT notification, FD31_StripEditControl(hWnd); if (notification == LBN_DBLCLK) { - if (FD31_Validate( lfs, NULL, control, 0, FALSE )) - EndDialog(hWnd, TRUE); - return TRUE; + return SendMessageW(hWnd, WM_COMMAND, IDOK, 0); } else if (notification == LBN_SELCHANGE) return FD31_FileListSelect( lfs ); @@ -700,7 +700,7 @@ static LPWSTR FD31_DupToW(LPCSTR str, DWORD size) * FD31_MapOfnStructA [internal] * map a 32 bits Ansi structure to an Unicode one */ -void FD31_MapOfnStructA(LPOPENFILENAMEA ofnA, LPOPENFILENAMEW ofnW, BOOL open) +void FD31_MapOfnStructA(const LPOPENFILENAMEA ofnA, LPOPENFILENAMEW ofnW, BOOL open) { UNICODE_STRING usBuffer; @@ -828,7 +828,7 @@ LONG FD31_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam) if (!lfs) return FALSE; SetPropA(hWnd, FD31_OFN_PROP, (HANDLE)lfs); lfs->hwnd = hWnd; - ofn = &lfs->ofnW; + ofn = lfs->ofnW; TRACE("flags=%lx initialdir=%s\n", ofn->Flags, debugstr_w(ofn->lpstrInitialDir)); diff --git a/reactos/lib/comdlg32/filedlg31.h b/reactos/lib/comdlg32/filedlg31.h index 7f75fe205d3..2329eea7ae2 100644 --- a/reactos/lib/comdlg32/filedlg31.h +++ b/reactos/lib/comdlg32/filedlg31.h @@ -44,7 +44,8 @@ typedef struct tagFD31_DATA LPARAM lParam; /* save original lparam */ LPCVOID template; /* template for 32 bits resource */ BOOL open; /* TRUE if open dialog, FALSE if save dialog */ - OPENFILENAMEW ofnW; /* copy of original structure or work struct */ + LPOPENFILENAMEW ofnW; /* pointer either to the original structure or + a W copy for A/16 API */ LPVOID private1632; /* 16/32 bit caller private data */ PFD31_CALLBACKS callbacks; /* callbacks to handle 16/32 bit differences */ } FD31_DATA; diff --git a/reactos/lib/comdlg32/printdlg.c b/reactos/lib/comdlg32/printdlg.c index 159169a829e..c9eb8ac5488 100644 --- a/reactos/lib/comdlg32/printdlg.c +++ b/reactos/lib/comdlg32/printdlg.c @@ -71,6 +71,11 @@ static struct pd_flags psd_flags[] = { {-1, NULL} }; +/* address of wndproc for subclassed Static control */ +static WNDPROC lpfnStaticWndProc; +/* the text of the fake document to render for the Page Setup dialog */ +static WCHAR wszFakeDocumentText[1024]; + /*********************************************************************** * PRINTDLG_OpenDefaultPrinter * @@ -2551,6 +2556,8 @@ static BOOL PRINTDLG_PS_WMCommandA( HWND hDlg, WPARAM wParam, LPARAM lParam, PageSetupDataA *pda ) { + TRACE("loword (lparam) %d, wparam 0x%x, lparam %08lx\n", + LOWORD(lParam),wParam,lParam); switch (LOWORD(wParam)) { case IDOK: if (!PRINTDLG_PS_UpdateDlgStructA(hDlg, pda)) @@ -2570,9 +2577,6 @@ PRINTDLG_PS_WMCommandA( return TRUE; } } - FIXME("loword (lparam) %d, wparam 0x%x, lparam %08lx, STUB mostly.\n", - LOWORD(lParam),wParam,lParam - ); return FALSE; } @@ -2580,6 +2584,8 @@ static BOOL PRINTDLG_PS_WMCommandW( HWND hDlg, WPARAM wParam, LPARAM lParam, PageSetupDataW *pda ) { + TRACE("loword (lparam) %d, wparam 0x%x, lparam %08lx\n", + LOWORD(lParam),wParam,lParam); switch (LOWORD(wParam)) { case IDOK: if (!PRINTDLG_PS_UpdateDlgStructW(hDlg, pda)) @@ -2599,13 +2605,114 @@ PRINTDLG_PS_WMCommandW( return TRUE; } } - FIXME("loword (lparam) %d, wparam 0x%x, lparam %08lx, STUB mostly.\n", - LOWORD(lParam),wParam,lParam - ); return FALSE; } +static LRESULT CALLBACK +PagePaintProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + if (uMsg == WM_PAINT) + { + PAINTSTRUCT ps; + RECT rcClient; + HPEN hpen, holdpen; + HDC hdc; + HFONT hfont, holdfont; + LOGFONTW lf; + HBRUSH hbrush, holdbrush; + INT oldbkmode; + + hdc = BeginPaint(hWnd, &ps); + + GetClientRect(hWnd, &rcClient); + + /* fill background */ + hbrush = GetSysColorBrush(COLOR_3DHIGHLIGHT); + FillRect(hdc, &rcClient, hbrush); + holdbrush = SelectObject(hdc, hbrush); + + hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_3DSHADOW)); + holdpen = SelectObject(hdc, hpen); + + /* paint left edge */ + MoveToEx(hdc, rcClient.left, rcClient.top, NULL); + LineTo(hdc, rcClient.left, rcClient.bottom-1); + + /* paint top edge */ + MoveToEx(hdc, rcClient.left, rcClient.top, NULL); + LineTo(hdc, rcClient.right, rcClient.top); + + hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_3DDKSHADOW)); + DeleteObject(SelectObject(hdc, hpen)); + + /* paint right edge */ + MoveToEx(hdc, rcClient.right-1, rcClient.top, NULL); + LineTo(hdc, rcClient.right-1, rcClient.bottom); + + /* paint bottom edge */ + MoveToEx(hdc, rcClient.left, rcClient.bottom-1, NULL); + LineTo(hdc, rcClient.right, rcClient.bottom-1); + + hpen = CreatePen(PS_DASH, 1, GetSysColor(COLOR_3DSHADOW)); + DeleteObject(SelectObject(hdc, hpen)); + + /* draw dashed rectangle showing margins */ + + /* FIXME: use real margin values */ + rcClient.left += 5; + rcClient.top += 5; + rcClient.right -= 5; + rcClient.bottom -= 5; + + /* if the space is too small then we make sure to not draw anything */ + rcClient.left = min(rcClient.left,rcClient.right); + rcClient.top = min(rcClient.top,rcClient.bottom); + + Rectangle(hdc, rcClient.left, rcClient.top, rcClient.right, rcClient.bottom); + + DeleteObject(SelectObject(hdc, holdpen)); + + /* draw the fake document */ + + /* give text a bit of a space from the frame */ + rcClient.left += 2; + rcClient.top += 2; + rcClient.right -= 2; + rcClient.bottom -= 2; + + /* if the space is too small then we make sure to not draw anything */ + rcClient.left = min(rcClient.left,rcClient.right); + rcClient.top = min(rcClient.top,rcClient.bottom); + + /* select a nice scalable font, because we want the text really small */ + SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0); + lf.lfHeight = 6; /* value chosen based on visual effect */ + hfont = CreateFontIndirectW(&lf); + holdfont = SelectObject(hdc, hfont); + + /* if text not loaded, then do so now */ + if (wszFakeDocumentText[0] == '\0') + LoadStringW(COMDLG32_hInstance, + IDS_FAKEDOCTEXT, + wszFakeDocumentText, + sizeof(wszFakeDocumentText)/sizeof(wszFakeDocumentText[0])); + + oldbkmode = SetBkMode(hdc, TRANSPARENT); + DrawTextW(hdc, wszFakeDocumentText, -1, &rcClient, DT_TOP|DT_LEFT|DT_NOPREFIX|DT_WORDBREAK); + SetBkMode(hdc, oldbkmode); + + DeleteObject(SelectObject(hdc, holdfont)); + + SelectObject(hdc, holdbrush); + + EndPaint(hWnd, &ps); + return 0; + } + else + return CallWindowProcW(lpfnStaticWndProc, hWnd, uMsg, wParam, lParam); +} + static INT_PTR CALLBACK PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -2613,6 +2720,10 @@ PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) INT_PTR res = FALSE; if (uMsg==WM_INITDIALOG) { + lpfnStaticWndProc = (WNDPROC)SetWindowLongPtrW( + GetDlgItem(hDlg, rct1), + GWLP_WNDPROC, + (ULONG_PTR)PagePaintProc); res = TRUE; pda = (PageSetupDataA*)lParam; SetPropA(hDlg,"__WINE_PAGESETUPDLGDATA",pda); From a8037e241ce2c2a7047732cd23a40d4b5ff8fc0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sat, 12 Feb 2005 21:07:16 +0000 Subject: [PATCH 005/248] Sync to Wine-20050211 Carlos Lozano - Fix regression in Fallout game. Remi Assailly - char -> const char fixes. Robert Reif - Copy data structures one at a time using supplied size. svn path=/trunk/; revision=13515 --- reactos/lib/dinput/device.c | 2 +- reactos/lib/dinput/dinput_main.c | 2 +- reactos/lib/dinput/joystick_linux.c | 14 +++++--------- reactos/lib/dinput/mouse.c | 15 ++++++--------- 4 files changed, 13 insertions(+), 20 deletions(-) diff --git a/reactos/lib/dinput/device.c b/reactos/lib/dinput/device.c index 1c443da51ba..2980c3c00d1 100644 --- a/reactos/lib/dinput/device.c +++ b/reactos/lib/dinput/device.c @@ -316,7 +316,7 @@ DataFormat *create_DataFormat(const DIDATAFORMAT *wine_format, LPCDIDATAFORMAT a * instance id. */ ((asked_format->rgodf[j].dwType & 0x00FFFF00) == DIDFT_ANYINSTANCE) || - (DIDFT_GETINSTANCE(wine_format->rgodf[i].dwType) == DIDFT_GETINSTANCE(asked_format->rgodf[j].dwType)))) { + (wine_format->rgodf[i].dwType & asked_format->rgodf[j].dwType))) { done[j] = 1; diff --git a/reactos/lib/dinput/dinput_main.c b/reactos/lib/dinput/dinput_main.c index 900b7c820a3..bd003d07e6a 100644 --- a/reactos/lib/dinput/dinput_main.c +++ b/reactos/lib/dinput/dinput_main.c @@ -198,7 +198,7 @@ HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPU return 0; } -static char *_dump_DIDEVTYPE_value(DWORD dwDevType) { +static const char *_dump_DIDEVTYPE_value(DWORD dwDevType) { switch (dwDevType) { case 0: return "All devices"; case DIDEVTYPE_MOUSE: return "DIDEVTYPE_MOUSE"; diff --git a/reactos/lib/dinput/joystick_linux.c b/reactos/lib/dinput/joystick_linux.c index 101d900e953..138ded7caf8 100644 --- a/reactos/lib/dinput/joystick_linux.c +++ b/reactos/lib/dinput/joystick_linux.c @@ -304,7 +304,7 @@ static HRESULT setup_dinput_options(JoystickImpl * device) int tokens = 0; int axis = 0; int pov = 0; - char *delim = ","; + const char *delim = ","; char * ptr; TRACE("\"%s\" = \"%s\"\n", device->name, buffer); @@ -1062,18 +1062,14 @@ static HRESULT WINAPI JoystickAImpl_GetDeviceData( *entries = 0; nqtail = This->queue_tail; while (len) { - DWORD span = ((This->queue_head < nqtail) ? This->queue_len : This->queue_head) - nqtail; - if (span > len) - span = len; - /* Copy the buffered data into the application queue */ - memcpy(dod + *entries, This->data_queue + nqtail, span * dodsize); + memcpy((char *)dod + *entries * dodsize, This->data_queue + nqtail, dodsize); /* Advance position */ - nqtail += span; + nqtail++; if (nqtail >= This->queue_len) nqtail -= This->queue_len; - *entries += span; - len -= span; + (*entries)++; + len--; } } diff --git a/reactos/lib/dinput/mouse.c b/reactos/lib/dinput/mouse.c index 96e849bf186..2146ba03089 100644 --- a/reactos/lib/dinput/mouse.c +++ b/reactos/lib/dinput/mouse.c @@ -951,18 +951,15 @@ getmousesvalue(iface); *entries = 0; nqtail = This->queue_tail; while (len) { - DWORD span = ((This->queue_head < nqtail) ? This->queue_len : This->queue_head) - nqtail; - if (span > len) - span = len; - /* Copy the buffered data into the application queue */ - memcpy(dod + *entries, This->data_queue + nqtail, span * dodsize); + memcpy((char *)dod + *entries * dodsize, This->data_queue + nqtail, dodsize); /* Advance position */ - nqtail += span; - if (nqtail >= This->queue_len) nqtail -= This->queue_len; - *entries += span; - len -= span; + nqtail++; + if (nqtail >= This->queue_len) + nqtail -= This->queue_len; + (*entries)++; + len--; } } if (!(flags & DIGDD_PEEK)) From f2d6147dc99b2feb40aa3e0400f9cf80c11b1316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sat, 12 Feb 2005 21:26:15 +0000 Subject: [PATCH 006/248] Sync to Wine-20050211 Juan Lang - Make netspi.h private, as some of its declarations conflict with npapi.h. Spotted by Paul Vriens. Jonathan Ernst - Updated French resources. Henning Gerhardt - Update German resources. svn path=/trunk/; revision=13516 --- reactos/lib/mpr/mpr.rc | 3 +- reactos/lib/mpr/mpr_De.rc | 20 +++++ reactos/lib/mpr/mpr_Fr.rc | 47 ++++++++++++ reactos/lib/mpr/netspi.h | 153 ++++++++++++++++++++++++++++++++++++++ reactos/lib/mpr/nps.c | 2 - 5 files changed, 222 insertions(+), 3 deletions(-) create mode 100644 reactos/lib/mpr/mpr_Fr.rc create mode 100644 reactos/lib/mpr/netspi.h diff --git a/reactos/lib/mpr/mpr.rc b/reactos/lib/mpr/mpr.rc index 3c399678f4f..550e5e5d140 100644 --- a/reactos/lib/mpr/mpr.rc +++ b/reactos/lib/mpr/mpr.rc @@ -27,8 +27,9 @@ #include "mpr_Cs.rc" #include "mpr_De.rc" #include "mpr_En.rc" -#include "mpr_Nl.rc" #include "mpr_Es.rc" +#include "mpr_Fr.rc" #include "mpr_It.rc" #include "mpr_Ja.rc" +#include "mpr_Nl.rc" #include "mpr_Pt.rc" diff --git a/reactos/lib/mpr/mpr_De.rc b/reactos/lib/mpr/mpr_De.rc index 7cfa8531822..7f289bc572e 100644 --- a/reactos/lib/mpr/mpr_De.rc +++ b/reactos/lib/mpr/mpr_De.rc @@ -24,3 +24,23 @@ STRINGTABLE DISCARDABLE { IDS_ENTIRENETWORK "Gesamtes Netzwerk" } + +IDD_PROXYDLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 250, 154 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Netzwerkkennung eingeben" +FONT 8, "Helv" +{ + LTEXT "Bitte geben Sie Benutzernamen und Kennwort ein:", IDC_EXPLAIN, 40, 6, 150, 15 + LTEXT "Proxy", -1, 40, 26, 50, 10 +/* LTEXT "Bereich", -1, 40, 46, 50, 10 */ + LTEXT "Benutzername", -1, 40, 66, 50, 10 + LTEXT "Kennwort", -1, 40, 86, 50, 10 + LTEXT "" IDC_PROXY, 80, 26, 150, 14, 0 + LTEXT "" IDC_REALM, 80, 46, 150, 14, 0 + EDITTEXT IDC_USERNAME, 80, 66, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP + EDITTEXT IDC_PASSWORD, 80, 86, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | ES_PASSWORD + CHECKBOX "Dieses Kennwort speichern (unsicher)", IDC_SAVEPASSWORD, + 80, 106, 150, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + PUSHBUTTON "OK", IDOK, 98, 126, 56, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Abbrechen", IDCANCEL, 158, 126, 56, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/mpr/mpr_Fr.rc b/reactos/lib/mpr/mpr_Fr.rc new file mode 100644 index 00000000000..e5def78e721 --- /dev/null +++ b/reactos/lib/mpr/mpr_Fr.rc @@ -0,0 +1,47 @@ +/* + * MPR dll resources + * French language support + * + * Copyright (C) 2005 Jonathan Ernst + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +STRINGTABLE DISCARDABLE +{ + IDS_ENTIRENETWORK "Le réseau entier" +} + +IDD_PROXYDLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 250, 154 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Entrez le mot de passe réseau" +FONT 8, "Helv" +{ + LTEXT "Veuillez saisir votre nom d'utilisateur et votre mot de passe:", IDC_EXPLAIN, 40, 6, 150, 15 + LTEXT "Proxy", -1, 40, 26, 50, 10 +/* LTEXT "Realm", -1, 40, 46, 50, 10 */ + LTEXT "Utilisateur", -1, 40, 66, 50, 10 + LTEXT "Mot de passe", -1, 40, 86, 50, 10 + LTEXT "" IDC_PROXY, 80, 26, 150, 14, 0 + LTEXT "" IDC_REALM, 80, 46, 150, 14, 0 + EDITTEXT IDC_USERNAME, 80, 66, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP + EDITTEXT IDC_PASSWORD, 80, 86, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | ES_PASSWORD + CHECKBOX "&Enregistrer ce mot de passe (risqué)", IDC_SAVEPASSWORD, + 80, 106, 150, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + PUSHBUTTON "OK", IDOK, 98, 126, 56, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + PUSHBUTTON "Annuler", IDCANCEL, 158, 126, 56, 14, WS_GROUP | WS_TABSTOP +} diff --git a/reactos/lib/mpr/netspi.h b/reactos/lib/mpr/netspi.h new file mode 100644 index 00000000000..7695584aec2 --- /dev/null +++ b/reactos/lib/mpr/netspi.h @@ -0,0 +1,153 @@ +/* + * MPR - Network provider services + * Warning: this file apparently existed as part of the Win98 DDK. Some of + * the declarations in it conflict with those in the Platform SDK's npapi.h, + * therefore this header was made private. Don't try to include both headers. + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _NETSPI_H_ +#define _NETSPI_H_ + +#include "windef.h" +#include "winnetwk.h" + +/* + * Note: The Unicode variants of all these routines/structures + * apparently don't exist, at least not in Win95 ... + */ + +#define HPROVIDER LPVOID +typedef HPROVIDER *PHPROVIDER; + +typedef struct +{ + DWORD cbStructure; + HWND hwndOwner; + LPCSTR lpResource; + LPSTR lpUsername; + DWORD cbUsername; + LPSTR lpPassword; + DWORD cbPassword; + LPSTR lpOrgUnit; + DWORD cbOrgUnit; + LPCSTR lpOUTitle; + LPCSTR lpExplainText; + LPCSTR lpDefaultUserName; + DWORD dwFlags; + +} AUTHDLGSTRUCTA, *LPAUTHDLGSTRUCTA; + +DECL_WINELIB_TYPE_AW(AUTHDLGSTRUCT) +DECL_WINELIB_TYPE_AW(LPAUTHDLGSTRUCT) + +#define AUTHDLG_ENABLECACHE 0x00000001 +#define AUTHDLG_CHECKCACHE 0x00000002 +#define AUTHDLG_CACHEINVALID 0x00000004 +#define AUTHDLG_USE_DEFAULT_NAME 0x00000008 +#define AUTHDLG_CHECKDEFAULT_NAME 0x00000010 +#define AUTHDLG_LOGON 0x00000020 + +#define AUTHDLG_ENABLECACHE 0x00000001 +#define AUTHDLG_CHECKCACHE 0x00000002 +#define AUTHDLG_CACHEINVALID 0x00000004 +#define AUTHDLG_USE_DEFAULT_NAME 0x00000008 +#define AUTHDLG_CHECKDEFAULT_NAME 0x00000010 +#define AUTHDLG_LOGON 0x00000020 + +DWORD WINAPI NPSAuthenticationDialogA(LPAUTHDLGSTRUCTA); +#define NPSAuthenticationDialog WINELIB_NAME_AW(NPSAuthenticationDialog) +DWORD WINAPI NPSGetProviderHandleA(PHPROVIDER); +#define NPSGetProviderHandle WINELIB_NAME_AW(NPSGetProviderHandle) +DWORD WINAPI NPSGetProviderNameA(HPROVIDER,LPCSTR *); +#define NPSGetProviderName WINELIB_NAME_AW(NPSGetProviderName) +DWORD WINAPI NPSGetSectionNameA(HPROVIDER,LPCSTR *lpszSectionName); +#define NPSGetSectionName WINELIB_NAME_AW(NPSGetSectionName) +DWORD WINAPI NPSSetExtendedErrorA(DWORD,LPSTR); +#define NPSSetExtendedError WINELIB_NAME_AW(NPSSetExtendedError) +VOID WINAPI NPSSetCustomTextA(LPSTR); +#define NPSSetCustomText WINELIB_NAME_AW(NPSSetCustomText) +DWORD WINAPI NPSCopyStringA(LPCSTR,LPVOID,LPDWORD); +#define NPSCopyString WINELIB_NAME_AW(NPSCopyString) +DWORD WINAPI NPSDeviceGetNumberA(LPSTR,LPDWORD,LPDWORD); +#define NPSDeviceGetNumber WINELIB_NAME_AW(NPSDeviceGetNumber) +DWORD WINAPI NPSDeviceGetStringA(DWORD,DWORD,LPSTR,LPDWORD); +#define NPSDeviceGetString WINELIB_NAME_AW(NPSDeviceGetString) + + +enum NOTIFYTYPE { NotifyAddConnection, + NotifyCancelConnection, + NotifyGetConnectionPerformance }; + +#define NOTIFY_PRE 0x00 +#define NOTIFY_POST 0x01 + +typedef struct +{ + DWORD cbStructure; + DWORD dwNotifyStatus; + DWORD dwOperationStatus; + LPVOID lpNPContext; + +} NOTIFYINFO, *LPNOTIFYINFO; + +typedef struct +{ + DWORD cbStructure; + HWND hwndOwner; + NETRESOURCEA NetResource; + DWORD dwAddFlags; + LPSTR lpAccessName; + LPDWORD lpBufferSize; + DWORD dwResult; + DWORD dwAddContext; + +} NOTIFYADDA, *LPNOTIFYADDA; + +#define CONNECT_CTXT_RESTORE 0x00000001 +#define CONNECT_CTXT_GLOBAL 0x00000002 +#define CONNECT_CTXT_PROVIDER 0x00000004 +#define CONNECT_CTXT_SINGLE 0x00000008 + +typedef struct +{ + DWORD cbStructure; + LPSTR lpName; + LPSTR lpProvider; + DWORD dwFlags; + BOOL fForce; + +} NOTIFYCANCELA, *LPNOTIFYCANCELA; + +typedef struct +{ + DWORD cbStructure; + LPSTR lpRemoteName; + LPSTR lpProviderName; + LPNETCONNECTINFOSTRUCT lpNetConnectInfo; + +} NOTIFYPERFORMANCEA, *LPNOTIFYPERFORMANCEA; + +typedef DWORD (CALLBACK *NOTIFYCALLBACK)(LPNOTIFYINFO,LPVOID); + +DWORD WINAPI NPSNotifyRegisterA(enum NOTIFYTYPE,NOTIFYCALLBACK); +#define NPSNotifyRegister WINELIB_NAME_AW(NPSNotifyRegister) +LPVOID WINAPI NPSNotifyGetContextA(NOTIFYCALLBACK); +#define NPSNotifyGetContext WINELIB_NAME_AW(NPSNotifyGetContext) + +#endif /* _NETSPI_H_ */ diff --git a/reactos/lib/mpr/nps.c b/reactos/lib/mpr/nps.c index c791b23317e..980c58a67a6 100644 --- a/reactos/lib/mpr/nps.c +++ b/reactos/lib/mpr/nps.c @@ -26,7 +26,6 @@ #include "windef.h" #include "winbase.h" #include "winuser.h" -#include "winnetwk.h" #include "netspi.h" #include "wine/debug.h" #include "winerror.h" @@ -212,4 +211,3 @@ LPVOID WINAPI NPSNotifyGetContextA( NOTIFYCALLBACK pfNotifyCallBack ) FIXME( "(%p): stub\n", pfNotifyCallBack ); return NULL; } - From b14fe2e98ed1a1cc2532ae755d49a279927cceed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sat, 12 Feb 2005 21:46:45 +0000 Subject: [PATCH 007/248] Sync to Wine-20050211 Alexandre Julliard - It makes no sense to export the dll entry point as stub. svn path=/trunk/; revision=13517 --- reactos/lib/msimg32/msimg32.spec | 2 +- reactos/lib/msimg32/msimg32_main.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/reactos/lib/msimg32/msimg32.spec b/reactos/lib/msimg32/msimg32.spec index a5e3be36466..773084602a0 100644 --- a/reactos/lib/msimg32/msimg32.spec +++ b/reactos/lib/msimg32/msimg32.spec @@ -1,5 +1,5 @@ @ stdcall AlphaBlend(long long long long long long long long long long long) gdi32.GdiAlphaBlend -@ stub DllInitialize +@ stdcall DllInitialize(long long ptr) DllMain @ stdcall GradientFill(long ptr long ptr long long) gdi32.GdiGradientFill @ stdcall TransparentBlt(long long long long long long long long long long long) gdi32.GdiTransparentBlt @ stdcall vSetDdrawflag() diff --git a/reactos/lib/msimg32/msimg32_main.c b/reactos/lib/msimg32/msimg32_main.c index 43e71036240..4586a3046d9 100644 --- a/reactos/lib/msimg32/msimg32_main.c +++ b/reactos/lib/msimg32/msimg32_main.c @@ -26,6 +26,18 @@ WINE_DEFAULT_DEBUG_CHANNEL(msimg32); +/*********************************************************************** + * DllInitialize (MSIMG32.@) + * + * MSIMG32 initialisation routine. + */ +BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) +{ + if (reason == DLL_PROCESS_ATTACH) DisableThreadLibraryCalls( inst ); + return TRUE; +} + + /****************************************************************************** * vSetDdrawflag (MSIMG32.@) */ From c4a2530191cd1021ca9295912002d4f2f0bd4a50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sat, 12 Feb 2005 22:59:04 +0000 Subject: [PATCH 008/248] Sync to Wine-20050211 Mike McCormack - add support for Edit boxes in MSI dialogs - run the message loop when waiting for threads or processes - fix the dialog font - allow waiting on a handle while running the message loop - implement checkboxes in dialogs - use TextStyle enumeration instead of numbers - fix MSI_IterateRecords to return the correct count - Add more dialog controls, do something when they're clicked on. - Implement MsiPreviewDialog. - Implement and document MsiLoadString. - Added stub implementations for MsiPreviewDialog and MsiPreviewBillboard. - Fix MsiModifyView and MsiViewGetColumnInfo to use MSIRECORD* not MSIHANDLE. - Implement, test and document MsiDecomposeDescriptor. - Handle a number as a parameter for custom action 19. - Move OpenQuery into msiquery.c and make it non-static. - Fix and test inserting records. - Fix refcounting, use Interlocked functions. - MsiEvaluateCondition returns an error when passed NULL as a condition. - Lock record in MsiViewExecute, move stubs to end. - Fix MsiRecordSetString for NULL strings and update test case. - Fix a bug caused by freeing memory too soon in the table code. - Update headers, add MsiGetUserInfoA stub implementation. - Fix a memory leak in MsiConfigureProductExW. - Indentation and style cleanup. - implement MsiOpenPackageEx, and forward MsiOpenPackage there - make a MSI_CreatePackage function and use it in MSI_OpenPackage - move MsiOpenPackageA down with the rest of the API functions Juan Lang - Partially implement AppSearch action. - If a full path isn't specified, search across all fixed drives. - Simplify AppSearch error checking. - Identifiers evaluate to true if they are non-empty, regardless of value. Aric Stewart - action.c is getting too big, so split out all the handling of CustomActions into custom.c. Cleaned up a lot of the handling of custom actions including scripting actions and processing return codes. - Mike McCormack pointed out that MsiFormatRecord is basically the same as internal function deformat_string. So broke deformat_string out and updated it to function as MsiFormatRecord and implemented MsiFormatRecord. - A number of random fixes to action.c including properly calculating the length for the LocalPackage name, not forcing a reboot when really we should just return ERROR_INSTALL_SUSPEND and handling REG_MULTI_SZ now that we can deformat the properly. - Move the guid squishing functions out of msi.c and make a new registry.c file. Also clean up all the various registry keys we need to open and create to this module and modify the functions for msi.c to call these functions. - Added a few more stub implementations. - Implement custom action type 19, Halt install and display error message. - Continued work to simplify the ProcessAction call, also split it into a ProcessAction and ProcessUIAction for future dialog box work. Also fix a bug in deformat_string where i was not freeing the created record. - Make a temp file for each dll saved for custom actions. This prevents name collisions from causing custom actions to fail. - Do not track the temp files for custom actions based on the name from the table because then we get conflicts and files not tracked or cleaned up. - Add the RegisterUser action. - Implement RegisterExtensionInfo and RegisterMIMEInfo. - Add logic to be able to resolve the SourceDir based on CurrentPath. Also add logic to get the source locations of a file if it is not in a cabinet. - Finish up the framework by stubbing out all the remaining Standard actions. - A fix to deformat_string so it only returns a null return if you provided a null buffer. - Eliminate the giant if.. else if block from ACTION_ProcessAction in favor of a table of handlers. - Return code of the install should not depend on the return code of the final action. - Update component installed states as they are installed so that conditions based on component states are at least a little more correct. - Add icon and argument when regestering clsids. - Add a stub for ResolveSource because we do that work just not in ResolveSource like we should. - When quering a Component state return the correct state. - Enable the updating of Feature and thus the resulting component states. - Run the end of install actions for suspend and user exit states as well. - Start putting in place a currently running state for future ui use. - Use the new registry functions in registry.c. - Do not force a reboot, just return ERROR_INSTALL_SUSPEND and write some keys to the registry. - Quite a few fixes: - Allow for the queing of custom actions to trigger on the InstallExecute or InstallExecuteAgain actions. - allow for the queing of custom actions to trigger on InstallFinalize. - Properly set the CustomActionData property for said queued actions. - Implement RegisterProduct. - Beginning implementation of ForceReboot. - Don't kill install if an item to be duplicated does not exist. - Write out SourceList and LastUsedSource for resuming installs. - Use regsvr32 to register self reg dlls. - Implementations for SelfRegModules and PublishFeatures. - Set default ACTION property for Install. - Deformat more than JUST properties properly. Allows for Files and Component paths in deformat. - Properly deformat a LaunchCondition failure dialog box. - Resolve and save registry Keypaths. - Write the Features published keys more correctly. Still some problems. - First implementation of the WriteIniValues action. - Custom actions can have null in their target parameters, handle that without crashing. Also enable deformating of lines greater than 256 characters. - Added some more suminfo stubs. - An implementation of MsiSummaryInfoGetPropertyW based off of MsiSummaryInfoGetPropertyA. - Added stubs for MsiGetShortcutTargetA/W. - Do a very basic first implementation of MsiConfigureProductExW for msiexec /@ when run as a reboot. - Also add a number of new stubs for the office xp and 2k3 install and startup process. - Fix a copy and paste error, check for a null value and discard unneeded errors. - Do not limit properties to 256 characters when evaluating them. - Setting a record to an empty string is the same as making it null. - First pass implement ion of MsiQueryProductState[A/W] as well as a few fixes for MsiGetComponentPath. - Actually start on an implemention for MsiGetComponentPathW that should handle all keypaths that are files. - A reworking of format.c to remove the recursion, clean things up and stabilize behavior to match windows. - Cleanup processing a bit more. - Allow for nested keys to work properly. - MsiGetProperty does not return any error on missing properties. - The new Insert fixes now properly require ?,? instead of just ? for the Insert call. This fix modifies the MSI_SetProperty query to be correct. Michael Stefaniuc - Do not check for non NULL pointer before HeapFree'ing it. It's redundant. Francois Gouget - Assorted spelling fixes. Ulrich Czekalla - Handle 0 length buffers in MSI_FormatRecordW. - Remove unused buffer in deformat_string. Mike Hearn - Correctly ensure properties set from resolved directory paths are backslash terminated. Francois Gouget - Assorted spelling fixes. Marcus Meissner - Initialize rc in create_component_directory(). Alexandre Julliard - Avoid unnecessary run-time initializations. svn path=/trunk/; revision=13518 --- reactos/include/wine/msi.h | 99 +- reactos/include/wine/msidefs.h | 96 + reactos/lib/msi/Makefile.in | 8 +- reactos/lib/msi/action.c | 2687 ++++++++++++-------- reactos/lib/msi/action.h | 151 ++ reactos/lib/msi/appsearch.c | 855 +++++++ reactos/lib/msi/cond.tab.c | 4226 +++++++++++++++++--------------- reactos/lib/msi/cond.tab.h | 139 +- reactos/lib/msi/cond.y | 27 +- reactos/lib/msi/create.c | 5 +- reactos/lib/msi/custom.c | 794 ++++++ reactos/lib/msi/dialog.c | 973 ++++++++ reactos/lib/msi/distinct.c | 13 +- reactos/lib/msi/format.c | 583 +++++ reactos/lib/msi/handle.c | 10 +- reactos/lib/msi/insert.c | 75 +- reactos/lib/msi/msi.c | 1228 +++++----- reactos/lib/msi/msi.rc | 30 + reactos/lib/msi/msi.spec | 40 +- reactos/lib/msi/msi_En.rc | 33 + reactos/lib/msi/msipriv.h | 88 +- reactos/lib/msi/msiquery.c | 205 +- reactos/lib/msi/order.c | 13 +- reactos/lib/msi/package.c | 187 +- reactos/lib/msi/preview.c | 164 ++ reactos/lib/msi/record.c | 51 +- reactos/lib/msi/registry.c | 486 ++++ reactos/lib/msi/select.c | 7 +- reactos/lib/msi/sql.tab.c | 137 +- reactos/lib/msi/sql.y | 9 +- reactos/lib/msi/string.c | 3 +- reactos/lib/msi/suminfo.c | 70 +- reactos/lib/msi/table.c | 25 +- reactos/lib/msi/update.c | 5 +- reactos/lib/msi/where.c | 13 +- 35 files changed, 9583 insertions(+), 3952 deletions(-) create mode 100644 reactos/include/wine/msidefs.h create mode 100644 reactos/lib/msi/action.h create mode 100644 reactos/lib/msi/appsearch.c create mode 100644 reactos/lib/msi/custom.c create mode 100644 reactos/lib/msi/dialog.c create mode 100644 reactos/lib/msi/format.c create mode 100644 reactos/lib/msi/msi.rc create mode 100644 reactos/lib/msi/msi_En.rc create mode 100644 reactos/lib/msi/preview.c create mode 100644 reactos/lib/msi/registry.c diff --git a/reactos/include/wine/msi.h b/reactos/include/wine/msi.h index f461e998c7f..9ae0f6c2a2d 100644 --- a/reactos/include/wine/msi.h +++ b/reactos/include/wine/msi.h @@ -55,6 +55,15 @@ typedef enum tagINSTALLUILEVEL 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, @@ -137,15 +146,17 @@ typedef enum tagINSTALLTYPE #define MAX_FEATURE_CHARS 38 -typedef INT (CALLBACK *INSTALLUI_HANDLERA)(LPVOID pvContext, UINT iMessageType, - LPCSTR szMessage); -typedef INT (CALLBACK *INSTALLUI_HANDLERW)(LPVOID pvContext, UINT iMessageType, - LPCWSTR szMessage); +typedef INT (CALLBACK *INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR); +typedef INT (CALLBACK *INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR); 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) @@ -158,8 +169,8 @@ UINT WINAPI MsiApplyPatchA(LPCSTR, LPCSTR, INSTALLTYPE, LPCSTR); UINT WINAPI MsiApplyPatchW(LPCWSTR, LPCWSTR, INSTALLTYPE, LPCWSTR); #define MsiApplyPatch WINELIB_NAME_AW(MsiApplyPatch) -UINT WINAPI MsiEnumProductsA(DWORD index, LPSTR lpguid); -UINT WINAPI MsiEnumProductsW(DWORD index, LPWSTR lpguid); +UINT WINAPI MsiEnumProductsA(DWORD, LPSTR); +UINT WINAPI MsiEnumProductsW(DWORD, LPWSTR); #define MsiEnumProducts WINELIB_NAME_AW(MsiEnumProducts) UINT WINAPI MsiEnumFeaturesA(LPCSTR, DWORD, LPSTR, LPSTR); @@ -198,6 +209,12 @@ UINT WINAPI MsiSummaryInfoGetPropertyA(MSIHANDLE,UINT,UINT*,INT*,FILETIME*,LPSTR UINT WINAPI MsiSummaryInfoGetPropertyW(MSIHANDLE,UINT,UINT*,INT*,FILETIME*,LPWSTR,DWORD*); #define MsiSummaryInfoGetProperty WINELIB_NAME_AW(MsiSummaryInfoGetProperty) +UINT WINAPI MsiSummaryInfoPersist(MSIHANDLE); + +UINT WINAPI MsiSummaryInfoSetPropertyA(MSIHANDLE, UINT, UINT, INT, FILETIME*, LPSTR); +UINT WINAPI MsiSummaryInfoSetPropertyW(MSIHANDLE, UINT, UINT, INT, FILETIME*, LPWSTR); +#define MsiSummaryInfoSetProperty WINELIB_NAME_AW(MsiSummaryInfoSetProperty) + UINT WINAPI MsiProvideComponentFromDescriptorA(LPCSTR,LPSTR,DWORD*,DWORD*); UINT WINAPI MsiProvideComponentFromDescriptorW(LPCWSTR,LPWSTR,DWORD*,DWORD*); #define MsiProvideComponentFromDescriptor WINELIB_NAME_AW(MsiProvideComponentFromDescriptor) @@ -218,20 +235,24 @@ INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR); INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR); #define MsiQueryProductState WINELIB_NAME_AW(MsiQueryProductState) -UINT WINAPI MsiConfigureProductA(LPCSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState); -UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState); +UINT WINAPI MsiConfigureProductA(LPCSTR, int, INSTALLSTATE); +UINT WINAPI MsiConfigureProductW(LPCWSTR, int, INSTALLSTATE); #define MsiConfigureProduct WINELIB_NAME_AW(MsiConfigureProduct); -UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent, LPSTR szBuffer); -UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent, LPWSTR szBuffer); +UINT WINAPI MsiConfigureProductExA(LPCSTR, int, INSTALLSTATE, LPCSTR); +UINT WINAPI MsiConfigureProductExW(LPCWSTR, int, INSTALLSTATE, LPCWSTR); +#define MsiConfigureProductEx WINELIB_NAME_AW(MsiConfigureProductEx); + +UINT WINAPI MsiGetProductCodeA(LPCSTR, LPSTR); +UINT WINAPI MsiGetProductCodeW(LPCWSTR, LPWSTR); #define MsiGetProductCode WINELIB_NAME_AW(MsiGetProductCode) -UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuffer, DWORD *pcchValueBuf); -UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct, LPCWSTR szAttribute, LPWSTR szBuffer, DWORD *pcchValueBuf); +UINT WINAPI MsiGetProductInfoA(LPCSTR, LPCSTR, LPSTR, DWORD *); +UINT WINAPI MsiGetProductInfoW(LPCWSTR, LPCWSTR, LPWSTR, DWORD *); #define MsiGetProductInfo WINELIB_NAME_AW(MsiGetProductInfo) -UINT WINAPI MsiEnableLogA(DWORD dwLogMode, LPCSTR szLogFile, DWORD attributes); -UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, DWORD attributes); +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); @@ -242,15 +263,53 @@ INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR, LPCSTR, LPSTR, DWORD*); INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR, LPCWSTR, LPWSTR, DWORD*); #define MsiGetComponentPath WINELIB_NAME_AW(MsiGetComponentPath) -INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature); -INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct, LPCWSTR szFeature); +INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR, LPCSTR); +INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR, LPCWSTR); #define MsiQueryFeatureState WINELIB_NAME_AW(MsiQueryFeatureState) -/** - * Non Unicode - */ +UINT WINAPI MsiGetFeatureUsageA(LPCSTR, LPCSTR, DWORD*, WORD*); +UINT WINAPI MsiGetFeatureUsageW(LPCWSTR, LPCWSTR, DWORD*, WORD*); +#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, DWORD*); +UINT WINAPI MsiProvideAssemblyW(LPCWSTR, LPCWSTR, DWORD, DWORD, LPWSTR, DWORD*); +#define MsiProvideAssembly WINELIB_NAME_AW(MsiProvideAssembly) + +UINT WINAPI MsiEnumComponentQualifiersA(LPSTR, DWORD, LPSTR, DWORD*, LPSTR, DWORD*); +UINT WINAPI MsiEnumComponentQualifiersW(LPWSTR, DWORD, LPWSTR, DWORD*, LPWSTR, DWORD*); +#define MsiEnumComponentQualifiers WINELIB_NAME_AW(MsiEnumComponentQualifiers) + +UINT WINAPI MsiGetFileVersionA(LPCSTR, LPSTR, DWORD*, LPSTR, DWORD*); +UINT WINAPI MsiGetFileVersionW(LPCWSTR, LPWSTR, DWORD*, LPWSTR, DWORD*); +#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, LPSTR, DWORD, DWORD, LPSTR, DWORD*); +UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR, LPCWSTR, DWORD, LPWSTR, DWORD, DWORD, LPWSTR, DWORD*); +#define MsiProvideQualifiedComponentEx WINELIB_NAME_AW(MsiProvideQualifiedComponentEx) + +UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR, LPCSTR, DWORD, LPSTR, DWORD*); +UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR, LPCWSTR, DWORD, LPWSTR, DWORD*); +#define MsiProvideQualifiedComponent WINELIB_NAME_AW(MsiProvideQualifiedComponent) + +USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR, LPSTR, DWORD*, LPSTR, DWORD*, LPSTR, DWORD*); +USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR, LPWSTR, DWORD*, LPWSTR, DWORD*, LPWSTR, DWORD*); +#define MsiGetUserInfo WINELIB_NAME_AW(MsiGetUserInfo) + +UINT WINAPI MsiCollectUserInfoA( LPCSTR ); +UINT WINAPI MsiCollectUserInfoW( LPCWSTR ); +#define MsiCollectUserInfo WINELIB_NAME_AW(MsiCollectUserInfo) + +/* Non Unicode */ UINT WINAPI MsiCloseHandle(MSIHANDLE); -UINT WINAPI MsiCloseAllHandles(); +UINT WINAPI MsiCloseAllHandles(void); INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL, HWND*); #ifdef __cplusplus diff --git a/reactos/include/wine/msidefs.h b/reactos/include/wine/msidefs.h new file mode 100644 index 00000000000..b2cf55cd818 --- /dev/null +++ b/reactos/include/wine/msidefs.h @@ -0,0 +1,96 @@ +/* + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WINE_MSIDEFS_H +#define __WINE_MSIDEFS_H + +#ifdef __cplusplus +extern "C" { +#endif + +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 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 +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __WINE_MSIDEFS_H */ diff --git a/reactos/lib/msi/Makefile.in b/reactos/lib/msi/Makefile.in index df2489801a5..27ce824fa1c 100644 --- a/reactos/lib/msi/Makefile.in +++ b/reactos/lib/msi/Makefile.in @@ -8,15 +8,21 @@ EXTRALIBS = -luuid $(LIBUNICODE) C_SRCS = \ action.c \ + appsearch.c \ create.c \ + custom.c \ + dialog.c \ distinct.c \ + format.c \ handle.c \ insert.c \ msi.c \ msiquery.c \ order.c \ package.c \ + preview.c \ record.c \ + registry.c \ regsvr.c \ select.c \ string.c \ @@ -26,7 +32,7 @@ C_SRCS = \ update.c \ where.c -RC_SRCS = version.rc +RC_SRCS = msi.rc EXTRA_SRCS = sql.y cond.y EXTRA_OBJS = sql.tab.o cond.tab.o diff --git a/reactos/lib/msi/action.c b/reactos/lib/msi/action.c index ec066ac054b..5b4c8e117c7 100644 --- a/reactos/lib/msi/action.c +++ b/reactos/lib/msi/action.c @@ -49,99 +49,26 @@ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/stand #include "shlobj.h" #include "wine/unicode.h" #include "ver.h" +#include "action.h" -#define CUSTOM_ACTION_TYPE_MASK 0x3F #define REG_PROGRESS_VALUE 13200 #define COMPONENT_PROGRESS_VALUE 24000 WINE_DEFAULT_DEBUG_CHANNEL(msi); -typedef struct tagMSIFEATURE -{ - WCHAR Feature[96]; - WCHAR Feature_Parent[96]; - WCHAR Title[0x100]; - WCHAR Description[0x100]; - INT Display; - INT Level; - WCHAR Directory[96]; - INT Attributes; - - INSTALLSTATE Installed; - INSTALLSTATE ActionRequest; - INSTALLSTATE Action; - - INT ComponentCount; - INT Components[1024]; /* yes hardcoded limit.... I am bad */ - INT Cost; -} MSIFEATURE; - -typedef struct tagMSICOMPONENT -{ - WCHAR Component[96]; - WCHAR ComponentId[96]; - WCHAR Directory[96]; - INT Attributes; - WCHAR Condition[0x100]; - WCHAR KeyPath[96]; - - INSTALLSTATE Installed; - INSTALLSTATE ActionRequest; - INSTALLSTATE Action; - - BOOL Enabled; - INT Cost; -} MSICOMPONENT; - -typedef struct tagMSIFOLDER -{ - LPWSTR Directory; - LPWSTR TargetDefault; - LPWSTR SourceDefault; - - LPWSTR ResolvedTarget; - LPWSTR ResolvedSource; - LPWSTR Property; /* initially set property */ - INT ParentIndex; - INT State; - /* 0 = uninitialized */ - /* 1 = existing */ - /* 2 = created remove if empty */ - /* 3 = created persist if empty */ - INT Cost; - INT Space; -}MSIFOLDER; - -typedef struct tagMSIFILE -{ - LPWSTR File; - INT ComponentIndex; - LPWSTR FileName; - INT FileSize; - LPWSTR Version; - LPWSTR Language; - INT Attributes; - INT Sequence; - - INT State; - /* 0 = uninitialize */ - /* 1 = not present */ - /* 2 = present but replace */ - /* 3 = present do not replace */ - /* 4 = Installed */ - LPWSTR SourcePath; - LPWSTR TargetPath; - BOOL Temporary; -}MSIFILE; - /* * Prototypes */ static UINT ACTION_ProcessExecSequence(MSIPACKAGE *package, BOOL UIran); static UINT ACTION_ProcessUISequence(MSIPACKAGE *package); - static UINT ACTION_PerformActionSequence(MSIPACKAGE *package, UINT seq); -UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action); +static UINT build_icon_path(MSIPACKAGE *package, LPCWSTR icon_name, + LPWSTR *FilePath); + +/* + * action handlers + */ +typedef UINT (*STANDARDACTIONHANDLER)(MSIPACKAGE*); static UINT ACTION_LaunchConditions(MSIPACKAGE *package); static UINT ACTION_CostInitialize(MSIPACKAGE *package); @@ -151,32 +78,26 @@ static UINT ACTION_FileCost(MSIPACKAGE *package); static UINT ACTION_InstallFiles(MSIPACKAGE *package); static UINT ACTION_DuplicateFiles(MSIPACKAGE *package); static UINT ACTION_WriteRegistryValues(MSIPACKAGE *package); -static UINT ACTION_CustomAction(MSIPACKAGE *package,const WCHAR *action); static UINT ACTION_InstallInitialize(MSIPACKAGE *package); static UINT ACTION_InstallValidate(MSIPACKAGE *package); static UINT ACTION_ProcessComponents(MSIPACKAGE *package); static UINT ACTION_RegisterTypeLibraries(MSIPACKAGE *package); static UINT ACTION_RegisterClassInfo(MSIPACKAGE *package); static UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package); +static UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package); +static UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package); +static UINT ACTION_RegisterUser(MSIPACKAGE *package); static UINT ACTION_CreateShortcuts(MSIPACKAGE *package); static UINT ACTION_PublishProduct(MSIPACKAGE *package); +static UINT ACTION_WriteIniValues(MSIPACKAGE *package); +static UINT ACTION_SelfRegModules(MSIPACKAGE *package); +static UINT ACTION_PublishFeatures(MSIPACKAGE *package); +static UINT ACTION_RegisterProduct(MSIPACKAGE *package); +static UINT ACTION_InstallExecute(MSIPACKAGE *package); +static UINT ACTION_InstallFinalize(MSIPACKAGE *package); +static UINT ACTION_ForceReboot(MSIPACKAGE *package); +static UINT ACTION_ResolveSource(MSIPACKAGE *package); -static UINT HANDLE_CustomType1(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type); -static UINT HANDLE_CustomType2(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type); -static UINT HANDLE_CustomType18(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type); -static UINT HANDLE_CustomType50(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type); -static UINT HANDLE_CustomType34(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type); - -static DWORD deformat_string(MSIPACKAGE *package, WCHAR* ptr,WCHAR** data); -static LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, - BOOL source, BOOL set_prop, MSIFOLDER **folder); - -static int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path); /* * consts and values used @@ -188,31 +109,30 @@ static const WCHAR cszTempFolder[]= {'T','e','m','p','F','o','l','d','e','r',0}; static const WCHAR cszDatabase[]={'D','A','T','A','B','A','S','E',0}; static const WCHAR c_collen[] = {'C',':','\\',0}; -static const WCHAR cszlsb[]={'[',0}; -static const WCHAR cszrsb[]={']',0}; static const WCHAR cszbs[]={'\\',0}; const static WCHAR szCreateFolders[] = - {'C','r','e','a','t','e','F','o','l','d','e','r','s',0}; +{'C','r','e','a','t','e','F','o','l','d','e','r','s',0}; const static WCHAR szCostFinalize[] = - {'C','o','s','t','F','i','n','a','l','i','z','e',0}; +{'C','o','s','t','F','i','n','a','l','i','z','e',0}; const static WCHAR szInstallFiles[] = - {'I','n','s','t','a','l','l','F','i','l','e','s',0}; +{'I','n','s','t','a','l','l','F','i','l','e','s',0}; const static WCHAR szDuplicateFiles[] = - {'D','u','p','l','i','c','a','t','e','F','i','l','e','s',0}; +{'D','u','p','l','i','c','a','t','e','F','i','l','e','s',0}; const static WCHAR szWriteRegistryValues[] = {'W','r','i','t','e','R','e','g','i','s','t','r','y','V','a','l','u','e','s',0}; const static WCHAR szCostInitialize[] = - {'C','o','s','t','I','n','i','t','i','a','l','i','z','e',0}; -const static WCHAR szFileCost[] = {'F','i','l','e','C','o','s','t',0}; +{'C','o','s','t','I','n','i','t','i','a','l','i','z','e',0}; +const static WCHAR szFileCost[] = +{'F','i','l','e','C','o','s','t',0}; const static WCHAR szInstallInitialize[] = - {'I','n','s','t','a','l','l','I','n','i','t','i','a','l','i','z','e',0}; +{'I','n','s','t','a','l','l','I','n','i','t','i','a','l','i','z','e',0}; const static WCHAR szInstallValidate[] = - {'I','n','s','t','a','l','l','V','a','l','i','d','a','t','e',0}; +{'I','n','s','t','a','l','l','V','a','l','i','d','a','t','e',0}; const static WCHAR szLaunchConditions[] = - {'L','a','u','n','c','h','C','o','n','d','i','t','i','o','n','s',0}; +{'L','a','u','n','c','h','C','o','n','d','i','t','i','o','n','s',0}; const static WCHAR szProcessComponents[] = - {'P','r','o','c','e','s','s','C','o','m','p','o','n','e','n','t','s',0}; +{'P','r','o','c','e','s','s','C','o','m','p','o','n','e','n','t','s',0}; const static WCHAR szRegisterTypeLibraries[] = {'R','e','g','i','s','t','e','r','T','y','p','e','L','i','b','r','a','r', 'i','e','s',0}; @@ -224,6 +144,209 @@ const static WCHAR szCreateShortcuts[] = {'C','r','e','a','t','e','S','h','o','r','t','c','u','t','s',0}; const static WCHAR szPublishProduct[] = {'P','u','b','l','i','s','h','P','r','o','d','u','c','t',0}; +const static WCHAR szWriteIniValues[] = +{'W','r','i','t','e','I','n','i','V','a','l','u','e','s',0}; +const static WCHAR szSelfRegModules[] = +{'S','e','l','f','R','e','g','M','o','d','u','l','e','s',0}; +const static WCHAR szPublishFeatures[] = +{'P','u','b','l','i','s','h','F','e','a','t','u','r','e','s',0}; +const static WCHAR szRegisterProduct[] = +{'R','e','g','i','s','t','e','r','P','r','o','d','u','c','t',0}; +const static WCHAR szInstallExecute[] = +{'I','n','s','t','a','l','l','E','x','e','c','u','t','e',0}; +const static WCHAR szInstallExecuteAgain[] = +{'I','n','s','t','a','l','l','E','x','e','c','u','t','e','A','g','a','i','n',0}; +const static WCHAR szInstallFinalize[] = +{'I','n','s','t','a','l','l','F','i','n','a','l','i','z','e',0}; +const static WCHAR szForceReboot[] = +{'F','o','r','c','e','R','e','b','o','o','t',0}; +const static WCHAR szResolveSource[] = +{'R','e','s','o','l','v','e','S','o','u','r','c','e',0}; +const static WCHAR szAppSearch[] = +{'A','p','p','S','e','a','r','c','h',0}; +const static WCHAR szAllocateRegistrySpace[] = +{'A','l','l','o','c','a','t','e','R','e','g','i','s','t','r','y','S','p','a','c','e',0}; +const static WCHAR szBindImage[] = +{'B','i','n','d','I','m','a','g','e',0}; +const static WCHAR szCCPSearch[] = +{'C','C','P','S','e','a','r','c','h',0}; +const static WCHAR szDeleteServices[] = +{'D','e','l','e','t','e','S','e','r','v','i','c','e','s',0}; +const static WCHAR szDisableRollback[] = +{'D','i','s','a','b','l','e','R','o','l','l','b','a','c','k',0}; +const static WCHAR szExecuteAction[] = +{'E','x','e','c','u','t','e','A','c','t','i','o','n',0}; +const static WCHAR szFindRelatedProducts[] = +{'F','i','n','d','R','e','l','a','t','e','d','P','r','o','d','u','c','t','s',0}; +const static WCHAR szInstallAdminPackage[] = +{'I','n','s','t','a','l','l','A','d','m','i','n','P','a','c','k','a','g','e',0}; +const static WCHAR szInstallSFPCatalogFile[] = +{'I','n','s','t','a','l','l','S','F','P','C','a','t','a','l','o','g','F','i','l','e',0}; +const static WCHAR szIsolateComponents[] = +{'I','s','o','l','a','t','e','C','o','m','p','o','n','e','n','t','s',0}; +const static WCHAR szMigrateFeatureStates[] = +{'M','i','g','r','a','t','e','F','e','a','t','u','r','e','S','t','a','t','e','s',0}; +const static WCHAR szMoveFiles[] = +{'M','o','v','e','F','i','l','e','s',0}; +const static WCHAR szMsiPublishAssemblies[] = +{'M','s','i','P','u','b','l','i','s','h','A','s','s','e','m','b','l','i','e','s',0}; +const static WCHAR szMsiUnpublishAssemblies[] = +{'M','s','i','U','n','p','u','b','l','i','s','h','A','s','s','e','m','b','l','i','e','s',0}; +const static WCHAR szInstallODBC[] = +{'I','n','s','t','a','l','l','O','D','B','C',0}; +const static WCHAR szInstallServices[] = +{'I','n','s','t','a','l','l','S','e','r','v','i','c','e','s',0}; +const static WCHAR szPatchFiles[] = +{'P','a','t','c','h','F','i','l','e','s',0}; +const static WCHAR szPublishComponents[] = +{'P','u','b','l','i','s','h','C','o','m','p','o','n','e','n','t','s',0}; +const static WCHAR szRegisterComPlus[] = +{'R','e','g','i','s','t','e','r','C','o','m','P','l','u','s',0}; +const static WCHAR szRegisterExtensionInfo[] = +{'R','e','g','i','s','t','e','r','E','x','t','e','n','s','i','o','n','I','n','f','o',0}; +const static WCHAR szRegisterFonts[] = +{'R','e','g','i','s','t','e','r','F','o','n','t','s',0}; +const static WCHAR szRegisterMIMEInfo[] = +{'R','e','g','i','s','t','e','r','M','I','M','E','I','n','f','o',0}; +const static WCHAR szRegisterUser[] = +{'R','e','g','i','s','t','e','r','U','s','e','r',0}; +const static WCHAR szRemoveDuplicateFiles[] = +{'R','e','m','o','v','e','D','u','p','l','i','c','a','t','e','F','i','l','e','s',0}; +const static WCHAR szRemoveEnvironmentStrings[] = +{'R','e','m','o','v','e','E','n','v','i','r','o','n','m','e','n','t','S','t','r','i','n','g','s',0}; +const static WCHAR szRemoveExistingProducts[] = +{'R','e','m','o','v','e','E','x','i','s','t','i','n','g','P','r','o','d','u','c','t','s',0}; +const static WCHAR szRemoveFiles[] = +{'R','e','m','o','v','e','F','i','l','e','s',0}; +const static WCHAR szRemoveFolders[] = +{'R','e','m','o','v','e','F','o','l','d','e','r','s',0}; +const static WCHAR szRemoveIniValues[] = +{'R','e','m','o','v','e','I','n','i','V','a','l','u','e','s',0}; +const static WCHAR szRemoveODBC[] = +{'R','e','m','o','v','e','O','D','B','C',0}; +const static WCHAR szRemoveRegistryValues[] = +{'R','e','m','o','v','e','R','e','g','i','s','t','r','y','V','a','l','u','e','s',0}; +const static WCHAR szRemoveShortcuts[] = +{'R','e','m','o','v','e','S','h','o','r','t','c','u','t','s',0}; +const static WCHAR szRMCCPSearch[] = +{'R','M','C','C','P','S','e','a','r','c','h',0}; +const static WCHAR szScheduleReboot[] = +{'S','c','h','e','d','u','l','e','R','e','b','o','o','t',0}; +const static WCHAR szSelfUnregModules[] = +{'S','e','l','f','U','n','r','e','g','M','o','d','u','l','e','s',0}; +const static WCHAR szSetODBCFolders[] = +{'S','e','t','O','D','B','C','F','o','l','d','e','r','s',0}; +const static WCHAR szStartServices[] = +{'S','t','a','r','t','S','e','r','v','i','c','e','s',0}; +const static WCHAR szStopServices[] = +{'S','t','o','p','S','e','r','v','i','c','e','s',0}; +const static WCHAR szUnpublishComponents[] = +{'U','n','p','u','b','l','i','s','h','C','o','m','p','o','n','e','n','t','s',0}; +const static WCHAR szUnpublishFeatures[] = +{'U','n','p','u','b','l','i','s','h','F','e','a','t','u','r','e','s',0}; +const static WCHAR szUnregisterClassInfo[] = +{'U','n','r','e','g','i','s','t','e','r','C','l','a','s','s','I','n','f','o',0}; +const static WCHAR szUnregisterComPlus[] = +{'U','n','r','e','g','i','s','t','e','r','C','o','m','P','l','u','s',0}; +const static WCHAR szUnregisterExtensionInfo[] = +{'U','n','r','e','g','i','s','t','e','r','E','x','t','e','n','s','i','o','n','I','n','f','o',0}; +const static WCHAR szUnregisterFonts[] = +{'U','n','r','e','g','i','s','t','e','r','F','o','n','t','s',0}; +const static WCHAR szUnregisterMIMEInfo[] = +{'U','n','r','e','g','i','s','t','e','r','M','I','M','E','I','n','f','o',0}; +const static WCHAR szUnregisterProgIdInfo[] = +{'U','n','r','e','g','i','s','t','e','r','P','r','o','g','I','d','I','n','f','o',0}; +const static WCHAR szUnregisterTypeLibraries[] = +{'U','n','r','e','g','i','s','t','e','r','T','y','p','e','L','i','b','r','a','r','i','e','s',0}; +const static WCHAR szValidateProductID[] = +{'V','a','l','i','d','a','t','e','P','r','o','d','u','c','t','I','D',0}; +const static WCHAR szWriteEnvironmentStrings[] = +{'W','r','i','t','e','E','n','v','i','r','o','n','m','e','n','t','S','t','r','i','n','g','s',0}; + +struct _actions { + LPCWSTR action; + STANDARDACTIONHANDLER handler; +}; + +struct _actions StandardActions[] = { + { szAllocateRegistrySpace, NULL}, + { szAppSearch, ACTION_AppSearch }, + { szBindImage, NULL}, + { szCCPSearch, NULL}, + { szCostFinalize, ACTION_CostFinalize }, + { szCostInitialize, ACTION_CostInitialize }, + { szCreateFolders, ACTION_CreateFolders }, + { szCreateShortcuts, ACTION_CreateShortcuts }, + { szDeleteServices, NULL}, + { szDisableRollback, NULL}, + { szDuplicateFiles, ACTION_DuplicateFiles}, + { szExecuteAction, NULL}, + { szFileCost, ACTION_FileCost }, + { szFindRelatedProducts, NULL}, + { szForceReboot, ACTION_ForceReboot }, + { szInstallAdminPackage, NULL}, + { szInstallExecute, ACTION_InstallExecute }, + { szInstallExecuteAgain, ACTION_InstallExecute }, + { szInstallFiles, ACTION_InstallFiles}, + { szInstallFinalize, ACTION_InstallFinalize }, + { szInstallInitialize, ACTION_InstallInitialize }, + { szInstallSFPCatalogFile, NULL}, + { szInstallValidate, ACTION_InstallValidate }, + { szIsolateComponents, NULL}, + { szLaunchConditions, ACTION_LaunchConditions }, + { szMigrateFeatureStates, NULL}, + { szMoveFiles, NULL}, + { szMsiPublishAssemblies, NULL}, + { szMsiUnpublishAssemblies, NULL}, + { szInstallODBC, NULL}, + { szInstallServices, NULL}, + { szPatchFiles, NULL}, + { szProcessComponents, ACTION_ProcessComponents }, + { szPublishComponents, NULL}, + { szPublishFeatures, ACTION_PublishFeatures }, + { szPublishProduct, ACTION_PublishProduct }, + { szRegisterClassInfo, ACTION_RegisterClassInfo }, + { szRegisterComPlus, NULL}, + { szRegisterExtensionInfo, ACTION_RegisterExtensionInfo }, + { szRegisterFonts, NULL}, + { szRegisterMIMEInfo, ACTION_RegisterMIMEInfo }, + { szRegisterProduct, ACTION_RegisterProduct }, + { szRegisterProgIdInfo, ACTION_RegisterProgIdInfo }, + { szRegisterTypeLibraries, ACTION_RegisterTypeLibraries }, + { szRegisterUser, ACTION_RegisterUser}, + { szRemoveDuplicateFiles, NULL}, + { szRemoveEnvironmentStrings, NULL}, + { szRemoveExistingProducts, NULL}, + { szRemoveFiles, NULL}, + { szRemoveFolders, NULL}, + { szRemoveIniValues, NULL}, + { szRemoveODBC, NULL}, + { szRemoveRegistryValues, NULL}, + { szRemoveShortcuts, NULL}, + { szResolveSource, ACTION_ResolveSource}, + { szRMCCPSearch, NULL}, + { szScheduleReboot, NULL}, + { szSelfRegModules, ACTION_SelfRegModules }, + { szSelfUnregModules, NULL}, + { szSetODBCFolders, NULL}, + { szStartServices, NULL}, + { szStopServices, NULL}, + { szUnpublishComponents, NULL}, + { szUnpublishFeatures, NULL}, + { szUnregisterClassInfo, NULL}, + { szUnregisterComPlus, NULL}, + { szUnregisterExtensionInfo, NULL}, + { szUnregisterFonts, NULL}, + { szUnregisterMIMEInfo, NULL}, + { szUnregisterProgIdInfo, NULL}, + { szUnregisterTypeLibraries, NULL}, + { szValidateProductID, NULL}, + { szWriteEnvironmentStrings, NULL}, + { szWriteIniValues, ACTION_WriteIniValues }, + { szWriteRegistryValues, ACTION_WriteRegistryValues}, + { NULL, NULL}, +}; + /******************************************************** * helper functions to get around current HACKS and such @@ -235,41 +358,7 @@ inline static void reduce_to_longfilename(WCHAR* filename) memmove(filename, p+1, (strlenW(p+1)+1)*sizeof(WCHAR)); } -inline static char *strdupWtoA( const WCHAR *str ) -{ - char *ret = NULL; - if (str) - { - DWORD len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL -); - if ((ret = HeapAlloc( GetProcessHeap(), 0, len ))) - WideCharToMultiByte( CP_ACP, 0, str, -1, ret, len, NULL, NULL ); - } - return ret; -} - -inline static WCHAR *strdupAtoW( const char *str ) -{ - WCHAR *ret = NULL; - if (str) - { - DWORD len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 ); - if ((ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) - MultiByteToWideChar( CP_ACP, 0, str, -1, ret, len ); - } - return ret; -} - -static LPWSTR dupstrW(LPCWSTR src) -{ - LPWSTR dest; - if (!src) return NULL; - dest = HeapAlloc(GetProcessHeap(), 0, (strlenW(src)+1)*sizeof(WCHAR)); - strcpyW(dest, src); - return dest; -} - -inline static WCHAR *load_dynamic_stringW(MSIRECORD *row, INT index) +WCHAR *load_dynamic_stringW(MSIRECORD *row, INT index) { UINT rc; DWORD sz; @@ -301,8 +390,7 @@ inline static WCHAR *load_dynamic_stringW(MSIRECORD *row, INT index) return ret; } -inline static LPWSTR load_dynamic_property(MSIPACKAGE *package, LPCWSTR prop, - UINT* rc) +LPWSTR load_dynamic_property(MSIPACKAGE *package, LPCWSTR prop, UINT* rc) { DWORD sz = 0; LPWSTR str; @@ -328,7 +416,7 @@ inline static LPWSTR load_dynamic_property(MSIPACKAGE *package, LPCWSTR prop, return str; } -inline static int get_loaded_component(MSIPACKAGE* package, LPCWSTR Component ) +int get_loaded_component(MSIPACKAGE* package, LPCWSTR Component ) { int rc = -1; DWORD i; @@ -344,7 +432,7 @@ inline static int get_loaded_component(MSIPACKAGE* package, LPCWSTR Component ) return rc; } -inline static int get_loaded_feature(MSIPACKAGE* package, LPCWSTR Feature ) +int get_loaded_feature(MSIPACKAGE* package, LPCWSTR Feature ) { int rc = -1; DWORD i; @@ -360,7 +448,7 @@ inline static int get_loaded_feature(MSIPACKAGE* package, LPCWSTR Feature ) return rc; } -inline static int get_loaded_file(MSIPACKAGE* package, LPCWSTR file) +int get_loaded_file(MSIPACKAGE* package, LPCWSTR file) { int rc = -1; DWORD i; @@ -376,8 +464,7 @@ inline static int get_loaded_file(MSIPACKAGE* package, LPCWSTR file) return rc; } - -static int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path) +int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path) { DWORD i; DWORD index; @@ -408,7 +495,7 @@ static int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path) return 0; } -void ACTION_remove_tracked_tempfiles(MSIPACKAGE* package) +static void remove_tracked_tempfiles(MSIPACKAGE* package) { DWORD i; @@ -426,13 +513,43 @@ void ACTION_remove_tracked_tempfiles(MSIPACKAGE* package) } } +/* wrapper to resist a need for a full rewrite right now */ +DWORD deformat_string(MSIPACKAGE *package, LPCWSTR ptr, WCHAR** data ) +{ + if (ptr) + { + MSIRECORD *rec = MSI_CreateRecord(1); + DWORD size = 0; + + MSI_RecordSetStringW(rec,0,ptr); + MSI_FormatRecordW(package,rec,NULL,&size); + if (size >= 0) + { + size++; + *data = HeapAlloc(GetProcessHeap(),0,size*sizeof(WCHAR)); + if (size > 1) + MSI_FormatRecordW(package,rec,*data,&size); + else + *data[0] = 0; + msiobj_release( &rec->hdr ); + return sizeof(WCHAR)*size; + } + msiobj_release( &rec->hdr ); + } + + *data = NULL; + return 0; +} + /* Called when the package is being closed */ -extern void ACTION_free_package_structures( MSIPACKAGE* package) +void ACTION_free_package_structures( MSIPACKAGE* package) { INT i; TRACE("Freeing package action data\n"); + remove_tracked_tempfiles(package); + /* No dynamic buffers in features */ if (package->features && package->loaded_features > 0) HeapFree(GetProcessHeap(),0,package->features); @@ -465,54 +582,16 @@ extern void ACTION_free_package_structures( MSIPACKAGE* package) if (package->files && package->loaded_files > 0) HeapFree(GetProcessHeap(),0,package->files); -} -static UINT ACTION_OpenQuery( MSIDATABASE *db, MSIQUERY **view, LPCWSTR fmt, ... ) -{ - LPWSTR szQuery; - LPCWSTR p; - UINT sz, rc; - va_list va; + for (i = 0; i < package->DeferredActionCount; i++) + HeapFree(GetProcessHeap(),0,package->DeferredAction[i]); + HeapFree(GetProcessHeap(),0,package->DeferredAction); - /* figure out how much space we need to allocate */ - va_start(va, fmt); - sz = strlenW(fmt) + 1; - p = fmt; - while (*p) - { - p = strchrW(p, '%'); - if (!p) - break; - p++; - switch (*p) - { - case 's': /* a string */ - sz += strlenW(va_arg(va,LPCWSTR)); - break; - case 'd': - case 'i': /* an integer -2147483648 seems to be longest */ - sz += 3*sizeof(int); - (void)va_arg(va,int); - break; - case '%': /* a single % - leave it alone */ - break; - default: - FIXME("Unhandled character type %c\n",*p); - } - p++; - } - va_end(va); + for (i = 0; i < package->CommitActionCount; i++) + HeapFree(GetProcessHeap(),0,package->CommitAction[i]); + HeapFree(GetProcessHeap(),0,package->CommitAction); - /* construct the string */ - szQuery = HeapAlloc(GetProcessHeap(), 0, sz*sizeof(WCHAR)); - va_start(va, fmt); - vsnprintfW(szQuery, sz, fmt, va); - va_end(va); - - /* perform the query */ - rc = MSI_DatabaseOpenViewW(db, szQuery, view); - HeapFree(GetProcessHeap(), 0, szQuery); - return rc; + HeapFree(GetProcessHeap(),0,package->PackagePath); } static void ui_progress(MSIPACKAGE *package, int a, int b, int c, int d ) @@ -526,6 +605,8 @@ static void ui_progress(MSIPACKAGE *package, int a, int b, int c, int d ) MSI_RecordSetInteger(row,4,d); MSI_ProcessMessage(package, INSTALLMESSAGE_PROGRESS, row); msiobj_release(&row->hdr); + + msi_dialog_check_messages(package->dialog, NULL); } static void ui_actiondata(MSIPACKAGE *package, LPCWSTR action, MSIRECORD * record) @@ -538,11 +619,11 @@ static void ui_actiondata(MSIPACKAGE *package, LPCWSTR action, MSIRECORD * recor UINT rc; MSIQUERY * view; MSIRECORD * row = 0; - LPWSTR ptr; + DWORD size; if (!package->LastAction || strcmpW(package->LastAction,action)) { - rc = ACTION_OpenQuery(package->db, &view, Query_t, action); + rc = MSI_OpenQuery(package->db, &view, Query_t, action); if (rc != ERROR_SUCCESS) return; @@ -568,12 +649,10 @@ static void ui_actiondata(MSIPACKAGE *package, LPCWSTR action, MSIRECORD * recor } /* update the cached actionformat */ - if (package->ActionFormat) - HeapFree(GetProcessHeap(),0,package->ActionFormat); + HeapFree(GetProcessHeap(),0,package->ActionFormat); package->ActionFormat = load_dynamic_stringW(row,3); - if (package->LastAction) - HeapFree(GetProcessHeap(),0,package->LastAction); + HeapFree(GetProcessHeap(),0,package->LastAction); package->LastAction = dupstrW(action); msiobj_release(&row->hdr); @@ -581,38 +660,9 @@ static void ui_actiondata(MSIPACKAGE *package, LPCWSTR action, MSIRECORD * recor msiobj_release(&view->hdr); } - message[0]=0; - ptr = package->ActionFormat; - while (*ptr) - { - LPWSTR ptr2; - LPWSTR data=NULL; - WCHAR tmp[1023]; - INT field; - - ptr2 = strchrW(ptr,'['); - if (ptr2) - { - strncpyW(tmp,ptr,ptr2-ptr); - tmp[ptr2-ptr]=0; - strcatW(message,tmp); - ptr2++; - field = atoiW(ptr2); - data = load_dynamic_stringW(record,field); - if (data) - { - strcatW(message,data); - HeapFree(GetProcessHeap(),0,data); - } - ptr=strchrW(ptr2,']'); - ptr++; - } - else - { - strcatW(message,ptr); - break; - } - } + MSI_RecordSetStringW(record,0,package->ActionFormat); + size = 1024; + MSI_FormatRecordW(package,record,message,&size); row = MSI_CreateRecord(1); MSI_RecordSetStringW(row,1,message); @@ -641,7 +691,7 @@ static void ui_actionstart(MSIPACKAGE *package, LPCWSTR action) GetTimeFormatW(LOCALE_USER_DEFAULT, 0, NULL, format, timet, 0x100); - rc = ACTION_OpenQuery(package->db, &view, Query_t, action); + rc = MSI_OpenQuery(package->db, &view, Query_t, action); if (rc != ERROR_SUCCESS) return; rc = MSI_ViewExecute(view, 0); @@ -765,11 +815,16 @@ UINT ACTION_DoTopLevelINSTALL(MSIPACKAGE *package, LPCWSTR szPackagePath, WCHAR buffer[10]; UINT rc; static const WCHAR szUILevel[] = {'U','I','L','e','v','e','l',0}; + static const WCHAR szAction[] = {'A','C','T','I','O','N',0}; + static const WCHAR szInstall[] = {'I','N','S','T','A','L','L',0}; + + MSI_SetPropertyW(package, szAction, szInstall); if (szPackagePath) { LPWSTR p, check, path; + package->PackagePath = dupstrW(szPackagePath); path = dupstrW(szPackagePath); p = strrchrW(path,'\\'); if (p) @@ -777,6 +832,13 @@ UINT ACTION_DoTopLevelINSTALL(MSIPACKAGE *package, LPCWSTR szPackagePath, p++; *p=0; } + else + { + HeapFree(GetProcessHeap(),0,path); + path = HeapAlloc(GetProcessHeap(),0,MAX_PATH*sizeof(WCHAR)); + GetCurrentDirectoryW(MAX_PATH,path); + strcatW(path,cszbs); + } check = load_dynamic_property(package, cszSourceDir,NULL); if (!check) @@ -858,12 +920,25 @@ UINT ACTION_DoTopLevelINSTALL(MSIPACKAGE *package, LPCWSTR szPackagePath, } else rc = ACTION_ProcessExecSequence(package,FALSE); + + if (rc == -1) + { + /* install was halted but should be considered a success */ + rc = ERROR_SUCCESS; + } /* process the ending type action */ if (rc == ERROR_SUCCESS) - rc = ACTION_PerformActionSequence(package,-1); + ACTION_PerformActionSequence(package,-1); + else if (rc == ERROR_INSTALL_USEREXIT) + ACTION_PerformActionSequence(package,-2); else if (rc == ERROR_FUNCTION_FAILED) - rc = ACTION_PerformActionSequence(package,-3); + ACTION_PerformActionSequence(package,-3); + else if (rc == ERROR_INSTALL_SUSPEND) + ACTION_PerformActionSequence(package,-4); + + /* finish up running custom actions */ + ACTION_FinishCustomActions(package); return rc; } @@ -883,7 +958,7 @@ static UINT ACTION_PerformActionSequence(MSIPACKAGE *package, UINT seq) 'w','h','e','r','e',' ','S','e','q','u','e','n','c','e',' ', '=',' ','%','i',0}; - rc = ACTION_OpenQuery(package->db, &view, ExecSeqQuery, seq); + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, seq); if (rc == ERROR_SUCCESS) { @@ -994,7 +1069,7 @@ static UINT ACTION_ProcessExecSequence(MSIPACKAGE *package, BOOL UIran) msiobj_release(&view->hdr); } - rc = ACTION_OpenQuery(package->db, &view, ExecSeqQuery, seq); + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, seq); if (rc == ERROR_SUCCESS) { rc = MSI_ViewExecute(view, 0); @@ -1143,7 +1218,7 @@ static UINT ACTION_ProcessUISequence(MSIPACKAGE *package) break; } - rc = ACTION_PerformAction(package,buffer); + rc = ACTION_PerformUIAction(package,buffer); if (rc == ERROR_FUNCTION_NOT_CALLED) rc = ERROR_SUCCESS; @@ -1169,11 +1244,71 @@ end: /******************************************************** * ACTION helper functions and functions that perform the actions *******************************************************/ +BOOL ACTION_HandleStandardAction(MSIPACKAGE *package, LPCWSTR action, UINT* rc) +{ + BOOL ret = FALSE; + + int i; + i = 0; + while (StandardActions[i].action != NULL) + { + if (strcmpW(StandardActions[i].action, action)==0) + { + ui_actioninfo(package, action, TRUE, 0); + ui_actionstart(package, action); + if (StandardActions[i].handler) + { + *rc = StandardActions[i].handler(package); + } + else + { + FIXME("UNHANDLED Standard Action %s\n",debugstr_w(action)); + *rc = ERROR_SUCCESS; + } + ui_actioninfo(package, action, FALSE, *rc); + ret = TRUE; + break; + } + i++; + } + return ret; +} + +BOOL ACTION_HandleDialogBox(MSIPACKAGE *package, LPCWSTR dialog, UINT* rc) +{ + BOOL ret = FALSE; + + /* + * for the UI when we get that working + * + if (ACTION_DialogBox(package,dialog) == ERROR_SUCCESS) + { + *rc = package->CurrentInstallState; + ret = TRUE; + } + */ + return ret; +} + +BOOL ACTION_HandleCustomAction(MSIPACKAGE* package, LPCWSTR action, UINT* rc) +{ + BOOL ret=FALSE; + UINT arc; + + arc = ACTION_CustomAction(package,action,FALSE); + + if (arc != ERROR_CALL_NOT_IMPLEMENTED) + { + *rc = arc; + ret = TRUE; + } + return ret; +} /* - * Alot of actions are really important even if they don't do anything - * explicit.. Lots of properties are set at the beginning of the installation - * CostFinalize does a bunch of work to translated the directories and such + * A lot of actions are really important even if they don't do anything + * explicit... Lots of properties are set at the beginning of the installation + * CostFinalize does a bunch of work to translate the directories and such * * But until I get write access to the database that is hard, so I am going to * hack it to see if I can get something to run. @@ -1181,526 +1316,52 @@ end: UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action) { UINT rc = ERROR_SUCCESS; + BOOL handled; TRACE("Performing action (%s)\n",debugstr_w(action)); - ui_actioninfo(package, action, TRUE, 0); - ui_actionstart(package, action); - /* pre install, setup and configuration block */ - if (strcmpW(action,szLaunchConditions)==0) - rc = ACTION_LaunchConditions(package); - else if (strcmpW(action,szCostInitialize)==0) - rc = ACTION_CostInitialize(package); - else if (strcmpW(action,szFileCost)==0) - rc = ACTION_FileCost(package); - else if (strcmpW(action,szCostFinalize)==0) - rc = ACTION_CostFinalize(package); - else if (strcmpW(action,szInstallValidate)==0) - rc = ACTION_InstallValidate(package); + handled = ACTION_HandleStandardAction(package, action, &rc); - /* install block */ - else if (strcmpW(action,szProcessComponents)==0) - rc = ACTION_ProcessComponents(package); - else if (strcmpW(action,szInstallInitialize)==0) - rc = ACTION_InstallInitialize(package); - else if (strcmpW(action,szCreateFolders)==0) - rc = ACTION_CreateFolders(package); - else if (strcmpW(action,szInstallFiles)==0) - rc = ACTION_InstallFiles(package); - else if (strcmpW(action,szDuplicateFiles)==0) - rc = ACTION_DuplicateFiles(package); - else if (strcmpW(action,szWriteRegistryValues)==0) - rc = ACTION_WriteRegistryValues(package); - else if (strcmpW(action,szRegisterTypeLibraries)==0) - rc = ACTION_RegisterTypeLibraries(package); - else if (strcmpW(action,szRegisterClassInfo)==0) - rc = ACTION_RegisterClassInfo(package); - else if (strcmpW(action,szRegisterProgIdInfo)==0) - rc = ACTION_RegisterProgIdInfo(package); - else if (strcmpW(action,szCreateShortcuts)==0) - rc = ACTION_CreateShortcuts(package); - else if (strcmpW(action,szPublishProduct)==0) - rc = ACTION_PublishProduct(package); + if (!handled) + handled = ACTION_HandleCustomAction(package, action, &rc); - /* - Called during iTunes but unimplemented and seem important - - ResolveSource (sets SourceDir) - RegisterProduct - InstallFinalize - */ - else if ((rc = ACTION_CustomAction(package,action)) != ERROR_SUCCESS) - { + if (!handled) + { FIXME("UNHANDLED MSI ACTION %s\n",debugstr_w(action)); rc = ERROR_FUNCTION_NOT_CALLED; - } + } - ui_actioninfo(package, action, FALSE, rc); + package->CurrentInstallState = rc; return rc; } - -static UINT ACTION_CustomAction(MSIPACKAGE *package,const WCHAR *action) +UINT ACTION_PerformUIAction(MSIPACKAGE *package, const WCHAR *action) { UINT rc = ERROR_SUCCESS; - MSIQUERY * view; - MSIRECORD * row = 0; - static const WCHAR ExecSeqQuery[] = - {'s','e','l','e','c','t',' ','*',' ','f','r','o','m',' ','C','u','s','t','o' - ,'m','A','c','t','i','o','n',' ','w','h','e','r','e',' ','`','A','c','t','i' - ,'o','n','`',' ','=',' ','`','%','s','`',0}; - UINT type; - LPWSTR source; - LPWSTR target; - WCHAR *deformated=NULL; + BOOL handled = FALSE; - rc = ACTION_OpenQuery(package->db, &view, ExecSeqQuery, action); - if (rc != ERROR_SUCCESS) - return rc; + TRACE("Performing action (%s)\n",debugstr_w(action)); - rc = MSI_ViewExecute(view, 0); - if (rc != ERROR_SUCCESS) + handled = ACTION_HandleStandardAction(package, action, &rc); + + if (!handled) + handled = ACTION_HandleCustomAction(package, action, &rc); + + if (!handled) + handled = ACTION_HandleDialogBox(package, action, &rc); + + msi_dialog_check_messages( package->dialog, NULL ); + + if (!handled) { - MSI_ViewClose(view); - msiobj_release(&view->hdr); - return rc; + FIXME("UNHANDLED MSI ACTION %s\n",debugstr_w(action)); + rc = ERROR_FUNCTION_NOT_CALLED; } - rc = MSI_ViewFetch(view,&row); - if (rc != ERROR_SUCCESS) - { - MSI_ViewClose(view); - msiobj_release(&view->hdr); - return rc; - } - - type = MSI_RecordGetInteger(row,2); - - source = load_dynamic_stringW(row,3); - target = load_dynamic_stringW(row,4); - - TRACE("Handling custom action %s (%x %s %s)\n",debugstr_w(action),type, - debugstr_w(source), debugstr_w(target)); - - /* we are ignoring ALOT of flags and important synchronization stuff */ - switch (type & CUSTOM_ACTION_TYPE_MASK) - { - case 1: /* DLL file stored in a Binary table stream */ - rc = HANDLE_CustomType1(package,source,target,type); - break; - case 2: /* EXE file stored in a Binary table strem */ - rc = HANDLE_CustomType2(package,source,target,type); - break; - case 18: /*EXE file installed with package */ - rc = HANDLE_CustomType18(package,source,target,type); - break; - case 50: /*EXE file specified by a property value */ - rc = HANDLE_CustomType50(package,source,target,type); - break; - case 34: /*EXE to be run in specified directory */ - rc = HANDLE_CustomType34(package,source,target,type); - break; - case 35: /* Directory set with formatted text. */ - deformat_string(package,target,&deformated); - MSI_SetTargetPathW(package, source, deformated); - HeapFree(GetProcessHeap(),0,deformated); - break; - case 51: /* Property set with formatted text. */ - deformat_string(package,target,&deformated); - rc = MSI_SetPropertyW(package,source,deformated); - HeapFree(GetProcessHeap(),0,deformated); - break; - default: - FIXME("UNHANDLED ACTION TYPE %i (%s %s)\n", - type & CUSTOM_ACTION_TYPE_MASK, debugstr_w(source), - debugstr_w(target)); - } - - HeapFree(GetProcessHeap(),0,source); - HeapFree(GetProcessHeap(),0,target); - msiobj_release(&row->hdr); - MSI_ViewClose(view); - msiobj_release(&view->hdr); + package->CurrentInstallState = rc; return rc; } -static UINT store_binary_to_temp(MSIPACKAGE *package, const LPWSTR source, - LPWSTR tmp_file) -{ - DWORD sz=MAX_PATH; - - if (MSI_GetPropertyW(package, cszTempFolder, tmp_file, &sz) - != ERROR_SUCCESS) - GetTempPathW(MAX_PATH,tmp_file); - - strcatW(tmp_file,source); - - if (GetFileAttributesW(tmp_file) != INVALID_FILE_ATTRIBUTES) - { - TRACE("File already exists\n"); - return ERROR_SUCCESS; - } - else - { - /* write out the file */ - UINT rc; - MSIQUERY * view; - MSIRECORD * row = 0; - static const WCHAR fmt[] = - {'s','e','l','e','c','t',' ','*',' ','f','r','o','m',' ','B','i' -,'n','a','r','y',' ','w','h','e','r','e',' ','N','a','m','e','=','`','%','s','`',0}; - HANDLE the_file; - CHAR buffer[1024]; - - if (track_tempfile(package, source, tmp_file)!=0) - FIXME("File Name in temp tracking collision\n"); - - the_file = CreateFileW(tmp_file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL, NULL); - - if (the_file == INVALID_HANDLE_VALUE) - return ERROR_FUNCTION_FAILED; - - rc = ACTION_OpenQuery(package->db, &view, fmt, source); - if (rc != ERROR_SUCCESS) - return rc; - - rc = MSI_ViewExecute(view, 0); - if (rc != ERROR_SUCCESS) - { - MSI_ViewClose(view); - msiobj_release(&view->hdr); - return rc; - } - - rc = MSI_ViewFetch(view,&row); - if (rc != ERROR_SUCCESS) - { - MSI_ViewClose(view); - msiobj_release(&view->hdr); - return rc; - } - - do - { - DWORD write; - sz = 1024; - rc = MSI_RecordReadStream(row,2,buffer,&sz); - if (rc != ERROR_SUCCESS) - { - ERR("Failed to get stream\n"); - CloseHandle(the_file); - DeleteFileW(tmp_file); - break; - } - WriteFile(the_file,buffer,sz,&write,NULL); - } while (sz == 1024); - - CloseHandle(the_file); - - msiobj_release(&row->hdr); - MSI_ViewClose(view); - msiobj_release(&view->hdr); - } - - return ERROR_SUCCESS; -} - -typedef UINT __stdcall CustomEntry(MSIHANDLE); -typedef struct -{ - MSIPACKAGE *package; - WCHAR *target; - WCHAR *source; -} thread_struct; - -static DWORD WINAPI ACTION_CallDllFunction(thread_struct *stuff) -{ - HANDLE hModule; - LPSTR proc; - CustomEntry *fn; - - TRACE("calling function (%s, %s) \n", debugstr_w(stuff->source), - debugstr_w(stuff->target)); - - hModule = LoadLibraryW(stuff->source); - if (hModule) - { - proc = strdupWtoA( stuff->target ); - fn = (CustomEntry*)GetProcAddress(hModule,proc); - if (fn) - { - MSIHANDLE hPackage; - MSIPACKAGE *package = stuff->package; - - TRACE("Calling function %s\n", proc); - hPackage = msiobj_findhandle( &package->hdr ); - if (hPackage ) - { - fn(hPackage); - msiobj_release( &package->hdr ); - } - else - ERR("Handle for object %p not found\n", package ); - } - else - ERR("Cannot load functon\n"); - - HeapFree(GetProcessHeap(),0,proc); - FreeLibrary(hModule); - } - else - ERR("Unable to load library\n"); - msiobj_release( &stuff->package->hdr ); - HeapFree(GetProcessHeap(),0,stuff->source); - HeapFree(GetProcessHeap(),0,stuff->target); - HeapFree(GetProcessHeap(), 0, stuff); - return 0; -} - -static DWORD WINAPI DllThread(LPVOID info) -{ - thread_struct *stuff; - DWORD rc = 0; - - TRACE("MSI Thread (0x%lx) started for custom action\n", - GetCurrentThreadId()); - - stuff = (thread_struct*)info; - rc = ACTION_CallDllFunction(stuff); - - TRACE("MSI Thread (0x%lx) finished\n",GetCurrentThreadId()); - /* clse all handles for this thread */ - MsiCloseAllHandles(); - return rc; -} - -static UINT HANDLE_CustomType1(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type) -{ - WCHAR tmp_file[MAX_PATH]; - thread_struct *info; - DWORD ThreadId; - HANDLE ThreadHandle; - - store_binary_to_temp(package, source, tmp_file); - - TRACE("Calling function %s from %s\n",debugstr_w(target), - debugstr_w(tmp_file)); - - if (!strchrW(tmp_file,'.')) - { - static const WCHAR dot[]={'.',0}; - strcatW(tmp_file,dot); - } - - info = HeapAlloc( GetProcessHeap(), 0, sizeof(*info) ); - msiobj_addref( &package->hdr ); - info->package = package; - info->target = dupstrW(target); - info->source = dupstrW(tmp_file); - - ThreadHandle = CreateThread(NULL,0,DllThread,(LPVOID)info,0,&ThreadId); - - if (!(type & 0xc0)) - WaitForSingleObject(ThreadHandle,INFINITE); - - CloseHandle(ThreadHandle); - - return ERROR_SUCCESS; -} - -static UINT HANDLE_CustomType2(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type) -{ - WCHAR tmp_file[MAX_PATH]; - STARTUPINFOW si; - PROCESS_INFORMATION info; - BOOL rc; - INT len; - WCHAR *deformated; - WCHAR *cmd; - static const WCHAR spc[] = {' ',0}; - - memset(&si,0,sizeof(STARTUPINFOW)); - - store_binary_to_temp(package, source, tmp_file); - - deformat_string(package,target,&deformated); - - len = strlenW(tmp_file) + strlenW(deformated) + 2; - - cmd = (WCHAR*)HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*len); - - strcpyW(cmd,tmp_file); - strcatW(cmd,spc); - strcatW(cmd,deformated); - - HeapFree(GetProcessHeap(),0,deformated); - - TRACE("executing exe %s \n",debugstr_w(cmd)); - - rc = CreateProcessW(NULL, cmd, NULL, NULL, FALSE, 0, NULL, - c_collen, &si, &info); - - HeapFree(GetProcessHeap(),0,cmd); - - if ( !rc ) - { - ERR("Unable to execute command\n"); - return ERROR_SUCCESS; - } - - if (!(type & 0xc0)) - WaitForSingleObject(info.hProcess,INFINITE); - - CloseHandle( info.hProcess ); - CloseHandle( info.hThread ); - return ERROR_SUCCESS; -} - -static UINT HANDLE_CustomType18(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type) -{ - STARTUPINFOW si; - PROCESS_INFORMATION info; - BOOL rc; - WCHAR *deformated; - WCHAR *cmd; - INT len; - static const WCHAR spc[] = {' ',0}; - int index; - - memset(&si,0,sizeof(STARTUPINFOW)); - - index = get_loaded_file(package,source); - - len = strlenW(package->files[index].TargetPath); - - deformat_string(package,target,&deformated); - len += strlenW(deformated); - len += 2; - - cmd = (WCHAR*)HeapAlloc(GetProcessHeap(),0,len * sizeof(WCHAR)); - - strcpyW(cmd, package->files[index].TargetPath); - strcatW(cmd, spc); - strcatW(cmd, deformated); - - HeapFree(GetProcessHeap(),0,deformated); - - TRACE("executing exe %s \n",debugstr_w(cmd)); - - rc = CreateProcessW(NULL, cmd, NULL, NULL, FALSE, 0, NULL, - c_collen, &si, &info); - - HeapFree(GetProcessHeap(),0,cmd); - - if ( !rc ) - { - ERR("Unable to execute command\n"); - return ERROR_SUCCESS; - } - - if (!(type & 0xc0)) - WaitForSingleObject(info.hProcess,INFINITE); - - CloseHandle( info.hProcess ); - CloseHandle( info.hThread ); - return ERROR_SUCCESS; -} - -static UINT HANDLE_CustomType50(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type) -{ - STARTUPINFOW si; - PROCESS_INFORMATION info; - WCHAR *prop; - BOOL rc; - WCHAR *deformated; - WCHAR *cmd; - INT len; - UINT prc; - static const WCHAR spc[] = {' ',0}; - - memset(&si,0,sizeof(STARTUPINFOW)); - memset(&info,0,sizeof(PROCESS_INFORMATION)); - - prop = load_dynamic_property(package,source,&prc); - if (!prop) - return prc; - - deformat_string(package,target,&deformated); - len = strlenW(prop) + strlenW(deformated) + 2; - cmd = (WCHAR*)HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*len); - - strcpyW(cmd,prop); - strcatW(cmd,spc); - strcatW(cmd,deformated); - - HeapFree(GetProcessHeap(),0,deformated); - - TRACE("executing exe %s \n",debugstr_w(cmd)); - - rc = CreateProcessW(NULL, cmd, NULL, NULL, FALSE, 0, NULL, - c_collen, &si, &info); - - HeapFree(GetProcessHeap(),0,cmd); - - if ( !rc ) - { - ERR("Unable to execute command\n"); - return ERROR_SUCCESS; - } - - if (!(type & 0xc0)) - WaitForSingleObject(info.hProcess,INFINITE); - - CloseHandle( info.hProcess ); - CloseHandle( info.hThread ); - return ERROR_SUCCESS; -} - -static UINT HANDLE_CustomType34(MSIPACKAGE *package, const LPWSTR source, - const LPWSTR target, const INT type) -{ - LPWSTR filename, deformated; - STARTUPINFOW si; - PROCESS_INFORMATION info; - BOOL rc; - - memset(&si,0,sizeof(STARTUPINFOW)); - - filename = resolve_folder(package, source, FALSE, FALSE, NULL); - - if (!filename) - return ERROR_FUNCTION_FAILED; - - SetCurrentDirectoryW(filename); - HeapFree(GetProcessHeap(),0,filename); - - deformat_string(package,target,&deformated); - - TRACE("executing exe %s \n",debugstr_w(deformated)); - - rc = CreateProcessW(NULL, deformated, NULL, NULL, FALSE, 0, NULL, - c_collen, &si, &info); - HeapFree(GetProcessHeap(),0,deformated); - - if ( !rc ) - { - ERR("Unable to execute command\n"); - return ERROR_SUCCESS; - } - - if (!(type & 0xc0)) - WaitForSingleObject(info.hProcess,INFINITE); - - CloseHandle( info.hProcess ); - CloseHandle( info.hThread ); - return ERROR_SUCCESS; -} - /*********************************************************************** * create_full_pathW * @@ -1945,7 +1606,7 @@ static void load_feature(MSIPACKAGE* package, MSIRECORD * row) /* load feature components */ - rc = ACTION_OpenQuery(package->db, &view, Query1, package->features[index].Feature); + rc = MSI_OpenQuery(package->db, &view, Query1, package->features[index].Feature); if (rc != ERROR_SUCCESS) return; rc = MSI_ViewExecute(view,0); @@ -1981,7 +1642,7 @@ static void load_feature(MSIPACKAGE* package, MSIRECORD * row) continue; } - rc = ACTION_OpenQuery(package->db, &view2, Query2, buffer); + rc = MSI_OpenQuery(package->db, &view2, Query2, buffer); if (rc != ERROR_SUCCESS) { msiobj_release( &row2->hdr ); @@ -2021,13 +1682,13 @@ static void load_feature(MSIPACKAGE* package, MSIRECORD * row) * I am not doing any of the costing functionality yet. * Mostly looking at doing the Component and Feature loading * - * The native MSI does ALOT of modification to tables here. Mostly adding alot - * of temporary columns to the Feature and Component tables. + * The native MSI does A LOT of modification to tables here. Mostly adding + * a lot of temporary columns to the Feature and Component tables. * - * note: native msi also tracks the short filename. but I am only going to + * note: Native msi also tracks the short filename. But I am only going to * track the long ones. Also looking at this directory table * it appears that the directory table does not get the parents - * resolved base on property only based on their entrys in the + * resolved base on property only based on their entries in the * directory table. */ static UINT ACTION_CostInitialize(MSIPACKAGE *package) @@ -2203,7 +1864,7 @@ static INT load_folder(MSIPACKAGE *package, const WCHAR* dir) package->folders[index].Directory = dupstrW(dir); - rc = ACTION_OpenQuery(package->db, &view, Query, dir); + rc = MSI_OpenQuery(package->db, &view, Query, dir); if (rc != ERROR_SUCCESS) return -1; @@ -2259,8 +1920,7 @@ static INT load_folder(MSIPACKAGE *package, const WCHAR* dir) if (targetdir) { TRACE(" TargetDefault = %s\n",debugstr_w(targetdir)); - if (package->folders[index].TargetDefault) - HeapFree(GetProcessHeap(),0, package->folders[index].TargetDefault); + HeapFree(GetProcessHeap(),0, package->folders[index].TargetDefault); package->folders[index].TargetDefault = dupstrW(targetdir); } @@ -2294,8 +1954,8 @@ static INT load_folder(MSIPACKAGE *package, const WCHAR* dir) } -static LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, - BOOL source, BOOL set_prop, MSIFOLDER **folder) +LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, BOOL source, + BOOL set_prop, MSIFOLDER **folder) { DWORD i; LPWSTR p, path = NULL; @@ -2376,7 +2036,8 @@ static LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, } else if (!source && package->folders[i].Property) { - path = dupstrW(package->folders[i].Property); + path = build_directory_name(2, package->folders[i].Property, NULL); + TRACE(" internally set to %s\n",debugstr_w(path)); if (set_prop) MSI_SetPropertyW(package,name,path); @@ -2409,6 +2070,57 @@ static LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, return path; } +/* update compoennt state based on a feature change */ +void ACTION_UpdateComponentStates(MSIPACKAGE *package, LPCWSTR szFeature) +{ + int i; + INSTALLSTATE newstate; + MSIFEATURE *feature; + + i = get_loaded_feature(package,szFeature); + if (i < 0) + return; + + feature = &package->features[i]; + newstate = feature->ActionRequest; + + for( i = 0; i < feature->ComponentCount; i++) + { + MSICOMPONENT* component = &package->components[feature->Components[i]]; + + if (!component->Enabled) + continue; + else + { + if (newstate == INSTALLSTATE_LOCAL) + component->ActionRequest = INSTALLSTATE_LOCAL; + else + { + int j,k; + + component->ActionRequest = newstate; + + /*if any other feature wants is local we need to set it local*/ + for (j = 0; + j < package->loaded_features && + component->ActionRequest != INSTALLSTATE_LOCAL; + j++) + { + for (k = 0; k < package->features[j].ComponentCount; k++) + if ( package->features[j].Components[k] == + feature->Components[i] ) + { + if (package->features[j].ActionRequest == + INSTALLSTATE_LOCAL) + component->ActionRequest = INSTALLSTATE_LOCAL; + break; + } + } + } + } + } +} + static UINT SetFeatureStates(MSIPACKAGE *package) { LPWSTR level; @@ -2541,7 +2253,7 @@ static UINT SetFeatureStates(MSIPACKAGE *package) } /* - * Alot is done in this function aside from just the costing. + * A lot is done in this function aside from just the costing. * The costing needs to be implemented at some point but for now I am going * to focus on the directory building * @@ -2628,8 +2340,7 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package) /* calculate target */ p = resolve_folder(package, comp->Directory, FALSE, FALSE, NULL); - if (file->TargetPath) - HeapFree(GetProcessHeap(),0,file->TargetPath); + HeapFree(GetProcessHeap(),0,file->TargetPath); TRACE("file %s is named %s\n", debugstr_w(file->File),debugstr_w(file->FileName)); @@ -2661,7 +2372,7 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package) WCHAR filever[0x100]; VS_FIXEDFILEINFO *lpVer; - FIXME("Version comparison.. \n"); + TRACE("Version comparison.. \n"); versize = GetFileVersionInfoSizeW(file->TargetPath,&handle); version = HeapAlloc(GetProcessHeap(),0,versize); GetFileVersionInfoW(file->TargetPath, 0, versize, version); @@ -2998,7 +2709,10 @@ static BOOL extract_a_cabinet_file(MSIPACKAGE* package, const WCHAR* source, data.package = package; data.cab_path = cab_path; - file_name = strdupWtoA(file); + if (file) + file_name = strdupWtoA(file); + else + file_name = NULL; data.file_name = file_name; ret = FDICopy(hfdi, cabinet, "", 0, cabinet_notify, NULL, &data); @@ -3036,7 +2750,7 @@ static UINT ready_media_for_file(MSIPACKAGE *package, UINT sequence, if (sequence <= last_sequence) { TRACE("Media already ready (%u, %u)\n",sequence,last_sequence); - extract_a_cabinet_file(package, source,path,file); + /*extract_a_cabinet_file(package, source,path,file); */ return ERROR_SUCCESS; } @@ -3095,7 +2809,13 @@ static UINT ready_media_for_file(MSIPACKAGE *package, UINT sequence, GetTempPathW(MAX_PATH,path); } } - rc = !extract_a_cabinet_file(package, source,path,file); + rc = !extract_a_cabinet_file(package, source,path,NULL); + } + else + { + sz = MAX_PATH; + MSI_GetPropertyW(package,cszSourceDir,source,&sz); + strcpyW(path,source); } msiobj_release(&row->hdr); MSI_ViewClose(view); @@ -3105,7 +2825,7 @@ static UINT ready_media_for_file(MSIPACKAGE *package, UINT sequence, inline static UINT create_component_directory ( MSIPACKAGE* package, INT component) { - UINT rc; + UINT rc = ERROR_SUCCESS; MSIFOLDER *folder; LPWSTR install_path; @@ -3188,8 +2908,7 @@ static UINT ACTION_InstallFiles(MSIPACKAGE *package) comp = &package->components[file->ComponentIndex]; p = resolve_folder(package, comp->Directory, FALSE, FALSE, NULL); - if (file->TargetPath) - HeapFree(GetProcessHeap(),0,file->TargetPath); + HeapFree(GetProcessHeap(),0,file->TargetPath); file->TargetPath = build_directory_name(2, p, file->FileName); @@ -3255,7 +2974,7 @@ inline static UINT get_file_target(MSIPACKAGE *package, LPCWSTR file_key, { if (strcmpW(file_key,package->files[index].File)==0) { - if (package->files[index].State >= 3) + if (package->files[index].State >= 2) { *file_source = dupstrW(package->files[index].TargetPath); return ERROR_SUCCESS; @@ -3324,10 +3043,18 @@ static UINT ACTION_DuplicateFiles(MSIPACKAGE *package) INSTALLSTATE_LOCAL) { TRACE("Skipping copy due to disabled component\n"); + + /* the action taken was the same as the current install state */ + package->components[component_index].Action = + package->components[component_index].Installed; + msiobj_release(&row->hdr); continue; } + package->components[component_index].Action = INSTALLSTATE_LOCAL; + package->components[component_index].Installed = INSTALLSTATE_LOCAL; + sz=0x100; rc = MSI_RecordGetStringW(row,3,file_key,&sz); if (rc != ERROR_SUCCESS) @@ -3343,9 +3070,8 @@ static UINT ACTION_DuplicateFiles(MSIPACKAGE *package) { ERR("Original file unknown %s\n",debugstr_w(file_key)); msiobj_release(&row->hdr); - if (file_source) - HeapFree(GetProcessHeap(),0,file_source); - break; + HeapFree(GetProcessHeap(),0,file_source); + continue; } if (MSI_RecordIsNull(row,4)) @@ -3378,8 +3104,7 @@ static UINT ACTION_DuplicateFiles(MSIPACKAGE *package) { ERR("Unable to get destination folder\n"); msiobj_release(&row->hdr); - if (file_source) - HeapFree(GetProcessHeap(),0,file_source); + HeapFree(GetProcessHeap(),0,file_source); break; } } @@ -3410,7 +3135,7 @@ static UINT ACTION_DuplicateFiles(MSIPACKAGE *package) } -/* OK this value is "interpretted" and then formatted based on the +/* OK this value is "interpreted" and then formatted based on the first few characters */ static LPSTR parse_value(MSIPACKAGE *package, WCHAR *value, DWORD *type, DWORD *size) @@ -3466,6 +3191,7 @@ static LPSTR parse_value(MSIPACKAGE *package, WCHAR *value, DWORD *type, } else { + static const WCHAR szMulti[] = {'[','~',']',0}; WCHAR *ptr; *type=REG_SZ; @@ -3482,6 +3208,9 @@ static LPSTR parse_value(MSIPACKAGE *package, WCHAR *value, DWORD *type, else ptr=value; + if (strstrW(value,szMulti)) + *type = REG_MULTI_SZ; + *size = deformat_string(package, ptr,(LPWSTR*)&data); } return data; @@ -3557,9 +3286,16 @@ static UINT ACTION_WriteRegistryValues(MSIPACKAGE *package) { TRACE("Skipping write due to disabled component\n"); msiobj_release(&row->hdr); + + package->components[component_index].Action = + package->components[component_index].Installed; + goto next; } + package->components[component_index].Action = INSTALLSTATE_LOCAL; + package->components[component_index].Installed = INSTALLSTATE_LOCAL; + /* null values have special meanings during uninstalls and such */ if(MSI_RecordIsNull(row,5)) @@ -3645,113 +3381,16 @@ static UINT ACTION_WriteRegistryValues(MSIPACKAGE *package) msiobj_release(&row->hdr); RegCloseKey(hkey); next: - if (uikey) - HeapFree(GetProcessHeap(),0,uikey); - if (key) - HeapFree(GetProcessHeap(),0,key); - if (name) - HeapFree(GetProcessHeap(),0,name); - if (component) - HeapFree(GetProcessHeap(),0,component); + HeapFree(GetProcessHeap(),0,uikey); + HeapFree(GetProcessHeap(),0,key); + HeapFree(GetProcessHeap(),0,name); + HeapFree(GetProcessHeap(),0,component); } MSI_ViewClose(view); msiobj_release(&view->hdr); return rc; } -/* - * This helper function should probably go alot of places - * - * Thinking about this, maybe this should become yet another Bison file - */ -static DWORD deformat_string(MSIPACKAGE *package, WCHAR* ptr,WCHAR** data) -{ - WCHAR* mark=NULL; - DWORD size=0; - DWORD chunk=0; - WCHAR key[0x100]; - LPWSTR value; - DWORD sz; - UINT rc; - - if (ptr==NULL) - { - TRACE("Deformatting NULL string\n"); - *data = NULL; - return 0; - } - /* scan for special characters */ - if (!strchrW(ptr,'[') || (strchrW(ptr,'[') && !strchrW(ptr,']'))) - { - /* not formatted */ - size = (strlenW(ptr)+1) * sizeof(WCHAR); - *data = HeapAlloc(GetProcessHeap(),0,size); - strcpyW(*data,ptr); - return size; - } - - /* formatted string located */ - mark = strchrW(ptr,'['); - if (mark != ptr) - { - INT cnt = (mark - ptr); - TRACE("%i (%i) characters before marker\n",cnt,(mark-ptr)); - size = cnt * sizeof(WCHAR); - size += sizeof(WCHAR); - *data = HeapAlloc(GetProcessHeap(),0,size); - strncpyW(*data,ptr,cnt); - (*data)[cnt]=0; - } - else - { - size = sizeof(WCHAR); - *data = HeapAlloc(GetProcessHeap(),0,size); - (*data)[0]=0; - } - mark++; - strcpyW(key,mark); - *strchrW(key,']')=0; - mark = strchrW(mark,']'); - mark++; - TRACE("Current %s .. %s\n",debugstr_w(*data),debugstr_w(mark)); - sz = 0; - rc = MSI_GetPropertyW(package, key, NULL, &sz); - if ((rc == ERROR_SUCCESS) || (rc == ERROR_MORE_DATA)) - { - LPWSTR newdata; - - sz++; - value = HeapAlloc(GetProcessHeap(),0,sz * sizeof(WCHAR)); - MSI_GetPropertyW(package, key, value, &sz); - - chunk = (strlenW(value)+1) * sizeof(WCHAR); - size+=chunk; - newdata = HeapReAlloc(GetProcessHeap(),0,*data,size); - *data = newdata; - strcatW(*data,value); - } - TRACE("Current %s .. %s\n",debugstr_w(*data),debugstr_w(mark)); - if (*mark!=0) - { - LPWSTR newdata; - chunk = (strlenW(mark)+1) * sizeof(WCHAR); - size+=chunk; - newdata = HeapReAlloc(GetProcessHeap(),0,*data,size); - *data = newdata; - strcatW(*data,mark); - } - (*data)[strlenW(*data)]=0; - TRACE("Current %s .. %s\n",debugstr_w(*data),debugstr_w(mark)); - - /* recursively do this to clean up */ - mark = HeapAlloc(GetProcessHeap(),0,size); - strcpyW(mark,*data); - TRACE("String at this point %s\n",debugstr_w(mark)); - size = deformat_string(package,mark,data); - HeapFree(GetProcessHeap(),0,mark); - return size; -} - static UINT ACTION_InstallInitialize(MSIPACKAGE *package) { return ERROR_SUCCESS; @@ -3849,9 +3488,12 @@ static UINT ACTION_LaunchConditions(MSIPACKAGE *package) if (MSI_EvaluateConditionW(package,cond) != MSICONDITION_TRUE) { + LPWSTR deformated; message = load_dynamic_stringW(row,2); - MessageBoxW(NULL,message,title,MB_OK); + deformat_string(package,message,&deformated); + MessageBoxW(NULL,deformated,title,MB_OK); HeapFree(GetProcessHeap(),0,message); + HeapFree(GetProcessHeap(),0,deformated); rc = ERROR_FUNCTION_FAILED; } HeapFree(GetProcessHeap(),0,cond); @@ -3872,9 +3514,71 @@ static LPWSTR resolve_keypath( MSIPACKAGE* package, INT LPWSTR p = resolve_folder(package,cmp->Directory,FALSE,FALSE,NULL); return p; } - if ((cmp->Attributes & 0x4) || (cmp->Attributes & 0x20)) + if (cmp->Attributes & 0x4) { - FIXME("UNIMPLEMENTED keypath as Registry or ODBC Source\n"); + MSIQUERY * view; + MSIRECORD * row = 0; + UINT rc,root,len; + LPWSTR key,deformated,buffer,name,deformated_name; + static const WCHAR ExecSeqQuery[] = { + 's','e','l','e','c','t',' ','*',' ', + 'f','r','o','m',' ','R','e','g','i','s','t','r','y',' ', +'w','h','e','r','e',' ','R','e','g','i','s','t','r','y',' ','=',' ' +,'`','%','s','`',0 }; + static const WCHAR fmt[]={'%','0','2','i',':','%','s',0}; + static const WCHAR fmt2[]={'%','0','2','i',':','%','s','\\','%','s',0}; + + rc = MSI_OpenQuery(package->db,&view,ExecSeqQuery,cmp->KeyPath); + + if (rc!=ERROR_SUCCESS) + return NULL; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return NULL; + } + + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return NULL; + } + + root = MSI_RecordGetInteger(row,2); + key = load_dynamic_stringW(row, 3); + name = load_dynamic_stringW(row, 4); + deformat_string(package, key , &deformated); + deformat_string(package, name, &deformated_name); + + len = strlenW(deformated) + 5; + if (deformated_name) + len+=strlenW(deformated_name); + + buffer = HeapAlloc(GetProcessHeap(),0, len *sizeof(WCHAR)); + + if (deformated_name) + sprintfW(buffer,fmt2,root,deformated,deformated_name); + else + sprintfW(buffer,fmt,root,deformated); + + HeapFree(GetProcessHeap(),0,key); + HeapFree(GetProcessHeap(),0,deformated); + HeapFree(GetProcessHeap(),0,name); + HeapFree(GetProcessHeap(),0,deformated_name); + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + + return buffer; + } + else if (cmp->Attributes & 0x20) + { + FIXME("UNIMPLEMENTED keypath as ODBC Source\n"); return NULL; } else @@ -3901,23 +3605,13 @@ static LPWSTR resolve_keypath( MSIPACKAGE* package, INT static UINT ACTION_ProcessComponents(MSIPACKAGE *package) { LPWSTR productcode; - WCHAR squished_pc[0x100]; - WCHAR squished_cc[0x100]; + WCHAR squished_pc[GUID_SIZE]; + WCHAR squished_cc[GUID_SIZE]; UINT rc; DWORD i; - HKEY hkey=0,hkey2=0,hkey3=0; + HKEY hkey=0,hkey2=0; static const WCHAR szProductCode[]= {'P','r','o','d','u','c','t','C','o','d','e',0}; - static const WCHAR szInstaller[] = { - 'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'I','n','s','t','a','l','l','e','r',0 }; - static const WCHAR szFeatures[] = { - 'F','e','a','t','u','r','e','s',0 }; - static const WCHAR szComponents[] = { - 'C','o','m','p','o','n','e','n','t','s',0 }; if (!package) return ERROR_INVALID_HANDLE; @@ -3927,57 +3621,11 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package) if (!productcode) return rc; - squash_guid(productcode,squished_pc); - rc = RegCreateKeyW(HKEY_LOCAL_MACHINE,szInstaller,&hkey); - if (rc != ERROR_SUCCESS) - goto end; - - rc = RegCreateKeyW(hkey,szFeatures,&hkey2); - if (rc != ERROR_SUCCESS) - goto end; - - rc = RegCreateKeyW(hkey2,squished_pc,&hkey3); - if (rc != ERROR_SUCCESS) - goto end; - - /* here the guids are base 85 encoded */ - for (i = 0; i < package->loaded_features; i++) - { - LPWSTR data = NULL; - GUID clsid; - int j; - INT size; - - size = package->features[i].ComponentCount*21*sizeof(WCHAR); - data = HeapAlloc(GetProcessHeap(), 0, size); - - data[0] = 0; - for (j = 0; j < package->features[i].ComponentCount; j++) - { - WCHAR buf[21]; - TRACE("From %s\n",debugstr_w(package->components - [package->features[i].Components[j]].ComponentId)); - CLSIDFromString(package->components - [package->features[i].Components[j]].ComponentId, - &clsid); - encode_base85_guid(&clsid,buf); - TRACE("to %s\n",debugstr_w(buf)); - strcatW(data,buf); - } - - size = strlenW(data)*sizeof(WCHAR); - RegSetValueExW(hkey3,package->features[i].Feature,0,REG_SZ, - (LPSTR)data,size); - HeapFree(GetProcessHeap(),0,data); - } - - RegCloseKey(hkey3); - RegCloseKey(hkey2); - - rc = RegCreateKeyW(hkey,szComponents,&hkey2); + rc = MSIREG_OpenComponents(&hkey); if (rc != ERROR_SUCCESS) goto end; + squash_guid(productcode,squished_pc); ui_progress(package,1,COMPONENT_PROGRESS_VALUE,1,0); for (i = 0; i < package->loaded_components; i++) { @@ -3988,16 +3636,16 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package) MSIRECORD * uirow; squash_guid(package->components[i].ComponentId,squished_cc); - rc = RegCreateKeyW(hkey2,squished_cc,&hkey3); + rc = RegCreateKeyW(hkey,squished_cc,&hkey2); if (rc != ERROR_SUCCESS) continue; keypath = resolve_keypath(package,i); if (keypath) { - RegSetValueExW(hkey3,squished_pc,0,REG_SZ,(LPVOID)keypath, + RegSetValueExW(hkey2,squished_pc,0,REG_SZ,(LPVOID)keypath, (strlenW(keypath)+1)*sizeof(WCHAR)); - RegCloseKey(hkey3); + RegCloseKey(hkey2); /* UI stuff */ uirow = MSI_CreateRecord(3); @@ -4013,7 +3661,6 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package) } end: HeapFree(GetProcessHeap(), 0, productcode); - RegCloseKey(hkey2); RegCloseKey(hkey); return rc; } @@ -4077,9 +3724,16 @@ static UINT ACTION_RegisterTypeLibraries(MSIPACKAGE *package) { TRACE("Skipping typelib reg due to disabled component\n"); msiobj_release(&row->hdr); + + package->components[index].Action = + package->components[index].Installed; + continue; } + package->components[index].Action = INSTALLSTATE_LOCAL; + package->components[index].Installed = INSTALLSTATE_LOCAL; + index = get_loaded_file(package,package->components[index].KeyPath); if (index < 0) @@ -4145,7 +3799,7 @@ static UINT register_appid(MSIPACKAGE *package, LPCWSTR clsid, LPCWSTR app ) if (!package) return ERROR_INVALID_HANDLE; - rc = ACTION_OpenQuery(package->db, &view, ExecSeqQuery, clsid); + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, clsid); if (rc != ERROR_SUCCESS) return rc; @@ -4267,7 +3921,9 @@ static UINT ACTION_RegisterClassInfo(MSIPACKAGE *package) static const WCHAR szCLSID[] = { 'C','L','S','I','D',0 }; static const WCHAR szProgID[] = { 'P','r','o','g','I','D',0 }; static const WCHAR szAppID[] = { 'A','p','p','I','D',0 }; + static const WCHAR szSpace[] = {' ',0}; HKEY hkey,hkey2,hkey3; + LPWSTR argument,deformated; if (!package) return ERROR_INVALID_HANDLE; @@ -4298,6 +3954,7 @@ static UINT ACTION_RegisterClassInfo(MSIPACKAGE *package) WCHAR desc[0x100]; DWORD sz; INT index; + DWORD size; rc = MSI_ViewFetch(view,&row); if (rc != ERROR_SUCCESS) @@ -4321,9 +3978,16 @@ static UINT ACTION_RegisterClassInfo(MSIPACKAGE *package) { TRACE("Skipping class reg due to disabled component\n"); msiobj_release(&row->hdr); + + package->components[index].Action = + package->components[index].Installed; + continue; } + package->components[index].Action = INSTALLSTATE_LOCAL; + package->components[index].Installed = INSTALLSTATE_LOCAL; + sz=0x100; MSI_RecordGetStringW(row,1,clsid,&sz); RegCreateKeyW(hkey,clsid,&hkey2); @@ -4345,10 +4009,25 @@ static UINT ACTION_RegisterClassInfo(MSIPACKAGE *package) RegCreateKeyW(hkey2,buffer,&hkey3); index = get_loaded_file(package,package->components[index].KeyPath); - RegSetValueExW(hkey3,NULL,0,REG_SZ, - (LPVOID)package->files[index].TargetPath, - (strlenW(package->files[index].TargetPath)+1) - *sizeof(WCHAR)); + + argument = load_dynamic_stringW(row,11); + size = deformat_string(package,argument,&deformated); + if (deformated) + size+=sizeof(WCHAR); + HeapFree(GetProcessHeap(),0,argument); + size += (strlenW(package->files[index].TargetPath))*sizeof(WCHAR); + + argument = (LPWSTR)HeapAlloc(GetProcessHeap(),0,size+sizeof(WCHAR)); + strcpyW(argument,package->files[index].TargetPath); + if (deformated) + { + strcatW(argument,szSpace); + strcatW(argument,deformated); + } + + RegSetValueExW(hkey3,NULL,0,REG_SZ, (LPVOID)argument, size); + HeapFree(GetProcessHeap(),0,deformated); + HeapFree(GetProcessHeap(),0,argument); RegCloseKey(hkey3); @@ -4376,9 +4055,94 @@ static UINT ACTION_RegisterClassInfo(MSIPACKAGE *package) register_appid(package,buffer,desc); } - RegCloseKey(hkey2); - FIXME("Process the rest of the fields >7\n"); + if (!MSI_RecordIsNull(row,7)) + { + FIXME("Process field 7\n"); + } + + if (!MSI_RecordIsNull(row,8)) + { + static const WCHAR szDefaultIcon[] = + {'D','e','f','a','u','l','t','I','c','o','n',0}; + + LPWSTR FileName = load_dynamic_stringW(row,8); + LPWSTR FilePath; + INT index; + + RegCreateKeyW(hkey2,szDefaultIcon,&hkey3); + build_icon_path(package,FileName,&FilePath); + if (!MSI_RecordIsNull(row,9)) + { + static const WCHAR index_fmt[] = {',','%','i',0}; + WCHAR index_buf[20]; + index = MSI_RecordGetInteger(row,9); + sprintfW(index_buf,index_fmt,index); + size = strlenW(FilePath)+strlenW(index_buf)+1; + size *= sizeof(WCHAR); + HeapReAlloc(GetProcessHeap(),0,FilePath,size); + } + RegSetValueExW(hkey3,NULL,0,REG_SZ,(LPVOID)FilePath, + (strlenW(FilePath)+1) * sizeof(WCHAR)); + HeapFree(GetProcessHeap(),0,FilePath); + HeapFree(GetProcessHeap(),0,FileName); + RegCloseKey(hkey3); + } + + if (!MSI_RecordIsNull(row,10)) + { + static const WCHAR szInproc32[] = { + 'I','n','p','r','o','c','H','a','n','d','l','e','r','3','2',0}; + static const WCHAR szInproc[] = { + 'I','n','p','r','o','c','H','a','n','d','l','e','r',0}; + INT i = MSI_RecordGetInteger(row,10); + if (i != MSI_NULL_INTEGER && i > 0 && i < 4) + { + static const WCHAR ole2[] = {'o','l','e','2','.','d','l','l',0}; + static const WCHAR ole32[] = { + 'o','l','e','3','2','.','d','l','l',0}; + switch(i) + { + case 1: + size = strlenW(ole2) * sizeof(WCHAR); + RegCreateKeyW(hkey2,szInproc,&hkey3); + RegSetValueExW(hkey3,NULL,0,REG_SZ, (LPVOID)ole2, size); + RegCloseKey(hkey3); + break; + case 2: + size = strlenW(ole32) * sizeof(WCHAR); + RegCreateKeyW(hkey2,szInproc32,&hkey3); + RegSetValueExW(hkey3,NULL,0,REG_SZ, (LPVOID)ole32,size); + RegCloseKey(hkey3); + break; + case 3: + size = strlenW(ole2) * sizeof(WCHAR); + RegCreateKeyW(hkey2,szInproc,&hkey3); + RegSetValueExW(hkey3,NULL,0,REG_SZ, (LPVOID)ole2, size); + RegCloseKey(hkey3); + size = strlenW(ole32) * sizeof(WCHAR); + RegCreateKeyW(hkey2,szInproc32,&hkey3); + RegSetValueExW(hkey3,NULL,0,REG_SZ, (LPVOID)ole32,size); + RegCloseKey(hkey3); + break; + } + + } + else + { + RegCreateKeyW(hkey2,szInproc32,&hkey3); + argument = load_dynamic_stringW(row,10); + reduce_to_longfilename(argument); + size = strlenW(argument)*sizeof(WCHAR); + + RegSetValueExW(hkey3,NULL,0,REG_SZ, (LPVOID)argument, size); + HeapFree(GetProcessHeap(),0,argument); + + RegCloseKey(hkey3); + } + } + + RegCloseKey(hkey2); ui_actiondata(package,szRegisterClassInfo,row); @@ -4392,9 +4156,12 @@ end: return rc; } -static UINT register_progid_base(MSIRECORD * row, LPWSTR clsid) +static UINT register_progid_base(MSIPACKAGE* package, MSIRECORD * row, + LPWSTR clsid) { static const WCHAR szCLSID[] = { 'C','L','S','I','D',0 }; + static const WCHAR szDefaultIcon[] = { + 'D','e','f','a','u','l','t','I','c','o','n',0}; HKEY hkey,hkey2; WCHAR buffer[0x100]; DWORD sz; @@ -4432,7 +4199,25 @@ static UINT register_progid_base(MSIRECORD * row, LPWSTR clsid) return ERROR_FUNCTION_FAILED; } if (!MSI_RecordIsNull(row,5)) - FIXME ("UNHANDLED icon in Progid\n"); + { + INT index = MSI_RecordGetInteger(row,6); + LPWSTR FileName = load_dynamic_stringW(row,5); + LPWSTR FilePath,IconPath; + static const WCHAR fmt[] = {'%','s',',','%','i',0}; + + RegCreateKeyW(hkey,szDefaultIcon,&hkey2); + build_icon_path(package,FileName,&FilePath); + + IconPath = HeapAlloc(GetProcessHeap(),0,(strlenW(FilePath)+5)* + sizeof(WCHAR)); + + sprintfW(IconPath,fmt,FilePath,index); + RegSetValueExW(hkey2,NULL,0,REG_SZ,(LPVOID)IconPath, + (strlenW(IconPath)+1) * sizeof(WCHAR)); + HeapFree(GetProcessHeap(),0,FilePath); + HeapFree(GetProcessHeap(),0,FileName); + RegCloseKey(hkey2); + } return ERROR_SUCCESS; } @@ -4452,7 +4237,7 @@ static UINT register_parent_progid(MSIPACKAGE *package, LPCWSTR parent, if (!package) return ERROR_INVALID_HANDLE; - rc = ACTION_OpenQuery(package->db, &view, Query_t, parent); + rc = MSI_OpenQuery(package->db, &view, Query_t, parent); if (rc != ERROR_SUCCESS) return rc; @@ -4485,13 +4270,15 @@ static UINT register_progid(MSIPACKAGE *package, MSIRECORD * row, LPWSTR clsid) UINT rc = ERROR_SUCCESS; if (MSI_RecordIsNull(row,2)) - rc = register_progid_base(row,clsid); + rc = register_progid_base(package,row,clsid); else { WCHAR buffer[0x1000]; DWORD sz, disp; HKEY hkey,hkey2; static const WCHAR szCLSID[] = { 'C','L','S','I','D',0 }; + static const WCHAR szDefaultIcon[] = { + 'D','e','f','a','u','l','t','I','c','o','n',0}; /* check if already registered */ sz = 0x100; @@ -4504,6 +4291,11 @@ static UINT register_progid(MSIPACKAGE *package, MSIRECORD * row, LPWSTR clsid) RegCloseKey(hkey); return rc; } + + sz = 0x100; + MSI_RecordGetStringW(row,2,buffer,&sz); + rc = register_parent_progid(package,buffer,clsid); + /* clsid is same as parent */ RegCreateKeyW(hkey,szCLSID,&hkey2); RegSetValueExW(hkey2,NULL,0,REG_SZ,(LPVOID)clsid, (strlenW(clsid)+1) * @@ -4511,9 +4303,6 @@ static UINT register_progid(MSIPACKAGE *package, MSIRECORD * row, LPWSTR clsid) RegCloseKey(hkey2); - sz = 0x100; - MSI_RecordGetStringW(row,2,buffer,&sz); - rc = register_parent_progid(package,buffer,clsid); if (!MSI_RecordIsNull(row,4)) { @@ -4524,7 +4313,17 @@ static UINT register_progid(MSIPACKAGE *package, MSIRECORD * row, LPWSTR clsid) } if (!MSI_RecordIsNull(row,5)) - FIXME ("UNHANDLED icon in Progid\n"); + { + LPWSTR FileName = load_dynamic_stringW(row,5); + LPWSTR FilePath; + RegCreateKeyW(hkey,szDefaultIcon,&hkey2); + build_icon_path(package,FileName,&FilePath); + RegSetValueExW(hkey2,NULL,0,REG_SZ,(LPVOID)FilePath, + (strlenW(FilePath)+1) * sizeof(WCHAR)); + HeapFree(GetProcessHeap(),0,FilePath); + HeapFree(GetProcessHeap(),0,FileName); + RegCloseKey(hkey2); + } RegCloseKey(hkey); } @@ -4681,9 +4480,16 @@ static UINT ACTION_CreateShortcuts(MSIPACKAGE *package) { TRACE("Skipping shortcut creation due to disabled component\n"); msiobj_release(&row->hdr); + + package->components[index].Action = + package->components[index].Installed; + continue; } + package->components[index].Action = INSTALLSTATE_LOCAL; + package->components[index].Installed = INSTALLSTATE_LOCAL; + ui_actiondata(package,szCreateShortcuts,row); res = CoCreateInstance( &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, @@ -4821,20 +4627,33 @@ static UINT ACTION_PublishProduct(MSIPACKAGE *package) 'S','E','L','E','C','T',' ','*',' ', 'f','r','o','m',' ','I','c','o','n',0}; DWORD sz; + /* for registry stuff */ + LPWSTR productcode; + HKEY hkey=0; + HKEY hukey=0; + static const WCHAR szProductCode[]= + {'P','r','o','d','u','c','t','C','o','d','e',0}; + static const WCHAR szProductName[] = { + 'P','r','o','d','u','c','t','N','a','m','e',0}; + static const WCHAR szPackageCode[] = { + 'P','a','c','k','a','g','e','C','o','d','e',0}; + LPWSTR buffer; + DWORD size; + MSIHANDLE hDb, hSumInfo; if (!package) return ERROR_INVALID_HANDLE; rc = MSI_DatabaseOpenViewW(package->db, Query, &view); if (rc != ERROR_SUCCESS) - return ERROR_SUCCESS; + goto next; rc = MSI_ViewExecute(view, 0); if (rc != ERROR_SUCCESS) { MSI_ViewClose(view); msiobj_release(&view->hdr); - return rc; + goto next; } while (1) @@ -4898,8 +4717,912 @@ static UINT ACTION_PublishProduct(MSIPACKAGE *package) } MSI_ViewClose(view); msiobj_release(&view->hdr); - return rc; +next: + /* ok there is a lot more done here but i need to figure out what */ + productcode = load_dynamic_property(package,szProductCode,&rc); + if (!productcode) + return rc; + + rc = MSIREG_OpenProductsKey(productcode,&hkey,TRUE); + if (rc != ERROR_SUCCESS) + goto end; + + rc = MSIREG_OpenUserProductsKey(productcode,&hukey,TRUE); + if (rc != ERROR_SUCCESS) + goto end; + + + buffer = load_dynamic_property(package,szProductName,NULL); + size = strlenW(buffer)*sizeof(WCHAR); + RegSetValueExW(hukey,szProductName,0,REG_SZ, (LPSTR)buffer,size); + HeapFree(GetProcessHeap(),0,buffer); + FIXME("Need to write more keys to the user registry\n"); + + hDb= msiobj_findhandle( &package->db->hdr ); + rc = MsiGetSummaryInformationW(hDb, NULL, 0, &hSumInfo); + if (rc == ERROR_SUCCESS) + { + WCHAR guidbuffer[0x200]; + size = 0x200; + rc = MsiSummaryInfoGetPropertyW(hSumInfo, 8, NULL, NULL, NULL, + guidbuffer, &size); + if (rc == ERROR_SUCCESS) + { + WCHAR squashed[GUID_SIZE]; + /* for now we only care about the first guid */ + LPWSTR ptr = strchrW(guidbuffer,';'); + if (ptr) *ptr = 0; + squash_guid(guidbuffer,squashed); + size = strlenW(guidbuffer)*sizeof(WCHAR); + RegSetValueExW(hukey,szPackageCode,0,REG_SZ, (LPSTR)guidbuffer, + size); + + } + else + { + ERR("Unable to query Revision_Number... \n"); + rc = ERROR_SUCCESS; + } + MsiCloseHandle(hSumInfo); + } + else + { + ERR("Unable to open Summary Information\n"); + rc = ERROR_SUCCESS; + } + +end: + + HeapFree(GetProcessHeap(),0,productcode); + RegCloseKey(hkey); + RegCloseKey(hukey); + + return rc; +} + +static UINT ACTION_WriteIniValues(MSIPACKAGE *package) +{ + UINT rc; + MSIQUERY * view; + MSIRECORD * row = 0; + static const WCHAR ExecSeqQuery[] = {'S','e','l','e','c','t',' ','*', + ' ','f','r','o','m',' ','I','n','i','F','i','l','e',0}; + static const WCHAR szWindowsFolder[] = + {'W','i','n','d','o','w','s','F','o','l','d','e','r',0}; + + rc = MSI_DatabaseOpenViewW(package->db, ExecSeqQuery, &view); + if (rc != ERROR_SUCCESS) + { + TRACE("no IniFile table\n"); + return ERROR_SUCCESS; + } + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; + } + + while (1) + { + LPWSTR component,filename,dirproperty,section,key,value,identifier; + LPWSTR deformated_section, deformated_key, deformated_value; + LPWSTR folder, fullname = NULL; + MSIRECORD * uirow; + INT component_index,action; + + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + rc = ERROR_SUCCESS; + break; + } + + component = load_dynamic_stringW(row, 8); + component_index = get_loaded_component(package,component); + HeapFree(GetProcessHeap(),0,component); + + if (package->components[component_index].ActionRequest != + INSTALLSTATE_LOCAL) + { + TRACE("Skipping ini file due to disabled component\n"); + msiobj_release(&row->hdr); + + package->components[component_index].Action = + package->components[component_index].Installed; + + continue; + } + + package->components[component_index].Action = INSTALLSTATE_LOCAL; + package->components[component_index].Installed = INSTALLSTATE_LOCAL; + + identifier = load_dynamic_stringW(row,1); + filename = load_dynamic_stringW(row,2); + dirproperty = load_dynamic_stringW(row,3); + section = load_dynamic_stringW(row,4); + key = load_dynamic_stringW(row,5); + value = load_dynamic_stringW(row,6); + action = MSI_RecordGetInteger(row,7); + + deformat_string(package,section,&deformated_section); + deformat_string(package,key,&deformated_key); + deformat_string(package,value,&deformated_value); + + if (dirproperty) + { + folder = resolve_folder(package, dirproperty, FALSE, FALSE, NULL); + if (!folder) + folder = load_dynamic_property(package,dirproperty,NULL); + } + else + folder = load_dynamic_property(package, szWindowsFolder, NULL); + + if (!folder) + { + ERR("Unable to resolve folder! (%s)\n",debugstr_w(dirproperty)); + goto cleanup; + } + + fullname = build_directory_name(3, folder, filename, NULL); + + if (action == 0) + { + TRACE("Adding value %s to section %s in %s\n", + debugstr_w(deformated_key), debugstr_w(deformated_section), + debugstr_w(fullname)); + WritePrivateProfileStringW(deformated_section, deformated_key, + deformated_value, fullname); + } + else if (action == 1) + { + WCHAR returned[10]; + GetPrivateProfileStringW(deformated_section, deformated_key, NULL, + returned, 10, fullname); + if (returned[0] == 0) + { + TRACE("Adding value %s to section %s in %s\n", + debugstr_w(deformated_key), debugstr_w(deformated_section), + debugstr_w(fullname)); + + WritePrivateProfileStringW(deformated_section, deformated_key, + deformated_value, fullname); + } + } + else if (action == 3) + { + FIXME("Append to existing section not yet implemented\n"); + } + + uirow = MSI_CreateRecord(4); + MSI_RecordSetStringW(uirow,1,identifier); + MSI_RecordSetStringW(uirow,2,deformated_section); + MSI_RecordSetStringW(uirow,3,deformated_key); + MSI_RecordSetStringW(uirow,4,deformated_value); + ui_actiondata(package,szWriteIniValues,uirow); + msiobj_release( &uirow->hdr ); +cleanup: + HeapFree(GetProcessHeap(),0,identifier); + HeapFree(GetProcessHeap(),0,fullname); + HeapFree(GetProcessHeap(),0,filename); + HeapFree(GetProcessHeap(),0,key); + HeapFree(GetProcessHeap(),0,value); + HeapFree(GetProcessHeap(),0,section); + HeapFree(GetProcessHeap(),0,dirproperty); + HeapFree(GetProcessHeap(),0,folder); + HeapFree(GetProcessHeap(),0,deformated_key); + HeapFree(GetProcessHeap(),0,deformated_value); + HeapFree(GetProcessHeap(),0,deformated_section); + msiobj_release(&row->hdr); + } + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; +} + +static UINT ACTION_SelfRegModules(MSIPACKAGE *package) +{ + UINT rc; + MSIQUERY * view; + MSIRECORD * row = 0; + static const WCHAR ExecSeqQuery[] = {'S','e','l','e','c','t',' ','*',' ', +'f','r','o','m',' ','S','e','l','f','R','e','g',0}; + + static const WCHAR ExeStr[] = { +'r','e','g','s','v','r','3','2','.','e','x','e',' ','/','s',' ',0}; + STARTUPINFOW si; + PROCESS_INFORMATION info; + BOOL brc; + + memset(&si,0,sizeof(STARTUPINFOW)); + + rc = MSI_DatabaseOpenViewW(package->db, ExecSeqQuery, &view); + if (rc != ERROR_SUCCESS) + { + TRACE("no SelfReg table\n"); + return ERROR_SUCCESS; + } + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; + } + + while (1) + { + LPWSTR filename; + INT index; + DWORD len; + + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + rc = ERROR_SUCCESS; + break; + } + + filename = load_dynamic_stringW(row,1); + index = get_loaded_file(package,filename); + + if (index < 0) + { + ERR("Unable to find file id %s\n",debugstr_w(filename)); + HeapFree(GetProcessHeap(),0,filename); + msiobj_release(&row->hdr); + continue; + } + HeapFree(GetProcessHeap(),0,filename); + + len = strlenW(ExeStr); + len += strlenW(package->files[index].TargetPath); + len +=2; + + filename = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); + strcpyW(filename,ExeStr); + strcatW(filename,package->files[index].TargetPath); + + TRACE("Registering %s\n",debugstr_w(filename)); + brc = CreateProcessW(NULL, filename, NULL, NULL, FALSE, 0, NULL, + c_collen, &si, &info); + + if (brc) + msi_dialog_check_messages(package->dialog, info.hProcess); + + HeapFree(GetProcessHeap(),0,filename); + msiobj_release(&row->hdr); + } + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; +} + +static UINT ACTION_PublishFeatures(MSIPACKAGE *package) +{ + LPWSTR productcode; + UINT rc; + DWORD i; + HKEY hkey=0; + HKEY hukey=0; + static const WCHAR szProductCode[]= + {'P','r','o','d','u','c','t','C','o','d','e',0}; + + if (!package) + return ERROR_INVALID_HANDLE; + + productcode = load_dynamic_property(package,szProductCode,&rc); + if (!productcode) + return rc; + + rc = MSIREG_OpenFeaturesKey(productcode,&hkey,TRUE); + if (rc != ERROR_SUCCESS) + goto end; + + rc = MSIREG_OpenUserFeaturesKey(productcode,&hukey,TRUE); + if (rc != ERROR_SUCCESS) + goto end; + + /* here the guids are base 85 encoded */ + for (i = 0; i < package->loaded_features; i++) + { + LPWSTR data = NULL; + GUID clsid; + int j; + INT size; + + size = package->features[i].ComponentCount*21; + size +=1; + if (package->features[i].Feature_Parent[0]) + size += strlenW(package->features[i].Feature_Parent)+2; + + data = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR)); + + data[0] = 0; + for (j = 0; j < package->features[i].ComponentCount; j++) + { + WCHAR buf[21]; + memset(buf,0,sizeof(buf)); + TRACE("From %s\n",debugstr_w(package->components + [package->features[i].Components[j]].ComponentId)); + CLSIDFromString(package->components + [package->features[i].Components[j]].ComponentId, + &clsid); + encode_base85_guid(&clsid,buf); + TRACE("to %s\n",debugstr_w(buf)); + strcatW(data,buf); + } + if (package->features[i].Feature_Parent[0]) + { + static const WCHAR sep[] = {'\2',0}; + strcatW(data,sep); + strcatW(data,package->features[i].Feature_Parent); + } + + size = (strlenW(data)+1)*sizeof(WCHAR); + RegSetValueExW(hkey,package->features[i].Feature,0,REG_SZ, + (LPSTR)data,size); + HeapFree(GetProcessHeap(),0,data); + + size = strlenW(package->features[i].Feature_Parent)*sizeof(WCHAR); + RegSetValueExW(hukey,package->features[i].Feature,0,REG_SZ, + (LPSTR)package->features[i].Feature_Parent,size); + } + +end: + RegCloseKey(hkey); + RegCloseKey(hukey); + HeapFree(GetProcessHeap(), 0, productcode); + return rc; +} + +static UINT ACTION_RegisterProduct(MSIPACKAGE *package) +{ + static const WCHAR szProductCode[]= + {'P','r','o','d','u','c','t','C','o','d','e',0}; + HKEY hkey=0; + LPWSTR buffer; + LPWSTR productcode; + UINT rc,i; + DWORD size; + static WCHAR szNONE[] = {0}; + static const WCHAR szWindowsInstaler[] = + {'W','i','n','d','o','w','s','I','n','s','t','a','l','l','e','r',0}; + static const WCHAR szPropKeys[][80] = + { +{'A','R','P','A','U','T','H','O','R','I','Z','E','D','C','D','F','P','R','E','F','I','X',0}, +{'A','R','P','C','O','N','T','A','C','T'}, +{'A','R','P','C','O','M','M','E','N','T','S',0}, +{'P','r','o','d','u','c','t','N','a','m','e',0}, +{'P','r','o','d','u','c','t','V','e','r','s','i','o','n',0}, +{'A','R','P','H','E','L','P','L','I','N','K',0}, +{'A','R','P','H','E','L','P','T','E','L','E','P','H','O','N','E',0}, +{'A','R','P','I','N','S','T','A','L','L','L','O','C','A','T','I','O','N',0}, +{'S','O','U','R','C','E','D','I','R',0}, +{'M','a','n','u','f','a','c','t','u','r','e','r',0}, +{'A','R','P','R','E','A','D','M','E',0}, +{'A','R','P','S','I','Z','E',0}, +{'A','R','P','U','R','L','I','N','F','O','A','B','O','U','T',0}, +{'A','R','P','U','R','L','U','P','D','A','T','E','I','N','F','O',0}, +{0}, + }; + + static const WCHAR szRegKeys[][80] = + { +{'A','u','t','h','o','r','i','z','e','d','C','D','F','P','r','e','f','i','x',0}, +{'C','o','n','t','a','c','t',0}, +{'C','o','m','m','e','n','t','s',0}, +{'D','i','s','p','l','a','y','N','a','m','e',0}, +{'D','i','s','p','l','a','y','V','e','r','s','i','o','n',0}, +{'H','e','l','p','L','i','n','k',0}, +{'H','e','l','p','T','e','l','e','p','h','o','n','e',0}, +{'I','n','s','t','a','l','l','L','o','c','a','t','i','o','n',0}, +{'I','n','s','t','a','l','l','S','o','u','r','c','e',0}, +{'P','u','b','l','i','s','h','e','r',0}, +{'R','e','a','d','m','e',0}, +{'S','i','z','e',0}, +{'U','R','L','I','n','f','o','A','b','o','u','t',0}, +{'U','R','L','U','p','d','a','t','e','I','n','f','o',0}, +{0}, + }; + + static const WCHAR path[] = { + 'C',':','\\','W','i','n','d','o','w','s','\\', + 'I','n','s','t','a','l','l','e','r','\\'}; + static const WCHAR fmt[] = { + 'C',':','\\','W','i','n','d','o','w','s','\\', + 'I','n','s','t','a','l','l','e','r','\\', + '%','x','.','m','s','i',0}; + static const WCHAR szLocalPackage[]= + {'L','o','c','a','l','P','a','c','k','a','g','e',0}; + WCHAR packagefile[MAX_PATH]; + INT num,start; + + if (!package) + return ERROR_INVALID_HANDLE; + + productcode = load_dynamic_property(package,szProductCode,&rc); + if (!productcode) + return rc; + + rc = MSIREG_OpenUninstallKey(productcode,&hkey,TRUE); + if (rc != ERROR_SUCCESS) + goto end; + + /* dump all the info i can grab */ + FIXME("Flesh out more information \n"); + + i = 0; + while (szPropKeys[i][0]!=0) + { + buffer = load_dynamic_property(package,szPropKeys[i],&rc); + if (rc != ERROR_SUCCESS) + buffer = szNONE; + size = strlenW(buffer)*sizeof(WCHAR); + RegSetValueExW(hkey,szRegKeys[i],0,REG_SZ,(LPSTR)buffer,size); + i++; + } + + rc = 0x1; + size = sizeof(rc); + RegSetValueExW(hkey,szWindowsInstaler,0,REG_DWORD,(LPSTR)&rc,size); + + /* copy the package locally */ + num = GetTickCount() & 0xffff; + if (!num) + num = 1; + start = num; + sprintfW(packagefile,fmt,num); + do + { + HANDLE handle = CreateFileW(packagefile,GENERIC_WRITE, 0, NULL, + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0 ); + if (handle != INVALID_HANDLE_VALUE) + { + CloseHandle(handle); + break; + } + if (GetLastError() != ERROR_FILE_EXISTS && + GetLastError() != ERROR_SHARING_VIOLATION) + break; + if (!(++num & 0xffff)) num = 1; + sprintfW(packagefile,fmt,num); + } while (num != start); + + create_full_pathW(path); + TRACE("Copying to local package %s\n",debugstr_w(packagefile)); + CopyFileW(package->PackagePath,packagefile,FALSE); + size = strlenW(packagefile)*sizeof(WCHAR); + RegSetValueExW(hkey,szLocalPackage,0,REG_SZ,(LPSTR)packagefile,size); + +end: + HeapFree(GetProcessHeap(),0,productcode); + RegCloseKey(hkey); + + return ERROR_SUCCESS; +} + +static UINT ACTION_InstallExecute(MSIPACKAGE *package) +{ + int i; + if (!package) + return ERROR_INVALID_HANDLE; + + for (i = 0; i < package->DeferredActionCount; i++) + { + LPWSTR action; + action = package->DeferredAction[i]; + ui_actionstart(package, action); + TRACE("Executing Action (%s)\n",debugstr_w(action)); + ACTION_CustomAction(package,action,TRUE); + HeapFree(GetProcessHeap(),0,package->DeferredAction[i]); + } + HeapFree(GetProcessHeap(),0,package->DeferredAction); + + package->DeferredActionCount = 0; + package->DeferredAction = NULL; + + return ERROR_SUCCESS; +} + +static UINT ACTION_InstallFinalize(MSIPACKAGE *package) +{ + int i; + if (!package) + return ERROR_INVALID_HANDLE; + + /* first do the same as an InstallExecute */ + ACTION_InstallExecute(package); + + /* then handle Commit Actions */ + for (i = 0; i < package->CommitActionCount; i++) + { + LPWSTR action; + action = package->CommitAction[i]; + ui_actionstart(package, action); + TRACE("Executing Commit Action (%s)\n",debugstr_w(action)); + ACTION_CustomAction(package,action,TRUE); + HeapFree(GetProcessHeap(),0,package->CommitAction[i]); + } + HeapFree(GetProcessHeap(),0,package->CommitAction); + + package->CommitActionCount = 0; + package->CommitAction = NULL; + + return ERROR_SUCCESS; +} + +static UINT ACTION_ForceReboot(MSIPACKAGE *package) +{ + static const WCHAR RunOnce[] = { + 'S','o','f','t','w','a','r','e','\\', + 'M','i','c','r','o','s','o','f','t','\\', + 'W','i','n','d','o','w','s','\\', + 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', + 'R','u','n','O','n','c','e'}; + static const WCHAR InstallRunOnce[] = { + 'S','o','f','t','w','a','r','e','\\', + 'M','i','c','r','o','s','o','f','t','\\', + 'W','i','n','d','o','w','s','\\', + 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', + 'I','n','s','t','a','l','l','e','r','\\', + 'R','u','n','O','n','c','e','E','n','t','r','i','e','s'}; + + static const WCHAR msiexec_fmt[] = { + 'C',':','\\','W','i','n','d','o','w','s','\\','S','y','s','t','e','m', + '\\','M','s','i','E','x','e','c','.','e','x','e',' ','/','@',' ', + '\"','%','s','\"',0}; + static const WCHAR install_fmt[] = { + '/','I',' ','\"','%','s','\"',' ', + 'A','F','T','E','R','R','E','B','O','O','T','=','1',' ', + 'R','U','N','O','N','C','E','E','N','T','R','Y','=','\"','%','s','\"',0}; + WCHAR buffer[256]; + HKEY hkey,hukey; + LPWSTR productcode; + WCHAR squished_pc[100]; + INT rc; + DWORD size; + static const WCHAR szProductCode[]= + {'P','r','o','d','u','c','t','C','o','d','e',0}; + static const WCHAR szLUS[] = { + 'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0}; + static const WCHAR szSourceList[] = { + 'S','o','u','r','c','e','L','i','s','t',0}; + static const WCHAR szPackageName[] = { + 'P','a','c','k','a','g','e','N','a','m','e',0}; + + if (!package) + return ERROR_INVALID_HANDLE; + + productcode = load_dynamic_property(package,szProductCode,&rc); + if (!productcode) + return rc; + + squash_guid(productcode,squished_pc); + + RegCreateKeyW(HKEY_LOCAL_MACHINE,RunOnce,&hkey); + sprintfW(buffer,msiexec_fmt,squished_pc); + + size = strlenW(buffer)*sizeof(WCHAR); + RegSetValueExW(hkey,squished_pc,0,REG_SZ,(LPSTR)buffer,size); + RegCloseKey(hkey); + + TRACE("Reboot command %s\n",debugstr_w(buffer)); + + RegCreateKeyW(HKEY_LOCAL_MACHINE,InstallRunOnce,&hkey); + sprintfW(buffer,install_fmt,productcode,squished_pc); + RegSetValueExW(hkey,squished_pc,0,REG_SZ,(LPSTR)buffer,size); + RegCloseKey(hkey); + + rc = MSIREG_OpenUserProductsKey(productcode,&hukey,TRUE); + if (rc == ERROR_SUCCESS) + { + HKEY hukey2; + LPWSTR buf; + RegCreateKeyW(hukey, szSourceList, &hukey2); + buf = load_dynamic_property(package,cszSourceDir,NULL); + size = strlenW(buf)*sizeof(WCHAR); + RegSetValueExW(hukey2,szLUS,0,REG_SZ,(LPSTR)buf,size); + HeapFree(GetProcessHeap(),0,buf); + + buf = strrchrW(package->PackagePath,'\\'); + if (buf) + { + buf++; + size = strlenW(buf)*sizeof(WCHAR); + RegSetValueExW(hukey2,szPackageName,0,REG_SZ,(LPSTR)buf,size); + } + + RegCloseKey(hukey2); + } + HeapFree(GetProcessHeap(),0,productcode); + + return ERROR_INSTALL_SUSPEND; +} + +UINT ACTION_ResolveSource(MSIPACKAGE* package) +{ + /* + * we are currently doing what should be done here in the top level Install + * however for Adminastrative and uninstalls this step will be needed + */ + return ERROR_SUCCESS; +} + + +static UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package) +{ + UINT rc; + MSIQUERY * view; + MSIRECORD * row = 0; + static const WCHAR ExecSeqQuery[] = { + 'S','E','L','E','C','T',' ','*',' ', + 'f','r','o','m',' ','E','x','t','e','n','s','i','o','n',0}; + static const WCHAR szContentType[] = +{ 'C','o','n','t','e','n','t',' ','T','y','p','e',0 }; + HKEY hkey; + + if (!package) + return ERROR_INVALID_HANDLE; + + rc = MSI_DatabaseOpenViewW(package->db, ExecSeqQuery, &view); + if (rc != ERROR_SUCCESS) + { + rc = ERROR_SUCCESS; + goto end; + } + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + goto end; + } + + while (1) + { + WCHAR buffer[0x100]; + WCHAR extension[257]; + LPWSTR exten; + DWORD sz; + INT index; + + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + rc = ERROR_SUCCESS; + break; + } + + sz=0x100; + MSI_RecordGetStringW(row,2,buffer,&sz); + + index = get_loaded_component(package,buffer); + + if (index < 0) + { + msiobj_release(&row->hdr); + continue; + } + + if (package->components[index].ActionRequest != INSTALLSTATE_LOCAL) + { + TRACE("Skipping extension reg due to disabled component\n"); + msiobj_release(&row->hdr); + + package->components[index].Action = + package->components[index].Installed; + + continue; + } + + package->components[index].Action = INSTALLSTATE_LOCAL; + package->components[index].Installed = INSTALLSTATE_LOCAL; + + exten = load_dynamic_stringW(row,1); + extension[0] = '.'; + extension[1] = 0; + strcatW(extension,exten); + HeapFree(GetProcessHeap(),0,exten); + + RegCreateKeyW(HKEY_CLASSES_ROOT,extension,&hkey); + + if (!MSI_RecordIsNull(row,4)) + { + LPWSTR mime = load_dynamic_stringW(row,4); + RegSetValueExW(hkey,szContentType,0,REG_SZ,(LPVOID)mime, + (strlenW(mime)+1)*sizeof(WCHAR)); + HeapFree(GetProcessHeap(),0,mime); + } + + if (!MSI_RecordIsNull(row,3)) + { + static const WCHAR szSN[] = + {'\\','S','h','e','l','l','N','e','w',0}; + HKEY hkey2; + LPWSTR newkey; + LPWSTR progid= load_dynamic_stringW(row,3); + + RegSetValueExW(hkey,NULL,0,REG_SZ,(LPVOID)progid, + (strlenW(progid)+1)*sizeof(WCHAR)); + + newkey = HeapAlloc(GetProcessHeap(),0, + (strlenW(progid)+strlenW(szSN)+1) * sizeof(WCHAR)); + + strcpyW(newkey,progid); + strcatW(newkey,szSN); + RegCreateKeyW(hkey,newkey,&hkey2); + RegCloseKey(hkey2); + + HeapFree(GetProcessHeap(),0,progid); + HeapFree(GetProcessHeap(),0,newkey); + } + + + RegCloseKey(hkey); + + ui_actiondata(package,szRegisterExtensionInfo,row); + + msiobj_release(&row->hdr); + } + MSI_ViewClose(view); + msiobj_release(&view->hdr); + +end: + return rc; +} + +static UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package) +{ + UINT rc; + MSIQUERY * view; + MSIRECORD * row = 0; + static const WCHAR ExecSeqQuery[] = { + 'S','E','L','E','C','T',' ','*',' ', + 'f','r','o','m',' ','M','I','M','E',0}; + static const WCHAR szExten[] = +{ 'E','x','t','e','n','s','i','o','n',0 }; + HKEY hkey; + + if (!package) + return ERROR_INVALID_HANDLE; + + rc = MSI_DatabaseOpenViewW(package->db, ExecSeqQuery, &view); + if (rc != ERROR_SUCCESS) + { + rc = ERROR_SUCCESS; + goto end; + } + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + goto end; + } + + while (1) + { + WCHAR extension[257]; + LPWSTR exten; + LPWSTR mime; + static const WCHAR fmt[] = +{'M','I','M','E','\\', +'D','a','t','a','b','a','s','e','\\', +'C','o','n','t','e','n','t',' ','T','y','p','e','\\', +'%','s',0}; + LPWSTR key; + + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + rc = ERROR_SUCCESS; + break; + } + + mime = load_dynamic_stringW(row,1); + exten = load_dynamic_stringW(row,2); + extension[0] = '.'; + extension[1] = 0; + strcatW(extension,exten); + HeapFree(GetProcessHeap(),0,exten); + + key = HeapAlloc(GetProcessHeap(),0,(strlenW(mime)+strlenW(fmt)+1) * + sizeof(WCHAR)); + sprintfW(key,fmt,mime); + RegCreateKeyW(HKEY_CLASSES_ROOT,key,&hkey); + RegSetValueExW(hkey,szExten,0,REG_SZ,(LPVOID)extension, + (strlenW(extension)+1)*sizeof(WCHAR)); + + HeapFree(GetProcessHeap(),0,mime); + HeapFree(GetProcessHeap(),0,key); + + if (!MSI_RecordIsNull(row,3)) + { + FIXME("Handle non null for field 3\n"); + } + + RegCloseKey(hkey); + + ui_actiondata(package,szRegisterMIMEInfo,row); + + msiobj_release(&row->hdr); + } + MSI_ViewClose(view); + msiobj_release(&view->hdr); + +end: + return rc; +} + +static UINT ACTION_RegisterUser(MSIPACKAGE *package) +{ + static const WCHAR szProductCode[]= + {'P','r','o','d','u','c','t','C','o','d','e',0}; + static const WCHAR szProductID[]= + {'P','r','o','d','u','c','t','I','D',0}; + HKEY hkey=0; + LPWSTR buffer; + LPWSTR productcode; + LPWSTR productid; + UINT rc,i; + DWORD size; + + static const WCHAR szPropKeys[][80] = + { +{'P','r','o','d','u','c','t','I','D',0}, +{'U','S','E','R','N','A','M','E',0}, +{'C','O','M','P','A','N','Y','N','A','M','E',0}, +{0}, + }; + + static const WCHAR szRegKeys[][80] = + { +{'P','r','o','d','u','c','t','I','D',0}, +{'R','e','g','O','w','n','e','r',0}, +{'R','e','g','C','o','m','p','a','n','y',0}, +{0}, + }; + + if (!package) + return ERROR_INVALID_HANDLE; + + productid = load_dynamic_property(package,szProductID,&rc); + if (!productid) + return ERROR_SUCCESS; + + productcode = load_dynamic_property(package,szProductCode,&rc); + if (!productcode) + return rc; + + rc = MSIREG_OpenUninstallKey(productcode,&hkey,TRUE); + if (rc != ERROR_SUCCESS) + goto end; + + i = 0; + while (szPropKeys[i][0]!=0) + { + buffer = load_dynamic_property(package,szPropKeys[i],&rc); + if (rc == ERROR_SUCCESS) + { + size = strlenW(buffer)*sizeof(WCHAR); + RegSetValueExW(hkey,szRegKeys[i],0,REG_SZ,(LPSTR)buffer,size); + } + i++; + } + +end: + HeapFree(GetProcessHeap(),0,productcode); + HeapFree(GetProcessHeap(),0,productid); + RegCloseKey(hkey); + + return ERROR_SUCCESS; } /* Msi functions that seem appropriate here */ @@ -5108,7 +5831,6 @@ UINT MSI_SetTargetPathW(MSIPACKAGE *package, LPCWSTR szFolder, DWORD i; LPWSTR path = NULL; LPWSTR path2 = NULL; - INT len; MSIFOLDER *folder; TRACE("(%p %s %s)\n",package, debugstr_w(szFolder),debugstr_w(szFolderPath)); @@ -5127,22 +5849,10 @@ UINT MSI_SetTargetPathW(MSIPACKAGE *package, LPCWSTR szFolder, if (!path) return ERROR_INVALID_PARAMETER; - if (folder->Property) - HeapFree(GetProcessHeap(),0,folder->Property); + HeapFree(GetProcessHeap(),0,folder->Property); + folder->Property = build_directory_name(2, szFolderPath, NULL); - len = strlenW(szFolderPath); - - if (szFolderPath[len-1]!='\\') - { - len +=2; - folder->Property = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); - strcpyW(folder->Property,szFolderPath); - strcatW(folder->Property,cszbs); - } - else - folder->Property = dupstrW(szFolderPath); - - if (strcmpiW(path, szFolderPath) == 0) + if (strcmpiW(path, folder->Property) == 0) { /* * Resolved Target has not really changed, so just @@ -5157,8 +5867,7 @@ UINT MSI_SetTargetPathW(MSIPACKAGE *package, LPCWSTR szFolder, { for (i = 0; i < package->loaded_folders; i++) { - if (package->folders[i].ResolvedTarget) - HeapFree(GetProcessHeap(),0,package->folders[i].ResolvedTarget); + HeapFree(GetProcessHeap(),0,package->folders[i].ResolvedTarget); package->folders[i].ResolvedTarget=NULL; } @@ -5205,8 +5914,8 @@ UINT WINAPI MsiSetTargetPathW(MSIHANDLE hInstall, LPCWSTR szFolder, * MSIRUNMODE_REBOOTATEND We need to reboot after installation completed * MSIRUNMODE_REBOOTNOW We need to reboot to continue the installation * MSIRUNMODE_CABINET Files from cabinet are installed - * MSIRUNMODE_SOURCESHORTNAMES Long names in source files is supressed - * MSIRUNMODE_TARGETSHORTNAMES Long names in destination files is supressed + * MSIRUNMODE_SOURCESHORTNAMES Long names in source files is suppressed + * MSIRUNMODE_TARGETSHORTNAMES Long names in destination files is suppressed * MSIRUNMODE_RESERVED11 Reserved * MSIRUNMODE_WINDOWS9X Running under Windows95/98 * MSIRUNMODE_ZAWENABLED Demand installation is supported @@ -5267,6 +5976,7 @@ UINT WINAPI MsiSetFeatureStateW(MSIHANDLE hInstall, LPCWSTR szFeature, return ERROR_UNKNOWN_FEATURE; package->features[index].ActionRequest= iState; + ACTION_UpdateComponentStates(package,szFeature); return ERROR_SUCCESS; } @@ -5354,7 +6064,10 @@ piAction); *piInstalled = package->components[index].Installed; if (piAction) - *piInstalled = package->components[index].Action; + *piAction = package->components[index].Action; + + TRACE("states (%i, %i)\n", +(piInstalled)?*piInstalled:-1,(piAction)?*piAction:-1); return ERROR_SUCCESS; } @@ -5384,21 +6097,21 @@ static UINT ACTION_Template(MSIPACKAGE *package) MSIRECORD * row = 0; static const WCHAR ExecSeqQuery[] = {0}; - rc = MsiDatabaseOpenViewW(package->db, ExecSeqQuery, &view); + rc = MSI_DatabaseOpenViewW(package->db, ExecSeqQuery, &view); if (rc != ERROR_SUCCESS) return rc; - rc = MsiViewExecute(view, 0); + rc = MSI_ViewExecute(view, 0); if (rc != ERROR_SUCCESS) { - MsiViewClose(view); + MSI_ViewClose(view); msiobj_release(&view->hdr); return rc; } while (1) { - rc = MsiViewFetch(view,&row); + rc = MSI_ViewFetch(view,&row); if (rc != ERROR_SUCCESS) { rc = ERROR_SUCCESS; @@ -5407,7 +6120,7 @@ static UINT ACTION_Template(MSIPACKAGE *package) msiobj_release(&row->hdr); } - MsiViewClose(view); + MSI_ViewClose(view); msiobj_release(&view->hdr); return rc; } diff --git a/reactos/lib/msi/action.h b/reactos/lib/msi/action.h new file mode 100644 index 00000000000..221e2a22275 --- /dev/null +++ b/reactos/lib/msi/action.h @@ -0,0 +1,151 @@ +/* + * Common prototypes for Action handlers + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +typedef struct tagMSIFEATURE +{ + WCHAR Feature[96]; + WCHAR Feature_Parent[96]; + WCHAR Title[0x100]; + WCHAR Description[0x100]; + INT Display; + INT Level; + WCHAR Directory[96]; + INT Attributes; + + INSTALLSTATE Installed; + INSTALLSTATE ActionRequest; + INSTALLSTATE Action; + + INT ComponentCount; + INT Components[1024]; /* yes hardcoded limit.... I am bad */ + INT Cost; +} MSIFEATURE; + +typedef struct tagMSICOMPONENT +{ + WCHAR Component[96]; + WCHAR ComponentId[96]; + WCHAR Directory[96]; + INT Attributes; + WCHAR Condition[0x100]; + WCHAR KeyPath[96]; + + INSTALLSTATE Installed; + INSTALLSTATE ActionRequest; + INSTALLSTATE Action; + + BOOL Enabled; + INT Cost; +} MSICOMPONENT; + +typedef struct tagMSIFOLDER +{ + LPWSTR Directory; + LPWSTR TargetDefault; + LPWSTR SourceDefault; + + LPWSTR ResolvedTarget; + LPWSTR ResolvedSource; + LPWSTR Property; /* initially set property */ + INT ParentIndex; + INT State; + /* 0 = uninitialized */ + /* 1 = existing */ + /* 2 = created remove if empty */ + /* 3 = created persist if empty */ + INT Cost; + INT Space; +}MSIFOLDER; + +typedef struct tagMSIFILE +{ + LPWSTR File; + INT ComponentIndex; + LPWSTR FileName; + INT FileSize; + LPWSTR Version; + LPWSTR Language; + INT Attributes; + INT Sequence; + + INT State; + /* 0 = uninitialize */ + /* 1 = not present */ + /* 2 = present but replace */ + /* 3 = present do not replace */ + /* 4 = Installed */ + LPWSTR SourcePath; + LPWSTR TargetPath; + BOOL Temporary; +}MSIFILE; + + +UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action); +UINT ACTION_PerformUIAction(MSIPACKAGE *package, const WCHAR *action); +void ACTION_FinishCustomActions( MSIPACKAGE* package); +UINT ACTION_CustomAction(MSIPACKAGE *package,const WCHAR *action, BOOL execute); +void ACTION_UpdateComponentStates(MSIPACKAGE *package, LPCWSTR szFeature); +UINT ACTION_AppSearch(MSIPACKAGE *package); + +DWORD deformat_string(MSIPACKAGE *package, LPCWSTR ptr, WCHAR** data ); +WCHAR *load_dynamic_stringW(MSIRECORD *row, INT index); +LPWSTR load_dynamic_property(MSIPACKAGE *package, LPCWSTR prop, UINT* rc); +LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, BOOL source, + BOOL set_prop, MSIFOLDER **folder); +int get_loaded_component(MSIPACKAGE* package, LPCWSTR Component ); +int get_loaded_feature(MSIPACKAGE* package, LPCWSTR Feature ); +int get_loaded_file(MSIPACKAGE* package, LPCWSTR file); +int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path); + + + +inline static char *strdupWtoA( const WCHAR *str ) +{ + char *ret = NULL; + if (str) + { + DWORD len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL +); + if ((ret = HeapAlloc( GetProcessHeap(), 0, len ))) + WideCharToMultiByte( CP_ACP, 0, str, -1, ret, len, NULL, NULL ); + } + return ret; +} + +inline static WCHAR *strdupAtoW( const char *str ) +{ + WCHAR *ret = NULL; + if (str) + { + DWORD len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 ); + if ((ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) + MultiByteToWideChar( CP_ACP, 0, str, -1, ret, len ); + } + return ret; +} + +inline static LPWSTR dupstrW(LPCWSTR src) +{ + LPWSTR dest; + if (!src) return NULL; + dest = HeapAlloc(GetProcessHeap(), 0, (strlenW(src)+1)*sizeof(WCHAR)); + strcpyW(dest, src); + return dest; +} diff --git a/reactos/lib/msi/appsearch.c b/reactos/lib/msi/appsearch.c new file mode 100644 index 00000000000..60059b6429b --- /dev/null +++ b/reactos/lib/msi/appsearch.c @@ -0,0 +1,855 @@ +/* + * Implementation of the AppSearch action of the Microsoft Installer (msi.dll) + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "msi.h" +#include "msiquery.h" +#include "winver.h" +#include "wine/unicode.h" +#include "wine/debug.h" +#include "msipriv.h" +#include "action.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msi); + +typedef struct tagMSISIGNATURE +{ + LPWSTR Name; /* NOT owned by this structure */ + LPWSTR Property; /* NOT owned by this structure */ + LPWSTR File; + DWORD MinVersionMS; + DWORD MinVersionLS; + DWORD MaxVersionMS; + DWORD MaxVersionLS; + DWORD MinSize; + DWORD MaxSize; + FILETIME MinTime; + FILETIME MaxTime; + LPWSTR Languages; +}MSISIGNATURE; + +static void ACTION_VerStrToInteger(LPCWSTR verStr, PDWORD ms, PDWORD ls) +{ + const WCHAR *ptr; + int x1 = 0, x2 = 0, x3 = 0, x4 = 0; + + x1 = atoiW(verStr); + ptr = strchrW(verStr, '.'); + if (ptr) + { + x2 = atoiW(ptr + 1); + ptr = strchrW(ptr + 1, '.'); + } + if (ptr) + { + x3 = atoiW(ptr + 1); + ptr = strchrW(ptr + 1, '.'); + } + if (ptr) + x4 = atoiW(ptr + 1); + /* FIXME: byte-order dependent? */ + *ms = x1 << 16 | x2; + *ls = x3 << 16 | x4; +} + +/* Fills in sig with the the values from the Signature table, where name is the + * signature to find. Upon return, sig->File will be NULL if the record is not + * found, and not NULL if it is found. + * Warning: clears all fields in sig! + * Returns ERROR_SUCCESS upon success (where not finding the record counts as + * success), something else on error. + */ +static UINT ACTION_AppSearchGetSignature(MSIPACKAGE *package, MSISIGNATURE *sig, + LPCWSTR name) +{ + MSIQUERY *view; + UINT rc; + static const WCHAR ExecSeqQuery[] = { + 's','e','l','e','c','t',' ','*',' ', + 'f','r','o','m',' ', + 'S','i','g','n','a','t','u','r','e',' ', + 'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e',' ','=',' ', + '\'','%','s','\'',0}; + + TRACE("(package %p, sig %p)\n", package, sig); + memset(sig, 0, sizeof(*sig)); + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, name); + if (rc == ERROR_SUCCESS) + { + MSIRECORD *row = 0; + DWORD time; + WCHAR *minVersion, *maxVersion; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewExecute returned %d\n", rc); + goto end; + } + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewFetch returned %d\n", rc); + rc = ERROR_SUCCESS; + goto end; + } + + /* get properties */ + sig->File = load_dynamic_stringW(row,2); + minVersion = load_dynamic_stringW(row,3); + if (minVersion) + { + ACTION_VerStrToInteger(minVersion, &sig->MinVersionMS, + &sig->MinVersionLS); + HeapFree(GetProcessHeap(), 0, minVersion); + } + maxVersion = load_dynamic_stringW(row,4); + if (maxVersion) + { + ACTION_VerStrToInteger(maxVersion, &sig->MaxVersionMS, + &sig->MaxVersionLS); + HeapFree(GetProcessHeap(), 0, maxVersion); + } + sig->MinSize = MSI_RecordGetInteger(row,5); + if (sig->MinSize == MSI_NULL_INTEGER) + sig->MinSize = 0; + sig->MaxSize = MSI_RecordGetInteger(row,6); + if (sig->MaxSize == MSI_NULL_INTEGER) + sig->MaxSize = 0; + sig->Languages = load_dynamic_stringW(row,9); + time = MSI_RecordGetInteger(row,7); + if (time != MSI_NULL_INTEGER) + DosDateTimeToFileTime(HIWORD(time), LOWORD(time), &sig->MinTime); + time = MSI_RecordGetInteger(row,8); + if (time != MSI_NULL_INTEGER) + DosDateTimeToFileTime(HIWORD(time), LOWORD(time), &sig->MaxTime); + TRACE("Found file name %s for Signature_ %s;\n", + debugstr_w(sig->File), debugstr_w(name)); + TRACE("MinVersion is %d.%d.%d.%d\n", HIWORD(sig->MinVersionMS), + LOWORD(sig->MinVersionMS), HIWORD(sig->MinVersionLS), + LOWORD(sig->MinVersionLS)); + TRACE("MaxVersion is %d.%d.%d.%d\n", HIWORD(sig->MaxVersionMS), + LOWORD(sig->MaxVersionMS), HIWORD(sig->MaxVersionLS), + LOWORD(sig->MaxVersionLS)); + TRACE("MinSize is %ld, MaxSize is %ld;\n", sig->MinSize, sig->MaxSize); + TRACE("Languages is %s\n", debugstr_w(sig->Languages)); + +end: + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + } + else + { + TRACE("MSI_OpenQuery returned %d\n", rc); + rc = ERROR_SUCCESS; + } + + TRACE("returning %d\n", rc); + return rc; +} + +static UINT ACTION_AppSearchComponents(MSIPACKAGE *package, BOOL *appFound, + MSISIGNATURE *sig) +{ + MSIQUERY *view; + UINT rc; + static const WCHAR ExecSeqQuery[] = { + 's','e','l','e','c','t',' ','*',' ', + 'f','r','o','m',' ', + 'C','o','m','p','L','o','c','a','t','o','r',' ', + 'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e','_',' ','=',' ', + '\'','%','s','\'',0}; + + TRACE("(package %p, appFound %p, sig %p)\n", package, appFound, sig); + *appFound = FALSE; + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, sig->Name); + if (rc == ERROR_SUCCESS) + { + MSIRECORD *row = 0; + WCHAR guid[50]; + DWORD sz; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewExecute returned %d\n", rc); + goto end; + } + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewFetch returned %d\n", rc); + rc = ERROR_SUCCESS; + goto end; + } + + /* get GUID */ + guid[0] = 0; + sz=sizeof(guid)/sizeof(guid[0]); + rc = MSI_RecordGetStringW(row,2,guid,&sz); + if (rc != ERROR_SUCCESS) + { + ERR("Error is %x\n",rc); + goto end; + } + FIXME("AppSearch unimplemented for CompLocator table (GUID %s)\n", + debugstr_w(guid)); + +end: + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + } + else + { + TRACE("MSI_OpenQuery returned %d\n", rc); + rc = ERROR_SUCCESS; + } + + TRACE("returning %d\n", rc); + return rc; +} + +static UINT ACTION_AppSearchReg(MSIPACKAGE *package, BOOL *appFound, + MSISIGNATURE *sig) +{ + MSIQUERY *view; + UINT rc; + static const WCHAR ExecSeqQuery[] = { + 's','e','l','e','c','t',' ','*',' ', + 'f','r','o','m',' ', + 'R','e','g','L','o','c','a','t','o','r',' ', + 'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e','_',' ','=',' ', + '\'','%','s','\'',0}; + + TRACE("(package %p, appFound %p, sig %p)\n", package, appFound, sig); + *appFound = FALSE; + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, sig->Name); + if (rc == ERROR_SUCCESS) + { + MSIRECORD *row = 0; + LPWSTR keyPath; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewExecute returned %d\n", rc); + goto end; + } + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewFetch returned %d\n", rc); + rc = ERROR_SUCCESS; + goto end; + } + + /* get key path */ + keyPath = load_dynamic_stringW(row,3); + FIXME("AppSearch unimplemented for RegLocator (key path %s)\n", + debugstr_w(keyPath)); + HeapFree(GetProcessHeap(), 0, keyPath); + +end: + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + } + else + { + TRACE("MSI_OpenQuery returned %d\n", rc); + rc = ERROR_SUCCESS; + } + + TRACE("returning %d\n", rc); + return rc; +} + +static UINT ACTION_AppSearchIni(MSIPACKAGE *package, BOOL *appFound, + MSISIGNATURE *sig) +{ + MSIQUERY *view; + UINT rc; + static const WCHAR ExecSeqQuery[] = { + 's','e','l','e','c','t',' ','*',' ', + 'f','r','o','m',' ', + 'I','n','i','L','o','c','a','t','o','r',' ', + 'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e','_',' ','=',' ', + '\'','%','s','\'',0}; + + TRACE("(package %p, appFound %p, sig %p)\n", package, appFound, sig); + *appFound = FALSE; + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, sig->Name); + if (rc == ERROR_SUCCESS) + { + MSIRECORD *row = 0; + LPWSTR fileName; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewExecute returned %d\n", rc); + goto end; + } + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewFetch returned %d\n", rc); + rc = ERROR_SUCCESS; + goto end; + } + + /* get file name */ + fileName = load_dynamic_stringW(row,2); + FIXME("AppSearch unimplemented for IniLocator (ini file name %s)\n", + debugstr_w(fileName)); + HeapFree(GetProcessHeap(), 0, fileName); + +end: + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + } + else + { + TRACE("MSI_OpenQuery returned %d\n", rc); + rc = ERROR_SUCCESS; + } + + + TRACE("returning %d\n", rc); + return rc; +} + +/* Expands the value in src into a path without property names and only + * containing long path names into dst. Replaces at most len characters of dst, + * and always NULL-terminates dst if dst is not NULL and len >= 1. + * May modify src. + * Assumes src and dst are non-overlapping. + * FIXME: return code probably needed: + * - what does AppSearch return if the table values are invalid? + * - what if dst is too small? + */ +static void ACTION_ExpandAnyPath(MSIPACKAGE *package, WCHAR *src, WCHAR *dst, + size_t len) +{ + WCHAR *ptr; + size_t copied = 0; + + if (!src || !dst || !len) + return; + + /* Ignore the short portion of the path, don't think we can use it anyway */ + if ((ptr = strchrW(src, '|'))) + ptr++; + else + ptr = src; + while (*ptr && copied < len - 1) + { + WCHAR *prop = strchrW(ptr, '['); + + if (prop) + { + WCHAR *propEnd = strchrW(prop + 1, ']'); + + if (!propEnd) + { + WARN("Unterminated property name in AnyPath: %s\n", + debugstr_w(prop)); + break; + } + else + { + DWORD propLen; + + *propEnd = 0; + propLen = len - copied - 1; + MSI_GetPropertyW(package, prop + 1, dst + copied, &propLen); + ptr = propEnd + 1; + copied += propLen; + } + } + else + { + size_t toCopy = min(strlenW(ptr) + 1, len - copied - 1); + + memcpy(dst + copied, ptr, toCopy * sizeof(WCHAR)); + ptr += toCopy; + copied += toCopy; + } + } + *(dst + copied) = '\0'; +} + +/* Sets *matches to whether the file (whose path is filePath) matches the + * versions set in sig. + * Return ERROR_SUCCESS in case of success (whether or not the file matches), + * something else if a install-halting error occurs. + */ +static UINT ACTION_FileVersionMatches(MSISIGNATURE *sig, LPCWSTR filePath, + BOOL *matches) +{ + UINT rc = ERROR_SUCCESS; + + *matches = FALSE; + if (sig->Languages) + { + FIXME(": need to check version for languages %s\n", + debugstr_w(sig->Languages)); + } + else + { + DWORD zero, size = GetFileVersionInfoSizeW(filePath, &zero); + + if (size) + { + LPVOID buf = HeapAlloc(GetProcessHeap(), 0, size); + + if (buf) + { + static const WCHAR rootW[] = { '\\',0 }; + UINT versionLen; + LPVOID subBlock = NULL; + + if (GetFileVersionInfoW(filePath, 0, size, buf)) + VerQueryValueW(buf, rootW, &subBlock, &versionLen); + if (subBlock) + { + VS_FIXEDFILEINFO *info = + (VS_FIXEDFILEINFO *)subBlock; + + TRACE("Comparing file version %d.%d.%d.%d:\n", + HIWORD(info->dwFileVersionMS), + LOWORD(info->dwFileVersionMS), + HIWORD(info->dwFileVersionLS), + LOWORD(info->dwFileVersionLS)); + if (info->dwFileVersionMS < sig->MinVersionMS + || (info->dwFileVersionMS == sig->MinVersionMS && + info->dwFileVersionLS < sig->MinVersionLS)) + { + TRACE("Less than minimum version %d.%d.%d.%d\n", + HIWORD(sig->MinVersionMS), + LOWORD(sig->MinVersionMS), + HIWORD(sig->MinVersionLS), + LOWORD(sig->MinVersionLS)); + } + else if (info->dwFileVersionMS < sig->MinVersionMS + || (info->dwFileVersionMS == sig->MinVersionMS && + info->dwFileVersionLS < sig->MinVersionLS)) + { + TRACE("Greater than minimum version %d.%d.%d.%d\n", + HIWORD(sig->MaxVersionMS), + LOWORD(sig->MaxVersionMS), + HIWORD(sig->MaxVersionLS), + LOWORD(sig->MaxVersionLS)); + } + else + *matches = TRUE; + } + HeapFree(GetProcessHeap(), 0, buf); + } + else + rc = ERROR_OUTOFMEMORY; + } + } + return rc; +} + +/* Sets *matches to whether the file in findData matches that in sig. + * fullFilePath is assumed to be the full path of the file specified in + * findData, which may be necessary to compare the version. + * Return ERROR_SUCCESS in case of success (whether or not the file matches), + * something else if a install-halting error occurs. + */ +static UINT ACTION_FileMatchesSig(MSISIGNATURE *sig, + LPWIN32_FIND_DATAW findData, LPCWSTR fullFilePath, BOOL *matches) +{ + UINT rc = ERROR_SUCCESS; + + *matches = TRUE; + /* assumes the caller has already ensured the filenames match, so check + * the other fields.. + */ + if (sig->MinTime.dwLowDateTime || sig->MinTime.dwHighDateTime) + { + if (findData->ftCreationTime.dwHighDateTime < + sig->MinTime.dwHighDateTime || + (findData->ftCreationTime.dwHighDateTime == sig->MinTime.dwHighDateTime + && findData->ftCreationTime.dwLowDateTime < + sig->MinTime.dwLowDateTime)) + *matches = FALSE; + } + if (*matches && (sig->MaxTime.dwLowDateTime || sig->MaxTime.dwHighDateTime)) + { + if (findData->ftCreationTime.dwHighDateTime > + sig->MaxTime.dwHighDateTime || + (findData->ftCreationTime.dwHighDateTime == sig->MaxTime.dwHighDateTime + && findData->ftCreationTime.dwLowDateTime > + sig->MaxTime.dwLowDateTime)) + *matches = FALSE; + } + if (*matches && sig->MinSize && findData->nFileSizeLow < sig->MinSize) + *matches = FALSE; + if (*matches && sig->MaxSize && findData->nFileSizeLow > sig->MaxSize) + *matches = FALSE; + if (*matches && (sig->MinVersionMS || sig->MinVersionLS || + sig->MaxVersionMS || sig->MaxVersionLS)) + rc = ACTION_FileVersionMatches(sig, fullFilePath, matches); + return rc; +} + +/* Recursively searches the directory dir for files that match the signature + * sig, up to (depth + 1) levels deep. That is, if depth is 0, it searches dir + * (and only dir). If depth is 1, searches dir and its immediate + * subdirectories. + * Assumes sig->File is not NULL. + * Returns ERROR_SUCCESS on success (which may include non-critical errors), + * something else on failures which should halt the install. + */ +static UINT ACTION_RecurseSearchDirectory(MSIPACKAGE *package, BOOL *appFound, + MSISIGNATURE *sig, LPCWSTR dir, int depth) +{ + static const WCHAR starDotStarW[] = { '*','.','*',0 }; + UINT rc = ERROR_SUCCESS; + size_t dirLen = lstrlenW(dir), fileLen = lstrlenW(sig->File); + WCHAR *buf; + + TRACE("Searching directory %s for file %s, depth %d\n", debugstr_w(dir), + debugstr_w(sig->File), depth); + + if (depth < 0) + return ERROR_INVALID_PARAMETER; + + *appFound = FALSE; + /* We need the buffer in both paths below, so go ahead and allocate it + * here. Add two because we might need to add a backslash if the dir name + * isn't backslash-terminated. + */ + buf = HeapAlloc(GetProcessHeap(), 0, + (dirLen + max(fileLen, lstrlenW(starDotStarW)) + 2) * sizeof(WCHAR)); + if (buf) + { + /* a depth of 0 implies we should search dir, so go ahead and search */ + HANDLE hFind; + WIN32_FIND_DATAW findData; + + memcpy(buf, dir, dirLen * sizeof(WCHAR)); + if (buf[dirLen - 1] != '\\') + buf[dirLen++ - 1] = '\\'; + memcpy(buf + dirLen, sig->File, (fileLen + 1) * sizeof(WCHAR)); + hFind = FindFirstFileW(buf, &findData); + if (hFind != INVALID_HANDLE_VALUE) + { + BOOL matches; + + /* assuming Signature can't contain wildcards for the file name, + * so don't bother with FindNextFileW here. + */ + if (!(rc = ACTION_FileMatchesSig(sig, &findData, buf, &matches)) + && matches) + { + TRACE("found file, setting %s to %s\n", + debugstr_w(sig->Property), debugstr_w(buf)); + rc = MSI_SetPropertyW(package, sig->Property, buf); + *appFound = TRUE; + } + FindClose(hFind); + } + if (rc == ERROR_SUCCESS && !*appFound && depth > 0) + { + HANDLE hFind; + WIN32_FIND_DATAW findData; + + memcpy(buf, dir, dirLen * sizeof(WCHAR)); + if (buf[dirLen - 1] != '\\') + buf[dirLen++ - 1] = '\\'; + lstrcpyW(buf + dirLen, starDotStarW); + hFind = FindFirstFileW(buf, &findData); + if (hFind != INVALID_HANDLE_VALUE) + { + if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + rc = ACTION_RecurseSearchDirectory(package, appFound, + sig, findData.cFileName, depth - 1); + while (rc == ERROR_SUCCESS && !*appFound && + FindNextFileW(hFind, &findData) != 0) + { + if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + rc = ACTION_RecurseSearchDirectory(package, appFound, + sig, findData.cFileName, depth - 1); + } + FindClose(hFind); + } + } + HeapFree(GetProcessHeap(), 0, buf); + } + else + rc = ERROR_OUTOFMEMORY; + + return rc; +} + +static UINT ACTION_CheckDirectory(MSIPACKAGE *package, MSISIGNATURE *sig, + LPCWSTR dir) +{ + UINT rc = ERROR_SUCCESS; + + if (GetFileAttributesW(dir) & FILE_ATTRIBUTE_DIRECTORY) + { + TRACE("directory exists, setting %s to %s\n", + debugstr_w(sig->Property), debugstr_w(dir)); + rc = MSI_SetPropertyW(package, sig->Property, dir); + } + return rc; +} + +static BOOL ACTION_IsFullPath(LPCWSTR path) +{ + WCHAR first = toupperW(path[0]); + BOOL ret; + + if (first >= 'A' && first <= 'A' && path[1] == ':') + ret = TRUE; + else if (path[0] == '\\' && path[1] == '\\') + ret = TRUE; + else + ret = FALSE; + return ret; +} + +static UINT ACTION_SearchDirectory(MSIPACKAGE *package, MSISIGNATURE *sig, + LPCWSTR expanded, int depth) +{ + UINT rc; + BOOL found; + + if (ACTION_IsFullPath(expanded)) + { + if (sig->File) + rc = ACTION_RecurseSearchDirectory(package, &found, sig, + expanded, depth); + else + { + /* Recursively searching a directory makes no sense when the + * directory to search is the thing you're trying to find. + */ + rc = ACTION_CheckDirectory(package, sig, expanded); + } + } + else + { + WCHAR pathWithDrive[MAX_PATH] = { 'C',':','\\',0 }; + DWORD drives = GetLogicalDrives(); + int i; + + rc = ERROR_SUCCESS; + found = FALSE; + for (i = 0; rc == ERROR_SUCCESS && !found && i < 26; i++) + if (drives & (1 << drives)) + { + pathWithDrive[0] = 'A' + i; + if (GetDriveTypeW(pathWithDrive) == DRIVE_FIXED) + { + strncpyW(pathWithDrive + 3, expanded, + sizeof(pathWithDrive) / sizeof(pathWithDrive[0]) - 3); + if (sig->File) + rc = ACTION_RecurseSearchDirectory(package, &found, sig, + pathWithDrive, depth); + else + rc = ACTION_CheckDirectory(package, sig, pathWithDrive); + } + } + } + return rc; +} + +static UINT ACTION_AppSearchDr(MSIPACKAGE *package, MSISIGNATURE *sig) +{ + MSIQUERY *view; + UINT rc; + static const WCHAR ExecSeqQuery[] = { + 's','e','l','e','c','t',' ','*',' ', + 'f','r','o','m',' ', + 'D','r','L','o','c','a','t','o','r',' ', + 'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e','_',' ','=',' ', + '\'','%','s','\'',0}; + + TRACE("(package %p, sig %p)\n", package, sig); + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, sig->Name); + if (rc == ERROR_SUCCESS) + { + MSIRECORD *row = 0; + WCHAR buffer[MAX_PATH], expanded[MAX_PATH]; + DWORD sz; + int depth; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewExecute returned %d\n", rc); + goto end; + } + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + TRACE("MSI_ViewFetch returned %d\n", rc); + rc = ERROR_SUCCESS; + goto end; + } + + /* check whether parent is set */ + buffer[0] = 0; + sz=sizeof(buffer)/sizeof(buffer[0]); + rc = MSI_RecordGetStringW(row,2,buffer,&sz); + if (rc != ERROR_SUCCESS) + { + ERR("Error is %x\n",rc); + goto end; + } + else if (buffer[0]) + { + FIXME(": searching parent (%s) unimplemented\n", + debugstr_w(buffer)); + goto end; + } + /* no parent, now look for path */ + buffer[0] = 0; + sz=sizeof(buffer)/sizeof(buffer[0]); + rc = MSI_RecordGetStringW(row,3,buffer,&sz); + if (rc != ERROR_SUCCESS) + { + ERR("Error is %x\n",rc); + goto end; + } + if (MSI_RecordIsNull(row,4)) + depth = 0; + else + depth = MSI_RecordGetInteger(row,4); + ACTION_ExpandAnyPath(package, buffer, expanded, + sizeof(expanded) / sizeof(expanded[0])); + rc = ACTION_SearchDirectory(package, sig, expanded, depth); + +end: + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + } + else + { + TRACE("MSI_OpenQuery returned %d\n", rc); + rc = ERROR_SUCCESS; + } + + + TRACE("returning %d\n", rc); + return rc; +} + +/* http://msdn.microsoft.com/library/en-us/msi/setup/appsearch_table.asp + * is the best reference for the AppSearch table and how it's used. + */ +UINT ACTION_AppSearch(MSIPACKAGE *package) +{ + MSIQUERY *view; + UINT rc; + static const WCHAR ExecSeqQuery[] = { + 's','e','l','e','c','t',' ','*',' ', + 'f','r','o','m',' ', + 'A','p','p','S','e','a','r','c','h',0}; + + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery); + if (rc == ERROR_SUCCESS) + { + MSIRECORD *row = 0; + WCHAR propBuf[0x100], sigBuf[0x100]; + DWORD sz; + MSISIGNATURE sig; + BOOL appFound = FALSE; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + goto end; + + while (!rc) + { + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + rc = ERROR_SUCCESS; + break; + } + + /* get property and signature */ + propBuf[0] = 0; + sz=sizeof(propBuf)/sizeof(propBuf[0]); + rc = MSI_RecordGetStringW(row,1,propBuf,&sz); + if (rc != ERROR_SUCCESS) + { + ERR("Error is %x\n",rc); + msiobj_release(&row->hdr); + break; + } + sigBuf[0] = 0; + sz=sizeof(sigBuf)/sizeof(sigBuf[0]); + rc = MSI_RecordGetStringW(row,2,sigBuf,&sz); + if (rc != ERROR_SUCCESS) + { + ERR("Error is %x\n",rc); + msiobj_release(&row->hdr); + break; + } + TRACE("Searching for Property %s, Signature_ %s\n", + debugstr_w(propBuf), debugstr_w(sigBuf)); + /* This clears all the fields, so set Name and Property afterward */ + rc = ACTION_AppSearchGetSignature(package, &sig, sigBuf); + sig.Name = sigBuf; + sig.Property = propBuf; + if (rc == ERROR_SUCCESS) + { + rc = ACTION_AppSearchComponents(package, &appFound, &sig); + if (rc == ERROR_SUCCESS && !appFound) + { + rc = ACTION_AppSearchReg(package, &appFound, &sig); + if (rc == ERROR_SUCCESS && !appFound) + { + rc = ACTION_AppSearchIni(package, &appFound, &sig); + if (rc == ERROR_SUCCESS && !appFound) + rc = ACTION_AppSearchDr(package, &sig); + } + } + } + HeapFree(GetProcessHeap(), 0, sig.File); + HeapFree(GetProcessHeap(), 0, sig.Languages); + msiobj_release(&row->hdr); + } + +end: + MSI_ViewClose(view); + msiobj_release(&view->hdr); + } + else + rc = ERROR_SUCCESS; + + return rc; +} diff --git a/reactos/lib/msi/cond.tab.c b/reactos/lib/msi/cond.tab.c index 6a4e64c88c6..31fa5f736a6 100644 --- a/reactos/lib/msi/cond.tab.c +++ b/reactos/lib/msi/cond.tab.c @@ -1,2022 +1,2204 @@ -/* A Bison parser, made from ./cond.y - by GNU bison 1.35. */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define yyparse COND_parse -#define yylex COND_lex -#define yyerror COND_error -#define yylval COND_lval -#define yychar COND_char -#define yydebug COND_debug -#define yynerrs COND_nerrs -# define COND_SPACE 257 -# define COND_EOF 258 -# define COND_OR 259 -# define COND_AND 260 -# define COND_NOT 261 -# define COND_LT 262 -# define COND_GT 263 -# define COND_EQ 264 -# define COND_LPAR 265 -# define COND_RPAR 266 -# define COND_TILDA 267 -# define COND_PERCENT 268 -# define COND_DOLLARS 269 -# define COND_QUESTION 270 -# define COND_AMPER 271 -# define COND_EXCLAM 272 -# define COND_IDENT 273 -# define COND_NUMBER 274 -# define COND_LITER 275 -# define COND_ERROR 276 - -#line 1 "./cond.y" - - -/* - * Implementation of the Microsoft Installer (msi.dll) - * - * Copyright 2003 Mike McCormack 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include - -#include "windef.h" -#include "winbase.h" -#include "wine/debug.h" -#include "wine/unicode.h" - -#include "msi.h" -#include "msiquery.h" -#include "msipriv.h" - -#define YYLEX_PARAM info -#define YYPARSE_PARAM info - -static int COND_error(char *str); - -WINE_DEFAULT_DEBUG_CHANNEL(msi); - -typedef struct tag_yyinput -{ - MSIPACKAGE *package; - LPCWSTR str; - INT n; - MSICONDITION result; -} COND_input; - -struct cond_str { - LPCWSTR data; - INT len; -}; - -static LPWSTR COND_GetString( struct cond_str *str ); -static LPWSTR COND_GetLiteral( struct cond_str *str ); -static int COND_lex( void *COND_lval, COND_input *info); - -typedef INT (*comp_int)(INT a, INT b); -typedef INT (*comp_str)(LPWSTR a, LPWSTR b, BOOL caseless); -typedef INT (*comp_m1)(LPWSTR a,int b); -typedef INT (*comp_m2)(int a,LPWSTR b); - -static INT comp_lt_i(INT a, INT b); -static INT comp_gt_i(INT a, INT b); -static INT comp_le_i(INT a, INT b); -static INT comp_ge_i(INT a, INT b); -static INT comp_eq_i(INT a, INT b); -static INT comp_ne_i(INT a, INT b); -static INT comp_bitand(INT a, INT b); -static INT comp_highcomp(INT a, INT b); -static INT comp_lowcomp(INT a, INT b); - -static INT comp_eq_s(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_ne_s(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_lt_s(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_gt_s(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_le_s(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_ge_s(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_substring(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_start(LPWSTR a, LPWSTR b, BOOL casless); -static INT comp_end(LPWSTR a, LPWSTR b, BOOL casless); - -static INT comp_eq_m1(LPWSTR a, INT b); -static INT comp_ne_m1(LPWSTR a, INT b); -static INT comp_lt_m1(LPWSTR a, INT b); -static INT comp_gt_m1(LPWSTR a, INT b); -static INT comp_le_m1(LPWSTR a, INT b); -static INT comp_ge_m1(LPWSTR a, INT b); - -static INT comp_eq_m2(INT a, LPWSTR b); -static INT comp_ne_m2(INT a, LPWSTR b); -static INT comp_lt_m2(INT a, LPWSTR b); -static INT comp_gt_m2(INT a, LPWSTR b); -static INT comp_le_m2(INT a, LPWSTR b); -static INT comp_ge_m2(INT a, LPWSTR b); - - -#line 105 "./cond.y" -#ifndef YYSTYPE -typedef union -{ - struct cond_str str; - LPWSTR string; - INT value; - comp_int fn_comp_int; - comp_str fn_comp_str; - comp_m1 fn_comp_m1; - comp_m2 fn_comp_m2; -} yystype; -# define YYSTYPE yystype -# define YYSTYPE_IS_TRIVIAL 1 -#endif -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - - - -#define YYFINAL 74 -#define YYFLAG -32768 -#define YYNTBASE 23 - -/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ -#define YYTRANSLATE(x) ((unsigned)(x) <= 276 ? yytranslate[x] : 39) - -/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ -static const char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22 -}; - -#if YYDEBUG -static const short yyprhs[] = -{ - 0, 0, 2, 4, 8, 10, 14, 16, 19, 21, - 23, 27, 31, 36, 40, 44, 48, 50, 53, 55, - 57, 60, 63, 66, 69, 72, 74, 77, 79, 81, - 84, 87, 90, 93, 96, 98, 101, 103, 105, 108, - 111, 114, 117, 120, 122, 125, 127, 129, 132, 135, - 138, 141, 144, 146, 148, 150, 152, 154, 157, 160, - 163, 166, 168, 171, 173 -}; -static const short yyrhs[] = -{ - 24, 0, 25, 0, 25, 5, 24, 0, 26, 0, - 25, 6, 26, 0, 27, 0, 7, 27, 0, 32, - 0, 33, 0, 32, 28, 32, 0, 33, 29, 33, - 0, 33, 13, 29, 33, 0, 33, 30, 32, 0, - 32, 31, 33, 0, 11, 24, 12, 0, 10, 0, - 8, 9, 0, 8, 0, 9, 0, 8, 10, 0, - 9, 10, 0, 9, 8, 0, 8, 8, 0, 9, - 9, 0, 10, 0, 8, 9, 0, 8, 0, 9, - 0, 8, 10, 0, 9, 10, 0, 9, 8, 0, - 8, 8, 0, 9, 9, 0, 10, 0, 8, 9, - 0, 8, 0, 9, 0, 8, 10, 0, 9, 10, - 0, 9, 8, 0, 8, 8, 0, 9, 9, 0, - 10, 0, 8, 9, 0, 8, 0, 9, 0, 8, - 10, 0, 9, 10, 0, 9, 8, 0, 8, 8, - 0, 9, 9, 0, 35, 0, 38, 0, 36, 0, - 34, 0, 21, 0, 15, 37, 0, 16, 37, 0, - 17, 37, 0, 18, 37, 0, 37, 0, 14, 37, - 0, 19, 0, 20, 0 -}; - -#endif - -#if YYDEBUG -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const short yyrline[] = -{ - 0, 135, 143, 148, 154, 159, 165, 170, 177, 182, - 186, 190, 194, 198, 202, 206, 212, 218, 222, 226, - 230, 234, 239, 243, 247, 253, 259, 263, 267, 271, - 275, 280, 284, 288, 294, 300, 304, 308, 312, 316, - 321, 325, 329, 335, 341, 345, 349, 353, 357, 362, - 366, 370, 376, 381, 387, 392, 398, 407, 417, 426, - 435, 446, 462, 475, 484 -}; -#endif - - -#if (YYDEBUG) || defined YYERROR_VERBOSE - -/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ -static const char *const yytname[] = -{ - "$", "error", "$undefined.", "COND_SPACE", "COND_EOF", "COND_OR", - "COND_AND", "COND_NOT", "COND_LT", "COND_GT", "COND_EQ", "COND_LPAR", - "COND_RPAR", "COND_TILDA", "COND_PERCENT", "COND_DOLLARS", - "COND_QUESTION", "COND_AMPER", "COND_EXCLAM", "COND_IDENT", - "COND_NUMBER", "COND_LITER", "COND_ERROR", "condition", "expression", - "boolean_term", "boolean_factor", "term", "comp_op_i", "comp_op_s", - "comp_op_m1", "comp_op_m2", "value_i", "value_s", "literal", "symbol_i", - "symbol_s", "identifier", "integer", 0 -}; -#endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const short yyr1[] = -{ - 0, 23, 24, 24, 25, 25, 26, 26, 27, 27, - 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 32, 32, 33, 33, 34, 35, 35, 35, - 35, 36, 36, 37, 38 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const short yyr2[] = -{ - 0, 1, 1, 3, 1, 3, 1, 2, 1, 1, - 3, 3, 4, 3, 3, 3, 1, 2, 1, 1, - 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, - 2, 2, 2, 2, 1, 2, 1, 1, 2, 2, - 2, 2, 2, 1, 2, 1, 1, 2, 2, 2, - 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 1, 2, 1, 1 -}; - -/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE - doesn't specify something else to do. Zero means the default is an - error. */ -static const short yydefact[] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, - 56, 1, 2, 4, 6, 8, 9, 55, 52, 54, - 61, 53, 7, 0, 62, 57, 58, 59, 60, 0, - 0, 18, 19, 16, 0, 0, 36, 37, 34, 0, - 0, 0, 15, 3, 5, 23, 17, 20, 22, 24, - 21, 10, 14, 41, 35, 38, 40, 42, 39, 27, - 28, 25, 0, 11, 13, 32, 26, 29, 31, 33, - 30, 12, 0, 0, 0 -}; - -static const short yydefgoto[] = -{ - 72, 11, 12, 13, 14, 34, 40, 41, 35, 15, - 16, 17, 18, 19, 20, 21 -}; - -static const short yypact[] = -{ - -5, 50, -5, -12, -12, -12, -12, -12,-32768,-32768, - -32768,-32768, -2,-32768,-32768, 48, 123,-32768,-32768,-32768, - -32768,-32768,-32768, -4,-32768,-32768,-32768,-32768,-32768, -5, - -5, 10, 24, 33, 110, 58, 27, 41, 59, 135, - 58, 110,-32768,-32768,-32768, 62, 68, 71, 72, 80, - 81,-32768,-32768, 84, 90, 93, 94, 102, 103, 138, - 141,-32768, 58,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768, 17, 21,-32768 -}; - -static const short yypgoto[] = -{ - -32768, -1,-32768, -8, 25,-32768, -14,-32768,-32768, -11, - -35,-32768,-32768,-32768, 134,-32768 -}; - - -#define YYLAST 151 - - -static const short yytable[] = -{ - 52, 23, 1, 29, 30, 63, 2, 8, 42, 3, - 4, 5, 6, 7, 8, 9, 10, 73, 45, 46, - 47, 74, 44, 51, -45, 62, 22, 71, 43, -45, - 64, -45, 48, 49, 50, 53, 54, 55, -46, 0, - 0, -27, 0, -46, 0, -46, -27, -43, -27, 56, - 57, 58, -43, 0, -43, -28, 31, 32, 33, 0, - -28, 2, -28, 0, 3, 4, 5, 6, 7, 8, - 9, 10, 3, -25, 0, 0, -50, 8, -25, 10, - -25, -50, -44, -50, 0, -47, -49, -44, 0, -44, - -47, -49, -47, -49, -51, -48, 0, 0, -32, -51, - -48, -51, -48, -32, -26, -32, 0, -29, -31, -26, - 0, -26, -29, -31, -29, -31, -33, -30, 0, 0, - 0, -33, -30, -33, -30, 4, 5, 6, 7, 0, - 9, 36, 37, 38, 0, 0, 39, 24, 25, 26, - 27, 28, 0, 59, 60, 61, 65, 66, 67, 68, - 69, 70 -}; - -static const short yycheck[] = -{ - 35, 2, 7, 5, 6, 40, 11, 19, 12, 14, - 15, 16, 17, 18, 19, 20, 21, 0, 8, 9, - 10, 0, 30, 34, 14, 39, 1, 62, 29, 19, - 41, 21, 8, 9, 10, 8, 9, 10, 14, -1, - -1, 14, -1, 19, -1, 21, 19, 14, 21, 8, - 9, 10, 19, -1, 21, 14, 8, 9, 10, -1, - 19, 11, 21, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 14, 14, -1, -1, 14, 19, 19, 21, - 21, 19, 14, 21, -1, 14, 14, 19, -1, 21, - 19, 19, 21, 21, 14, 14, -1, -1, 14, 19, - 19, 21, 21, 19, 14, 21, -1, 14, 14, 19, - -1, 21, 19, 19, 21, 21, 14, 14, -1, -1, - -1, 19, 19, 21, 21, 15, 16, 17, 18, -1, - 20, 8, 9, 10, -1, -1, 13, 3, 4, 5, - 6, 7, -1, 8, 9, 10, 8, 9, 10, 8, - 9, 10 -}; -#define YYPURE 1 - -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/share/bison/bison.simple" - -/* Skeleton output parser for bison, - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software - Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* This is the parser code that is written into each bison parser when - the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE) - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca -# else -# ifndef YYSTACK_USE_ALLOCA -# if defined (alloca) || defined (_ALLOCA_H) -# define YYSTACK_ALLOC alloca -# else -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# else -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC malloc -# define YYSTACK_FREE free -# endif -#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short yyss; - YYSTYPE yyvs; -# if YYLSP_NEEDED - YYLTYPE yyls; -# endif -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# if YYLSP_NEEDED -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ - + 2 * YYSTACK_GAP_MAX) -# else -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAX) -# endif - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror ("syntax error: cannot back up"); \ - YYERROR; \ - } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). - - When YYLLOC_DEFAULT is run, CURRENT is set the location of the - first token. By default, to implement support for ranges, extend - its range to the last symbol. */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; -#endif - - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#if YYPURE -# if YYLSP_NEEDED -# ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -# else -# define YYLEX yylex (&yylval, &yylloc) -# endif -# else /* !YYLSP_NEEDED */ -# ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, YYLEX_PARAM) -# else -# define YYLEX yylex (&yylval) -# endif -# endif /* !YYLSP_NEEDED */ -#else /* !YYPURE */ -# define YYLEX yylex () -#endif /* !YYPURE */ - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -#endif /* !YYDEBUG */ - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#if YYMAXDEPTH == 0 -# undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - -#ifdef YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif -#endif - -#line 315 "/usr/share/bison/bison.simple" - - -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -# define YYPARSE_PARAM_DECL -# else -# define YYPARSE_PARAM_ARG YYPARSE_PARAM -# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -# endif -#else /* !YYPARSE_PARAM */ -# define YYPARSE_PARAM_ARG -# define YYPARSE_PARAM_DECL -#endif /* !YYPARSE_PARAM */ - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -# ifdef YYPARSE_PARAM -int yyparse (void *); -# else -int yyparse (void); -# endif -#endif - -/* YY_DECL_VARIABLES -- depending whether we use a pure parser, - variables are global, or local to YYPARSE. */ - -#define YY_DECL_NON_LSP_VARIABLES \ -/* The lookahead symbol. */ \ -int yychar; \ - \ -/* The semantic value of the lookahead symbol. */ \ -YYSTYPE yylval; \ - \ -/* Number of parse errors so far. */ \ -int yynerrs; - -#if YYLSP_NEEDED -# define YY_DECL_VARIABLES \ -YY_DECL_NON_LSP_VARIABLES \ - \ -/* Location data for the lookahead symbol. */ \ -YYLTYPE yylloc; -#else -# define YY_DECL_VARIABLES \ -YY_DECL_NON_LSP_VARIABLES -#endif - - -/* If nonreentrant, generate the variables here. */ - -#if !YYPURE -YY_DECL_VARIABLES -#endif /* !YYPURE */ - -int -yyparse (YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - /* If reentrant, generate the variables here. */ -#if YYPURE - YY_DECL_VARIABLES -#endif /* !YYPURE */ - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yychar1 = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; - register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - -#if YYLSP_NEEDED - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; -#endif - -#if YYLSP_NEEDED -# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -# define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - YYSIZE_T yystacksize = YYINITDEPTH; - - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; -#if YYLSP_NEEDED - YYLTYPE yyloc; -#endif - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; -#if YYLSP_NEEDED - yylsp = yyls; -#endif - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. */ -# if YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - yyls = yyls1; -# else - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); -# endif - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - goto yyoverflowlab; - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; - - { - short *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); -# if YYLSP_NEEDED - YYSTACK_RELOCATE (yyls); -# endif -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; -#if YYLSP_NEEDED - yylsp = yyls + yysize - 1; -#endif - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ - { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yychar1 = YYTRANSLATE (yychar); - -#if YYDEBUG - /* We have to keep this `#if YYDEBUG', since we use variables - which are defined only if `YYDEBUG' is set. */ - if (yydebug) - { - YYFPRINTF (stderr, "Next token is %d (%s", - yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise - meaning of a token, for further debugging info. */ -# ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -# endif - YYFPRINTF (stderr, ")\n"); - } -#endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %d (%s), ", - yychar, yytname[yychar1])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#if YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to the semantic value of - the lookahead token. This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - -#if YYLSP_NEEDED - /* Similarly for the default location. Let the user run additional - commands if for instance locations are ranges. */ - yyloc = yylsp[1-yylen]; - YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); -#endif - -#if YYDEBUG - /* We have to keep this `#if YYDEBUG', since we use variables which - are defined only if `YYDEBUG' is set. */ - if (yydebug) - { - int yyi; - - YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) - YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); - YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif - - switch (yyn) { - -case 1: -#line 137 "./cond.y" -{ - COND_input* cond = (COND_input*) info; - cond->result = yyvsp[0].value; - ; - break;} -case 2: -#line 145 "./cond.y" -{ - yyval.value = yyvsp[0].value; - ; - break;} -case 3: -#line 149 "./cond.y" -{ - yyval.value = yyvsp[-2].value || yyvsp[0].value; - ; - break;} -case 4: -#line 156 "./cond.y" -{ - yyval.value = yyvsp[0].value; - ; - break;} -case 5: -#line 160 "./cond.y" -{ - yyval.value = yyvsp[-2].value && yyvsp[0].value; - ; - break;} -case 6: -#line 167 "./cond.y" -{ - yyval.value = yyvsp[0].value; - ; - break;} -case 7: -#line 171 "./cond.y" -{ - yyval.value = ! yyvsp[0].value; - ; - break;} -case 8: -#line 179 "./cond.y" -{ - yyval.value = yyvsp[0].value; - ; - break;} -case 9: -#line 183 "./cond.y" -{ - yyval.value = atoiW(yyvsp[0].string); - ; - break;} -case 10: -#line 187 "./cond.y" -{ - yyval.value = yyvsp[-1].fn_comp_int( yyvsp[-2].value, yyvsp[0].value ); - ; - break;} -case 11: -#line 191 "./cond.y" -{ - yyval.value = yyvsp[-1].fn_comp_str( yyvsp[-2].string, yyvsp[0].string, FALSE ); - ; - break;} -case 12: -#line 195 "./cond.y" -{ - yyval.value = yyvsp[-1].fn_comp_str( yyvsp[-3].string, yyvsp[0].string, TRUE ); - ; - break;} -case 13: -#line 199 "./cond.y" -{ - yyval.value = yyvsp[-1].fn_comp_m1( yyvsp[-2].string, yyvsp[0].value ); - ; - break;} -case 14: -#line 203 "./cond.y" -{ - yyval.value = yyvsp[-1].fn_comp_m2( yyvsp[-2].value, yyvsp[0].string ); - ; - break;} -case 15: -#line 207 "./cond.y" -{ - yyval.value = yyvsp[-1].value; - ; - break;} -case 16: -#line 215 "./cond.y" -{ - yyval.fn_comp_int = comp_eq_i; - ; - break;} -case 17: -#line 219 "./cond.y" -{ - yyval.fn_comp_int = comp_ne_i; - ; - break;} -case 18: -#line 223 "./cond.y" -{ - yyval.fn_comp_int = comp_lt_i; - ; - break;} -case 19: -#line 227 "./cond.y" -{ - yyval.fn_comp_int = comp_gt_i; - ; - break;} -case 20: -#line 231 "./cond.y" -{ - yyval.fn_comp_int = comp_le_i; - ; - break;} -case 21: -#line 235 "./cond.y" -{ - yyval.fn_comp_int = comp_ge_i; - ; - break;} -case 22: -#line 240 "./cond.y" -{ - yyval.fn_comp_int = comp_bitand; - ; - break;} -case 23: -#line 244 "./cond.y" -{ - yyval.fn_comp_int = comp_highcomp; - ; - break;} -case 24: -#line 248 "./cond.y" -{ - yyval.fn_comp_int = comp_lowcomp; - ; - break;} -case 25: -#line 256 "./cond.y" -{ - yyval.fn_comp_str = comp_eq_s; - ; - break;} -case 26: -#line 260 "./cond.y" -{ - yyval.fn_comp_str = comp_ne_s; - ; - break;} -case 27: -#line 264 "./cond.y" -{ - yyval.fn_comp_str = comp_lt_s; - ; - break;} -case 28: -#line 268 "./cond.y" -{ - yyval.fn_comp_str = comp_gt_s; - ; - break;} -case 29: -#line 272 "./cond.y" -{ - yyval.fn_comp_str = comp_le_s; - ; - break;} -case 30: -#line 276 "./cond.y" -{ - yyval.fn_comp_str = comp_ge_s; - ; - break;} -case 31: -#line 281 "./cond.y" -{ - yyval.fn_comp_str = comp_substring; - ; - break;} -case 32: -#line 285 "./cond.y" -{ - yyval.fn_comp_str = comp_start; - ; - break;} -case 33: -#line 289 "./cond.y" -{ - yyval.fn_comp_str = comp_end; - ; - break;} -case 34: -#line 297 "./cond.y" -{ - yyval.fn_comp_m1 = comp_eq_m1; - ; - break;} -case 35: -#line 301 "./cond.y" -{ - yyval.fn_comp_m1 = comp_ne_m1; - ; - break;} -case 36: -#line 305 "./cond.y" -{ - yyval.fn_comp_m1 = comp_lt_m1; - ; - break;} -case 37: -#line 309 "./cond.y" -{ - yyval.fn_comp_m1 = comp_gt_m1; - ; - break;} -case 38: -#line 313 "./cond.y" -{ - yyval.fn_comp_m1 = comp_le_m1; - ; - break;} -case 39: -#line 317 "./cond.y" -{ - yyval.fn_comp_m1 = comp_ge_m1; - ; - break;} -case 40: -#line 322 "./cond.y" -{ - yyval.fn_comp_m1 = 0; - ; - break;} -case 41: -#line 326 "./cond.y" -{ - yyval.fn_comp_m1 = 0; - ; - break;} -case 42: -#line 330 "./cond.y" -{ - yyval.fn_comp_m1 = 0; - ; - break;} -case 43: -#line 338 "./cond.y" -{ - yyval.fn_comp_m2 = comp_eq_m2; - ; - break;} -case 44: -#line 342 "./cond.y" -{ - yyval.fn_comp_m2 = comp_ne_m2; - ; - break;} -case 45: -#line 346 "./cond.y" -{ - yyval.fn_comp_m2 = comp_lt_m2; - ; - break;} -case 46: -#line 350 "./cond.y" -{ - yyval.fn_comp_m2 = comp_gt_m2; - ; - break;} -case 47: -#line 354 "./cond.y" -{ - yyval.fn_comp_m2 = comp_le_m2; - ; - break;} -case 48: -#line 358 "./cond.y" -{ - yyval.fn_comp_m2 = comp_ge_m2; - ; - break;} -case 49: -#line 363 "./cond.y" -{ - yyval.fn_comp_m2 = 0; - ; - break;} -case 50: -#line 367 "./cond.y" -{ - yyval.fn_comp_m2 = 0; - ; - break;} -case 51: -#line 371 "./cond.y" -{ - yyval.fn_comp_m2 = 0; - ; - break;} -case 52: -#line 378 "./cond.y" -{ - yyval.value = yyvsp[0].value; - ; - break;} -case 53: -#line 382 "./cond.y" -{ - yyval.value = yyvsp[0].value; - ; - break;} -case 54: -#line 389 "./cond.y" -{ - yyval.string = yyvsp[0].string; - ; - break;} -case 55: -#line 393 "./cond.y" -{ - yyval.string = yyvsp[0].string; - ; - break;} -case 56: -#line 400 "./cond.y" -{ - yyval.string = COND_GetLiteral(&yyvsp[0].str); - if( !yyval.string ) - YYABORT; - ; - break;} -case 57: -#line 409 "./cond.y" -{ - COND_input* cond = (COND_input*) info; - INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; - - MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action ); - yyval.value = action; - HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); - ; - break;} -case 58: -#line 418 "./cond.y" -{ - COND_input* cond = (COND_input*) info; - INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; - - MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action ); - yyval.value = install; - HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); - ; - break;} -case 59: -#line 427 "./cond.y" -{ - COND_input* cond = (COND_input*) info; - INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; - - MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action ); - yyval.value = action; - HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); - ; - break;} -case 60: -#line 436 "./cond.y" -{ - COND_input* cond = (COND_input*) info; - INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; - - MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action ); - yyval.value = install; - HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); - ; - break;} -case 61: -#line 448 "./cond.y" -{ - DWORD sz; - COND_input* cond = (COND_input*) info; - yyval.string = HeapAlloc( GetProcessHeap(), 0, 0x100*sizeof (WCHAR) ); - - /* Lookup the identifier */ - - sz=0x100; - if (MSI_GetPropertyW(cond->package,yyvsp[0].string,yyval.string,&sz) != ERROR_SUCCESS) - { - yyval.string[0]=0; - } - HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); - ; - break;} -case 62: -#line 463 "./cond.y" -{ - UINT len = GetEnvironmentVariableW( yyvsp[0].string, NULL, 0 ); - if( len++ ) - { - yyval.string = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR) ); - if( yyval.string ) - GetEnvironmentVariableW( yyvsp[0].string, yyval.string, len ); - } - HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); - ; - break;} -case 63: -#line 477 "./cond.y" -{ - yyval.string = COND_GetString(&yyvsp[0].str); - if( !yyval.string ) - YYABORT; - ; - break;} -case 64: -#line 486 "./cond.y" -{ - LPWSTR szNum = COND_GetString(&yyvsp[0].str); - if( !szNum ) - YYABORT; - yyval.value = atoiW( szNum ); - HeapFree( GetProcessHeap(), 0, szNum ); - ; - break;} -} - -#line 705 "/usr/share/bison/bison.simple" - - - yyvsp -= yylen; - yyssp -= yylen; -#if YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG - if (yydebug) - { - short *yyssp1 = yyss - 1; - YYFPRINTF (stderr, "state stack now"); - while (yyssp1 != yyssp) - YYFPRINTF (stderr, " %d", *++yyssp1); - YYFPRINTF (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; -#if YYLSP_NEEDED - *++yylsp = yyloc; -#endif - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - YYSIZE_T yysize = 0; - char *yymsg; - int yyx, yycount; - - yycount = 0; - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) - if (yycheck[yyx + yyn] == yyx) - yysize += yystrlen (yytname[yyx]) + 15, yycount++; - yysize += yystrlen ("parse error, unexpected ") + 1; - yysize += yystrlen (yytname[YYTRANSLATE (yychar)]); - yymsg = (char *) YYSTACK_ALLOC (yysize); - if (yymsg != 0) - { - char *yyp = yystpcpy (yymsg, "parse error, unexpected "); - yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]); - - if (yycount < 5) - { - yycount = 0; - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); - yyx++) - if (yycheck[yyx + yyn] == yyx) - { - const char *yyq = ! yycount ? ", expecting " : " or "; - yyp = yystpcpy (yyp, yyq); - yyp = yystpcpy (yyp, yytname[yyx]); - yycount++; - } - } - yyerror (yymsg); - YYSTACK_FREE (yymsg); - } - else - yyerror ("parse error; also virtual memory exhausted"); - } - else -#endif /* defined (YYERROR_VERBOSE) */ - yyerror ("parse error"); - } - goto yyerrlab1; - - -/*--------------------------------------------------. -| yyerrlab1 -- error raised explicitly by an action | -`--------------------------------------------------*/ -yyerrlab1: - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - YYDPRINTF ((stderr, "Discarding token %d (%s).\n", - yychar, yytname[yychar1])); - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - - -/*-------------------------------------------------------------------. -| yyerrdefault -- current state does not do anything special for the | -| error token. | -`-------------------------------------------------------------------*/ -yyerrdefault: -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - - /* If its default is to accept any token, ok. Otherwise pop it. */ - yyn = yydefact[yystate]; - if (yyn) - goto yydefault; -#endif - - -/*---------------------------------------------------------------. -| yyerrpop -- pop the current state because it cannot handle the | -| error token | -`---------------------------------------------------------------*/ -yyerrpop: - if (yyssp == yyss) - YYABORT; - yyvsp--; - yystate = *--yyssp; -#if YYLSP_NEEDED - yylsp--; -#endif - -#if YYDEBUG - if (yydebug) - { - short *yyssp1 = yyss - 1; - YYFPRINTF (stderr, "Error: state stack now"); - while (yyssp1 != yyssp) - YYFPRINTF (stderr, " %d", *++yyssp1); - YYFPRINTF (stderr, "\n"); - } -#endif - -/*--------------. -| yyerrhandle. | -`--------------*/ -yyerrhandle: - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - - YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; -#if YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -/*---------------------------------------------. -| yyoverflowab -- parser overflow comes here. | -`---------------------------------------------*/ -yyoverflowlab: - yyerror ("parser stack overflow"); - yyresult = 2; - /* Fall through. */ - -yyreturn: -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - return yyresult; -} -#line 495 "./cond.y" - - - -static int COND_IsAlpha( WCHAR x ) -{ - return( ( ( x >= 'A' ) && ( x <= 'Z' ) ) || - ( ( x >= 'a' ) && ( x <= 'z' ) ) || - ( ( x == '_' ) ) ); -} - -static int COND_IsNumber( WCHAR x ) -{ - return( (( x >= '0' ) && ( x <= '9' )) || (x =='-') || (x =='.') ); -} - - -/* the mess of comparison functions */ - -static INT comp_lt_i(INT a, INT b) -{ return (a < b); } -static INT comp_gt_i(INT a, INT b) -{ return (a > b); } -static INT comp_le_i(INT a, INT b) -{ return (a <= b); } -static INT comp_ge_i(INT a, INT b) -{ return (a >= b); } -static INT comp_eq_i(INT a, INT b) -{ return (a == b); } -static INT comp_ne_i(INT a, INT b) -{ return (a != b); } -static INT comp_bitand(INT a, INT b) -{ return a & b;} -static INT comp_highcomp(INT a, INT b) -{ return HIWORD(a)==b; } -static INT comp_lowcomp(INT a, INT b) -{ return LOWORD(a)==b; } - -static INT comp_eq_s(LPWSTR a, LPWSTR b, BOOL casless) -{ if (casless) return !strcmpiW(a,b); else return !strcmpW(a,b);} -static INT comp_ne_s(LPWSTR a, LPWSTR b, BOOL casless) -{ if (casless) return strcmpiW(a,b); else return strcmpW(a,b);} -static INT comp_lt_s(LPWSTR a, LPWSTR b, BOOL casless) -{ if (casless) return strcmpiW(a,b)<0; else return strcmpW(a,b)<0;} -static INT comp_gt_s(LPWSTR a, LPWSTR b, BOOL casless) -{ if (casless) return strcmpiW(a,b)>0; else return strcmpW(a,b)>0;} -static INT comp_le_s(LPWSTR a, LPWSTR b, BOOL casless) -{ if (casless) return strcmpiW(a,b)<=0; else return strcmpW(a,b)<=0;} -static INT comp_ge_s(LPWSTR a, LPWSTR b, BOOL casless) -{ if (casless) return strcmpiW(a,b)>=0; else return strcmpW(a,b)>=0;} -static INT comp_substring(LPWSTR a, LPWSTR b, BOOL casless) -/* ERROR NOT WORKING REWRITE */ -{ if (casless) return strstrW(a,b)!=NULL; else return strstrW(a,b)!=NULL;} -static INT comp_start(LPWSTR a, LPWSTR b, BOOL casless) -{ if (casless) return strncmpiW(a,b,strlenW(b))==0; - else return strncmpW(a,b,strlenW(b))==0;} -static INT comp_end(LPWSTR a, LPWSTR b, BOOL casless) -{ - int i = strlenW(a); - int j = strlenW(b); - if (j>i) - return 0; - if (casless) return (!strcmpiW(&a[i-j-1],b)); - else return (!strcmpW(&a[i-j-1],b)); -} - - -static INT comp_eq_m1(LPWSTR a, INT b) -{ if (COND_IsNumber(a[0])) return atoiW(a)==b; else return 0;} -static INT comp_ne_m1(LPWSTR a, INT b) -{ if (COND_IsNumber(a[0])) return atoiW(a)!=b; else return 1;} -static INT comp_lt_m1(LPWSTR a, INT b) -{ if (COND_IsNumber(a[0])) return atoiW(a)b; else return 0;} -static INT comp_le_m1(LPWSTR a, INT b) -{ if (COND_IsNumber(a[0])) return atoiW(a)<=b; else return 0;} -static INT comp_ge_m1(LPWSTR a, INT b) -{ if (COND_IsNumber(a[0])) return atoiW(a)>=b; else return 0;} - -static INT comp_eq_m2(INT a, LPWSTR b) -{ if (COND_IsNumber(b[0])) return a == atoiW(b); else return 0;} -static INT comp_ne_m2(INT a, LPWSTR b) -{ if (COND_IsNumber(b[0])) return a != atoiW(b); else return 1;} -static INT comp_lt_m2(INT a, LPWSTR b) -{ if (COND_IsNumber(b[0])) return a < atoiW(b); else return 0;} -static INT comp_gt_m2(INT a, LPWSTR b) -{ if (COND_IsNumber(b[0])) return a > atoiW(b); else return 0;} -static INT comp_le_m2(INT a, LPWSTR b) -{ if (COND_IsNumber(b[0])) return a <= atoiW(b); else return 0;} -static INT comp_ge_m2(INT a, LPWSTR b) -{ if (COND_IsNumber(b[0])) return a >= atoiW(b); else return 0;} - - - -static int COND_IsIdent( WCHAR x ) -{ - return( COND_IsAlpha( x ) || COND_IsNumber( x ) || ( x == '_' ) - || ( x == '#' ) || (x == '.') ); -} - -static int COND_GetOne( struct cond_str *str, COND_input *cond ) -{ - static const WCHAR szNot[] = {'N','O','T',0}; - static const WCHAR szAnd[] = {'A','N','D',0}; - static const WCHAR szOr[] = {'O','R',0}; - WCHAR ch; - int rc, len = 1; - - str->data = &cond->str[cond->n]; - - ch = str->data[0]; - switch( ch ) - { - case 0: return 0; - case '(': rc = COND_LPAR; break; - case ')': rc = COND_RPAR; break; - case '&': rc = COND_AMPER; break; - case '!': rc = COND_EXCLAM; break; - case '$': rc = COND_DOLLARS; break; - case '?': rc = COND_QUESTION; break; - case '%': rc = COND_PERCENT; break; - case ' ': rc = COND_SPACE; break; - case '=': rc = COND_EQ; break; - case '~': rc = COND_TILDA; break; - case '<': rc = COND_LT; break; - case '>': rc = COND_GT; break; - case '"': - { - const WCHAR *ch2 = str->data + 1; - - - while ( *ch2 && *ch2 != '"' ) - ++ch2; - if (*ch2 == '"') - { - len = ch2 - str->data + 1; - rc = COND_LITER; - break; - } - } - ERR("Unterminated string\n"); - rc = COND_ERROR; - break; - default: - if( COND_IsAlpha( ch ) ) - { - while( COND_IsIdent( str->data[len] ) ) - len++; - rc = COND_IDENT; - break; - } - - if( COND_IsNumber( ch ) ) - { - while( COND_IsNumber( str->data[len] ) ) - len++; - rc = COND_NUMBER; - break; - } - - ERR("Got unknown character %c(%x)\n",ch,ch); - rc = COND_ERROR; - break; - } - - /* keyword identifiers */ - if( rc == COND_IDENT ) - { - if( (len==3) && (strncmpiW(str->data,szNot,len)==0) ) - rc = COND_NOT; - else if( (len==3) && (strncmpiW(str->data,szAnd,len)==0) ) - rc = COND_AND; - else if( (len==2) && (strncmpiW(str->data,szOr,len)==0) ) - rc = COND_OR; - } - - cond->n += len; - str->len = len; - - return rc; -} - -static int COND_lex( void *COND_lval, COND_input *cond ) -{ - int rc; - struct cond_str *str = COND_lval; - - do { - rc = COND_GetOne( str, cond ); - } while (rc == COND_SPACE); - - return rc; -} - -static LPWSTR COND_GetString( struct cond_str *str ) -{ - LPWSTR ret; - - ret = HeapAlloc( GetProcessHeap(), 0, (str->len+1) * sizeof (WCHAR) ); - if( ret ) - { - strncpyW( ret, str->data, str->len ); - ret[str->len]=0; - } - TRACE("Got identifier %s\n",debugstr_w(ret)); - return ret; -} - -static LPWSTR COND_GetLiteral( struct cond_str *str ) -{ - LPWSTR ret; - - ret = HeapAlloc( GetProcessHeap(), 0, (str->len-1) * sizeof (WCHAR) ); - if( ret ) - { - memcpy( ret, str->data+1, (str->len-2) * sizeof(WCHAR) ); - ret[str->len - 2]=0; - } - TRACE("Got literal %s\n",debugstr_w(ret)); - return ret; -} - -static int COND_error(char *str) -{ - return 0; -} - -MSICONDITION MSI_EvaluateConditionW( MSIPACKAGE *package, LPCWSTR szCondition ) -{ - COND_input cond; - MSICONDITION r; - - cond.package = package; - cond.str = szCondition; - cond.n = 0; - cond.result = -1; - - TRACE("Evaluating %s\n",debugstr_w(szCondition)); - - if( !COND_parse( &cond ) ) - r = cond.result; - else - r = MSICONDITION_ERROR; - - TRACE("Evaluates to %i\n",r); - return r; -} - -MSICONDITION WINAPI MsiEvaluateConditionW( MSIHANDLE hInstall, LPCWSTR szCondition ) -{ - MSIPACKAGE *package; - UINT ret; - - package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE); - if( !package) - return ERROR_INVALID_HANDLE; - ret = MSI_EvaluateConditionW( package, szCondition ); - msiobj_release( &package->hdr ); - return ret; -} - -MSICONDITION WINAPI MsiEvaluateConditionA( MSIHANDLE hInstall, LPCSTR szCondition ) -{ - LPWSTR szwCond = NULL; - MSICONDITION r; - - if( szCondition ) - { - UINT len = MultiByteToWideChar( CP_ACP, 0, szCondition, -1, NULL, 0 ); - szwCond = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) ); - MultiByteToWideChar( CP_ACP, 0, szCondition, -1, szwCond, len ); - } - - r = MsiEvaluateConditionW( hInstall, szwCond ); - - if( szwCond ) - HeapFree( GetProcessHeap(), 0, szwCond ); - - return r; -} +/* A Bison parser, made by GNU Bison 1.875b. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Written by Richard Stallman by simplifying the original so called + ``semantic'' parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* If NAME_PREFIX is specified substitute the variables and functions + names. */ +#define yyparse COND_parse +#define yylex COND_lex +#define yyerror COND_error +#define yylval COND_lval +#define yychar COND_char +#define yydebug COND_debug +#define yynerrs COND_nerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + COND_SPACE = 258, + COND_EOF = 259, + COND_OR = 260, + COND_AND = 261, + COND_NOT = 262, + COND_LT = 263, + COND_GT = 264, + COND_EQ = 265, + COND_LPAR = 266, + COND_RPAR = 267, + COND_TILDA = 268, + COND_PERCENT = 269, + COND_DOLLARS = 270, + COND_QUESTION = 271, + COND_AMPER = 272, + COND_EXCLAM = 273, + COND_IDENT = 274, + COND_NUMBER = 275, + COND_LITER = 276, + COND_ERROR = 277 + }; +#endif +#define COND_SPACE 258 +#define COND_EOF 259 +#define COND_OR 260 +#define COND_AND 261 +#define COND_NOT 262 +#define COND_LT 263 +#define COND_GT 264 +#define COND_EQ 265 +#define COND_LPAR 266 +#define COND_RPAR 267 +#define COND_TILDA 268 +#define COND_PERCENT 269 +#define COND_DOLLARS 270 +#define COND_QUESTION 271 +#define COND_AMPER 272 +#define COND_EXCLAM 273 +#define COND_IDENT 274 +#define COND_NUMBER 275 +#define COND_LITER 276 +#define COND_ERROR 277 + + + + +/* Copy the first part of user declarations. */ +#line 1 "./cond.y" + + +/* + * Implementation of the Microsoft Installer (msi.dll) + * + * Copyright 2003 Mike McCormack 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include + +#include "windef.h" +#include "winbase.h" +#include "wine/debug.h" +#include "wine/unicode.h" + +#include "msi.h" +#include "msiquery.h" +#include "msipriv.h" + +#define YYLEX_PARAM info +#define YYPARSE_PARAM info + +static int COND_error(char *str); + +WINE_DEFAULT_DEBUG_CHANNEL(msi); + +typedef struct tag_yyinput +{ + MSIPACKAGE *package; + LPCWSTR str; + INT n; + MSICONDITION result; +} COND_input; + +struct cond_str { + LPCWSTR data; + INT len; +}; + +static LPWSTR COND_GetString( struct cond_str *str ); +static LPWSTR COND_GetLiteral( struct cond_str *str ); +static int COND_lex( void *COND_lval, COND_input *info); + +typedef INT (*comp_int)(INT a, INT b); +typedef INT (*comp_str)(LPWSTR a, LPWSTR b, BOOL caseless); +typedef INT (*comp_m1)(LPWSTR a,int b); +typedef INT (*comp_m2)(int a,LPWSTR b); + +static INT comp_lt_i(INT a, INT b); +static INT comp_gt_i(INT a, INT b); +static INT comp_le_i(INT a, INT b); +static INT comp_ge_i(INT a, INT b); +static INT comp_eq_i(INT a, INT b); +static INT comp_ne_i(INT a, INT b); +static INT comp_bitand(INT a, INT b); +static INT comp_highcomp(INT a, INT b); +static INT comp_lowcomp(INT a, INT b); + +static INT comp_eq_s(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_ne_s(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_lt_s(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_gt_s(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_le_s(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_ge_s(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_substring(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_start(LPWSTR a, LPWSTR b, BOOL casless); +static INT comp_end(LPWSTR a, LPWSTR b, BOOL casless); + +static INT comp_eq_m1(LPWSTR a, INT b); +static INT comp_ne_m1(LPWSTR a, INT b); +static INT comp_lt_m1(LPWSTR a, INT b); +static INT comp_gt_m1(LPWSTR a, INT b); +static INT comp_le_m1(LPWSTR a, INT b); +static INT comp_ge_m1(LPWSTR a, INT b); + +static INT comp_eq_m2(INT a, LPWSTR b); +static INT comp_ne_m2(INT a, LPWSTR b); +static INT comp_lt_m2(INT a, LPWSTR b); +static INT comp_gt_m2(INT a, LPWSTR b); +static INT comp_le_m2(INT a, LPWSTR b); +static INT comp_ge_m2(INT a, LPWSTR b); + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 106 "./cond.y" +typedef union YYSTYPE { + struct cond_str str; + LPWSTR string; + INT value; + comp_int fn_comp_int; + comp_str fn_comp_str; + comp_m1 fn_comp_m1; + comp_m2 fn_comp_m2; +} YYSTYPE; +/* Line 191 of yacc.c. */ +#line 241 "cond.tab.c" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 214 of yacc.c. */ +#line 253 "cond.tab.c" + +#if ! defined (yyoverflow) || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# if YYSTACK_USE_ALLOCA +# define YYSTACK_ALLOC alloca +# else +# ifndef YYSTACK_USE_ALLOCA +# if defined (alloca) || defined (_ALLOCA_H) +# define YYSTACK_ALLOC alloca +# else +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC malloc +# define YYSTACK_FREE free +# endif +#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + register YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined (__STDC__) || defined (__cplusplus) + typedef signed char yysigned_char; +#else + typedef short yysigned_char; +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 30 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 146 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 23 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 17 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 65 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 74 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 277 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const unsigned char yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const unsigned char yyprhs[] = +{ + 0, 0, 3, 5, 7, 11, 13, 17, 19, 22, + 24, 26, 30, 34, 39, 43, 47, 51, 53, 56, + 58, 60, 63, 66, 69, 72, 75, 77, 80, 82, + 84, 87, 90, 93, 96, 99, 101, 104, 106, 108, + 111, 114, 117, 120, 123, 125, 128, 130, 132, 135, + 138, 141, 144, 147, 149, 151, 153, 155, 157, 160, + 163, 166, 169, 171, 174, 176 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yysigned_char yyrhs[] = +{ + 24, 0, -1, 25, -1, 26, -1, 26, 5, 25, + -1, 27, -1, 26, 6, 27, -1, 28, -1, 7, + 28, -1, 33, -1, 34, -1, 33, 29, 33, -1, + 34, 30, 34, -1, 34, 13, 30, 34, -1, 34, + 31, 33, -1, 33, 32, 34, -1, 11, 25, 12, + -1, 10, -1, 8, 9, -1, 8, -1, 9, -1, + 8, 10, -1, 9, 10, -1, 9, 8, -1, 8, + 8, -1, 9, 9, -1, 10, -1, 8, 9, -1, + 8, -1, 9, -1, 8, 10, -1, 9, 10, -1, + 9, 8, -1, 8, 8, -1, 9, 9, -1, 10, + -1, 8, 9, -1, 8, -1, 9, -1, 8, 10, + -1, 9, 10, -1, 9, 8, -1, 8, 8, -1, + 9, 9, -1, 10, -1, 8, 9, -1, 8, -1, + 9, -1, 8, 10, -1, 9, 10, -1, 9, 8, + -1, 8, 8, -1, 9, 9, -1, 36, -1, 39, + -1, 37, -1, 35, -1, 21, -1, 15, 38, -1, + 16, 38, -1, 17, 38, -1, 18, 38, -1, 38, + -1, 14, 38, -1, 19, -1, 20, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const unsigned short yyrline[] = +{ + 0, 136, 136, 144, 148, 155, 159, 166, 170, 178, + 182, 186, 190, 194, 198, 202, 206, 214, 218, 222, + 226, 230, 234, 239, 243, 247, 255, 259, 263, 267, + 271, 275, 280, 284, 288, 296, 300, 304, 308, 312, + 316, 321, 325, 329, 337, 341, 345, 349, 353, 357, + 362, 366, 370, 377, 381, 388, 392, 399, 408, 417, + 426, 435, 447, 470, 484, 493 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE +/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "COND_SPACE", "COND_EOF", "COND_OR", + "COND_AND", "COND_NOT", "COND_LT", "COND_GT", "COND_EQ", "COND_LPAR", + "COND_RPAR", "COND_TILDA", "COND_PERCENT", "COND_DOLLARS", + "COND_QUESTION", "COND_AMPER", "COND_EXCLAM", "COND_IDENT", + "COND_NUMBER", "COND_LITER", "COND_ERROR", "$accept", "condition", + "expression", "boolean_term", "boolean_factor", "term", "comp_op_i", + "comp_op_s", "comp_op_m1", "comp_op_m2", "value_i", "value_s", + "literal", "symbol_i", "symbol_s", "identifier", "integer", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const unsigned short yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const unsigned char yyr1[] = +{ + 0, 23, 24, 25, 25, 26, 26, 27, 27, 28, + 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 33, 33, 34, 34, 35, 36, 36, + 36, 36, 37, 37, 38, 39 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const unsigned char yyr2[] = +{ + 0, 2, 1, 1, 3, 1, 3, 1, 2, 1, + 1, 3, 3, 4, 3, 3, 3, 1, 2, 1, + 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, + 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, + 2, 2, 2, 2, 1, 2, 1, 1, 2, 2, + 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 1, 2, 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const unsigned char yydefact[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, + 57, 0, 2, 3, 5, 7, 9, 10, 56, 53, + 55, 62, 54, 8, 0, 63, 58, 59, 60, 61, + 1, 0, 0, 19, 20, 17, 0, 0, 37, 38, + 35, 0, 0, 0, 16, 4, 6, 24, 18, 21, + 23, 25, 22, 11, 15, 42, 36, 39, 41, 43, + 40, 28, 29, 26, 0, 12, 14, 33, 27, 30, + 32, 34, 31, 13 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yysigned_char yydefgoto[] = +{ + -1, 11, 12, 13, 14, 15, 36, 42, 43, 37, + 16, 17, 18, 19, 20, 21, 22 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -37 +static const short yypact[] = +{ + -4, 51, -4, -11, -11, -11, -11, -11, -37, -37, + -37, 18, -37, -1, -37, -37, 49, 14, -37, -37, + -37, -37, -37, -37, 19, -37, -37, -37, -37, -37, + -37, -4, -4, 11, 25, 34, 111, 59, 28, 42, + 60, 130, 59, 111, -37, -37, -37, 63, 69, 72, + 73, 81, 82, -37, -37, 85, 91, 94, 95, 103, + 104, 133, 136, -37, 59, -37, -37, -37, -37, -37, + -37, -37, -37, -37 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const short yypgoto[] = +{ + -37, -37, -2, -37, -6, 39, -37, 0, -37, -37, + -34, -36, -37, -37, -37, 129, -37 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -53 +static const yysigned_char yytable[] = +{ + 24, 54, 53, 1, 31, 32, 65, 2, 8, 66, + 3, 4, 5, 6, 7, 8, 9, 10, 30, 47, + 48, 49, 38, 39, 40, -46, 46, 41, 73, 45, + -46, 44, -46, 50, 51, 52, 55, 56, 57, -47, + 23, 64, -28, 0, -47, 0, -47, -28, -44, -28, + 58, 59, 60, -44, 0, -44, -29, 33, 34, 35, + 0, -29, 2, -29, 0, 3, 4, 5, 6, 7, + 8, 9, 10, 3, -26, 0, 0, -51, 8, -26, + 10, -26, -51, -45, -51, 0, -48, -50, -45, 0, + -45, -48, -50, -48, -50, -52, -49, 0, 0, -33, + -52, -49, -52, -49, -33, -27, -33, 0, -30, -32, + -27, 0, -27, -30, -32, -30, -32, -34, -31, 0, + 0, 0, -34, -31, -34, -31, 4, 5, 6, 7, + 0, 9, 25, 26, 27, 28, 29, 0, 61, 62, + 63, 67, 68, 69, 70, 71, 72 +}; + +static const yysigned_char yycheck[] = +{ + 2, 37, 36, 7, 5, 6, 42, 11, 19, 43, + 14, 15, 16, 17, 18, 19, 20, 21, 0, 8, + 9, 10, 8, 9, 10, 14, 32, 13, 64, 31, + 19, 12, 21, 8, 9, 10, 8, 9, 10, 14, + 1, 41, 14, -1, 19, -1, 21, 19, 14, 21, + 8, 9, 10, 19, -1, 21, 14, 8, 9, 10, + -1, 19, 11, 21, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 14, 14, -1, -1, 14, 19, 19, + 21, 21, 19, 14, 21, -1, 14, 14, 19, -1, + 21, 19, 19, 21, 21, 14, 14, -1, -1, 14, + 19, 19, 21, 21, 19, 14, 21, -1, 14, 14, + 19, -1, 21, 19, 19, 21, 21, 14, 14, -1, + -1, -1, 19, 19, 21, 21, 15, 16, 17, 18, + -1, 20, 3, 4, 5, 6, 7, -1, 8, 9, + 10, 8, 9, 10, 8, 9, 10 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const unsigned char yystos[] = +{ + 0, 7, 11, 14, 15, 16, 17, 18, 19, 20, + 21, 24, 25, 26, 27, 28, 33, 34, 35, 36, + 37, 38, 39, 28, 25, 38, 38, 38, 38, 38, + 0, 5, 6, 8, 9, 10, 29, 32, 8, 9, + 10, 13, 30, 31, 12, 25, 27, 8, 9, 10, + 8, 9, 10, 33, 34, 8, 9, 10, 8, 9, + 10, 8, 9, 10, 30, 34, 33, 8, 9, 10, + 8, 9, 10, 34 +}; + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int +#endif + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror ("syntax error: cannot back up");\ + YYERROR; \ + } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +/* YYLLOC_DEFAULT -- Compute the default location (before the actions + are run). */ + +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.first_line = Rhs[1].first_line; \ + Current.first_column = Rhs[1].first_column; \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; +#endif + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +# define YYDSYMPRINT(Args) \ +do { \ + if (yydebug) \ + yysymprint Args; \ +} while (0) + +# define YYDSYMPRINTF(Title, Token, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yysymprint (stderr, \ + Token, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (cinluded). | +`------------------------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_stack_print (short *bottom, short *top) +#else +static void +yy_stack_print (bottom, top) + short *bottom; + short *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_reduce_print (int yyrule) +#else +static void +yy_reduce_print (yyrule) + int yyrule; +#endif +{ + int yyi; + unsigned int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", + yyrule - 1, yylno); + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) + YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); + YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YYDSYMPRINT(Args) +# define YYDSYMPRINTF(Title, Token, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#if YYMAXDEPTH == 0 +# undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif +{ + register const char *yys = yystr; + + while (*yys++ != '\0') + continue; + + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif +{ + register char *yyd = yydest; + register const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +#endif /* !YYERROR_VERBOSE */ + + + +#if YYDEBUG +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) +#else +static void +yysymprint (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + + if (yytype < YYNTOKENS) + { + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); +# ifdef YYPRINT + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + } + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + switch (yytype) + { + default: + break; + } + YYFPRINTF (yyoutput, ")"); +} + +#endif /* ! YYDEBUG */ +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yydestruct (int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yytype, yyvaluep) + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM); +# else +int yyparse (); +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM) +# else +int yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + register int yystate; + register int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short yyssa[YYINITDEPTH]; + short *yyss = yyssa; + register short *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + register YYSTYPE *yyvsp; + + + +#define YYPOPSTACK (yyvsp--, yyssp--) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ + int yylen; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyoverflowlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyoverflowlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + short *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyoverflowlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; + + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + yystate = yyn; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 137 "./cond.y" + { + COND_input* cond = (COND_input*) info; + cond->result = yyvsp[0].value; + ;} + break; + + case 3: +#line 145 "./cond.y" + { + yyval.value = yyvsp[0].value; + ;} + break; + + case 4: +#line 149 "./cond.y" + { + yyval.value = yyvsp[-2].value || yyvsp[0].value; + ;} + break; + + case 5: +#line 156 "./cond.y" + { + yyval.value = yyvsp[0].value; + ;} + break; + + case 6: +#line 160 "./cond.y" + { + yyval.value = yyvsp[-2].value && yyvsp[0].value; + ;} + break; + + case 7: +#line 167 "./cond.y" + { + yyval.value = yyvsp[0].value; + ;} + break; + + case 8: +#line 171 "./cond.y" + { + yyval.value = ! yyvsp[0].value; + ;} + break; + + case 9: +#line 179 "./cond.y" + { + yyval.value = yyvsp[0].value; + ;} + break; + + case 10: +#line 183 "./cond.y" + { + yyval.value = yyvsp[0].string[0] ? MSICONDITION_TRUE : MSICONDITION_FALSE; + ;} + break; + + case 11: +#line 187 "./cond.y" + { + yyval.value = yyvsp[-1].fn_comp_int( yyvsp[-2].value, yyvsp[0].value ); + ;} + break; + + case 12: +#line 191 "./cond.y" + { + yyval.value = yyvsp[-1].fn_comp_str( yyvsp[-2].string, yyvsp[0].string, FALSE ); + ;} + break; + + case 13: +#line 195 "./cond.y" + { + yyval.value = yyvsp[-1].fn_comp_str( yyvsp[-3].string, yyvsp[0].string, TRUE ); + ;} + break; + + case 14: +#line 199 "./cond.y" + { + yyval.value = yyvsp[-1].fn_comp_m1( yyvsp[-2].string, yyvsp[0].value ); + ;} + break; + + case 15: +#line 203 "./cond.y" + { + yyval.value = yyvsp[-1].fn_comp_m2( yyvsp[-2].value, yyvsp[0].string ); + ;} + break; + + case 16: +#line 207 "./cond.y" + { + yyval.value = yyvsp[-1].value; + ;} + break; + + case 17: +#line 215 "./cond.y" + { + yyval.fn_comp_int = comp_eq_i; + ;} + break; + + case 18: +#line 219 "./cond.y" + { + yyval.fn_comp_int = comp_ne_i; + ;} + break; + + case 19: +#line 223 "./cond.y" + { + yyval.fn_comp_int = comp_lt_i; + ;} + break; + + case 20: +#line 227 "./cond.y" + { + yyval.fn_comp_int = comp_gt_i; + ;} + break; + + case 21: +#line 231 "./cond.y" + { + yyval.fn_comp_int = comp_le_i; + ;} + break; + + case 22: +#line 235 "./cond.y" + { + yyval.fn_comp_int = comp_ge_i; + ;} + break; + + case 23: +#line 240 "./cond.y" + { + yyval.fn_comp_int = comp_bitand; + ;} + break; + + case 24: +#line 244 "./cond.y" + { + yyval.fn_comp_int = comp_highcomp; + ;} + break; + + case 25: +#line 248 "./cond.y" + { + yyval.fn_comp_int = comp_lowcomp; + ;} + break; + + case 26: +#line 256 "./cond.y" + { + yyval.fn_comp_str = comp_eq_s; + ;} + break; + + case 27: +#line 260 "./cond.y" + { + yyval.fn_comp_str = comp_ne_s; + ;} + break; + + case 28: +#line 264 "./cond.y" + { + yyval.fn_comp_str = comp_lt_s; + ;} + break; + + case 29: +#line 268 "./cond.y" + { + yyval.fn_comp_str = comp_gt_s; + ;} + break; + + case 30: +#line 272 "./cond.y" + { + yyval.fn_comp_str = comp_le_s; + ;} + break; + + case 31: +#line 276 "./cond.y" + { + yyval.fn_comp_str = comp_ge_s; + ;} + break; + + case 32: +#line 281 "./cond.y" + { + yyval.fn_comp_str = comp_substring; + ;} + break; + + case 33: +#line 285 "./cond.y" + { + yyval.fn_comp_str = comp_start; + ;} + break; + + case 34: +#line 289 "./cond.y" + { + yyval.fn_comp_str = comp_end; + ;} + break; + + case 35: +#line 297 "./cond.y" + { + yyval.fn_comp_m1 = comp_eq_m1; + ;} + break; + + case 36: +#line 301 "./cond.y" + { + yyval.fn_comp_m1 = comp_ne_m1; + ;} + break; + + case 37: +#line 305 "./cond.y" + { + yyval.fn_comp_m1 = comp_lt_m1; + ;} + break; + + case 38: +#line 309 "./cond.y" + { + yyval.fn_comp_m1 = comp_gt_m1; + ;} + break; + + case 39: +#line 313 "./cond.y" + { + yyval.fn_comp_m1 = comp_le_m1; + ;} + break; + + case 40: +#line 317 "./cond.y" + { + yyval.fn_comp_m1 = comp_ge_m1; + ;} + break; + + case 41: +#line 322 "./cond.y" + { + yyval.fn_comp_m1 = 0; + ;} + break; + + case 42: +#line 326 "./cond.y" + { + yyval.fn_comp_m1 = 0; + ;} + break; + + case 43: +#line 330 "./cond.y" + { + yyval.fn_comp_m1 = 0; + ;} + break; + + case 44: +#line 338 "./cond.y" + { + yyval.fn_comp_m2 = comp_eq_m2; + ;} + break; + + case 45: +#line 342 "./cond.y" + { + yyval.fn_comp_m2 = comp_ne_m2; + ;} + break; + + case 46: +#line 346 "./cond.y" + { + yyval.fn_comp_m2 = comp_lt_m2; + ;} + break; + + case 47: +#line 350 "./cond.y" + { + yyval.fn_comp_m2 = comp_gt_m2; + ;} + break; + + case 48: +#line 354 "./cond.y" + { + yyval.fn_comp_m2 = comp_le_m2; + ;} + break; + + case 49: +#line 358 "./cond.y" + { + yyval.fn_comp_m2 = comp_ge_m2; + ;} + break; + + case 50: +#line 363 "./cond.y" + { + yyval.fn_comp_m2 = 0; + ;} + break; + + case 51: +#line 367 "./cond.y" + { + yyval.fn_comp_m2 = 0; + ;} + break; + + case 52: +#line 371 "./cond.y" + { + yyval.fn_comp_m2 = 0; + ;} + break; + + case 53: +#line 378 "./cond.y" + { + yyval.value = yyvsp[0].value; + ;} + break; + + case 54: +#line 382 "./cond.y" + { + yyval.value = yyvsp[0].value; + ;} + break; + + case 55: +#line 389 "./cond.y" + { + yyval.string = yyvsp[0].string; + ;} + break; + + case 56: +#line 393 "./cond.y" + { + yyval.string = yyvsp[0].string; + ;} + break; + + case 57: +#line 400 "./cond.y" + { + yyval.string = COND_GetLiteral(&yyvsp[0].str); + if( !yyval.string ) + YYABORT; + ;} + break; + + case 58: +#line 409 "./cond.y" + { + COND_input* cond = (COND_input*) info; + INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; + + MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action ); + yyval.value = action; + HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); + ;} + break; + + case 59: +#line 418 "./cond.y" + { + COND_input* cond = (COND_input*) info; + INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; + + MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action ); + yyval.value = install; + HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); + ;} + break; + + case 60: +#line 427 "./cond.y" + { + COND_input* cond = (COND_input*) info; + INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; + + MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action ); + yyval.value = action; + HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); + ;} + break; + + case 61: +#line 436 "./cond.y" + { + COND_input* cond = (COND_input*) info; + INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; + + MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action ); + yyval.value = install; + HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); + ;} + break; + + case 62: +#line 448 "./cond.y" + { + DWORD sz; + COND_input* cond = (COND_input*) info; + + sz = 0; + MSI_GetPropertyW(cond->package, yyvsp[0].string, NULL, &sz); + if (sz == 0) + { + yyval.string = HeapAlloc( GetProcessHeap(), 0 ,sizeof(WCHAR)); + yyval.string[0] = 0; + } + else + { + sz ++; + yyval.string = HeapAlloc( GetProcessHeap(), 0, sz*sizeof (WCHAR) ); + + /* Lookup the identifier */ + + MSI_GetPropertyW(cond->package,yyvsp[0].string,yyval.string,&sz); + } + HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); + ;} + break; + + case 63: +#line 471 "./cond.y" + { + UINT len = GetEnvironmentVariableW( yyvsp[0].string, NULL, 0 ); + if( len++ ) + { + yyval.string = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR) ); + if( yyval.string ) + GetEnvironmentVariableW( yyvsp[0].string, yyval.string, len ); + } + HeapFree( GetProcessHeap(), 0, yyvsp[0].string ); + ;} + break; + + case 64: +#line 485 "./cond.y" + { + yyval.string = COND_GetString(&yyvsp[0].str); + if( !yyval.string ) + YYABORT; + ;} + break; + + case 65: +#line 494 "./cond.y" + { + LPWSTR szNum = COND_GetString(&yyvsp[0].str); + if( !szNum ) + YYABORT; + yyval.value = atoiW( szNum ); + HeapFree( GetProcessHeap(), 0, szNum ); + ;} + break; + + + } + +/* Line 999 of yacc.c. */ +#line 1719 "cond.tab.c" + + yyvsp -= yylen; + yyssp -= yylen; + + + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (YYPACT_NINF < yyn && yyn < YYLAST) + { + YYSIZE_T yysize = 0; + int yytype = YYTRANSLATE (yychar); + const char* yyprefix; + char *yymsg; + int yyx; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 0; + + yyprefix = ", expecting "; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]); + yycount += 1; + if (yycount == 5) + { + yysize = 0; + break; + } + } + yysize += (sizeof ("syntax error, unexpected ") + + yystrlen (yytname[yytype])); + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg != 0) + { + char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); + yyp = yystpcpy (yyp, yytname[yytype]); + + if (yycount < 5) + { + yyprefix = ", expecting "; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + yyp = yystpcpy (yyp, yyprefix); + yyp = yystpcpy (yyp, yytname[yyx]); + yyprefix = " or "; + } + } + yyerror (yymsg); + YYSTACK_FREE (yymsg); + } + else + yyerror ("syntax error; also virtual memory exhausted"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror ("syntax error"); + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + /* Return failure if at end of input. */ + if (yychar == YYEOF) + { + /* Pop the error token. */ + YYPOPSTACK; + /* Pop the rest of the stack. */ + while (yyss < yyssp) + { + YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); + yydestruct (yystos[*yyssp], yyvsp); + YYPOPSTACK; + } + YYABORT; + } + + YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); + yydestruct (yytoken, &yylval); + yychar = YYEMPTY; + + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*----------------------------------------------------. +| yyerrlab1 -- error raised explicitly by an action. | +`----------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); + yydestruct (yystos[yystate], yyvsp); + yyvsp--; + yystate = *--yyssp; + + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + YYDPRINTF ((stderr, "Shifting error token, ")); + + *++yyvsp = yylval; + + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*----------------------------------------------. +| yyoverflowlab -- parser overflow comes here. | +`----------------------------------------------*/ +yyoverflowlab: + yyerror ("parser stack overflow"); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + return yyresult; +} + + +#line 503 "./cond.y" + + + +static int COND_IsAlpha( WCHAR x ) +{ + return( ( ( x >= 'A' ) && ( x <= 'Z' ) ) || + ( ( x >= 'a' ) && ( x <= 'z' ) ) || + ( ( x == '_' ) ) ); +} + +static int COND_IsNumber( WCHAR x ) +{ + return( (( x >= '0' ) && ( x <= '9' )) || (x =='-') || (x =='.') ); +} + + +/* the mess of comparison functions */ + +static INT comp_lt_i(INT a, INT b) +{ return (a < b); } +static INT comp_gt_i(INT a, INT b) +{ return (a > b); } +static INT comp_le_i(INT a, INT b) +{ return (a <= b); } +static INT comp_ge_i(INT a, INT b) +{ return (a >= b); } +static INT comp_eq_i(INT a, INT b) +{ return (a == b); } +static INT comp_ne_i(INT a, INT b) +{ return (a != b); } +static INT comp_bitand(INT a, INT b) +{ return a & b;} +static INT comp_highcomp(INT a, INT b) +{ return HIWORD(a)==b; } +static INT comp_lowcomp(INT a, INT b) +{ return LOWORD(a)==b; } + +static INT comp_eq_s(LPWSTR a, LPWSTR b, BOOL casless) +{ if (casless) return !strcmpiW(a,b); else return !strcmpW(a,b);} +static INT comp_ne_s(LPWSTR a, LPWSTR b, BOOL casless) +{ if (casless) return strcmpiW(a,b); else return strcmpW(a,b);} +static INT comp_lt_s(LPWSTR a, LPWSTR b, BOOL casless) +{ if (casless) return strcmpiW(a,b)<0; else return strcmpW(a,b)<0;} +static INT comp_gt_s(LPWSTR a, LPWSTR b, BOOL casless) +{ if (casless) return strcmpiW(a,b)>0; else return strcmpW(a,b)>0;} +static INT comp_le_s(LPWSTR a, LPWSTR b, BOOL casless) +{ if (casless) return strcmpiW(a,b)<=0; else return strcmpW(a,b)<=0;} +static INT comp_ge_s(LPWSTR a, LPWSTR b, BOOL casless) +{ if (casless) return strcmpiW(a,b)>=0; else return strcmpW(a,b)>=0;} +static INT comp_substring(LPWSTR a, LPWSTR b, BOOL casless) +/* ERROR NOT WORKING REWRITE */ +{ if (casless) return strstrW(a,b)!=NULL; else return strstrW(a,b)!=NULL;} +static INT comp_start(LPWSTR a, LPWSTR b, BOOL casless) +{ if (casless) return strncmpiW(a,b,strlenW(b))==0; + else return strncmpW(a,b,strlenW(b))==0;} +static INT comp_end(LPWSTR a, LPWSTR b, BOOL casless) +{ + int i = strlenW(a); + int j = strlenW(b); + if (j>i) + return 0; + if (casless) return (!strcmpiW(&a[i-j-1],b)); + else return (!strcmpW(&a[i-j-1],b)); +} + + +static INT comp_eq_m1(LPWSTR a, INT b) +{ if (COND_IsNumber(a[0])) return atoiW(a)==b; else return 0;} +static INT comp_ne_m1(LPWSTR a, INT b) +{ if (COND_IsNumber(a[0])) return atoiW(a)!=b; else return 1;} +static INT comp_lt_m1(LPWSTR a, INT b) +{ if (COND_IsNumber(a[0])) return atoiW(a)b; else return 0;} +static INT comp_le_m1(LPWSTR a, INT b) +{ if (COND_IsNumber(a[0])) return atoiW(a)<=b; else return 0;} +static INT comp_ge_m1(LPWSTR a, INT b) +{ if (COND_IsNumber(a[0])) return atoiW(a)>=b; else return 0;} + +static INT comp_eq_m2(INT a, LPWSTR b) +{ if (COND_IsNumber(b[0])) return a == atoiW(b); else return 0;} +static INT comp_ne_m2(INT a, LPWSTR b) +{ if (COND_IsNumber(b[0])) return a != atoiW(b); else return 1;} +static INT comp_lt_m2(INT a, LPWSTR b) +{ if (COND_IsNumber(b[0])) return a < atoiW(b); else return 0;} +static INT comp_gt_m2(INT a, LPWSTR b) +{ if (COND_IsNumber(b[0])) return a > atoiW(b); else return 0;} +static INT comp_le_m2(INT a, LPWSTR b) +{ if (COND_IsNumber(b[0])) return a <= atoiW(b); else return 0;} +static INT comp_ge_m2(INT a, LPWSTR b) +{ if (COND_IsNumber(b[0])) return a >= atoiW(b); else return 0;} + + + +static int COND_IsIdent( WCHAR x ) +{ + return( COND_IsAlpha( x ) || COND_IsNumber( x ) || ( x == '_' ) + || ( x == '#' ) || (x == '.') ); +} + +static int COND_GetOne( struct cond_str *str, COND_input *cond ) +{ + static const WCHAR szNot[] = {'N','O','T',0}; + static const WCHAR szAnd[] = {'A','N','D',0}; + static const WCHAR szOr[] = {'O','R',0}; + WCHAR ch; + int rc, len = 1; + + str->data = &cond->str[cond->n]; + + ch = str->data[0]; + switch( ch ) + { + case 0: return 0; + case '(': rc = COND_LPAR; break; + case ')': rc = COND_RPAR; break; + case '&': rc = COND_AMPER; break; + case '!': rc = COND_EXCLAM; break; + case '$': rc = COND_DOLLARS; break; + case '?': rc = COND_QUESTION; break; + case '%': rc = COND_PERCENT; break; + case ' ': rc = COND_SPACE; break; + case '=': rc = COND_EQ; break; + case '~': rc = COND_TILDA; break; + case '<': rc = COND_LT; break; + case '>': rc = COND_GT; break; + case '"': + { + const WCHAR *ch2 = str->data + 1; + + + while ( *ch2 && *ch2 != '"' ) + ++ch2; + if (*ch2 == '"') + { + len = ch2 - str->data + 1; + rc = COND_LITER; + break; + } + } + ERR("Unterminated string\n"); + rc = COND_ERROR; + break; + default: + if( COND_IsAlpha( ch ) ) + { + while( COND_IsIdent( str->data[len] ) ) + len++; + rc = COND_IDENT; + break; + } + + if( COND_IsNumber( ch ) ) + { + while( COND_IsNumber( str->data[len] ) ) + len++; + rc = COND_NUMBER; + break; + } + + ERR("Got unknown character %c(%x)\n",ch,ch); + rc = COND_ERROR; + break; + } + + /* keyword identifiers */ + if( rc == COND_IDENT ) + { + if( (len==3) && (strncmpiW(str->data,szNot,len)==0) ) + rc = COND_NOT; + else if( (len==3) && (strncmpiW(str->data,szAnd,len)==0) ) + rc = COND_AND; + else if( (len==2) && (strncmpiW(str->data,szOr,len)==0) ) + rc = COND_OR; + } + + cond->n += len; + str->len = len; + + return rc; +} + +static int COND_lex( void *COND_lval, COND_input *cond ) +{ + int rc; + struct cond_str *str = COND_lval; + + do { + rc = COND_GetOne( str, cond ); + } while (rc == COND_SPACE); + + return rc; +} + +static LPWSTR COND_GetString( struct cond_str *str ) +{ + LPWSTR ret; + + ret = HeapAlloc( GetProcessHeap(), 0, (str->len+1) * sizeof (WCHAR) ); + if( ret ) + { + strncpyW( ret, str->data, str->len ); + ret[str->len]=0; + } + TRACE("Got identifier %s\n",debugstr_w(ret)); + return ret; +} + +static LPWSTR COND_GetLiteral( struct cond_str *str ) +{ + LPWSTR ret; + + ret = HeapAlloc( GetProcessHeap(), 0, (str->len-1) * sizeof (WCHAR) ); + if( ret ) + { + memcpy( ret, str->data+1, (str->len-2) * sizeof(WCHAR) ); + ret[str->len - 2]=0; + } + TRACE("Got literal %s\n",debugstr_w(ret)); + return ret; +} + +static int COND_error(char *str) +{ + return 0; +} + +MSICONDITION MSI_EvaluateConditionW( MSIPACKAGE *package, LPCWSTR szCondition ) +{ + COND_input cond; + MSICONDITION r; + + cond.package = package; + cond.str = szCondition; + cond.n = 0; + cond.result = -1; + + TRACE("Evaluating %s\n",debugstr_w(szCondition)); + + if( szCondition && !COND_parse( &cond ) ) + r = cond.result; + else + r = MSICONDITION_ERROR; + + TRACE("Evaluates to %i\n",r); + return r; +} + +MSICONDITION WINAPI MsiEvaluateConditionW( MSIHANDLE hInstall, LPCWSTR szCondition ) +{ + MSIPACKAGE *package; + UINT ret; + + package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE); + if( !package) + return ERROR_INVALID_HANDLE; + ret = MSI_EvaluateConditionW( package, szCondition ); + msiobj_release( &package->hdr ); + return ret; +} + +MSICONDITION WINAPI MsiEvaluateConditionA( MSIHANDLE hInstall, LPCSTR szCondition ) +{ + LPWSTR szwCond = NULL; + MSICONDITION r; + + if( szCondition ) + { + UINT len = MultiByteToWideChar( CP_ACP, 0, szCondition, -1, NULL, 0 ); + szwCond = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) ); + MultiByteToWideChar( CP_ACP, 0, szCondition, -1, szwCond, len ); + } + + r = MsiEvaluateConditionW( hInstall, szwCond ); + + HeapFree( GetProcessHeap(), 0, szwCond ); + + return r; +} + diff --git a/reactos/lib/msi/cond.tab.h b/reactos/lib/msi/cond.tab.h index 2392ce59d46..4870215530d 100644 --- a/reactos/lib/msi/cond.tab.h +++ b/reactos/lib/msi/cond.tab.h @@ -1,40 +1,99 @@ -#ifndef BISON_COND_TAB_H -# define BISON_COND_TAB_H - -#ifndef YYSTYPE -typedef union -{ - struct cond_str str; - LPWSTR string; - INT value; - comp_int fn_comp_int; - comp_str fn_comp_str; - comp_m1 fn_comp_m1; - comp_m2 fn_comp_m2; -} yystype; -# define YYSTYPE yystype -# define YYSTYPE_IS_TRIVIAL 1 -#endif -# define COND_SPACE 257 -# define COND_EOF 258 -# define COND_OR 259 -# define COND_AND 260 -# define COND_NOT 261 -# define COND_LT 262 -# define COND_GT 263 -# define COND_EQ 264 -# define COND_LPAR 265 -# define COND_RPAR 266 -# define COND_TILDA 267 -# define COND_PERCENT 268 -# define COND_DOLLARS 269 -# define COND_QUESTION 270 -# define COND_AMPER 271 -# define COND_EXCLAM 272 -# define COND_IDENT 273 -# define COND_NUMBER 274 -# define COND_LITER 275 -# define COND_ERROR 276 - - -#endif /* not BISON_COND_TAB_H */ +/* A Bison parser, made by GNU Bison 1.875b. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + COND_SPACE = 258, + COND_EOF = 259, + COND_OR = 260, + COND_AND = 261, + COND_NOT = 262, + COND_LT = 263, + COND_GT = 264, + COND_EQ = 265, + COND_LPAR = 266, + COND_RPAR = 267, + COND_TILDA = 268, + COND_PERCENT = 269, + COND_DOLLARS = 270, + COND_QUESTION = 271, + COND_AMPER = 272, + COND_EXCLAM = 273, + COND_IDENT = 274, + COND_NUMBER = 275, + COND_LITER = 276, + COND_ERROR = 277 + }; +#endif +#define COND_SPACE 258 +#define COND_EOF 259 +#define COND_OR 260 +#define COND_AND 261 +#define COND_NOT 262 +#define COND_LT 263 +#define COND_GT 264 +#define COND_EQ 265 +#define COND_LPAR 266 +#define COND_RPAR 267 +#define COND_TILDA 268 +#define COND_PERCENT 269 +#define COND_DOLLARS 270 +#define COND_QUESTION 271 +#define COND_AMPER 272 +#define COND_EXCLAM 273 +#define COND_IDENT 274 +#define COND_NUMBER 275 +#define COND_LITER 276 +#define COND_ERROR 277 + + + + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 106 "./cond.y" +typedef union YYSTYPE { + struct cond_str str; + LPWSTR string; + INT value; + comp_int fn_comp_int; + comp_str fn_comp_str; + comp_m1 fn_comp_m1; + comp_m2 fn_comp_m2; +} YYSTYPE; +/* Line 1252 of yacc.c. */ +#line 91 "cond.tab.h" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + + + diff --git a/reactos/lib/msi/cond.y b/reactos/lib/msi/cond.y index 1cc096a7075..2221fb156ba 100644 --- a/reactos/lib/msi/cond.y +++ b/reactos/lib/msi/cond.y @@ -181,7 +181,7 @@ term: } | value_s { - $$ = atoiW($1); + $$ = $1[0] ? MSICONDITION_TRUE : MSICONDITION_FALSE; } | value_i comp_op_i value_i { @@ -448,14 +448,22 @@ symbol_s: { DWORD sz; COND_input* cond = (COND_input*) info; - $$ = HeapAlloc( GetProcessHeap(), 0, 0x100*sizeof (WCHAR) ); - /* Lookup the identifier */ - - sz=0x100; - if (MSI_GetPropertyW(cond->package,$1,$$,&sz) != ERROR_SUCCESS) + sz = 0; + MSI_GetPropertyW(cond->package, $1, NULL, &sz); + if (sz == 0) { - $$[0]=0; + $$ = HeapAlloc( GetProcessHeap(), 0 ,sizeof(WCHAR)); + $$[0] = 0; + } + else + { + sz ++; + $$ = HeapAlloc( GetProcessHeap(), 0, sz*sizeof (WCHAR) ); + + /* Lookup the identifier */ + + MSI_GetPropertyW(cond->package,$1,$$,&sz); } HeapFree( GetProcessHeap(), 0, $1 ); } @@ -731,7 +739,7 @@ MSICONDITION MSI_EvaluateConditionW( MSIPACKAGE *package, LPCWSTR szCondition ) TRACE("Evaluating %s\n",debugstr_w(szCondition)); - if( !COND_parse( &cond ) ) + if( szCondition && !COND_parse( &cond ) ) r = cond.result; else r = MSICONDITION_ERROR; @@ -767,8 +775,7 @@ MSICONDITION WINAPI MsiEvaluateConditionA( MSIHANDLE hInstall, LPCSTR szConditio r = MsiEvaluateConditionW( hInstall, szwCond ); - if( szwCond ) - HeapFree( GetProcessHeap(), 0, szwCond ); + HeapFree( GetProcessHeap(), 0, szwCond ); return r; } diff --git a/reactos/lib/msi/create.c b/reactos/lib/msi/create.c index 356860d4cc3..b22a2aac61f 100644 --- a/reactos/lib/msi/create.c +++ b/reactos/lib/msi/create.c @@ -188,11 +188,12 @@ static UINT CREATE_get_column_info( struct tagMSIVIEW *view, return ERROR_FUNCTION_FAILED; } -static UINT CREATE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT CREATE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, + MSIRECORD *rec) { MSICREATEVIEW *cv = (MSICREATEVIEW*)view; - TRACE("%p %d %ld\n", cv, eModifyMode, hrec ); + TRACE("%p %d %p\n", cv, eModifyMode, rec ); return ERROR_FUNCTION_FAILED; } diff --git a/reactos/lib/msi/custom.c b/reactos/lib/msi/custom.c new file mode 100644 index 00000000000..ae79b3db5aa --- /dev/null +++ b/reactos/lib/msi/custom.c @@ -0,0 +1,794 @@ +/* + * Custom Action processing for the Microsoft Installer (msi.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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * Pages I need + * +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_list_of_all_custom_action_types.asp + */ + +#include +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winerror.h" +#include "winreg.h" +#include "wine/debug.h" +#include "fdi.h" +#include "msi.h" +#include "msiquery.h" +#include "fcntl.h" +#include "objbase.h" +#include "objidl.h" +#include "msipriv.h" +#include "winnls.h" +#include "winuser.h" +#include "shlobj.h" +#include "wine/unicode.h" +#include "ver.h" +#include "action.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msi); + +#define CUSTOM_ACTION_TYPE_MASK 0x3F +static const WCHAR c_collen[] = {'C',':','\\',0}; +static const WCHAR cszTempFolder[]= {'T','e','m','p','F','o','l','d','e','r',0}; + +typedef struct tagMSIRUNNINGACTION +{ + HANDLE handle; + BOOL process; + LPWSTR name; +} MSIRUNNINGACTION; + +static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action); +static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action); +static UINT HANDLE_CustomType18(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action); +static UINT HANDLE_CustomType19(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action); +static UINT HANDLE_CustomType50(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action); +static UINT HANDLE_CustomType34(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action); + +UINT ACTION_CustomAction(MSIPACKAGE *package,LPCWSTR action, BOOL execute) +{ + UINT rc = ERROR_SUCCESS; + MSIQUERY * view; + MSIRECORD * row = 0; + static const WCHAR ExecSeqQuery[] = + {'s','e','l','e','c','t',' ','*',' ','f','r','o','m',' ','C','u','s','t','o' + ,'m','A','c','t','i','o','n',' ','w','h','e','r','e',' ','`','A','c','t','i' + ,'o','n','`',' ','=',' ','`','%','s','`',0}; + UINT type; + LPWSTR source; + LPWSTR target; + WCHAR *deformated=NULL; + + rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, action); + if (rc != ERROR_SUCCESS) + return rc; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; + } + + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return ERROR_CALL_NOT_IMPLEMENTED; + } + + type = MSI_RecordGetInteger(row,2); + + source = load_dynamic_stringW(row,3); + target = load_dynamic_stringW(row,4); + + TRACE("Handling custom action %s (%x %s %s)\n",debugstr_w(action),type, + debugstr_w(source), debugstr_w(target)); + + /* handle some of the deferred actions */ + if (type & 0x400) + { + if (type & 0x100) + { + FIXME("Rollback only action... rollbacks not supported yet\n"); + HeapFree(GetProcessHeap(),0,source); + HeapFree(GetProcessHeap(),0,target); + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return ERROR_SUCCESS; + } + if (!execute) + { + LPWSTR *newbuf = NULL; + INT count; + if (type & 0x200) + { + TRACE("Deferring Commit Action!\n"); + count = package->CommitActionCount; + package->CommitActionCount++; + if (count != 0) + newbuf = HeapReAlloc(GetProcessHeap(),0, + package->CommitAction, + package->CommitActionCount * sizeof(LPWSTR)); + else + newbuf = HeapAlloc(GetProcessHeap(),0, sizeof(LPWSTR)); + + newbuf[count] = dupstrW(action); + package->CommitAction = newbuf; + } + else + { + TRACE("Deferring Action!\n"); + count = package->DeferredActionCount; + package->DeferredActionCount++; + if (count != 0) + newbuf = HeapReAlloc(GetProcessHeap(),0, + package->DeferredAction, + package->DeferredActionCount * sizeof(LPWSTR)); + else + newbuf = HeapAlloc(GetProcessHeap(),0, sizeof(LPWSTR)); + + newbuf[count] = dupstrW(action); + package->DeferredAction = newbuf; + } + + HeapFree(GetProcessHeap(),0,source); + HeapFree(GetProcessHeap(),0,target); + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return ERROR_SUCCESS; + } + else + { + /*Set ActionData*/ + + static const WCHAR szActionData[] = { + 'C','u','s','t','o','m','A','c','t','i','o','n','D','a','t','a',0}; + LPWSTR actiondata = load_dynamic_property(package,action,NULL); + if (actiondata) + MSI_SetPropertyW(package,szActionData,actiondata); + } + } + + switch (type & CUSTOM_ACTION_TYPE_MASK) + { + case 1: /* DLL file stored in a Binary table stream */ + rc = HANDLE_CustomType1(package,source,target,type,action); + break; + case 2: /* EXE file stored in a Binary table strem */ + rc = HANDLE_CustomType2(package,source,target,type,action); + break; + case 18: /*EXE file installed with package */ + rc = HANDLE_CustomType18(package,source,target,type,action); + break; + case 19: /* Error that halts install */ + rc = HANDLE_CustomType19(package,source,target,type,action); + break; + case 50: /*EXE file specified by a property value */ + rc = HANDLE_CustomType50(package,source,target,type,action); + break; + case 34: /*EXE to be run in specified directory */ + rc = HANDLE_CustomType34(package,source,target,type,action); + break; + case 35: /* Directory set with formatted text. */ + deformat_string(package,target,&deformated); + MSI_SetTargetPathW(package, source, deformated); + HeapFree(GetProcessHeap(),0,deformated); + break; + case 51: /* Property set with formatted text. */ + deformat_string(package,target,&deformated); + rc = MSI_SetPropertyW(package,source,deformated); + HeapFree(GetProcessHeap(),0,deformated); + break; + default: + FIXME("UNHANDLED ACTION TYPE %i (%s %s)\n", + type & CUSTOM_ACTION_TYPE_MASK, debugstr_w(source), + debugstr_w(target)); + } + + HeapFree(GetProcessHeap(),0,source); + HeapFree(GetProcessHeap(),0,target); + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; +} + + +static UINT store_binary_to_temp(MSIPACKAGE *package, LPCWSTR source, + LPWSTR tmp_file) +{ + DWORD sz=MAX_PATH; + static const WCHAR f1[] = {'m','s','i',0}; + WCHAR fmt[MAX_PATH]; + + if (MSI_GetPropertyW(package, cszTempFolder, fmt, &sz) + != ERROR_SUCCESS) + GetTempPathW(MAX_PATH,fmt); + + if (GetTempFileNameW(fmt,f1,0,tmp_file) == 0) + { + TRACE("Unable to create file\n"); + return ERROR_FUNCTION_FAILED; + } + else + { + /* write out the file */ + UINT rc; + MSIQUERY * view; + MSIRECORD * row = 0; + static const WCHAR fmt[] = + {'s','e','l','e','c','t',' ','*',' ','f','r','o','m',' ','B','i' +,'n','a','r','y',' ','w','h','e','r','e',' ','N','a','m','e','=','`','%','s','`',0}; + HANDLE the_file; + CHAR buffer[1024]; + + if (track_tempfile(package, tmp_file, tmp_file)!=0) + FIXME("File Name in temp tracking collision\n"); + + the_file = CreateFileW(tmp_file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, NULL); + + if (the_file == INVALID_HANDLE_VALUE) + return ERROR_FUNCTION_FAILED; + + rc = MSI_OpenQuery(package->db, &view, fmt, source); + if (rc != ERROR_SUCCESS) + return rc; + + rc = MSI_ViewExecute(view, 0); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; + } + + rc = MSI_ViewFetch(view,&row); + if (rc != ERROR_SUCCESS) + { + MSI_ViewClose(view); + msiobj_release(&view->hdr); + return rc; + } + + do + { + DWORD write; + sz = 1024; + rc = MSI_RecordReadStream(row,2,buffer,&sz); + if (rc != ERROR_SUCCESS) + { + ERR("Failed to get stream\n"); + CloseHandle(the_file); + DeleteFileW(tmp_file); + break; + } + WriteFile(the_file,buffer,sz,&write,NULL); + } while (sz == 1024); + + CloseHandle(the_file); + + msiobj_release(&row->hdr); + MSI_ViewClose(view); + msiobj_release(&view->hdr); + } + + return ERROR_SUCCESS; +} + +static void file_running_action(MSIPACKAGE* package, HANDLE Handle, + BOOL process, LPCWSTR name) +{ + MSIRUNNINGACTION *newbuf = NULL; + INT count; + count = package->RunningActionCount; + package->RunningActionCount++; + if (count != 0) + newbuf = HeapReAlloc(GetProcessHeap(),0, + package->RunningAction, + package->RunningActionCount * sizeof(MSIRUNNINGACTION)); + else + newbuf = HeapAlloc(GetProcessHeap(),0, sizeof(MSIRUNNINGACTION)); + + newbuf[count].handle = Handle; + newbuf[count].process = process; + newbuf[count].name = dupstrW(name); + + package->RunningAction = newbuf; +} + +static UINT process_action_return_value(UINT type, HANDLE ThreadHandle) +{ + DWORD rc; + + if (type == 2) + { + GetExitCodeProcess(ThreadHandle,&rc); + + if (rc == 0) + return ERROR_SUCCESS; + else + return ERROR_FUNCTION_FAILED; + } + + GetExitCodeThread(ThreadHandle,&rc); + + switch (rc) + { + case ERROR_FUNCTION_NOT_CALLED: + case ERROR_SUCCESS: + case ERROR_INSTALL_USEREXIT: + case ERROR_INSTALL_FAILURE: + return rc; + case ERROR_NO_MORE_ITEMS: + return ERROR_SUCCESS; + default: + return ERROR_FUNCTION_FAILED; + } +} + +static UINT process_handle(MSIPACKAGE* package, UINT type, + HANDLE ThreadHandle, HANDLE ProcessHandle, + LPCWSTR Name) +{ + UINT rc = ERROR_SUCCESS; + + if (!(type & 0x80)) + { + /* synchronous */ + TRACE("Synchronous Execution of action %s\n",debugstr_w(Name)); + if (ProcessHandle) + msi_dialog_check_messages(package->dialog, ProcessHandle); + else + msi_dialog_check_messages(package->dialog, ThreadHandle); + + if (!(type & 0x40)) + { + if (ProcessHandle) + rc = process_action_return_value(2,ProcessHandle); + else + rc = process_action_return_value(1,ThreadHandle); + } + + CloseHandle(ThreadHandle); + if (ProcessHandle); + CloseHandle(ProcessHandle); + } + else + { + TRACE("Asynchronous Execution of action %s\n",debugstr_w(Name)); + /* asynchronous */ + if (type & 0x40) + { + if (ProcessHandle) + { + file_running_action(package, ProcessHandle, TRUE, Name); + CloseHandle(ThreadHandle); + } + else + file_running_action(package, ThreadHandle, FALSE, Name); + } + else + { + CloseHandle(ThreadHandle); + if (ProcessHandle); + CloseHandle(ProcessHandle); + } + } + + return rc; +} + + +typedef UINT __stdcall CustomEntry(MSIHANDLE); + +typedef struct +{ + MSIPACKAGE *package; + WCHAR *target; + WCHAR *source; +} thread_struct; + +static DWORD WINAPI ACTION_CallDllFunction(thread_struct *stuff) +{ + HANDLE hModule; + LPSTR proc; + CustomEntry *fn; + DWORD rc = ERROR_SUCCESS; + + TRACE("calling function (%s, %s) \n", debugstr_w(stuff->source), + debugstr_w(stuff->target)); + + hModule = LoadLibraryW(stuff->source); + if (hModule) + { + proc = strdupWtoA( stuff->target ); + fn = (CustomEntry*)GetProcAddress(hModule,proc); + if (fn) + { + MSIHANDLE hPackage; + MSIPACKAGE *package = stuff->package; + + TRACE("Calling function %s\n", proc); + hPackage = msiobj_findhandle( &package->hdr ); + if (hPackage ) + { + rc = fn(hPackage); + msiobj_release( &package->hdr ); + } + else + ERR("Handle for object %p not found\n", package ); + } + else + ERR("Cannot load functon\n"); + + HeapFree(GetProcessHeap(),0,proc); + FreeLibrary(hModule); + } + else + ERR("Unable to load library\n"); + msiobj_release( &stuff->package->hdr ); + HeapFree(GetProcessHeap(),0,stuff->source); + HeapFree(GetProcessHeap(),0,stuff->target); + HeapFree(GetProcessHeap(), 0, stuff); + return rc; +} + +static DWORD WINAPI DllThread(LPVOID info) +{ + thread_struct *stuff; + DWORD rc = 0; + + TRACE("MSI Thread (0x%lx) started for custom action\n", + GetCurrentThreadId()); + + stuff = (thread_struct*)info; + rc = ACTION_CallDllFunction(stuff); + + TRACE("MSI Thread (0x%lx) finished\n",GetCurrentThreadId()); + /* clse all handles for this thread */ + MsiCloseAllHandles(); + return rc; +} + +static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action) +{ + WCHAR tmp_file[MAX_PATH]; + thread_struct *info; + DWORD ThreadId; + HANDLE ThreadHandle; + UINT rc = ERROR_SUCCESS; + + store_binary_to_temp(package, source, tmp_file); + + TRACE("Calling function %s from %s\n",debugstr_w(target), + debugstr_w(tmp_file)); + + if (!strchrW(tmp_file,'.')) + { + static const WCHAR dot[]={'.',0}; + strcatW(tmp_file,dot); + } + + info = HeapAlloc( GetProcessHeap(), 0, sizeof(*info) ); + msiobj_addref( &package->hdr ); + info->package = package; + info->target = dupstrW(target); + info->source = dupstrW(tmp_file); + + ThreadHandle = CreateThread(NULL,0,DllThread,(LPVOID)info,0,&ThreadId); + + rc = process_handle(package, type, ThreadHandle, NULL, action); + + return rc; +} + +static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action) +{ + WCHAR tmp_file[MAX_PATH]; + STARTUPINFOW si; + PROCESS_INFORMATION info; + BOOL rc; + INT len; + WCHAR *deformated; + WCHAR *cmd; + static const WCHAR spc[] = {' ',0}; + UINT prc = ERROR_SUCCESS; + + memset(&si,0,sizeof(STARTUPINFOW)); + + store_binary_to_temp(package, source, tmp_file); + + deformat_string(package,target,&deformated); + + len = strlenW(tmp_file)+2; + + if (deformated) + len += strlenW(deformated); + + cmd = (WCHAR*)HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*len); + + strcpyW(cmd,tmp_file); + if (deformated) + { + strcatW(cmd,spc); + strcatW(cmd,deformated); + + HeapFree(GetProcessHeap(),0,deformated); + } + + TRACE("executing exe %s \n",debugstr_w(cmd)); + + rc = CreateProcessW(NULL, cmd, NULL, NULL, FALSE, 0, NULL, + c_collen, &si, &info); + + HeapFree(GetProcessHeap(),0,cmd); + + if ( !rc ) + { + ERR("Unable to execute command\n"); + return ERROR_SUCCESS; + } + + prc = process_handle(package, type, info.hThread, info.hProcess, action); + + return prc; +} + +static UINT HANDLE_CustomType18(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action) +{ + STARTUPINFOW si; + PROCESS_INFORMATION info; + BOOL rc; + WCHAR *deformated; + WCHAR *cmd; + INT len; + static const WCHAR spc[] = {' ',0}; + int index; + UINT prc; + + memset(&si,0,sizeof(STARTUPINFOW)); + + index = get_loaded_file(package,source); + + len = strlenW(package->files[index].TargetPath); + + deformat_string(package,target,&deformated); + if (deformated) + len += strlenW(deformated); + len += 2; + + cmd = (WCHAR*)HeapAlloc(GetProcessHeap(),0,len * sizeof(WCHAR)); + + strcpyW(cmd, package->files[index].TargetPath); + if (deformated) + { + strcatW(cmd, spc); + strcatW(cmd, deformated); + + HeapFree(GetProcessHeap(),0,deformated); + } + + TRACE("executing exe %s \n",debugstr_w(cmd)); + + rc = CreateProcessW(NULL, cmd, NULL, NULL, FALSE, 0, NULL, + c_collen, &si, &info); + + HeapFree(GetProcessHeap(),0,cmd); + + if ( !rc ) + { + ERR("Unable to execute command\n"); + return ERROR_SUCCESS; + } + + prc = process_handle(package, type, info.hThread, info.hProcess, action); + + return prc; +} + +static UINT HANDLE_CustomType19(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action) +{ + static const WCHAR query[] = { + 'S','E','L','E','C','T',' ','`','M','e','s','s','a','g','e','`',' ', + 'F','R','O','M',' ','`','E','r','r','o','r','`',' ', + 'W','H','E','R','E',' ','`','E','r','r','o','r','`',' ','=',' ','%','s',0 + }; + MSIQUERY *view = NULL; + MSIRECORD *row = 0; + UINT r; + LPWSTR deformated = NULL; + + deformat_string( package, target, &deformated ); + + /* first try treat the error as a number */ + r = MSI_OpenQuery( package->db, &view, query, deformated ); + if( r == ERROR_SUCCESS ) + { + r = MSI_ViewExecute( view, 0 ); + if( r == ERROR_SUCCESS ) + { + r = MSI_ViewFetch( view, &row ); + if( r == ERROR_SUCCESS ) + { + LPCWSTR error = MSI_RecordGetString( row, 1 ); + MessageBoxW( NULL, error, NULL, MB_OK ); + msiobj_release( &row->hdr ); + } + } + MSI_ViewClose( view ); + msiobj_release( &view->hdr ); + } + + if (r != ERROR_SUCCESS ) + { + MessageBoxW( NULL, deformated, NULL, MB_OK ); + HeapFree( GetProcessHeap(), 0, deformated ); + } + + return ERROR_FUNCTION_FAILED; +} + +static UINT HANDLE_CustomType50(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action) +{ + STARTUPINFOW si; + PROCESS_INFORMATION info; + WCHAR *prop; + BOOL rc; + WCHAR *deformated; + WCHAR *cmd; + INT len; + UINT prc; + static const WCHAR spc[] = {' ',0}; + + memset(&si,0,sizeof(STARTUPINFOW)); + memset(&info,0,sizeof(PROCESS_INFORMATION)); + + prop = load_dynamic_property(package,source,&prc); + if (!prop) + return prc; + + deformat_string(package,target,&deformated); + len = strlenW(prop) + 2; + if (deformated) + len += strlenW(deformated); + + cmd = (WCHAR*)HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*len); + + strcpyW(cmd,prop); + if (deformated) + { + strcatW(cmd,spc); + strcatW(cmd,deformated); + + HeapFree(GetProcessHeap(),0,deformated); + } + + TRACE("executing exe %s \n",debugstr_w(cmd)); + + rc = CreateProcessW(NULL, cmd, NULL, NULL, FALSE, 0, NULL, + c_collen, &si, &info); + + HeapFree(GetProcessHeap(),0,cmd); + + if ( !rc ) + { + ERR("Unable to execute command\n"); + return ERROR_SUCCESS; + } + + prc = process_handle(package, type, info.hThread, info.hProcess, action); + + return prc; +} + +static UINT HANDLE_CustomType34(MSIPACKAGE *package, LPCWSTR source, + LPCWSTR target, const INT type, LPCWSTR action) +{ + LPWSTR filename, deformated; + STARTUPINFOW si; + PROCESS_INFORMATION info; + BOOL rc; + UINT prc; + + memset(&si,0,sizeof(STARTUPINFOW)); + + filename = resolve_folder(package, source, FALSE, FALSE, NULL); + + if (!filename) + return ERROR_FUNCTION_FAILED; + + SetCurrentDirectoryW(filename); + HeapFree(GetProcessHeap(),0,filename); + + deformat_string(package,target,&deformated); + + if (!deformated) + return ERROR_FUNCTION_FAILED; + + TRACE("executing exe %s \n",debugstr_w(deformated)); + + rc = CreateProcessW(NULL, deformated, NULL, NULL, FALSE, 0, NULL, + c_collen, &si, &info); + HeapFree(GetProcessHeap(),0,deformated); + + if ( !rc ) + { + ERR("Unable to execute command\n"); + return ERROR_SUCCESS; + } + + prc = process_handle(package, type, info.hThread, info.hProcess, action); + + return prc; +} + + +void ACTION_FinishCustomActions(MSIPACKAGE* package) +{ + INT i; + DWORD rc; + + for (i = 0; i < package->RunningActionCount; i++) + { + TRACE("Checking on action %s\n", + debugstr_w(package->RunningAction[i].name)); + + if (package->RunningAction[i].process) + GetExitCodeProcess(package->RunningAction[i].handle, &rc); + else + GetExitCodeThread(package->RunningAction[i].handle, &rc); + + if (rc == STILL_ACTIVE) + { + TRACE("Waiting on action %s\n", + debugstr_w(package->RunningAction[i].name)); + msi_dialog_check_messages(package->dialog, + package->RunningAction[i].handle); + } + + HeapFree(GetProcessHeap(),0,package->RunningAction[i].name); + CloseHandle(package->RunningAction[i].handle); + } + + HeapFree(GetProcessHeap(),0,package->RunningAction); +} diff --git a/reactos/lib/msi/dialog.c b/reactos/lib/msi/dialog.c new file mode 100644 index 00000000000..db8328f14d1 --- /dev/null +++ b/reactos/lib/msi/dialog.c @@ -0,0 +1,973 @@ +/* + * Implementation of the Microsoft Installer (msi.dll) + * + * Copyright 2005 Mike McCormack 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winnls.h" +#include "wingdi.h" +#include "msi.h" +#include "msipriv.h" +#include "msidefs.h" + +#include "wine/debug.h" +#include "wine/unicode.h" + +#include "action.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msi); + + +const WCHAR szMsiDialogClass[] = { + 'M','s','i','D','i','a','l','o','g','C','l','o','s','e','C','l','a','s','s',0 +}; +const static WCHAR szStatic[] = { 'S','t','a','t','i','c',0 }; + +struct msi_control_tag; +typedef struct msi_control_tag msi_control; +typedef UINT (*msi_handler)( msi_dialog *, msi_control *, WPARAM ); + +struct msi_control_tag +{ + struct msi_control_tag *next; + HWND hwnd; + msi_handler handler; + LPWSTR property; + WCHAR name[1]; +}; + +typedef struct msi_font_tag +{ + struct msi_font_tag *next; + HFONT hfont; + WCHAR name[1]; +} msi_font; + +struct msi_dialog_tag +{ + MSIPACKAGE *package; + msi_dialog_event_handler event_handler; + BOOL finished; + INT scale; + DWORD attributes; + HWND hwnd; + LPWSTR default_font; + msi_font *font_list; + msi_control *control_list; + WCHAR name[1]; +}; + +typedef UINT (*msi_dialog_control_func)( msi_dialog *dialog, MSIRECORD *rec ); +struct control_handler +{ + LPCWSTR control_type; + msi_dialog_control_func func; +}; + +static UINT msi_dialog_checkbox_handler( msi_dialog *, msi_control *, WPARAM ); +static void msi_dialog_checkbox_sync_state( msi_dialog *, msi_control * ); +static UINT msi_dialog_button_handler( msi_dialog *, msi_control *, WPARAM ); +static UINT msi_dialog_edit_handler( msi_dialog *, msi_control *, WPARAM ); + + +INT msi_dialog_scale_unit( msi_dialog *dialog, INT val ) +{ + return (dialog->scale * val + 5) / 10; +} + +/* + * msi_dialog_get_style + * + * Extract the {\style} string from the front of the text to display and + * update the pointer. + */ +static LPWSTR msi_dialog_get_style( LPCWSTR *text ) +{ + LPWSTR ret = NULL; + LPCWSTR p = *text, q; + DWORD len; + + if( *p++ != '{' ) + return ret; + q = strchrW( p, '}' ); + if( !q ) + return ret; + *text = ++q; + if( *p++ != '\\' ) + return ret; + len = q - p; + + ret = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); + if( !ret ) + return ret; + strncpyW( ret, p, len ); + ret[len-1] = 0; + return ret; +} + +static UINT msi_dialog_add_font( MSIRECORD *rec, LPVOID param ) +{ + msi_dialog *dialog = param; + msi_font *font; + LPCWSTR face, name; + LOGFONTW lf; + INT style; + HDC hdc; + + /* create a font and add it to the list */ + name = MSI_RecordGetString( rec, 1 ); + font = HeapAlloc( GetProcessHeap(), 0, + sizeof *font + strlenW( name )*sizeof (WCHAR) ); + strcpyW( font->name, name ); + font->next = dialog->font_list; + dialog->font_list = font; + + memset( &lf, 0, sizeof lf ); + face = MSI_RecordGetString( rec, 2 ); + lf.lfHeight = MSI_RecordGetInteger( rec, 3 ); + style = MSI_RecordGetInteger( rec, 5 ); + if( style & msidbTextStyleStyleBitsBold ) + lf.lfWeight = FW_BOLD; + if( style & msidbTextStyleStyleBitsItalic ) + lf.lfItalic = TRUE; + if( style & msidbTextStyleStyleBitsUnderline ) + lf.lfUnderline = TRUE; + if( style & msidbTextStyleStyleBitsStrike ) + lf.lfStrikeOut = TRUE; + lstrcpynW( lf.lfFaceName, face, LF_FACESIZE ); + + /* adjust the height */ + hdc = GetDC( dialog->hwnd ); + if (hdc) + { + lf.lfHeight = -MulDiv(lf.lfHeight, GetDeviceCaps(hdc, LOGPIXELSY), 72); + ReleaseDC( dialog->hwnd, hdc ); + } + + font->hfont = CreateFontIndirectW( &lf ); + + TRACE("Adding font style %s\n", debugstr_w(font->name) ); + + return ERROR_SUCCESS; +} + +static msi_font *msi_dialog_find_font( msi_dialog *dialog, LPCWSTR name ) +{ + msi_font *font; + + for( font = dialog->font_list; font; font = font->next ) + if( !strcmpW( font->name, name ) ) /* FIXME: case sensitive? */ + break; + + return font; +} + +static UINT msi_dialog_set_font( msi_dialog *dialog, HWND hwnd, LPCWSTR name ) +{ + msi_font *font; + + font = msi_dialog_find_font( dialog, name ); + if( font ) + SendMessageW( hwnd, WM_SETFONT, (WPARAM) font->hfont, TRUE ); + else + ERR("No font entry for %s\n", debugstr_w(name)); + return ERROR_SUCCESS; +} + +static UINT msi_dialog_build_font_list( msi_dialog *dialog ) +{ + static const WCHAR query[] = { + 'S','E','L','E','C','T',' ','*',' ', + 'F','R','O','M',' ','`','T','e','x','t','S','t','y','l','e','`',' ',0 + }; + UINT r; + MSIQUERY *view = NULL; + + TRACE("dialog %p\n", dialog ); + + r = MSI_OpenQuery( dialog->package->db, &view, query ); + if( r != ERROR_SUCCESS ) + return r; + + r = MSI_IterateRecords( view, NULL, msi_dialog_add_font, dialog ); + msiobj_release( &view->hdr ); + + return r; +} + +static msi_control *msi_dialog_add_control( msi_dialog *dialog, + MSIRECORD *rec, LPCWSTR szCls, DWORD style ) +{ + DWORD x, y, width, height, attributes; + LPCWSTR text, name; + LPWSTR font = NULL, title = NULL; + msi_control *control = NULL; + + style |= WS_CHILD | WS_GROUP; + + name = MSI_RecordGetString( rec, 2 ); + control = HeapAlloc( GetProcessHeap(), 0, + sizeof *control + strlenW(name)*sizeof(WCHAR) ); + strcpyW( control->name, name ); + control->next = dialog->control_list; + dialog->control_list = control; + control->handler = NULL; + control->property = NULL; + + x = MSI_RecordGetInteger( rec, 4 ); + y = MSI_RecordGetInteger( rec, 5 ); + width = MSI_RecordGetInteger( rec, 6 ); + height = MSI_RecordGetInteger( rec, 7 ); + attributes = MSI_RecordGetInteger( rec, 8 ); + text = MSI_RecordGetString( rec, 10 ); + + TRACE("Dialog %s control %s\n", debugstr_w(dialog->name), debugstr_w(text)); + + x = msi_dialog_scale_unit( dialog, x ); + y = msi_dialog_scale_unit( dialog, y ); + width = msi_dialog_scale_unit( dialog, width ); + height = msi_dialog_scale_unit( dialog, height ); + + if( attributes & 1 ) + style |= WS_VISIBLE; + if( ~attributes & 2 ) + style |= WS_DISABLED; + if( text ) + { + font = msi_dialog_get_style( &text ); + deformat_string( dialog->package, text, &title ); + } + control->hwnd = CreateWindowW( szCls, title, style, + x, y, width, height, dialog->hwnd, NULL, NULL, NULL ); + msi_dialog_set_font( dialog, control->hwnd, + font ? font : dialog->default_font ); + HeapFree( GetProcessHeap(), 0, font ); + HeapFree( GetProcessHeap(), 0, title ); + return control; +} + +static UINT msi_dialog_text_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + TRACE("%p %p\n", dialog, rec); + + msi_dialog_add_control( dialog, rec, szStatic, 0 ); + return ERROR_SUCCESS; +} + +static UINT msi_dialog_button_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + const static WCHAR szButton[] = { 'B','U','T','T','O','N', 0 }; + msi_control *control; + + TRACE("%p %p\n", dialog, rec); + + control = msi_dialog_add_control( dialog, rec, szButton, 0 ); + control->handler = msi_dialog_button_handler; + + return ERROR_SUCCESS; +} + +static UINT msi_dialog_checkbox_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + const static WCHAR szButton[] = { 'B','U','T','T','O','N', 0 }; + msi_control *control; + LPCWSTR prop; + + TRACE("%p %p\n", dialog, rec); + + control = msi_dialog_add_control( dialog, rec, szButton, + BS_CHECKBOX | BS_MULTILINE ); + control->handler = msi_dialog_checkbox_handler; + prop = MSI_RecordGetString( rec, 9 ); + if( prop ) + control->property = dupstrW( prop ); + msi_dialog_checkbox_sync_state( dialog, control ); + + return ERROR_SUCCESS; +} + +static UINT msi_dialog_line_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + TRACE("%p %p\n", dialog, rec); + + msi_dialog_add_control( dialog, rec, szStatic, SS_ETCHEDHORZ | SS_SUNKEN ); + return ERROR_SUCCESS; +} + +static UINT msi_dialog_scrolltext_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + const static WCHAR szEdit[] = { 'E','D','I','T',0 }; + + TRACE("%p %p\n", dialog, rec); + + msi_dialog_add_control( dialog, rec, szEdit, + ES_MULTILINE | WS_VSCROLL | ES_READONLY | ES_AUTOVSCROLL ); + + return ERROR_SUCCESS; +} + +static UINT msi_dialog_bitmap_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + TRACE("%p %p\n", dialog, rec); + + msi_dialog_add_control( dialog, rec, szStatic, + SS_BITMAP | SS_LEFT | SS_CENTERIMAGE ); + return ERROR_SUCCESS; +} + +static UINT msi_dialog_combo_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + static const WCHAR szCombo[] = { 'C','O','M','B','O','B','O','X',0 }; + + msi_dialog_add_control( dialog, rec, szCombo, + SS_BITMAP | SS_LEFT | SS_CENTERIMAGE ); + return ERROR_SUCCESS; +} + +static UINT msi_dialog_edit_control( msi_dialog *dialog, MSIRECORD *rec ) +{ + const static WCHAR szEdit[] = { 'E','D','I','T',0 }; + msi_control *control; + LPCWSTR prop; + LPWSTR val; + + control = msi_dialog_add_control( dialog, rec, szEdit, 0 ); + control->handler = msi_dialog_edit_handler; + prop = MSI_RecordGetString( rec, 9 ); + if( prop ) + control->property = dupstrW( prop ); + val = load_dynamic_property( dialog->package, control->property, NULL ); + SetWindowTextW( control->hwnd, val ); + HeapFree( GetProcessHeap(), 0, val ); + return ERROR_SUCCESS; +} + +static const WCHAR szText[] = { 'T','e','x','t',0 }; +static const WCHAR szButton[] = { 'P','u','s','h','B','u','t','t','o','n',0 }; +static const WCHAR szLine[] = { 'L','i','n','e',0 }; +static const WCHAR szBitmap[] = { 'B','i','t','m','a','p',0 }; +static const WCHAR szCheckBox[] = { 'C','h','e','c','k','B','o','x',0 }; +static const WCHAR szScrollableText[] = { + 'S','c','r','o','l','l','a','b','l','e','T','e','x','t',0 }; +static const WCHAR szComboBox[] = { 'C','o','m','b','o','B','o','x',0 }; +static const WCHAR szEdit[] = { 'E','d','i','t',0 }; +static const WCHAR szMaskedEdit[] = { 'M','a','s','k','e','d','E','d','i','t',0 }; + +struct control_handler msi_dialog_handler[] = +{ + { szText, msi_dialog_text_control }, + { szButton, msi_dialog_button_control }, + { szLine, msi_dialog_line_control }, + { szBitmap, msi_dialog_bitmap_control }, + { szCheckBox, msi_dialog_checkbox_control }, + { szScrollableText, msi_dialog_scrolltext_control }, + { szComboBox, msi_dialog_combo_control }, + { szEdit, msi_dialog_edit_control }, + { szMaskedEdit, msi_dialog_edit_control }, +}; + +#define NUM_CONTROL_TYPES (sizeof msi_dialog_handler/sizeof msi_dialog_handler[0]) + +static UINT msi_dialog_create_controls( MSIRECORD *rec, LPVOID param ) +{ + msi_dialog *dialog = param; + LPCWSTR control_type; + UINT i; + + /* find and call the function that can create this type of control */ + control_type = MSI_RecordGetString( rec, 3 ); + for( i=0; ipackage; + + TRACE("%p %s\n", dialog, debugstr_w(dialog->name) ); + + /* query the Control table for all the elements of the control */ + r = MSI_OpenQuery( package->db, &view, query, dialog->name ); + if( r != ERROR_SUCCESS ) + { + ERR("query failed for dialog %s\n", debugstr_w(dialog->name)); + return ERROR_INVALID_PARAMETER; + } + + r = MSI_IterateRecords( view, 0, msi_dialog_create_controls, dialog ); + msiobj_release( &view->hdr ); + + return r; +} + +static msi_control *msi_dialog_find_control( msi_dialog *dialog, LPCWSTR name ) +{ + msi_control *control; + + for( control = dialog->control_list; control; control = control->next ) + if( !strcmpW( control->name, name ) ) /* FIXME: case sensitive? */ + break; + return control; +} + +static msi_control *msi_dialog_find_control_by_hwnd( msi_dialog *dialog, HWND hwnd ) +{ + msi_control *control; + + for( control = dialog->control_list; control; control = control->next ) + if( hwnd == control->hwnd ) + break; + return control; +} + +static UINT msi_dialog_set_control_condition( MSIRECORD *rec, LPVOID param ) +{ + static const WCHAR szHide[] = { 'H','i','d','e',0 }; + static const WCHAR szShow[] = { 'S','h','o','w',0 }; + static const WCHAR szDisable[] = { 'D','i','s','a','b','l','e',0 }; + static const WCHAR szEnable[] = { 'E','n','a','b','l','e',0 }; + msi_dialog *dialog = param; + msi_control *control; + LPCWSTR name, action, condition; + UINT r; + + name = MSI_RecordGetString( rec, 2 ); + action = MSI_RecordGetString( rec, 3 ); + condition = MSI_RecordGetString( rec, 4 ); + r = MSI_EvaluateConditionW( dialog->package, condition ); + control = msi_dialog_find_control( dialog, name ); + if( r && control ) + { + TRACE("%s control %s\n", debugstr_w(action), debugstr_w(name)); + + /* FIXME: case sensitive? */ + if(!strcmpW(action, szHide)) + ShowWindow(control->hwnd, SW_HIDE); + else if(!strcmpW(action, szShow)) + ShowWindow(control->hwnd, SW_SHOW); + else if(!strcmpW(action, szDisable)) + EnableWindow(control->hwnd, FALSE); + else if(!strcmpW(action, szEnable)) + EnableWindow(control->hwnd, TRUE); + else + FIXME("Unhandled action %s\n", debugstr_w(action)); + } + + return ERROR_SUCCESS; +} + +static UINT msi_dialog_evaluate_control_conditions( msi_dialog *dialog ) +{ + static const WCHAR query[] = { + 'S','E','L','E','C','T',' ','*',' ', + 'F','R','O','M',' ', + 'C','o','n','t','r','o','l','C','o','n','d','i','t','i','o','n',' ', + 'W','H','E','R','E',' ', + '`','D','i','a','l','o','g','_','`',' ','=',' ','\'','%','s','\'',0 + }; + UINT r; + MSIQUERY *view = NULL; + MSIPACKAGE *package = dialog->package; + + TRACE("%p %s\n", dialog, debugstr_w(dialog->name) ); + + /* query the Control table for all the elements of the control */ + r = MSI_OpenQuery( package->db, &view, query, dialog->name ); + if( r != ERROR_SUCCESS ) + { + ERR("query failed for dialog %s\n", debugstr_w(dialog->name)); + return ERROR_INVALID_PARAMETER; + } + + r = MSI_IterateRecords( view, 0, msi_dialog_set_control_condition, dialog ); + msiobj_release( &view->hdr ); + + return r; +} + +/* figure out the height of 10 point MS Sans Serif */ +static INT msi_dialog_get_sans_serif_height( HWND hwnd ) +{ + static const WCHAR szSansSerif[] = { + 'M','S',' ','S','a','n','s',' ','S','e','r','i','f',0 }; + LOGFONTW lf; + TEXTMETRICW tm; + BOOL r; + LONG height = 0; + HFONT hFont, hOldFont; + HDC hdc; + + hdc = GetDC( hwnd ); + if (hdc) + { + memset( &lf, 0, sizeof lf ); + lf.lfHeight = MulDiv(10, GetDeviceCaps(hdc, LOGPIXELSY), 72); + strcpyW( lf.lfFaceName, szSansSerif ); + hFont = CreateFontIndirectW(&lf); + if (hFont) + { + hOldFont = SelectObject( hdc, hFont ); + r = GetTextMetricsW( hdc, &tm ); + if (r) + height = tm.tmHeight; + SelectObject( hdc, hOldFont ); + DeleteObject( hFont ); + } + ReleaseDC( hwnd, hdc ); + } + return height; +} + +static LRESULT msi_dialog_oncreate( HWND hwnd, LPCREATESTRUCTW cs ) +{ + static const WCHAR query[] = { + 'S','E','L','E','C','T',' ','*',' ', + 'F','R','O','M',' ','D','i','a','l','o','g',' ', + 'W','H','E','R','E',' ', + '`','D','i','a','l','o','g','`',' ','=',' ','\'','%','s','\'',0}; + static const WCHAR df[] = { + 'D','e','f','a','u','l','t','U','I','F','o','n','t',0 }; + msi_dialog *dialog = (msi_dialog*) cs->lpCreateParams; + MSIPACKAGE *package = dialog->package; + MSIQUERY *view = NULL; + MSIRECORD *rec = NULL; + DWORD width, height; + LPCWSTR text; + LPWSTR title = NULL; + UINT r; + + TRACE("%p %p\n", dialog, package); + + dialog->hwnd = hwnd; + SetWindowLongPtrW( hwnd, GWLP_USERDATA, (LONG_PTR) dialog ); + + /* fetch the associated record from the Dialog table */ + r = MSI_OpenQuery( package->db, &view, query, dialog->name ); + if( r != ERROR_SUCCESS ) + { + ERR("query failed for dialog %s\n", debugstr_w(dialog->name)); + return -1; + } + MSI_ViewExecute( view, NULL ); + MSI_ViewFetch( view, &rec ); + MSI_ViewClose( view ); + msiobj_release( &view->hdr ); + + if( !rec ) + { + TRACE("No record found for dialog %s\n", debugstr_w(dialog->name)); + return -1; + } + + dialog->scale = msi_dialog_get_sans_serif_height(dialog->hwnd); + + width = MSI_RecordGetInteger( rec, 4 ); + height = MSI_RecordGetInteger( rec, 5 ); + dialog->attributes = MSI_RecordGetInteger( rec, 6 ); + text = MSI_RecordGetString( rec, 7 ); + + width = msi_dialog_scale_unit( dialog, width ); + height = msi_dialog_scale_unit( dialog, height ) + 25; /* FIXME */ + + dialog->default_font = load_dynamic_property( dialog->package, df, NULL ); + + deformat_string( dialog->package, text, &title ); + SetWindowTextW( hwnd, title ); + SetWindowPos( hwnd, 0, 0, 0, width, height, + SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOREDRAW ); + + HeapFree( GetProcessHeap(), 0, title ); + msiobj_release( &rec->hdr ); + + msi_dialog_build_font_list( dialog ); + msi_dialog_fill_controls( dialog ); + msi_dialog_evaluate_control_conditions( dialog ); + + return 0; +} + +static UINT msi_dialog_send_event( msi_dialog *dialog, LPCWSTR event, LPCWSTR arg ) +{ + LPWSTR event_fmt = NULL, arg_fmt = NULL; + + TRACE("Sending control event %s %s\n", debugstr_w(event), debugstr_w(arg)); + + deformat_string( dialog->package, event, &event_fmt ); + deformat_string( dialog->package, arg, &arg_fmt ); + + dialog->event_handler( dialog->package, event_fmt, arg_fmt, dialog ); + + HeapFree( GetProcessHeap(), 0, event_fmt ); + HeapFree( GetProcessHeap(), 0, arg_fmt ); + + return ERROR_SUCCESS; +} + +static UINT msi_dialog_set_property( msi_dialog *dialog, LPCWSTR event, LPCWSTR arg ) +{ + static const WCHAR szNullArg[] = { '{','}',0 }; + LPWSTR p, prop, arg_fmt = NULL; + UINT len; + + len = strlenW(event); + prop = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR)); + strcpyW( prop, &event[1] ); + p = strchrW( prop, ']' ); + if( p && p[1] == 0 ) + { + *p = 0; + if( strcmpW( szNullArg, arg ) ) + deformat_string( dialog->package, arg, &arg_fmt ); + MSI_SetPropertyW( dialog->package, prop, arg_fmt ); + } + else + ERR("Badly formatted property string - what happens?\n"); + HeapFree( GetProcessHeap(), 0, prop ); + return ERROR_SUCCESS; +} + +static UINT msi_dialog_control_event( MSIRECORD *rec, LPVOID param ) +{ + msi_dialog *dialog = param; + LPCWSTR condition, event, arg; + UINT r; + + condition = MSI_RecordGetString( rec, 5 ); + r = MSI_EvaluateConditionW( dialog->package, condition ); + if( r ) + { + event = MSI_RecordGetString( rec, 3 ); + arg = MSI_RecordGetString( rec, 4 ); + if( event[0] == '[' ) + msi_dialog_set_property( dialog, event, arg ); + else + msi_dialog_send_event( dialog, event, arg ); + } + + return ERROR_SUCCESS; +} + +static UINT msi_dialog_button_handler( msi_dialog *dialog, + msi_control *control, WPARAM param ) +{ + static const WCHAR query[] = { + 'S','E','L','E','C','T',' ','*',' ', + 'F','R','O','M',' ','C','o','n','t','r','o','l','E','v','e','n','t',' ', + 'W','H','E','R','E',' ', + '`','D','i','a','l','o','g','_','`',' ','=',' ','\'','%','s','\'',' ', + 'A','N','D',' ', + '`','C','o','n','t','r','o','l','_','`',' ','=',' ','\'','%','s','\'',' ', + 'O','R','D','E','R',' ','B','Y',' ','`','O','r','d','e','r','i','n','g','`',0 + }; + MSIQUERY *view = NULL; + UINT r; + + if( HIWORD(param) != BN_CLICKED ) + return ERROR_SUCCESS; + + r = MSI_OpenQuery( dialog->package->db, &view, query, + dialog->name, control->name ); + if( r != ERROR_SUCCESS ) + { + ERR("query failed\n"); + return 0; + } + + r = MSI_IterateRecords( view, 0, msi_dialog_control_event, dialog ); + msiobj_release( &view->hdr ); + + return r; +} + +static UINT msi_dialog_get_checkbox_state( msi_dialog *dialog, + msi_control *control ) +{ + WCHAR state[2] = { 0 }; + DWORD sz = 2; + + MSI_GetPropertyW( dialog->package, control->property, state, &sz ); + return atoiW( state ) ? 1 : 0; +} + +static void msi_dialog_set_checkbox_state( msi_dialog *dialog, + msi_control *control, UINT state ) +{ + WCHAR szState[2] = { '0', 0 }; + + if( state ) + szState[0]++; + MSI_SetPropertyW( dialog->package, control->property, szState ); +} + +static void msi_dialog_checkbox_sync_state( msi_dialog *dialog, + msi_control *control ) +{ + UINT state; + + state = msi_dialog_get_checkbox_state( dialog, control ); + SendMessageW( control->hwnd, BM_SETCHECK, + state ? BST_CHECKED : BST_UNCHECKED, 0 ); +} + +static UINT msi_dialog_checkbox_handler( msi_dialog *dialog, + msi_control *control, WPARAM param ) +{ + UINT state; + + if( HIWORD(param) != BN_CLICKED ) + return ERROR_SUCCESS; + + TRACE("clicked checkbox %s, set %s\n", debugstr_w(control->name), + debugstr_w(control->property)); + + state = msi_dialog_get_checkbox_state( dialog, control ); + state = state ? 0 : 1; + msi_dialog_set_checkbox_state( dialog, control, state ); + msi_dialog_checkbox_sync_state( dialog, control ); + + return msi_dialog_button_handler( dialog, control, param ); +} + +static UINT msi_dialog_edit_handler( msi_dialog *dialog, + msi_control *control, WPARAM param ) +{ + UINT sz, r; + LPWSTR buf; + + if( HIWORD(param) != EN_CHANGE ) + return ERROR_SUCCESS; + + TRACE("edit %s contents changed, set %s\n", debugstr_w(control->name), + debugstr_w(control->property)); + + sz = 0x20; + buf = HeapAlloc( GetProcessHeap(), 0, sz*sizeof(WCHAR) ); + while( buf ) + { + r = GetWindowTextW( control->hwnd, buf, sz ); + if( r < (sz-1) ) + break; + sz *= 2; + buf = HeapReAlloc( GetProcessHeap(), 0, buf, sz*sizeof(WCHAR) ); + } + + MSI_SetPropertyW( dialog->package, control->property, buf ); + + HeapFree( GetProcessHeap(), 0, buf ); + + return ERROR_SUCCESS; +} + +static LRESULT msi_dialog_oncommand( msi_dialog *dialog, WPARAM param, HWND hwnd ) +{ + msi_control *control; + + TRACE("%p %p %08x\n", dialog, hwnd, param); + + control = msi_dialog_find_control_by_hwnd( dialog, hwnd ); + if( control ) + { + if( control->handler ) + { + control->handler( dialog, control, param ); + msi_dialog_evaluate_control_conditions( dialog ); + } + } + else + ERR("button click from nowhere\n"); + return 0; +} + +static LRESULT WINAPI MSIDialog_WndProc( HWND hwnd, UINT msg, + WPARAM wParam, LPARAM lParam ) +{ + msi_dialog *dialog = (LPVOID) GetWindowLongPtrW( hwnd, GWLP_USERDATA ); + + switch (msg) + { + case WM_CREATE: + return msi_dialog_oncreate( hwnd, (LPCREATESTRUCTW)lParam ); + + case WM_COMMAND: + return msi_dialog_oncommand( dialog, wParam, (HWND)lParam ); + + case WM_DESTROY: + dialog->hwnd = NULL; + return 0; + } + return DefWindowProcW(hwnd, msg, wParam, lParam); +} + +/* functions that interface to other modules within MSI */ + +msi_dialog *msi_dialog_create( MSIPACKAGE* package, LPCWSTR szDialogName, + msi_dialog_event_handler event_handler ) +{ + msi_dialog *dialog; + HWND hwnd; + + TRACE("%p %s\n", package, debugstr_w(szDialogName)); + + /* allocate the structure for the dialog to use */ + dialog = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof *dialog + sizeof(WCHAR)*strlenW(szDialogName) ); + if( !dialog ) + return NULL; + strcpyW( dialog->name, szDialogName ); + dialog->package = package; + dialog->event_handler = event_handler; + + /* create the dialog window, don't show it yet */ + hwnd = CreateWindowW( szMsiDialogClass, szDialogName, WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + NULL, NULL, NULL, dialog ); + if( !hwnd ) + { + ERR("Failed to create dialog %s\n", debugstr_w( szDialogName )); + msi_dialog_destroy( dialog ); + return NULL; + } + + return dialog; +} + +void msi_dialog_end_dialog( msi_dialog *dialog ) +{ + dialog->finished = 1; +} + +UINT msi_dialog_run_message_loop( msi_dialog *dialog ) +{ + MSG msg; + + if( dialog->attributes & msidbDialogAttributesVisible ) + { + ShowWindow( dialog->hwnd, SW_SHOW ); + UpdateWindow( dialog->hwnd ); + } + + if( dialog->attributes & msidbDialogAttributesModal ) + { + while( !dialog->finished && GetMessageW( &msg, 0, 0, 0 ) ) + { + TranslateMessage( &msg ); + DispatchMessageW( &msg ); + } + } + else + return ERROR_IO_PENDING; + + return ERROR_SUCCESS; +} + +void msi_dialog_check_messages( msi_dialog *dialog, HANDLE handle ) +{ + MSG msg; + DWORD r; + + do + { + while( PeekMessageW( &msg, 0, 0, 0, PM_REMOVE ) ) + { + TranslateMessage( &msg ); + DispatchMessageW( &msg ); + } + if( !handle ) + break; + r = MsgWaitForMultipleObjects( 1, &handle, 0, INFINITE, QS_ALLEVENTS ); + } + while( WAIT_OBJECT_0 != r ); +} + +void msi_dialog_do_preview( msi_dialog *dialog ) +{ + dialog->attributes |= msidbDialogAttributesVisible; + dialog->attributes &= ~msidbDialogAttributesModal; + msi_dialog_run_message_loop( dialog ); +} + +void msi_dialog_destroy( msi_dialog *dialog ) +{ + if( dialog->hwnd ) + ShowWindow( dialog->hwnd, SW_HIDE ); + + /* destroy the list of controls */ + while( dialog->control_list ) + { + msi_control *t = dialog->control_list; + dialog->control_list = t->next; + /* leave dialog->hwnd - destroying parent destroys child windows */ + HeapFree( GetProcessHeap(), 0, t->property ); + HeapFree( GetProcessHeap(), 0, t ); + } + + /* destroy the list of fonts */ + while( dialog->font_list ) + { + msi_font *t = dialog->font_list; + dialog->font_list = t->next; + DeleteObject( t->hfont ); + HeapFree( GetProcessHeap(), 0, t ); + } + HeapFree( GetProcessHeap(), 0, dialog->default_font ); + + if( dialog->hwnd ) + DestroyWindow( dialog->hwnd ); + + dialog->package = NULL; + HeapFree( GetProcessHeap(), 0, dialog ); +} + +void msi_dialog_register_class( void ) +{ + WNDCLASSW cls; + + ZeroMemory( &cls, sizeof cls ); + cls.lpfnWndProc = MSIDialog_WndProc; + cls.hInstance = NULL; + cls.hIcon = LoadIconW(0, (LPWSTR)IDI_APPLICATION); + cls.hCursor = LoadCursorW(0, (LPWSTR)IDC_ARROW); + cls.hbrBackground = (HBRUSH)(COLOR_WINDOW); + cls.lpszMenuName = NULL; + cls.lpszClassName = szMsiDialogClass; + + RegisterClassW( &cls ); +} + +void msi_dialog_unregister_class( void ) +{ + UnregisterClassW( szMsiDialogClass, NULL ); +} diff --git a/reactos/lib/msi/distinct.c b/reactos/lib/msi/distinct.c index c1a463d7666..c74759ca8f4 100644 --- a/reactos/lib/msi/distinct.c +++ b/reactos/lib/msi/distinct.c @@ -178,8 +178,7 @@ static UINT DISTINCT_close( struct tagMSIVIEW *view ) if( !dv->table ) return ERROR_FUNCTION_FAILED; - if( dv->translation ) - HeapFree( GetProcessHeap(), 0, dv->translation ); + HeapFree( GetProcessHeap(), 0, dv->translation ); dv->translation = NULL; dv->row_count = 0; @@ -218,16 +217,17 @@ static UINT DISTINCT_get_column_info( struct tagMSIVIEW *view, return dv->table->ops->get_column_info( dv->table, n, name, type ); } -static UINT DISTINCT_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT DISTINCT_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, + MSIRECORD *rec ) { MSIDISTINCTVIEW *dv = (MSIDISTINCTVIEW*)view; - TRACE("%p %d %ld\n", dv, eModifyMode, hrec ); + TRACE("%p %d %p\n", dv, eModifyMode, rec ); if( !dv->table ) return ERROR_FUNCTION_FAILED; - return dv->table->ops->modify( dv->table, eModifyMode, hrec ); + return dv->table->ops->modify( dv->table, eModifyMode, rec ); } static UINT DISTINCT_delete( struct tagMSIVIEW *view ) @@ -239,8 +239,7 @@ static UINT DISTINCT_delete( struct tagMSIVIEW *view ) if( dv->table ) dv->table->ops->delete( dv->table ); - if( dv->translation ) - HeapFree( GetProcessHeap(), 0, dv->translation ); + HeapFree( GetProcessHeap(), 0, dv->translation ); msiobj_release( &dv->db->hdr ); HeapFree( GetProcessHeap(), 0, dv ); diff --git a/reactos/lib/msi/format.c b/reactos/lib/msi/format.c new file mode 100644 index 00000000000..a5a9d2b778b --- /dev/null +++ b/reactos/lib/msi/format.c @@ -0,0 +1,583 @@ +/* + * Implementation of the Microsoft Installer (msi.dll) + * + * Copyright 2005 Mike McCormack for CodeWeavers + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/msiformatrecord.asp + */ + +#include +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winerror.h" +#include "winreg.h" +#include "wine/debug.h" +#include "fdi.h" +#include "msi.h" +#include "msiquery.h" +#include "fcntl.h" +#include "objbase.h" +#include "objidl.h" +#include "msipriv.h" +#include "winnls.h" +#include "winuser.h" +#include "shlobj.h" +#include "wine/unicode.h" +#include "ver.h" +#include "action.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msi); + + +LPWSTR build_default_format(MSIRECORD* record) +{ + int i; + int count; + LPWSTR rc; + static const WCHAR fmt[] = {'%','i',':',' ','[','%','i',']',' ',0}; + WCHAR buf[11]; + + count = MSI_RecordGetFieldCount(record); + + rc = HeapAlloc(GetProcessHeap(),0,(11*count)*sizeof(WCHAR)); + rc[0] = 0; + for (i = 1; i <= count; i++) + { + sprintfW(buf,fmt,i,i); + strcatW(rc,buf); + } + return rc; +} + +static const WCHAR* scanW(LPCWSTR buf, WCHAR token, DWORD len) +{ + DWORD i; + for (i = 0; i < len; i++) + if (buf[i] == token) + return &buf[i]; + return NULL; +} + +/* break out helper functions for deformating */ +static LPWSTR deformat_component(MSIPACKAGE* package, LPCWSTR key, DWORD* sz) +{ + LPWSTR value = NULL; + INT index; + + *sz = 0; + if (!package) + return NULL; + + ERR("POORLY HANDLED DEFORMAT.. [$componentkey] \n"); + index = get_loaded_component(package,key); + if (index >= 0) + { + value = resolve_folder(package, package->components[index].Directory, + FALSE, FALSE, NULL); + *sz = (strlenW(value)) * sizeof(WCHAR); + } + + return value; +} + +static LPWSTR deformat_file(MSIPACKAGE* package, LPCWSTR key, DWORD* sz) +{ + LPWSTR value = NULL; + INT index; + + *sz = 0; + + if (!package) + return NULL; + + index = get_loaded_file(package,key); + if (index >=0) + { + value = dupstrW(package->files[index].TargetPath); + *sz = (strlenW(value)) * sizeof(WCHAR); + } + + return value; +} + +static LPWSTR deformat_environment(MSIPACKAGE* package, LPCWSTR key, + DWORD* chunk) +{ + LPWSTR value = NULL; + DWORD sz; + + sz = GetEnvironmentVariableW(key,NULL,0); + if (sz > 0) + { + sz++; + value = HeapAlloc(GetProcessHeap(),0,sz * sizeof(WCHAR)); + GetEnvironmentVariableW(&key[1],value,sz); + *chunk = (strlenW(value)) * sizeof(WCHAR); + } + else + { + ERR("Unknown environment variable\n"); + *chunk = 0; + value = NULL; + } + return value; +} + + +static LPWSTR deformat_NULL(DWORD* chunk) +{ + LPWSTR value; + + value = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*2); + value[0] = 0; + *chunk = sizeof(WCHAR); + return value; +} + +static LPWSTR deformat_escape(LPCWSTR key, DWORD* chunk) +{ + LPWSTR value; + + value = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*2); + value[0] = key[0]; + *chunk = sizeof(WCHAR); + + return value; +} + + +static BOOL is_key_number(LPCWSTR key) +{ + INT index = 0; + if (key[0] == 0) + return FALSE; + + while (isdigitW(key[index])) index++; + if (key[index] == 0) + return TRUE; + else + return FALSE; +} + +static LPWSTR deformat_index(MSIRECORD* record, LPCWSTR key, DWORD* chunk ) +{ + INT index; + LPWSTR value; + + index = atoiW(key); + TRACE("record index %i\n",index); + value = load_dynamic_stringW(record,index); + if (value) + *chunk = strlenW(value) * sizeof(WCHAR); + else + { + value = NULL; + *chunk = 0; + } + return value; +} + +static LPWSTR deformat_property(MSIPACKAGE* package, LPCWSTR key, DWORD* chunk) +{ + UINT rc; + LPWSTR value; + + if (!package) + return NULL; + + value = load_dynamic_property(package,key, &rc); + + if (rc == ERROR_SUCCESS) + *chunk = (strlenW(value)) * sizeof(WCHAR); + + return value; +} + +static BOOL find_next_outermost_key(LPCWSTR source, DWORD len_remaining, + LPWSTR *key, LPCWSTR *mark, LPCWSTR* mark2, + BOOL *nested) +{ + INT count = 0; + INT total_count = 0; + int i; + + *mark = scanW(source,'[',len_remaining); + if (!*mark) + return FALSE; + + count = 1; + total_count = 1; + *nested = FALSE; + for (i = 1; (*mark - source) + i < len_remaining && count > 0; i++) + { + if ((*mark)[i] == '[') + { + count ++; + total_count ++; + *nested = TRUE; + } + else if ((*mark)[i] == ']') + { + count --; + } + } + + if (count > 0) + return FALSE; + + *mark2 = &(*mark)[i-1]; + + i = *mark2 - *mark; + *key = HeapAlloc(GetProcessHeap(),0,i*sizeof(WCHAR)); + /* do not have the [] in the key */ + i -= 1; + strncpyW(*key,&(*mark)[1],i); + (*key)[i] = 0; + + TRACE("Found Key %s\n",debugstr_w(*key)); + return TRUE; +} + + +/* + * len is in WCHARs + * return is also in WCHARs + */ +static DWORD deformat_string_internal(MSIPACKAGE *package, LPCWSTR ptr, + WCHAR** data, DWORD len, MSIRECORD* record) +{ + LPCWSTR mark = NULL; + LPCWSTR mark2 = NULL; + DWORD size=0; + DWORD chunk=0; + LPWSTR key; + LPWSTR value = NULL; + DWORD sz; + LPBYTE newdata = NULL; + const WCHAR* progress = NULL; + BOOL nested; + + if (ptr==NULL) + { + TRACE("Deformatting NULL string\n"); + *data = NULL; + return 0; + } + + TRACE("Starting with %s\n",debugstr_w(ptr)); + + /* scan for special characters... fast exit */ + if (!scanW(ptr,'[',len) || (scanW(ptr,'[',len) && !scanW(ptr,']',len))) + { + /* not formatted */ + *data = HeapAlloc(GetProcessHeap(),0,(len*sizeof(WCHAR))); + memcpy(*data,ptr,len*sizeof(WCHAR)); + TRACE("Returning %s\n",debugstr_w(*data)); + return len; + } + + progress = ptr; + + while (progress - ptr < len) + { + /* formatted string located */ + if (!find_next_outermost_key(progress, len - (progress - ptr), &key, + &mark, &mark2, &nested)) + { + LPBYTE nd2; + + TRACE("after value %s .. %s\n",debugstr_w((LPWSTR)newdata), + debugstr_w(mark)); + chunk = (len - (progress - ptr)) * sizeof(WCHAR); + TRACE("after chunk is %li + %li\n",size,chunk); + if (size) + nd2 = HeapReAlloc(GetProcessHeap(),0,newdata,(size+chunk)); + else + nd2 = HeapAlloc(GetProcessHeap(),0,chunk); + + newdata = nd2; + memcpy(&newdata[size],progress,chunk); + size+=chunk; + break; + } + + if (mark != progress) + { + LPBYTE tgt; + DWORD old_size = size; + INT cnt = (mark - progress); + TRACE("%i (%i) characters before marker\n",cnt,(mark-progress)); + size += cnt * sizeof(WCHAR); + if (!old_size) + tgt = HeapAlloc(GetProcessHeap(),0,size); + else + tgt = HeapReAlloc(GetProcessHeap(),0,newdata,size); + newdata = tgt; + memcpy(&newdata[old_size],progress,(cnt * sizeof(WCHAR))); + } + + progress = mark; + + if (nested) + { + TRACE("Nested key... %s\n",debugstr_w(key)); + deformat_string_internal(package, key, &value, strlenW(key)+1, + record); + + HeapFree(GetProcessHeap(),0,key); + key = value; + } + + TRACE("Current %s .. %s\n",debugstr_w((LPWSTR)newdata),debugstr_w(key)); + + if (!package) + { + /* only deformat number indexs */ + if (is_key_number(key)) + value = deformat_index(record,key,&chunk); + else + { + chunk = (strlenW(key) + 2)*sizeof(WCHAR); + value = HeapAlloc(GetProcessHeap(),0,chunk); + value[0] = '['; + memcpy(&value[1],key,strlenW(key)*sizeof(WCHAR)); + value[strlenW(key)+1] = ']'; + } + } + else + { + sz = 0; + switch (key[0]) + { + case '~': + value = deformat_NULL(&chunk); + break; + case '$': + value = deformat_component(package,&key[1],&chunk); + break; + case '#': + case '!': /* should be short path */ + value = deformat_file(package,&key[1], &chunk); + break; + case '\\': + value = deformat_escape(&key[1],&chunk); + break; + case '%': + value = deformat_environment(package,&key[1],&chunk); + break; + default: + if (is_key_number(key)) + value = deformat_index(record,key,&chunk); + else + value = deformat_property(package,key,&chunk); + break; + } + } + + HeapFree(GetProcessHeap(),0,key); + + if (value!=NULL) + { + LPBYTE nd2; + TRACE("value %s, chunk %li size %li\n",debugstr_w((LPWSTR)value), + chunk, size); + if (size) + nd2= HeapReAlloc(GetProcessHeap(),0,newdata,(size + chunk)); + else + nd2= HeapAlloc(GetProcessHeap(),0,chunk); + newdata = nd2; + memcpy(&newdata[size],value,chunk); + size+=chunk; + HeapFree(GetProcessHeap(),0,value); + } + + progress = mark2+1; + } + + TRACE("after everything %s\n",debugstr_w((LPWSTR)newdata)); + + *data = (LPWSTR)newdata; + return size / sizeof(WCHAR); +} + + +UINT MSI_FormatRecordW( MSIPACKAGE* package, MSIRECORD* record, LPWSTR buffer, + DWORD *size ) +{ + LPWSTR deformated; + LPWSTR rec; + DWORD len; + UINT rc = ERROR_INVALID_PARAMETER; + + TRACE("%p %p %p %li\n",package, record ,buffer, *size); + + rec = load_dynamic_stringW(record,0); + if (!rec) + rec = build_default_format(record); + + TRACE("(%s)\n",debugstr_w(rec)); + + len = deformat_string_internal(package,rec,&deformated,strlenW(rec), + record); + + if (buffer) + { + if (*size>len) + { + memcpy(buffer,deformated,len*sizeof(WCHAR)); + rc = ERROR_SUCCESS; + buffer[len] = 0; + } + else + { + if (*size > 0) + { + memcpy(buffer,deformated,(*size)*sizeof(WCHAR)); + buffer[(*size)-1] = 0; + } + rc = ERROR_MORE_DATA; + } + } + else + rc = ERROR_SUCCESS; + + *size = len; + + HeapFree(GetProcessHeap(),0,rec); + HeapFree(GetProcessHeap(),0,deformated); + return rc; +} + +UINT MSI_FormatRecordA( MSIPACKAGE* package, MSIRECORD* record, LPSTR buffer, + DWORD *size ) +{ + LPWSTR deformated; + LPWSTR rec; + DWORD len,lenA; + UINT rc = ERROR_INVALID_PARAMETER; + + TRACE("%p %p %p %li\n",package, record ,buffer, *size); + + rec = load_dynamic_stringW(record,0); + if (!rec) + rec = build_default_format(record); + + TRACE("(%s)\n",debugstr_w(rec)); + + len = deformat_string_internal(package,rec,&deformated,strlenW(rec), + record); + lenA = WideCharToMultiByte(CP_ACP,0,deformated,len,NULL,0,NULL,NULL); + + if (buffer) + { + WideCharToMultiByte(CP_ACP,0,deformated,len,buffer,*size,NULL, NULL); + if (*size>lenA) + { + rc = ERROR_SUCCESS; + buffer[lenA] = 0; + } + else + { + rc = ERROR_MORE_DATA; + buffer[(*size)-1] = 0; + } + } + else + rc = ERROR_SUCCESS; + + *size = lenA; + + HeapFree(GetProcessHeap(),0,rec); + HeapFree(GetProcessHeap(),0,deformated); + return rc; +} + + +UINT WINAPI MsiFormatRecordW( MSIHANDLE hInstall, MSIHANDLE hRecord, + LPWSTR szResult, DWORD *sz ) +{ + UINT r = ERROR_INVALID_HANDLE; + MSIPACKAGE *package; + MSIRECORD *record; + + TRACE("%ld %ld %p %p\n", hInstall, hRecord, szResult, sz); + + record = msihandle2msiinfo( hRecord, MSIHANDLETYPE_RECORD ); + + if (!record) + return ERROR_INVALID_HANDLE; + if (!sz) + { + msiobj_release( &record->hdr ); + if (szResult) + return ERROR_INVALID_PARAMETER; + else + return ERROR_SUCCESS; + } + + package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE ); + + if( record ) + { + r = MSI_FormatRecordW( package, record, szResult, sz ); + msiobj_release( &record->hdr ); + } + if (package) + msiobj_release( &package->hdr ); + return r; +} + +UINT WINAPI MsiFormatRecordA( MSIHANDLE hInstall, MSIHANDLE hRecord, + LPSTR szResult, DWORD *sz ) +{ + UINT r = ERROR_INVALID_HANDLE; + MSIPACKAGE *package = NULL; + MSIRECORD *record = NULL; + + TRACE("%ld %ld %p %p\n", hInstall, hRecord, szResult, sz); + + record = msihandle2msiinfo( hRecord, MSIHANDLETYPE_RECORD ); + + if (!record) + return ERROR_INVALID_HANDLE; + if (!sz) + { + msiobj_release( &record->hdr ); + if (szResult) + return ERROR_INVALID_PARAMETER; + else + return ERROR_SUCCESS; + } + + package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE ); + + if( record ) + { + r = MSI_FormatRecordA( package, record, szResult, sz ); + msiobj_release( &record->hdr ); + } + if (package) + msiobj_release( &package->hdr ); + return r; +} diff --git a/reactos/lib/msi/handle.c b/reactos/lib/msi/handle.c index bd33099c1f0..281a16c0325 100644 --- a/reactos/lib/msi/handle.c +++ b/reactos/lib/msi/handle.c @@ -157,7 +157,7 @@ void msiobj_addref( MSIOBJECTHDR *info ) return; } - info->refcount++; + InterlockedIncrement(&info->refcount); } void msiobj_lock( MSIOBJECTHDR *info ) @@ -185,12 +185,12 @@ int msiobj_release( MSIOBJECTHDR *info ) return -1; } - ret = info->refcount--; - if (info->refcount == 0) + ret = InterlockedDecrement( &info->refcount ); + if( ret==0 ) { - if( info->destructor ) + if( info->destructor ) info->destructor( info ); - HeapFree( GetProcessHeap(), 0, info ); + HeapFree( GetProcessHeap(), 0, info ); TRACE("object %p destroyed\n", info); } diff --git a/reactos/lib/msi/insert.c b/reactos/lib/msi/insert.c index f589be410c5..40dba1a9d4f 100644 --- a/reactos/lib/msi/insert.c +++ b/reactos/lib/msi/insert.c @@ -44,7 +44,7 @@ typedef struct tagMSIINSERTVIEW MSIDATABASE *db; BOOL bIsTemp; MSIVIEW *sv; - value_list *vals; /* looks like these may be ignored... */ + value_list *vals; } MSIINSERTVIEW; static UINT INSERT_fetch_int( struct tagMSIVIEW *view, UINT row, UINT col, UINT *val ) @@ -56,11 +56,62 @@ static UINT INSERT_fetch_int( struct tagMSIVIEW *view, UINT row, UINT col, UINT return ERROR_FUNCTION_FAILED; } +/* + * INSERT_merge_record + * + * Merge a value_list and a record to create a second record. + * Replace wildcard entries in the valuelist with values from the record + */ +static MSIRECORD *INSERT_merge_record( UINT fields, value_list *vl, MSIRECORD *rec ) +{ + MSIRECORD *merged; + DWORD wildcard_count = 1, i; + const WCHAR *str; + + merged = MSI_CreateRecord( fields ); + for( i=1; i <= fields; i++ ) + { + if( !vl ) + { + TRACE("Not enough elements in the list to insert\n"); + goto err; + } + switch( vl->val->type ) + { + case EXPR_SVAL: + TRACE("field %ld -> %s\n", i, debugstr_w(vl->val->u.sval)); + MSI_RecordSetStringW( merged, i, vl->val->u.sval ); + break; + case EXPR_IVAL: + MSI_RecordSetInteger( merged, i, vl->val->u.ival ); + break; + case EXPR_WILDCARD: + if( !rec ) + goto err; + if( MSI_RecordIsNull( rec, wildcard_count ) ) + goto err; + str = MSI_RecordGetString( rec, wildcard_count ); + MSI_RecordSetStringW( merged, i, str ); + wildcard_count++; + break; + default: + ERR("Unknown expression type %d\n", vl->val->type); + } + vl = vl->next; + } + + return merged; +err: + msiobj_release( &merged->hdr ); + return NULL; +} + static UINT INSERT_execute( struct tagMSIVIEW *view, MSIRECORD *record ) { MSIINSERTVIEW *iv = (MSIINSERTVIEW*)view; UINT n, type, val, r, row, col_count = 0; MSIVIEW *sv; + MSIRECORD *values = NULL; TRACE("%p %p\n", iv, record ); @@ -77,12 +128,13 @@ static UINT INSERT_execute( struct tagMSIVIEW *view, MSIRECORD *record ) if( r ) goto err; - n = MSI_RecordGetFieldCount( record ); - if( n != col_count ) - { - ERR("Number of fields do not match\n"); + /* + * Merge the wildcard values into the list of values provided + * in the query, and create a record containing both. + */ + values = INSERT_merge_record( col_count, iv->vals, record ); + if( !values ) goto err; - } row = -1; r = sv->ops->insert_row( sv, &row ); @@ -98,12 +150,12 @@ static UINT INSERT_execute( struct tagMSIVIEW *view, MSIRECORD *record ) if( type & MSITYPE_STRING ) { - const WCHAR *str = MSI_RecordGetString( record, n ); + const WCHAR *str = MSI_RecordGetString( values, n ); val = msi_addstringW( iv->db->strings, 0, str, -1, 1 ); } else { - val = MSI_RecordGetInteger( record, n ); + val = MSI_RecordGetInteger( values, n ); val |= 0x8000; } r = sv->ops->set_int( sv, row, n, val ); @@ -112,6 +164,9 @@ static UINT INSERT_execute( struct tagMSIVIEW *view, MSIRECORD *record ) } err: + if( values ) + msiobj_release( &values->hdr ); + return ERROR_SUCCESS; } @@ -159,11 +214,11 @@ static UINT INSERT_get_column_info( struct tagMSIVIEW *view, return sv->ops->get_column_info( sv, n, name, type ); } -static UINT INSERT_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT INSERT_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIRECORD *rec) { MSIINSERTVIEW *iv = (MSIINSERTVIEW*)view; - TRACE("%p %d %ld\n", iv, eModifyMode, hrec ); + TRACE("%p %d %p\n", iv, eModifyMode, rec ); return ERROR_FUNCTION_FAILED; } diff --git a/reactos/lib/msi/msi.c b/reactos/lib/msi/msi.c index 77ccf30658c..78f8ce7750a 100644 --- a/reactos/lib/msi/msi.c +++ b/reactos/lib/msi/msi.c @@ -1,7 +1,7 @@ /* * Implementation of the Microsoft Installer (msi.dll) * - * Copyright 2002,2003,2004 Mike McCormack for CodeWeavers + * Copyright 2002,2003,2004,2005 Mike McCormack for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -37,6 +37,7 @@ #include "wine/unicode.h" #include "objbase.h" #include "winver.h" +#include "winuser.h" #include "initguid.h" @@ -53,28 +54,18 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi); */ #define LPCTSTR LPCWSTR -DEFINE_GUID( CLSID_MsiDatabase, 0x000c1084, 0x0000, 0x0000, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); - -static const WCHAR szInstaller[] = { -'S','o','f','t','w','a','r','e','\\', -'M','i','c','r','o','s','o','f','t','\\', -'W','i','n','d','o','w','s','\\', -'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', -'I','n','s','t','a','l','l','e','r',0 }; - -static const WCHAR szFeatures[] = { -'F','e','a','t','u','r','e','s',0 }; -static const WCHAR szComponents[] = { -'C','o','m','p','o','n','e','n','t','s',0 }; +DEFINE_GUID( CLSID_MsiDatabase, 0x000c1084, 0x0000, 0x0000, + 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); /* the UI level */ -INSTALLUILEVEL gUILevel; -HWND gUIhwnd; -INSTALLUI_HANDLERA gUIHandler; -INSTALLUI_HANDLERW gUIHandlerW; -DWORD gUIFilter; -LPVOID gUIContext; +INSTALLUILEVEL gUILevel = INSTALLUILEVEL_BASIC; +HWND gUIhwnd = 0; +INSTALLUI_HANDLERA gUIHandlerA = NULL; +INSTALLUI_HANDLERW gUIHandlerW = NULL; +DWORD gUIFilter = 0; +LPVOID gUIContext = NULL; WCHAR gszLogFile[MAX_PATH]; +HINSTANCE msi_hInstance; /* * .MSI file format @@ -83,157 +74,15 @@ WCHAR gszLogFile[MAX_PATH]; * It should contain a number of streams. */ -BOOL unsquash_guid(LPCWSTR in, LPWSTR out) -{ - DWORD i,n=0; - - out[n++]='{'; - for(i=0; i<8; i++) - out[n++] = in[7-i]; - out[n++]='-'; - for(i=0; i<4; i++) - out[n++] = in[11-i]; - out[n++]='-'; - for(i=0; i<4; i++) - out[n++] = in[15-i]; - out[n++]='-'; - for(i=0; i<2; i++) - { - out[n++] = in[17+i*2]; - out[n++] = in[16+i*2]; - } - out[n++]='-'; - for( ; i<8; i++) - { - out[n++] = in[17+i*2]; - out[n++] = in[16+i*2]; - } - out[n++]='}'; - out[n]=0; - return TRUE; -} - -BOOL squash_guid(LPCWSTR in, LPWSTR out) -{ - DWORD i,n=0; - - if(in[n++] != '{') - return FALSE; - for(i=0; i<8; i++) - out[7-i] = in[n++]; - if(in[n++] != '-') - return FALSE; - for(i=0; i<4; i++) - out[11-i] = in[n++]; - if(in[n++] != '-') - return FALSE; - for(i=0; i<4; i++) - out[15-i] = in[n++]; - if(in[n++] != '-') - return FALSE; - for(i=0; i<2; i++) - { - out[17+i*2] = in[n++]; - out[16+i*2] = in[n++]; - } - if(in[n++] != '-') - return FALSE; - for( ; i<8; i++) - { - out[17+i*2] = in[n++]; - out[16+i*2] = in[n++]; - } - out[32]=0; - if(in[n++] != '}') - return FALSE; - if(in[n]) - return FALSE; - return TRUE; -} - -/* tables for encoding and decoding base85 */ -static const unsigned char table_dec85[0x80] = { -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0x00,0xff,0xff,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff, -0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0xff,0xff,0xff,0x16,0xff,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,0xff,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,0xff,0x53,0x54,0xff, -}; - -static const char table_enc85[] = -"!$%&'()*+,-.0123456789=?@ABCDEFGHIJKLMNO" -"PQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwx" -"yz{}~"; - -/* - * Converts a base85 encoded guid into a GUID pointer - * Base85 encoded GUIDs should be 20 characters long. - * - * returns TRUE if successful, FALSE if not - */ -BOOL decode_base85_guid( LPCWSTR str, GUID *guid ) -{ - DWORD i, val = 0, base = 1, *p; - - p = (DWORD*) guid; - for( i=0; i<20; i++ ) - { - if( (i%5) == 0 ) - { - val = 0; - base = 1; - } - val += table_dec85[str[i]] * base; - if( str[i] >= 0x80 ) - return FALSE; - if( table_dec85[str[i]] == 0xff ) - return FALSE; - if( (i%5) == 4 ) - p[i/5] = val; - base *= 85; - } - return TRUE; -} - -/* - * Encodes a base85 guid given a GUID pointer - * Caller should provide a 21 character buffer for the encoded string. - * - * returns TRUE if successful, FALSE if not - */ -BOOL encode_base85_guid( GUID *guid, LPWSTR str ) -{ - unsigned int x, *p, i; - - p = (unsigned int*) guid; - for( i=0; i<4; i++ ) - { - x = p[i]; - *str++ = table_enc85[x%85]; - x = x/85; - *str++ = table_enc85[x%85]; - x = x/85; - *str++ = table_enc85[x%85]; - x = x/85; - *str++ = table_enc85[x%85]; - x = x/85; - *str++ = table_enc85[x%85]; - } - *str = 0; - - return TRUE; -} - - VOID MSI_CloseDatabase( MSIOBJECTHDR *arg ) { MSIDATABASE *db = (MSIDATABASE *) arg; + DWORD r; free_cached_tables( db ); - IStorage_Release( db->storage ); + r = IStorage_Release( db->storage ); + if( r ) + ERR("database reference count was not zero (%ld)\n", r); } UINT MSI_OpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIDATABASE **pdb) @@ -384,10 +233,8 @@ UINT WINAPI MsiOpenDatabaseA(LPCSTR szDBPath, LPCSTR szPersist, MSIHANDLE *phDB) r = MsiOpenDatabaseW( szwDBPath, szwPersist, phDB ); end: - if( szwPersist ) - HeapFree( GetProcessHeap(), 0, szwPersist ); - if( szwDBPath ) - HeapFree( GetProcessHeap(), 0, szwDBPath ); + HeapFree( GetProcessHeap(), 0, szwPersist ); + HeapFree( GetProcessHeap(), 0, szwDBPath ); return r; } @@ -409,35 +256,24 @@ UINT WINAPI MsiOpenProductA(LPCSTR szProduct, MSIHANDLE *phProduct) ret = MsiOpenProductW( szwProd, phProduct ); - if( szwProd ) - HeapFree( GetProcessHeap(), 0, szwProd ); + HeapFree( GetProcessHeap(), 0, szwProd ); return ret; } UINT WINAPI MsiOpenProductW(LPCWSTR szProduct, MSIHANDLE *phProduct) { - static const WCHAR szKey[] = { - 'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'U','n','i','n','s','t','a','l','l',0 }; static const WCHAR szLocalPackage[] = { 'L','o','c','a','l','P','a','c','k','a','g','e', 0 }; LPWSTR path = NULL; UINT r; - HKEY hKeyProduct = NULL, hKeyUninstall = NULL; + HKEY hKeyProduct = NULL; DWORD count, type; TRACE("%s %p\n",debugstr_w(szProduct), phProduct); - r = RegOpenKeyW( HKEY_LOCAL_MACHINE, szKey, &hKeyUninstall ); - if( r != ERROR_SUCCESS ) - return ERROR_UNKNOWN_PRODUCT; - - r = RegOpenKeyW( hKeyUninstall, szProduct, &hKeyProduct ); + r = MSIREG_OpenUninstallKey(szProduct,&hKeyProduct,FALSE); if( r != ERROR_SUCCESS ) { r = ERROR_UNKNOWN_PRODUCT; @@ -470,38 +306,44 @@ UINT WINAPI MsiOpenProductW(LPCWSTR szProduct, MSIHANDLE *phProduct) r = MsiOpenPackageW( path, phProduct ); end: - if( path ) - HeapFree( GetProcessHeap(), 0, path ); + HeapFree( GetProcessHeap(), 0, path ); if( hKeyProduct ) RegCloseKey( hKeyProduct ); - RegCloseKey( hKeyUninstall ); return r; } -UINT WINAPI MsiAdvertiseProductA(LPCSTR szPackagePath, LPCSTR szScriptfilePath, LPCSTR szTransforms, LANGID lgidLanguage) +UINT WINAPI MsiAdvertiseProductA(LPCSTR szPackagePath, LPCSTR szScriptfilePath, + LPCSTR szTransforms, LANGID lgidLanguage) { - FIXME("%s %s %s 0x%08x\n",debugstr_a(szPackagePath), debugstr_a(szScriptfilePath), debugstr_a(szTransforms), lgidLanguage); + FIXME("%s %s %s %08x\n",debugstr_a(szPackagePath), + debugstr_a(szScriptfilePath), debugstr_a(szTransforms), lgidLanguage); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiAdvertiseProductW(LPCWSTR szPackagePath, LPCWSTR szScriptfilePath, LPCWSTR szTransforms, LANGID lgidLanguage) +UINT WINAPI MsiAdvertiseProductW(LPCWSTR szPackagePath, LPCWSTR szScriptfilePath, + LPCWSTR szTransforms, LANGID lgidLanguage) { - FIXME("%s %s %s 0x%08x\n",debugstr_w(szPackagePath), debugstr_w(szScriptfilePath), debugstr_w(szTransforms), lgidLanguage); + FIXME("%s %s %s %08x\n",debugstr_w(szPackagePath), + debugstr_w(szScriptfilePath), debugstr_w(szTransforms), lgidLanguage); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiAdvertiseProductExA(LPCSTR szPackagePath, LPCSTR szScriptfilePath, LPCSTR szTransforms, LANGID lgidLanguage, DWORD dwPlatform, DWORD dwOptions) +UINT WINAPI MsiAdvertiseProductExA(LPCSTR szPackagePath, LPCSTR szScriptfilePath, + LPCSTR szTransforms, LANGID lgidLanguage, DWORD dwPlatform, DWORD dwOptions) { - FIXME("%s %s %s 0x%08x 0x%08lx 0x%08lx\n", - debugstr_a(szPackagePath), debugstr_a(szScriptfilePath), debugstr_a(szTransforms), lgidLanguage, dwPlatform, dwOptions); + FIXME("%s %s %s %08x %08lx %08lx\n", debugstr_a(szPackagePath), + debugstr_a(szScriptfilePath), debugstr_a(szTransforms), + lgidLanguage, dwPlatform, dwOptions); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiAdvertiseProductExW( LPCWSTR szPackagePath, LPCWSTR szScriptfilePath, LPCWSTR szTransforms, LANGID lgidLanguage, DWORD dwPlatform, DWORD dwOptions) +UINT WINAPI MsiAdvertiseProductExW( LPCWSTR szPackagePath, LPCWSTR szScriptfilePath, + LPCWSTR szTransforms, LANGID lgidLanguage, DWORD dwPlatform, DWORD dwOptions) { - FIXME("%s %s %s 0x%08x 0x%08lx 0x%08lx\n", - debugstr_w(szPackagePath), debugstr_w(szScriptfilePath), debugstr_w(szTransforms), lgidLanguage, dwPlatform, dwOptions); + FIXME("%s %s %s %08x %08lx %08lx\n", debugstr_w(szPackagePath), + debugstr_w(szScriptfilePath), debugstr_w(szTransforms), + lgidLanguage, dwPlatform, dwOptions); return ERROR_CALL_NOT_IMPLEMENTED; } @@ -533,11 +375,8 @@ UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath, LPCSTR szCommandLine) r = MsiInstallProductW( szwPath, szwCommand ); end: - if( szwPath ) - HeapFree( GetProcessHeap(), 0, szwPath ); - - if( szwCommand ) - HeapFree( GetProcessHeap(), 0, szwCommand ); + HeapFree( GetProcessHeap(), 0, szwPath ); + HeapFree( GetProcessHeap(), 0, szwCommand ); return r; } @@ -569,29 +408,148 @@ UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath, LPCWSTR szCommandLine) UINT WINAPI MsiReinstallProductA(LPCSTR szProduct, DWORD dwReinstallMode) { - FIXME("%s 0x%08lx\n", debugstr_a(szProduct), dwReinstallMode); - return ERROR_CALL_NOT_IMPLEMENTED; + FIXME("%s %08lx\n", debugstr_a(szProduct), dwReinstallMode); + return ERROR_CALL_NOT_IMPLEMENTED; } UINT WINAPI MsiReinstallProductW(LPCWSTR szProduct, DWORD dwReinstallMode) { - FIXME("%s 0x%08lx\n", debugstr_w(szProduct), dwReinstallMode); - return ERROR_CALL_NOT_IMPLEMENTED; + FIXME("%s %08lx\n", debugstr_w(szProduct), dwReinstallMode); + return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage, LPCSTR szInstallPackage, INSTALLTYPE eInstallType, LPCSTR szCommandLine) +UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage, LPCSTR szInstallPackage, + INSTALLTYPE eInstallType, LPCSTR szCommandLine) { - FIXME("%s %s %d %s\n", debugstr_a(szPatchPackage), debugstr_a(szInstallPackage), eInstallType, debugstr_a(szCommandLine)); - return ERROR_CALL_NOT_IMPLEMENTED; + FIXME("%s %s %d %s\n", debugstr_a(szPatchPackage), debugstr_a(szInstallPackage), + eInstallType, debugstr_a(szCommandLine)); + return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szInstallPackage, INSTALLTYPE eInstallType, LPCWSTR szCommandLine) +UINT WINAPI MsiApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szInstallPackage, + INSTALLTYPE eInstallType, LPCWSTR szCommandLine) { - FIXME("%s %s %d %s\n", debugstr_w(szPatchPackage), debugstr_w(szInstallPackage), eInstallType, debugstr_w(szCommandLine)); - return ERROR_CALL_NOT_IMPLEMENTED; + FIXME("%s %s %d %s\n", debugstr_w(szPatchPackage), debugstr_w(szInstallPackage), + eInstallType, debugstr_w(szCommandLine)); + return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiConfigureProductA(LPCSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState) +UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel, + INSTALLSTATE eInstallState, LPCWSTR szCommandLine) +{ + MSIHANDLE handle; + MSIPACKAGE* package; + UINT rc; + HKEY hkey=0,hkey1=0; + DWORD sz; + static const WCHAR szSouceList[] = { + 'S','o','u','r','c','e','L','i','s','t',0}; + static const WCHAR szLUS[] = { + 'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0}; + WCHAR sourcepath[0x200]; + static const WCHAR szInstalled[] = { + ' ','I','n','s','t','a','l','l','e','d','=','1',0}; + LPWSTR commandline; + + FIXME("%s %d %d %s\n",debugstr_w(szProduct), iInstallLevel, eInstallState, + debugstr_w(szCommandLine)); + + if (eInstallState != INSTALLSTATE_LOCAL && + eInstallState != INSTALLSTATE_DEFAULT) + { + FIXME("Not implemented for anything other than local installs\n"); + return ERROR_CALL_NOT_IMPLEMENTED; + } + + rc = MSIREG_OpenUserProductsKey(szProduct,&hkey,FALSE); + if (rc != ERROR_SUCCESS) + goto end; + + rc = RegOpenKeyW(hkey,szSouceList,&hkey1); + if (rc != ERROR_SUCCESS) + goto end; + + sz = sizeof(sourcepath); + rc = RegQueryValueExW(hkey1, szLUS, NULL, NULL,(LPBYTE)sourcepath, &sz); + if (rc != ERROR_SUCCESS) + goto end; + + RegCloseKey(hkey1); + /* + * ok 1, we need to find the msi file for this product. + * 2, find the source dir for the files + * 3, do the configure/install. + * 4, cleanupany runonce entry. + */ + + rc = MsiOpenProductW(szProduct,&handle); + if (rc != ERROR_SUCCESS) + goto end; + + package = msihandle2msiinfo(handle, MSIHANDLETYPE_PACKAGE); + + sz = strlenW(szInstalled); + + if (szCommandLine) + sz += strlenW(szCommandLine); + + commandline = HeapAlloc(GetProcessHeap(),0,sz * sizeof(WCHAR)); + + if (szCommandLine) + strcpyW(commandline,szCommandLine); + else + commandline[0] = 0; + + if (MsiQueryProductStateW(szProduct) != INSTALLSTATE_UNKNOWN) + strcatW(commandline,szInstalled); + + rc = ACTION_DoTopLevelINSTALL(package, sourcepath, commandline); + + msiobj_release( &package->hdr ); + + HeapFree(GetProcessHeap(),0,commandline); +end: + RegCloseKey(hkey); + + return rc; +} + +UINT WINAPI MsiConfigureProductExA(LPCSTR szProduct, int iInstallLevel, + INSTALLSTATE eInstallState, LPCSTR szCommandLine) +{ + LPWSTR szwProduct = NULL; + LPWSTR szwCommandLine = NULL; + UINT hr = ERROR_FUNCTION_FAILED; + + if( szProduct ) + { + UINT len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 ); + szwProduct = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); + if( !szwProduct ) + goto end; + MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProduct, len ); + } + + if( szCommandLine) + { + UINT len = MultiByteToWideChar( CP_ACP, 0, szCommandLine, -1, NULL, 0 ); + szwCommandLine= HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); + if( !szwCommandLine) + goto end; + MultiByteToWideChar( CP_ACP, 0, szCommandLine, -1, szwCommandLine, len ); + } + + hr = MsiConfigureProductExW( szwProduct, iInstallLevel, eInstallState, + szwCommandLine ); +end: + HeapFree( GetProcessHeap(), 0, szwProduct ); + HeapFree( GetProcessHeap(), 0, szwCommandLine); + + return hr; +} + +UINT WINAPI MsiConfigureProductA(LPCSTR szProduct, int iInstallLevel, + INSTALLSTATE eInstallState) { LPWSTR szwProduct = NULL; UINT hr = ERROR_SUCCESS; @@ -610,22 +568,25 @@ UINT WINAPI MsiConfigureProductA(LPCSTR szProduct, int iInstallLevel, INSTALLSTA hr = MsiConfigureProductW( szwProduct, iInstallLevel, eInstallState ); end: - if( szwProduct ) - HeapFree( GetProcessHeap(), 0, szwProduct ); + HeapFree( GetProcessHeap(), 0, szwProduct ); return hr; } -UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct, int iInstallLevel, INSTALLSTATE eInstallState) +UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct, int iInstallLevel, + INSTALLSTATE eInstallState) { - FIXME("%s %d %d\n",debugstr_w(szProduct), iInstallLevel, eInstallState); - return ERROR_CALL_NOT_IMPLEMENTED; + FIXME("%s %d %d\n", debugstr_w(szProduct), iInstallLevel, eInstallState); + + return MsiConfigureProductExW(szProduct, iInstallLevel, eInstallState, + NULL); } UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent, LPSTR szBuffer) { - LPWSTR szwComponent = NULL, szwBuffer = NULL; + LPWSTR szwComponent = NULL; UINT hr = ERROR_INSTALL_FAILURE; + WCHAR szwBuffer[GUID_SIZE]; FIXME("%s %s\n",debugstr_a(szComponent), debugstr_a(szBuffer)); @@ -636,28 +597,17 @@ UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent, LPSTR szBuffer) if( !szwComponent ) goto end; MultiByteToWideChar( CP_ACP, 0, szComponent, -1, szwComponent, len ); - } else { - return ERROR_INVALID_PARAMETER; - } - - { - szwBuffer = HeapAlloc( GetProcessHeap(), 0, GUID_SIZE * sizeof(WCHAR) ); - if( !szwBuffer ) - goto end; } + else + return ERROR_INVALID_PARAMETER; hr = MsiGetProductCodeW( szwComponent, szwBuffer ); if( ERROR_SUCCESS == hr ) - { WideCharToMultiByte(CP_ACP, 0, szwBuffer, -1, szBuffer, GUID_SIZE, NULL, NULL); - } end: - if( szwComponent ) - HeapFree( GetProcessHeap(), 0, szwComponent ); - if( szwBuffer ) - HeapFree( GetProcessHeap(), 0, szwBuffer ); + HeapFree( GetProcessHeap(), 0, szwComponent ); return hr; } @@ -665,25 +615,22 @@ end: UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent, LPWSTR szBuffer) { FIXME("%s %s\n",debugstr_w(szComponent), debugstr_w(szBuffer)); - if (NULL == szComponent) { - return ERROR_INVALID_PARAMETER; - } + if (NULL == szComponent) + return ERROR_INVALID_PARAMETER; return ERROR_CALL_NOT_IMPLEMENTED; } - - - -UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuffer, DWORD *pcchValueBuf) +UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, + LPSTR szBuffer, DWORD *pcchValueBuf) { LPWSTR szwProduct = NULL, szwAttribute = NULL, szwBuffer = NULL; UINT hr = ERROR_INSTALL_FAILURE; - FIXME("%s %s %p %p\n",debugstr_a(szProduct), debugstr_a(szAttribute), szBuffer, pcchValueBuf); + FIXME("%s %s %p %p\n",debugstr_a(szProduct), debugstr_a(szAttribute), + szBuffer, pcchValueBuf); - if (NULL != szBuffer && NULL == pcchValueBuf) { - return ERROR_INVALID_PARAMETER; - } + if( NULL != szBuffer && NULL == pcchValueBuf ) + return ERROR_INVALID_PARAMETER; if( szProduct ) { UINT len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 ); @@ -691,9 +638,9 @@ UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuf if( !szwProduct ) goto end; MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProduct, len ); - } else { - return ERROR_INVALID_PARAMETER; } + else + return ERROR_INVALID_PARAMETER; if( szAttribute ) { @@ -702,52 +649,50 @@ UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuf if( !szwAttribute ) goto end; MultiByteToWideChar( CP_ACP, 0, szAttribute, -1, szwAttribute, len ); - } else { - hr = ERROR_INVALID_PARAMETER; - goto end; + } + else + { + hr = ERROR_INVALID_PARAMETER; + goto end; } if( szBuffer ) { szwBuffer = HeapAlloc( GetProcessHeap(), 0, (*pcchValueBuf) * sizeof(WCHAR) ); - if( !szwBuffer ) + if( !szwBuffer ) goto end; } hr = MsiGetProductInfoW( szwProduct, szwAttribute, szwBuffer, pcchValueBuf ); if( ERROR_SUCCESS == hr ) - { WideCharToMultiByte(CP_ACP, 0, szwBuffer, -1, szBuffer, *pcchValueBuf, NULL, NULL); - } end: - if( szwProduct ) - HeapFree( GetProcessHeap(), 0, szwProduct ); - if( szwAttribute ) - HeapFree( GetProcessHeap(), 0, szwAttribute ); - if( szwBuffer ) - HeapFree( GetProcessHeap(), 0, szwBuffer ); + HeapFree( GetProcessHeap(), 0, szwProduct ); + HeapFree( GetProcessHeap(), 0, szwAttribute ); + HeapFree( GetProcessHeap(), 0, szwBuffer ); return hr; } -UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct, LPCWSTR szAttribute, LPWSTR szBuffer, DWORD *pcchValueBuf) +UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct, LPCWSTR szAttribute, + LPWSTR szBuffer, DWORD *pcchValueBuf) { MSIHANDLE hProduct; UINT hr; - FIXME("%s %s %p %p\n",debugstr_w(szProduct), debugstr_w(szAttribute), szBuffer, pcchValueBuf); + FIXME("%s %s %p %p\n",debugstr_w(szProduct), debugstr_w(szAttribute), + szBuffer, pcchValueBuf); - if (NULL != szBuffer && NULL == pcchValueBuf) { - return ERROR_INVALID_PARAMETER; - } - if (NULL == szProduct || NULL == szAttribute) { - return ERROR_INVALID_PARAMETER; - } + if (NULL != szBuffer && NULL == pcchValueBuf) + return ERROR_INVALID_PARAMETER; + if (NULL == szProduct || NULL == szAttribute) + return ERROR_INVALID_PARAMETER; hr = MsiOpenProductW(szProduct, &hProduct); - if (ERROR_SUCCESS != hr) return hr; + if (ERROR_SUCCESS != hr) + return hr; hr = MsiGetPropertyW(hProduct, szAttribute, szBuffer, pcchValueBuf); MsiCloseHandle(hProduct); @@ -780,30 +725,31 @@ UINT WINAPI MsiEnableLogA(DWORD dwLogMode, LPCSTR szLogFile, DWORD attributes) if( !szwLogFile ) goto end; MultiByteToWideChar( CP_ACP, 0, szLogFile, -1, szwLogFile, len ); - } else { - return ERROR_INVALID_PARAMETER; } + else + return ERROR_INVALID_PARAMETER; hr = MsiEnableLogW( dwLogMode, szwLogFile, attributes ); end: - if( szwLogFile ) - HeapFree( GetProcessHeap(), 0, szwLogFile ); + HeapFree( GetProcessHeap(), 0, szwLogFile ); return hr; } UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, DWORD attributes) { - HANDLE the_file = INVALID_HANDLE_VALUE; + HANDLE file = INVALID_HANDLE_VALUE; + TRACE("%08lx %s %08lx\n", dwLogMode, debugstr_w(szLogFile), attributes); + strcpyW(gszLogFile,szLogFile); if (!(attributes & INSTALLLOGATTRIBUTES_APPEND)) DeleteFileW(szLogFile); - the_file = CreateFileW(szLogFile, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, + file = CreateFileW(szLogFile, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (the_file != INVALID_HANDLE_VALUE) - CloseHandle(the_file); + if (file != INVALID_HANDLE_VALUE) + CloseHandle(file); else ERR("Unable to enable log %s\n",debugstr_w(szLogFile)); @@ -812,20 +758,65 @@ UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, DWORD attributes) INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct) { - FIXME("%s\n", debugstr_a(szProduct)); - return INSTALLSTATE_UNKNOWN; + LPWSTR szwProduct; + UINT len; + INSTALLSTATE rc; + + len = MultiByteToWideChar(CP_ACP,0,szProduct,-1,NULL,0); + szwProduct = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP,0,szProduct,-1,szwProduct,len); + rc = MsiQueryProductStateW(szwProduct); + HeapFree(GetProcessHeap(),0,szwProduct); + return rc; } INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct) { - FIXME("%s\n", debugstr_w(szProduct)); - return INSTALLSTATE_UNKNOWN; + UINT rc; + INSTALLSTATE rrc = INSTALLSTATE_UNKNOWN; + HKEY hkey=0; + static const WCHAR szWindowsInstaller[] = { + 'W','i','n','d','o','w','s','I','n','s','t','a','l','l','e','r',0 }; + DWORD sz; + + TRACE("%s\n", debugstr_w(szProduct)); + + rc = MSIREG_OpenUserProductsKey(szProduct,&hkey,FALSE); + if (rc != ERROR_SUCCESS) + goto end; + + RegCloseKey(hkey); + + rc = MSIREG_OpenUninstallKey(szProduct,&hkey,FALSE); + if (rc != ERROR_SUCCESS) + goto end; + + sz = sizeof(rrc); + rc = RegQueryValueExW(hkey,szWindowsInstaller,NULL,NULL,(LPVOID)&rrc, &sz); + if (rc != ERROR_SUCCESS) + goto end; + + switch (rrc) + { + case 1: + /* default */ + rrc = INSTALLSTATE_DEFAULT; + break; + default: + FIXME("Unknown install state read from registry (%i)\n",rrc); + rrc = INSTALLSTATE_UNKNOWN; + break; + } +end: + RegCloseKey(hkey); + return rrc; } INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel, HWND *phWnd) { INSTALLUILEVEL old = gUILevel; HWND oldwnd = gUIhwnd; + TRACE("%08x %p\n", dwUILevel, phWnd); gUILevel = dwUILevel; @@ -840,10 +831,10 @@ INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel, HWND *phWnd) INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA puiHandler, DWORD dwMessageFilter, LPVOID pvContext) { - INSTALLUI_HANDLERA prev = gUIHandler; + INSTALLUI_HANDLERA prev = gUIHandlerA; - TRACE("(%p %lx %p)\n",puiHandler, dwMessageFilter,pvContext); - gUIHandler = puiHandler; + TRACE("%p %lx %p\n",puiHandler, dwMessageFilter,pvContext); + gUIHandlerA = puiHandler; gUIFilter = dwMessageFilter; gUIContext = pvContext; @@ -855,7 +846,7 @@ INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW puiHandler, { INSTALLUI_HANDLERW prev = gUIHandlerW; - TRACE("(%p %lx %p)\n",puiHandler,dwMessageFilter,pvContext); + TRACE("%p %lx %p\n",puiHandler,dwMessageFilter,pvContext); gUIHandlerW = puiHandler; gUIFilter = dwMessageFilter; gUIContext = pvContext; @@ -863,54 +854,122 @@ INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW puiHandler, return prev; } -UINT WINAPI MsiLoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int nBufferMax, DWORD e) +/****************************************************************** + * MsiLoadStringW [MSI.@] + * + * Loads a string from MSI's string resources. + * + * PARAMS + * + * handle [I] only -1 is handled currently + * id [I] id of the string to be loaded + * lpBuffer [O] buffer for the string to be written to + * nBufferMax [I] maximum size of the buffer in characters + * lang [I] the prefered language for the string + * + * RETURNS + * + * If successful, this function returns the language id of the string loaded + * If the function fails, the function returns zero. + * + * NOTES + * + * The type of the first parameter is unknown. LoadString's prototype + * suggests that it might be a module handle. I have made it an MSI handle + * for starters, as -1 is an invalid MSI handle, but not an invalid module + * handle. Maybe strings can be stored in an MSI database somehow. + */ +LANGID WINAPI MsiLoadStringW( MSIHANDLE handle, UINT id, LPWSTR lpBuffer, + int nBufferMax, LANGID lang ) { - /*FIXME("%08lx %08lx %08lx %08lx %08lx\n",a,b,c,d,e);*/ - FIXME("%p %u %p %d %08lx\n",hInstance,uID,lpBuffer,nBufferMax,e); - return ERROR_CALL_NOT_IMPLEMENTED; + HRSRC hres; + HGLOBAL hResData; + LPWSTR p; + DWORD i, len; + + TRACE("%ld %u %p %d %d\n", handle, id, lpBuffer, nBufferMax, lang); + + if( handle != -1 ) + FIXME("don't know how to deal with handle = %08lx\n", handle); + + if( !lang ) + lang = GetUserDefaultLangID(); + + hres = FindResourceExW( msi_hInstance, (LPCWSTR) RT_STRING, + (LPWSTR)1, lang ); + if( !hres ) + return 0; + hResData = LoadResource( msi_hInstance, hres ); + if( !hResData ) + return 0; + p = LockResource( hResData ); + if( !p ) + return 0; + + for (i = 0; i < (id&0xf); i++) + p += *p + 1; + len = *p; + + if( nBufferMax <= len ) + return 0; + + memcpy( lpBuffer, p+1, len * sizeof(WCHAR)); + lpBuffer[ len ] = 0; + + TRACE("found -> %s\n", debugstr_w(lpBuffer)); + + return lang; } -UINT WINAPI MsiLoadStringW(HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int nBufferMax, DWORD e) +LANGID WINAPI MsiLoadStringA( MSIHANDLE handle, UINT id, LPSTR lpBuffer, + int nBufferMax, LANGID lang ) { - FIXME("%p %u %p %d %08lx\n",hInstance,uID,lpBuffer,nBufferMax,e); - /* - int ret = LoadStringW(hInstance,uID,lpBuffer,nBufferMax); - FIXME("%s\n",debugstr_w(lpBuffer)); - return ret; - */ - return ERROR_CALL_NOT_IMPLEMENTED; + LPWSTR bufW; + LANGID r; + DWORD len; + + bufW = HeapAlloc(GetProcessHeap(), 0, nBufferMax*sizeof(WCHAR)); + r = MsiLoadStringW(handle, id, bufW, nBufferMax, lang); + if( r ) + { + len = WideCharToMultiByte(CP_ACP, 0, bufW, -1, NULL, 0, NULL, NULL ); + if( len <= nBufferMax ) + WideCharToMultiByte( CP_ACP, 0, bufW, -1, + lpBuffer, nBufferMax, NULL, NULL ); + else + r = 0; + } + HeapFree(GetProcessHeap(), 0, bufW); + return r; } -INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent, LPSTR lpPathBuf, DWORD *pcchBuf) +INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent, LPSTR lpPathBuf, + DWORD *pcchBuf) { FIXME("%s %p %08lx\n", debugstr_a(szComponent), lpPathBuf, *pcchBuf); return INSTALLSTATE_UNKNOWN; } -INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent, LPSTR lpPathBuf, DWORD *pcchBuf) +INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent, LPSTR lpPathBuf, + DWORD *pcchBuf) { FIXME("%s %p %08lx\n", debugstr_w(szComponent), lpPathBuf, *pcchBuf); return INSTALLSTATE_UNKNOWN; } -#include "winuser.h" - -UINT WINAPI MsiMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType, WORD wLanguageId, DWORD f) +UINT WINAPI MsiMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType, + WORD wLanguageId, DWORD f) { - FIXME("%p %s %s %u %08x %08lx\n",hWnd,debugstr_a(lpText),debugstr_a(lpCaption),uType,wLanguageId,f); - /* - MessageBoxExA(hWnd,lpText,lpCaption,uType|MB_OK,wLanguageId); - */ + FIXME("%p %s %s %u %08x %08lx\n",hWnd,debugstr_a(lpText),debugstr_a(lpCaption), + uType,wLanguageId,f); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, WORD wLanguageId, DWORD f) +UINT WINAPI MsiMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, + WORD wLanguageId, DWORD f) { - /*FIXME("%08lx %08lx %08lx %08lx %08lx %08lx\n",a,b,c,d,e,f);*/ - FIXME("%p %s %s %u %08x %08lx\n",hWnd,debugstr_w(lpText),debugstr_w(lpCaption),uType,wLanguageId,f); - /* - MessageBoxExW(hWnd,lpText,lpCaption,uType|MB_OK,wLanguageId); - */ + FIXME("%p %s %s %u %08x %08lx\n",hWnd,debugstr_w(lpText),debugstr_w(lpCaption), + uType,wLanguageId,f); return ERROR_CALL_NOT_IMPLEMENTED; } @@ -933,20 +992,16 @@ UINT WINAPI MsiEnumProductsA(DWORD index, LPSTR lpguid) UINT WINAPI MsiEnumProductsW(DWORD index, LPWSTR lpguid) { - HKEY hkey = 0, hkeyFeatures = 0; + HKEY hkeyFeatures = 0; DWORD r; WCHAR szKeyName[33]; TRACE("%ld %p\n",index,lpguid); - if (NULL == lpguid) { - return ERROR_INVALID_PARAMETER; - } - r = RegOpenKeyW(HKEY_LOCAL_MACHINE, szInstaller, &hkey); - if( r != ERROR_SUCCESS ) - goto end; + if (NULL == lpguid) + return ERROR_INVALID_PARAMETER; - r = RegOpenKeyW(hkey, szFeatures, &hkeyFeatures); + r = MSIREG_OpenFeatures(&hkeyFeatures); if( r != ERROR_SUCCESS ) goto end; @@ -958,8 +1013,6 @@ end: if( hkeyFeatures ) RegCloseKey(hkeyFeatures); - if( hkey ) - RegCloseKey(hkey); return r; } @@ -992,8 +1045,7 @@ UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct, DWORD index, szParent, GUID_SIZE, NULL, NULL); } - if( szwProduct ) - HeapFree( GetProcessHeap(), 0, szwProduct); + HeapFree( GetProcessHeap(), 0, szwProduct); return r; } @@ -1001,24 +1053,12 @@ UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct, DWORD index, UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct, DWORD index, LPWSTR szFeature, LPWSTR szParent) { - HKEY hkey = 0, hkeyFeatures = 0, hkeyProduct = 0; + HKEY hkeyProduct = 0; DWORD r, sz; - WCHAR szRegName[GUID_SIZE]; TRACE("%s %ld %p %p\n",debugstr_w(szProduct),index,szFeature,szParent); - if( !squash_guid(szProduct, szRegName) ) - return ERROR_INVALID_PARAMETER; - - r = RegOpenKeyW(HKEY_LOCAL_MACHINE, szInstaller, &hkey); - if( r != ERROR_SUCCESS ) - goto end; - - r = RegOpenKeyW(hkey, szFeatures, &hkeyFeatures); - if( r != ERROR_SUCCESS ) - goto end; - - r = RegOpenKeyW(hkeyFeatures, szRegName, &hkeyProduct); + r = MSIREG_OpenFeaturesKey(szProduct,&hkeyProduct,FALSE); if( r != ERROR_SUCCESS ) goto end; @@ -1028,10 +1068,6 @@ UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct, DWORD index, end: if( hkeyProduct ) RegCloseKey(hkeyProduct); - if( hkeyFeatures ) - RegCloseKey(hkeyFeatures); - if( hkey ) - RegCloseKey(hkey); return r; } @@ -1052,17 +1088,13 @@ UINT WINAPI MsiEnumComponentsA(DWORD index, LPSTR lpguid) UINT WINAPI MsiEnumComponentsW(DWORD index, LPWSTR lpguid) { - HKEY hkey = 0, hkeyComponents = 0; + HKEY hkeyComponents = 0; DWORD r; WCHAR szKeyName[33]; TRACE("%ld %p\n",index,lpguid); - r = RegOpenKeyW(HKEY_LOCAL_MACHINE, szInstaller, &hkey); - if( r != ERROR_SUCCESS ) - goto end; - - r = RegOpenKeyW(hkey, szComponents, &hkeyComponents); + r = MSIREG_OpenComponents(&hkeyComponents); if( r != ERROR_SUCCESS ) goto end; @@ -1074,8 +1106,6 @@ end: if( hkeyComponents ) RegCloseKey(hkeyComponents); - if( hkey ) - RegCloseKey(hkey); return r; } @@ -1105,32 +1135,20 @@ UINT WINAPI MsiEnumClientsA(LPCSTR szComponent, DWORD index, LPSTR szProduct) szProduct, GUID_SIZE, NULL, NULL); } - if( szwComponent ) - HeapFree( GetProcessHeap(), 0, szwComponent); + HeapFree( GetProcessHeap(), 0, szwComponent); return r; } UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent, DWORD index, LPWSTR szProduct) { - HKEY hkey = 0, hkeyComponents = 0, hkeyComp = 0; + HKEY hkeyComp = 0; DWORD r, sz; - WCHAR szRegName[GUID_SIZE], szValName[GUID_SIZE]; + WCHAR szValName[GUID_SIZE]; TRACE("%s %ld %p\n",debugstr_w(szComponent),index,szProduct); - if( !squash_guid(szComponent, szRegName) ) - return ERROR_INVALID_PARAMETER; - - r = RegOpenKeyW(HKEY_LOCAL_MACHINE, szInstaller, &hkey); - if( r != ERROR_SUCCESS ) - goto end; - - r = RegOpenKeyW(hkey, szComponents, &hkeyComponents); - if( r != ERROR_SUCCESS ) - goto end; - - r = RegOpenKeyW(hkeyComponents, szRegName, &hkeyComp); + r = MSIREG_OpenComponentsKey(szComponent,&hkeyComp,FALSE); if( r != ERROR_SUCCESS ) goto end; @@ -1144,67 +1162,79 @@ UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent, DWORD index, LPWSTR szProduct) end: if( hkeyComp ) RegCloseKey(hkeyComp); - if( hkeyComponents ) - RegCloseKey(hkeyComponents); - if( hkey ) - RegCloseKey(hkey); return r; } -UINT WINAPI MsiEnumComponentQualifiersA( - LPSTR szComponent, DWORD iIndex, LPSTR lpQualifierBuf, DWORD* pcchQualifierBuf, LPSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf) +UINT WINAPI MsiEnumComponentQualifiersA( LPSTR szComponent, DWORD iIndex, + LPSTR lpQualifierBuf, DWORD* pcchQualifierBuf, + LPSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf) { -FIXME("%s 0x%08lx %p %p %p %p\n", debugstr_a(szComponent), iIndex, lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf, pcchApplicationDataBuf); + FIXME("%s %08lx %p %p %p %p\n", debugstr_a(szComponent), iIndex, + lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf, + pcchApplicationDataBuf); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiEnumComponentQualifiersW( - LPWSTR szComponent, DWORD iIndex, LPWSTR lpQualifierBuf, DWORD* pcchQualifierBuf, LPWSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf) +UINT WINAPI MsiEnumComponentQualifiersW( LPWSTR szComponent, DWORD iIndex, + LPWSTR lpQualifierBuf, DWORD* pcchQualifierBuf, + LPWSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf ) { -FIXME("%s 0x%08lx %p %p %p %p\n", debugstr_w(szComponent), iIndex, lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf, pcchApplicationDataBuf); + FIXME("%s %08lx %p %p %p %p\n", debugstr_w(szComponent), iIndex, + lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf, + pcchApplicationDataBuf); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiProvideAssemblyA( - LPCSTR szAssemblyName, LPCSTR szAppContext, DWORD dwInstallMode, DWORD dwAssemblyInfo, LPSTR lpPathBuf, DWORD* pcchPathBuf) +UINT WINAPI MsiProvideAssemblyA( LPCSTR szAssemblyName, LPCSTR szAppContext, + DWORD dwInstallMode, DWORD dwAssemblyInfo, LPSTR lpPathBuf, + DWORD* pcchPathBuf ) { - FIXME("%s %s 0x%08lx 0x%08lx %p %p\n", - debugstr_a(szAssemblyName), debugstr_a(szAppContext), dwInstallMode, dwAssemblyInfo, lpPathBuf, pcchPathBuf); + FIXME("%s %s %08lx %08lx %p %p\n", debugstr_a(szAssemblyName), + debugstr_a(szAppContext), dwInstallMode, dwAssemblyInfo, lpPathBuf, + pcchPathBuf); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiProvideAssemblyW( - LPCWSTR szAssemblyName, LPCWSTR szAppContext, DWORD dwInstallMode, DWORD dwAssemblyInfo, LPWSTR lpPathBuf, DWORD* pcchPathBuf) +UINT WINAPI MsiProvideAssemblyW( LPCWSTR szAssemblyName, LPCWSTR szAppContext, + DWORD dwInstallMode, DWORD dwAssemblyInfo, LPWSTR lpPathBuf, + DWORD* pcchPathBuf ) { - FIXME("%s %s 0x%08lx 0x%08lx %p %p\n", - debugstr_w(szAssemblyName), debugstr_w(szAppContext), dwInstallMode, dwAssemblyInfo, lpPathBuf, pcchPathBuf); + FIXME("%s %s %08lx %08lx %p %p\n", debugstr_w(szAssemblyName), + debugstr_w(szAppContext), dwInstallMode, dwAssemblyInfo, lpPathBuf, + pcchPathBuf); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiProvideComponentFromDescriptorA( LPCSTR szDescriptor, LPSTR szPath, DWORD *pcchPath, DWORD *pcchArgs ) +UINT WINAPI MsiProvideComponentFromDescriptorA( LPCSTR szDescriptor, + LPSTR szPath, DWORD *pcchPath, DWORD *pcchArgs ) { FIXME("%s %p %p %p\n", debugstr_a(szDescriptor), szPath, pcchPath, pcchArgs ); return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiProvideComponentFromDescriptorW( LPCWSTR szDescriptor, LPWSTR szPath, DWORD *pcchPath, DWORD *pcchArgs ) +UINT WINAPI MsiProvideComponentFromDescriptorW( LPCWSTR szDescriptor, + LPWSTR szPath, DWORD *pcchPath, DWORD *pcchArgs ) { FIXME("%s %p %p %p\n", debugstr_w(szDescriptor), szPath, pcchPath, pcchArgs ); return ERROR_CALL_NOT_IMPLEMENTED; } -HRESULT WINAPI MsiGetFileSignatureInformationA( - LPCSTR szSignedObjectPath, DWORD dwFlags, PCCERT_CONTEXT* ppcCertContext, BYTE* pbHashData, DWORD* pcbHashData) +HRESULT WINAPI MsiGetFileSignatureInformationA( LPCSTR szSignedObjectPath, + DWORD dwFlags, PCCERT_CONTEXT* ppcCertContext, BYTE* pbHashData, + DWORD* pcbHashData) { - FIXME("%s 0x%08lx %p %p %p\n", debugstr_a(szSignedObjectPath), dwFlags, ppcCertContext, pbHashData, pcbHashData); + FIXME("%s %08lx %p %p %p\n", debugstr_a(szSignedObjectPath), dwFlags, + ppcCertContext, pbHashData, pcbHashData); return ERROR_CALL_NOT_IMPLEMENTED; } -HRESULT WINAPI MsiGetFileSignatureInformationW( - LPCWSTR szSignedObjectPath, DWORD dwFlags, PCCERT_CONTEXT* ppcCertContext, BYTE* pbHashData, DWORD* pcbHashData) +HRESULT WINAPI MsiGetFileSignatureInformationW( LPCWSTR szSignedObjectPath, + DWORD dwFlags, PCCERT_CONTEXT* ppcCertContext, BYTE* pbHashData, + DWORD* pcbHashData) { - FIXME("%s 0x%08lx %p %p %p\n", debugstr_w(szSignedObjectPath), dwFlags, ppcCertContext, pbHashData, pcbHashData); + FIXME("%s %08lx %p %p %p\n", debugstr_w(szSignedObjectPath), dwFlags, + ppcCertContext, pbHashData, pcbHashData); return ERROR_CALL_NOT_IMPLEMENTED; } @@ -1261,13 +1291,11 @@ UINT WINAPI MsiVerifyPackageW( LPCWSTR szPackage ) INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct, LPCSTR szComponent, LPSTR lpPathBuf, DWORD* pcchBuf) { + LPWSTR szwProduct = NULL, szwComponent = NULL, lpwPathBuf= NULL; INSTALLSTATE rc; - UINT len; - LPWSTR szwProduct= NULL; - LPWSTR szwComponent= NULL; - LPWSTR lpwPathBuf= NULL; + UINT len, incoming_len; - if( szProduct) + if( szProduct ) { len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 ); szwProduct= HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); @@ -1276,11 +1304,11 @@ INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct, LPCSTR szComponent, MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProduct, len ); } - if( szComponent) + if( szComponent ) { len = MultiByteToWideChar( CP_ACP, 0, szComponent, -1, NULL, 0 ); szwComponent= HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); - if( !szwComponent) + if( !szwComponent ) { HeapFree( GetProcessHeap(), 0, szwProduct); return ERROR_OUTOFMEMORY; @@ -1288,19 +1316,21 @@ INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct, LPCSTR szComponent, MultiByteToWideChar( CP_ACP, 0, szComponent, -1, szwComponent, len ); } - if (pcchBuf && *pcchBuf > 0) + if( pcchBuf && *pcchBuf > 0 ) lpwPathBuf = HeapAlloc( GetProcessHeap(), 0, *pcchBuf * sizeof(WCHAR)); else lpwPathBuf = NULL; + incoming_len = *pcchBuf; rc = MsiGetComponentPathW(szwProduct, szwComponent, lpwPathBuf, pcchBuf); HeapFree( GetProcessHeap(), 0, szwProduct); HeapFree( GetProcessHeap(), 0, szwComponent); if (lpwPathBuf) { - WideCharToMultiByte(CP_ACP, 0, lpwPathBuf, *pcchBuf, - lpPathBuf, GUID_SIZE, NULL, NULL); + if (rc != INSTALLSTATE_UNKNOWN) + WideCharToMultiByte(CP_ACP, 0, lpwPathBuf, incoming_len, + lpPathBuf, incoming_len, NULL, NULL); HeapFree( GetProcessHeap(), 0, lpwPathBuf); } @@ -1310,10 +1340,46 @@ INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct, LPCSTR szComponent, INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR szProduct, LPCWSTR szComponent, LPWSTR lpPathBuf, DWORD* pcchBuf) { - FIXME("STUB: (%s %s %p %p)\n", debugstr_w(szProduct), + WCHAR squished_pc[GUID_SIZE]; + UINT rc; + INSTALLSTATE rrc = INSTALLSTATE_UNKNOWN; + HKEY hkey=0; + + TRACE("%s %s %p %p\n", debugstr_w(szProduct), debugstr_w(szComponent), lpPathBuf, pcchBuf); - return INSTALLSTATE_UNKNOWN; + squash_guid(szProduct,squished_pc); + + rc = MSIREG_OpenProductsKey(szProduct,&hkey,FALSE); + if (rc != ERROR_SUCCESS) + goto end; + + RegCloseKey(hkey); + + rc = MSIREG_OpenComponentsKey(szComponent,&hkey,FALSE); + if (rc != ERROR_SUCCESS) + goto end; + + *pcchBuf *= sizeof(WCHAR); + rc = RegQueryValueExW(hkey,squished_pc,NULL,NULL,(LPVOID)lpPathBuf, + pcchBuf); + *pcchBuf /= sizeof(WCHAR); + + if (rc!= ERROR_SUCCESS) + goto end; + + TRACE("found path of (%s:%s)(%s)\n", debugstr_w(szComponent), + debugstr_w(szProduct), debugstr_w(lpPathBuf)); + + FIXME("Only working for installed files, not registry keys\n"); + if (GetFileAttributesW(lpPathBuf) != INVALID_FILE_ATTRIBUTES) + rrc = INSTALLSTATE_LOCAL; + else + rrc = INSTALLSTATE_ABSENT; + +end: + RegCloseKey(hkey); + return rrc; } INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature) @@ -1323,7 +1389,7 @@ INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature) LPWSTR szwProduct= NULL; LPWSTR szwFeature= NULL; - if( szProduct) + if( szProduct ) { len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 ); szwProduct= HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); @@ -1332,7 +1398,7 @@ INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature) MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProduct, len ); } - if( szFeature) + if( szFeature ) { len = MultiByteToWideChar( CP_ACP, 0, szFeature, -1, NULL, 0 ); szwFeature= HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); @@ -1354,63 +1420,63 @@ INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct, LPCSTR szFeature) INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct, LPCWSTR szFeature) { - FIXME("STUB: (%s %s)\n", debugstr_w(szProduct), debugstr_w(szFeature)); + FIXME("%s %s\n", debugstr_w(szProduct), debugstr_w(szFeature)); return INSTALLSTATE_UNKNOWN; } -UINT WINAPI MsiGetFileVersionA(LPCSTR szFilePath, LPSTR lpVersionBuf, DWORD* pcchVersionBuf, LPSTR lpLangBuf, DWORD* pcchLangBuf) +UINT WINAPI MsiGetFileVersionA(LPCSTR szFilePath, LPSTR lpVersionBuf, + DWORD* pcchVersionBuf, LPSTR lpLangBuf, DWORD* pcchLangBuf) { - UINT len; - UINT ret; - LPWSTR szwFilePath = NULL; - LPWSTR lpwVersionBuff = NULL; - LPWSTR lpwLangBuff = NULL; + LPWSTR szwFilePath = NULL, lpwVersionBuff = NULL, lpwLangBuff = NULL; + UINT len, ret = ERROR_OUTOFMEMORY; - if(szFilePath) { + if( szFilePath ) + { len = MultiByteToWideChar( CP_ACP, 0, szFilePath, -1, NULL, 0 ); szwFilePath = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); - if( !szwFilePath) - return ERROR_OUTOFMEMORY; + if( !szwFilePath ) + goto end; MultiByteToWideChar( CP_ACP, 0, szFilePath, -1, szwFilePath, len ); } - if(lpVersionBuf && pcchVersionBuf && *pcchVersionBuf) { - lpwVersionBuff = HeapAlloc(GetProcessHeap(), 0, *pcchVersionBuf * sizeof(WCHAR)); - if( !lpwVersionBuff) - { - ret = ERROR_OUTOFMEMORY; + if( lpVersionBuf && pcchVersionBuf && *pcchVersionBuf ) + { + lpwVersionBuff = HeapAlloc(GetProcessHeap(), 0, *pcchVersionBuf*sizeof(WCHAR)); + if( !lpwVersionBuff ) goto end; - } } - if(lpLangBuf && pcchLangBuf && *pcchLangBuf) { - lpwLangBuff = HeapAlloc(GetProcessHeap(), 0, *pcchVersionBuf * sizeof(WCHAR)); - if( !lpwLangBuff) - { - ret = ERROR_OUTOFMEMORY; + if( lpLangBuf && pcchLangBuf && *pcchLangBuf ) + { + lpwLangBuff = HeapAlloc(GetProcessHeap(), 0, *pcchVersionBuf*sizeof(WCHAR)); + if( !lpwLangBuff ) goto end; - } } - ret = MsiGetFileVersionW(szwFilePath, lpwVersionBuff, pcchVersionBuf, lpwLangBuff, pcchLangBuf); + ret = MsiGetFileVersionW(szwFilePath, lpwVersionBuff, pcchVersionBuf, + lpwLangBuff, pcchLangBuf); - if(lpwVersionBuff) - WideCharToMultiByte(CP_ACP, 0, lpwVersionBuff, -1, lpVersionBuf, *pcchVersionBuf, NULL, NULL); - if(lpwLangBuff) - WideCharToMultiByte(CP_ACP, 0, lpwLangBuff, -1, lpLangBuf, *pcchLangBuf, NULL, NULL); + if( lpwVersionBuff ) + WideCharToMultiByte(CP_ACP, 0, lpwVersionBuff, -1, + lpVersionBuf, *pcchVersionBuf, NULL, NULL); + if( lpwLangBuff ) + WideCharToMultiByte(CP_ACP, 0, lpwLangBuff, -1, + lpLangBuf, *pcchLangBuf, NULL, NULL); end: - if(szwFilePath) HeapFree(GetProcessHeap(), 0, szwFilePath); - if(lpwVersionBuff) HeapFree(GetProcessHeap(), 0, lpwVersionBuff); - if(lpwLangBuff) HeapFree(GetProcessHeap(), 0, lpwLangBuff); + HeapFree(GetProcessHeap(), 0, szwFilePath); + HeapFree(GetProcessHeap(), 0, lpwVersionBuff); + HeapFree(GetProcessHeap(), 0, lpwLangBuff); return ret; } -UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf, DWORD* pcchVersionBuf, LPWSTR lpLangBuf, DWORD* pcchLangBuf) +UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf, + DWORD* pcchVersionBuf, LPWSTR lpLangBuf, DWORD* pcchLangBuf) { static const WCHAR szVersionResource[] = {'\\',0}; - static const WCHAR szVersionFormat[] = {'%','d','.','%','d','.','%','d','.','%','d',0}; + static const WCHAR szVersionFormat[] = { + '%','d','.','%','d','.','%','d','.','%','d',0}; static const WCHAR szLangFormat[] = {'%','d',0}; UINT ret = 0; DWORD dwVerLen; @@ -1419,38 +1485,48 @@ UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf, DWORD* p UINT puLen; WCHAR tmp[32]; - TRACE("(%s,%p,%ld,%p,%ld)\n", debugstr_w(szFilePath), + TRACE("%s %p %ld %p %ld\n", debugstr_w(szFilePath), lpVersionBuf, pcchVersionBuf?*pcchVersionBuf:0, lpLangBuf, pcchLangBuf?*pcchLangBuf:0); dwVerLen = GetFileVersionInfoSizeW(szFilePath, NULL); - if(!dwVerLen) + if( !dwVerLen ) return GetLastError(); lpVer = HeapAlloc(GetProcessHeap(), 0, dwVerLen); - if(!lpVer) { + if( !lpVer ) + { ret = ERROR_OUTOFMEMORY; goto end; } - if(!GetFileVersionInfoW(szFilePath, 0, dwVerLen, lpVer)) { + if( !GetFileVersionInfoW(szFilePath, 0, dwVerLen, lpVer) ) + { ret = GetLastError(); goto end; } - if(lpVersionBuf && pcchVersionBuf && *pcchVersionBuf) { - if(VerQueryValueW(lpVer, szVersionResource, (LPVOID*)&ffi, &puLen) && puLen > 0) { - wsprintfW(tmp, szVersionFormat, HIWORD(ffi->dwFileVersionMS), LOWORD(ffi->dwFileVersionMS), HIWORD(ffi->dwFileVersionLS), LOWORD(ffi->dwFileVersionLS)); + if( lpVersionBuf && pcchVersionBuf && *pcchVersionBuf ) + { + if( VerQueryValueW(lpVer, szVersionResource, (LPVOID*)&ffi, &puLen) && + (puLen > 0) ) + { + wsprintfW(tmp, szVersionFormat, + HIWORD(ffi->dwFileVersionMS), LOWORD(ffi->dwFileVersionMS), + HIWORD(ffi->dwFileVersionLS), LOWORD(ffi->dwFileVersionLS)); lstrcpynW(lpVersionBuf, tmp, *pcchVersionBuf); *pcchVersionBuf = strlenW(lpVersionBuf); } - else { + else + { *lpVersionBuf = 0; *pcchVersionBuf = 0; } } - if(lpLangBuf && pcchLangBuf && *pcchLangBuf) { + if( lpLangBuf && pcchLangBuf && *pcchLangBuf ) + { DWORD lang = GetUserDefaultLangID(); + FIXME("Retrieve language from file\n"); wsprintfW(tmp, szLangFormat, lang); lstrcpynW(lpLangBuf, tmp, *pcchLangBuf); @@ -1458,152 +1534,125 @@ UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf, DWORD* p } end: - if(lpVer) HeapFree(GetProcessHeap(), 0, lpVer); + HeapFree(GetProcessHeap(), 0, lpVer); return ret; } /****************************************************************** - * DllMain - * - * @todo: maybe we can check here if MsiServer service is declared no ? + * DllMain */ -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { - if (fdwReason == DLL_PROCESS_ATTACH) { - DisableThreadLibraryCalls(hinstDLL); - /* - * UI Initialization - */ - gUILevel = INSTALLUILEVEL_BASIC; - gUIhwnd = 0; - gUIHandler = NULL; - gUIFilter = 0; - gUIContext = NULL; - gszLogFile[0]=0; - /* FIXME: Initialisation */ - } else if (fdwReason == DLL_PROCESS_DETACH) { - /* FIXME: Cleanup */ - } - /* - static const WCHAR szMSIServerSvc[] = { 'M','S','I','S','e','r','v','e','r',0 }; - static const WCHAR szNull[] = { 0 }; - if (!strcmpW(lpServiceName, szMSIServerSvc)) { - hKey = CreateServiceW(hSCManager, - szMSIServerSvc, - szMSIServerSvc, - SC_MANAGER_ALL_ACCESS, - SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, - SERVICE_AUTO_START, - SERVICE_ERROR_IGNORE, - szNull, - NULL, - NULL, - NULL, - NULL, - szNull); - */ - return TRUE; +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + switch(fdwReason) + { + case DLL_PROCESS_ATTACH: + msi_hInstance = hinstDLL; + DisableThreadLibraryCalls(hinstDLL); + msi_dialog_register_class(); + break; + case DLL_PROCESS_DETACH: + msi_dialog_unregister_class(); + /* FIXME: Cleanup */ + break; + } + return TRUE; } -typedef struct { - /* IUnknown fields */ - IClassFactoryVtbl *lpVtbl; - DWORD ref; +typedef struct tagIClassFactoryImpl +{ + IClassFactoryVtbl *lpVtbl; } IClassFactoryImpl; -static HRESULT WINAPI MsiCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - FIXME("(%p, %s, %p): stub\n",This,debugstr_guid(riid),ppobj); - return E_NOINTERFACE; +static HRESULT WINAPI MsiCF_QueryInterface(LPCLASSFACTORY iface, + REFIID riid,LPVOID *ppobj) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + FIXME("%p %s %p\n",This,debugstr_guid(riid),ppobj); + return E_NOINTERFACE; } -static ULONG WINAPI MsiCF_AddRef(LPCLASSFACTORY iface) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - return InterlockedIncrement(&This->ref); +static ULONG WINAPI MsiCF_AddRef(LPCLASSFACTORY iface) +{ + return 2; } -static ULONG WINAPI MsiCF_Release(LPCLASSFACTORY iface) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - /* static class, won't be freed */ - return InterlockedDecrement(&This->ref); +static ULONG WINAPI MsiCF_Release(LPCLASSFACTORY iface) +{ + return 1; } -static HRESULT WINAPI MsiCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - FIXME ("(%p, %p, %s, %p): to implement\n", This, pOuter, debugstr_guid(riid), ppobj); - return 0; +static HRESULT WINAPI MsiCF_CreateInstance(LPCLASSFACTORY iface, + LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + + FIXME("%p %p %s %p\n", This, pOuter, debugstr_guid(riid), ppobj); + return E_FAIL; } -static HRESULT WINAPI MsiCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - FIXME("(%p, %d): stub\n", This, dolock); - return S_OK; +static HRESULT WINAPI MsiCF_LockServer(LPCLASSFACTORY iface, BOOL dolock) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + + FIXME("%p %d\n", This, dolock); + return S_OK; } -static IClassFactoryVtbl MsiCF_Vtbl = { - MsiCF_QueryInterface, - MsiCF_AddRef, - MsiCF_Release, - MsiCF_CreateInstance, - MsiCF_LockServer +static IClassFactoryVtbl MsiCF_Vtbl = +{ + MsiCF_QueryInterface, + MsiCF_AddRef, + MsiCF_Release, + MsiCF_CreateInstance, + MsiCF_LockServer }; -static IClassFactoryImpl Msi_CF = {&MsiCF_Vtbl, 1 }; +static IClassFactoryImpl Msi_CF = { &MsiCF_Vtbl }; /****************************************************************** - * DllGetClassObject (MSI.@) + * DllGetClassObject [MSI.@] */ -HRESULT WINAPI MSI_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { - FIXME("(%s, %s, %p): almost a stub.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); - if (IsEqualCLSID (rclsid, &CLSID_IMsiServer)) { - *ppv = (LPVOID) &Msi_CF; - IClassFactory_AddRef((IClassFactory*)*ppv); - return S_OK; - } else if (IsEqualCLSID (rclsid, &CLSID_IMsiServerMessage)) { - *ppv = (LPVOID) &Msi_CF; - IClassFactory_AddRef((IClassFactory*)*ppv); - return S_OK; - } else if (IsEqualCLSID (rclsid, &CLSID_IMsiServerX1)) { - *ppv = (LPVOID) &Msi_CF; - IClassFactory_AddRef((IClassFactory*)*ppv); - return S_OK; - } else if (IsEqualCLSID (rclsid, &CLSID_IMsiServerX2)) { - *ppv = (LPVOID) &Msi_CF; - IClassFactory_AddRef((IClassFactory*)*ppv); - return S_OK; - } else if (IsEqualCLSID (rclsid, &CLSID_IMsiServerX3)) { - *ppv = (LPVOID) &Msi_CF; - IClassFactory_AddRef((IClassFactory*)*ppv); - return S_OK; - } - WARN("(%s, %s, %p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); - return CLASS_E_CLASSNOTAVAILABLE; +HRESULT WINAPI MSI_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) +{ + TRACE("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); + + if( IsEqualCLSID (rclsid, &CLSID_IMsiServer) || + IsEqualCLSID (rclsid, &CLSID_IMsiServerMessage) || + IsEqualCLSID (rclsid, &CLSID_IMsiServerX1) || + IsEqualCLSID (rclsid, &CLSID_IMsiServerX2) || + IsEqualCLSID (rclsid, &CLSID_IMsiServerX3) ) + { + *ppv = (LPVOID) &Msi_CF; + return S_OK; + } + return CLASS_E_CLASSNOTAVAILABLE; } /****************************************************************** - * DllGetVersion (MSI.@) + * DllGetVersion [MSI.@] */ HRESULT WINAPI MSI_DllGetVersion(DLLVERSIONINFO *pdvi) { - TRACE("%p\n",pdvi); + TRACE("%p\n",pdvi); - if (pdvi->cbSize != sizeof(DLLVERSIONINFO)) - return E_INVALIDARG; + if (pdvi->cbSize != sizeof(DLLVERSIONINFO)) + return E_INVALIDARG; - pdvi->dwMajorVersion = MSI_MAJORVERSION; - pdvi->dwMinorVersion = MSI_MINORVERSION; - pdvi->dwBuildNumber = MSI_BUILDNUMBER; - pdvi->dwPlatformID = 1; + pdvi->dwMajorVersion = MSI_MAJORVERSION; + pdvi->dwMinorVersion = MSI_MINORVERSION; + pdvi->dwBuildNumber = MSI_BUILDNUMBER; + pdvi->dwPlatformID = 1; - return S_OK; + return S_OK; } /****************************************************************** - * DllCanUnloadNow (MSI.@) + * DllCanUnloadNow [MSI.@] */ BOOL WINAPI MSI_DllCanUnloadNow(void) { - return S_FALSE; + return S_FALSE; } UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR szUpgradeCode, DWORD dwReserved, @@ -1637,3 +1686,80 @@ UINT WINAPI MsiGetFeatureUsageA(LPCSTR szProduct, LPCSTR szFeature, pdwUseCount, pwDateUsed); return ERROR_CALL_NOT_IMPLEMENTED; } + +UINT WINAPI MsiUseFeatureExW(LPCWSTR szProduct, LPCWSTR szFeature, + DWORD dwInstallMode, DWORD dwReserved) +{ + FIXME("%s %s %li %li\n", debugstr_w(szProduct), debugstr_w(szFeature), + dwInstallMode, dwReserved); + + return INSTALLSTATE_LOCAL; +} + +UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent, + LPCWSTR szQualifier, DWORD dwInstallMode, LPWSTR szProduct, + DWORD Unused1, DWORD Unused2, LPWSTR lpPathBuf, + DWORD* pcchPathBuf) +{ + FIXME("%s %s %li %s %li %li %p %p\n", debugstr_w(szComponent), + debugstr_w(szQualifier), dwInstallMode, debugstr_w(szProduct), + Unused1, Unused2, lpPathBuf, pcchPathBuf); + + return ERROR_INDEX_ABSENT; +} + +USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR szProduct, LPWSTR lpUserNameBuf, + DWORD* pcchUserNameBuf, LPWSTR lpOrgNameBuf, + DWORD* pcchOrgNameBuf, LPWSTR lpSerialBuf, DWORD* pcchSerialBuf) +{ + FIXME("%s %p %p %p %p %p %p\n",debugstr_w(szProduct), lpUserNameBuf, + pcchUserNameBuf, lpOrgNameBuf, pcchOrgNameBuf, lpSerialBuf, + pcchSerialBuf); + + return USERINFOSTATE_UNKNOWN; +} + +USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR szProduct, LPSTR lpUserNameBuf, + DWORD* pcchUserNameBuf, LPSTR lpOrgNameBuf, + DWORD* pcchOrgNameBuf, LPSTR lpSerialBuf, DWORD* pcchSerialBuf) +{ + FIXME("%s %p %p %p %p %p %p\n",debugstr_a(szProduct), lpUserNameBuf, + pcchUserNameBuf, lpOrgNameBuf, pcchOrgNameBuf, lpSerialBuf, + pcchSerialBuf); + + return USERINFOSTATE_UNKNOWN; +} + +UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct) +{ + FIXME("%s\n",debugstr_w(szProduct)); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct) +{ + FIXME("%s\n",debugstr_a(szProduct)); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiCreateAndVerifyInstallerDirectory(void) +{ + FIXME("\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiGetShortcutTargetA( LPCSTR szShortcutTarget, + LPSTR szProductCode, LPSTR szFeatureId, + LPSTR szComponentCode) +{ + FIXME("\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiGetShortcutTargetW( LPCWSTR szShortcutTarget, + LPWSTR szProductCode, LPWSTR szFeatureId, + LPWSTR szComponentCode) +{ + FIXME("\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} diff --git a/reactos/lib/msi/msi.rc b/reactos/lib/msi/msi.rc new file mode 100644 index 00000000000..adf5138d0e3 --- /dev/null +++ b/reactos/lib/msi/msi.rc @@ -0,0 +1,30 @@ +/* + * Resources for MSI + * + * Copyright 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winnls.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#include "version.rc" + +#include "msi_En.rc" diff --git a/reactos/lib/msi/msi.spec b/reactos/lib/msi/msi.spec index 7b6029ae8f1..ad1cd0d0840 100644 --- a/reactos/lib/msi/msi.spec +++ b/reactos/lib/msi/msi.spec @@ -6,8 +6,8 @@ 6 stdcall MsiAdvertiseProductW(wstr wstr wstr long) 7 stdcall MsiCloseAllHandles() 8 stdcall MsiCloseHandle(long) -9 stub MsiCollectUserInfoA -10 stub MsiCollectUserInfoW +9 stdcall MsiCollectUserInfoA(str) +10 stdcall MsiCollectUserInfoW(wstr) 11 stub MsiConfigureFeatureA 12 stub MsiConfigureFeatureFromDescriptorA 13 stub MsiConfigureFeatureFromDescriptorW @@ -32,7 +32,7 @@ 32 stdcall MsiDatabaseOpenViewW(long wstr ptr) 33 stdcall MsiDoActionA(long str) 34 stdcall MsiDoActionW(long wstr) -35 stub MsiEnableUIPreview +35 stdcall MsiEnableUIPreview(long ptr) 36 stdcall MsiEnumClientsA(str long ptr) 37 stdcall MsiEnumClientsW(wstr long ptr) 38 stdcall MsiEnumComponentQualifiersA(str long str ptr str ptr) @@ -79,7 +79,7 @@ 79 stdcall MsiGetTargetPathA(long str ptr ptr) 80 stdcall MsiGetTargetPathW(long wstr ptr ptr) 81 stub MsiGetUserInfoA -82 stub MsiGetUserInfoW +82 stdcall MsiGetUserInfoW(wstr ptr ptr ptr ptr ptr ptr) 83 stub MsiInstallMissingComponentA 84 stub MsiInstallMissingComponentW 85 stub MsiInstallMissingFileA @@ -94,10 +94,10 @@ 94 stdcall MsiOpenPackageW(wstr ptr) 95 stdcall MsiOpenProductA(str ptr) 96 stdcall MsiOpenProductW(wstr ptr) -97 stub MsiPreviewBillboardA -98 stub MsiPreviewBillboardW -99 stub MsiPreviewDialogA -100 stub MsiPreviewDialogW +97 stdcall MsiPreviewBillboardA(long str str) +98 stdcall MsiPreviewBillboardW(long wstr wstr) +99 stdcall MsiPreviewDialogA(long str) +100 stdcall MsiPreviewDialogW(long wstr) 101 stub MsiProcessAdvertiseScriptA 102 stub MsiProcessAdvertiseScriptW 103 stdcall MsiProcessMessage(long long long) @@ -148,9 +148,9 @@ 148 stdcall MsiSummaryInfoGetPropertyA(long long ptr ptr ptr ptr ptr) 149 stdcall MsiSummaryInfoGetPropertyCount(long ptr) 150 stdcall MsiSummaryInfoGetPropertyW(long long ptr ptr ptr ptr ptr) -151 stub MsiSummaryInfoPersist -152 stub MsiSummaryInfoSetPropertyA -153 stub MsiSummaryInfoSetPropertyW +151 stdcall MsiSummaryInfoPersist(long) +152 stdcall MsiSummaryInfoSetPropertyA(long long long long ptr str) +153 stdcall MsiSummaryInfoSetPropertyW(long long long long ptr wstr) 154 stub MsiUseFeatureA 155 stub MsiUseFeatureW 156 stdcall MsiVerifyPackageA(str) @@ -186,21 +186,21 @@ 186 stub MsiCreateTransformSummaryInfoW 187 stub MsiQueryFeatureStateFromDescriptorA 188 stub MsiQueryFeatureStateFromDescriptorW -189 stub MsiConfigureProductExA -190 stub MsiConfigureProductExW +189 stdcall MsiConfigureProductExA(str long long str) +190 stdcall MsiConfigureProductExW(wstr long long wstr) 191 stub MsiInvalidateFeatureCache 192 stub MsiUseFeatureExA -193 stub MsiUseFeatureExW +193 stdcall MsiUseFeatureExW(wstr wstr long long) 194 stdcall MsiGetFileVersionA(str str ptr str ptr) 195 stdcall MsiGetFileVersionW(wstr wstr ptr wstr ptr) 196 stdcall MsiLoadStringA(long long long long long) 197 stdcall MsiLoadStringW(long long long long long) 198 stdcall MsiMessageBoxA(long long long long long long) 199 stdcall MsiMessageBoxW(long long long long long long) -200 stub MsiDecomposeDescriptorA -201 stub MsiDecomposeDescriptorW +200 stdcall MsiDecomposeDescriptorA(str ptr ptr ptr ptr) +201 stdcall MsiDecomposeDescriptorW(wstr ptr ptr ptr ptr) 202 stub MsiProvideQualifiedComponentExA -203 stub MsiProvideQualifiedComponentExW +203 stdcall MsiProvideQualifiedComponentExW(wstr wstr long wstr long long ptr ptr) 204 stdcall MsiEnumRelatedProductsA(str long long ptr) 205 stdcall MsiEnumRelatedProductsW(wstr long long ptr) 206 stub MsiSetFeatureAttributesA @@ -213,13 +213,13 @@ 213 stub MsiSourceListForceResolutionW 214 stub MsiIsProductElevatedA 215 stub MsiIsProductElevatedW -216 stub MsiGetShortcutTargetA -217 stub MsiGetShortcutTargetW +216 stdcall MsiGetShortcutTargetA(str ptr ptr ptr) +217 stdcall MsiGetShortcutTargetW(wstr ptr ptr ptr) 218 stub MsiGetFileHashA 219 stub MsiGetFileHashW 220 stub MsiEnumComponentCostsA 221 stub MsiEnumComponentCostsW -222 stub MsiCreateAndVerifyInstallerDirectory +222 stdcall MsiCreateAndVerifyInstallerDirectory() 223 stdcall MsiGetFileSignatureInformationA(str long ptr ptr ptr) 224 stdcall MsiGetFileSignatureInformationW(wstr long ptr ptr ptr) 225 stdcall MsiProvideAssemblyA(str str long long str ptr) diff --git a/reactos/lib/msi/msi_En.rc b/reactos/lib/msi/msi_En.rc new file mode 100644 index 00000000000..854b7a8cc8f --- /dev/null +++ b/reactos/lib/msi/msi_En.rc @@ -0,0 +1,33 @@ +/* + * English resources for MSI + * + * Copyright 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + 5 "path %s not found" + 9 "insert disk %s" + 10 "bad parameters" + 11 "enter which folder contains %s" + 12 "install source for feature missing" + 13 "network drive for feature missing" + 14 "feature from:" + 15 "choose which folder contains %s" +} diff --git a/reactos/lib/msi/msipriv.h b/reactos/lib/msi/msipriv.h index 306feca76f8..98e735056fa 100644 --- a/reactos/lib/msi/msipriv.h +++ b/reactos/lib/msi/msipriv.h @@ -1,7 +1,7 @@ /* * Implementation of the Microsoft Installer (msi.dll) * - * Copyright 2002 Mike McCormack for CodeWeavers + * Copyright 2002-2005 Mike McCormack for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -53,7 +53,7 @@ struct tagMSIOBJECTHDR { UINT magic; UINT type; - UINT refcount; + DWORD refcount; msihandledestructor destructor; struct tagMSIOBJECTHDR *next; struct tagMSIOBJECTHDR *prev; @@ -161,7 +161,7 @@ typedef struct tagMSIVIEWOPS /* * modify - not yet implemented properly */ - UINT (*modify)( struct tagMSIVIEW *, MSIMODIFY, MSIHANDLE ); + UINT (*modify)( struct tagMSIVIEW *, MSIMODIFY, MSIRECORD * ); /* * delete - destroys the structure completely @@ -182,6 +182,9 @@ struct tagMSIVIEW MSIVIEWOPS *ops; }; +struct msi_dialog_tag; +typedef struct msi_dialog_tag msi_dialog; + typedef struct tagMSIPACKAGE { MSIOBJECTHDR hdr; @@ -196,14 +199,37 @@ typedef struct tagMSIPACKAGE UINT loaded_files; LPWSTR ActionFormat; LPWSTR LastAction; + + LPWSTR *DeferredAction; + UINT DeferredActionCount; + + LPWSTR *CommitAction; + UINT CommitActionCount; + + struct tagMSIRUNNINGACTION *RunningAction; + UINT RunningActionCount; + + LPWSTR PackagePath; + + UINT CurrentInstallState; + msi_dialog *dialog; + LPWSTR next_dialog; } MSIPACKAGE; +typedef struct tagMSIPREVIEW +{ + MSIOBJECTHDR hdr; + MSIPACKAGE *package; + msi_dialog *dialog; +} MSIPREVIEW; + #define MSIHANDLETYPE_ANY 0 #define MSIHANDLETYPE_DATABASE 1 #define MSIHANDLETYPE_SUMMARYINFO 2 #define MSIHANDLETYPE_VIEW 3 #define MSIHANDLETYPE_RECORD 4 #define MSIHANDLETYPE_PACKAGE 5 +#define MSIHANDLETYPE_PREVIEW 6 #define MSI_MAJORVERSION 2 #define MSI_MINORVERSION 0 @@ -212,7 +238,7 @@ typedef struct tagMSIPACKAGE #define GUID_SIZE 39 #define MSIHANDLE_MAGIC 0x4d434923 -#define MSIMAXHANDLES 0x80 +#define MSIMAXHANDLES 0xf0 #define MSISUMINFO_OFFSET 0x30LL @@ -271,9 +297,11 @@ extern BOOL TABLE_Exists( MSIDATABASE *db, LPWSTR name ); extern UINT read_raw_stream_data( MSIDATABASE*, LPCWSTR stname, USHORT **pdata, UINT *psz ); + +/* action internals */ extern UINT ACTION_DoTopLevelINSTALL( MSIPACKAGE *, LPCWSTR, LPCWSTR ); -extern void ACTION_remove_tracked_tempfiles( MSIPACKAGE* ); extern void ACTION_free_package_structures( MSIPACKAGE* ); +extern UINT ACTION_DialogBox( MSIPACKAGE*, LPCWSTR); /* record internals */ extern UINT MSI_RecordSetIStream( MSIRECORD *, unsigned int, IStream *); @@ -296,6 +324,9 @@ extern void enum_stream_names( IStorage *stg ); /* database internals */ extern UINT MSI_OpenDatabaseW( LPCWSTR, LPCWSTR, MSIDATABASE ** ); extern UINT MSI_DatabaseOpenViewW(MSIDATABASE *, LPCWSTR, MSIQUERY ** ); +extern UINT MSI_OpenQuery( MSIDATABASE *, MSIQUERY **, LPCWSTR, ... ); +typedef UINT (*record_func)( MSIRECORD *rec, LPVOID param ); +extern UINT MSI_IterateRecords( MSIQUERY *, DWORD *, record_func, LPVOID ); /* view internals */ extern UINT MSI_ViewExecute( MSIQUERY*, MSIRECORD * ); @@ -303,26 +334,51 @@ extern UINT MSI_ViewFetch( MSIQUERY*, MSIRECORD ** ); extern UINT MSI_ViewClose( MSIQUERY* ); /* package internals */ -extern UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE ** ); -extern UINT MSI_SetTargetPathW( MSIPACKAGE *, LPCWSTR, LPCWSTR); +extern MSIPACKAGE *MSI_CreatePackage( MSIDATABASE * ); +extern UINT MSI_OpenPackageW( LPCWSTR szPackage, MSIPACKAGE ** ); +extern UINT MSI_SetTargetPathW( MSIPACKAGE *, LPCWSTR, LPCWSTR ); extern UINT MSI_SetPropertyW( MSIPACKAGE *, LPCWSTR, LPCWSTR ); -extern INT MSI_ProcessMessage( MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD* ); -extern UINT MSI_GetPropertyW( MSIPACKAGE *, LPCWSTR, LPWSTR, DWORD*); +extern INT MSI_ProcessMessage( MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD * ); +extern UINT MSI_GetPropertyW( MSIPACKAGE *, LPCWSTR, LPWSTR, DWORD * ); extern MSICONDITION MSI_EvaluateConditionW( MSIPACKAGE *, LPCWSTR ); extern UINT MSI_SetPropertyW( MSIPACKAGE *, LPCWSTR, LPCWSTR ); -extern UINT MSI_GetComponentStateW(MSIPACKAGE *, LPWSTR, INSTALLSTATE *, INSTALLSTATE *); -extern UINT MSI_GetFeatureStateW(MSIPACKAGE *, LPWSTR, INSTALLSTATE *, INSTALLSTATE *); +extern UINT MSI_GetComponentStateW( MSIPACKAGE *, LPWSTR, INSTALLSTATE *, INSTALLSTATE * ); +extern UINT MSI_GetFeatureStateW( MSIPACKAGE *, LPWSTR, INSTALLSTATE *, INSTALLSTATE * ); +/* for deformating */ +extern UINT MSI_FormatRecordW(MSIPACKAGE* package, MSIRECORD* record, + LPWSTR buffer, DWORD *size); + /* registry data encoding/decoding functions */ -BOOL unsquash_guid(LPCWSTR in, LPWSTR out); -BOOL squash_guid(LPCWSTR in, LPWSTR out); -BOOL encode_base85_guid(GUID *,LPWSTR); -BOOL decode_base85_guid(LPCWSTR,GUID*); +extern BOOL unsquash_guid(LPCWSTR in, LPWSTR out); +extern BOOL squash_guid(LPCWSTR in, LPWSTR out); +extern BOOL encode_base85_guid(GUID *,LPWSTR); +extern BOOL decode_base85_guid(LPCWSTR,GUID*); +extern UINT MSIREG_OpenUninstallKey(LPCWSTR szProduct, HKEY* key, BOOL create); +extern UINT MSIREG_OpenUserProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create); +extern UINT MSIREG_OpenFeatures(HKEY* key); +extern UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create); +extern UINT MSIREG_OpenComponents(HKEY* key); +extern UINT MSIREG_OpenComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create); +extern UINT MSIREG_OpenProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create); +extern UINT MSIREG_OpenUserFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create); + +/* msi dialog interface */ +typedef VOID (*msi_dialog_event_handler)( MSIPACKAGE*, LPCWSTR, LPCWSTR, msi_dialog* ); +extern msi_dialog *msi_dialog_create( MSIPACKAGE*, LPCWSTR, msi_dialog_event_handler ); +extern UINT msi_dialog_run_message_loop( msi_dialog* ); +extern void msi_dialog_end_dialog( msi_dialog* ); +extern void msi_dialog_check_messages( msi_dialog*, HANDLE ); +extern void msi_dialog_do_preview( msi_dialog* ); +extern void msi_dialog_destroy( msi_dialog* ); +extern void msi_dialog_register_class( void ); +extern void msi_dialog_unregister_class( void ); /* UI globals */ extern INSTALLUILEVEL gUILevel; extern HWND gUIhwnd; -extern INSTALLUI_HANDLERA gUIHandler; +extern INSTALLUI_HANDLERA gUIHandlerA; +extern INSTALLUI_HANDLERW gUIHandlerW; extern DWORD gUIFilter; extern LPVOID gUIContext; extern WCHAR gszLogFile[MAX_PATH]; diff --git a/reactos/lib/msi/msiquery.c b/reactos/lib/msi/msiquery.c index f856626d024..29665bd6fa3 100644 --- a/reactos/lib/msi/msiquery.c +++ b/reactos/lib/msi/msiquery.c @@ -38,30 +38,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi); -#if 0 -typedef struct tagMSIQUERY -{ - MSIOBJECTHDR hdr; - MSIVIEW *view; - UINT row; - MSIDATABASE *db; -} MSIQUERY; -#endif - -UINT WINAPI MsiDatabaseIsTablePersistentA( - MSIHANDLE hDatabase, LPSTR szTableName) -{ - FIXME("%lx %s\n", hDatabase, debugstr_a(szTableName)); - return ERROR_CALL_NOT_IMPLEMENTED; -} - -UINT WINAPI MsiDatabaseIsTablePersistentW( - MSIHANDLE hDatabase, LPWSTR szTableName) -{ - FIXME("%lx %s\n", hDatabase, debugstr_w(szTableName)); - return ERROR_CALL_NOT_IMPLEMENTED; -} - void MSI_CloseView( MSIOBJECTHDR *arg ) { MSIQUERY *query = (MSIQUERY*) arg; @@ -158,6 +134,87 @@ UINT MSI_DatabaseOpenViewW(MSIDATABASE *db, return r; } +UINT MSI_OpenQuery( MSIDATABASE *db, MSIQUERY **view, LPCWSTR fmt, ... ) +{ + LPWSTR szQuery; + LPCWSTR p; + UINT sz, rc; + va_list va; + + /* figure out how much space we need to allocate */ + va_start(va, fmt); + sz = strlenW(fmt) + 1; + p = fmt; + while (*p) + { + p = strchrW(p, '%'); + if (!p) + break; + p++; + switch (*p) + { + case 's': /* a string */ + sz += strlenW(va_arg(va,LPCWSTR)); + break; + case 'd': + case 'i': /* an integer -2147483648 seems to be longest */ + sz += 3*sizeof(int); + (void)va_arg(va,int); + break; + case '%': /* a single % - leave it alone */ + break; + default: + FIXME("Unhandled character type %c\n",*p); + } + p++; + } + va_end(va); + + /* construct the string */ + szQuery = HeapAlloc(GetProcessHeap(), 0, sz*sizeof(WCHAR)); + va_start(va, fmt); + vsnprintfW(szQuery, sz, fmt, va); + va_end(va); + + /* perform the query */ + rc = MSI_DatabaseOpenViewW(db, szQuery, view); + HeapFree(GetProcessHeap(), 0, szQuery); + return rc; +} + +UINT MSI_IterateRecords( MSIQUERY *view, DWORD *count, + record_func func, LPVOID param ) +{ + MSIRECORD *rec = NULL; + UINT r, n = 0, max = 0; + + r = MSI_ViewExecute( view, NULL ); + if( r != ERROR_SUCCESS ) + return r; + + if( count ) + max = *count; + + /* iterate a query */ + for( n = 0; (max == 0) || (n < max); n++ ) + { + r = MSI_ViewFetch( view, &rec ); + if( r != ERROR_SUCCESS ) + break; + r = func( rec, param ); + msiobj_release( &rec->hdr ); + if( r != ERROR_SUCCESS ) + break; + } + + MSI_ViewClose( view ); + + if( count ) + *count = n; + + return r; +} + UINT WINAPI MsiDatabaseOpenViewW(MSIHANDLE hdb, LPCWSTR szQuery, MSIHANDLE *phView) { @@ -358,7 +415,10 @@ UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec) } } + msiobj_lock( &rec->hdr ); ret = MSI_ViewExecute( query, rec ); + msiobj_unlock( &rec->hdr ); + out: if( query ) msiobj_release( &query->hdr ); @@ -370,10 +430,10 @@ out: UINT WINAPI MsiViewGetColumnInfo(MSIHANDLE hView, MSICOLINFO info, MSIHANDLE *hRec) { - MSIVIEW *view; - MSIQUERY *query; - MSIHANDLE handle; - UINT ret, i, count = 0, type; + MSIVIEW *view = NULL; + MSIQUERY *query = NULL; + MSIRECORD *rec = NULL; + UINT r = ERROR_FUNCTION_FAILED, i, count = 0, type; LPWSTR name; TRACE("%ld %d %p\n", hView, info, hRec); @@ -384,34 +444,82 @@ UINT WINAPI MsiViewGetColumnInfo(MSIHANDLE hView, MSICOLINFO info, MSIHANDLE *hR view = query->view; if( !view ) - return ERROR_FUNCTION_FAILED; + goto out; if( !view->ops->get_dimensions ) - return ERROR_FUNCTION_FAILED; + goto out; - ret = view->ops->get_dimensions( view, NULL, &count ); - if( ret ) - return ret; + r = view->ops->get_dimensions( view, NULL, &count ); + if( r ) + goto out; if( !count ) - return ERROR_INVALID_PARAMETER; + { + r = ERROR_INVALID_PARAMETER; + goto out; + } - handle = MsiCreateRecord( count ); - if( !handle ) + rec = MSI_CreateRecord( count ); + if( !rec ) return ERROR_FUNCTION_FAILED; for( i=0; iops->get_column_info( view, i+1, &name, &type ); - if( ret != ERROR_SUCCESS ) + r = view->ops->get_column_info( view, i+1, &name, &type ); + if( r != ERROR_SUCCESS ) continue; - MsiRecordSetStringW( handle, i+1, name ); + MSI_RecordSetStringW( rec, i+1, name ); HeapFree( GetProcessHeap(), 0, name ); } - *hRec = handle; + *hRec = alloc_msihandle( &rec->hdr ); - return ERROR_SUCCESS; +out: + if( query ) + msiobj_release( &query->hdr ); + if( rec ) + msiobj_release( &rec->hdr ); + + return r; +} + +UINT WINAPI MsiViewModify( MSIHANDLE hView, MSIMODIFY eModifyMode, + MSIHANDLE hRecord) +{ + MSIVIEW *view = NULL; + MSIQUERY *query = NULL; + MSIRECORD *rec = NULL; + UINT r = ERROR_FUNCTION_FAILED; + + TRACE("%ld %x %ld\n", hView, eModifyMode, hRecord); + + query = msihandle2msiinfo( hView, MSIHANDLETYPE_VIEW ); + if( !query ) + return ERROR_INVALID_HANDLE; + + view = query->view; + if( !view ) + goto out; + + if( !view->ops->modify ) + goto out; + + rec = msihandle2msiinfo( hRecord, MSIHANDLETYPE_RECORD ); + if( !rec ) + { + r = ERROR_INVALID_HANDLE; + goto out; + } + + r = view->ops->modify( view, eModifyMode, rec ); + +out: + if( query ) + msiobj_release( &query->hdr ); + if( rec ) + msiobj_release( &rec->hdr ); + + return r; } UINT WINAPI MsiDatabaseApplyTransformA( MSIHANDLE hdb, @@ -461,6 +569,8 @@ UINT WINAPI MsiDatabaseCommit( MSIHANDLE hdb ) /* FIXME: unlock the database */ + msiobj_release( &db->hdr ); + return r; } @@ -478,9 +588,16 @@ UINT WINAPI MsiDatabaseGetPrimaryKeysW(MSIHANDLE hdb, return ERROR_CALL_NOT_IMPLEMENTED; } -UINT WINAPI MsiViewModify(MSIHANDLE hView, MSIMODIFY eModifyMode, MSIHANDLE -hRecord) +UINT WINAPI MsiDatabaseIsTablePersistentA( + MSIHANDLE hDatabase, LPSTR szTableName) { - FIXME("%ld %x %ld\n",hView, eModifyMode, hRecord); + FIXME("%lx %s\n", hDatabase, debugstr_a(szTableName)); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiDatabaseIsTablePersistentW( + MSIHANDLE hDatabase, LPWSTR szTableName) +{ + FIXME("%lx %s\n", hDatabase, debugstr_w(szTableName)); return ERROR_CALL_NOT_IMPLEMENTED; } diff --git a/reactos/lib/msi/order.c b/reactos/lib/msi/order.c index f37bdf10972..c23b1ef89ef 100644 --- a/reactos/lib/msi/order.c +++ b/reactos/lib/msi/order.c @@ -187,8 +187,7 @@ static UINT ORDER_close( struct tagMSIVIEW *view ) if( !ov->table ) return ERROR_FUNCTION_FAILED; - if( ov->reorder ) - HeapFree( GetProcessHeap(), 0, ov->reorder ); + HeapFree( GetProcessHeap(), 0, ov->reorder ); ov->reorder = NULL; return ov->table->ops->close( ov->table ); @@ -219,16 +218,17 @@ static UINT ORDER_get_column_info( struct tagMSIVIEW *view, return ov->table->ops->get_column_info( ov->table, n, name, type ); } -static UINT ORDER_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT ORDER_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, + MSIRECORD *rec ) { MSIORDERVIEW *ov = (MSIORDERVIEW*)view; - TRACE("%p %d %ld\n", ov, eModifyMode, hrec ); + TRACE("%p %d %p\n", ov, eModifyMode, rec ); if( !ov->table ) return ERROR_FUNCTION_FAILED; - return ov->table->ops->modify( ov->table, eModifyMode, hrec ); + return ov->table->ops->modify( ov->table, eModifyMode, rec ); } static UINT ORDER_delete( struct tagMSIVIEW *view ) @@ -240,8 +240,7 @@ static UINT ORDER_delete( struct tagMSIVIEW *view ) if( ov->table ) ov->table->ops->delete( ov->table ); - if( ov->reorder ) - HeapFree( GetProcessHeap(), 0, ov->reorder ); + HeapFree( GetProcessHeap(), 0, ov->reorder ); ov->reorder = NULL; msiobj_release( &ov->db->hdr ); diff --git a/reactos/lib/msi/package.c b/reactos/lib/msi/package.c index 639af427eaa..72d1a8deda4 100644 --- a/reactos/lib/msi/package.c +++ b/reactos/lib/msi/package.c @@ -53,36 +53,13 @@ void MSI_FreePackage( MSIOBJECTHDR *arg) { MSIPACKAGE *package= (MSIPACKAGE*) arg; - ACTION_remove_tracked_tempfiles(package); + if( package->dialog ) + msi_dialog_destroy( package->dialog ); ACTION_free_package_structures(package); msiobj_release( &package->db->hdr ); } -UINT WINAPI MsiOpenPackageA(LPCSTR szPackage, MSIHANDLE *phPackage) -{ - LPWSTR szwPack = NULL; - UINT len, ret; - - TRACE("%s %p\n",debugstr_a(szPackage), phPackage); - - if( szPackage ) - { - len = MultiByteToWideChar( CP_ACP, 0, szPackage, -1, NULL, 0 ); - szwPack = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) ); - if( szwPack ) - MultiByteToWideChar( CP_ACP, 0, szPackage, -1, szwPack, len ); - } - - ret = MsiOpenPackageW( szwPack, phPackage ); - - if( szwPack ) - HeapFree( GetProcessHeap(), 0, szwPack ); - - return ret; -} - - static const UINT clone_properties(MSIDATABASE *db) { MSIQUERY * view = NULL; @@ -102,7 +79,7 @@ static const UINT clone_properties(MSIDATABASE *db) '`','_','P','r','o','p','e','r','t','y','`',' ', '(','`','_','P','r','o','p','e','r','t','y','`',',', '`','V','a','l','u','e','`',')',' ', - 'V','A','L','U','E','S',' ','(','?',')',0}; + 'V','A','L','U','E','S',' ','(','?',',','?',')',0}; /* create the temporary properties table */ rc = MSI_DatabaseOpenViewW(db, CreateSql, &view); @@ -377,39 +354,18 @@ Privileged ReleaseDC(0, dc); } -UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage) +MSIPACKAGE *MSI_CreatePackage( MSIDATABASE *db ) { - UINT rc; - MSIDATABASE *db = NULL; + static const WCHAR szLevel[] = { 'U','I','L','e','v','e','l',0 }; + static const WCHAR szpi[] = {'%','i',0}; MSIPACKAGE *package = NULL; WCHAR uilevel[10]; - UINT ret = ERROR_FUNCTION_FAILED; - static const WCHAR OriginalDatabase[] = -{'O','r','i','g','i','n','a','l','D','a','t','a','b','a','s','e',0}; - static const WCHAR Database[] = -{'D','A','T','A','B','A','S','E',0}; - static const WCHAR szpi[] = {'%','i',0}; - static const WCHAR szLevel[] = { 'U','I','L','e','v','e','l',0 }; - - TRACE("%s %p\n",debugstr_w(szPackage), pPackage); - - if (szPackage[0] == '#') - { - INT handle = atoiW(&szPackage[1]); - db = msihandle2msiinfo( handle , MSIHANDLETYPE_DATABASE); - } - else - { - rc = MSI_OpenDatabaseW(szPackage, MSIDBOPEN_READONLY, &db); - if (rc != ERROR_SUCCESS) - return ERROR_FUNCTION_FAILED; - } + TRACE("%p\n", db); package = alloc_msiobject( MSIHANDLETYPE_PACKAGE, sizeof (MSIPACKAGE), MSI_FreePackage ); - - if (package) + if( package ) { msiobj_addref( &db->hdr ); @@ -424,35 +380,78 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage) package->loaded_files = 0; package->ActionFormat = NULL; package->LastAction = NULL; + package->dialog = NULL; + package->next_dialog = NULL; /* OK, here is where we do a slew of things to the database to * prep for all that is to come as a package */ clone_properties(db); set_installer_properties(package); - MSI_SetPropertyW(package, OriginalDatabase, szPackage); - MSI_SetPropertyW(package, Database, szPackage); sprintfW(uilevel,szpi,gUILevel); MSI_SetPropertyW(package, szLevel, uilevel); - - msiobj_addref( &package->hdr ); - *pPackage = package; - ret = ERROR_SUCCESS; } - if( package ) - msiobj_release( &package->hdr ); - if( db ) - msiobj_release( &db->hdr ); - - return ret; + return package; } -UINT WINAPI MsiOpenPackageW(LPCWSTR szPackage, MSIHANDLE *phPackage) +UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage) +{ + MSIDATABASE *db = NULL; + MSIPACKAGE *package; + MSIHANDLE handle; + + TRACE("%s %p\n", debugstr_w(szPackage), pPackage); + + if( szPackage[0] == '#' ) + { + handle = atoiW(&szPackage[1]); + db = msihandle2msiinfo( handle, MSIHANDLETYPE_DATABASE ); + if( !db ) + return ERROR_INVALID_HANDLE; + } + else + { + UINT r = MSI_OpenDatabaseW(szPackage, MSIDBOPEN_READONLY, &db); + if( r != ERROR_SUCCESS ) + return r; + } + + package = MSI_CreatePackage( db ); + msiobj_release( &db->hdr ); + if( !package ) + return ERROR_FUNCTION_FAILED; + + /* + * FIXME: I don't think this is right. Maybe we should be storing the + * name of the database in the MSIDATABASE structure and fetching this + * info from there, or maybe this is only relevant to cached databases. + */ + if( szPackage[0] != '#' ) + { + static const WCHAR OriginalDatabase[] = + {'O','r','i','g','i','n','a','l','D','a','t','a','b','a','s','e',0}; + static const WCHAR Database[] = {'D','A','T','A','B','A','S','E',0}; + + MSI_SetPropertyW( package, OriginalDatabase, szPackage ); + MSI_SetPropertyW( package, Database, szPackage ); + } + + *pPackage = package; + + return ERROR_SUCCESS; +} + +UINT WINAPI MsiOpenPackageExW(LPCWSTR szPackage, DWORD dwOptions, MSIHANDLE *phPackage) { MSIPACKAGE *package = NULL; UINT ret; + TRACE("%s %08lx %p\n",debugstr_w(szPackage), dwOptions, phPackage); + + if( dwOptions ) + FIXME("dwOptions %08lx not supported\n", dwOptions); + ret = MSI_OpenPackageW( szPackage, &package); if( ret == ERROR_SUCCESS ) { @@ -462,16 +461,34 @@ UINT WINAPI MsiOpenPackageW(LPCWSTR szPackage, MSIHANDLE *phPackage) return ret; } -UINT WINAPI MsiOpenPackageExA(LPCSTR szPackage, DWORD dwOptions, MSIHANDLE *phPackage) +UINT WINAPI MsiOpenPackageW(LPCWSTR szPackage, MSIHANDLE *phPackage) { - FIXME("%s 0x%08lx %p\n",debugstr_a(szPackage), dwOptions, phPackage); - return ERROR_CALL_NOT_IMPLEMENTED; + return MsiOpenPackageExW( szPackage, 0, phPackage ); } -UINT WINAPI MsiOpenPackageExW(LPCWSTR szPackage, DWORD dwOptions, MSIHANDLE *phPackage) +UINT WINAPI MsiOpenPackageExA(LPCSTR szPackage, DWORD dwOptions, MSIHANDLE *phPackage) { - FIXME("%s 0x%08lx %p\n",debugstr_w(szPackage), dwOptions, phPackage); - return ERROR_CALL_NOT_IMPLEMENTED; + LPWSTR szwPack = NULL; + UINT len, ret; + + if( szPackage ) + { + len = MultiByteToWideChar( CP_ACP, 0, szPackage, -1, NULL, 0 ); + szwPack = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) ); + if( szwPack ) + MultiByteToWideChar( CP_ACP, 0, szPackage, -1, szwPack, len ); + } + + ret = MsiOpenPackageExW( szwPack, dwOptions, phPackage ); + + HeapFree( GetProcessHeap(), 0, szwPack ); + + return ret; +} + +UINT WINAPI MsiOpenPackageA(LPCSTR szPackage, MSIHANDLE *phPackage) +{ + return MsiOpenPackageExA( szPackage, 0, phPackage ); } MSIHANDLE WINAPI MsiGetActiveDatabase(MSIHANDLE hInstall) @@ -555,7 +572,7 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, HeapFree(GetProcessHeap(),0,tmp); } - TRACE("(%p %lx %lx %s)\n",gUIHandler, gUIFilter, log_type, + TRACE("(%p %lx %lx %s)\n",gUIHandlerA, gUIFilter, log_type, debugstr_w(message)); /* convert it to ASCII */ @@ -565,9 +582,9 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, WideCharToMultiByte( CP_ACP, 0, message, -1, msg, len, NULL, NULL ); - if (gUIHandler && (gUIFilter & log_type)) + if (gUIHandlerA && (gUIFilter & log_type)) { - rc = gUIHandler(gUIContext,eMessageType,msg); + rc = gUIHandlerA(gUIContext,eMessageType,msg); } if ((!rc) && (gszLogFile[0]) && !((eMessageType & 0xff000000) == @@ -649,10 +666,8 @@ UINT WINAPI MsiSetPropertyA( MSIHANDLE hInstall, LPCSTR szName, LPCSTR szValue) hr = MsiSetPropertyW( hInstall, szwName, szwValue); end: - if( szwName ) - HeapFree( GetProcessHeap(), 0, szwName ); - if( szwValue ) - HeapFree( GetProcessHeap(), 0, szwValue ); + HeapFree( GetProcessHeap(), 0, szwName ); + HeapFree( GetProcessHeap(), 0, szwValue ); return hr; } @@ -667,7 +682,7 @@ UINT MSI_SetPropertyW( MSIPACKAGE *package, LPCWSTR szName, LPCWSTR szValue) {'I','N','S','E','R','T',' ','i','n','t','o',' ','`','_','P','r','o','p' ,'e','r','t','y','`',' ','(','`','_','P','r','o','p','e','r','t','y','`' ,',','`','V','a','l','u','e','`',')',' ','V','A','L','U','E','S' -,' ','(','?',')',0}; +,' ','(','?',',','?',')',0}; static const WCHAR Update[]= {'U','P','D','A','T','E',' ','_','P','r','o','p','e' ,'r','t','y',' ','s','e','t',' ','`','V','a','l','u','e','`',' ','=' @@ -848,7 +863,12 @@ UINT WINAPI MsiGetPropertyA(MSIHANDLE hInstall, LPCSTR szName, LPSTR szValueBuf, return ERROR_INVALID_HANDLE; ret = MSI_GetPropertyA(package, szName, szValueBuf, pchValueBuf ); msiobj_release( &package->hdr ); - return ret; + + /* MsiGetProperty does not return error codes on missing properties */ + if (ret!= ERROR_MORE_DATA) + return ERROR_SUCCESS; + else + return ret; } @@ -870,5 +890,10 @@ UINT WINAPI MsiGetPropertyW(MSIHANDLE hInstall, LPCWSTR szName, return ERROR_INVALID_HANDLE; ret = MSI_GetPropertyW(package, szName, szValueBuf, pchValueBuf ); msiobj_release( &package->hdr ); - return ret; + + /* MsiGetProperty does not return error codes on missing properties */ + if (ret!= ERROR_MORE_DATA) + return ERROR_SUCCESS; + else + return ret; } diff --git a/reactos/lib/msi/preview.c b/reactos/lib/msi/preview.c new file mode 100644 index 00000000000..03c7436ddd2 --- /dev/null +++ b/reactos/lib/msi/preview.c @@ -0,0 +1,164 @@ +/* + * Implementation of the Microsoft Installer (msi.dll) + * + * Copyright 2005 Mike McCormack 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "windef.h" +#include "winbase.h" +#include "winnls.h" +#include "msi.h" +#include "msipriv.h" + +#include "wine/debug.h" +#include "wine/unicode.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msi); + +static void MSI_ClosePreview( MSIOBJECTHDR *arg ) +{ + MSIPREVIEW *preview = (MSIPREVIEW *) arg; + + msiobj_release( &preview->package->hdr ); +} + +MSIPREVIEW *MSI_EnableUIPreview( MSIDATABASE *db ) +{ + MSIPREVIEW *preview = NULL; + MSIPACKAGE *package; + + package = MSI_CreatePackage( db ); + if( package ) + { + preview = alloc_msiobject( MSIHANDLETYPE_PREVIEW, sizeof (MSIPREVIEW), + MSI_ClosePreview ); + if( preview ) + { + preview->package = package; + preview->dialog = 0; + msiobj_addref( &package->hdr ); + } + msiobj_release( &package->hdr ); + } + return preview; +} + +UINT WINAPI MsiEnableUIPreview( MSIHANDLE hdb, MSIHANDLE* phPreview ) +{ + MSIDATABASE *db; + MSIPREVIEW *preview; + UINT r = ERROR_FUNCTION_FAILED; + + TRACE("%ld %p\n", hdb, phPreview); + + db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE ); + if( !db ) + return ERROR_INVALID_HANDLE; + preview = MSI_EnableUIPreview( db ); + if( preview ) + { + *phPreview = alloc_msihandle( &preview->hdr ); + msiobj_release( &preview->hdr ); + r = ERROR_SUCCESS; + } + + return r; +} + +static VOID preview_event_handler( MSIPACKAGE *package, LPCWSTR event, + LPCWSTR argument, msi_dialog *dialog ) +{ + MESSAGE("Preview dialog event '%s' (arg='%s')\n", + debugstr_w( event ), debugstr_w( argument )); +} + +UINT MSI_PreviewDialogW( MSIPREVIEW *preview, LPCWSTR szDialogName ) +{ + msi_dialog *dialog = NULL; + UINT r = ERROR_SUCCESS; + + if( preview->dialog ) + msi_dialog_destroy( preview->dialog ); + + /* an empty name means we should just destroy the current preview dialog */ + if( szDialogName ) + { + dialog = msi_dialog_create( preview->package, szDialogName, + preview_event_handler ); + if( dialog ) + msi_dialog_do_preview( dialog ); + else + r = ERROR_FUNCTION_FAILED; + } + preview->dialog = dialog; + + return r; +} + +UINT WINAPI MsiPreviewDialogW( MSIHANDLE hPreview, LPCWSTR szDialogName ) +{ + MSIPREVIEW *preview; + UINT r; + + TRACE("%ld %s\n", hPreview, debugstr_w(szDialogName)); + + preview = msihandle2msiinfo( hPreview, MSIHANDLETYPE_PREVIEW ); + if( !preview ) + return ERROR_INVALID_HANDLE; + + r = MSI_PreviewDialogW( preview, szDialogName ); + + msiobj_release( &preview->hdr ); + + return r; +} + +UINT WINAPI MsiPreviewDialogA( MSIHANDLE hPreview, LPCSTR szDialogName ) +{ + UINT r, len; + LPWSTR strW = NULL; + + TRACE("%ld %s\n", hPreview, debugstr_a(szDialogName)); + + if( szDialogName ) + { + len = MultiByteToWideChar( CP_ACP, 0, szDialogName, -1, NULL, 0 ); + strW = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); + MultiByteToWideChar( CP_ACP, 0, szDialogName, -1, strW, len ); + } + r = MsiPreviewDialogW( hPreview, strW ); + HeapFree( GetProcessHeap(), 0, strW ); + return r; +} + +UINT WINAPI MsiPreviewBillboardW( MSIHANDLE hPreview, LPCWSTR szControlName, + LPCWSTR szBillboard) +{ + FIXME("%ld %s %s\n", hPreview, debugstr_w(szControlName), + debugstr_w(szBillboard)); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiPreviewBillboardA( MSIHANDLE hPreview, LPCSTR szControlName, + LPCSTR szBillboard) +{ + FIXME("%ld %s %s\n", hPreview, debugstr_a(szControlName), + debugstr_a(szBillboard)); + return ERROR_CALL_NOT_IMPLEMENTED; +} diff --git a/reactos/lib/msi/record.c b/reactos/lib/msi/record.c index 30cde0f80ef..967017cd5cc 100644 --- a/reactos/lib/msi/record.c +++ b/reactos/lib/msi/record.c @@ -454,12 +454,20 @@ UINT MSI_RecordSetStringA( MSIRECORD *rec, unsigned int iField, LPCSTR szValue ) if( iField > rec->count ) return ERROR_INVALID_FIELD; - len = MultiByteToWideChar( CP_ACP, 0, szValue, -1, NULL, 0 ); - str = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); - MultiByteToWideChar( CP_ACP, 0, szValue, -1, str, len ); MSI_FreeField( &rec->fields[iField] ); - rec->fields[iField].type = MSIFIELD_WSTR; - rec->fields[iField].u.szwVal = str; + if( szValue && szValue[0] ) + { + len = MultiByteToWideChar( CP_ACP, 0, szValue, -1, NULL, 0 ); + str = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); + MultiByteToWideChar( CP_ACP, 0, szValue, -1, str, len ); + rec->fields[iField].type = MSIFIELD_WSTR; + rec->fields[iField].u.szwVal = str; + } + else + { + rec->fields[iField].type = MSIFIELD_NULL; + rec->fields[iField].u.szwVal = NULL; + } return 0; } @@ -491,13 +499,22 @@ UINT MSI_RecordSetStringW( MSIRECORD *rec, unsigned int iField, LPCWSTR szValue if( iField > rec->count ) return ERROR_INVALID_FIELD; - len = lstrlenW(szValue) + 1; - str = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR)); - lstrcpyW( str, szValue ); - MSI_FreeField( &rec->fields[iField] ); - rec->fields[iField].type = MSIFIELD_WSTR; - rec->fields[iField].u.szwVal = str; + + if( szValue && szValue[0] ) + { + len = lstrlenW(szValue) + 1; + str = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR)); + lstrcpyW( str, szValue ); + + rec->fields[iField].type = MSIFIELD_WSTR; + rec->fields[iField].u.szwVal = str; + } + else + { + rec->fields[iField].type = MSIFIELD_NULL; + rec->fields[iField].u.szwVal = NULL; + } return 0; } @@ -520,18 +537,6 @@ UINT WINAPI MsiRecordSetStringW( MSIHANDLE handle, unsigned int iField, LPCWSTR return ret; } -UINT WINAPI MsiFormatRecordA(MSIHANDLE hInstall, MSIHANDLE hRecord, LPSTR szResult, DWORD *sz) -{ - FIXME("%ld %ld %p %p\n", hInstall, hRecord, szResult, sz); - return ERROR_CALL_NOT_IMPLEMENTED; -} - -UINT WINAPI MsiFormatRecordW(MSIHANDLE hInstall, MSIHANDLE hRecord, LPWSTR szResult, DWORD *sz) -{ - FIXME("%ld %ld %p %p\n", hInstall, hRecord, szResult, sz); - return ERROR_CALL_NOT_IMPLEMENTED; -} - /* read the data in a file into an IStream */ UINT RECORD_StreamFromFile(LPCWSTR szFile, IStream **pstm) { diff --git a/reactos/lib/msi/registry.c b/reactos/lib/msi/registry.c new file mode 100644 index 00000000000..61c03c63e5c --- /dev/null +++ b/reactos/lib/msi/registry.c @@ -0,0 +1,486 @@ +/* + * Implementation of the Microsoft Installer (msi.dll) + * + * Copyright 2005 Mike McCormack for CodeWeavers + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#define COBJMACROS +#define NONAMELESSUNION + +#include "windef.h" +#include "winbase.h" +#include "winreg.h" +#include "winnls.h" +#include "shlwapi.h" +#include "wine/debug.h" +#include "msi.h" +#include "msipriv.h" +#include "wincrypt.h" +#include "wine/unicode.h" +#include "winver.h" +#include "winuser.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msi); + + +/* + * This module will be all the helper functions for registry access by the + * installer bits. + */ +static const WCHAR szUserFeatures_fmt[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'I','n','s','t','a','l','l','e','r','\\', +'F','e','a','t','u','r','e','s','\\', +'%','s',0}; + +static const WCHAR szInstaller_Features[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'W','i','n','d','o','w','s','\\', +'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', +'I','n','s','t','a','l','l','e','r','\\', +'F','e','a','t','u','r','e','s',0 }; + +static const WCHAR szInstaller_Features_fmt[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'W','i','n','d','o','w','s','\\', +'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', +'I','n','s','t','a','l','l','e','r','\\', +'F','e','a','t','u','r','e','s','\\', +'%','s',0}; + +static const WCHAR szInstaller_Components[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'W','i','n','d','o','w','s','\\', +'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', +'I','n','s','t','a','l','l','e','r','\\', +'C','o','m','p','o','n','e','n','t','s',0 }; + +static const WCHAR szInstaller_Components_fmt[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'W','i','n','d','o','w','s','\\', +'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', +'I','n','s','t','a','l','l','e','r','\\', +'C','o','m','p','o','n','e','n','t','s','\\', +'%','s',0}; + +static const WCHAR szUninstall_fmt[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'W','i','n','d','o','w','s','\\', +'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', +'U','n','i','n','s','t','a','l','l','\\', +'%','s',0 }; + +static const WCHAR szUserProduct_fmt[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'I','n','s','t','a','l','l','e','r','\\', +'P','r','o','d','u','c','t','s','\\', +'%','s',0}; + +static const WCHAR szInstaller_Products[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'W','i','n','d','o','w','s','\\', +'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', +'I','n','s','t','a','l','l','e','r','\\', +'P','r','o','d','u','c','t','s',0}; + +static const WCHAR szInstaller_Products_fmt[] = { +'S','o','f','t','w','a','r','e','\\', +'M','i','c','r','o','s','o','f','t','\\', +'W','i','n','d','o','w','s','\\', +'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', +'I','n','s','t','a','l','l','e','r','\\', +'P','r','o','d','u','c','t','s','\\', +'%','s',0}; + +BOOL unsquash_guid(LPCWSTR in, LPWSTR out) +{ + DWORD i,n=0; + + out[n++]='{'; + for(i=0; i<8; i++) + out[n++] = in[7-i]; + out[n++]='-'; + for(i=0; i<4; i++) + out[n++] = in[11-i]; + out[n++]='-'; + for(i=0; i<4; i++) + out[n++] = in[15-i]; + out[n++]='-'; + for(i=0; i<2; i++) + { + out[n++] = in[17+i*2]; + out[n++] = in[16+i*2]; + } + out[n++]='-'; + for( ; i<8; i++) + { + out[n++] = in[17+i*2]; + out[n++] = in[16+i*2]; + } + out[n++]='}'; + out[n]=0; + return TRUE; +} + +BOOL squash_guid(LPCWSTR in, LPWSTR out) +{ + DWORD i,n=0; + + if(in[n++] != '{') + return FALSE; + for(i=0; i<8; i++) + out[7-i] = in[n++]; + if(in[n++] != '-') + return FALSE; + for(i=0; i<4; i++) + out[11-i] = in[n++]; + if(in[n++] != '-') + return FALSE; + for(i=0; i<4; i++) + out[15-i] = in[n++]; + if(in[n++] != '-') + return FALSE; + for(i=0; i<2; i++) + { + out[17+i*2] = in[n++]; + out[16+i*2] = in[n++]; + } + if(in[n++] != '-') + return FALSE; + for( ; i<8; i++) + { + out[17+i*2] = in[n++]; + out[16+i*2] = in[n++]; + } + out[32]=0; + if(in[n++] != '}') + return FALSE; + if(in[n]) + return FALSE; + return TRUE; +} + + +/* tables for encoding and decoding base85 */ +static const unsigned char table_dec85[0x80] = { +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0x00,0xff,0xff,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff, +0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0xff,0xff,0xff,0x16,0xff,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,0xff,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,0xff,0x53,0x54,0xff, +}; + +static const char table_enc85[] = +"!$%&'()*+,-.0123456789=?@ABCDEFGHIJKLMNO" +"PQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwx" +"yz{}~"; + +/* + * Converts a base85 encoded guid into a GUID pointer + * Base85 encoded GUIDs should be 20 characters long. + * + * returns TRUE if successful, FALSE if not + */ +BOOL decode_base85_guid( LPCWSTR str, GUID *guid ) +{ + DWORD i, val = 0, base = 1, *p; + + p = (DWORD*) guid; + for( i=0; i<20; i++ ) + { + if( (i%5) == 0 ) + { + val = 0; + base = 1; + } + val += table_dec85[str[i]] * base; + if( str[i] >= 0x80 ) + return FALSE; + if( table_dec85[str[i]] == 0xff ) + return FALSE; + if( (i%5) == 4 ) + p[i/5] = val; + base *= 85; + } + return TRUE; +} + +/* + * Encodes a base85 guid given a GUID pointer + * Caller should provide a 21 character buffer for the encoded string. + * + * returns TRUE if successful, FALSE if not + */ +BOOL encode_base85_guid( GUID *guid, LPWSTR str ) +{ + unsigned int x, *p, i; + + p = (unsigned int*) guid; + for( i=0; i<4; i++ ) + { + x = p[i]; + *str++ = table_enc85[x%85]; + x = x/85; + *str++ = table_enc85[x%85]; + x = x/85; + *str++ = table_enc85[x%85]; + x = x/85; + *str++ = table_enc85[x%85]; + x = x/85; + *str++ = table_enc85[x%85]; + } + *str = 0; + + return TRUE; +} + + +UINT MSIREG_OpenUninstallKey(LPCWSTR szProduct, HKEY* key, BOOL create) +{ + UINT rc; + WCHAR keypath[0x200]; + TRACE("%s\n",debugstr_w(szProduct)); + + sprintfW(keypath,szUninstall_fmt,szProduct); + + if (create) + rc = RegCreateKeyW(HKEY_LOCAL_MACHINE, keypath, key); + else + rc = RegOpenKeyW(HKEY_LOCAL_MACHINE, keypath, key); + + return rc; +} + +UINT MSIREG_OpenUserProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create) +{ + UINT rc; + WCHAR squished_pc[GUID_SIZE]; + WCHAR keypath[0x200]; + + TRACE("%s\n",debugstr_w(szProduct)); + squash_guid(szProduct,squished_pc); + TRACE("squished (%s)\n", debugstr_w(squished_pc)); + + sprintfW(keypath,szUserProduct_fmt,squished_pc); + + if (create) + rc = RegCreateKeyW(HKEY_CURRENT_USER,keypath,key); + else + rc = RegOpenKeyW(HKEY_CURRENT_USER,keypath,key); + + return rc; +} + +UINT MSIREG_OpenUserFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create) +{ + UINT rc; + WCHAR squished_pc[GUID_SIZE]; + WCHAR keypath[0x200]; + + TRACE("%s\n",debugstr_w(szProduct)); + squash_guid(szProduct,squished_pc); + TRACE("squished (%s)\n", debugstr_w(squished_pc)); + + sprintfW(keypath,szUserFeatures_fmt,squished_pc); + + if (create) + rc = RegCreateKeyW(HKEY_CURRENT_USER,keypath,key); + else + rc = RegOpenKeyW(HKEY_CURRENT_USER,keypath,key); + + return rc; +} + +UINT MSIREG_OpenFeatures(HKEY* key) +{ + return RegCreateKeyW(HKEY_LOCAL_MACHINE,szInstaller_Features,key); +} + +UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create) +{ + UINT rc; + WCHAR squished_pc[GUID_SIZE]; + WCHAR keypath[0x200]; + + TRACE("%s\n",debugstr_w(szProduct)); + squash_guid(szProduct,squished_pc); + TRACE("squished (%s)\n", debugstr_w(squished_pc)); + + sprintfW(keypath,szInstaller_Features_fmt,squished_pc); + + if (create) + rc = RegCreateKeyW(HKEY_LOCAL_MACHINE,keypath,key); + else + rc = RegOpenKeyW(HKEY_LOCAL_MACHINE,keypath,key); + + return rc; +} + +UINT MSIREG_OpenComponents(HKEY* key) +{ + return RegCreateKeyW(HKEY_LOCAL_MACHINE,szInstaller_Components,key); +} + +UINT MSIREG_OpenComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create) +{ + UINT rc; + WCHAR squished_cc[GUID_SIZE]; + WCHAR keypath[0x200]; + + TRACE("%s\n",debugstr_w(szComponent)); + squash_guid(szComponent,squished_cc); + TRACE("squished (%s)\n", debugstr_w(squished_cc)); + + sprintfW(keypath,szInstaller_Components_fmt,squished_cc); + + if (create) + rc = RegCreateKeyW(HKEY_LOCAL_MACHINE,keypath,key); + else + rc = RegOpenKeyW(HKEY_LOCAL_MACHINE,keypath,key); + + return rc; +} + +UINT MSIREG_OpenProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create) +{ + UINT rc; + WCHAR squished_pc[GUID_SIZE]; + WCHAR keypath[0x200]; + + TRACE("%s\n",debugstr_w(szProduct)); + squash_guid(szProduct,squished_pc); + TRACE("squished (%s)\n", debugstr_w(squished_pc)); + + sprintfW(keypath,szInstaller_Products_fmt,squished_pc); + + if (create) + rc = RegCreateKeyW(HKEY_LOCAL_MACHINE,keypath,key); + else + rc = RegOpenKeyW(HKEY_LOCAL_MACHINE,keypath,key); + + return rc; +} + +/************************************************************************* + * MsiDecomposeDescriptorW [MSI.@] + * + * Decomposes an MSI descriptor into product, feature and component parts. + * An MSI descriptor is a string of the form: + * [base 85 guid] [feature code] '>' [base 85 guid] + * + * PARAMS + * szDescriptor [I] the descriptor to decompose + * szProduct [O] buffer of MAX_FEATURE_CHARS for the product guid + * szFeature [O] buffer of MAX_FEATURE_CHARS for the feature code + * szComponent [O] buffer of MAX_FEATURE_CHARS for the component guid + * pUsed [O] the length of the descriptor + * + * RETURNS + * ERROR_SUCCESS if everything worked correctly + * ERROR_INVALID_PARAMETER if the descriptor was invalid + * + */ +UINT WINAPI MsiDecomposeDescriptorW( LPCWSTR szDescriptor, LPWSTR szProduct, + LPWSTR szFeature, LPWSTR szComponent, DWORD *pUsed ) +{ + UINT r, len; + LPWSTR p; + GUID product, component; + + TRACE("%s %p %p %p %p\n", debugstr_w(szDescriptor), szProduct, + szFeature, szComponent, pUsed); + + r = decode_base85_guid( szDescriptor, &product ); + if( !r ) + return ERROR_INVALID_PARAMETER; + + TRACE("product %s\n", debugstr_guid( &product )); + + p = strchrW(&szDescriptor[20],'>'); + if( !p ) + return ERROR_INVALID_PARAMETER; + + len = (p - &szDescriptor[20]); + if( len > MAX_FEATURE_CHARS ) + return ERROR_INVALID_PARAMETER; + memcpy( szFeature, &szDescriptor[20], len*sizeof(WCHAR) ); + szFeature[len] = 0; + + TRACE("feature %s\n", debugstr_w( szFeature )); + + r = decode_base85_guid( p+1, &component ); + if( !r ) + return ERROR_INVALID_PARAMETER; + + TRACE("component %s\n", debugstr_guid( &component )); + + StringFromGUID2( &product, szProduct, MAX_FEATURE_CHARS+1 ); + StringFromGUID2( &component, szComponent, MAX_FEATURE_CHARS+1 ); + len = ( &p[21] - szDescriptor ); + + TRACE("length = %d\n", len); + *pUsed = len; + + return ERROR_SUCCESS; +} + +UINT WINAPI MsiDecomposeDescriptorA( LPCSTR szDescriptor, LPSTR szProduct, + LPSTR szFeature, LPSTR szComponent, DWORD *pUsed ) +{ + WCHAR product[MAX_FEATURE_CHARS+1]; + WCHAR feature[MAX_FEATURE_CHARS+1]; + WCHAR component[MAX_FEATURE_CHARS+1]; + LPWSTR str = NULL; + UINT r, len; + + TRACE("%s %p %p %p %p\n", debugstr_a(szDescriptor), szProduct, + szFeature, szComponent, pUsed); + + if( szDescriptor ) + { + len = MultiByteToWideChar( CP_ACP, 0, szDescriptor, -1, NULL, 0 ); + str = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); + MultiByteToWideChar( CP_ACP, 0, szDescriptor, -1, str, len ); + } + + r = MsiDecomposeDescriptorW( str, product, feature, component, pUsed ); + + WideCharToMultiByte( CP_ACP, 0, product, MAX_FEATURE_CHARS+1, + szProduct, MAX_FEATURE_CHARS+1, NULL, NULL ); + WideCharToMultiByte( CP_ACP, 0, feature, MAX_FEATURE_CHARS+1, + szFeature, MAX_FEATURE_CHARS+1, NULL, NULL ); + WideCharToMultiByte( CP_ACP, 0, component, MAX_FEATURE_CHARS+1, + szComponent, MAX_FEATURE_CHARS+1, NULL, NULL ); + + HeapFree( GetProcessHeap(), 0, str ); + + return r; +} diff --git a/reactos/lib/msi/select.c b/reactos/lib/msi/select.c index d31ee8f32aa..69ec7c6b772 100644 --- a/reactos/lib/msi/select.c +++ b/reactos/lib/msi/select.c @@ -168,16 +168,17 @@ static UINT SELECT_get_column_info( struct tagMSIVIEW *view, return sv->table->ops->get_column_info( sv->table, n, name, type ); } -static UINT SELECT_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT SELECT_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, + MSIRECORD *rec ) { MSISELECTVIEW *sv = (MSISELECTVIEW*)view; - TRACE("%p %d %ld\n", sv, eModifyMode, hrec ); + TRACE("%p %d %p\n", sv, eModifyMode, rec ); if( !sv->table ) return ERROR_FUNCTION_FAILED; - return sv->table->ops->modify( sv->table, eModifyMode, hrec ); + return sv->table->ops->modify( sv->table, eModifyMode, rec ); } static UINT SELECT_delete( struct tagMSIVIEW *view ) diff --git a/reactos/lib/msi/sql.tab.c b/reactos/lib/msi/sql.tab.c index eb700d78e53..478856d6737 100644 --- a/reactos/lib/msi/sql.tab.c +++ b/reactos/lib/msi/sql.tab.c @@ -564,7 +564,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 23 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 125 +#define YYLAST 126 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 147 @@ -663,7 +663,7 @@ static const short yyrhs[] = -1, 168, 57, 163, -1, 168, 85, 163, -1, 168, 78, 163, -1, 168, 54, 163, -1, 168, 89, 163, -1, 168, 73, 92, -1, 168, 73, 90, 92, -1, - 168, -1, 167, -1, 167, -1, 164, 24, 167, -1, + 168, -1, 167, -1, 167, -1, 167, 24, 164, -1, 166, -1, 166, 24, 165, -1, 169, 45, 167, -1, 70, -1, 88, 70, -1, 120, -1, 138, -1, 169, -1, 170, 39, 171, -1, 171, -1, 171, -1, 66, @@ -678,8 +678,8 @@ static const unsigned short yyrline[] = 290, 294, 298, 302, 306, 313, 324, 335, 339, 353, 371, 384, 397, 404, 415, 434, 438, 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, 485, 486, 490, - 502, 518, 519, 528, 544, 548, 552, 556, 563, 570, - 574, 581, 588, 592 + 502, 517, 518, 527, 543, 547, 551, 555, 562, 569, + 573, 580, 587, 591 }; #endif @@ -787,8 +787,8 @@ static const unsigned char yydefact[] = 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 12, 11, 25, 0, 17, 0, 35, 37, 38, 56, 39, 48, 36, 43, 47, 40, - 0, 45, 42, 41, 44, 19, 0, 49, 46, 0, - 6, 50, 7 + 0, 45, 42, 41, 44, 19, 0, 49, 46, 6, + 0, 7, 50 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -801,30 +801,30 @@ static const yysigned_char yydefgoto[] = /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -105 +#define YYPACT_NINF -104 static const yysigned_char yypact[] = { - -30, -104, -46, -34, -51, 21, -105, -105, -105, -105, - -77, -51, -51, -52, -105, -105, -105, -25, 7, -1, - 2, -79, -105, -105, 31, -33, -32, -25, -51, -105, - -52, -51, -51, -52, -51, -52, -105, -88, -105, -105, - -82, 33, 14, -105, -48, -15, -17, -43, -50, -50, - -51, -64, 13, -51, -2, -6, -105, -105, -105, -105, - -105, -105, 6, -9, -49, -50, -4, 26, -105, -4, - -105, -105, 24, -105, -105, -105, -105, -17, -52, 25, - -105, 9, 19, -7, -50, -50, -59, -59, -59, -44, - -59, -59, -59, -105, -105, -105, -105, -3, -105, -64, - -105, -4, -4, 73, -105, -105, -105, -105, -105, -105, - 22, -105, -105, -105, -105, -105, -19, -105, -105, -64, - 1, -105, -105 + -30, -103, -52, -34, -51, 21, -104, -104, -104, -104, + -70, -51, -51, -57, -104, -104, -104, -26, 11, -6, + -1, -69, -104, -104, 32, -25, -15, -26, -51, -104, + -57, -51, -51, -57, -51, -57, -104, -71, -104, -104, + -67, 47, 27, -104, -36, -19, -17, -29, -53, -53, + -51, -63, 26, -51, 17, -10, -104, -104, -104, -104, + -104, -104, 5, 7, -35, -53, -4, 35, -104, -4, + -104, -104, 37, -104, -104, -104, -104, -17, -57, 39, + -104, 18, 28, -7, -53, -53, -60, -60, -60, -73, + -60, -60, -60, -104, -104, -104, -104, 4, -104, -63, + -104, -4, -4, 77, -104, -104, -104, -104, -104, -104, + 25, -104, -104, -104, -104, -104, 8, 95, -104, 0, + -63, -104, -104 }; /* YYPGOTO[NTERM-NUM]. */ static const yysigned_char yypgoto[] = { - -105, -105, -105, -105, -105, -105, -105, 42, -105, -105, - -105, -105, -105, -5, 97, -31, 18, -105, 75, -105, - -41, 30, 10, 85, 8 + -104, -104, -104, -104, -104, -104, -104, 44, -104, -104, + -104, -104, -104, 1, 96, -38, 14, 6, 75, -104, + -43, -37, 9, 12, 84 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -834,36 +834,36 @@ static const yysigned_char yypgoto[] = #define YYTABLE_NINF -64 static const yysigned_char yytable[] = { - 84, 1, 55, 84, 13, 119, 71, 14, 27, 53, - 75, 71, 22, 18, 14, 14, 14, 11, 69, 22, - 22, 23, 24, 18, 72, 38, 12, 28, 43, 72, - 47, 30, 14, 65, 83, 32, 22, 2, 31, 39, - 18, -61, 42, 18, 46, 18, 110, 33, 111, 48, - 34, 35, 56, 101, 102, 49, 73, 50, 117, 51, - 42, 103, 52, 77, 57, 58, 15, 64, 16, 16, - 16, 86, 76, 95, 74, 78, 59, 79, 121, 74, - 87, 81, 3, 88, 15, 82, 16, 54, 18, 21, - 85, 120, 80, 85, 93, 96, 25, 26, 60, 89, - 4, 98, 99, 100, 90, 107, 109, 115, 112, 113, - 114, 91, -63, 37, 118, 92, 106, 108, 108, 94, - 108, 108, 108, 122, 36, 70 + 84, 1, 55, 84, 13, 53, 14, 71, 75, 14, + 71, 69, 18, 14, 27, 14, 21, 110, 11, 111, + 12, 23, 18, 25, 26, 72, 28, 83, 72, 24, + 65, 38, 14, 31, 43, 30, 47, 2, -61, 18, + 37, 42, 18, 46, 18, 32, 101, 102, 33, 106, + 108, 108, 56, 108, 108, 108, 117, 73, 34, 42, + 103, 15, 77, 16, 57, 58, 48, 16, 35, 16, + 49, 50, 51, 79, 52, 74, 59, 117, 74, 95, + 86, 64, 3, 54, 15, 76, 16, 18, 22, 87, + 85, 80, 88, 85, 78, 22, 22, 81, 60, 82, + 4, 107, 109, 100, 112, 113, 114, 93, 89, 96, + 98, 99, 22, 90, 115, 39, -63, 118, 119, 120, + 91, 94, 121, 36, 92, 70, 122 }; static const unsigned char yycheck[] = { - 7, 31, 19, 7, 38, 24, 70, 66, 13, 24, - 51, 70, 4, 3, 66, 66, 66, 121, 49, 11, - 12, 0, 99, 13, 88, 30, 72, 52, 33, 88, - 35, 24, 66, 83, 65, 114, 28, 67, 39, 31, - 30, 39, 32, 33, 34, 35, 90, 16, 92, 137, - 83, 83, 69, 84, 85, 137, 120, 24, 99, 45, - 50, 120, 110, 53, 81, 82, 118, 110, 120, 120, - 120, 45, 59, 78, 138, 77, 93, 83, 119, 138, - 54, 90, 112, 57, 118, 134, 120, 102, 78, 4, - 97, 110, 86, 97, 70, 70, 11, 12, 115, 73, - 130, 92, 83, 110, 78, 87, 88, 110, 90, 91, - 92, 85, 39, 28, 92, 89, 86, 87, 88, 77, - 90, 91, 92, 122, 27, 50 + 7, 31, 19, 7, 38, 24, 66, 70, 51, 66, + 70, 49, 3, 66, 13, 66, 4, 90, 121, 92, + 72, 0, 13, 11, 12, 88, 52, 65, 88, 99, + 83, 30, 66, 39, 33, 24, 35, 67, 39, 30, + 28, 32, 33, 34, 35, 114, 84, 85, 16, 86, + 87, 88, 69, 90, 91, 92, 99, 120, 83, 50, + 120, 118, 53, 120, 81, 82, 137, 120, 83, 120, + 137, 24, 45, 83, 110, 138, 93, 120, 138, 78, + 45, 110, 112, 102, 118, 59, 120, 78, 4, 54, + 97, 86, 57, 97, 77, 11, 12, 90, 115, 134, + 130, 87, 88, 110, 90, 91, 92, 70, 73, 70, + 92, 83, 28, 78, 110, 31, 39, 92, 110, 24, + 85, 77, 122, 27, 89, 50, 120 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -881,8 +881,8 @@ static const unsigned char yystos[] = 86, 90, 134, 162, 7, 97, 45, 54, 57, 73, 78, 85, 89, 70, 154, 160, 70, 157, 92, 83, 110, 162, 162, 120, 163, 167, 168, 163, 168, 163, - 90, 92, 163, 163, 163, 110, 164, 167, 92, 24, - 110, 167, 122 + 90, 92, 163, 163, 163, 110, 164, 167, 92, 110, + 24, 122, 164 }; #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) @@ -1944,16 +1944,15 @@ yyreduce: vals = HeapAlloc( GetProcessHeap(), 0, sizeof *vals ); if( vals ) { - vals->val = yyvsp[0].expr; - vals->next = NULL; + vals->val = yyvsp[-2].expr; + vals->next = yyvsp[0].val_list; } - yyvsp[-2].val_list->next = vals; - yyval.val_list = yyvsp[-2].val_list; + yyval.val_list = vals; ;} break; case 52: -#line 520 "./sql.y" +#line 519 "./sql.y" { yyvsp[-2].update_col_info.col_list->next = yyvsp[0].update_col_info.col_list; yyvsp[-2].update_col_info.val_list->next = yyvsp[0].update_col_info.val_list; @@ -1962,7 +1961,7 @@ yyreduce: break; case 53: -#line 529 "./sql.y" +#line 528 "./sql.y" { yyval.update_col_info.col_list = HeapAlloc( GetProcessHeap(), 0, sizeof *yyval.update_col_info.col_list ); if( !yyval.update_col_info.col_list ) @@ -1978,70 +1977,70 @@ yyreduce: break; case 54: -#line 545 "./sql.y" +#line 544 "./sql.y" { yyval.expr = EXPR_ival( &yyvsp[0].str, 1 ); ;} break; case 55: -#line 549 "./sql.y" +#line 548 "./sql.y" { yyval.expr = EXPR_ival( &yyvsp[0].str, -1 ); ;} break; case 56: -#line 553 "./sql.y" +#line 552 "./sql.y" { yyval.expr = EXPR_sval( &yyvsp[0].str ); ;} break; case 57: -#line 557 "./sql.y" +#line 556 "./sql.y" { yyval.expr = EXPR_wildcard(); ;} break; case 58: -#line 564 "./sql.y" +#line 563 "./sql.y" { yyval.expr = EXPR_column( yyvsp[0].string ); ;} break; case 59: -#line 571 "./sql.y" +#line 570 "./sql.y" { yyval.string = yyvsp[0].string; /* FIXME */ ;} break; case 60: -#line 575 "./sql.y" +#line 574 "./sql.y" { yyval.string = yyvsp[0].string; ;} break; case 61: -#line 582 "./sql.y" +#line 581 "./sql.y" { yyval.string = yyvsp[0].string; ;} break; case 62: -#line 589 "./sql.y" +#line 588 "./sql.y" { yyval.string = SQL_getstring( &yyvsp[0].str ); ;} break; case 63: -#line 593 "./sql.y" +#line 592 "./sql.y" { yyval.string = SQL_getstring( &yyvsp[0].str ); ;} @@ -2051,7 +2050,7 @@ yyreduce: } /* Line 999 of yacc.c. */ -#line 2055 "sql.tab.c" +#line 2054 "sql.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -2257,7 +2256,7 @@ yyreturn: } -#line 598 "./sql.y" +#line 597 "./sql.y" int SQL_lex( void *SQL_lval, SQL_input *sql) diff --git a/reactos/lib/msi/sql.y b/reactos/lib/msi/sql.y index 892dd9ad9e9..ca918500245 100644 --- a/reactos/lib/msi/sql.y +++ b/reactos/lib/msi/sql.y @@ -499,18 +499,17 @@ constlist: } $$ = vals; } - | constlist TK_COMMA const_val + | const_val TK_COMMA constlist { value_list *vals; vals = HeapAlloc( GetProcessHeap(), 0, sizeof *vals ); if( vals ) { - vals->val = $3; - vals->next = NULL; + vals->val = $1; + vals->next = $3; } - $1->next = vals; - $$ = $1; + $$ = vals; } ; diff --git a/reactos/lib/msi/string.c b/reactos/lib/msi/string.c index bec268fe11a..cf59b04b028 100644 --- a/reactos/lib/msi/string.c +++ b/reactos/lib/msi/string.c @@ -393,8 +393,7 @@ UINT msi_string2idA( string_table *st, LPCSTR buffer, UINT *id ) MultiByteToWideChar( st->codepage, 0, buffer, -1, str, sz ); r = msi_string2idW( st, str, id ); - if( str ) - HeapFree( GetProcessHeap(), 0, str ); + HeapFree( GetProcessHeap(), 0, str ); return r; } diff --git a/reactos/lib/msi/suminfo.c b/reactos/lib/msi/suminfo.c index e8c16c625b0..fbc39d0f598 100644 --- a/reactos/lib/msi/suminfo.c +++ b/reactos/lib/msi/suminfo.c @@ -67,8 +67,7 @@ UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase, ret = MsiGetSummaryInformationW(hDatabase, szwDatabase, uiUpdateCount, phSummaryInfo); - if( szwDatabase ) - HeapFree( GetProcessHeap(), 0, szwDatabase ); + HeapFree( GetProcessHeap(), 0, szwDatabase ); return ret; } @@ -225,9 +224,72 @@ UINT WINAPI MsiSummaryInfoGetPropertyW( MSIHANDLE hSummaryInfo, UINT uiProperty, UINT *puiDataType, INT *piValue, FILETIME *pftValue, LPWSTR szValueBuf, DWORD *pcchValueBuf) { - FIXME("%ld %d %p %p %p %p %p\n", + MSISUMMARYINFO *suminfo; + HRESULT r; + PROPSPEC spec; + PROPVARIANT var; + + TRACE("%ld %d %p %p %p %p %p\n", hSummaryInfo, uiProperty, puiDataType, piValue, pftValue, szValueBuf, pcchValueBuf); - + + suminfo = msihandle2msiinfo( hSummaryInfo, MSIHANDLETYPE_SUMMARYINFO ); + if( !suminfo ) + return ERROR_INVALID_HANDLE; + + spec.ulKind = PRSPEC_PROPID; + spec.u.propid = uiProperty; + + r = IPropertyStorage_ReadMultiple( suminfo->propstg, 1, &spec, &var); + if( FAILED(r) ) + return ERROR_FUNCTION_FAILED; + + if( puiDataType ) + *puiDataType = var.vt; + + switch( var.vt ) + { + case VT_I4: + if( piValue ) + *piValue = var.u.lVal; + break; + case VT_LPSTR: + if( pcchValueBuf && szValueBuf ) + { + MultiByteToWideChar(CP_ACP, 0, var.u.pszVal, -1, szValueBuf, + *pcchValueBuf ); + *pcchValueBuf = lstrlenA( var.u.pszVal ); + } + break; + case VT_FILETIME: + if( pftValue ) + memcpy(pftValue, &var.u.filetime, sizeof (FILETIME) ); + break; + case VT_EMPTY: + break; + default: + FIXME("Unknown property variant type\n"); + break; + } + + return ERROR_SUCCESS; +} + +UINT WINAPI MsiSummaryInfoSetPropertyA( MSIHANDLE hSummaryInfo, UINT uiProperty, + UINT uiDataType, INT iValue, + FILETIME* pftValue, LPSTR szValue) +{ + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiSummaryInfoSetPropertyW( MSIHANDLE hSummaryInfo, UINT uiProperty, + UINT uiDataType, INT iValue, + FILETIME* pftValue, LPWSTR szValue) +{ + return ERROR_CALL_NOT_IMPLEMENTED; +} + +UINT WINAPI MsiSummaryInfoPersist(MSIHANDLE hSummaryInfo) +{ return ERROR_CALL_NOT_IMPLEMENTED; } diff --git a/reactos/lib/msi/table.c b/reactos/lib/msi/table.c index 52a5f01652a..5e1891b04fd 100644 --- a/reactos/lib/msi/table.c +++ b/reactos/lib/msi/table.c @@ -196,8 +196,8 @@ void enum_stream_names( IStorage *stg ) if( FAILED( r ) || !count ) break; decode_streamname( stat.pwcsName, name ); - ERR("stream %2ld -> %s %s\n", n, - debugstr_w(stat.pwcsName), debugstr_w(name) ); + TRACE("stream %2ld -> %s %s\n", n, + debugstr_w(stat.pwcsName), debugstr_w(name) ); n++; } @@ -356,12 +356,12 @@ static UINT write_stream_data( IStorage *stg, LPCWSTR stname, encname = encode_streamname(TRUE, stname ); r = IStorage_OpenStream( stg, encname, NULL, STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0, &stm); - HeapFree( GetProcessHeap(), 0, encname ); if( FAILED(r) ) { r = IStorage_CreateStream( stg, encname, STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stm); } + HeapFree( GetProcessHeap(), 0, encname ); if( FAILED( r ) ) { ERR("open stream failed r = %08lx\n",r); @@ -408,7 +408,7 @@ UINT read_table_from_storage( MSIDATABASE *db, LPCWSTR name, MSITABLE **ptable) TRACE("%s\n",debugstr_w(name)); - /* non-existing tables should be interpretted as empty tables */ + /* nonexistent tables should be interpreted as empty tables */ t = HeapAlloc( GetProcessHeap(), 0, sizeof (MSITABLE) + lstrlenW(name)*sizeof (WCHAR) ); if( !t ) @@ -747,10 +747,8 @@ UINT load_string_table( MSIDATABASE *db ) ret = ERROR_SUCCESS; end: - if( pool ) - HeapFree( GetProcessHeap(), 0, pool ); - if( data ) - HeapFree( GetProcessHeap(), 0, data ); + HeapFree( GetProcessHeap(), 0, pool ); + HeapFree( GetProcessHeap(), 0, data ); return ret; } @@ -830,10 +828,8 @@ UINT save_string_table( MSIDATABASE *db ) ret = ERROR_SUCCESS; err: - if( data ) - HeapFree( GetProcessHeap(), 0, data ); - if( pool ) - HeapFree( GetProcessHeap(), 0, pool ); + HeapFree( GetProcessHeap(), 0, data ); + HeapFree( GetProcessHeap(), 0, pool ); return ret; } @@ -1288,9 +1284,10 @@ static UINT TABLE_get_column_info( struct tagMSIVIEW *view, return ERROR_SUCCESS; } -static UINT TABLE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT TABLE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, + MSIRECORD *rec) { - FIXME("%p %d %ld\n", view, eModifyMode, hrec ); + FIXME("%p %d %p\n", view, eModifyMode, rec ); return ERROR_CALL_NOT_IMPLEMENTED; } diff --git a/reactos/lib/msi/update.c b/reactos/lib/msi/update.c index 99e5f6b6667..39c19d8d154 100644 --- a/reactos/lib/msi/update.c +++ b/reactos/lib/msi/update.c @@ -151,11 +151,12 @@ static UINT UPDATE_get_column_info( struct tagMSIVIEW *view, return wv->ops->get_column_info( wv, n, name, type ); } -static UINT UPDATE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT UPDATE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, + MSIRECORD *rec ) { MSIUPDATEVIEW *uv = (MSIUPDATEVIEW*)view; - TRACE("%p %d %ld\n", uv, eModifyMode, hrec ); + TRACE("%p %d %p\n", uv, eModifyMode, rec ); return ERROR_FUNCTION_FAILED; } diff --git a/reactos/lib/msi/where.c b/reactos/lib/msi/where.c index 9ae20480cb9..2754f996b5b 100644 --- a/reactos/lib/msi/where.c +++ b/reactos/lib/msi/where.c @@ -269,8 +269,7 @@ static UINT WHERE_close( struct tagMSIVIEW *view ) if( !wv->table ) return ERROR_FUNCTION_FAILED; - if( wv->reorder ) - HeapFree( GetProcessHeap(), 0, wv->reorder ); + HeapFree( GetProcessHeap(), 0, wv->reorder ); wv->reorder = NULL; return wv->table->ops->close( wv->table ); @@ -308,16 +307,17 @@ static UINT WHERE_get_column_info( struct tagMSIVIEW *view, return wv->table->ops->get_column_info( wv->table, n, name, type ); } -static UINT WHERE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIHANDLE hrec) +static UINT WHERE_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, + MSIRECORD *rec ) { MSIWHEREVIEW *wv = (MSIWHEREVIEW*)view; - TRACE("%p %d %ld\n", wv, eModifyMode, hrec ); + TRACE("%p %d %p\n", wv, eModifyMode, rec ); if( !wv->table ) return ERROR_FUNCTION_FAILED; - return wv->table->ops->modify( wv->table, eModifyMode, hrec ); + return wv->table->ops->modify( wv->table, eModifyMode, rec ); } static UINT WHERE_delete( struct tagMSIVIEW *view ) @@ -329,8 +329,7 @@ static UINT WHERE_delete( struct tagMSIVIEW *view ) if( wv->table ) wv->table->ops->delete( wv->table ); - if( wv->reorder ) - HeapFree( GetProcessHeap(), 0, wv->reorder ); + HeapFree( GetProcessHeap(), 0, wv->reorder ); wv->reorder = NULL; wv->row_count = 0; From aacb7a22f6dc932424a7cc97d9ad347e02f2ae74 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Sat, 12 Feb 2005 23:11:10 +0000 Subject: [PATCH 009/248] Fixed a copy-n-paste typo in usbuhci ("Type"->"Image" reg key), also adding ohci driver entry (loads in VirtualPC). svn path=/trunk/; revision=13519 --- reactos/bootdata/hivesys.inf | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/reactos/bootdata/hivesys.inf b/reactos/bootdata/hivesys.inf index b3e032acfd2..2384615603f 100644 --- a/reactos/bootdata/hivesys.inf +++ b/reactos/bootdata/hivesys.inf @@ -573,7 +573,7 @@ HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Type",0x00010001,0x00000001 HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ErrorControl",0x00010001,0x00000001 HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Start",0x00010001,0x00000003 HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Group",0x00000000,"Base" -HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Type",0x00020000,"System32\DRIVERS\usbuhci.sys" +HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ImagePath",0x00020000,"System32\DRIVERS\usbuhci.sys" HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Tag",0x00010001,0x0000000f HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","DisplayName",0x00000000,"ReactOS USB UHCI controller miniport driver" ;hard coded values for VMWARE @@ -582,6 +582,21 @@ HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci\Enum","Count",0x00010001,0x00000 HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci\Enum","NextInstance",0x00010001,0x00000001 HKLM,"SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_7112&SUBSYS_197615AD&REV_00\0000","Service",0x0000000,"usbuhci" +;USB OHCI Driver (Cromwell), especially the same name as windows OHCI miniport +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Type",0x00010001,0x00000001 +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ErrorControl",0x00010001,0x00000001 +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Start",0x00010001,0x00000003 +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Group",0x00000000,"Base" +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ImagePath",0x00020000,"System32\drivers\ohci.sys" +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Tag",0x00010001,0x0000000f +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","DisplayName",0x00000000,"ReactOS USB OHCI cromwell-type driver" +;hard coded values for Virtual PC 6/7 (Mac) +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci\Enum","0",0x00000000,"PCI\VEN_2955&DEV_6E61&SUBSYS_6E612955&REV_11\0000" +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci\Enum","Count",0x00010001,0x00000001 +HKLM,"SYSTEM\CurrentControlSet\Services\usbohci\Enum","NextInstance",0x00010001,0x00000001 +HKLM,"SYSTEM\CurrentControlSet\Enum\PCI\VEN_2955&DEV_6E61&SUBSYS_6E612955&REV_11\0000","Service",0x0000000,"usbohci" + + ; ReactOS PCNet NIC driver ; To use the AMD supplied driver change the driver name to pcntn5m.sys ; From 4ba5ab74735d9402dad9f74435343773daad2fdf Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Sat, 12 Feb 2005 23:27:27 +0000 Subject: [PATCH 010/248] Added cromwell's drivers into build/install process. Now we have two alternatives: usbport/usbXhci or usbcore/ohci.sys. With time they will be merged into one, or cromwell will be wasted and usbport/usbXhci will be written from scratch. svn path=/trunk/; revision=13520 --- reactos/drivers/usb/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/drivers/usb/Makefile b/reactos/drivers/usb/Makefile index d389c4503d3..d5fd05eb542 100644 --- a/reactos/drivers/usb/Makefile +++ b/reactos/drivers/usb/Makefile @@ -6,7 +6,7 @@ PATH_TO_TOP = ../.. include $(PATH_TO_TOP)/rules.mak -DRIVERS = usbport miniport/usbuhci miniport/usbehci miniport/usbohci usbhub usbd +DRIVERS = usbport miniport/usbuhci miniport/usbehci miniport/usbohci usbhub usbd cromwell all: $(DRIVERS) From 9f1be875f3b37802c2014454fb01b44185cbca14 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Sat, 12 Feb 2005 23:31:15 +0000 Subject: [PATCH 011/248] Some basics of driver wrapper - establish dispatch functions, a very basic AddDevice handler. Still stubs, but they will be filled with something very soon! svn path=/trunk/; revision=13521 --- reactos/drivers/usb/cromwell/host/ohci_main.c | 61 ++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/usb/cromwell/host/ohci_main.c b/reactos/drivers/usb/cromwell/host/ohci_main.c index ffb37c81999..dd52a066739 100644 --- a/reactos/drivers/usb/cromwell/host/ohci_main.c +++ b/reactos/drivers/usb/cromwell/host/ohci_main.c @@ -4,13 +4,72 @@ */ #include +#include +NTSTATUS AddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT pdo) +{ + PDEVICE_OBJECT fdo; + NTSTATUS Status; + WCHAR DeviceBuffer[20]; + UNICODE_STRING DeviceName; + + DbgPrint("ohci: AddDevice called\n"); + + /* Create a unicode device name. */ + swprintf(DeviceBuffer, L"\\Device\\usbohci"); + RtlInitUnicodeString(&DeviceName, DeviceBuffer); + + + Status = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_VIDEO, 0, FALSE,&fdo); + + if (!NT_SUCCESS(Status)) + { + DPRINT("IoCreateDevice call failed with status 0x%08x\n", Status); + return Status; + } + + return STATUS_SUCCESS; +} + +VOID DriverUnload(PDRIVER_OBJECT DriverObject) +{ + // nothing to do here yet +} + +// Dispatch PNP +NTSTATUS DispatchPnp(PDEVICE_OBJECT fdo, PIRP Irp) +{ + ULONG fcn; + PIO_STACK_LOCATION stack; + + stack = IoGetCurrentIrpStackLocation(Irp); + fcn = stack->MinorFunction; + DbgPrint("IRP_MJ_PNP, fcn=%d\n", fcn); + + if (fcn == IRP_MN_REMOVE_DEVICE) + { + IoDeleteDevice(fdo); + } + + return STATUS_SUCCESS; +} + +NTSTATUS DispatchPower(PDEVICE_OBJECT fido, PIRP Irp) +{ + DbgPrint("IRP_MJ_POWER dispatch\n"); + return STATUS_SUCCESS; +} /* * Standard DriverEntry method. */ NTSTATUS STDCALL -DriverEntry(IN PVOID Context1, IN PVOID Context2) +DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegPath) { + DriverObject->DriverUnload = DriverUnload; + DriverObject->DriverExtension->AddDevice = AddDevice; + DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp; + DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower; + return STATUS_SUCCESS; } From 9e0d35856430caa9221af133ab673f26bc3fa50f Mon Sep 17 00:00:00 2001 From: Steven Edwards Date: Sun, 13 Feb 2005 02:11:22 +0000 Subject: [PATCH 012/248] Remove the old control apps from rosapps/control. svn path=/trunk/; revision=13522 --- rosapps/control/.cvsignore | 17 ---- rosapps/control/Makefile | 29 ------- rosapps/control/control.c | 116 ------------------------- rosapps/control/control.rc | 148 -------------------------------- rosapps/control/params.h | 46 ---------- rosapps/control/res/control.ico | Bin 1078 -> 0 bytes rosapps/control/res/small.ico | Bin 318 -> 0 bytes rosapps/control/resource.h | 19 ---- 8 files changed, 375 deletions(-) delete mode 100644 rosapps/control/.cvsignore delete mode 100644 rosapps/control/Makefile delete mode 100644 rosapps/control/control.c delete mode 100644 rosapps/control/control.rc delete mode 100644 rosapps/control/params.h delete mode 100644 rosapps/control/res/control.ico delete mode 100644 rosapps/control/res/small.ico delete mode 100644 rosapps/control/resource.h diff --git a/rosapps/control/.cvsignore b/rosapps/control/.cvsignore deleted file mode 100644 index 954ada33419..00000000000 --- a/rosapps/control/.cvsignore +++ /dev/null @@ -1,17 +0,0 @@ -*.sys -*.exe -*.dll -*.cpl -*.a -*.o -*.d -*.coff -*.dsp -*.dsw -*.aps -*.ncb -*.opt -*.sym -*.plg -*.bak -*.map diff --git a/rosapps/control/Makefile b/rosapps/control/Makefile deleted file mode 100644 index d68c810afc8..00000000000 --- a/rosapps/control/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# $Id: Makefile,v 1.3 2003/01/15 19:55:28 robd Exp $ - -PATH_TO_TOP = ../../reactos - -TOOLS_PATH = $(PATH_TO_TOP)/tools - -TARGET_NORC = yes - -TARGET_TYPE = program - -TARGET_APPTYPE = windows - -TARGET_NAME = control - -TARGET_SDKLIBS = shell32.a - -TARGET_OBJECTS = $(TARGET_NAME).o - -TARGET_CLEAN = $(TARGET_OBJECTS) - -include $(PATH_TO_TOP)/rules.mak - -include $(TOOLS_PATH)/helper.mk - -MK_CFLAGS = -D_UNICODE -DUNICODE -MK_CPPFLAGS = -D_UNICODE -DUNICODE -MK_RCFLAGS = -D_UNICODE -DUNICODE - -# EOF diff --git a/rosapps/control/control.c b/rosapps/control/control.c deleted file mode 100644 index 6737efabe32..00000000000 --- a/rosapps/control/control.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Control - * Copyright (C) 1998 by Marcel Baur - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -/* - * Portions copyright Robert Dickenson , August 15, 2002. - */ - -#define WIN32_LEAN_AND_MEAN -#include -#include -#include -#include "params.h" - -//typedef void (WINAPI *CONTROL_RUNDLL)(HWND hWnd, HINSTANCE hInst, LPCTSTR cmd, DWORD nCmdShow); -typedef void (*CONTROL_RUNDLL)(HWND hWnd, HINSTANCE hInst, LPCTSTR cmd, DWORD nCmdShow); - -const TCHAR szLibName[] = _T("ROSHEL32.DLL"); -#ifdef UNICODE -const char szProcName[] = "Control_RunDLLW"; -#else -const char szProcName[] = "Control_RunDLLA"; -#endif - -#ifndef __GNUC__ -#ifdef UNICODE -extern void __declspec(dllimport) Control_RunDLLW(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow); -#else -extern void __declspec(dllimport) Control_RunDLLA(HWND hWnd, HINSTANCE hInst, LPCSTR cmd, DWORD nCmdShow); -#endif -#endif - -#ifdef UNICODE -#define Control_RunDLL Control_RunDLLW -#else -#define Control_RunDLL Control_RunDLLA -#endif - - -void launch(LPTSTR lpCmdLine) -{ -#if 0 - HMODULE hShell32; - CONTROL_RUNDLL pControl_RunDLL; - - hShell32 = LoadLibrary(szLibName); - if (hShell32) { - pControl_RunDLL = (CONTROL_RUNDLL)(FARPROC)GetProcAddress(hShell32, szProcName); - if (pControl_RunDLL) { - pControl_RunDLL(GetDesktopWindow(), 0, lpCmdLine, SW_SHOW); - } else { - _tprintf(_T("ERROR: failed to Get Procedure Address for %s in Library %s\n"), szLibName, szProcName); - } - FreeLibrary(hShell32); - } else { - _tprintf(_T("ERROR: failed to Load Library %s\n"), szLibName); - } -#else - Control_RunDLL(GetDesktopWindow(), 0, lpCmdLine, SW_SHOW); -#endif - exit(0); -} - -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, CHAR *szParam, INT argc) -{ - TCHAR szParams[255]; - LPTSTR pParams = GetCommandLine(); - lstrcpy(szParams, pParams); - CharUpper(szParams); - - _tprintf(_T("Control Panel Launcher...\n")); - - switch (--argc) { - case 0: /* no parameters - pop up whole "Control Panel" by default */ - launch(_T("")); - break; - case 1: /* check for optional parameter */ - if (!lstrcmp(szParams,szP_DESKTOP)) - launch(szC_DESKTOP); - if (!lstrcmp(szParams,szP_COLOR)) - launch(szC_COLOR); - if (!lstrcmp(szParams,szP_DATETIME)) - launch(szC_DATETIME); - if (!lstrcmp(szParams,szP_DESKTOP)) - launch(szC_DESKTOP); - if (!lstrcmp(szParams,szP_INTERNATIONAL)) - launch(szC_INTERNATIONAL); - if (!lstrcmp(szParams,szP_KEYBOARD)) - launch(szC_KEYBOARD); - if (!lstrcmp(szParams,szP_MOUSE)) - launch(szC_MOUSE); - if (!lstrcmp(szParams,szP_PORTS)) - launch(szC_PORTS); - if (!lstrcmp(szParams,szP_PRINTERS)) - launch(szC_PRINTERS); - /* try to launch if a .cpl file is given directly */ - launch(szParams); - break; - default: _tprintf(_T("Syntax error.")); - } - return 0; -} diff --git a/rosapps/control/control.rc b/rosapps/control/control.rc deleted file mode 100644 index d6109e679f0..00000000000 --- a/rosapps/control/control.rc +++ /dev/null @@ -1,148 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#define APSTUDIO_HIDDEN_SYMBOLS -#include "windows.h" -#undef APSTUDIO_HIDDEN_SYMBOLS -#include "resource.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""resource.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -(1) VERSIONINFO - FILEVERSION 0,0,19,162 - PRODUCTVERSION 0,0,19,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "Absolutely no warranties whatsoever - Use at your own risk\0" - VALUE "CompanyName", "ReactOS Development Team\0" - VALUE "FileDescription", "ReactOS Control Panel by Robert Dickenson\0" - VALUE "FileVersion", "1, 0, 0, 1\0" - VALUE "InternalName", "control\0" - VALUE "LegalCopyright", "Copyright © 2002 Robert Dickenson\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "control.exe\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "ReactOS Operating System\0" - VALUE "ProductVersion", "0.0.19\0" - VALUE "SpecialBuild", "Non-versioned Development Beta Release\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0xc09, 1200 - END -END - -#endif // !_MAC - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_APP_TITLE "ReactOS Control Panel" - IDC_CONTROL "CONTROL" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (Australia) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (Australia) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/rosapps/control/params.h b/rosapps/control/params.h deleted file mode 100644 index ae7637a2c3b..00000000000 --- a/rosapps/control/params.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Control - * Copyright (C) 1998 by Marcel Baur - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/* alphabetical list of recognized optional command line parameters */ - -#define szP_COLOR _T("COLOR") -#define szP_DATETIME _T("DATE/TIME") -#define szP_DESKTOP _T("DESKTOP") -#define szP_INTERNATIONAL _T("INTERNATIONAL") -#define szP_KEYBOARD _T("KEYBOARD") -#define szP_MOUSE _T("MOUSE") -#define szP_PORTS _T("PORTS") -#define szP_PRINTERS _T("PRINTERS") - - -/* alphabetical list of appropriate commands to execute */ - -#define szEXEC_PREFIX _T("rundll32.exe") -#define szEXEC_ARGS _T("Shell32.dll,Control_RunDLL _T(") - -#define szC_COLOR _T("desk.cpl,,2") -#define szC_DATETIME _T("datetime.cpl") -#define szC_DESKTOP _T("desk.cpl") -#define szC_FONTS _T("main.cpl @3") -#define szC_INTERNATIONAL _T("intl.cpl") -#define szC_KEYBOARD _T("main.cpl @1") -#define szC_MOUSE _T("main.cpl") -#define szC_PORTS _T("sysdm.cpl,,1") -#define szC_PRINTERS _T("main.cpl @2") - diff --git a/rosapps/control/res/control.ico b/rosapps/control/res/control.ico deleted file mode 100644 index 386883523bcc032db77b69b047cbc5c15ae3b7fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH_K@!3s3`IZHwe$$AoF2oYaWszOk{jR)NR>_(PRDWOZgV)&%Zp6VccBVa2?uQ&sh9LW;!?J w2dwKn!S@jnH5GJS10MR3&V{nkc?%F^XS#jrb=7ItXV>BJ*yg?&H~)SR4}%AClK=n! diff --git a/rosapps/control/res/small.ico b/rosapps/control/res/small.ico deleted file mode 100644 index 8f94d9aa8285725af1920f17fa4ba90a7dad97fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmbu1u@S&92m|H2^tei$GGj6tBe4N_?3C#ONWzj2Y0z^{b=^ZcTR}S)7&>4n7JrdT ujNG@ttiTl!1hqz0y#czdCNotgVrj}ml}kwpjQ> Date: Sun, 13 Feb 2005 13:03:44 +0000 Subject: [PATCH 013/248] fixed returning the reference to the token in SeCopyClientToken() and probe pointer when neccessary svn path=/trunk/; revision=13524 --- reactos/ntoskrnl/se/token.c | 40 +++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/reactos/ntoskrnl/se/token.c b/reactos/ntoskrnl/se/token.c index 048e8dfc332..c0cbb4ed869 100644 --- a/reactos/ntoskrnl/se/token.c +++ b/reactos/ntoskrnl/se/token.c @@ -131,13 +131,32 @@ SepDuplicateToken(PTOKEN Token, KPROCESSOR_MODE PreviousMode, PTOKEN* NewAccessToken) { - NTSTATUS Status; ULONG uLength; ULONG i; - PVOID EndMem; - PTOKEN AccessToken; + NTSTATUS Status; + + if(PreviousMode != KernelMode) + { + Status = STATUS_SUCCESS; + _SEH_TRY + { + ProbeForWrite(NewAccessToken, + sizeof(TOKEN), + sizeof(ULONG)); + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } Status = ObCreateObject(PreviousMode, SepTokenObjectType, @@ -244,8 +263,17 @@ SepDuplicateToken(PTOKEN Token, if ( NT_SUCCESS(Status) ) { - *NewAccessToken = AccessToken; - return(STATUS_SUCCESS); + _SEH_TRY + { + *NewAccessToken = AccessToken; + Status = STATUS_SUCCESS; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + return Status; } ObDereferenceObject(AccessToken); @@ -320,7 +348,7 @@ SeCopyClientToken(PACCESS_TOKEN Token, TokenImpersonation, Level, PreviousMode, - (PTOKEN*)&NewToken); + (PTOKEN*)NewToken); return(Status); } From b331ffc1b7a8ef84ceeb090a2d30a7dce5668825 Mon Sep 17 00:00:00 2001 From: Klemens Friedl Date: Sun, 13 Feb 2005 13:49:55 +0000 Subject: [PATCH 014/248] VMware SVGA Wizard: * add title and subtitle (wizard window) * center the wizard window * update english and german language files svn path=/trunk/; revision=13525 --- reactos/subsys/system/vmwinst/De.rc | 21 +++- reactos/subsys/system/vmwinst/En.rc | 21 +++- reactos/subsys/system/vmwinst/Es.rc | 21 +++- reactos/subsys/system/vmwinst/vmwinst.c | 136 +++++++++++++++++++---- reactos/subsys/system/vmwinst/vmwinst.h | 55 +++++---- reactos/subsys/system/vmwinst/vmwinst.rc | 13 ++- 6 files changed, 219 insertions(+), 48 deletions(-) diff --git a/reactos/subsys/system/vmwinst/De.rc b/reactos/subsys/system/vmwinst/De.rc index 5a7443e6aa4..87d879b48ea 100644 --- a/reactos/subsys/system/vmwinst/De.rc +++ b/reactos/subsys/system/vmwinst/De.rc @@ -5,8 +5,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Grafikreiberinstallation" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "Das ReactOS Setup hat festgestellt, das Sie ReactOS in VMware(r) installieren.", -1, 115, 8, 160, 24 - LTEXT "Wenn Sie den VMware(r) SVGA Treiber installieren möchten, klicken Sie auf 'Weiter', ansonsten auf 'Abbrechen'.", -1, 115, 140, 160, 17 + LTEXT "Das ReactOS Setup hat festgestellt, das Sie ReactOS in VMware(r) installieren.", -1, 100, 8, 160, 24 + LTEXT "Wenn Sie den VMware(r) SVGA Treiber installieren möchten, klicken Sie auf 'Weiter', ansonsten auf 'Abbrechen'.", -1, 100, 140, 160, 17 END IDD_INSERT_VMWARE_TOOLS DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT @@ -111,3 +111,20 @@ BEGIN IDS_ENABLINGDRIVER "Aktiviere den VMware(r) SVGA driver..." END +STRINGTABLE +BEGIN + IDD_INSERT_VMWARE_TOOLSTITLE "VMware (r) SVGA Treiber Installationsassistent" + IDD_INSERT_VMWARE_TOOLSSUBTITLE "Bitte legen Sie die VMware-Tool CD-Rom ein." + IDD_INSTALLING_VMWARE_TOOLSTITLE "VMware (r) SVGA Treiber Installationsassistent" + IDD_INSTALLING_VMWARE_TOOLSSUBTITLE "Suchen und kopieren des VMware (r) SVGA Treibers." + IDD_CONFIGTITLE "VMware (r) SVGA Treiber Installationsassistent" + IDD_CONFIGSUBTITLE "Wählen Sie die Bildschrimauflösung aus." + IDD_INSTALLATION_FAILEDTITLE "VMware (r) SVGA Treiber Installationsassistent" + IDD_INSTALLATION_FAILEDSUBTITLE "Die VMware (r) SVGA Treiber installation ist fehlgeschlagen." + IDD_CHOOSEACTIONTITLE "VMware (r) SVGA Treiber Installationsassistent" + IDD_CHOOSEACTIONSUBTITLE "Wählen Sie eine Option aus." + IDD_SELECTDRIVERTITLE "VMware (r) SVGA Treiber Installationsassistent" + IDD_SELECTDRIVERSUBTITLE "Wählen Sie einen Treiber aus." + IDD_DOUNINSTALLTITLE "VMware (r) SVGA Treiber Installationsassistent" + IDD_DOUNINSTALLSUBTITLE "De-Installieren des Treibers." +END diff --git a/reactos/subsys/system/vmwinst/En.rc b/reactos/subsys/system/vmwinst/En.rc index 3f55f20e1ea..f923d7234e1 100644 --- a/reactos/subsys/system/vmwinst/En.rc +++ b/reactos/subsys/system/vmwinst/En.rc @@ -5,8 +5,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Video Driver Installation" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "The ReactOS setup detected that you run ReactOS inside of VMware(r).", -1, 115, 8, 160, 24 - LTEXT "If you like to install the VMware(r) SVGA driver click 'Next', otherwise click 'Cancel'.", -1, 115, 140, 160, 17 + LTEXT "The ReactOS setup detected that you run ReactOS inside of VMware(r).", -1, 100, 8, 160, 24 + LTEXT "If you like to install the VMware(r) SVGA driver click 'Next', otherwise click 'Cancel'.", -1, 100, 140, 160, 17 END IDD_INSERT_VMWARE_TOOLS DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT @@ -111,3 +111,20 @@ BEGIN IDS_ENABLINGDRIVER "Enabling VMware(r) SVGA driver..." END +STRINGTABLE +BEGIN + IDD_INSERT_VMWARE_TOOLSTITLE "VMware (r) SVGA driver installation wizard" + IDD_INSERT_VMWARE_TOOLSSUBTITLE "Please insert the VMware tool CD-Rom." + IDD_INSTALLING_VMWARE_TOOLSTITLE "VMware (r) SVGA driver installation wizard" + IDD_INSTALLING_VMWARE_TOOLSSUBTITLE "Search and copy the VMware (r) SVGA driver." + IDD_CONFIGTITLE "VMware (r) SVGA driver installation wizard" + IDD_CONFIGSUBTITLE "Select your favorite screen resolution." + IDD_INSTALLATION_FAILEDTITLE "VMware (r) SVGA driver installation wizard" + IDD_INSTALLATION_FAILEDSUBTITLE "The VMware (r) SVGA driver installation failed." + IDD_CHOOSEACTIONTITLE "VMware (r) SVGA driver installation wizard" + IDD_CHOOSEACTIONSUBTITLE "Choose what you like to do." + IDD_SELECTDRIVERTITLE "VMware (r) SVGA driver installation wizard" + IDD_SELECTDRIVERSUBTITLE "Select a driver." + IDD_DOUNINSTALLTITLE "VMware (r) SVGA driver installation wizard" + IDD_DOUNINSTALLSUBTITLE "Uninstall the driver." +END diff --git a/reactos/subsys/system/vmwinst/Es.rc b/reactos/subsys/system/vmwinst/Es.rc index 462b1b305c1..ff512a0aa0f 100644 --- a/reactos/subsys/system/vmwinst/Es.rc +++ b/reactos/subsys/system/vmwinst/Es.rc @@ -5,8 +5,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Instalación del Controlador de Video" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "El instalador de ReactOS ha detectado que husted está ejecutando ReactOS sobre el emulador VMware(r).", -1, 115, 8, 160, 24 - LTEXT "Si husted desea instalar el controlador SVGA VMware(r), haga click en 'Siguiente', de lo contrario haga click en 'Cancelar'.", -1, 115, 140, 160, 17 + LTEXT "El instalador de ReactOS ha detectado que husted está ejecutando ReactOS sobre el emulador VMware(r).", -1, 100, 8, 160, 24 + LTEXT "Si husted desea instalar el controlador SVGA VMware(r), haga click en 'Siguiente', de lo contrario haga click en 'Cancelar'.", -1, 100, 140, 160, 17 END IDD_INSERT_VMWARE_TOOLS DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT @@ -111,3 +111,20 @@ BEGIN IDS_ENABLINGDRIVER "Enabling VMware(r) SVGA driver..." END +STRINGTABLE +BEGIN + IDD_INSERT_VMWARE_TOOLSTITLE "VMware (r) SVGA driver installation wizard" + IDD_INSERT_VMWARE_TOOLSSUBTITLE "Please insert the VMware tool CD-Rom." + IDD_INSTALLING_VMWARE_TOOLSTITLE "VMware (r) SVGA driver installation wizard" + IDD_INSTALLING_VMWARE_TOOLSSUBTITLE "Search and copy the VMware (r) SVGA driver." + IDD_CONFIGTITLE "VMware (r) SVGA driver installation wizard" + IDD_CONFIGSUBTITLE "Select your favorite screen resolution." + IDD_INSTALLATION_FAILEDTITLE "VMware (r) SVGA driver installation wizard" + IDD_INSTALLATION_FAILEDSUBTITLE "The VMware (r) SVGA driver installation failed." + IDD_CHOOSEACTIONTITLE "VMware (r) SVGA driver installation wizard" + IDD_CHOOSEACTIONSUBTITLE "Choose what you like to do." + IDD_SELECTDRIVERTITLE "VMware (r) SVGA driver installation wizard" + IDD_SELECTDRIVERSUBTITLE "Select a driver." + IDD_DOUNINSTALLTITLE "VMware (r) SVGA driver installation wizard" + IDD_DOUNINSTALLSUBTITLE "Uninstall the driver." +END diff --git a/reactos/subsys/system/vmwinst/vmwinst.c b/reactos/subsys/system/vmwinst/vmwinst.c index 3af6cbdc0a2..23309f6e2b7 100644 --- a/reactos/subsys/system/vmwinst/vmwinst.c +++ b/reactos/subsys/system/vmwinst/vmwinst.c @@ -24,6 +24,7 @@ * PROJECT: ReactOS VMware(r) driver installation utility * FILE: subsys/system/vmwinst/vmwinst.c * PROGRAMMERS: Thomas Weidenmueller (w3seek@users.sourceforge.net) + * Klemens Friedl (frik85@hotmail.com) */ #include #include @@ -132,6 +133,30 @@ FileExists(WCHAR *Path, WCHAR *File) return TRUE; } +static VOID +CenterWindow(HWND hWnd) +{ + HWND hWndParent; + RECT rcParent; + RECT rcWindow; + + hWndParent = GetParent(hWnd); + if (hWndParent == NULL) + hWndParent = GetDesktopWindow(); + + GetWindowRect(hWndParent, &rcParent); + GetWindowRect(hWnd, &rcWindow); + + SetWindowPos(hWnd, + HWND_TOP, + ((rcParent.right - rcParent.left) - (rcWindow.right - rcWindow.left)) / 2, + ((rcParent.bottom - rcParent.top) - (rcWindow.bottom - rcWindow.top)) / 2, + 0, + 0, + SWP_NOSIZE); +} + + /* Copy file */ BOOL InstallFile(WCHAR *Destination, WCHAR *File) @@ -383,6 +408,12 @@ PageWelcomeProc( { case WM_NOTIFY: { + HWND hwndControl; + + /* Center the wizard window */ + hwndControl = GetParent(hwndDlg); + CenterWindow (hwndControl); + LPNMHDR pnmh = (LPNMHDR)lParam; switch(pnmh->code) { @@ -397,6 +428,7 @@ PageWelcomeProc( { if(!EnableVmwareDriver(FALSE, FALSE, TRUE)) { + WCHAR Msg[1024]; LoadString(hAppInstance, IDS_FAILEDTOACTIVATEDRIVER, Msg, sizeof(Msg) / sizeof(WCHAR)); MessageBox(GetParent(hwndDlg), Msg, NULL, MB_ICONWARNING); @@ -728,6 +760,12 @@ PageConfigProc( } case WM_NOTIFY: { + HWND hwndControl; + + /* Center the wizard window */ + hwndControl = GetParent(hwndDlg); + CenterWindow (hwndControl); + LPNMHDR pnmh = (LPNMHDR)lParam; switch(pnmh->code) { @@ -969,33 +1007,92 @@ PageDoUninstallProc( static LONG CreateWizard(VOID) { - PROPSHEETPAGE psp[8]; PROPSHEETHEADER psh; + HPROPSHEETPAGE ahpsp[8]; + PROPSHEETPAGE psp; WCHAR Caption[1024]; LoadString(hAppInstance, IDS_WIZARD_NAME, Caption, sizeof(Caption) / sizeof(TCHAR)); - - ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); + + /* Create the Welcome page */ + ZeroMemory (&psp, sizeof(PROPSHEETPAGE)); + psp.dwSize = sizeof(PROPSHEETPAGE); + psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; + psp.hInstance = hAppInstance; + psp.pfnDlgProc = PageWelcomeProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_WELCOMEPAGE); + ahpsp[0] = CreatePropertySheetPage(&psp); + + /* Create the INSERT_VMWARE_TOOLS page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_INSERT_VMWARE_TOOLSTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_INSERT_VMWARE_TOOLSSUBTITLE); + psp.pszTemplate = MAKEINTRESOURCE(IDD_INSERT_VMWARE_TOOLS); + psp.pfnDlgProc = PageInsertDiscProc; + ahpsp[1] = CreatePropertySheetPage(&psp); + + /* Create the INSTALLING_VMWARE_TOOLS page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_INSTALLING_VMWARE_TOOLSTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_INSTALLING_VMWARE_TOOLSSUBTITLE); + psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLING_VMWARE_TOOLS); + psp.pfnDlgProc = PageInstallingProc; + ahpsp[2] = CreatePropertySheetPage(&psp); + + /* Create the CONFIG page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_CONFIGTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_CONFIGSUBTITLE); + psp.pfnDlgProc = PageConfigProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_CONFIG); + ahpsp[3] = CreatePropertySheetPage(&psp); + + /* Create the INSTALLATION_FAILED page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_INSTALLATION_FAILEDTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_INSTALLATION_FAILEDSUBTITLE); + psp.pfnDlgProc = PageInstallFailedProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLATION_FAILED); + ahpsp[4] = CreatePropertySheetPage(&psp); + + /* Create the CHOOSEACTION page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_CHOOSEACTIONTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_CHOOSEACTIONSUBTITLE); + psp.pfnDlgProc = PageChooseActionProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_CHOOSEACTION); + ahpsp[5] = CreatePropertySheetPage(&psp); + + /* Create the SELECTDRIVER page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_SELECTDRIVERTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_SELECTDRIVERSUBTITLE); + psp.pfnDlgProc = PageSelectDriverProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_SELECTDRIVER); + ahpsp[6] = CreatePropertySheetPage(&psp); + + /* Create the DOUNINSTALL page */ + psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; + psp.pszHeaderTitle = MAKEINTRESOURCE(IDD_DOUNINSTALLTITLE); + psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDD_DOUNINSTALLSUBTITLE); + psp.pfnDlgProc = PageDoUninstallProc; + psp.pszTemplate = MAKEINTRESOURCE(IDD_DOUNINSTALL); + ahpsp[7] = CreatePropertySheetPage(&psp); + + /* Create the property sheet */ psh.dwSize = sizeof(PROPSHEETHEADER); - psh.dwFlags = PSH_PROPSHEETPAGE | PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER; - psh.hwndParent = NULL; + psh.dwFlags = PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER; psh.hInstance = hAppInstance; - psh.hIcon = 0; - psh.pszCaption = Caption; + psh.hwndParent = NULL; psh.nPages = 7; psh.nStartPage = (StartVMwConfigWizard ? 5 : 0); - psh.ppsp = psp; + psh.phpage = ahpsp; psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK); psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER); - - InitPropSheetPage(&psp[0], IDD_WELCOMEPAGE, PSP_HIDEHEADER, PageWelcomeProc); - InitPropSheetPage(&psp[1], IDD_INSERT_VMWARE_TOOLS, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageInsertDiscProc); - InitPropSheetPage(&psp[2], IDD_INSTALLING_VMWARE_TOOLS, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageInstallingProc); - InitPropSheetPage(&psp[3], IDD_CONFIG, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageConfigProc); - InitPropSheetPage(&psp[4], IDD_INSTALLATION_FAILED, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageInstallFailedProc); - InitPropSheetPage(&psp[5], IDD_CHOOSEACTION, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageChooseActionProc); - InitPropSheetPage(&psp[6], IDD_SELECTDRIVER, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageSelectDriverProc); - InitPropSheetPage(&psp[7], IDD_DOUNINSTALL, PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE, PageDoUninstallProc); + + /* Display the wizard */ + PropertySheet(&psh); + return (LONG)(PropertySheet(&psh) != -1); } @@ -1006,6 +1103,7 @@ WinMain(HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) { + LPTOP_LEVEL_EXCEPTION_FILTER OldHandler; int Version; WCHAR *lc; @@ -1014,7 +1112,7 @@ WinMain(HINSTANCE hInstance, /* Setup our exception "handler" ;-) */ OldHandler = SetUnhandledExceptionFilter(ExceptionHandler); - + if(!DetectVMware(&Version)) { ExitProcess(1); @@ -1044,7 +1142,7 @@ WinMain(HINSTANCE hInstance, /* Show the wizard */ CreateWizard(); - + return 2; } diff --git a/reactos/subsys/system/vmwinst/vmwinst.h b/reactos/subsys/system/vmwinst/vmwinst.h index bda52df2141..15d8ccab46a 100644 --- a/reactos/subsys/system/vmwinst/vmwinst.h +++ b/reactos/subsys/system/vmwinst/vmwinst.h @@ -10,46 +10,61 @@ #endif /* metrics */ -#define PROPSHEETWIDTH 250 -#define PROPSHEETHEIGHT 120 +#define PROPSHEETWIDTH 250 +#define PROPSHEETHEIGHT 120 #define PROPSHEETPADDING 6 -#define SYSTEM_COLUMN (18 * PROPSHEETPADDING) -#define LABELLINE(x) (((PROPSHEETPADDING + 2) * x) + (x + 2)) -#define ICONSIZE 16 +#define SYSTEM_COLUMN (18 * PROPSHEETPADDING) +#define LABELLINE(x) (((PROPSHEETPADDING + 2) * x) + (x + 2)) +#define ICONSIZE 16 /* Resource IDs */ -#define IDS_WIZARD_NAME 100 +#define IDS_WIZARD_NAME 100 #define IDS_FAILEDTOLOCATEDRIVERS 101 -#define IDS_FAILEDTOCOPYFILES 102 +#define IDS_FAILEDTOCOPYFILES 102 #define IDS_FAILEDTOACTIVATEDRIVER 103 #define IDS_FAILEDTOSELVGADRIVER 104 #define IDS_FAILEDTOSELVBEDRIVER 105 -#define IDS_UNINSTNOTICE 106 +#define IDS_UNINSTNOTICE 106 #define IDS_SEARCHINGFORCDROM 201 #define IDS_COPYINGFILES 202 #define IDS_ENABLINGDRIVER 203 -#define IDD_WELCOMEPAGE 100 -#define IDD_INSERT_VMWARE_TOOLS 101 +#define IDD_WELCOMEPAGE 100 +#define IDD_INSERT_VMWARE_TOOLS 101 #define IDD_INSTALLING_VMWARE_TOOLS 102 -#define IDD_CONFIG 103 -#define IDD_CHOOSEACTION 104 -#define IDD_SELECTDRIVER 105 -#define IDD_INSTALLATION_FAILED 106 -#define IDD_DOUNINSTALL 107 +#define IDD_CONFIG 103 +#define IDD_CHOOSEACTION 104 +#define IDD_SELECTDRIVER 105 +#define IDD_INSTALLATION_FAILED 106 +#define IDD_DOUNINSTALL 107 #define IDC_COLORQUALITY 200 #define IDC_CONFIGSETTINGS 201 #define IDC_USEOTHERDRIVER 202 -#define IDC_UNINSTALL 203 -#define IDC_VGA 204 -#define IDC_VBE 205 +#define IDC_UNINSTALL 203 +#define IDC_VGA 204 +#define IDC_VBE 205 #define IDC_INSTALLINGSTATUS 206 #define IDC_INSTALLINGPROGRESS 207 -#define IDB_WATERMARK 100 -#define IDB_HEADER 101 +#define IDB_WATERMARK 100 +#define IDB_HEADER 101 + +#define IDD_INSERT_VMWARE_TOOLSTITLE 301 +#define IDD_INSERT_VMWARE_TOOLSSUBTITLE 302 +#define IDD_INSTALLING_VMWARE_TOOLSTITLE 311 +#define IDD_INSTALLING_VMWARE_TOOLSSUBTITLE 312 +#define IDD_CONFIGTITLE 321 +#define IDD_CONFIGSUBTITLE 322 +#define IDD_INSTALLATION_FAILEDTITLE 331 +#define IDD_INSTALLATION_FAILEDSUBTITLE 332 +#define IDD_CHOOSEACTIONTITLE 341 +#define IDD_CHOOSEACTIONSUBTITLE 342 +#define IDD_SELECTDRIVERTITLE 351 +#define IDD_SELECTDRIVERSUBTITLE 352 +#define IDD_DOUNINSTALLTITLE 361 +#define IDD_DOUNINSTALLSUBTITLE 362 #endif /* __VMWINST_H */ diff --git a/reactos/subsys/system/vmwinst/vmwinst.rc b/reactos/subsys/system/vmwinst/vmwinst.rc index 6608f4bf152..4cdd70c5b44 100644 --- a/reactos/subsys/system/vmwinst/vmwinst.rc +++ b/reactos/subsys/system/vmwinst/vmwinst.rc @@ -16,7 +16,14 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US IDB_WATERMARK BITMAP "resources/watermark.bmp" IDB_HEADER BITMAP "resources/header.bmp" -#include "En.rc" -#include "Es.rc" -#include "De.rc" + +/* + * Everything specific to any language goes in one of the specific + * files. Note that you can and may override resources which also have + * a neutral version. This is to get localized bitmaps for example. + */ + +#include "En.rc" +#include "De.rc" +#include "Es.rc" From 6277bda6037d99148daa525bb5bd8a35046f3911 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 13 Feb 2005 15:38:56 +0000 Subject: [PATCH 015/248] - Changed the definition of fpos_t to a 64bit value to get binutils 2.15.94 working. svn path=/trunk/; revision=13526 --- reactos/include/msvcrt/stdio.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reactos/include/msvcrt/stdio.h b/reactos/include/msvcrt/stdio.h index 1dd886bf18e..83d10ce5de2 100644 --- a/reactos/include/msvcrt/stdio.h +++ b/reactos/include/msvcrt/stdio.h @@ -325,9 +325,10 @@ void rewind(FILE* fileRewind); * because the programmer using fgetpos and fsetpos will be setting aside * storage for fpos_t structres. Actually I tested using a byte array and * it is fairly evident that the fpos_t type is a long (in CRTDLL.DLL). - * Perhaps an unsigned long? TODO? + * Perhaps an unsigned long? TODO? It's definitely a 64-bit number in + * MSVCRT however, and for now `long long' will do. */ -typedef long fpos_t; +typedef long long fpos_t; int fgetpos(FILE* fileGetPosition, fpos_t* pfpos); int fsetpos(FILE* fileSetPosition, const fpos_t* pfpos); From 516c6b3ffc54e18f152662c61b7e6abd25bb4459 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 13 Feb 2005 17:09:10 +0000 Subject: [PATCH 016/248] - Initialize the Lock value of a stream file object. svn path=/trunk/; revision=13527 --- reactos/ntoskrnl/io/create.c | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/ntoskrnl/io/create.c b/reactos/ntoskrnl/io/create.c index 2595918670f..b507fc51f93 100644 --- a/reactos/ntoskrnl/io/create.c +++ b/reactos/ntoskrnl/io/create.c @@ -245,6 +245,7 @@ IoCreateStreamFileObject(PFILE_OBJECT FileObject, // shouldn't we initialize the lock event, and several other things here too? KeInitializeEvent(&CreatedFileObject->Event, NotificationEvent, FALSE); + KeInitializeEvent(&CreatedFileObject->Lock, SynchronizationEvent, TRUE); return CreatedFileObject; } From 6dc6d975d8a9d3e8cec8b4dd9b3c596604599a63 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 13 Feb 2005 17:10:59 +0000 Subject: [PATCH 017/248] - Partial implementation of IoSetInformation. svn path=/trunk/; revision=13528 --- reactos/ntoskrnl/io/share.c | 69 +++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/reactos/ntoskrnl/io/share.c b/reactos/ntoskrnl/io/share.c index 735ae576d69..cac060f1c21 100644 --- a/reactos/ntoskrnl/io/share.c +++ b/reactos/ntoskrnl/io/share.c @@ -327,8 +327,73 @@ IoSetInformation(IN PFILE_OBJECT FileObject, IN ULONG Length, OUT PVOID FileInformation) { - UNIMPLEMENTED; - return(STATUS_NOT_IMPLEMENTED); + IO_STATUS_BLOCK IoStatusBlock; + PIRP Irp; + PDEVICE_OBJECT DeviceObject; + PIO_STACK_LOCATION StackPtr; + NTSTATUS Status; + + ASSERT(FileInformation != NULL); + + if (FileInformationClass == FileCompletionInformation) + { + return STATUS_NOT_IMPLEMENTED; + } + + + + Status = ObReferenceObjectByPointer(FileObject, + FILE_WRITE_ATTRIBUTES, + IoFileObjectType, + KernelMode); + if (!NT_SUCCESS(Status)) + { + return(Status); + } + + DPRINT("FileObject %x\n", FileObject); + + DeviceObject = FileObject->DeviceObject; + + Irp = IoAllocateIrp(DeviceObject->StackSize, + TRUE); + if (Irp == NULL) + { + ObDereferenceObject(FileObject); + return STATUS_INSUFFICIENT_RESOURCES; + } + + /* Trigger FileObject/Event dereferencing */ + Irp->Tail.Overlay.OriginalFileObject = FileObject; + Irp->RequestorMode = KernelMode; + Irp->AssociatedIrp.SystemBuffer = FileInformation; + Irp->UserIosb = &IoStatusBlock; + Irp->UserEvent = &FileObject->Event; + Irp->Tail.Overlay.Thread = PsGetCurrentThread(); + KeResetEvent( &FileObject->Event ); + + StackPtr = IoGetNextIrpStackLocation(Irp); + StackPtr->MajorFunction = IRP_MJ_SET_INFORMATION; + StackPtr->MinorFunction = 0; + StackPtr->Flags = 0; + StackPtr->Control = 0; + StackPtr->DeviceObject = DeviceObject; + StackPtr->FileObject = FileObject; + StackPtr->Parameters.SetFile.FileInformationClass = FileInformationClass; + StackPtr->Parameters.SetFile.Length = Length; + + Status = IoCallDriver(FileObject->DeviceObject, Irp); + if (Status==STATUS_PENDING) + { + KeWaitForSingleObject(&FileObject->Event, + Executive, + KernelMode, + FileObject->Flags & FO_ALERTABLE_IO, + NULL); + Status = IoStatusBlock.Status; + } + + return Status; } From be6f66616198d2003f453d9f9cfef3488f5d48c0 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 13 Feb 2005 17:21:16 +0000 Subject: [PATCH 018/248] - Prepared cdfs for using CcInitializeCacheMap/CcUninitializeCacheMap instead of CcRosInitializeFileCache/CcRosReleaseFileCache. svn path=/trunk/; revision=13529 --- reactos/drivers/fs/cdfs/cdfs.h | 2 ++ reactos/drivers/fs/cdfs/cleanup.c | 4 ++++ reactos/drivers/fs/cdfs/fcb.c | 20 ++++++++++++++++++-- reactos/drivers/fs/cdfs/fsctl.c | 10 ++++++++-- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/fs/cdfs/cdfs.h b/reactos/drivers/fs/cdfs/cdfs.h index e62d95adbb3..692912464cf 100644 --- a/reactos/drivers/fs/cdfs/cdfs.h +++ b/reactos/drivers/fs/cdfs/cdfs.h @@ -3,6 +3,8 @@ #include +#define USE_ROS_CC_AND_FS + #define CDFS_BASIC_SECTOR 2048 #define CDFS_PRIMARY_DESCRIPTOR_LOCATION 16 #define BLOCKSIZE CDFS_BASIC_SECTOR diff --git a/reactos/drivers/fs/cdfs/cleanup.c b/reactos/drivers/fs/cdfs/cleanup.c index f19c9a607f1..3e42acb4854 100644 --- a/reactos/drivers/fs/cdfs/cleanup.c +++ b/reactos/drivers/fs/cdfs/cleanup.c @@ -54,7 +54,11 @@ CdfsCleanupFile(PDEVICE_EXTENSION DeviceExt, /* Uninitialize file cache if initialized for this file object. */ if (FileObject->SectionObjectPointer && FileObject->SectionObjectPointer->SharedCacheMap) { +#ifdef USE_ROS_CC_AND_FS CcRosReleaseFileCache (FileObject); +#else + CcUninitializeCacheMap (FileObject, NULL, NULL); +#endif } return STATUS_SUCCESS; diff --git a/reactos/drivers/fs/cdfs/fcb.c b/reactos/drivers/fs/cdfs/fcb.c index afb602b133b..28b52b152a0 100644 --- a/reactos/drivers/fs/cdfs/fcb.c +++ b/reactos/drivers/fs/cdfs/fcb.c @@ -241,6 +241,7 @@ CdfsFCBInitializeCache(PVCB Vcb, Fcb->FileObject = FileObject; Fcb->DevExt = Vcb; +#ifdef USE_ROS_AND_FS Status = CcRosInitializeFileCache(FileObject, PAGE_SIZE); if (!NT_SUCCESS(Status)) @@ -248,6 +249,13 @@ CdfsFCBInitializeCache(PVCB Vcb, DbgPrint("CcRosInitializeFileCache failed\n"); KEBUGCHECK(0); } +#else + CcInitializeCacheMap(FileObject, + (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), + FALSE, + NULL, + NULL); +#endif ObDereferenceObject(FileObject); Fcb->Flags |= FCB_CACHE_INITIALIZED; @@ -411,7 +419,6 @@ CdfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb, PFCB Fcb, PFILE_OBJECT FileObject) { - NTSTATUS Status; PCCB newCCB; newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(CCB), TAG_CCB); @@ -426,9 +433,11 @@ CdfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb, FileObject->FsContext2 = newCCB; newCCB->PtrFileObject = FileObject; Fcb->DevExt = Vcb; - + if (CdfsFCBIsDirectory(Fcb)) { +#ifdef USE_ROS_CC_AND_FS + NTSTATUS Status; Status = CcRosInitializeFileCache(FileObject, PAGE_SIZE); if (!NT_SUCCESS(Status)) @@ -436,6 +445,13 @@ CdfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb, DbgPrint("CcRosInitializeFileCache failed\n"); KEBUGCHECK(0); } +#else + CcInitializeCacheMap(FileObject, + (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), + FALSE, + NULL, + NULL); +#endif Fcb->Flags |= FCB_CACHE_INITIALIZED; } diff --git a/reactos/drivers/fs/cdfs/fsctl.c b/reactos/drivers/fs/cdfs/fsctl.c index 85f67040781..89cee57ef29 100644 --- a/reactos/drivers/fs/cdfs/fsctl.c +++ b/reactos/drivers/fs/cdfs/fsctl.c @@ -402,7 +402,7 @@ CdfsMountVolume(PDEVICE_OBJECT DeviceObject, Fcb->Entry.ExtentLocationL = 0; Fcb->Entry.DataLengthL = (DeviceExt->CdInfo.VolumeSpaceSize + DeviceExt->CdInfo.VolumeOffset) * BLOCKSIZE; - +#ifdef USE_ROS_CC_AND_FS Status = CcRosInitializeFileCache(DeviceExt->StreamFileObject, PAGE_SIZE); if (!NT_SUCCESS (Status)) @@ -410,7 +410,13 @@ CdfsMountVolume(PDEVICE_OBJECT DeviceObject, DbgPrint("CcRosInitializeFileCache failed\n"); goto ByeBye; } - +#else + CcInitializeCacheMap(DeviceExt->StreamFileObject, + (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), + TRUE, + NULL, + NULL); +#endif ExInitializeResourceLite(&DeviceExt->VcbResource); ExInitializeResourceLite(&DeviceExt->DirResource); From 11aca778bc9dc4a15405f77222cb970880cf2a2d Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 13 Feb 2005 17:23:41 +0000 Subject: [PATCH 019/248] - Prepared ntfs for using CcInitializeCacheMap/CcUninitializeCacheMap instead of CcRosInitializeFileCache/CcRosReleaseFileCache. svn path=/trunk/; revision=13530 --- reactos/drivers/fs/ntfs/fcb.c | 24 +++++++++++++++++++++--- reactos/drivers/fs/ntfs/fsctl.c | 10 ++++++++-- reactos/drivers/fs/ntfs/ntfs.h | 2 ++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/reactos/drivers/fs/ntfs/fcb.c b/reactos/drivers/fs/ntfs/fcb.c index 31029adf4e7..bda263a8584 100644 --- a/reactos/drivers/fs/ntfs/fcb.c +++ b/reactos/drivers/fs/ntfs/fcb.c @@ -155,7 +155,11 @@ NtfsReleaseFCB(PDEVICE_EXTENSION Vcb, if (Fcb->RefCount <= 0 && !NtfsFCBIsDirectory(Fcb)) { RemoveEntryList(&Fcb->FcbListEntry); +#ifdef USE_ROS_CC_AND_FS CcRosReleaseFileCache(Fcb->FileObject); +#else + CcUninitializeCacheMap (Fcb->FileObject, NULL, NULL); +#endif NtfsDestroyFCB(Fcb); } KeReleaseSpinLock(&Vcb->FcbListLock, oldIrql); @@ -241,7 +245,7 @@ NtfsFCBInitializeCache(PVCB Vcb, newCCB->PtrFileObject = FileObject; Fcb->FileObject = FileObject; Fcb->DevExt = Vcb; - +#ifdef ROS_USE_CC_AND_FS Status = CcRosInitializeFileCache(FileObject, CACHEPAGESIZE(Vcb)); if (!NT_SUCCESS(Status)) @@ -249,7 +253,13 @@ NtfsFCBInitializeCache(PVCB Vcb, DbgPrint("CcRosInitializeFileCache failed\n"); KEBUGCHECK(0); } - +#else + CcInitializeCacheMap(FileObject, + (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), + FALSE, + NULL, + NULL); +#endif ObDereferenceObject(FileObject); Fcb->Flags |= FCB_CACHE_INITIALIZED; @@ -394,7 +404,6 @@ NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb, PFCB Fcb, PFILE_OBJECT FileObject) { - NTSTATUS Status; PCCB newCCB; newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(CCB), TAG_CCB); @@ -412,6 +421,8 @@ NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb, if (!(Fcb->Flags & FCB_CACHE_INITIALIZED)) { +#ifdef ROS_USE_CC_AND_FS + NTSTATUS Status; Status = CcRosInitializeFileCache(FileObject, CACHEPAGESIZE(Vcb)); if (!NT_SUCCESS(Status)) @@ -419,6 +430,13 @@ NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb, DbgPrint("CcRosInitializeFileCache failed\n"); KEBUGCHECK(0); } +#else + CcInitializeCacheMap(FileObject, + (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), + FALSE, + NULL, + NULL); +#endif Fcb->Flags |= FCB_CACHE_INITIALIZED; } diff --git a/reactos/drivers/fs/ntfs/fsctl.c b/reactos/drivers/fs/ntfs/fsctl.c index 41071faaf20..4093cd55195 100644 --- a/reactos/drivers/fs/ntfs/fsctl.c +++ b/reactos/drivers/fs/ntfs/fsctl.c @@ -387,7 +387,7 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject, // Fcb->Entry.ExtentLocationL = 0; // Fcb->Entry.DataLengthL = DeviceExt->CdInfo.VolumeSpaceSize * BLOCKSIZE; - +#ifdef ROS_USE_CC_AND_FS Status = CcRosInitializeFileCache(DeviceExt->StreamFileObject, CACHEPAGESIZE(DeviceExt)); if (!NT_SUCCESS (Status)) @@ -395,7 +395,13 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject, DbgPrint("CcRosInitializeFileCache() failed (Status %lx)\n", Status); goto ByeBye; } - +#else + CcInitializeCacheMap(DeviceExt->StreamFileObject, + (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), + FALSE, + NULL, + NULL); +#endif ExInitializeResourceLite(&DeviceExt->DirResource); // ExInitializeResourceLite(&DeviceExt->FatResource); diff --git a/reactos/drivers/fs/ntfs/ntfs.h b/reactos/drivers/fs/ntfs/ntfs.h index 35121155a26..9c94cef55ab 100644 --- a/reactos/drivers/fs/ntfs/ntfs.h +++ b/reactos/drivers/fs/ntfs/ntfs.h @@ -3,6 +3,8 @@ #include +#define USE_ROS_CC_AND_FS + #define CACHEPAGESIZE(pDeviceExt) \ ((pDeviceExt)->NtfsInfo.BytesPerCluster > PAGE_SIZE ? \ From 4267da8a2f22859397dbae2a5a686652d11eb14f Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 13 Feb 2005 17:25:52 +0000 Subject: [PATCH 020/248] - Forgot this file. - Prepared cdfs for using CcInitializeCacheMap/CcUninitializeCacheMap instead of CcRosInitializeFileCache/CcRosReleaseFileCache. svn path=/trunk/; revision=13531 --- reactos/drivers/fs/cdfs/rw.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/reactos/drivers/fs/cdfs/rw.c b/reactos/drivers/fs/cdfs/rw.c index cf52598f6c0..82d88ad04c2 100644 --- a/reactos/drivers/fs/cdfs/rw.c +++ b/reactos/drivers/fs/cdfs/rw.c @@ -86,7 +86,15 @@ CdfsReadFile(PDEVICE_EXTENSION DeviceExt, if (FileObject->PrivateCacheMap == NULL) { +#ifdef ROS_USE_CC_AND_FS CcRosInitializeFileCache(FileObject, PAGE_SIZE); +#else + CcInitializeCacheMap(FileObject, + (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), + FALSE, + NULL, + NULL); +#endif } FileOffset.QuadPart = (LONGLONG)ReadOffset; From f4477fcb16a5b181d3e85e41ed59156bde2a94d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 13 Feb 2005 20:52:16 +0000 Subject: [PATCH 021/248] Sync to Wine-20050211 Robert Shearman - Add documentation for most Co* functions. - Move several functions into different files to group them with similar functions. - Implement CoDisconnectObject. - Change CoLockObjectExternal so that it does the correct action now and eliminate a fair few lines of now redundant code. - Rename OLE32_Dll{Register,Unregister}Server to Dll{Register,Unregister}Server. - Move OLE automation interface registration to oleaut32. - Add IRemUnknown to list of interfaces to register. - Make proxy manager use IMultiQI instead of IInternalUnknown as tests show that IInternalUnknown isn't exposed. - Implement IMultiQI on top of IRemUnknown calls. - Silence some fixmes that occur during tests and don't give us any useful information. - Fix typo in class factory proxy that caused us to use the wrong offset into the CFProxy structure, causing us to not call the outer_unknown properly. - Use InterlockedIncrement for the ipid counter instead of a critical section (suggested by Mike Hearn). - Remove a line added by a bad merge. - Implement RemUnkStub_Disconnect. - Remove all of the RPC disconnect code. - Implement IRemUnknown. - Use IRemUnknown for life-cycle management instead of the current hacks. - Generate machine-local IPIDs. - Make pipes be uniquely identified only by their IPID. - Implement table marshaling. - The apartment reference should be held while the stub manager reference is held. - Fix same apartment-unmarshal detection. - Proxies/stubs for IRemUnknown methods, based on code written by Ove Ksven. - Initialize ppv pointer in ClientIdentity_QueryInterface to NULL as apps depend on this. - Don't release IRpcProxyBuffer on ifproxy destruction - the caller will do this for us. - Make find_proxy_manager add a reference to the proxy manager and make proxy_manager_construct return an object with a valid ref-count. - Remove stray not operator to fix a memory leak / crash in proxy_manager_destroy. - More debug messages, especially on errors. - Fix ref-count leak in the Class Factory proxy. - Add a test case for IClassFactory_CreateInstance. - Split up apartment creation so that the long code paths that don't need locking no longer have locking. - Add special cases for the threads that join apartments but can't increase the refcount of the apartment. - Free TLS storage on thread destruction (including releasing the apartment the thread is in, if any, and so making another test pass). - More tests. - Change return code of CoGetPSClsid to match test result. - Do a slight hack to make IRemUnknown proxies be added after the proxy that uses them to stop them being used after they are destroyed. - Fix multiple local server connections. - The apartment reference should be held while the stub manager reference is held. - Fix same apartment-unmarshal detection. - Don't use the pipe caching code because it doesn't work correctly at the moment. - Always write disconnect reply packet, even in failure cases. - Move object-to-stub-manager mapping rule to register_ifstub. - Pass the original IID to IMarshal_UnmarshalInterface and query for the requested interface. - Unmarshaling IID_NULL means use the IID the interface was originally marshaled with. - Add code for destroying the thread-local storage data, but don't use it yet. - Don't release apartment on changing modes because we didn't add a reference anywhere. - Quieten the RPC_E_DISCONNECTED error message as it is an expected return code. - Treat IID_NULL the same as IID_IUnknown. - Make tests compile on Win95 again. - Fix copy+paste error where the test failure should be from the CoUnmarshalInterface function. - Give IUnknown its own ifstub to fix ref-counting and ipid storage issues. - Add a new flag SORFP_NOLIFETIMEMGMT to tell the proxy manager not to call any IRemUnknown functions. - Move the low-level unmarshaling code into a new function, unmarshal_object, so that it can be easily reused for unmarshaling IRemUnknown. - Consolidate more stub creation details into register_ifstub. - Replace the current wine_marshal_id structure with STDOBJREF for the on-the-wire format. - Initialize clsid member to the marshaler clsid to fix custom marshaling. - Make proxy shutdown test succeed by releasing the channel on disconnect. - Remove wine_marshal_data: it is unneeded and there is no equivalent in STDOBJREF. - Remove obsolete structs, rearrange things to group the structs together and to group similar functions. - Document thread-safety of members of structs. - Document CoSetState & CoGetState. - Rewrite them to only retrieve TLS info once. - Remove trailing whitespace in COM_CurrentInfo. - Release the client security objects when no longer needed (reported by Mike McCormack). - Implement CoSetProxyBlanket, CoQueryProxyBlanket and CoCopyProxy. - Update todo list. - Destroy stubs on apartment shutdown. - Make MTA dynamically allocated so that proxies and other resources are freed at the proper time. - Changed/removed some incorrect comments regarding apartments. Mike Hearn - Various formatting/style changes. - Force context switch on chanbuf disconnect to avoid a race in the test suite. Mike Hearn Robert Shearman - Rework RPC dispatch layer to be simpler and not get confused by server/client duality. - Make threads shut down at the right time and not access freed memory after apartment destruction. - Rename stub_dispatch_thread to client_dispatch_thread. - Add some more tracing - Check return value of WaitNamedPipe. - Change named pipe timeouts to 0.5s, which should be enough for even the slowest machines. Christian Costa - CoInitialize(Ex) should return S_FALSE when COM is already initialized for the current thread. svn path=/trunk/; revision=13532 --- reactos/include/wine/list.h | 12 + reactos/include/wine/objidl.h | 84 ++ reactos/lib/ole32/compobj.c | 1213 ++++++++++++++++----------- reactos/lib/ole32/compobj_private.h | 202 +++-- reactos/lib/ole32/ifs.c | 69 +- reactos/lib/ole32/marshal.c | 725 ++++++++++++---- reactos/lib/ole32/ole2.c | 65 +- reactos/lib/ole32/ole2stubs.c | 9 - reactos/lib/ole32/ole32.spec | 10 +- reactos/lib/ole32/ole32_main.c | 5 +- reactos/lib/ole32/ole32_main.h | 1 + reactos/lib/ole32/oleproxy.c | 476 ++++++++++- reactos/lib/ole32/regsvr.c | 399 +-------- reactos/lib/ole32/rpc.c | 905 ++++++++++---------- reactos/lib/ole32/stubmanager.c | 508 +++++++++-- reactos/w32api/include/winerror.h | 1 + reactos/w32api/include/wtypes.h | 2 +- 17 files changed, 2976 insertions(+), 1710 deletions(-) diff --git a/reactos/include/wine/list.h b/reactos/include/wine/list.h index 92b84d8303b..2e9df7bf1b3 100644 --- a/reactos/include/wine/list.h +++ b/reactos/include/wine/list.h @@ -143,6 +143,18 @@ inline static void list_init( struct list *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)) + /* macros for statically initialized lists */ #define LIST_INIT(list) { &(list), &(list) } diff --git a/reactos/include/wine/objidl.h b/reactos/include/wine/objidl.h index b9f9eecf0c1..449ccf12e7d 100644 --- a/reactos/include/wine/objidl.h +++ b/reactos/include/wine/objidl.h @@ -984,6 +984,17 @@ DECLARE_INTERFACE_(IClientSecurity,IUnknown) }; #undef INTERFACE +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IClientSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IClientSecurity_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IClientSecurity_Release(p) (p)->lpVtbl->Release(p) +/*** IClientSecurity methods ***/ +#define IClientSecurity_QueryBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g,h) +#define IClientSecurity_SetBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->SetBlanket(p,a,b,c,d,e,f,g,h) +#define IClientSecurity_CopyProxy(p,a,b) (p)->lpVtbl->CopyProxy(p,a,b) +#endif + EXTERN_C const IID IID_IServerSecurity; #define INTERFACE IServerSecurity DECLARE_INTERFACE_(IServerSecurity,IUnknown) @@ -2005,5 +2016,78 @@ struct IInternalUnknownVtbl { #endif /* __IInternalUnknown_INTERFACE_DEFINED__ */ +#ifndef __IMultiQI_FWD_DEFINED__ +#define __IMultiQI_FWD_DEFINED__ +typedef struct IMultiQI IMultiQI; +#endif + +typedef IMultiQI *LPMULTIQI; + +/***************************************************************************** + * IMultiQI interface + */ +#ifndef __IMultiQI_INTERFACE_DEFINED__ +#define __IMultiQI_INTERFACE_DEFINED__ + +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IMultiQI : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE QueryMultipleInterfaces( + ULONG cMQIs, + MULTI_QI* pMQIs) = 0; + +}; +#else +typedef struct IMultiQIVtbl IMultiQIVtbl; +struct IMultiQI { + const IMultiQIVtbl* lpVtbl; +}; +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 +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IMultiQI_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IMultiQI_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IMultiQI_Release(p) (p)->lpVtbl->Release(p) +/*** IMultiQI methods ***/ +#define IMultiQI_QueryMultipleInterfaces(p,a,b) (p)->lpVtbl->QueryMultipleInterfaces(p,a,b) +#endif + +#endif + +HRESULT CALLBACK IMultiQI_QueryMultipleInterfaces_Proxy( + IMultiQI* This, + ULONG cMQIs, + MULTI_QI* pMQIs); +void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IMultiQI_INTERFACE_DEFINED__ */ + #endif /* __WINE_OBJIDL_H */ diff --git a/reactos/lib/ole32/compobj.c b/reactos/lib/ole32/compobj.c index 1ed832a8a12..a3da9bf4a38 100644 --- a/reactos/lib/ole32/compobj.c +++ b/reactos/lib/ole32/compobj.c @@ -28,37 +28,19 @@ * * TODO list: (items bunched together depend on each other) * - * - Switch wine_marshal_id to use IPIDs not IIDs - * - Once that's done, replace wine_marshal_id with STDOBJREF - * - * - Rewrite the CoLockObjectExternal code, it does totally the wrong - * thing currently (should be controlling the stub manager) - * - * - Make the MTA dynamically allocated and refcounted - * - Free the ReservedForOle data in DllMain(THREAD_DETACH) - * * - Implement the service control manager (in rpcss) to keep track * of registered class objects: ISCM::ServerRegisterClsid et al * - Implement the OXID resolver so we don't need magic pipe names for * clients and servers to meet up * - Flip our marshalling on top of the RPC runtime transport API, * so we no longer use named pipes to communicate - * - Rework threading so re-entrant calls don't need to be sent on - * the incoming pipe * - Implement RPC thread affinity (should fix InstallShield painting * problems) * - * - Implement IRemUnknown and marshalling for it, then use that for - * reffing/unreffing the stub manager from a proxy instead of our - * current hack of simply reffing the stub manager once when it's - * registered. - * - Implement table marshalling, then use it to let us do the final - * rework of the threading - * - * - Make our custom marshalling use NDR to be wire compatible with + * - Make all ole interface marshaling use NDR to be wire compatible with * native DCOM - * - * + * - Use & interpret ORPCTHIS & ORPCTHAT. + * */ #include "config.h" @@ -102,12 +84,11 @@ typedef LPCSTR LPCOLESTR16; static HRESULT COM_GetRegisteredClassObject(REFCLSID rclsid, DWORD dwClsContext, LPUNKNOWN* ppUnk); static void COM_RevokeAllClasses(void); -static void COM_ExternalLockFreeList(void); const CLSID CLSID_StdGlobalInterfaceTable = { 0x00000323, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} }; -APARTMENT MTA; -static struct list apts = LIST_INIT( apts ); +APARTMENT *MTA; /* protected by csApartment */ +static struct list apts = LIST_INIT( apts ); /* protected by csApartment */ static CRITICAL_SECTION csApartment; static CRITICAL_SECTION_DEBUG critsect_debug = @@ -213,89 +194,108 @@ void COMPOBJ_UninitProcess( void ) UnregisterClassA(aptWinClass, OLE32_hInstance); } +void COM_TlsDestroy() +{ + struct oletls *info = NtCurrentTeb()->ReservedForOle; + if (info) + { + if (info->apt) COM_ApartmentRelease(info->apt); + if (info->errorinfo) IErrorInfo_Release(info->errorinfo); + if (info->state) IUnknown_Release(info->state); + HeapFree(GetProcessHeap(), 0, info); + NtCurrentTeb()->ReservedForOle = NULL; + } +} + /****************************************************************************** * Manage apartments. */ - -/* The multi-threaded apartment (MTA) contains zero or more threads interacting - with free threaded (ie thread safe) COM objects. There is only ever one MTA - in a process - you can enter it by calling CoInitializeEx(COINIT_MULTITHREADED) - */ -static void COM_InitMTA(void) +/* allocates memory and fills in the necessary fields for a new apartment + * object */ +static APARTMENT *apartment_construct(DWORD model) { - /* OXIDs are object exporter IDs. Each apartment has an OXID, which is unique - within a network. That is, two different MTAs on different machines will have - different OXIDs. + APARTMENT *apt; - This method of generating an OXID is therefore wrong as it doesn't work across - a network, but for local RPC only it's OK. We can distinguish between MTAs and - STAs because STAs use the thread ID as well, and no thread can have an ID of zero. + TRACE("creating new apartment, model=%ld\n", model); - The algorithm Microsoft use is currently unknown. - */ - MTA.oxid = ((OXID)GetCurrentProcessId() << 32); - InitializeCriticalSection(&MTA.cs); + apt = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*apt)); + apt->tid = GetCurrentThreadId(); + DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), + GetCurrentProcess(), &apt->thread, + THREAD_ALL_ACCESS, FALSE, 0); + + list_init(&apt->proxies); + list_init(&apt->stubmgrs); + apt->ipidc = 0; + apt->refs = 1; + apt->remunk_exported = FALSE; + apt->oidc = 1; + InitializeCriticalSection(&apt->cs); + + apt->model = model; + + if (model & COINIT_APARTMENTTHREADED) + { + /* FIXME: should be randomly generated by in an RPC call to rpcss */ + apt->oxid = ((OXID)GetCurrentProcessId() << 32) | GetCurrentThreadId(); + apt->win = CreateWindowA(aptWinClass, NULL, 0, + 0, 0, 0, 0, + 0, 0, OLE32_hInstance, NULL); + } + else + { + /* FIXME: should be randomly generated by in an RPC call to rpcss */ + apt->oxid = ((OXID)GetCurrentProcessId() << 32) | 0xcafe; + } + + apt->shutdown_event = CreateEventW(NULL, TRUE, FALSE, NULL); + + TRACE("Created apartment on OXID %s\n", wine_dbgstr_longlong(apt->oxid)); + + /* the locking here is not currently needed for the MTA case, but it + * doesn't hurt and makes the code simpler */ + EnterCriticalSection(&csApartment); + list_add_head(&apts, &apt->entry); + LeaveCriticalSection(&csApartment); + + return apt; } -static void COM_UninitMTA(void) -{ - DeleteCriticalSection(&MTA.cs); - MTA.oxid = 0; -} - - -/* creates an apartment structure which stores OLE thread-local - * information. Call with COINIT_UNINITIALIZED to create an apartment - * that will be initialized with a model later. Note: do not call - * with COINIT_UNINITIALIZED if the apartment has already been initialized - * with a different COINIT value */ -APARTMENT* COM_CreateApartment(DWORD model) +/* gets and existing apartment if one exists or otherwise creates an apartment + * structure which stores OLE apartment-local information and stores a pointer + * to it in the thread-local storage */ +static APARTMENT *get_or_create_apartment(DWORD model) { APARTMENT *apt = COM_CurrentApt(); if (!apt) { - if (!(model & COINIT_APARTMENTTHREADED)) /* See note 1 above */ - { - TRACE("thread 0x%lx is entering the multithreaded apartment\n", GetCurrentThreadId()); - COM_CurrentInfo()->apt = &MTA; - return COM_CurrentInfo()->apt; - } - - TRACE("creating new apartment, model=%ld\n", model); - - apt = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(APARTMENT)); - apt->tid = GetCurrentThreadId(); - DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), - GetCurrentProcess(), &apt->thread, - THREAD_ALL_ACCESS, FALSE, 0); - - list_init(&apt->proxies); - list_init(&apt->stubmgrs); - apt->oidc = 1; - apt->refs = 1; - InitializeCriticalSection(&apt->cs); - - apt->model = model; - - /* we don't ref the apartment as CoInitializeEx will do it for us */ - if (model & COINIT_APARTMENTTHREADED) { - /* FIXME: how does windoze create OXIDs? */ - apt->oxid = MTA.oxid | GetCurrentThreadId(); - TRACE("Created apartment on OXID %s\n", wine_dbgstr_longlong(apt->oxid)); - apt->win = CreateWindowA(aptWinClass, NULL, 0, - 0, 0, 0, 0, - 0, 0, OLE32_hInstance, NULL); + apt = apartment_construct(model); + COM_CurrentInfo()->apt = apt; } + else + { + EnterCriticalSection(&csApartment); - EnterCriticalSection(&csApartment); - list_add_head(&apts, &apt->entry); - LeaveCriticalSection(&csApartment); + /* The multi-threaded apartment (MTA) contains zero or more threads interacting + * with free threaded (ie thread safe) COM objects. There is only ever one MTA + * in a process */ + if (MTA) + { + TRACE("entering the multithreaded apartment %s\n", wine_dbgstr_longlong(MTA->oxid)); + COM_ApartmentAddRef(MTA); + } + else + MTA = apartment_construct(model); - COM_CurrentInfo()->apt = apt; + apt = MTA; + COM_CurrentInfo()->apt = apt; + + LeaveCriticalSection(&csApartment); + } } return apt; @@ -303,39 +303,61 @@ APARTMENT* COM_CreateApartment(DWORD model) DWORD COM_ApartmentAddRef(struct apartment *apt) { - return InterlockedIncrement(&apt->refs); + DWORD refs = InterlockedIncrement(&apt->refs); + TRACE("%s: before = %ld\n", wine_dbgstr_longlong(apt->oxid), refs - 1); + return refs; } DWORD COM_ApartmentRelease(struct apartment *apt) { DWORD ret; + EnterCriticalSection(&csApartment); + ret = InterlockedDecrement(&apt->refs); + TRACE("%s: after = %ld\n", wine_dbgstr_longlong(apt->oxid), ret); + /* destruction stuff that needs to happen under csApartment CS */ if (ret == 0) { - TRACE("destroying apartment %p, oxid %s\n", apt, wine_dbgstr_longlong(apt->oxid)); - - EnterCriticalSection(&csApartment); + if (apt == MTA) MTA = NULL; list_remove(&apt->entry); - LeaveCriticalSection(&csApartment); + } + + LeaveCriticalSection(&csApartment); + + if (ret == 0) + { + struct list *cursor, *cursor2; + + TRACE("destroying apartment %p, oxid %s\n", apt, wine_dbgstr_longlong(apt->oxid)); MARSHAL_Disconnect_Proxies(apt); if (apt->win) DestroyWindow(apt->win); - if (!list_empty(&apt->stubmgrs)) + LIST_FOR_EACH_SAFE(cursor, cursor2, &apt->stubmgrs) { - FIXME("Destroy outstanding stubs\n"); + struct stub_manager *stubmgr = LIST_ENTRY(cursor, struct stub_manager, entry); + /* release the implicit reference given by the fact that the + * stub has external references (it must do since it is in the + * stub manager list in the apartment and all non-apartment users + * must have a ref on the apartment and so it cannot be destroyed). + */ + stub_manager_int_release(stubmgr); } + /* if this assert fires, then another thread took a reference to a + * stub manager without taking a reference to the containing + * apartment, which it must do. */ + assert(list_empty(&apt->stubmgrs)); + if (apt->filter) IUnknown_Release(apt->filter); - DeleteCriticalSection(&apt->cs); + SetEvent(apt->shutdown_event); + CloseHandle(apt->shutdown_event); CloseHandle(apt->thread); HeapFree(GetProcessHeap(), 0, apt); - - apt = NULL; } return ret; @@ -369,6 +391,30 @@ APARTMENT *COM_ApartmentFromOXID(OXID oxid, BOOL ref) return result; } +/* gets the apartment which has a given creator thread ID. The caller must + * release the reference from the apartment as soon as the apartment pointer + * is no longer required. */ +APARTMENT *COM_ApartmentFromTID(DWORD tid) +{ + APARTMENT *result = NULL; + struct list *cursor; + + EnterCriticalSection(&csApartment); + LIST_FOR_EACH( cursor, &apts ) + { + struct apartment *apt = LIST_ENTRY( cursor, struct apartment, entry ); + if (apt->tid == tid) + { + result = apt; + COM_ApartmentAddRef(result); + break; + } + } + LeaveCriticalSection(&csApartment); + + return result; +} + HWND COM_GetApartmentWin(OXID oxid, BOOL ref) { APARTMENT *apt; @@ -461,8 +507,12 @@ static void COMPOBJ_DllList_FreeUnused(int Timeout) } /****************************************************************************** - * CoBuildVersion [COMPOBJ.1] * CoBuildVersion [OLE32.@] + * CoBuildVersion [COMPOBJ.1] + * + * Gets the build version of the DLL. + * + * PARAMS * * RETURNS * Current build version, hiword is majornumber, loword is minornumber @@ -479,13 +529,17 @@ DWORD WINAPI CoBuildVersion(void) * Initializes the COM libraries by calling CoInitializeEx with * COINIT_APARTMENTTHREADED, ie it enters a STA thread. * + * PARAMS + * lpReserved [I] Pointer to IMalloc interface (obsolete, should be NULL). + * + * RETURNS + * Success: S_OK if not already initialized, S_FALSE otherwise. + * Failure: HRESULT code. + * * SEE ALSO * CoInitializeEx */ -HRESULT WINAPI CoInitialize( - LPVOID lpReserved /* [in] pointer to win32 malloc interface - (obsolete, should be NULL) */ -) +HRESULT WINAPI CoInitialize(LPVOID lpReserved) { /* * Just delegate to the newer method. @@ -496,13 +550,11 @@ HRESULT WINAPI CoInitialize( /****************************************************************************** * CoInitializeEx [OLE32.@] * - * Initializes the COM libraries. The behavior used to set the win32 - * IMalloc used for memory management is obsolete. If - * COINIT_APARTMENTTHREADED is specified this thread enters a new STA - * (single threaded apartment), otherwise COINIT_MULTITHREADED should - * be specified which indicates that the thread will enter the MTA. + * Initializes the COM libraries. * - * Currently STA threading is only partly implemented. + * PARAMS + * lpReserved [I] Pointer to IMalloc interface (obsolete, should be NULL). + * dwCoInit [I] One or more flags from the COINIT enumeration. See notes. * * RETURNS * S_OK if successful, @@ -510,13 +562,22 @@ HRESULT WINAPI CoInitialize( * RPC_E_CHANGED_MODE if a previous call to CoInitializeEx specified another * threading model. * + * NOTES + * + * The behavior used to set the IMalloc used for memory management is + * obsolete. + * The dwCoInit parameter must specify of of the following apartment + * threading models: + *| COINIT_APARTMENTTHREADED - A single-threaded apartment (STA). + *| COINIT_MULTITHREADED - A multi-threaded apartment (MTA). + * The parameter may also specify zero or more of the following flags: + *| COINIT_DISABLE_OLE1DDE - Don't use DDE for OLE1 support. + *| COINIT_SPEED_OVER_MEMORY - Trade memory for speed. + * * SEE ALSO * CoUninitialize */ -HRESULT WINAPI CoInitializeEx( - LPVOID lpReserved, /* [in] pointer to win32 malloc interface (obsolete, should be NULL) */ - DWORD dwCoInit /* [in] A value from COINIT specifies the threading model */ -) +HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) { HRESULT hr = S_OK; APARTMENT *apt; @@ -541,15 +602,13 @@ HRESULT WINAPI CoInitializeEx( */ TRACE("() - Initializing the COM libraries\n"); - COM_InitMTA(); - /* we may need to defer this until after apartment initialisation */ RunningObjectTableImpl_Initialize(); } if (!(apt = COM_CurrentInfo()->apt)) { - apt = COM_CreateApartment(dwCoInit); + apt = get_or_create_apartment(dwCoInit); if (!apt) return E_OUTOFMEMORY; } else if (dwCoInit != apt->model) @@ -557,9 +616,10 @@ HRESULT WINAPI CoInitializeEx( /* Changing the threading model after it's been set is illegal. If this warning is triggered by Wine code then we are probably using the wrong threading model to implement that API. */ ERR("Attempt to change threading model of this apartment from 0x%lx to 0x%lx\n", apt->model, dwCoInit); - COM_ApartmentRelease(apt); return RPC_E_CHANGED_MODE; } + else + hr = S_FALSE; COM_CurrentInfo()->inits++; @@ -594,15 +654,15 @@ void COM_FlushMessageQueue(void) /*********************************************************************** * CoUninitialize [OLE32.@] * - * This method will decrement the refcount on the COM libraries, - * potentially unloading them. The current thread leaves the apartment - * it's currently in. If not in an apartment, the routine does - * nothing. + * This method will decrement the refcount on the current apartment, freeing + * the resources associated with it if it is the last thread in the apartment. + * If the last apartment is freed, the function will additionally release + * any COM resources associated with the process. * - * If COM is to be shut down, any outstanding proxies are - * disconnected, all registered class objects are unregistered and the - * message queue for the thread is flushed (if native does - * this or not is unknown). + * PARAMS + * + * RETURNS + * Nothing. * * SEE ALSO * CoInitializeEx @@ -648,13 +708,8 @@ void WINAPI CoUninitialize(void) /* This will free the loaded COM Dlls */ CoFreeAllLibraries(); - /* This will free list of external references to COM objects */ - COM_ExternalLockFreeList(); - /* This ensures we deal with any pending RPCs */ COM_FlushMessageQueue(); - - COM_UninitMTA(); } else if (lCOMRefCnt<1) { ERR( "CoUninitialize() - not CoInitialized.\n" ); @@ -663,8 +718,8 @@ void WINAPI CoUninitialize(void) } /****************************************************************************** - * CoDisconnectObject [COMPOBJ.15] * CoDisconnectObject [OLE32.@] + * CoDisconnectObject [COMPOBJ.15] * * Disconnects all connections to this object from remote processes. Dispatches * pending RPCs while blocking new RPCs from occurring, and then calls @@ -672,25 +727,65 @@ void WINAPI CoUninitialize(void) * * Typically called when the object server is forced to shut down, for instance by * the user. + * + * PARAMS + * lpUnk [I] The object whose stub should be disconnected. + * reserved [I] Reserved. Should be set to 0. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoMarshalInterface, CoReleaseMarshalData, CoLockObjectExternal */ HRESULT WINAPI CoDisconnectObject( LPUNKNOWN lpUnk, DWORD reserved ) { - FIXME("(%p, %lx): stub - probably harmless\n",lpUnk,reserved); + HRESULT hr; + IMarshal *marshal; + APARTMENT *apt; + + TRACE("(%p, 0x%08lx)\n", lpUnk, reserved); + + hr = IUnknown_QueryInterface(lpUnk, &IID_IMarshal, (void **)&marshal); + if (hr == S_OK) + { + hr = IMarshal_DisconnectObject(marshal, reserved); + IMarshal_Release(marshal); + return hr; + } + + apt = COM_CurrentApt(); + if (!apt) + return CO_E_NOTINITIALIZED; + + apartment_disconnect_object(apt, lpUnk); + + /* Note: native is pretty broken here because it just silently + * fails, without returning an appropriate error code if the object was + * not found, making apps think that the object was disconnected, when + * it actually wasn't */ + return S_OK; } /****************************************************************************** - * CoCreateGuid[OLE32.@] + * CoCreateGuid [OLE32.@] * * Simply forwards to UuidCreate in RPCRT4. * + * PARAMS + * pguid [O] Points to the GUID to initialize. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * * SEE ALSO * UuidCreate - * */ -HRESULT WINAPI CoCreateGuid( - GUID *pguid /* [out] points to the GUID to initialize */ -) { +HRESULT WINAPI CoCreateGuid(GUID *pguid) +{ return UuidCreate(pguid); } @@ -701,17 +796,24 @@ HRESULT WINAPI CoCreateGuid( * Converts a unique identifier from its string representation into * the GUID struct. * - * In Windows, if idstr is not a valid CLSID string then it gets - * treated as a ProgID. Wine currently doesn't do this. If idstr is - * NULL it's treated as an all-zero GUID. + * PARAMS + * idstr [I] The string representation of the GUID. + * id [O] GUID converted from the string. * * RETURNS * S_OK on success * CO_E_CLASSSTRING if idstr is not a valid CLSID + * + * BUGS + * + * In Windows, if idstr is not a valid CLSID string then it gets + * treated as a ProgID. Wine currently doesn't do this. If idstr is + * NULL it's treated as an all-zero GUID. + * + * SEE ALSO + * StringFromCLSID */ -HRESULT WINAPI __CLSIDFromStringA( - LPCSTR idstr, /* [in] string representation of guid */ - CLSID *id) /* [out] GUID converted from string */ +HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id) { const BYTE *s = (const BYTE *) idstr; int i; @@ -771,9 +873,7 @@ HRESULT WINAPI __CLSIDFromStringA( /*****************************************************************************/ -HRESULT WINAPI CLSIDFromString( - LPOLESTR idstr, /* [in] string representation of GUID */ - CLSID *id ) /* [out] GUID represented by above string */ +HRESULT WINAPI CLSIDFromString(LPOLESTR idstr, CLSID *id ) { char xid[40]; HRESULT ret; @@ -831,14 +931,19 @@ HRESULT WINE_StringFromCLSID( * Converts a GUID into the respective string representation. * The target string is allocated using the OLE IMalloc. * + * PARAMS + * id [I] the GUID to be converted. + * idstr [O] A pointer to a to-be-allocated pointer pointing to the resulting string. + * * RETURNS * S_OK * E_FAIL + * + * SEE ALSO + * StringFromGUID2, CLSIDFromString */ -HRESULT WINAPI StringFromCLSID( - REFCLSID id, /* [in] the GUID to be converted */ - LPOLESTR *idstr /* [out] a pointer to a to-be-allocated pointer pointing to the resulting string */ -) { +HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr) +{ char buf[80]; HRESULT ret; LPMALLOC mllc; @@ -856,19 +961,22 @@ HRESULT WINAPI StringFromCLSID( } /****************************************************************************** - * StringFromGUID2 [COMPOBJ.76] * StringFromGUID2 [OLE32.@] + * StringFromGUID2 [COMPOBJ.76] * * Modified version of StringFromCLSID that allows you to specify max * buffer size. * + * PARAMS + * id [I] GUID to convert to string. + * str [O] Buffer where the result will be stored. + * cmax [I] Size of the buffer in characters. + * * RETURNS - * The length of the resulting string, 0 if there was any problem. + * Success: The length of the resulting string in characters. + * Failure: 0. */ -INT WINAPI StringFromGUID2( - REFGUID id, /* [in] GUID to convert to string */ - LPOLESTR str, /* [out] Unicode buffer to hold result */ - INT cmax) +INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax) { char xguid[80]; @@ -880,18 +988,18 @@ INT WINAPI StringFromGUID2( /****************************************************************************** * ProgIDFromCLSID [OLE32.@] * - * Converts a class id into the respective Program ID. (By using a - * registry lookup) + * Converts a class id into the respective program ID. + * + * PARAMS + * clsid [I] Class ID, as found in registry. + * lplpszProgID [O] Associated ProgID. * * RETURNS * S_OK * E_OUTOFMEMORY * REGDB_E_CLASSNOTREG if the given clsid has no associated ProgID */ -HRESULT WINAPI ProgIDFromCLSID( - REFCLSID clsid, /* [in] class id as found in registry */ - LPOLESTR *lplpszProgID/* [out] associated Prog ID */ -) +HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID) { char strCLSID[50], *buf, *buf2; DWORD buf2len; @@ -959,18 +1067,20 @@ HRESULT WINAPI CLSIDFromProgID16( } /****************************************************************************** + * CLSIDFromProgID [OLE32.@] * CLSIDFromProgID [COMPOBJ.61] * - * Converts a program id into the respective GUID. (By using a - * registry lookup) + * Converts a program id into the respective GUID. + * + * PARAMS + * progid [I] Unicode program ID, as found in registry. + * riid [O] Associated CLSID. * * RETURNS - * S_OK - * CO_E_CLASSSTRING if the given ProgID cannot be found + * Success: S_OK + * Failure: CO_E_CLASSSTRING - the given ProgID cannot be found. */ -HRESULT WINAPI CLSIDFromProgID( - LPCOLESTR progid, /* [in] Unicode program id as found in registry */ - LPCLSID riid ) /* [out] associated CLSID */ +HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid) { static const WCHAR clsidW[] = { '\\','C','L','S','I','D',0 }; char buf2[80]; @@ -1001,8 +1111,19 @@ HRESULT WINAPI CLSIDFromProgID( /***************************************************************************** * CoGetPSClsid [OLE32.@] * - * This function returns the CLSID of the proxy/stub factory that - * implements IPSFactoryBuffer for the specified interface. + * Retrieves the CLSID of the proxy/stub factory that implements + * IPSFactoryBuffer for the specified interface. + * + * PARAMS + * riid [I] Interface whose proxy/stub CLSID is to be returned. + * pclsid [O] Where to store returned proxy/stub CLSID. + * + * RETURNS + * S_OK + * E_OUTOFMEMORY + * REGDB_E_IIDNOTREG if no PSFactoryBuffer is associated with the IID, or it could not be parsed + * + * NOTES * * The standard marshaller activates the object with the CLSID * returned and uses the CreateProxy and CreateStub methods on its @@ -1014,17 +1135,15 @@ HRESULT WINAPI CLSIDFromProgID( * in the registry and any interface id registered by * CoRegisterPSClsid within the current process. * - * FIXME: We only search the registry, not ids registered with - * CoRegisterPSClsid. + * BUGS * - * RETURNS - * S_OK - * E_OUTOFMEMORY - * E_INVALIDARG if no PSFactoryBuffer is associated with the IID, or it could not be parsed + * We only search the registry, not ids registered with + * CoRegisterPSClsid. + * Also, native returns S_OK for interfaces with an key in HKCR\Interface, but + * without a ProxyStubClsid32 key and leaves garbage in pclsid. This should be + * considered a bug in native unless an application depends on this (unlikely). */ -HRESULT WINAPI CoGetPSClsid( - REFIID riid, /* [in] Interface whose proxy/stub CLSID is to be returned */ - CLSID *pclsid ) /* [out] Where to store returned proxy/stub CLSID */ +HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID *pclsid) { char *buf, buf2[40]; DWORD buf2len; @@ -1038,9 +1157,7 @@ HRESULT WINAPI CoGetPSClsid( (length of iid string plus constant length of static text */ buf = HeapAlloc(GetProcessHeap(), 0, strlen(buf2)+27); if (buf == NULL) - { - return (E_OUTOFMEMORY); - } + return E_OUTOFMEMORY; /* Construct the registry key we want */ sprintf(buf,"Interface\\%s\\ProxyStubClsid32", buf2); @@ -1048,9 +1165,9 @@ HRESULT WINAPI CoGetPSClsid( /* Open the key.. */ if (RegOpenKeyA(HKEY_CLASSES_ROOT, buf, &xhkey)) { - WARN("No PSFactoryBuffer object is registered for this IID\n"); - HeapFree(GetProcessHeap(),0,buf); - return (E_INVALIDARG); + WARN("No PSFactoryBuffer object is registered for IID %s\n", debugstr_guid(riid)); + HeapFree(GetProcessHeap(),0,buf); + return REGDB_E_IIDNOTREG; } HeapFree(GetProcessHeap(),0,buf); @@ -1060,19 +1177,18 @@ HRESULT WINAPI CoGetPSClsid( buf2len = sizeof(buf2); if ( (RegQueryValueA(xhkey,NULL,buf2,&buf2len)) ) { - RegCloseKey(xhkey); - return E_INVALIDARG; + RegCloseKey(xhkey); + return REGDB_E_IIDNOTREG; } RegCloseKey(xhkey); /* We have the CLSid we want back from the registry as a string, so lets convert it into a CLSID structure */ - if ( (__CLSIDFromStringA(buf2,pclsid)) != NOERROR) { - return E_INVALIDARG; - } + if ( (__CLSIDFromStringA(buf2,pclsid)) != NOERROR) + return REGDB_E_IIDNOTREG; TRACE ("() Returning CLSID=%s\n", debugstr_guid(pclsid)); - return (S_OK); + return S_OK; } @@ -1080,7 +1196,15 @@ HRESULT WINAPI CoGetPSClsid( /*********************************************************************** * WriteClassStm (OLE32.@) * - * This function write a CLSID on stream + * Writes a CLSID to a stream. + * + * PARAMS + * pStm [I] Stream to write to. + * rclsid [I] CLSID to write. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. */ HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid) { @@ -1095,7 +1219,15 @@ HRESULT WINAPI WriteClassStm(IStream *pStm,REFCLSID rclsid) /*********************************************************************** * ReadClassStm (OLE32.@) * - * This function read a CLSID from a stream + * Reads a CLSID from a stream. + * + * PARAMS + * pStm [I] Stream to read from. + * rclsid [O] CLSID to read. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. */ HRESULT WINAPI ReadClassStm(IStream *pStm,CLSID *pclsid) { @@ -1196,6 +1328,13 @@ end: * files use this method instead of exporting DllGetClassObject to allow * other code to connect to their objects. * + * PARAMS + * rclsid [I] CLSID of the object to register. + * pUnk [I] IUnknown of the object. + * dwClsContext [I] CLSCTX flags indicating the context in which to run the executable. + * flags [I] REGCLS flags indicating how connections are made. + * lpdwRegister [I] A unique cookie that can be passed to CoRevokeClassObject. + * * RETURNS * S_OK on success, * E_INVALIDARG if lpdwRegister or pUnk are NULL, @@ -1209,11 +1348,11 @@ end: * can't do that with our current implementation. */ HRESULT WINAPI CoRegisterClassObject( - REFCLSID rclsid, /* [in] CLSID of the object to register */ - LPUNKNOWN pUnk, /* [in] IUnknown of the object */ - DWORD dwClsContext, /* [in] CLSCTX flags indicating the context in which to run the executable */ - DWORD flags, /* [in] REGCLS flags indicating how connections are made */ - LPDWORD lpdwRegister) /* [out] A unique cookie that can be passed to CoRevokeClassObject */ + REFCLSID rclsid, + LPUNKNOWN pUnk, + DWORD dwClsContext, + DWORD flags, + LPDWORD lpdwRegister) { RegisteredClass* newClass; LPUNKNOWN foundObject; @@ -1303,9 +1442,17 @@ HRESULT WINAPI CoRegisterClassObject( /*********************************************************************** * CoRevokeClassObject [OLE32.@] * - * This method will remove a class object from the class registry + * Removes a class object from the class registry. * - * See the Windows documentation for more details. + * PARAMS + * dwRegister [I] Cookie returned from CoRegisterClassObject(). + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoRegisterClassObject */ HRESULT WINAPI CoRevokeClassObject( DWORD dwRegister) @@ -1497,7 +1644,11 @@ HRESULT WINAPI CoGetClassObject( /*********************************************************************** * CoResumeClassObjects (OLE32.@) * - * Resumes classobjects registered with REGCLS suspended + * Resumes all class objects registered with REGCLS_SUSPENDED. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. */ HRESULT WINAPI CoResumeClassObjects(void) { @@ -1741,6 +1892,19 @@ HRESULT WINAPI CoCreateInstanceEx( /*********************************************************************** * CoLoadLibrary (OLE32.@) + * + * Loads a library. + * + * PARAMS + * lpszLibName [I] Path to library. + * bAutoFree [I] Whether the library should automatically be freed. + * + * RETURNS + * Success: Handle to loaded library. + * Failure: NULL. + * + * SEE ALSO + * CoFreeLibrary, CoFreeAllLibraries, CoFreeUnusedLibraries */ HINSTANCE WINAPI CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree) { @@ -1752,7 +1916,16 @@ HINSTANCE WINAPI CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree) /*********************************************************************** * CoFreeLibrary [OLE32.@] * - * NOTES: don't believe the documentation + * Unloads a library from memory. + * + * PARAMS + * hLibrary [I] Handle to library to unload. + * + * RETURNS + * Nothing + * + * SEE ALSO + * CoLoadLibrary, CoFreeAllLibraries, CoFreeUnusedLibraries */ void WINAPI CoFreeLibrary(HINSTANCE hLibrary) { @@ -1763,7 +1936,13 @@ void WINAPI CoFreeLibrary(HINSTANCE hLibrary) /*********************************************************************** * CoFreeAllLibraries [OLE32.@] * - * NOTES: don't believe the documentation + * Function for backwards compatibility only. Does nothing. + * + * RETURNS + * Nothing. + * + * SEE ALSO + * CoLoadLibrary, CoFreeLibrary, CoFreeUnusedLibraries */ void WINAPI CoFreeAllLibraries(void) { @@ -1772,33 +1951,43 @@ void WINAPI CoFreeAllLibraries(void) /*********************************************************************** - * CoFreeUnusedLibraries [COMPOBJ.17] * CoFreeUnusedLibraries [OLE32.@] + * CoFreeUnusedLibraries [COMPOBJ.17] * - * FIXME: Calls to CoFreeUnusedLibraries from any thread always route - * through the main apartment's thread to call DllCanUnloadNow + * Frees any unused libraries. Unused are identified as those that return + * S_OK from their DllCanUnloadNow function. + * + * RETURNS + * Nothing. + * + * SEE ALSO + * CoLoadLibrary, CoFreeAllLibraries, CoFreeLibrary */ void WINAPI CoFreeUnusedLibraries(void) { + /* FIXME: Calls to CoFreeUnusedLibraries from any thread always route + * through the main apartment's thread to call DllCanUnloadNow */ COMPOBJ_DllList_FreeUnused(0); } /*********************************************************************** - * CoFileTimeNow [COMPOBJ.82] * CoFileTimeNow [OLE32.@] + * CoFileTimeNow [COMPOBJ.82] + * + * Retrieves the current time in FILETIME format. + * + * PARAMS + * lpFileTime [O] The current time. * * RETURNS - * the current system time in lpFileTime + * S_OK. */ -HRESULT WINAPI CoFileTimeNow( FILETIME *lpFileTime ) /* [out] the current time */ +HRESULT WINAPI CoFileTimeNow( FILETIME *lpFileTime ) { GetSystemTimeAsFileTime( lpFileTime ); return S_OK; } -/*********************************************************************** - * CoLoadLibrary (OLE32.@) - */ static void COM_RevokeAllClasses() { EnterCriticalSection( &csRegisteredClassList ); @@ -1811,241 +2000,73 @@ static void COM_RevokeAllClasses() LeaveCriticalSection( &csRegisteredClassList ); } -/**************************************************************************** - * COM External Lock methods implementation - * - * This api provides a linked list to managed external references to - * COM objects. - * - * The public interface consists of three calls: - * COM_ExternalLockAddRef - * COM_ExternalLockRelease - * COM_ExternalLockFreeList - */ - -#define EL_END_OF_LIST 0 -#define EL_NOT_FOUND 0 - -/* - * Declaration of the static structure that manage the - * external lock to COM objects. - */ -typedef struct COM_ExternalLock COM_ExternalLock; -typedef struct COM_ExternalLockList COM_ExternalLockList; - -struct COM_ExternalLock -{ - IUnknown *pUnk; /* IUnknown referenced */ - ULONG uRefCount; /* external lock counter to IUnknown object*/ - COM_ExternalLock *next; /* Pointer to next element in list */ -}; - -struct COM_ExternalLockList -{ - COM_ExternalLock *head; /* head of list */ -}; - -/* - * Declaration and initialization of the static structure that manages - * the external lock to COM objects. - */ -static COM_ExternalLockList elList = { EL_END_OF_LIST }; - -/* - * Private methods used to managed the linked list - */ - - -static COM_ExternalLock* COM_ExternalLockLocate( - COM_ExternalLock *element, - IUnknown *pUnk); - -/**************************************************************************** - * Internal - Insert a new IUnknown* to the linked list - */ -static BOOL COM_ExternalLockInsert( - IUnknown *pUnk) -{ - COM_ExternalLock *newLock = NULL; - COM_ExternalLock *previousHead = NULL; - - /* - * Allocate space for the new storage object - */ - newLock = HeapAlloc(GetProcessHeap(), 0, sizeof(COM_ExternalLock)); - - if (newLock!=NULL) { - if ( elList.head == EL_END_OF_LIST ) { - elList.head = newLock; /* The list is empty */ - } else { - /* insert does it at the head */ - previousHead = elList.head; - elList.head = newLock; - } - - /* Set new list item data member */ - newLock->pUnk = pUnk; - newLock->uRefCount = 1; - newLock->next = previousHead; - - return TRUE; - } - return FALSE; -} - -/**************************************************************************** - * Internal - Method that removes an item from the linked list. - */ -static void COM_ExternalLockDelete( - COM_ExternalLock *itemList) -{ - COM_ExternalLock *current = elList.head; - - if ( current == itemList ) { - /* this section handles the deletion of the first node */ - elList.head = itemList->next; - HeapFree( GetProcessHeap(), 0, itemList); - } else { - do { - if ( current->next == itemList ){ /* We found the item to free */ - current->next = itemList->next; /* readjust the list pointers */ - HeapFree( GetProcessHeap(), 0, itemList); - break; - } - - /* Skip to the next item */ - current = current->next; - - } while ( current != EL_END_OF_LIST ); - } -} - -/**************************************************************************** - * Internal - Recursivity agent for IUnknownExternalLockList_Find - * - * NOTES: how long can the list be ?? (recursive!!!) - */ -static COM_ExternalLock* COM_ExternalLockLocate( COM_ExternalLock *element, IUnknown *pUnk) -{ - if ( element == EL_END_OF_LIST ) - return EL_NOT_FOUND; - else if ( element->pUnk == pUnk ) /* We found it */ - return element; - else /* Not the right guy, keep on looking */ - return COM_ExternalLockLocate( element->next, pUnk); -} - -/**************************************************************************** - * Public - Method that increments the count for a IUnknown* in the linked - * list. The item is inserted if not already in the list. - */ -static void COM_ExternalLockAddRef(IUnknown *pUnk) -{ - COM_ExternalLock *externalLock = COM_ExternalLockLocate(elList.head, pUnk); - - /* - * Add an external lock to the object. If it was already externally - * locked, just increase the reference count. If it was not. - * add the item to the list. - */ - if ( externalLock == EL_NOT_FOUND ) - COM_ExternalLockInsert(pUnk); - else - externalLock->uRefCount++; - - /* - * Add an internal lock to the object - */ - IUnknown_AddRef(pUnk); -} - -/**************************************************************************** - * Public - Method that decrements the count for a IUnknown* in the linked - * list. The item is removed from the list if its count end up at zero or if - * bRelAll is TRUE. - */ -static void COM_ExternalLockRelease( - IUnknown *pUnk, - BOOL bRelAll) -{ - COM_ExternalLock *externalLock = COM_ExternalLockLocate(elList.head, pUnk); - - if ( externalLock != EL_NOT_FOUND ) { - do { - externalLock->uRefCount--; /* release external locks */ - IUnknown_Release(pUnk); /* release local locks as well */ - - if ( bRelAll == FALSE ) break; /* perform single release */ - - } while ( externalLock->uRefCount > 0 ); - - if ( externalLock->uRefCount == 0 ) /* get rid of the list entry */ - COM_ExternalLockDelete(externalLock); - } -} -/**************************************************************************** - * Public - Method that frees the content of the list. - */ -static void COM_ExternalLockFreeList() -{ - COM_ExternalLock *head; - - head = elList.head; /* grab it by the head */ - while ( head != EL_END_OF_LIST ) { - COM_ExternalLockDelete(head); /* get rid of the head stuff */ - head = elList.head; /* get the new head... */ - } -} - -/**************************************************************************** - * Public - Method that dump the content of the list. - */ -void COM_ExternalLockDump() -{ - COM_ExternalLock *current = elList.head; - - DPRINTF("\nExternal lock list contains:\n"); - - while ( current != EL_END_OF_LIST ) { - DPRINTF( "\t%p with %lu references count.\n", current->pUnk, current->uRefCount); - - /* Skip to the next item */ - current = current->next; - } -} - /****************************************************************************** * CoLockObjectExternal [OLE32.@] + * + * Increments or decrements the external reference count of a stub object. + * + * PARAMS + * pUnk [I] Stub object. + * fLock [I] If TRUE then increments the external ref-count, + * otherwise decrements. + * fLastUnlockReleases [I] If TRUE then the last unlock has the effect of + * calling CoDisconnectObject. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. */ HRESULT WINAPI CoLockObjectExternal( - LPUNKNOWN pUnk, /* [in] object to be locked */ - BOOL fLock, /* [in] do lock */ - BOOL fLastUnlockReleases) /* [in] unlock all */ + LPUNKNOWN pUnk, + BOOL fLock, + BOOL fLastUnlockReleases) { + struct stub_manager *stubmgr; + struct apartment *apt; + TRACE("pUnk=%p, fLock=%s, fLastUnlockReleases=%s\n", pUnk, fLock ? "TRUE" : "FALSE", fLastUnlockReleases ? "TRUE" : "FALSE"); - if (fLock) { - /* - * Increment the external lock coutner, COM_ExternalLockAddRef also - * increment the object's internal lock counter. - */ - COM_ExternalLockAddRef( pUnk); - } else { - /* - * Decrement the external lock coutner, COM_ExternalLockRelease also - * decrement the object's internal lock counter. - */ - COM_ExternalLockRelease( pUnk, fLastUnlockReleases); - } + apt = COM_CurrentApt(); + if (!apt) return CO_E_NOTINITIALIZED; + + stubmgr = get_stub_manager_from_object(apt, pUnk); + + if (stubmgr) + { + if (fLock) + stub_manager_ext_addref(stubmgr, 1); + else + stub_manager_ext_release(stubmgr, 1); + + stub_manager_int_release(stubmgr); return S_OK; + } + else + { + WARN("stub object not found %p\n", pUnk); + /* Note: native is pretty broken here because it just silently + * fails, without returning an appropriate error code, making apps + * think that the object was disconnected, when it actually wasn't */ + return S_OK; + } } /*********************************************************************** * CoInitializeWOW (OLE32.@) + * + * WOW equivalent of CoInitialize? + * + * PARAMS + * x [I] Unknown. + * y [I] Unknown. + * + * RETURNS + * Unknown. */ -HRESULT WINAPI CoInitializeWOW(DWORD x,DWORD y) { +HRESULT WINAPI CoInitializeWOW(DWORD x,DWORD y) +{ FIXME("(0x%08lx,0x%08lx),stub!\n",x,y); return 0; } @@ -2053,40 +2074,69 @@ HRESULT WINAPI CoInitializeWOW(DWORD x,DWORD y) { /*********************************************************************** * CoGetState [OLE32.@] * - * NOTES: might be incomplete + * Retrieves the thread state object previously stored by CoSetState(). + * + * PARAMS + * ppv [I] Address where pointer to object will be stored. + * + * RETURNS + * Success: S_OK. + * Failure: E_OUTOFMEMORY. + * + * NOTES + * Crashes on all invalid ppv addresses, including NULL. + * If the function returns a non-NULL object then the caller must release its + * reference on the object when the object is no longer required. + * + * SEE ALSO + * CoSetState(). */ HRESULT WINAPI CoGetState(IUnknown ** ppv) { - HRESULT hr = E_FAIL; + struct oletls *info = COM_CurrentInfo(); + if (!info) return E_OUTOFMEMORY; *ppv = NULL; - if (COM_CurrentInfo()->state) + if (info->state) { - IUnknown_AddRef(COM_CurrentInfo()->state); - *ppv = COM_CurrentInfo()->state; - TRACE("apt->state=%p\n", COM_CurrentInfo()->state); - hr = S_OK; + IUnknown_AddRef(info->state); + *ppv = info->state; + TRACE("apt->state=%p\n", info->state); } - return hr; + return S_OK; } /*********************************************************************** * CoSetState [OLE32.@] * + * Sets the thread state object. + * + * PARAMS + * pv [I] Pointer to state object to be stored. + * + * NOTES + * The system keeps a reference on the object while the object stored. + * + * RETURNS + * Success: S_OK. + * Failure: E_OUTOFMEMORY. */ HRESULT WINAPI CoSetState(IUnknown * pv) { + struct oletls *info = COM_CurrentInfo(); + if (!info) return E_OUTOFMEMORY; + if (pv) IUnknown_AddRef(pv); - if (COM_CurrentInfo()->state) + if (info->state) { - TRACE("-- release %p now\n", COM_CurrentInfo()->state); - IUnknown_Release(COM_CurrentInfo()->state); + TRACE("-- release %p now\n", info->state); + IUnknown_Release(info->state); } - COM_CurrentInfo()->state = pv; + info->state = pv; return S_OK; } @@ -2124,47 +2174,21 @@ done: return res; } -/****************************************************************************** - * OleSetAutoConvert [OLE32.@] - */ -HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew) -{ - HKEY hkey = 0; - char buf[200], szClsidNew[200]; - HRESULT res = S_OK; - - TRACE("(%s,%s)\n", debugstr_guid(clsidOld), debugstr_guid(clsidNew)); - sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]); - WINE_StringFromCLSID(clsidNew, szClsidNew); - if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey)) - { - res = REGDB_E_CLASSNOTREG; - goto done; - } - if (RegSetValueA(hkey, "AutoConvertTo", REG_SZ, szClsidNew, strlen(szClsidNew)+1)) - { - res = REGDB_E_WRITEREGDB; - goto done; - } - -done: - if (hkey) RegCloseKey(hkey); - return res; -} - -/****************************************************************************** - * OleDoAutoConvert [OLE32.@] - */ -HRESULT WINAPI OleDoAutoConvert(IStorage *pStg, LPCLSID pClsidNew) -{ - FIXME("(%p,%p) : stub\n",pStg,pClsidNew); - return E_NOTIMPL; -} - /****************************************************************************** * CoTreatAsClass [OLE32.@] * - * Sets TreatAs value of a class + * Sets the TreatAs value of a class. + * + * PARAMS + * clsidOld [I] Class to set TreatAs value on. + * clsidNew [I] The class the clsidOld should be treated as. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoGetTreatAsClass */ HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew) { @@ -2214,7 +2238,18 @@ done: /****************************************************************************** * CoGetTreatAsClass [OLE32.@] * - * Reads the TreatAs value from a class. + * Gets the TreatAs value of a class. + * + * PARAMS + * clsidOld [I] Class to get the TreatAs value of. + * clsidNew [I] The class the clsidOld should be treated as. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoSetTreatAsClass */ HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID clsidNew) { @@ -2246,19 +2281,80 @@ done: } +/****************************************************************************** + * CoGetCurrentProcess [OLE32.@] + * CoGetCurrentProcess [COMPOBJ.34] + * + * Gets the current process ID. + * + * RETURNS + * The current process ID. + * + * NOTES + * Is DWORD really the correct return type for this function? + */ +DWORD WINAPI CoGetCurrentProcess(void) +{ + return GetCurrentProcessId(); +} + +/****************************************************************************** + * CoRegisterMessageFilter [OLE32.@] + * + * Registers a message filter. + * + * PARAMS + * lpMessageFilter [I] Pointer to interface. + * lplpMessageFilter [O] Indirect pointer to prior instance if non-NULL. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + */ +HRESULT WINAPI CoRegisterMessageFilter( + LPMESSAGEFILTER lpMessageFilter, + LPMESSAGEFILTER *lplpMessageFilter) +{ + FIXME("stub\n"); + if (lplpMessageFilter) { + *lplpMessageFilter = NULL; + } + return S_OK; +} + +/*********************************************************************** + * CoIsOle1Class [OLE32.@] + * + * Determines whether the specified class an OLE v1 class. + * + * PARAMS + * clsid [I] Class to test. + * + * RETURNS + * TRUE if the class is an OLE v1 class, or FALSE otherwise. + */ +BOOL WINAPI CoIsOle1Class(REFCLSID clsid) +{ + FIXME("%s\n", debugstr_guid(clsid)); + return FALSE; +} + /*********************************************************************** * IsEqualGUID [OLE32.@] * * Compares two Unique Identifiers. * + * PARAMS + * rguid1 [I] The first GUID to compare. + * rguid2 [I] The other GUID to compare. + * * RETURNS * TRUE if equal */ #undef IsEqualGUID BOOL WINAPI IsEqualGUID( - REFGUID rguid1, /* [in] unique id 1 */ - REFGUID rguid2 /* [in] unique id 2 */ - ) + REFGUID rguid1, + REFGUID rguid2) { return !memcmp(rguid1,rguid2,sizeof(GUID)); } @@ -2280,6 +2376,13 @@ HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc /*********************************************************************** * CoSuspendClassObjects [OLE32.@] + * + * Suspends all registered class objects to prevent further requests coming in + * for those objects. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. */ HRESULT WINAPI CoSuspendClassObjects(void) { @@ -2289,6 +2392,12 @@ HRESULT WINAPI CoSuspendClassObjects(void) /*********************************************************************** * CoAddRefServerProcess [OLE32.@] + * + * Helper function for incrementing the reference count of a local-server + * process. + * + * RETURNS + * New reference count. */ ULONG WINAPI CoAddRefServerProcess(void) { @@ -2298,9 +2407,139 @@ ULONG WINAPI CoAddRefServerProcess(void) /*********************************************************************** * CoReleaseServerProcess [OLE32.@] + * + * Helper function for decrementing the reference count of a local-server + * process. + * + * RETURNS + * New reference count. */ ULONG WINAPI CoReleaseServerProcess(void) { FIXME("\n"); return 1; } + +/*********************************************************************** + * CoQueryProxyBlanket [OLE32.@] + * + * Retrieves the security settings being used by a proxy. + * + * PARAMS + * pProxy [I] Pointer to the proxy object. + * pAuthnSvc [O] The type of authentication service. + * pAuthzSvc [O] The type of authorization service. + * ppServerPrincName [O] Optional. The server prinicple name. + * pAuthnLevel [O] The authentication level. + * pImpLevel [O] The impersonation level. + * ppAuthInfo [O] Information specific to the authorization/authentication service. + * pCapabilities [O] Flags affecting the security behaviour. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoCopyProxy, CoSetProxyBlanket. + */ +HRESULT WINAPI CoQueryProxyBlanket(IUnknown *pProxy, DWORD *pAuthnSvc, + DWORD *pAuthzSvc, OLECHAR **ppServerPrincName, DWORD *pAuthnLevel, + DWORD *pImpLevel, void **ppAuthInfo, DWORD *pCapabilities) +{ + IClientSecurity *pCliSec; + HRESULT hr; + + TRACE("%p\n", pProxy); + + hr = IUnknown_QueryInterface(pProxy, &IID_IClientSecurity, (void **)&pCliSec); + if (SUCCEEDED(hr)) + { + hr = IClientSecurity_QueryBlanket(pCliSec, pProxy, pAuthnSvc, + pAuthzSvc, ppServerPrincName, + pAuthnLevel, pImpLevel, ppAuthInfo, + pCapabilities); + IClientSecurity_Release(pCliSec); + } + + if (FAILED(hr)) ERR("-- failed with 0x%08lx\n", hr); + return hr; +} + +/*********************************************************************** + * CoSetProxyBlanket [OLE32.@] + * + * Sets the security settings for a proxy. + * + * PARAMS + * pProxy [I] Pointer to the proxy object. + * AuthnSvc [I] The type of authentication service. + * AuthzSvc [I] The type of authorization service. + * pServerPrincName [I] The server prinicple name. + * AuthnLevel [I] The authentication level. + * ImpLevel [I] The impersonation level. + * pAuthInfo [I] Information specific to the authorization/authentication service. + * Capabilities [I] Flags affecting the security behaviour. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoQueryProxyBlanket, CoCopyProxy. + */ +HRESULT WINAPI CoSetProxyBlanket(IUnknown *pProxy, DWORD AuthnSvc, + DWORD AuthzSvc, OLECHAR *pServerPrincName, DWORD AuthnLevel, + DWORD ImpLevel, void *pAuthInfo, DWORD Capabilities) +{ + IClientSecurity *pCliSec; + HRESULT hr; + + TRACE("%p\n", pProxy); + + hr = IUnknown_QueryInterface(pProxy, &IID_IClientSecurity, (void **)&pCliSec); + if (SUCCEEDED(hr)) + { + hr = IClientSecurity_SetBlanket(pCliSec, pProxy, AuthnSvc, + AuthzSvc, pServerPrincName, + AuthnLevel, ImpLevel, pAuthInfo, + Capabilities); + IClientSecurity_Release(pCliSec); + } + + if (FAILED(hr)) ERR("-- failed with 0x%08lx\n", hr); + return hr; +} + +/*********************************************************************** + * CoCopyProxy [OLE32.@] + * + * Copies a proxy. + * + * PARAMS + * pProxy [I] Pointer to the proxy object. + * ppCopy [O] Copy of the proxy. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * + * SEE ALSO + * CoQueryProxyBlanket, CoSetProxyBlanket. + */ +HRESULT WINAPI CoCopyProxy(IUnknown *pProxy, IUnknown **ppCopy) +{ + IClientSecurity *pCliSec; + HRESULT hr; + + TRACE("%p\n", pProxy); + + hr = IUnknown_QueryInterface(pProxy, &IID_IClientSecurity, (void **)&pCliSec); + if (SUCCEEDED(hr)) + { + hr = IClientSecurity_CopyProxy(pCliSec, pProxy, ppCopy); + IClientSecurity_Release(pCliSec); + } + + if (FAILED(hr)) ERR("-- failed with 0x%08lx\n", hr); + return hr; +} diff --git a/reactos/lib/ole32/compobj_private.h b/reactos/lib/ole32/compobj_private.h index e950eeaca33..056f1491d5f 100644 --- a/reactos/lib/ole32/compobj_private.h +++ b/reactos/lib/ole32/compobj_private.h @@ -5,7 +5,7 @@ * Copyright 1999 Sylvain St-Germain * Copyright 2002 Marcus Meissner * Copyright 2003 Ove Kåven, TransGaming Technologies - * Copyright 2004 Mike Hearn, CodeWeavers Inc + * Copyright 2004 Mike Hearn, Rob Shearman, CodeWeavers Inc * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -39,54 +39,78 @@ #include "winternl.h" struct apartment; +typedef struct apartment APARTMENT; + +/* Thread-safety Annotation Legend: + * + * RO - The value is read only. It never changes after creation, so no + * locking is required. + * LOCK - The value is written to only using Interlocked* functions. + * CS - The value is read or written to with a critical section held. + * The identifier following "CS" is the specific critical section that + * must be used. + */ + +typedef enum ifstub_state +{ + IFSTUB_STATE_NORMAL_MARSHALED, + IFSTUB_STATE_NORMAL_UNMARSHALED, + IFSTUB_STATE_TABLE_MARSHALED +} IFSTUB_STATE; + +/* an interface stub */ +struct ifstub +{ + struct list entry; /* entry in stub_manager->ifstubs list (CS stub_manager->lock) */ + IRpcStubBuffer *stubbuffer; /* RO */ + IID iid; /* RO */ + IPID ipid; /* RO */ + IUnknown *iface; /* RO */ + IFSTUB_STATE state; /* CS stub_manager->lock */ +}; -/* exported interface */ -typedef struct tagXIF { - struct tagXIF *next; - LPVOID iface; /* interface pointer */ - IID iid; /* interface ID */ - IPID ipid; /* exported interface ID */ - LPRPCSTUBBUFFER stub; /* interface stub */ - DWORD refs; /* external reference count */ - HRESULT hres; /* result of stub creation attempt */ -} XIF; +/* stub managers hold refs on the object and each interface stub */ +struct stub_manager +{ + struct list entry; /* entry in apartment stubmgr list (CS apt->cs) */ + struct list ifstubs; /* list of active ifstubs for the object (CS lock) */ + CRITICAL_SECTION lock; + APARTMENT *apt; /* owning apt (RO) */ -/* exported object */ -typedef struct tagXOBJECT { - IRpcStubBufferVtbl *lpVtbl; - struct apartment *parent; - struct tagXOBJECT *next; - LPUNKNOWN obj; /* object identity (IUnknown) */ - OID oid; /* object ID */ - DWORD ifc; /* interface ID counter */ - XIF *ifaces; /* exported interfaces */ - DWORD refs; /* external reference count */ -} XOBJECT; + ULONG extrefs; /* number of 'external' references (LOCK) */ + ULONG refs; /* internal reference count (CS apt->cs) */ + OID oid; /* apartment-scoped unique identifier (RO) */ + IUnknown *object; /* the object we are managing the stub for (RO) */ + ULONG next_ipid; /* currently unused (LOCK) */ +}; /* imported interface proxy */ struct ifproxy { - struct list entry; - LPVOID iface; /* interface pointer */ - IID iid; /* interface ID */ - IPID ipid; /* imported interface ID */ - LPRPCPROXYBUFFER proxy; /* interface proxy */ - DWORD refs; /* imported (public) references */ + struct list entry; /* entry in proxy_manager list (CS parent->cs) */ + struct proxy_manager *parent; /* owning proxy_manager (RO) */ + LPVOID iface; /* interface pointer (RO) */ + IID iid; /* interface ID (RO) */ + IPID ipid; /* imported interface ID (RO) */ + LPRPCPROXYBUFFER proxy; /* interface proxy (RO) */ + DWORD refs; /* imported (public) references (CS parent->cs) */ }; /* imported object / proxy manager */ struct proxy_manager { - const IInternalUnknownVtbl *lpVtbl; - struct apartment *parent; - struct list entry; - LPRPCCHANNELBUFFER chan; /* channel to object */ - OXID oxid; /* object exported ID */ - OID oid; /* object ID */ - struct list interfaces; /* imported interfaces */ - DWORD refs; /* proxy reference count */ - CRITICAL_SECTION cs; /* thread safety for this object and children */ + const IMultiQIVtbl *lpVtbl; + struct apartment *parent; /* owning apartment (RO) */ + struct list entry; /* entry in apartment (CS parent->cs) */ + LPRPCCHANNELBUFFER chan; /* channel to object (CS cs) */ + OXID oxid; /* object exported ID (RO) */ + OID oid; /* object ID (RO) */ + struct list interfaces; /* imported interfaces (CS cs) */ + DWORD refs; /* proxy reference count (LOCK) */ + CRITICAL_SECTION cs; /* thread safety for this object and children */ + ULONG sorflags; /* STDOBJREF flags (RO) */ + IRemUnknown *remunk; /* proxy to IRemUnknown used for lifecycle management (CS cs) */ }; /* this needs to become a COM object that implements IRemUnknown */ @@ -94,28 +118,42 @@ struct apartment { struct list entry; - DWORD refs; /* refcount of the apartment */ - DWORD model; /* threading model */ - DWORD tid; /* thread id */ - HANDLE thread; /* thread handle */ - OXID oxid; /* object exporter ID */ - OID oidc; /* object ID counter, starts at 1, zero is invalid OID */ - HWND win; /* message window */ + DWORD refs; /* refcount of the apartment (LOCK) */ + DWORD model; /* threading model (RO) */ + DWORD tid; /* thread id (RO) */ + HANDLE thread; /* thread handle (RO) */ + OXID oxid; /* object exporter ID (RO) */ + DWORD ipidc; /* interface pointer ID counter, starts at 1 (LOCK) */ + HWND win; /* message window (RO) */ CRITICAL_SECTION cs; /* thread safety */ - LPMESSAGEFILTER filter; /* message filter */ - XOBJECT *objs; /* exported objects */ - struct list proxies; /* imported objects */ + LPMESSAGEFILTER filter; /* message filter (CS cs) */ + struct list proxies; /* imported objects (CS cs) */ + struct list stubmgrs; /* stub managers for exported objects (CS cs) */ + BOOL remunk_exported; /* has the IRemUnknown interface for this apartment been created yet? (CS cs) */ + + /* FIXME: These should all be removed long term as they leak information that should be encapsulated */ + OID oidc; /* object ID counter, starts at 1, zero is invalid OID (CS cs) */ DWORD listenertid; /* id of apartment_listener_thread */ - struct list stubmgrs; /* stub managers for exported objects */ + HANDLE shutdown_event; /* event used to tell the client_dispatch_thread to shut down */ }; -typedef struct apartment APARTMENT; +/* this is what is stored in TEB->ReservedForOle */ +struct oletls +{ + struct apartment *apt; + IErrorInfo *errorinfo; /* see errorinfo.c */ + IUnknown *state; /* see CoSetState */ + DWORD inits; /* number of times CoInitializeEx called */ +}; extern void* StdGlobalInterfaceTable_Construct(void); extern void StdGlobalInterfaceTable_Destroy(void* self); extern HRESULT StdGlobalInterfaceTable_GetFactory(LPVOID *ppv); +/* FIXME: these shouldn't be needed, except for 16-bit functions */ extern HRESULT WINE_StringFromCLSID(const CLSID *id,LPSTR idstr); +HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id); + extern HRESULT create_marshalled_proxy(REFCLSID rclsid, REFIID iid, LPVOID *ppv); extern void* StdGlobalInterfaceTableInstance; @@ -139,52 +177,21 @@ MARSHAL_Compare_Mids(wine_marshal_id *mid1,wine_marshal_id *mid2) { HRESULT MARSHAL_Disconnect_Proxies(APARTMENT *apt); HRESULT MARSHAL_GetStandardMarshalCF(LPVOID *ppv); -/* Thread-safety Annotation Legend: - * - * RO - The value is read only. It never changes after creation, so no - * locking is required. - * LOCK - The value is written to only using Interlocked* functions. - * CS - The value is read or written to with a critical section held. - * The identifier following "CS" is the specific critical section that - * must be used. - */ - -/* an interface stub */ -struct ifstub -{ - struct list entry; /* entry in stub_manager->ifstubs list (CS stub_manager->lock) */ - IRpcStubBuffer *stubbuffer; /* RO */ - IID iid; /* RO */ - IPID ipid; /* RO */ - IUnknown *iface; /* RO */ - BOOL table; /* CS stub_manager->lock */ -}; - - -/* stub managers hold refs on the object and each interface stub */ -struct stub_manager -{ - struct list entry; /* entry in apartment stubmgr list (CS apt->cs) */ - struct list ifstubs; /* list of active ifstubs for the object (CS lock) */ - CRITICAL_SECTION lock; - APARTMENT *apt; /* owning apt (RO) */ - - ULONG extrefs; /* number of 'external' references (LOCK) */ - ULONG refs; /* internal reference count (CS apt->cs) */ - OID oid; /* apartment-scoped unique identifier (RO) */ - IUnknown *object; /* the object we are managing the stub for (RO) */ - ULONG next_ipid; /* currently unused (LOCK) */ -}; - ULONG stub_manager_int_addref(struct stub_manager *This); ULONG stub_manager_int_release(struct stub_manager *This); struct stub_manager *new_stub_manager(APARTMENT *apt, IUnknown *object); ULONG stub_manager_ext_addref(struct stub_manager *m, ULONG refs); ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs); -IRpcStubBuffer *stub_manager_ipid_to_stubbuffer(struct stub_manager *m, const IPID *iid); struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *sb, IUnknown *iptr, REFIID iid, BOOL tablemarshal); -struct stub_manager *get_stub_manager(OXID oxid, OID oid); -struct stub_manager *get_stub_manager_from_object(OXID oxid, void *object); +struct stub_manager *get_stub_manager(APARTMENT *apt, OID oid); +struct stub_manager *get_stub_manager_from_object(APARTMENT *apt, void *object); +void apartment_disconnect_object(APARTMENT *apt, void *object); +BOOL stub_manager_notify_unmarshal(struct stub_manager *m, const IPID *ipid); +BOOL stub_manager_is_table_marshaled(struct stub_manager *m, const IPID *ipid); +HRESULT register_ifstub(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnknown *obj, MSHLFLAGS mshlflags); +HRESULT ipid_to_stub_manager(const IPID *ipid, APARTMENT **stub_apt, struct stub_manager **stubmgr_ret); +IRpcStubBuffer *ipid_to_stubbuffer(const IPID *ipid); +HRESULT start_apartment_remote_unknown(void); IRpcStubBuffer *mid_to_stubbuffer(wine_marshal_id *mid); @@ -202,23 +209,12 @@ HRESULT WINAPI RunningObjectTableImpl_UnInitialize(void); /* This function decomposes a String path to a String Table containing all the elements ("\" or "subDirectory" or "Directory" or "FileName") of the path */ int WINAPI FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable); -HRESULT WINAPI __CLSIDFromStringA(LPCSTR idstr, CLSID *id); - /* compobj.c */ -APARTMENT *COM_CreateApartment(DWORD model); APARTMENT *COM_ApartmentFromOXID(OXID oxid, BOOL ref); +APARTMENT *COM_ApartmentFromTID(DWORD tid); DWORD COM_ApartmentAddRef(struct apartment *apt); DWORD COM_ApartmentRelease(struct apartment *apt); -/* this is what is stored in TEB->ReservedForOle */ -struct oletls -{ - struct apartment *apt; - IErrorInfo *errorinfo; /* see errorinfo.c */ - IUnknown *state; /* see CoSetState */ - DWORD inits; /* number of times CoInitializeEx called */ -}; - /* * Per-thread values are stored in the TEB on offset 0xF80, * see http://www.microsoft.com/msj/1099/bugslayer/bugslayer1099.htm @@ -227,9 +223,9 @@ struct oletls /* will create if necessary */ static inline struct oletls *COM_CurrentInfo(void) { - if (!NtCurrentTeb()->ReservedForOle) + if (!NtCurrentTeb()->ReservedForOle) NtCurrentTeb()->ReservedForOle = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct oletls)); - + return NtCurrentTeb()->ReservedForOle; } diff --git a/reactos/lib/ole32/ifs.c b/reactos/lib/ole32/ifs.c index 325f08444d1..da82e118c01 100644 --- a/reactos/lib/ole32/ifs.c +++ b/reactos/lib/ole32/ifs.c @@ -527,8 +527,15 @@ static IMallocSpyVtbl VT_IMallocSpy = /****************************************************************************** * CoGetMalloc [OLE32.@] * + * Retrieves the current IMalloc interface for the process. + * + * PARAMS + * dwMemContext [I] + * lpMalloc [O] Address where memory allocator object will be stored. + * * RETURNS - * The win32 IMalloc + * Success: S_OK. + * Failure: HRESULT code. */ HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC *lpMalloc) { @@ -538,15 +545,31 @@ HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC *lpMalloc) /*********************************************************************** * CoTaskMemAlloc [OLE32.@] + * + * Allocates memory using the current process memory allocator. + * + * PARAMS + * size [I] Size of the memory block to allocate. + * * RETURNS - * pointer to newly allocated block + * Success: Pointer to newly allocated memory block. + * Failure: NULL. */ LPVOID WINAPI CoTaskMemAlloc(ULONG size) { return IMalloc_Alloc((LPMALLOC)&Malloc32,size); } + /*********************************************************************** * CoTaskMemFree [OLE32.@] + * + * Frees memory allocated from the current process memory allocator. + * + * PARAMS + * ptr [I] Memory block to free. + * + * RETURNS + * Nothing. */ VOID WINAPI CoTaskMemFree(LPVOID ptr) { @@ -555,8 +578,16 @@ VOID WINAPI CoTaskMemFree(LPVOID ptr) /*********************************************************************** * CoTaskMemRealloc [OLE32.@] + * + * Allocates memory using the current process memory allocator. + * + * PARAMS + * pvOld [I] Pointer to old memory block. + * size [I] Size of the new memory block. + * * RETURNS - * pointer to newly allocated block + * Success: Pointer to newly allocated memory block. + * Failure: NULL. */ LPVOID WINAPI CoTaskMemRealloc(LPVOID pvOld, ULONG size) { @@ -566,6 +597,16 @@ LPVOID WINAPI CoTaskMemRealloc(LPVOID pvOld, ULONG size) /*********************************************************************** * CoRegisterMallocSpy [OLE32.@] * + * Registers an object that receives notifications on memory allocations and + * frees. + * + * PARAMS + * pMallocSpy [I] New spy object. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * * NOTES * if a mallocspy is already registered, we can't do it again since * only the spy knows, how to free a memory block @@ -597,6 +638,16 @@ HRESULT WINAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy) /*********************************************************************** * CoRevokeMallocSpy [OLE32.@] * + * Revokes a previousl registered object that receives notifications on memory + * allocations and frees. + * + * PARAMS + * pMallocSpy [I] New spy object. + * + * RETURNS + * Success: S_OK. + * Failure: HRESULT code. + * * NOTES * we can't revoke a malloc spy as long as memory blocks allocated with * the spy are active since only the spy knows how to free them @@ -629,12 +680,16 @@ HRESULT WINAPI CoRevokeMallocSpy(void) /****************************************************************************** * IsValidInterface [OLE32.@] * + * Determines whether a pointer is a valid interface. + * + * PARAMS + * punk [I] Interface to be tested. + * * RETURNS - * True, if the passed pointer is a valid interface + * TRUE, if the passed pointer is a valid interface, or FALSE otherwise. */ -BOOL WINAPI IsValidInterface( - LPUNKNOWN punk /* [in] interface to be tested */ -) { +BOOL WINAPI IsValidInterface(LPUNKNOWN punk) +{ return !( IsBadReadPtr(punk,4) || IsBadReadPtr(punk->lpVtbl,4) || diff --git a/reactos/lib/ole32/marshal.c b/reactos/lib/ole32/marshal.c index 2962d538255..2ae897ae9bf 100644 --- a/reactos/lib/ole32/marshal.c +++ b/reactos/lib/ole32/marshal.c @@ -49,6 +49,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); extern const CLSID CLSID_DfMarshal; +/* number of refs given out for normal marshaling */ +#define NORMALEXTREFS 1 /* FIXME: this should be 5, but we have to wait for IRemUnknown support first */ + +/* private flag indicating that the caller does not want to notify the stub + * when the proxy disconnects or is destroyed */ +#define SORFP_NOLIFETIMEMGMT SORF_OXRES1 + +static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFIID riid, void **object); + /* Marshalling just passes a unique identifier to the remote client, * that makes it possible to find the passed interface again. * @@ -76,66 +85,75 @@ get_facbuf_for_iid(REFIID riid,IPSFactoryBuffer **facbuf) { return CoGetClassObject(&pxclsid,CLSCTX_INPROC_SERVER,NULL,&IID_IPSFactoryBuffer,(LPVOID*)facbuf); } -typedef struct _wine_marshal_data { - DWORD dwDestContext; - DWORD mshlflags; -} wine_marshal_data; - -IRpcStubBuffer *mid_to_stubbuffer(wine_marshal_id *mid) +/* creates a new stub manager */ +HRESULT register_ifstub(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnknown *obj, MSHLFLAGS mshlflags) { - IRpcStubBuffer *ret; - struct stub_manager *m; - - if (!(m = get_stub_manager(mid->oxid, mid->oid))) - { - WARN("unknown OID %s\n", wine_dbgstr_longlong(mid->oid)); - return NULL; - } - - ret = stub_manager_ipid_to_stubbuffer(m, &mid->ipid); - - stub_manager_int_release(m); - return ret; -} - -/* creates a new stub manager and sets mid->oid when mid->oid == 0 */ -static HRESULT register_ifstub(wine_marshal_id *mid, REFIID riid, IUnknown *obj, IRpcStubBuffer *stub, BOOL tablemarshal) -{ - struct stub_manager *manager = NULL; + struct stub_manager *manager; struct ifstub *ifstub; + BOOL tablemarshal; + IRpcStubBuffer *stub; + IPSFactoryBuffer *psfb; + HRESULT hr; - /* mid->oid of zero means create a new stub manager */ - - if (mid->oid && (manager = get_stub_manager(mid->oxid, mid->oid))) + hr = get_facbuf_for_iid(riid, &psfb); + if (hr != S_OK) { - TRACE("registering new ifstub on pre-existing manager\n"); + ERR("couldn't get IPSFactory buffer for interface %s\n", debugstr_guid(riid)); + return hr; } + + hr = IPSFactoryBuffer_CreateStub(psfb, riid, obj, &stub); + IPSFactoryBuffer_Release(psfb); + if (hr != S_OK) + { + ERR("Failed to create an IRpcStubBuffer from IPSFactory for %s\n", debugstr_guid(riid)); + return hr; + } + + if (mshlflags & MSHLFLAGS_NOPING) + stdobjref->flags = SORF_NOPING; + else + stdobjref->flags = SORF_NULL; + + stdobjref->oxid = apt->oxid; + + if ((manager = get_stub_manager_from_object(apt, obj))) + TRACE("registering new ifstub on pre-existing manager\n"); else { - struct apartment *apt; - TRACE("constructing new stub manager\n"); - apt = COM_ApartmentFromOXID(mid->oxid, TRUE); manager = new_stub_manager(apt, obj); - COM_ApartmentRelease(apt); - if (!manager) return E_OUTOFMEMORY; - - mid->oid = manager->oid; + if (!manager) + return E_OUTOFMEMORY; } + stdobjref->oid = manager->oid; + + tablemarshal = ((mshlflags & MSHLFLAGS_TABLESTRONG) || (mshlflags & MSHLFLAGS_TABLEWEAK)); ifstub = stub_manager_new_ifstub(manager, stub, obj, riid, tablemarshal); if (!ifstub) { + IRpcStubBuffer_Release(stub); stub_manager_int_release(manager); /* FIXME: should we do another release to completely destroy the * stub manager? */ return E_OUTOFMEMORY; } - if (!tablemarshal) stub_manager_ext_addref(manager, 1); + if (!tablemarshal) + { + stdobjref->cPublicRefs = NORMALEXTREFS; + stub_manager_ext_addref(manager, stdobjref->cPublicRefs); + } + else + { + stdobjref->cPublicRefs = 0; + if (mshlflags & MSHLFLAGS_TABLESTRONG) + stub_manager_ext_addref(manager, 1); + } - mid->ipid = ifstub->ipid; + stdobjref->ipid = ifstub->ipid; stub_manager_int_release(manager); return S_OK; @@ -145,47 +163,33 @@ static HRESULT register_ifstub(wine_marshal_id *mid, REFIID riid, IUnknown *obj, /* Client-side identity of the server object */ +static HRESULT proxy_manager_get_remunknown(struct proxy_manager * This, IRemUnknown **remunk); static void proxy_manager_destroy(struct proxy_manager * This); static HRESULT proxy_manager_find_ifproxy(struct proxy_manager * This, REFIID riid, struct ifproxy ** ifproxy_found); +static HRESULT proxy_manager_query_local_interface(struct proxy_manager * This, REFIID riid, void ** ppv); -static HRESULT WINAPI ClientIdentity_QueryInterface(IInternalUnknown * iface, REFIID riid, void ** ppv) +static HRESULT WINAPI ClientIdentity_QueryInterface(IMultiQI * iface, REFIID riid, void ** ppv) { - struct proxy_manager * This = (struct proxy_manager *)iface; HRESULT hr; - struct ifproxy * ifproxy; + MULTI_QI mqi; TRACE("%s\n", debugstr_guid(riid)); - if (IsEqualIID(riid, &IID_IUnknown) || - IsEqualIID(riid, &IID_IInternalUnknown)) - { - *ppv = (void *)iface; - IInternalUnknown_AddRef(iface); - return S_OK; - } + mqi.pIID = riid; + hr = IMultiQI_QueryMultipleInterfaces(iface, 1, &mqi); + *ppv = (void *)mqi.pItf; - hr = proxy_manager_find_ifproxy(This, riid, &ifproxy); - if (hr == S_OK) - { - *ppv = ifproxy->iface; - IUnknown_AddRef((IUnknown *)*ppv); - return S_OK; - } - - FIXME("interface not found %s\n", debugstr_guid(riid)); - - /* FIXME: call IRemUnknown::RemQueryInterface */ - return E_NOINTERFACE; + return hr; } -static ULONG WINAPI ClientIdentity_AddRef(IInternalUnknown * iface) +static ULONG WINAPI ClientIdentity_AddRef(IMultiQI * iface) { struct proxy_manager * This = (struct proxy_manager *)iface; TRACE("%p - before %ld\n", iface, This->refs); return InterlockedIncrement(&This->refs); } -static ULONG WINAPI ClientIdentity_Release(IInternalUnknown * iface) +static ULONG WINAPI ClientIdentity_Release(IMultiQI * iface) { struct proxy_manager * This = (struct proxy_manager *)iface; ULONG refs = InterlockedDecrement(&This->refs); @@ -195,50 +199,205 @@ static ULONG WINAPI ClientIdentity_Release(IInternalUnknown * iface) return refs; } -static HRESULT WINAPI ClientIdentity_QueryInternalInterface(IInternalUnknown * iface, REFIID riid, void ** ppv) +static HRESULT WINAPI ClientIdentity_QueryMultipleInterfaces(IMultiQI *iface, ULONG cMQIs, MULTI_QI *pMQIs) { - FIXME("(%s, %p): stub!\n", debugstr_guid(riid), ppv); - return E_NOINTERFACE; + struct proxy_manager * This = (struct proxy_manager *)iface; + REMQIRESULT *qiresults = NULL; + ULONG nonlocal_mqis = 0; + ULONG i; + ULONG successful_mqis = 0; + IID *iids = HeapAlloc(GetProcessHeap(), 0, cMQIs * sizeof(*iids)); + /* mapping of RemQueryInterface index to QueryMultipleInterfaces index */ + ULONG *mapping = HeapAlloc(GetProcessHeap(), 0, cMQIs * sizeof(*mapping)); + + TRACE("cMQIs: %ld\n", cMQIs); + + /* try to get a local interface - this includes already active proxy + * interfaces and also interfaces exposed by the proxy manager */ + for (i = 0; i < cMQIs; i++) + { + TRACE("iid[%ld] = %s\n", i, debugstr_guid(pMQIs[i].pIID)); + pMQIs[i].hr = proxy_manager_query_local_interface(This, pMQIs[i].pIID, (void **)&pMQIs[i].pItf); + if (pMQIs[i].hr == S_OK) + successful_mqis++; + else + { + iids[nonlocal_mqis] = *pMQIs[i].pIID; + mapping[nonlocal_mqis] = i; + nonlocal_mqis++; + } + } + + TRACE("%ld interfaces not found locally\n", nonlocal_mqis); + + /* if we have more than one interface not found locally then we must try + * to query the remote object for it */ + if (nonlocal_mqis != 0) + { + IRemUnknown *remunk; + HRESULT hr; + IPID *ipid; + + /* get the ipid of the first entry */ + /* FIXME: should we implement ClientIdentity on the ifproxies instead + * of the proxy_manager so we use the correct ipid here? */ + ipid = &LIST_ENTRY(list_head(&This->interfaces), struct ifproxy, entry)->ipid; + + /* get IRemUnknown proxy so we can communicate with the remote object */ + hr = proxy_manager_get_remunknown(This, &remunk); + + if (hr == S_OK) + { + hr = IRemUnknown_RemQueryInterface(remunk, ipid, NORMALEXTREFS, + nonlocal_mqis, iids, &qiresults); + if (FAILED(hr)) + ERR("IRemUnknown_RemQueryInterface failed with error 0x%08lx\n", hr); + } + + /* IRemUnknown_RemQueryInterface can return S_FALSE if only some of + * the interfaces were returned */ + if (SUCCEEDED(hr)) + { + /* try to unmarshal each object returned to us */ + for (i = 0; i < nonlocal_mqis; i++) + { + ULONG index = mapping[i]; + HRESULT hrobj = qiresults[i].hResult; + if (hrobj == S_OK) + hrobj = unmarshal_object(&qiresults[i].std, This->parent, + pMQIs[index].pIID, + (void **)&pMQIs[index].pItf); + + if (hrobj == S_OK) + successful_mqis++; + else + ERR("Failed to get pointer to interface %s\n", debugstr_guid(pMQIs[index].pIID)); + pMQIs[index].hr = hrobj; + } + } + + /* free the memory allocated by the proxy */ + CoTaskMemFree(qiresults); + } + + TRACE("%ld/%ld successfully queried\n", successful_mqis, cMQIs); + + HeapFree(GetProcessHeap(), 0, iids); + HeapFree(GetProcessHeap(), 0, mapping); + + if (successful_mqis == cMQIs) + return S_OK; /* we got all requested interfaces */ + else if (successful_mqis == 0) + return E_NOINTERFACE; /* we didn't get any interfaces */ + else + return S_FALSE; /* we got some interfaces */ } -static const IInternalUnknownVtbl ClientIdentity_Vtbl = +static const IMultiQIVtbl ClientIdentity_Vtbl = { ClientIdentity_QueryInterface, ClientIdentity_AddRef, ClientIdentity_Release, - ClientIdentity_QueryInternalInterface + ClientIdentity_QueryMultipleInterfaces }; static HRESULT ifproxy_get_public_ref(struct ifproxy * This) { - /* FIXME: call IRemUnknown::RemAddRef if necessary */ - return S_OK; + HRESULT hr = S_OK; + /* FIXME: as this call could possibly be going over the network, we + * are going to spend a long time in this CS. We might want to replace + * this with a mutex */ + EnterCriticalSection(&This->parent->cs); + if (This->refs == 0) + { + IRemUnknown *remunk = NULL; + + TRACE("getting public ref for ifproxy %p\n", This); + + hr = proxy_manager_get_remunknown(This->parent, &remunk); + if (hr == S_OK) + { + HRESULT hrref; + REMINTERFACEREF rif; + rif.ipid = This->ipid; + rif.cPublicRefs = NORMALEXTREFS; + rif.cPrivateRefs = 0; + hr = IRemUnknown_RemAddRef(remunk, 1, &rif, &hrref); + if (hr == S_OK && hrref == S_OK) + This->refs += NORMALEXTREFS; + else + ERR("IRemUnknown_RemAddRef returned with 0x%08lx, hrref = 0x%08lx\n", hr, hrref); + } + } + LeaveCriticalSection(&This->parent->cs); + + return hr; } static HRESULT ifproxy_release_public_refs(struct ifproxy * This) { - /* FIXME: call IRemUnknown::RemRelease */ - return S_OK; + HRESULT hr = S_OK; + + /* FIXME: as this call could possibly be going over the network, we + * are going to spend a long time in this CS. We might want to replace + * this with a mutex */ + EnterCriticalSection(&This->parent->cs); + if (This->refs > 0) + { + IRemUnknown *remunk = NULL; + + TRACE("releasing %ld refs\n", This->refs); + + hr = proxy_manager_get_remunknown(This->parent, &remunk); + if (hr == S_OK) + { + REMINTERFACEREF rif; + rif.ipid = This->ipid; + rif.cPublicRefs = This->refs; + rif.cPrivateRefs = 0; + hr = IRemUnknown_RemRelease(remunk, 1, &rif); + if (hr == S_OK) + This->refs = 0; + else if (hr == RPC_E_DISCONNECTED) + WARN("couldn't release references because object was " + "disconnected: oxid = %s, oid = %s\n", + wine_dbgstr_longlong(This->parent->oxid), + wine_dbgstr_longlong(This->parent->oid)); + else + ERR("IRemUnknown_RemRelease failed with error 0x%08lx\n", hr); + } + } + LeaveCriticalSection(&This->parent->cs); + + return hr; } static void ifproxy_disconnect(struct ifproxy * This) { - IRpcProxyBuffer_Disconnect(This->proxy); + ifproxy_release_public_refs(This); + if (This->proxy) IRpcProxyBuffer_Disconnect(This->proxy); } static void ifproxy_destroy(struct ifproxy * This) { + TRACE("%p\n", This); + /* release public references to this object so that the stub can know * when to destroy itself */ ifproxy_release_public_refs(This); list_remove(&This->entry); - if (This->proxy) IRpcProxyBuffer_Release(This->proxy); + /* note: we don't call Release for This->proxy because its lifetime is + * controlled by the return value from ClientIdentity_Release, which this + * function is always called from */ + HeapFree(GetProcessHeap(), 0, This); } -static HRESULT proxy_manager_construct(APARTMENT * apt, OXID oxid, OID oid, IRpcChannelBuffer * channel, struct proxy_manager ** proxy_manager) +static HRESULT proxy_manager_construct( + APARTMENT * apt, ULONG sorflags, OXID oxid, OID oid, + IRpcChannelBuffer * channel, struct proxy_manager ** proxy_manager) { struct proxy_manager * This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); if (!This) return E_OUTOFMEMORY; @@ -257,19 +416,65 @@ static HRESULT proxy_manager_construct(APARTMENT * apt, OXID oxid, OID oid, IRpc This->oxid = oxid; This->oid = oid; - This->refs = 0; /* will be incremented on creation of first proxy */ + This->refs = 1; + /* the DCOM draft specification states that the SORF_NOPING flag is + * proxy manager specific, not ifproxy specific, so this implies that we + * should store the STDOBJREF flags in the proxy manager. */ + This->sorflags = sorflags; + + assert(channel); This->chan = channel; /* FIXME: we should take the binding strings and construct the channel in this function */ + /* we create the IRemUnknown proxy on demand */ + This->remunk = NULL; + EnterCriticalSection(&apt->cs); - list_add_head(&apt->proxies, &This->entry); + /* FIXME: we are dependent on the ordering in here to make sure a proxy's + * IRemUnknown proxy doesn't get destroyed before the regual proxy does + * because we need the IRemUnknown proxy during the destruction of the + * regular proxy. Ideally, we should maintain a separate list for the + * IRemUnknown proxies that need late destruction */ + list_add_tail(&apt->proxies, &This->entry); LeaveCriticalSection(&apt->cs); + TRACE("%p created for OXID %s, OID %s\n", This, + wine_dbgstr_longlong(oxid), wine_dbgstr_longlong(oid)); + *proxy_manager = This; return S_OK; } -static HRESULT proxy_manager_create_ifproxy(struct proxy_manager * This, IPID ipid, REFIID riid, ULONG cPublicRefs, struct ifproxy ** iif_out) +static HRESULT proxy_manager_query_local_interface(struct proxy_manager * This, REFIID riid, void ** ppv) +{ + HRESULT hr; + struct ifproxy * ifproxy; + + TRACE("%s\n", debugstr_guid(riid)); + + if (IsEqualIID(riid, &IID_IUnknown) || + IsEqualIID(riid, &IID_IMultiQI)) + { + *ppv = (void *)&This->lpVtbl; + IMultiQI_AddRef((IMultiQI *)&This->lpVtbl); + return S_OK; + } + + hr = proxy_manager_find_ifproxy(This, riid, &ifproxy); + if (hr == S_OK) + { + *ppv = ifproxy->iface; + IUnknown_AddRef((IUnknown *)*ppv); + return S_OK; + } + + *ppv = NULL; + return E_NOINTERFACE; +} + +static HRESULT proxy_manager_create_ifproxy( + struct proxy_manager * This, IPID ipid, REFIID riid, ULONG cPublicRefs, + struct ifproxy ** iif_out) { HRESULT hr; IPSFactoryBuffer * psfb; @@ -278,25 +483,42 @@ static HRESULT proxy_manager_create_ifproxy(struct proxy_manager * This, IPID ip list_init(&ifproxy->entry); + ifproxy->parent = This; ifproxy->ipid = ipid; ifproxy->iid = *riid; ifproxy->refs = cPublicRefs; ifproxy->proxy = NULL; - hr = get_facbuf_for_iid(riid, &psfb); - if (hr == S_OK) + /* the IUnknown interface is special because it does not have a + * proxy associated with the ifproxy as we handle IUnknown ourselves */ + if (IsEqualIID(riid, &IID_IUnknown)) { - /* important note: the outer unknown is set to the proxy manager. - * This ensures the COM identity rules are not violated, by having a - * one-to-one mapping of objects on the proxy side to objects on the - * stub side, no matter which interface you view the object through */ - hr = IPSFactoryBuffer_CreateProxy(psfb, (IUnknown *)&This->lpVtbl, riid, - &ifproxy->proxy, &ifproxy->iface); - IPSFactoryBuffer_Release(psfb); + ifproxy->iface = (void *)&This->lpVtbl; + hr = S_OK; } + else + { + hr = get_facbuf_for_iid(riid, &psfb); + if (hr == S_OK) + { + /* important note: the outer unknown is set to the proxy manager. + * This ensures the COM identity rules are not violated, by having a + * one-to-one mapping of objects on the proxy side to objects on the + * stub side, no matter which interface you view the object through */ + hr = IPSFactoryBuffer_CreateProxy(psfb, (IUnknown *)&This->lpVtbl, riid, + &ifproxy->proxy, &ifproxy->iface); + IPSFactoryBuffer_Release(psfb); + if (hr != S_OK) + ERR("Could not create proxy for interface %s, error 0x%08lx\n", + debugstr_guid(riid), hr); + } + else + ERR("Could not get IPSFactoryBuffer for interface %s, error 0x%08lx\n", + debugstr_guid(riid), hr); - if (hr == S_OK) - hr = IRpcProxyBuffer_Connect(ifproxy->proxy, This->chan); + if (hr == S_OK) + hr = IRpcProxyBuffer_Connect(ifproxy->proxy, This->chan); + } /* get at least one external reference to the object to keep it alive */ if (hr == S_OK) @@ -309,6 +531,8 @@ static HRESULT proxy_manager_create_ifproxy(struct proxy_manager * This, IPID ip LeaveCriticalSection(&This->cs); *iif_out = ifproxy; + TRACE("ifproxy %p created for IPID %s, interface %s with %lu public refs\n", + ifproxy, debugstr_guid(&ipid), debugstr_guid(riid), cPublicRefs); } else ifproxy_destroy(ifproxy); @@ -341,6 +565,9 @@ static void proxy_manager_disconnect(struct proxy_manager * This) { struct list * cursor; + TRACE("oxid = %s, oid = %s\n", wine_dbgstr_longlong(This->oxid), + wine_dbgstr_longlong(This->oid)); + EnterCriticalSection(&This->cs); LIST_FOR_EACH(cursor, &This->interfaces) @@ -352,13 +579,73 @@ static void proxy_manager_disconnect(struct proxy_manager * This) /* apartment is being destroyed so don't keep a pointer around to it */ This->parent = NULL; + /* FIXME: will this still be necessary if/when we use a real RPC + * channel? */ + IRpcChannelBuffer_Release(This->chan); + This->chan = NULL; + LeaveCriticalSection(&This->cs); } +static HRESULT proxy_manager_get_remunknown(struct proxy_manager * This, IRemUnknown **remunk) +{ + HRESULT hr = S_OK; + + /* we don't want to try and unmarshal or use IRemUnknown if we don't want + * lifetime management */ + if (This->sorflags & SORFP_NOLIFETIMEMGMT) + return S_FALSE; + + EnterCriticalSection(&This->cs); + if (This->remunk) + /* already created - return existing object */ + *remunk = This->remunk; + else if (!This->parent) + /* disconnected - we can't create IRemUnknown */ + hr = S_FALSE; + else + { + STDOBJREF stdobjref; + /* Don't want IRemUnknown lifetime management as this is IRemUnknown! + * We also don't care about whether or not the stub is still alive */ + stdobjref.flags = SORFP_NOLIFETIMEMGMT | SORF_NOPING; + stdobjref.cPublicRefs = 1; + /* oxid of destination object */ + stdobjref.oxid = This->oxid; + /* FIXME: what should be used for the oid? The DCOM draft doesn't say */ + stdobjref.oid = (OID)-1; + /* FIXME: this is a hack around not having an OXID resolver yet - + * the OXID resolver should give us the IPID of the IRemUnknown + * interface */ + stdobjref.ipid.Data1 = 0xffffffff; + stdobjref.ipid.Data2 = 0xffff; + stdobjref.ipid.Data3 = 0xffff; + assert(sizeof(stdobjref.ipid.Data4) == sizeof(stdobjref.oxid)); + memcpy(&stdobjref.ipid.Data4, &stdobjref.oxid, sizeof(OXID)); + + /* do the unmarshal */ + hr = unmarshal_object(&stdobjref, This->parent, &IID_IRemUnknown, (void**)&This->remunk); + if (hr == S_OK) + *remunk = This->remunk; + } + LeaveCriticalSection(&This->cs); + + TRACE("got IRemUnknown* pointer %p, hr = 0x%08lx\n", *remunk, hr); + + return hr; +} + +/* destroys a proxy manager, freeing the memory it used. + * Note: this function should not be called from a list iteration in the + * apartment, due to the fact that it removes itself from the apartment and + * it could add a proxy to IRemUnknown into the apartment. */ static void proxy_manager_destroy(struct proxy_manager * This) { struct list * cursor; + TRACE("oxid = %s, oid = %s\n", wine_dbgstr_longlong(This->oxid), + wine_dbgstr_longlong(This->oid)); + if (This->parent) { EnterCriticalSection(&This->parent->cs); @@ -377,19 +664,23 @@ static void proxy_manager_destroy(struct proxy_manager * This) } /* destroy all of the interface proxies */ - while (!(cursor = list_head(&This->interfaces))) + while ((cursor = list_head(&This->interfaces))) { struct ifproxy * ifproxy = LIST_ENTRY(cursor, struct ifproxy, entry); ifproxy_destroy(ifproxy); } - IRpcChannelBuffer_Release(This->chan); + if (This->remunk) IRemUnknown_Release(This->remunk); + if (This->chan) IRpcChannelBuffer_Release(This->chan); DeleteCriticalSection(&This->cs); HeapFree(GetProcessHeap(), 0, This); } +/* finds the proxy manager corresponding to a given OXID and OID that has + * been unmarshaled in the specified apartment. The caller must release the + * reference to the proxy_manager when the object is no longer used. */ static BOOL find_proxy_manager(APARTMENT * apt, OXID oxid, OID oid, struct proxy_manager ** proxy_found) { BOOL found = FALSE; @@ -402,6 +693,7 @@ static BOOL find_proxy_manager(APARTMENT * apt, OXID oxid, OID oid, struct proxy if ((oxid == proxy->oxid) && (oid == proxy->oid)) { *proxy_found = proxy; + ClientIdentity_AddRef((IMultiQI *)&proxy->lpVtbl); found = TRUE; break; } @@ -475,10 +767,10 @@ StdMarshalImpl_GetUnmarshalClass( static HRESULT WINAPI StdMarshalImpl_GetMarshalSizeMax( LPMARSHAL iface, REFIID riid, void* pv, DWORD dwDestContext, - void* pvDestContext, DWORD mshlflags, DWORD* pSize -) { - *pSize = sizeof(wine_marshal_id)+sizeof(wine_marshal_data); - return S_OK; + void* pvDestContext, DWORD mshlflags, DWORD* pSize) +{ + *pSize = sizeof(STDOBJREF); + return S_OK; } static HRESULT WINAPI @@ -486,49 +778,32 @@ StdMarshalImpl_MarshalInterface( LPMARSHAL iface, IStream *pStm,REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags ) { - wine_marshal_id mid; - wine_marshal_data md; + STDOBJREF stdobjref; IUnknown *pUnk; ULONG res; HRESULT hres; - IRpcStubBuffer *stubbuffer; - IPSFactoryBuffer *psfacbuf; - BOOL tablemarshal; - struct stub_manager *manager; + APARTMENT *apt = COM_CurrentApt(); TRACE("(...,%s,...)\n",debugstr_guid(riid)); + if (!apt) + { + ERR("Apartment not initialized\n"); + return CO_E_NOTINITIALIZED; + } + start_apartment_listener_thread(); /* just to be sure we have one running. */ + start_apartment_remote_unknown(); - hres = get_facbuf_for_iid(riid,&psfacbuf); - if (hres) return hres; - - hres = IPSFactoryBuffer_CreateStub(psfacbuf,riid,pv,&stubbuffer); - IPSFactoryBuffer_Release(psfacbuf); - if (hres) { - FIXME("Failed to create an RpcStubBuffer from PSFactory for %s\n",debugstr_guid(riid)); - return hres; - } - - tablemarshal = ((mshlflags & MSHLFLAGS_TABLESTRONG) || (mshlflags & MSHLFLAGS_TABLEWEAK)); - if (tablemarshal) FIXME("table marshalling unimplemented\n"); - - /* now fill out the MID */ - mid.oxid = COM_CurrentApt()->oxid; - - IUnknown_QueryInterface((LPUNKNOWN)pv, riid, (LPVOID*)&pUnk); - - if ((manager = get_stub_manager_from_object(mid.oxid, pUnk))) + hres = IUnknown_QueryInterface((LPUNKNOWN)pv, riid, (LPVOID*)&pUnk); + if (hres != S_OK) { - mid.oid = manager->oid; - stub_manager_int_release(manager); + ERR("object doesn't expose interface %s, failing with error 0x%08lx\n", + debugstr_guid(riid), hres); + return E_NOINTERFACE; } - else - { - mid.oid = 0; /* will be set by register_ifstub */ - } - - hres = register_ifstub(&mid, riid, pUnk, stubbuffer, tablemarshal); + + hres = register_ifstub(apt, &stdobjref, riid, pUnk, mshlflags); IUnknown_Release(pUnk); @@ -538,101 +813,181 @@ StdMarshalImpl_MarshalInterface( return hres; } - hres = IStream_Write(pStm,&mid,sizeof(mid),&res); + hres = IStream_Write(pStm, &stdobjref, sizeof(stdobjref), &res); if (hres) return hres; - /* and then the marshal data */ - md.dwDestContext = dwDestContext; - md.mshlflags = mshlflags; - hres = IStream_Write(pStm,&md,sizeof(md),&res); - if (hres) return hres; - return S_OK; } +/* helper for StdMarshalImpl_UnmarshalInterface - does the unmarshaling with + * no questions asked about the rules surrounding same-apartment unmarshals + * and table marshaling */ +static HRESULT unmarshal_object(const STDOBJREF *stdobjref, APARTMENT *apt, REFIID riid, void **object) +{ + struct proxy_manager *proxy_manager = NULL; + HRESULT hr = S_OK; + + assert(apt); + + TRACE("stdobjref:\n\tflags = %04lx\n\tcPublicRefs = %ld\n\toxid = %s\n\toid = %s\n\tipid = %s\n", + stdobjref->flags, stdobjref->cPublicRefs, + wine_dbgstr_longlong(stdobjref->oxid), + wine_dbgstr_longlong(stdobjref->oid), + debugstr_guid(&stdobjref->ipid)); + + /* create an a new proxy manager if one doesn't already exist for the + * object */ + if (!find_proxy_manager(apt, stdobjref->oxid, stdobjref->oid, &proxy_manager)) + { + IRpcChannelBuffer *chanbuf; + wine_marshal_id mid; + + mid.oxid = stdobjref->oxid; + mid.oid = stdobjref->oid; + mid.ipid = stdobjref->ipid; + + hr = PIPE_GetNewPipeBuf(&mid,&chanbuf); + if (hr == S_OK) + hr = proxy_manager_construct(apt, stdobjref->flags, + stdobjref->oxid, stdobjref->oid, + chanbuf, &proxy_manager); + } + else + TRACE("proxy manager already created, using\n"); + + if (hr == S_OK) + { + struct ifproxy * ifproxy; + hr = proxy_manager_find_ifproxy(proxy_manager, riid, &ifproxy); + if (hr == E_NOINTERFACE) + hr = proxy_manager_create_ifproxy(proxy_manager, stdobjref->ipid, + riid, stdobjref->cPublicRefs, + &ifproxy); + + if (hr == S_OK) + { + /* FIXME: push this AddRef inside proxy_manager_find_ifproxy/create_ifproxy? */ + ClientIdentity_AddRef((IMultiQI*)&proxy_manager->lpVtbl); + *object = ifproxy->iface; + } + } + + /* release our reference to the proxy manager - the client/apartment + * will hold on to the remaining reference for us */ + if (proxy_manager) ClientIdentity_Release((IMultiQI*)&proxy_manager->lpVtbl); + + return hr; +} + static HRESULT WINAPI StdMarshalImpl_UnmarshalInterface(LPMARSHAL iface, IStream *pStm, REFIID riid, void **ppv) { struct stub_manager *stubmgr; - wine_marshal_id mid; - wine_marshal_data md; + STDOBJREF stdobjref; ULONG res; HRESULT hres; - IRpcChannelBuffer *chanbuf; - struct proxy_manager *proxy_manager; APARTMENT *apt = COM_CurrentApt(); + APARTMENT *stub_apt; TRACE("(...,%s,....)\n",debugstr_guid(riid)); - if (!apt) return CO_E_NOTINITIALIZED; + /* we need an apartment to unmarshal into */ + if (!apt) + { + ERR("Apartment not initialized\n"); + return CO_E_NOTINITIALIZED; + } - hres = IStream_Read(pStm,&mid,sizeof(mid),&res); - if (hres) return hres; - hres = IStream_Read(pStm,&md,sizeof(md),&res); + /* read STDOBJREF from wire */ + hres = IStream_Read(pStm, &stdobjref, sizeof(stdobjref), &res); if (hres) return hres; /* check if we're marshalling back to ourselves */ - /* FIXME: commented out until we can get the tests passing with it uncommented. */ - if (/*(apt->oxid == mid.oxid) &&*/ (stubmgr = get_stub_manager(mid.oxid, mid.oid))) + if ((apt->oxid == stdobjref.oxid) && (stubmgr = get_stub_manager(apt, stdobjref.oid))) { - TRACE("Unmarshalling object marshalled in same apartment for iid %s, returning original object %p\n", debugstr_guid(riid), stubmgr->object); + TRACE("Unmarshalling object marshalled in same apartment for iid %s, " + "returning original object %p\n", debugstr_guid(riid), stubmgr->object); hres = IUnknown_QueryInterface(stubmgr->object, riid, ppv); - if ((md.mshlflags & MSHLFLAGS_TABLESTRONG) || (md.mshlflags & MSHLFLAGS_TABLEWEAK)) - FIXME("table marshalling unimplemented\n"); /* unref the ifstub. FIXME: only do this on success? */ - stub_manager_ext_release(stubmgr, 1); + if (!stub_manager_is_table_marshaled(stubmgr, &stdobjref.ipid)) + stub_manager_ext_release(stubmgr, 1); stub_manager_int_release(stubmgr); return hres; } - if (!find_proxy_manager(apt, mid.oxid, mid.oid, &proxy_manager)) + /* notify stub manager about unmarshal if process-local object. + * note: if the oxid is not found then we and native will quite happily + * ignore table marshaling and normal marshaling rules regarding number of + * unmarshals, etc, but if you abuse these rules then your proxy could end + * up returning RPC_E_DISCONNECTED. */ + if ((stub_apt = COM_ApartmentFromOXID(stdobjref.oxid, TRUE))) { - hres = PIPE_GetNewPipeBuf(&mid,&chanbuf); - if (hres == S_OK) - hres = proxy_manager_construct(apt, mid.oxid, mid.oid, chanbuf, &proxy_manager); + if ((stubmgr = get_stub_manager(stub_apt, stdobjref.oid))) + { + if (!stub_manager_notify_unmarshal(stubmgr, &stdobjref.ipid)) + hres = CO_E_OBJNOTCONNECTED; + + stub_manager_int_release(stubmgr); + } + else + { + WARN("Couldn't find object for OXID %s, OID %s, assuming disconnected\n", + wine_dbgstr_longlong(stdobjref.oxid), + wine_dbgstr_longlong(stdobjref.oid)); + hres = CO_E_OBJNOTCONNECTED; + } + + COM_ApartmentRelease(stub_apt); } + else + TRACE("Treating unmarshal from OXID %s as inter-process\n", + wine_dbgstr_longlong(stdobjref.oxid)); if (hres == S_OK) - { - struct ifproxy * ifproxy; - hres = proxy_manager_find_ifproxy(proxy_manager, riid, &ifproxy); - if (hres == S_OK) - IUnknown_AddRef((IUnknown *)ifproxy->iface); - else if (hres == E_NOINTERFACE) - hres = proxy_manager_create_ifproxy(proxy_manager, mid.ipid, riid, 1, &ifproxy); + hres = unmarshal_object(&stdobjref, apt, riid, ppv); - if (hres == S_OK) - *ppv = ifproxy->iface; /* AddRef'd above */ - } + if (hres) WARN("Failed with error 0x%08lx\n", hres); + else TRACE("Successfully created proxy %p\n", *ppv); return hres; } static HRESULT WINAPI StdMarshalImpl_ReleaseMarshalData(LPMARSHAL iface, IStream *pStm) { - wine_marshal_id mid; + STDOBJREF stdobjref; ULONG res; HRESULT hres; struct stub_manager *stubmgr; + APARTMENT *apt; TRACE("iface=%p, pStm=%p\n", iface, pStm); - hres = IStream_Read(pStm,&mid,sizeof(mid),&res); + hres = IStream_Read(pStm, &stdobjref, sizeof(stdobjref), &res); if (hres) return hres; - if (!(stubmgr = get_stub_manager(mid.oxid, mid.oid))) + if (!(apt = COM_ApartmentFromOXID(stdobjref.oxid, TRUE))) { - ERR("could not map MID to stub manager, oxid=%s, oid=%s\n", - wine_dbgstr_longlong(mid.oxid), wine_dbgstr_longlong(mid.oid)); + WARN("Could not map OXID %s to apartment object\n", + wine_dbgstr_longlong(stdobjref.oxid)); return RPC_E_INVALID_OBJREF; } - + + if (!(stubmgr = get_stub_manager(apt, stdobjref.oid))) + { + ERR("could not map MID to stub manager, oxid=%s, oid=%s\n", + wine_dbgstr_longlong(stdobjref.oxid), wine_dbgstr_longlong(stdobjref.oid)); + return RPC_E_INVALID_OBJREF; + } + + /* FIXME: don't release if table-weak and already unmarshaled an object */ + /* FIXME: this should also depend on stdobjref.cPublicRefs */ stub_manager_ext_release(stubmgr, 1); stub_manager_int_release(stubmgr); + COM_ApartmentRelease(apt); return S_OK; } @@ -744,7 +1099,7 @@ static HRESULT get_marshaler(REFIID riid, IUnknown *pUnk, DWORD dwDestContext, * The function leaves the stream pointer at the start of the data written * to the stream by the IMarshal* object. */ -static HRESULT get_unmarshaler_from_stream(IStream *stream, IMarshal **marshal) +static HRESULT get_unmarshaler_from_stream(IStream *stream, IMarshal **marshal, IID *iid) { HRESULT hr; ULONG res; @@ -765,6 +1120,8 @@ static HRESULT get_unmarshaler_from_stream(IStream *stream, IMarshal **marshal) return RPC_E_INVALID_OBJREF; } + if (iid) *iid = objref.iid; + /* FIXME: handler marshaling */ if (objref.flags & OBJREF_STANDARD) { @@ -978,6 +1335,7 @@ HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, hr = E_UNEXPECTED; goto cleanup; } + objref.u_objref.u_custom.clsid = marshaler_clsid; objref.u_objref.u_custom.cbExtension = 0; objref.u_objref.u_custom.size = GlobalSize(hGlobal); /* write constant sized OR_CUSTOM data into stream */ @@ -1010,6 +1368,9 @@ cleanup: if (pMarshalStream && (objref.flags & OBJREF_CUSTOM)) IStream_Release(pMarshalStream); IMarshal_Release(pMarshal); + + TRACE("completed with hr 0x%08lx\n", hr); + return hr; } @@ -1035,21 +1396,39 @@ cleanup: */ HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *ppv) { - HRESULT hr; + HRESULT hr; LPMARSHAL pMarshal; + IID iid; + IUnknown *object; TRACE("(%p, %s, %p)\n", pStream, debugstr_guid(riid), ppv); - hr = get_unmarshaler_from_stream(pStream, &pMarshal); + hr = get_unmarshaler_from_stream(pStream, &pMarshal, &iid); if (hr != S_OK) return hr; /* call the helper object to do the actual unmarshaling */ - hr = IMarshal_UnmarshalInterface(pMarshal, pStream, riid, ppv); + hr = IMarshal_UnmarshalInterface(pMarshal, pStream, &iid, (LPVOID*)&object); if (hr) ERR("IMarshal::UnmarshalInterface failed, 0x%08lx\n", hr); + /* IID_NULL means use the interface ID of the marshaled object */ + if (!IsEqualIID(riid, &IID_NULL)) + iid = *riid; + + if (hr == S_OK) + { + hr = IUnknown_QueryInterface(object, &iid, ppv); + if (hr) + ERR("Couldn't query for interface %s, hr = 0x%08lx\n", + debugstr_guid(riid), hr); + IUnknown_Release(object); + } + IMarshal_Release(pMarshal); + + TRACE("completed with hr 0x%lx\n", hr); + return hr; } @@ -1083,7 +1462,7 @@ HRESULT WINAPI CoReleaseMarshalData(IStream *pStream) TRACE("(%p)\n", pStream); - hr = get_unmarshaler_from_stream(pStream, &pMarshal); + hr = get_unmarshaler_from_stream(pStream, &pMarshal, NULL); if (hr != S_OK) return hr; diff --git a/reactos/lib/ole32/ole2.c b/reactos/lib/ole32/ole2.c index 2a428123d62..cfa0b5aa8a5 100644 --- a/reactos/lib/ole32/ole2.c +++ b/reactos/lib/ole32/ole2.c @@ -48,6 +48,7 @@ #include "wine/wingdi16.h" #include "wine/winuser16.h" #include "ole32_main.h" +#include "compobj_private.h" #include "wine/debug.h" @@ -243,18 +244,6 @@ HRESULT WINAPI OleInitialize(LPVOID reserved) return hr; } -/****************************************************************************** - * CoGetCurrentProcess [COMPOBJ.34] - * CoGetCurrentProcess [OLE32.@] - * - * NOTES - * Is DWORD really the correct return type for this function? - */ -DWORD WINAPI CoGetCurrentProcess(void) -{ - return GetCurrentProcessId(); -} - /****************************************************************************** * OleUninitialize [OLE2.3] * OleUninitialize [OLE32.@] @@ -300,20 +289,6 @@ void WINAPI OleUninitialize(void) CoUninitialize(); } -/****************************************************************************** - * CoRegisterMessageFilter [OLE32.@] - */ -HRESULT WINAPI CoRegisterMessageFilter( - LPMESSAGEFILTER lpMessageFilter, /* [in] Pointer to interface */ - LPMESSAGEFILTER *lplpMessageFilter /* [out] Indirect pointer to prior instance if non-NULL */ -) { - FIXME("stub\n"); - if (lplpMessageFilter) { - *lplpMessageFilter = NULL; - } - return S_OK; -} - /****************************************************************************** * OleInitializeWOW [OLE32.@] */ @@ -2313,6 +2288,44 @@ HRESULT WINAPI OleCreate( return hres; } +/****************************************************************************** + * OleSetAutoConvert [OLE32.@] + */ +/* FIXME: convert to Unicode */ +HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew) +{ + HKEY hkey = 0; + char buf[200], szClsidNew[200]; + HRESULT res = S_OK; + + TRACE("(%s,%s)\n", debugstr_guid(clsidOld), debugstr_guid(clsidNew)); + sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]); + WINE_StringFromCLSID(clsidNew, szClsidNew); + if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey)) + { + res = REGDB_E_CLASSNOTREG; + goto done; + } + if (RegSetValueA(hkey, "AutoConvertTo", REG_SZ, szClsidNew, strlen(szClsidNew)+1)) + { + res = REGDB_E_WRITEREGDB; + goto done; + } + +done: + if (hkey) RegCloseKey(hkey); + return res; +} + +/****************************************************************************** + * OleDoAutoConvert [OLE32.@] + */ +HRESULT WINAPI OleDoAutoConvert(IStorage *pStg, LPCLSID pClsidNew) +{ + FIXME("(%p,%p) : stub\n",pStg,pClsidNew); + return E_NOTIMPL; +} + /*********************************************************************** * OLE_FreeClipDataArray [internal] * diff --git a/reactos/lib/ole32/ole2stubs.c b/reactos/lib/ole32/ole2stubs.c index 2bcaabf689d..bb827871917 100644 --- a/reactos/lib/ole32/ole2stubs.c +++ b/reactos/lib/ole32/ole2stubs.c @@ -138,15 +138,6 @@ HRESULT WINAPI OleRegEnumFormatEtc ( return E_NOTIMPL; } -/*********************************************************************** - * CoIsOle1Class [OLE32.@] - */ -BOOL WINAPI CoIsOle1Class(REFCLSID clsid) -{ - FIXME("%s\n", debugstr_guid(clsid)); - return FALSE; -} - /*********************************************************************** * DllGetClassObject [OLE2.4] */ diff --git a/reactos/lib/ole32/ole32.spec b/reactos/lib/ole32/ole32.spec index ddc4827123c..3a8d3333260 100644 --- a/reactos/lib/ole32/ole32.spec +++ b/reactos/lib/ole32/ole32.spec @@ -7,7 +7,7 @@ @ stdcall CLSIDFromString(wstr ptr) @ stdcall CoAddRefServerProcess() @ stdcall CoBuildVersion() -@ stub CoCopyProxy #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED +@ stdcall CoCopyProxy(ptr ptr) @ stdcall CoCreateFreeThreadedMarshaler(ptr ptr) @ stdcall CoCreateGuid(ptr) @ stdcall CoCreateInstance(ptr ptr long ptr ptr) @@ -49,7 +49,7 @@ @ stdcall CoMarshalInterface(ptr ptr ptr long ptr long) @ stub CoQueryAuthenticationServices @ stub CoQueryClientBlanket -@ stub CoQueryProxyBlanket +@ stdcall CoQueryProxyBlanket(ptr ptr ptr ptr ptr ptr ptr ptr) @ stub CoQueryReleaseObject @ stub CoRegisterChannelHook @ stdcall CoRegisterClassObject(ptr ptr long long ptr) @@ -63,7 +63,7 @@ @ stub CoRevertToSelf #@ stdcall () return 0,ERR_NOTIMPLEMENTED @ stdcall CoRevokeClassObject(long) @ stdcall CoRevokeMallocSpy() -@ stub CoSetProxyBlanket #@ stdcall (ptr long long wstr long long ptr long) return 0,ERR_NOTIMPLEMENTED +@ stdcall CoSetProxyBlanket(ptr long long wstr long long ptr long) @ stdcall CoSetState(ptr) @ stub CoSwitchCallContext @ stdcall CoSuspendClassObjects() @@ -92,8 +92,8 @@ @ stdcall DllDebugObjectRPCHook(long ptr) @ stdcall -private DllGetClassObject (ptr ptr ptr) OLE32_DllGetClassObject @ stub DllGetClassObjectWOW -@ stdcall -private DllRegisterServer() OLE32_DllRegisterServer -@ stdcall -private DllUnregisterServer() OLE32_DllUnregisterServer +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() @ stdcall DoDragDrop(ptr ptr long ptr) @ stub EnableHookObject @ stdcall FreePropVariantArray(long ptr) diff --git a/reactos/lib/ole32/ole32_main.c b/reactos/lib/ole32/ole32_main.c index 1dfa6e7647f..a258d19a2b8 100644 --- a/reactos/lib/ole32/ole32_main.c +++ b/reactos/lib/ole32/ole32_main.c @@ -121,7 +121,6 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) switch(fdwReason) { case DLL_PROCESS_ATTACH: - DisableThreadLibraryCalls(hinstDLL); OLE32_hInstance = hinstDLL; COMPOBJ_InitProcess(); if (TRACE_ON(ole)) CoRegisterMallocSpy((LPVOID)-1); @@ -132,6 +131,10 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) COMPOBJ_UninitProcess(); OLE32_hInstance = 0; break; + + case DLL_THREAD_DETACH: + COM_TlsDestroy(); + break; } return TRUE; } diff --git a/reactos/lib/ole32/ole32_main.h b/reactos/lib/ole32/ole32_main.h index a3f5644ccdf..7ea3386052c 100644 --- a/reactos/lib/ole32/ole32_main.h +++ b/reactos/lib/ole32/ole32_main.h @@ -29,5 +29,6 @@ extern HINSTANCE OLE32_hInstance; void COMPOBJ_InitProcess( void ); void COMPOBJ_UninitProcess( void ); +void COM_TlsDestroy( void ); #endif /* __WINE_OLE32_MAIN_H */ diff --git a/reactos/lib/ole32/oleproxy.c b/reactos/lib/ole32/oleproxy.c index 5532988d533..951d1660dee 100644 --- a/reactos/lib/ole32/oleproxy.c +++ b/reactos/lib/ole32/oleproxy.c @@ -2,6 +2,7 @@ * OLE32 proxy/stub handler * * Copyright 2002 Marcus Meissner + * Copyright 2001 Ove Kåven, TransGaming Technologies * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -176,6 +177,7 @@ CFStub_Invoke( return hres; } hres = CoMarshalInterface(pStm,&iid,ppv,0,NULL,0); + IUnknown_Release((IUnknown*)ppv); if (hres) { FIXME("CoMarshalInterface failed, %lx!\n",hres); msg->cbBuffer = 0; @@ -266,8 +268,8 @@ CFStub_Construct(LPRPCSTUBBUFFER *ppv) { * the refcount. */ typedef struct _CFProxy { - IClassFactoryVtbl *lpvtbl_cf; - IRpcProxyBufferVtbl *lpvtbl_proxy; + const IClassFactoryVtbl *lpvtbl_cf; + const IRpcProxyBufferVtbl *lpvtbl_proxy; DWORD ref; IRpcChannelBuffer *chanbuf; @@ -318,7 +320,7 @@ static void WINAPI IRpcProxyBufferImpl_Disconnect(LPRPCPROXYBUFFER iface) { static HRESULT WINAPI CFProxy_QueryInterface(LPCLASSFACTORY iface,REFIID riid, LPVOID *ppv) { - ICOM_THIS_MULTI(CFProxy,lpvtbl_proxy,iface); + ICOM_THIS_MULTI(CFProxy,lpvtbl_cf,iface); if (This->outer_unknown) return IUnknown_QueryInterface(This->outer_unknown, riid, ppv); *ppv = NULL; if (IsEqualIID(&IID_IClassFactory,riid) || IsEqualIID(&IID_IUnknown,riid)) { @@ -444,13 +446,459 @@ CFProxy_Construct(IUnknown *pUnkOuter, LPVOID *ppv,LPVOID *ppProxy) { cf->lpvtbl_cf = &cfproxyvt; cf->lpvtbl_proxy = &pspbvtbl; - /* 1 reference for the proxy... */ + /* only one reference for the proxy buffer */ cf->ref = 1; cf->outer_unknown = pUnkOuter; *ppv = &(cf->lpvtbl_cf); *ppProxy = &(cf->lpvtbl_proxy); - /* ...and 1 for the object */ - IUnknown_AddRef((IUnknown *)*ppv); + return S_OK; +} + + +/********************* IRemUnknown Proxy/Stub ********************************/ + +typedef struct +{ + const IRpcStubBufferVtbl *lpVtbl; + ULONG refs; + IRemUnknown *iface; +} RemUnkStub; + +static HRESULT WINAPI RemUnkStub_QueryInterface(LPRPCSTUBBUFFER iface, + REFIID riid, + LPVOID *obj) +{ + RemUnkStub *This = (RemUnkStub *)iface; + TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(riid),obj); + if (IsEqualGUID(&IID_IUnknown,riid) || + IsEqualGUID(&IID_IRpcStubBuffer,riid)) { + *obj = This; + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI RemUnkStub_AddRef(LPRPCSTUBBUFFER iface) +{ + RemUnkStub *This = (RemUnkStub *)iface; + TRACE("(%p)->AddRef()\n",This); + return InterlockedIncrement(&This->refs); +} + +static ULONG WINAPI RemUnkStub_Release(LPRPCSTUBBUFFER iface) +{ + RemUnkStub *This = (RemUnkStub *)iface; + ULONG refs; + TRACE("(%p)->Release()\n",This); + refs = InterlockedDecrement(&This->refs); + if (!refs) + HeapFree(GetProcessHeap(), 0, This); + return refs; +} + +static HRESULT WINAPI RemUnkStub_Connect(LPRPCSTUBBUFFER iface, + LPUNKNOWN lpUnkServer) +{ + RemUnkStub *This = (RemUnkStub *)iface; + TRACE("(%p)->Connect(%p)\n",This,lpUnkServer); + This->iface = (IRemUnknown*)lpUnkServer; + IRemUnknown_AddRef(This->iface); + return S_OK; +} + +static void WINAPI RemUnkStub_Disconnect(LPRPCSTUBBUFFER iface) +{ + RemUnkStub *This = (RemUnkStub *)iface; + TRACE("(%p)->Disconnect()\n",This); + IUnknown_Release(This->iface); + This->iface = NULL; +} + +static HRESULT WINAPI RemUnkStub_Invoke(LPRPCSTUBBUFFER iface, + PRPCOLEMESSAGE pMsg, + LPRPCCHANNELBUFFER pChannel) +{ + RemUnkStub *This = (RemUnkStub *)iface; + ULONG iMethod = pMsg->iMethod; + LPBYTE buf = pMsg->Buffer; + HRESULT hr = RPC_E_INVALIDMETHOD; + + TRACE("(%p)->Invoke(%p,%p) method %ld\n", This, pMsg, pChannel, iMethod); + switch (iMethod) + { + case 3: /* RemQueryInterface */ + { + IPID ipid; + ULONG cRefs; + USHORT cIids; + IID *iids; + REMQIRESULT *pQIResults = NULL; + + /* in */ + memcpy(&ipid, buf, sizeof(ipid)); + buf += sizeof(ipid); + memcpy(&cRefs, buf, sizeof(cRefs)); + buf += sizeof(cRefs); + memcpy(&cIids, buf, sizeof(cIids)); + buf += sizeof(cIids); + iids = (IID *)buf; + + hr = IRemUnknown_RemQueryInterface(This->iface, &ipid, cRefs, cIids, iids, &pQIResults); + + /* out */ + pMsg->cbBuffer = cIids * sizeof(REMQIRESULT); + if (pMsg->Buffer) + pMsg->Buffer = HeapReAlloc(GetProcessHeap(), 0, pMsg->Buffer, pMsg->cbBuffer); + else + pMsg->Buffer = HeapAlloc(GetProcessHeap(), 0, pMsg->cbBuffer); + buf = pMsg->Buffer; + /* FIXME: pQIResults is a unique pointer so pQIResults can be NULL! */ + memcpy(buf, pQIResults, cIids * sizeof(REMQIRESULT)); + + break; + } + case 4: /* RemAddRef */ + { + USHORT cIids; + REMINTERFACEREF *ir; + HRESULT *pResults; + + /* in */ + memcpy(&cIids, buf, sizeof(USHORT)); + buf += sizeof(USHORT); + ir = (REMINTERFACEREF*)buf; + pResults = CoTaskMemAlloc(cIids * sizeof(HRESULT)); + if (!pResults) return E_OUTOFMEMORY; + + hr = IRemUnknown_RemAddRef(This->iface, cIids, ir, pResults); + + /* out */ + pMsg->cbBuffer = cIids * sizeof(HRESULT); + if (pMsg->Buffer) + pMsg->Buffer = HeapReAlloc(GetProcessHeap(), 0, pMsg->Buffer, pMsg->cbBuffer); + else + pMsg->Buffer = HeapAlloc(GetProcessHeap(), 0, pMsg->cbBuffer); + buf = pMsg->Buffer; + memcpy(buf, pResults, cIids * sizeof(HRESULT)); + + CoTaskMemFree(pResults); + + break; + } + case 5: /* RemRelease */ + { + USHORT cIids; + REMINTERFACEREF *ir; + + /* in */ + memcpy(&cIids, buf, sizeof(USHORT)); + buf += sizeof(USHORT); + ir = (REMINTERFACEREF*)buf; + + hr = IRemUnknown_RemRelease(This->iface, cIids, ir); + + /* out */ + pMsg->cbBuffer = 0; + break; + } + } + return hr; +} + +static LPRPCSTUBBUFFER WINAPI RemUnkStub_IsIIDSupported(LPRPCSTUBBUFFER iface, + REFIID riid) +{ + RemUnkStub *This = (RemUnkStub *)iface; + TRACE("(%p)->IsIIDSupported(%s)\n", This, debugstr_guid(riid)); + return IsEqualGUID(&IID_IRemUnknown, riid) ? iface : NULL; +} + +static ULONG WINAPI RemUnkStub_CountRefs(LPRPCSTUBBUFFER iface) +{ + RemUnkStub *This = (RemUnkStub *)iface; + FIXME("(%p)->CountRefs()\n", This); + return 1; +} + +static HRESULT WINAPI RemUnkStub_DebugServerQueryInterface(LPRPCSTUBBUFFER iface, + LPVOID *ppv) +{ + RemUnkStub *This = (RemUnkStub *)iface; + FIXME("(%p)->DebugServerQueryInterface(%p)\n",This,ppv); + return E_NOINTERFACE; +} + +static void WINAPI RemUnkStub_DebugServerRelease(LPRPCSTUBBUFFER iface, + LPVOID pv) +{ + RemUnkStub *This = (RemUnkStub *)iface; + FIXME("(%p)->DebugServerRelease(%p)\n", This, pv); +} + +static const IRpcStubBufferVtbl RemUnkStub_VTable = +{ + RemUnkStub_QueryInterface, + RemUnkStub_AddRef, + RemUnkStub_Release, + RemUnkStub_Connect, + RemUnkStub_Disconnect, + RemUnkStub_Invoke, + RemUnkStub_IsIIDSupported, + RemUnkStub_CountRefs, + RemUnkStub_DebugServerQueryInterface, + RemUnkStub_DebugServerRelease +}; + +static HRESULT RemUnkStub_Construct(IRpcStubBuffer **ppStub) +{ + RemUnkStub *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + if (!This) return E_OUTOFMEMORY; + This->lpVtbl = &RemUnkStub_VTable; + This->refs = 0; + This->iface = NULL; + *ppStub = (IRpcStubBuffer*)This; + return S_OK; +} + + +typedef struct _RemUnkProxy { + const IRemUnknownVtbl *lpvtbl_remunk; + const IRpcProxyBufferVtbl *lpvtbl_proxy; + DWORD refs; + + IRpcChannelBuffer *chan; + IUnknown *outer_unknown; +} RemUnkProxy; + +static HRESULT WINAPI RemUnkProxy_QueryInterface(LPREMUNKNOWN iface, REFIID riid, void **ppv) +{ + RemUnkProxy *This = (RemUnkProxy *)iface; + if (This->outer_unknown) + return IUnknown_QueryInterface(This->outer_unknown, riid, ppv); + if (IsEqualIID(riid, &IID_IUnknown) || + IsEqualIID(riid, &IID_IRemUnknown)) + { + IRemUnknown_AddRef(iface); + *ppv = (LPVOID)iface; + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI RemUnkProxy_AddRef(LPREMUNKNOWN iface) +{ + RemUnkProxy *This = (RemUnkProxy *)iface; + + TRACE("(%p)->AddRef()\n",This); + return InterlockedIncrement(&This->refs); +} + +static ULONG WINAPI RemUnkProxy_Release(LPREMUNKNOWN iface) +{ + RemUnkProxy *This = (RemUnkProxy *)iface; + ULONG refs; + + TRACE("(%p)->Release()\n",This); + if (This->outer_unknown) + refs = IUnknown_Release(This->outer_unknown); + else + refs = InterlockedDecrement(&This->refs); + + if (!refs) { + if (This->chan) IRpcChannelBuffer_Release(This->chan); + HeapFree(GetProcessHeap(),0,This); + } + return refs; +} + +static HRESULT WINAPI RemUnkProxy_RemQueryInterface(LPREMUNKNOWN iface, + REFIPID ripid, + ULONG cRefs, + USHORT cIids, + IID* iids, + REMQIRESULT** ppQIResults) +{ + RemUnkProxy *This = (RemUnkProxy *)iface; + RPCOLEMESSAGE msg; + HRESULT hr = S_OK; + ULONG status; + + TRACE("(%p)->(%s,%ld,%d,%p,%p)\n",This, + debugstr_guid(ripid),cRefs,cIids,iids,ppQIResults); + + *ppQIResults = NULL; + memset(&msg, 0, sizeof(msg)); + msg.iMethod = 3; + msg.cbBuffer = sizeof(IPID) + sizeof(ULONG) + + sizeof(USHORT) + cIids*sizeof(IID); + hr = IRpcChannelBuffer_GetBuffer(This->chan, &msg, &IID_IRemUnknown); + if (SUCCEEDED(hr)) { + LPBYTE buf = msg.Buffer; + memcpy(buf, ripid, sizeof(IPID)); + buf += sizeof(IPID); + memcpy(buf, &cRefs, sizeof(ULONG)); + buf += sizeof(ULONG); + memcpy(buf, &cIids, sizeof(USHORT)); + buf += sizeof(USHORT); + memcpy(buf, iids, cIids*sizeof(IID)); + + hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status); + + if (SUCCEEDED(hr)) { + buf = msg.Buffer; + *ppQIResults = CoTaskMemAlloc(cIids*sizeof(REMQIRESULT)); + memcpy(*ppQIResults, buf, cIids*sizeof(REMQIRESULT)); + } + + IRpcChannelBuffer_FreeBuffer(This->chan, &msg); + } + + return hr; +} + +static HRESULT WINAPI RemUnkProxy_RemAddRef(LPREMUNKNOWN iface, + USHORT cInterfaceRefs, + REMINTERFACEREF* InterfaceRefs, + HRESULT* pResults) +{ + RemUnkProxy *This = (RemUnkProxy *)iface; + RPCOLEMESSAGE msg; + HRESULT hr = S_OK; + ULONG status; + + TRACE("(%p)->(%d,%p,%p)\n",This, + cInterfaceRefs,InterfaceRefs,pResults); + + memset(&msg, 0, sizeof(msg)); + msg.iMethod = 4; + msg.cbBuffer = sizeof(USHORT) + cInterfaceRefs*sizeof(REMINTERFACEREF); + hr = IRpcChannelBuffer_GetBuffer(This->chan, &msg, &IID_IRemUnknown); + if (SUCCEEDED(hr)) { + LPBYTE buf = msg.Buffer; + memcpy(buf, &cInterfaceRefs, sizeof(USHORT)); + buf += sizeof(USHORT); + memcpy(buf, InterfaceRefs, cInterfaceRefs*sizeof(REMINTERFACEREF)); + + hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status); + + if (SUCCEEDED(hr)) { + buf = msg.Buffer; + memcpy(pResults, buf, cInterfaceRefs*sizeof(HRESULT)); + } + + IRpcChannelBuffer_FreeBuffer(This->chan, &msg); + } + + return hr; +} + +static HRESULT WINAPI RemUnkProxy_RemRelease(LPREMUNKNOWN iface, + USHORT cInterfaceRefs, + REMINTERFACEREF* InterfaceRefs) +{ + RemUnkProxy *This = (RemUnkProxy *)iface; + RPCOLEMESSAGE msg; + HRESULT hr = S_OK; + ULONG status; + + TRACE("(%p)->(%d,%p)\n",This, + cInterfaceRefs,InterfaceRefs); + + memset(&msg, 0, sizeof(msg)); + msg.iMethod = 5; + msg.cbBuffer = sizeof(USHORT) + cInterfaceRefs*sizeof(REMINTERFACEREF); + hr = IRpcChannelBuffer_GetBuffer(This->chan, &msg, &IID_IRemUnknown); + if (SUCCEEDED(hr)) { + LPBYTE buf = msg.Buffer; + memcpy(buf, &cInterfaceRefs, sizeof(USHORT)); + buf += sizeof(USHORT); + memcpy(buf, InterfaceRefs, cInterfaceRefs*sizeof(REMINTERFACEREF)); + + hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status); + + IRpcChannelBuffer_FreeBuffer(This->chan, &msg); + } + + return hr; +} + +static const IRemUnknownVtbl RemUnkProxy_VTable = +{ + RemUnkProxy_QueryInterface, + RemUnkProxy_AddRef, + RemUnkProxy_Release, + RemUnkProxy_RemQueryInterface, + RemUnkProxy_RemAddRef, + RemUnkProxy_RemRelease +}; + + +static HRESULT WINAPI RURpcProxyBufferImpl_QueryInterface(LPRPCPROXYBUFFER iface,REFIID riid,LPVOID *ppv) { + *ppv = NULL; + if (IsEqualIID(riid,&IID_IRpcProxyBuffer)||IsEqualIID(riid,&IID_IUnknown)) { + IRpcProxyBuffer_AddRef(iface); + *ppv = (LPVOID)iface; + return S_OK; + } + FIXME("(%s), no interface.\n",debugstr_guid(riid)); + return E_NOINTERFACE; +} + +static ULONG WINAPI RURpcProxyBufferImpl_AddRef(LPRPCPROXYBUFFER iface) { + ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); + return InterlockedIncrement(&This->refs); +} + +static ULONG WINAPI RURpcProxyBufferImpl_Release(LPRPCPROXYBUFFER iface) { + ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); + ULONG ref = InterlockedDecrement(&This->refs); + + if (!ref) { + IRpcChannelBuffer_Release(This->chan);This->chan = NULL; + HeapFree(GetProcessHeap(),0,This); + } + return ref; +} + +static HRESULT WINAPI RURpcProxyBufferImpl_Connect(LPRPCPROXYBUFFER iface,IRpcChannelBuffer* pRpcChannelBuffer) { + ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); + + This->chan = pRpcChannelBuffer; + IRpcChannelBuffer_AddRef(This->chan); + return S_OK; +} +static void WINAPI RURpcProxyBufferImpl_Disconnect(LPRPCPROXYBUFFER iface) { + ICOM_THIS_MULTI(RemUnkProxy,lpvtbl_proxy,iface); + if (This->chan) { + IRpcChannelBuffer_Release(This->chan); + This->chan = NULL; + } +} + + +static const IRpcProxyBufferVtbl RURpcProxyBuffer_VTable = { + RURpcProxyBufferImpl_QueryInterface, + RURpcProxyBufferImpl_AddRef, + RURpcProxyBufferImpl_Release, + RURpcProxyBufferImpl_Connect, + RURpcProxyBufferImpl_Disconnect +}; + +static HRESULT +RemUnkProxy_Construct(IUnknown *pUnkOuter, LPVOID *ppv,LPVOID *ppProxy) { + RemUnkProxy *This; + + This = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(*This)); + if (!This) + return E_OUTOFMEMORY; + + This->lpvtbl_remunk = &RemUnkProxy_VTable; + This->lpvtbl_proxy = &RURpcProxyBuffer_VTable; + /* only one reference for the proxy buffer */ + This->refs = 1; + This->outer_unknown = pUnkOuter; + *ppv = &(This->lpvtbl_remunk); + *ppProxy = &(This->lpvtbl_proxy); return S_OK; } @@ -475,10 +923,10 @@ PSFacBuf_CreateProxy( LPPSFACTORYBUFFER iface, IUnknown* pUnkOuter, REFIID riid, IRpcProxyBuffer **ppProxy, LPVOID *ppv ) { - if (IsEqualIID(&IID_IClassFactory,riid) || - IsEqualIID(&IID_IUnknown,riid) - ) + if (IsEqualIID(&IID_IClassFactory,riid)) return CFProxy_Construct(pUnkOuter, ppv,(LPVOID*)ppProxy); + else if (IsEqualIID(&IID_IRemUnknown,riid)) + return RemUnkProxy_Construct(pUnkOuter, ppv,(LPVOID*)ppProxy); FIXME("proxying not implemented for (%s) yet!\n",debugstr_guid(riid)); return E_FAIL; } @@ -492,13 +940,17 @@ PSFacBuf_CreateStub( TRACE("(%s,%p,%p)\n",debugstr_guid(riid),pUnkServer,ppStub); - if (IsEqualIID(&IID_IClassFactory,riid) || - IsEqualIID(&IID_IUnknown,riid) - ) { + if (IsEqualIID(&IID_IClassFactory, riid) || + IsEqualIID(&IID_IUnknown, riid) /* FIXME: fixup stub manager and remove this*/) { hres = CFStub_Construct(ppStub); if (!hres) IRpcStubBuffer_Connect((*ppStub),pUnkServer); return hres; + } else if (IsEqualIID(&IID_IRemUnknown,riid)) { + hres = RemUnkStub_Construct(ppStub); + if (!hres) + IRpcStubBuffer_Connect((*ppStub),pUnkServer); + return hres; } FIXME("stubbing not implemented for (%s) yet!\n",debugstr_guid(riid)); return E_FAIL; diff --git a/reactos/lib/ole32/regsvr.c b/reactos/lib/ole32/regsvr.c index 5f6a699b3ec..c4083c9824d 100644 --- a/reactos/lib/ole32/regsvr.c +++ b/reactos/lib/ole32/regsvr.c @@ -28,7 +28,9 @@ #include "winuser.h" #include "winreg.h" #include "winerror.h" +#include "objbase.h" +#include "compobj_private.h" #include "ole2.h" #include "olectl.h" @@ -448,396 +450,27 @@ static struct regsvr_coclass const coclass_list[] = { * interface list */ -/* FIXME: perhaps the interfaces that are proxied by another dll - * should be registered in that dll? Or maybe the choice of proxy is - * arbitrary at this point? */ - -static GUID const CLSID_PSFactoryBuffer_ole2disp = { - 0x00020420, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} }; - -static GUID const CLSID_PSFactoryBuffer_oleaut32 = { - 0xB196B286, 0xBAB4, 0x101A, {0xB6,0x9C,0x00,0xAA,0x00,0x34,0x1D,0x07} }; - -/* FIXME: these interfaces should be defined in ocidl.idl */ - -static IID const IID_IFontEventsDisp = { - 0x4EF6100A, 0xAF88, 0x11D0, {0x98,0x46,0x00,0xC0,0x4F,0xC2,0x99,0x93} }; - -static IID const IID_IProvideMultipleClassInfo = { - 0xA7ABA9C1, 0x8983, 0x11CF, {0x8F,0x20,0x00,0x80,0x5F,0x2C,0xD0,0x64} }; +#define INTERFACE_ENTRY(interface, base, clsid32, clsid16) { &IID_##interface, #interface, base, sizeof(interface##Vtbl)/sizeof(void*), clsid16, clsid32 } +#define STD_INTERFACE_ENTRY(interface) INTERFACE_ENTRY(interface, NULL, &CLSID_PSFactoryBuffer, NULL) static struct regsvr_interface const interface_list[] = { - { &IID_IUnknown, - "IUnknown", - NULL, - 3, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IClassFactory, - "IClassFactory", - NULL, - 5, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IStorage, - "IStorage", - NULL, - 18, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IStream, - "IStream", - NULL, - 14, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IPersistStorage, - "IPersistStorage", - &IID_IPersist, - 10, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IDataObject, - "IDataObject", - NULL, - 12, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IAdviseSink, - "IAdviseSink", - NULL, - 8, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IOleObject, - "IOleObject", - NULL, - 24, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IOleClientSite, - "IOleClientSite", - NULL, - 9, - NULL, - &CLSID_PSFactoryBuffer - }, - { &IID_IDispatch, - "IDispatch", - NULL, - 7, - &CLSID_PSFactoryBuffer_ole2disp, - &CLSID_PSFactoryBuffer_ole2disp - }, - { &IID_ITypeLib2, - "ITypeLib2", - NULL, - 16, - NULL, - &CLSID_PSFactoryBuffer_ole2disp - }, - { &IID_ITypeInfo2, - "ITypeInfo2", - NULL, - 32, - NULL, - &CLSID_PSFactoryBuffer_ole2disp - }, - { &IID_IPropertyPage2, - "IPropertyPage2", - NULL, - 15, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IErrorInfo, - "IErrorInfo", - NULL, - 8, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_ICreateErrorInfo, - "ICreateErrorInfo", - NULL, - 8, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPersistPropertyBag2, - "IPersistPropertyBag2", - NULL, - 8, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPropertyBag2, - "IPropertyBag2", - NULL, - 8, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IErrorLog, - "IErrorLog", - NULL, - 4, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPerPropertyBrowsing, - "IPerPropertyBrowsing", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPersistPropertyBag, - "IPersistPropertyBag", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IAdviseSinkEx, - "IAdviseSinkEx", - NULL, - 9, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IFontEventsDisp, - "IFontEventsDisp", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPropertyBag, - "IPropertyBag", - NULL, - 5, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPointerInactive, - "IPointerInactive", - NULL, - 6, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_ISimpleFrameSite, - "ISimpleFrameSite", - NULL, - 5, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPicture, - "IPicture", - NULL, - 17, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPictureDisp, - "IPictureDisp", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPersistStreamInit, - "IPersistStreamInit", - NULL, - 9, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IOleUndoUnit, - "IOleUndoUnit", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPropertyNotifySink, - "IPropertyNotifySink", - NULL, - 5, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IOleInPlaceSiteEx, - "IOleInPlaceSiteEx", - NULL, - 18, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IOleParentUndoUnit, - "IOleParentUndoUnit", - NULL, - 12, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IProvideClassInfo2, - "IProvideClassInfo2", - NULL, - 5, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IProvideMultipleClassInfo, - "IProvideMultipleClassInfo", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IProvideClassInfo, - "IProvideClassInfo", - NULL, - 4, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IConnectionPointContainer, - "IConnectionPointContainer", - NULL, - 5, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IEnumConnectionPoints, - "IEnumConnectionPoints", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IConnectionPoint, - "IConnectionPoint", - NULL, - 8, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IEnumConnections, - "IEnumConnections", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IOleControl, - "IOleControl", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IOleControlSite, - "IOleControlSite", - NULL, - 10, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_ISpecifyPropertyPages, - "ISpecifyPropertyPages", - NULL, - 4, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPropertyPageSite, - "IPropertyPageSite", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPropertyPage, - "IPropertyPage", - NULL, - 14, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IClassFactory2, - "IClassFactory2", - NULL, - 8, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IEnumOleUndoUnits, - "IEnumOleUndoUnits", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IPersistMemory, - "IPersistMemory", - NULL, - 9, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IFont, - "IFont", - NULL, - 27, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IFontDisp, - "IFontDisp", - NULL, - 7, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IQuickActivate, - "IQuickActivate", - NULL, - 6, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IOleUndoManager, - "IOleUndoManager", - NULL, - 15, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, - { &IID_IObjectWithSite, - "IObjectWithSite", - NULL, - 5, - NULL, - &CLSID_PSFactoryBuffer_oleaut32 - }, + STD_INTERFACE_ENTRY(IUnknown), + STD_INTERFACE_ENTRY(IClassFactory), + STD_INTERFACE_ENTRY(IStorage), + STD_INTERFACE_ENTRY(IStream ), + STD_INTERFACE_ENTRY(IPersistStorage), + STD_INTERFACE_ENTRY(IDataObject), + STD_INTERFACE_ENTRY(IAdviseSink), + STD_INTERFACE_ENTRY(IOleObject), + STD_INTERFACE_ENTRY(IOleClientSite), + STD_INTERFACE_ENTRY(IRemUnknown), { NULL } /* list terminator */ }; /*********************************************************************** * DllRegisterServer (OLE32.@) */ -HRESULT WINAPI OLE32_DllRegisterServer() +HRESULT WINAPI DllRegisterServer() { HRESULT hr; @@ -852,7 +485,7 @@ HRESULT WINAPI OLE32_DllRegisterServer() /*********************************************************************** * DllUnregisterServer (OLE32.@) */ -HRESULT WINAPI OLE32_DllUnregisterServer() +HRESULT WINAPI DllUnregisterServer() { HRESULT hr; diff --git a/reactos/lib/ole32/rpc.c b/reactos/lib/ole32/rpc.c index 158016fab20..e7262045a32 100644 --- a/reactos/lib/ole32/rpc.c +++ b/reactos/lib/ole32/rpc.c @@ -1,7 +1,8 @@ /* * (Local) RPC Stuff * - * Copyright 2002 Marcus Meissner + * Copyright 2002 Marcus Meissner + * Copyright 2005 Mike Hearn, Rob 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 @@ -52,26 +53,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole); #define OLESTUBMGR PIPEPREF"WINE_OLE_StubMgr" #define REQTYPE_REQUEST 0 -typedef struct _wine_rpc_request_header { +#define REQTYPE_RESPONSE 1 + +struct request_header +{ DWORD reqid; - wine_marshal_id mid; + IPID ipid; DWORD iMethod; DWORD cbBuffer; -} wine_rpc_request_header; +}; -#define REQTYPE_RESPONSE 1 -typedef struct _wine_rpc_response_header { +struct response_header +{ DWORD reqid; DWORD cbBuffer; DWORD retval; -} wine_rpc_response_header; - -/* used when shutting down a pipe, e.g. at the end of a process */ -#define REQTYPE_DISCONNECT 2 -typedef struct _wine_rpc_disconnect_header { - DWORD reqid; - wine_marshal_id mid; /* mid of stub to delete */ -} wine_rpc_disconnect_header; +}; #define REQSTATE_START 0 @@ -83,22 +80,25 @@ typedef struct _wine_rpc_disconnect_header { #define REQSTATE_RESP_GOT 6 #define REQSTATE_DONE 6 -typedef struct _wine_rpc_request { +struct rpc +{ int state; HANDLE hPipe; /* temp copy of handle */ - wine_rpc_request_header reqh; - wine_rpc_response_header resph; + struct request_header reqh; + struct response_header resph; LPBYTE Buffer; -} wine_rpc_request; +}; -static wine_rpc_request **reqs = NULL; +/* fixme: this should have a lock */ +static struct rpc **reqs = NULL; static int nrofreqs = 0; /* This pipe is _thread_ based, each thread which talks to a remote - * apartment (mid) has its own pipe. The same structure is used both + * apartment (oxid) has its own pipe. The same structure is used both * for outgoing and incoming RPCs. */ -typedef struct _wine_pipe { +struct pipe +{ wine_marshal_id mid; /* target mid */ DWORD tid; /* thread which owns this pipe */ HANDLE hPipe; @@ -108,60 +108,43 @@ typedef struct _wine_pipe { CRITICAL_SECTION crit; APARTMENT *apt; /* apartment of the marshalling thread for the stub dispatch case */ -} wine_pipe; - -#define MAX_WINE_PIPES 256 - -static wine_pipe pipes[MAX_WINE_PIPES]; -static int nrofpipes = 0; +}; typedef struct _PipeBuf { - IRpcChannelBufferVtbl *lpVtbl; - DWORD ref; + IRpcChannelBufferVtbl *lpVtbl; + DWORD ref; - wine_marshal_id mid; + wine_marshal_id mid; + HANDLE pipe; } PipeBuf; -static HRESULT WINAPI -read_pipe(HANDLE hf, LPVOID ptr, DWORD size) { + + +/* some helper functions */ + +static HRESULT WINAPI read_pipe(HANDLE hf, LPVOID ptr, DWORD size) +{ DWORD res; - if (!ReadFile(hf,ptr,size,&res,NULL)) { - FIXME("Failed to read from %p, le is %ld\n",hf,GetLastError()); - return E_FAIL; + + if (!ReadFile(hf,ptr,size,&res,NULL)) + { + ERR("Failed to read from %p, le is %ld\n",hf,GetLastError()); + return E_FAIL; } - if (res!=size) { - FIXME("Read only %ld of %ld bytes from %p.\n",res,size,hf); - return E_FAIL; + + if (res != size) + { + if (!res) + { + WARN("%p disconnected\n", hf); + return RPC_E_DISCONNECTED; + } + ERR("Read only %ld of %ld bytes from %p.\n",res,size,hf); + return E_FAIL; } return S_OK; } -static void -drs(LPCSTR where) { -#if 0 - static int nrofreaders = 0; - - int i, states[10]; - - memset(states,0,sizeof(states)); - for (i=nrofreqs;i--;) - states[reqs[i]->state]++; - FIXME("%lx/%s/%d: rq %d, w %d, rg %d, rsq %d, rsg %d, d %d\n", - GetCurrentProcessId(), - where, - nrofreaders, - states[REQSTATE_REQ_QUEUED], - states[REQSTATE_REQ_WAITING_FOR_REPLY], - states[REQSTATE_REQ_GOT], - states[REQSTATE_RESP_QUEUED], - states[REQSTATE_RESP_GOT], - states[REQSTATE_DONE] - ); -#endif - - return ; -} - static HRESULT WINAPI write_pipe(HANDLE hf, LPVOID ptr, DWORD size) { DWORD res; @@ -176,106 +159,77 @@ write_pipe(HANDLE hf, LPVOID ptr, DWORD size) { return S_OK; } -static DWORD WINAPI stub_dispatch_thread(LPVOID); - -static HRESULT -PIPE_RegisterPipe(wine_marshal_id *mid, HANDLE hPipe, BOOL startreader) { - int i; - char pipefn[100]; - - for (i=0;ioxid) - return S_OK; - if (nrofpipes + 1 >= MAX_WINE_PIPES) - { - FIXME("Out of pipes, please increase MAX_WINE_PIPES\n"); - return E_OUTOFMEMORY; - } - sprintf(pipefn,OLESTUBMGR"_%08lx%08lx",(DWORD)(mid->oxid >> 32),(DWORD)mid->oxid); - memcpy(&(pipes[nrofpipes].mid),mid,sizeof(*mid)); - pipes[nrofpipes].hPipe = hPipe; - pipes[nrofpipes].apt = COM_CurrentApt(); - assert( pipes[nrofpipes].apt ); - InitializeCriticalSection(&(pipes[nrofpipes].crit)); - nrofpipes++; - if (startreader) { - pipes[nrofpipes-1].hThread = CreateThread(NULL,0,stub_dispatch_thread,(LPVOID)(pipes+(nrofpipes-1)),0,&(pipes[nrofpipes-1].tid)); - } else { - pipes[nrofpipes-1].tid = GetCurrentThreadId(); - } - return S_OK; +static HANDLE dupe_handle(HANDLE h) +{ + HANDLE h2; + + if (!DuplicateHandle(GetCurrentProcess(), h, GetCurrentProcess(), + &h2, 0, FALSE, DUPLICATE_SAME_ACCESS)) + { + ERR("could not duplicate handle: %ld\n", GetLastError()); + return INVALID_HANDLE_VALUE; + } + + return h2; } -static HANDLE -PIPE_FindByMID(wine_marshal_id *mid) { - int i; - for (i=0;ioxid) && - (GetCurrentThreadId()==pipes[i].tid) - ) - return pipes[i].hPipe; - return INVALID_HANDLE_VALUE; -} -static wine_pipe* -PIPE_GetFromMID(wine_marshal_id *mid) { - int i; - for (i=0;ioxid) && - (GetCurrentThreadId()==pipes[i].tid) - ) - return pipes+i; - } - return NULL; -} -static HRESULT -RPC_GetRequest(wine_rpc_request **req) { - static int reqid = 0xdeadbeef; + +static DWORD WINAPI client_dispatch_thread(LPVOID); + +/* FIXME: this all needs to be made thread safe */ +static HRESULT RPC_GetRequest(struct rpc **req) +{ + static int reqid = 0; int i; - for (i=0;istate == REQSTATE_DONE) { - reqs[i]->reqh.reqid = reqid++; - reqs[i]->resph.reqid = reqs[i]->reqh.reqid; - reqs[i]->hPipe = INVALID_HANDLE_VALUE; - *req = reqs[i]; - reqs[i]->state = REQSTATE_START; - return S_OK; - } + /* try to reuse */ + for (i = 0; i < nrofreqs; i++) + { + if (reqs[i]->state == REQSTATE_DONE) + { + TRACE("reusing reqs[%d]\n", i); + + reqs[i]->reqh.reqid = reqid++; + reqs[i]->resph.reqid = reqs[i]->reqh.reqid; + reqs[i]->hPipe = INVALID_HANDLE_VALUE; + reqs[i]->state = REQSTATE_START; + *req = reqs[i]; + return S_OK; + } } - /* create new */ + + TRACE("creating new struct rpc (request)\n"); + if (reqs) - reqs = (wine_rpc_request**)HeapReAlloc( + reqs = (struct rpc**)HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, reqs, - sizeof(wine_rpc_request*)*(nrofreqs+1) + sizeof(struct rpc*)*(nrofreqs+1) ); else - reqs = (wine_rpc_request**)HeapAlloc( + reqs = (struct rpc**)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, - sizeof(wine_rpc_request*) + sizeof(struct rpc*) ); - if (!reqs) - return E_OUTOFMEMORY; - reqs[nrofreqs] = (wine_rpc_request*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(wine_rpc_request)); + + if (!reqs) return E_OUTOFMEMORY; + + reqs[nrofreqs] = (struct rpc*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(struct rpc)); reqs[nrofreqs]->reqh.reqid = reqid++; reqs[nrofreqs]->resph.reqid = reqs[nrofreqs]->reqh.reqid; reqs[nrofreqs]->hPipe = INVALID_HANDLE_VALUE; - *req = reqs[nrofreqs]; reqs[nrofreqs]->state = REQSTATE_START; + *req = reqs[nrofreqs]; + nrofreqs++; + return S_OK; } -static void -RPC_FreeRequest(wine_rpc_request *req) { - req->state = REQSTATE_DONE; /* Just reuse slot. */ - return; -} - static HRESULT WINAPI PipeBuf_QueryInterface( LPRPCCHANNELBUFFER iface,REFIID riid,LPVOID *ppv @@ -299,33 +253,19 @@ static ULONG WINAPI PipeBuf_Release(LPRPCCHANNELBUFFER iface) { PipeBuf *This = (PipeBuf *)iface; ULONG ref; - wine_rpc_disconnect_header header; - HANDLE pipe; - DWORD reqtype = REQTYPE_DISCONNECT; ref = InterlockedDecrement(&This->ref); if (ref) return ref; - memcpy(&header.mid, &This->mid, sizeof(wine_marshal_id)); - - pipe = PIPE_FindByMID(&This->mid); - - write_pipe(pipe, &reqtype, sizeof(reqtype)); - write_pipe(pipe, &header, sizeof(wine_rpc_disconnect_header)); - - TRACE("written disconnect packet\n"); - + CloseHandle(This->pipe); HeapFree(GetProcessHeap(),0,This); return 0; } static HRESULT WINAPI -PipeBuf_GetBuffer( - LPRPCCHANNELBUFFER iface,RPCOLEMESSAGE* msg,REFIID riid -) { - /*PipeBuf *This = (PipeBuf *)iface;*/ - +PipeBuf_GetBuffer(LPRPCCHANNELBUFFER iface,RPCOLEMESSAGE* msg,REFIID riid) +{ TRACE("(%p,%s)\n",msg,debugstr_guid(riid)); /* probably reuses IID in real. */ if (msg->cbBuffer && (msg->Buffer == NULL)) @@ -334,17 +274,15 @@ PipeBuf_GetBuffer( } static HRESULT -COM_InvokeAndRpcSend(wine_rpc_request *req) { +COM_InvokeAndRpcSend(struct rpc *req) { IRpcStubBuffer *stub; RPCOLEMESSAGE msg; HRESULT hres; DWORD reqtype; - if (!(stub = mid_to_stubbuffer(&(req->reqh.mid)))) - { - ERR("Stub not found?\n"); - return E_FAIL; - } + if (!(stub = ipid_to_stubbuffer(&(req->reqh.ipid)))) + /* ipid_to_stubbuffer will already have logged the error */ + return RPC_E_DISCONNECTED; IUnknown_AddRef(stub); msg.Buffer = req->Buffer; @@ -364,25 +302,19 @@ COM_InvokeAndRpcSend(wine_rpc_request *req) { hres = write_pipe(req->hPipe,req->Buffer,req->resph.cbBuffer); if (hres) return hres; req->state = REQSTATE_DONE; - drs("invoke"); return S_OK; } -static HRESULT COM_RpcReceive(wine_pipe *xpipe); +static HRESULT process_incoming_rpc(HANDLE pipe); -static HRESULT -RPC_QueueRequestAndWait(wine_rpc_request *req) { - int i; - wine_rpc_request *xreq; - HRESULT hres; - DWORD reqtype; - wine_pipe *xpipe = PIPE_GetFromMID(&(req->reqh.mid)); +static HRESULT RPC_QueueRequestAndWait(struct rpc *req, HANDLE pipe) +{ + int i; + struct rpc *xreq; + HRESULT hres; + DWORD reqtype; - if (!xpipe) { - FIXME("no pipe found.\n"); - return E_POINTER; - } - req->hPipe = xpipe->hPipe; + req->hPipe = pipe; req->state = REQSTATE_REQ_WAITING_FOR_REPLY; reqtype = REQTYPE_REQUEST; hres = write_pipe(req->hPipe,&reqtype,sizeof(reqtype)); @@ -395,7 +327,7 @@ RPC_QueueRequestAndWait(wine_rpc_request *req) { /* This loop is about allowing re-entrancy. While waiting for the * response to one RPC we may receive a request starting another. */ while (!hres) { - hres = COM_RpcReceive(xpipe); + hres = process_incoming_rpc(pipe); if (hres) break; for (i=0;imid.oxid == COM_CurrentApt()->oxid) { ERR("Need to call directly!\n"); @@ -432,37 +361,44 @@ PipeBuf_SendReceive( if (hres) return hres; req->reqh.iMethod = msg->iMethod; req->reqh.cbBuffer = msg->cbBuffer; - memcpy(&(req->reqh.mid),&(This->mid),sizeof(This->mid)); + req->reqh.ipid = This->mid.ipid; req->Buffer = msg->Buffer; - hres = RPC_QueueRequestAndWait(req); - if (hres) { - RPC_FreeRequest(req); + TRACE(" -> rpc ->\n"); + hres = RPC_QueueRequestAndWait(req, This->pipe); + TRACE(" <- response <-\n"); + if (hres) + { + req->state = REQSTATE_DONE; return hres; } - msg->cbBuffer = req->resph.cbBuffer; - msg->Buffer = req->Buffer; - *status = req->resph.retval; - RPC_FreeRequest(req); + + msg->cbBuffer = req->resph.cbBuffer; + msg->Buffer = req->Buffer; + *status = req->resph.retval; + req->state = REQSTATE_DONE; + return S_OK; } static HRESULT WINAPI -PipeBuf_FreeBuffer(LPRPCCHANNELBUFFER iface,RPCOLEMESSAGE* msg) { - FIXME("(%p), stub!\n",msg); - return E_FAIL; +PipeBuf_FreeBuffer(LPRPCCHANNELBUFFER iface,RPCOLEMESSAGE* msg) +{ + TRACE("(%p)\n",msg); + HeapFree(GetProcessHeap(), 0, msg->Buffer); + return S_OK; } static HRESULT WINAPI -PipeBuf_GetDestCtx( - LPRPCCHANNELBUFFER iface,DWORD* pdwDestContext,void** ppvDestContext -) { +PipeBuf_GetDestCtx(LPRPCCHANNELBUFFER iface,DWORD* pdwDestContext,void** ppvDestContext) +{ FIXME("(%p,%p), stub!\n",pdwDestContext,ppvDestContext); return E_FAIL; } static HRESULT WINAPI -PipeBuf_IsConnected(LPRPCCHANNELBUFFER iface) { +PipeBuf_IsConnected(LPRPCCHANNELBUFFER iface) +{ FIXME("(), stub!\n"); return S_OK; } @@ -478,96 +414,108 @@ static IRpcChannelBufferVtbl pipebufvt = { PipeBuf_IsConnected }; -HRESULT -PIPE_GetNewPipeBuf(wine_marshal_id *mid, IRpcChannelBuffer **pipebuf) { - wine_marshal_id ourid; - DWORD res; - HANDLE hPipe; - HRESULT hres; - PipeBuf *pbuf; +/* returns a pipebuf for proxies */ +HRESULT PIPE_GetNewPipeBuf(wine_marshal_id *mid, IRpcChannelBuffer **pipebuf) +{ + wine_marshal_id ourid; + HANDLE handle; + PipeBuf *pbuf; + char pipefn[200]; - hPipe = PIPE_FindByMID(mid); - if (hPipe == INVALID_HANDLE_VALUE) { - char pipefn[200]; - sprintf(pipefn,OLESTUBMGR"_%08lx%08lx",(DWORD)(mid->oxid >> 32),(DWORD)mid->oxid); - hPipe = CreateFileA( - pipefn, - GENERIC_READ|GENERIC_WRITE, - 0, - NULL, - OPEN_EXISTING, - 0, - 0 - ); - if (hPipe == INVALID_HANDLE_VALUE) { - FIXME("Could not open named pipe %s, le is %lx\n",pipefn,GetLastError()); - return E_FAIL; - } - hres = PIPE_RegisterPipe(mid, hPipe, FALSE); - if (hres) return hres; - memset(&ourid,0,sizeof(ourid)); - ourid.oxid = COM_CurrentApt()->oxid; - if (!WriteFile(hPipe,&ourid,sizeof(ourid),&res,NULL)||(res!=sizeof(ourid))) { - ERR("Failed writing startup mid!\n"); - return E_FAIL; - } - } - pbuf = (PipeBuf*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(PipeBuf)); - pbuf->lpVtbl = &pipebufvt; - pbuf->ref = 1; - memcpy(&(pbuf->mid),mid,sizeof(*mid)); - *pipebuf = (IRpcChannelBuffer*)pbuf; - return S_OK; + /* connect to the apartment listener thread */ + sprintf(pipefn,OLESTUBMGR"_%08lx%08lx",(DWORD)(mid->oxid >> 32),(DWORD)mid->oxid); + + TRACE("proxy pipe: connecting to apartment listener thread: %s\n", pipefn); + + while (TRUE) + { + BOOL ret = WaitNamedPipeA(pipefn, NMPWAIT_USE_DEFAULT_WAIT); + if (!ret) + { + ERR("Could not open named pipe %s, error %ld\n", pipefn, GetLastError()); + return RPC_E_SERVER_DIED; + } + + handle = CreateFileA(pipefn, GENERIC_READ | GENERIC_WRITE, + 0, NULL, OPEN_EXISTING, 0, 0); + + if (handle == INVALID_HANDLE_VALUE) + { + if (GetLastError() == ERROR_PIPE_BUSY) continue; + + ERR("Could not open named pipe %s, error %ld\n", pipefn, GetLastError()); + return RPC_E_SERVER_DIED; + } + + break; + } + + memset(&ourid,0,sizeof(ourid)); + ourid.oxid = COM_CurrentApt()->oxid; + + TRACE("constructing new pipebuf for proxy\n"); + + pbuf = (PipeBuf*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(PipeBuf)); + pbuf->lpVtbl = &pipebufvt; + pbuf->ref = 1; + memcpy(&(pbuf->mid),mid,sizeof(*mid)); + pbuf->pipe = dupe_handle(handle); + + *pipebuf = (IRpcChannelBuffer*)pbuf; + + return S_OK; } static HRESULT -create_server(REFCLSID rclsid) { - static const WCHAR embedding[] = { ' ', '-','E','m','b','e','d','d','i','n','g',0 }; - HKEY key; - char buf[200]; - HRESULT hres = E_UNEXPECTED; - char xclsid[80]; - WCHAR exe[MAX_PATH+1]; - DWORD exelen = sizeof(exe); - WCHAR command[MAX_PATH+sizeof(embedding)/sizeof(WCHAR)]; - STARTUPINFOW sinfo; - PROCESS_INFORMATION pinfo; +create_server(REFCLSID rclsid) +{ + static const WCHAR embedding[] = { ' ', '-','E','m','b','e','d','d','i','n','g',0 }; + HKEY key; + char buf[200]; + HRESULT hres = E_UNEXPECTED; + char xclsid[80]; + WCHAR exe[MAX_PATH+1]; + DWORD exelen = sizeof(exe); + WCHAR command[MAX_PATH+sizeof(embedding)/sizeof(WCHAR)]; + STARTUPINFOW sinfo; + PROCESS_INFORMATION pinfo; - WINE_StringFromCLSID((LPCLSID)rclsid,xclsid); + WINE_StringFromCLSID((LPCLSID)rclsid,xclsid); - sprintf(buf,"CLSID\\%s\\LocalServer32",xclsid); - hres = RegOpenKeyExA(HKEY_CLASSES_ROOT, buf, 0, KEY_READ, &key); + sprintf(buf,"CLSID\\%s\\LocalServer32",xclsid); + hres = RegOpenKeyExA(HKEY_CLASSES_ROOT, buf, 0, KEY_READ, &key); - if (hres != ERROR_SUCCESS) { - WARN("CLSID %s not registered as LocalServer32\n", xclsid); - return REGDB_E_READREGDB; /* Probably */ - } + if (hres != ERROR_SUCCESS) { + WARN("CLSID %s not registered as LocalServer32\n", xclsid); + return REGDB_E_READREGDB; /* Probably */ + } - memset(exe,0,sizeof(exe)); - hres= RegQueryValueExW(key, NULL, NULL, NULL, (LPBYTE)exe, &exelen); - RegCloseKey(key); - if (hres) { - WARN("No default value for LocalServer32 key\n"); - return REGDB_E_CLASSNOTREG; /* FIXME: check retval */ - } + memset(exe,0,sizeof(exe)); + hres= RegQueryValueExW(key, NULL, NULL, NULL, (LPBYTE)exe, &exelen); + RegCloseKey(key); + if (hres) { + WARN("No default value for LocalServer32 key\n"); + return REGDB_E_CLASSNOTREG; /* FIXME: check retval */ + } - memset(&sinfo,0,sizeof(sinfo)); - sinfo.cb = sizeof(sinfo); + memset(&sinfo,0,sizeof(sinfo)); + sinfo.cb = sizeof(sinfo); - /* EXE servers are started with the -Embedding switch. MSDN also claims /Embedding is used, - 9x does -Embedding, perhaps an 9x/NT difference? */ + /* EXE servers are started with the -Embedding switch. MSDN also claims /Embedding is used, + * 9x does -Embedding, perhaps an 9x/NT difference? + */ - strcpyW(command, exe); - strcatW(command, embedding); + strcpyW(command, exe); + strcatW(command, embedding); - TRACE("activating local server '%s' for %s\n", debugstr_w(command), xclsid); + TRACE("activating local server '%s' for %s\n", debugstr_w(command), xclsid); - if (!CreateProcessW(exe, command, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo)) { - WARN("failed to run local server %s\n", debugstr_w(exe)); - return E_FAIL; - } + if (!CreateProcessW(exe, command, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pinfo)) { + WARN("failed to run local server %s\n", debugstr_w(exe)); + return E_FAIL; + } - return S_OK; + return S_OK; } /* @@ -577,7 +525,7 @@ static DWORD start_local_service(LPCWSTR name, DWORD num, LPWSTR *params) { SC_HANDLE handle, hsvc; - DWORD r = ERROR_FUNCTION_FAILED; + DWORD r = ERROR_FUNCTION_FAILED; TRACE("Starting service %s %ld params\n", debugstr_w(name), num); @@ -591,7 +539,7 @@ start_local_service(LPCWSTR name, DWORD num, LPWSTR *params) r = ERROR_SUCCESS; else r = GetLastError(); - if (r==ERROR_SERVICE_ALREADY_RUNNING) + if (r == ERROR_SERVICE_ALREADY_RUNNING) r = ERROR_SUCCESS; CloseServiceHandle(hsvc); } @@ -619,10 +567,8 @@ create_local_service(REFCLSID rclsid) static const WCHAR szClsId[] = { 'C','L','S','I','D','\\',0 }; static const WCHAR szAppId[] = { 'A','p','p','I','d',0 }; static const WCHAR szAppIdKey[] = { 'A','p','p','I','d','\\',0 }; - static const WCHAR szLocalService[] = { - 'L','o','c','a','l','S','e','r','v','i','c','e',0 }; - static const WCHAR szServiceParams[] = { - 'S','e','r','v','i','c','e','P','a','r','a','m','s',0}; + static const WCHAR szLocalService[] = { 'L','o','c','a','l','S','e','r','v','i','c','e',0 }; + static const WCHAR szServiceParams[] = {'S','e','r','v','i','c','e','P','a','r','a','m','s',0}; HKEY hkey; LONG r; DWORD type, sz; @@ -680,145 +626,124 @@ create_local_service(REFCLSID rclsid) } /* http://msdn.microsoft.com/library/en-us/dnmsj99/html/com0199.asp, Figure 4 */ -HRESULT create_marshalled_proxy(REFCLSID rclsid, REFIID iid, LPVOID *ppv) { - HRESULT hres; - HANDLE hPipe; - char pipefn[200]; - DWORD res,bufferlen; - char marshalbuffer[200]; - IStream *pStm; - LARGE_INTEGER seekto; - ULARGE_INTEGER newpos; - int tries = 0; -#define MAXTRIES 10000 +HRESULT create_marshalled_proxy(REFCLSID rclsid, REFIID iid, LPVOID *ppv) +{ + HRESULT hres; + HANDLE hPipe; + char pipefn[200]; + DWORD res, bufferlen; + char marshalbuffer[200]; + IStream *pStm; + LARGE_INTEGER seekto; + ULARGE_INTEGER newpos; + int tries = 0; + + static const int MAXTRIES = 10000; - TRACE("rclsid=%s, iid=%s\n", debugstr_guid(rclsid), debugstr_guid(iid)); + TRACE("rclsid=%s, iid=%s\n", debugstr_guid(rclsid), debugstr_guid(iid)); - strcpy(pipefn,PIPEPREF); - WINE_StringFromCLSID(rclsid,pipefn+strlen(PIPEPREF)); + strcpy(pipefn,PIPEPREF); + WINE_StringFromCLSID(rclsid,pipefn+strlen(PIPEPREF)); - while (tries++=MAXTRIES) - return E_NOINTERFACE; - hres = CreateStreamOnHGlobal(0,TRUE,&pStm); - if (hres) return hres; - hres = IStream_Write(pStm,marshalbuffer,bufferlen,&res); - if (hres) goto out; - seekto.u.LowPart = 0;seekto.u.HighPart = 0; - hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); - TRACE("unmarshalling classfactory\n"); - hres = CoUnmarshalInterface(pStm,&IID_IClassFactory,ppv); -out: - IStream_Release(pStm); - return hres; -} - - -static void WINAPI -PIPE_StartRequestThread(HANDLE xhPipe) { - wine_marshal_id remoteid; - HRESULT hres; - - hres = read_pipe(xhPipe,&remoteid,sizeof(remoteid)); - if (hres) { - ERR("Failed to read remote mid!\n"); - return; + WaitNamedPipeA( pipefn, NMPWAIT_WAIT_FOREVER ); + hPipe = CreateFileA(pipefn, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0); + if (hPipe == INVALID_HANDLE_VALUE) { + if (tries == 1) { + if ( (hres = create_server(rclsid)) && + (hres = create_local_service(rclsid)) ) + return hres; + Sleep(1000); + } else { + WARN("Connecting to %s, no response yet, retrying: le is %lx\n",pipefn,GetLastError()); + Sleep(1000); + } + continue; + } + bufferlen = 0; + if (!ReadFile(hPipe,marshalbuffer,sizeof(marshalbuffer),&bufferlen,NULL)) { + FIXME("Failed to read marshal id from classfactory of %s.\n",debugstr_guid(rclsid)); + Sleep(1000); + continue; + } + TRACE("read marshal id from pipe\n"); + CloseHandle(hPipe); + break; } - PIPE_RegisterPipe(&remoteid,xhPipe, TRUE); + + if (tries >= MAXTRIES) + return E_NOINTERFACE; + + hres = CreateStreamOnHGlobal(0,TRUE,&pStm); + if (hres) return hres; + hres = IStream_Write(pStm,marshalbuffer,bufferlen,&res); + if (hres) goto out; + seekto.u.LowPart = 0;seekto.u.HighPart = 0; + hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); + + TRACE("unmarshalling classfactory\n"); + hres = CoUnmarshalInterface(pStm,&IID_IClassFactory,ppv); +out: + IStream_Release(pStm); + return hres; } -static HRESULT -COM_RpcReceive(wine_pipe *xpipe) { - DWORD reqtype; - HRESULT hres = S_OK; - HANDLE xhPipe = xpipe->hPipe; - /*FIXME("%lx %d reading reqtype\n",GetCurrentProcessId(),xhPipe);*/ - hres = read_pipe(xhPipe,&reqtype,sizeof(reqtype)); - if (hres) goto end; - EnterCriticalSection(&(xpipe->crit)); - /*FIXME("%lx got reqtype %ld\n",GetCurrentProcessId(),reqtype);*/ +/* this reads an RPC from the given pipe and places it in the global reqs array */ +static HRESULT process_incoming_rpc(HANDLE pipe) +{ + DWORD reqtype; + HRESULT hres = S_OK; - if (reqtype == REQTYPE_DISCONNECT) { /* only received by servers */ - wine_rpc_disconnect_header header; - struct stub_manager *stubmgr; + hres = read_pipe(pipe,&reqtype,sizeof(reqtype)); + if (hres) return hres; - hres = read_pipe(xhPipe, &header, sizeof(header)); - if (hres) { - ERR("could not read disconnect header\n"); - goto end; - } + /* only received by servers */ + if (reqtype == REQTYPE_REQUEST) + { + struct rpc *xreq; - TRACE("read disconnect header\n"); - - if (!(stubmgr = get_stub_manager(header.mid.oxid, header.mid.oid))) - { - ERR("could not locate stub to disconnect, mid.oid=%s\n", wine_dbgstr_longlong(header.mid.oid)); - goto end; - } - - stub_manager_ext_release(stubmgr, 1); - - stub_manager_int_release(stubmgr); - - goto end; - } else if (reqtype == REQTYPE_REQUEST) { - wine_rpc_request *xreq; RPC_GetRequest(&xreq); - xreq->hPipe = xhPipe; - hres = read_pipe(xhPipe,&(xreq->reqh),sizeof(xreq->reqh)); - if (hres) goto end; + + xreq->hPipe = pipe; + hres = read_pipe(pipe,&(xreq->reqh),sizeof(xreq->reqh)); + if (hres) + { + xreq->state = REQSTATE_DONE; + return hres; + } + xreq->resph.reqid = xreq->reqh.reqid; xreq->Buffer = HeapAlloc(GetProcessHeap(),0, xreq->reqh.cbBuffer); - hres = read_pipe(xhPipe,xreq->Buffer,xreq->reqh.cbBuffer); + hres = read_pipe(pipe,xreq->Buffer,xreq->reqh.cbBuffer); if (hres) goto end; + + TRACE("received RPC for IPID %s\n", debugstr_guid(&xreq->reqh.ipid)); + xreq->state = REQSTATE_REQ_GOT; goto end; - } else if (reqtype == REQTYPE_RESPONSE) { - wine_rpc_response_header resph; + } + else if (reqtype == REQTYPE_RESPONSE) + { + struct response_header resph; int i; - hres = read_pipe(xhPipe,&resph,sizeof(resph)); + hres = read_pipe(pipe,&resph,sizeof(resph)); if (hres) goto end; - for (i=nrofreqs;i--;) { - wine_rpc_request *xreq = reqs[i]; + + TRACE("read RPC response\n"); + + for (i = nrofreqs; i--;) + { + struct rpc *xreq = reqs[i]; + if (xreq->state != REQSTATE_REQ_WAITING_FOR_REPLY) continue; - if (xreq->reqh.reqid == resph.reqid) { + + if (xreq->reqh.reqid == resph.reqid) + { memcpy(&(xreq->resph),&resph,sizeof(resph)); if (xreq->Buffer) @@ -826,54 +751,86 @@ COM_RpcReceive(wine_pipe *xpipe) { else xreq->Buffer = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,xreq->resph.cbBuffer); - hres = read_pipe(xhPipe,xreq->Buffer,xreq->resph.cbBuffer); + hres = read_pipe(pipe,xreq->Buffer,xreq->resph.cbBuffer); if (hres) goto end; + + TRACE("received response for reqid 0x%lx\n", xreq->reqh.reqid); + xreq->state = REQSTATE_RESP_GOT; - /*PulseEvent(hRpcChanged);*/ goto end; } } - ERR("Did not find request for id %lx\n",resph.reqid); - hres = S_OK; + + ERR("protocol error: did not find request for id %lx\n",resph.reqid); + hres = E_FAIL; goto end; } - ERR("Unknown reqtype %ld\n",reqtype); + + ERR("protocol error: unknown reqtype %ld\n",reqtype); hres = E_FAIL; end: - LeaveCriticalSection(&(xpipe->crit)); return hres; } -/* This thread listens on the given pipe for requests to a particular stub manager */ -static DWORD WINAPI stub_dispatch_thread(LPVOID param) +struct stub_dispatch_params { - wine_pipe *xpipe = (wine_pipe*)param; - HANDLE xhPipe = xpipe->hPipe; - HRESULT hres = S_OK; + struct apartment *apt; + HANDLE pipe; +}; - TRACE("starting for apartment OXID %08lx%08lx\n", (DWORD)(xpipe->mid.oxid >> 32), (DWORD)(xpipe->mid.oxid)); - - /* join marshalling apartment. fixme: this stuff is all very wrong, threading needs to work like native */ - NtCurrentTeb()->ReservedForOle = xpipe->apt; +/* This thread listens on the given pipe for requests to any stub manager */ +static DWORD WINAPI client_dispatch_thread(LPVOID param) +{ + HANDLE pipe = ((struct stub_dispatch_params *)param)->pipe; + struct apartment *apt = ((struct stub_dispatch_params *)param)->apt; + HRESULT hres = S_OK; + HANDLE shutdown_event = dupe_handle(apt->shutdown_event); - while (!hres) { - int i; - - hres = COM_RpcReceive(xpipe); - if (hres) break; + HeapFree(GetProcessHeap(), 0, param); + + /* join marshalling apartment. fixme: this stuff is all very wrong, threading needs to work like native */ + COM_CurrentInfo()->apt = apt; - for (i=nrofreqs;i--;) { - wine_rpc_request *xreq = reqs[i]; - if ((xreq->state == REQSTATE_REQ_GOT) && (xreq->hPipe == xhPipe)) { - hres = COM_InvokeAndRpcSend(xreq); - if (!hres) break; - } - } + while (TRUE) + { + int i; + + TRACE("waiting for RPC on OXID: %08lx%08lx\n", (DWORD)(apt->oxid >> 32), (DWORD)(apt->oxid)); + + /* read a new request into the global array, block if no requests have been sent */ + hres = process_incoming_rpc(pipe); + if (hres) break; + + /* do you expect me to talk? */ + if (WaitForSingleObject(shutdown_event, 0) == WAIT_OBJECT_0) + { + /* no mr bond, i expect you to die! bwahaha */ + CloseHandle(shutdown_event); + break; + } + + TRACE("received RPC on OXID: %08lx%08lx\n", (DWORD)(apt->oxid >> 32), (DWORD)(apt->oxid)); + + /* now scan the array looking for the RPC just loaded */ + for (i=nrofreqs;i--;) + { + struct rpc *req = reqs[i]; + + if ((req->state == REQSTATE_REQ_GOT) && (req->hPipe == pipe)) + { + hres = COM_InvokeAndRpcSend(req); + if (!hres) break; + } + } } - /* fixme: this thread never quits naturally */ - WARN("exiting with hres %lx\n",hres); - CloseHandle(xhPipe); + TRACE("exiting with hres %lx\n",hres); + + /* leave marshalling apartment. fixme: this stuff is all very wrong, threading needs to work like native */ + COM_CurrentInfo()->apt = NULL; + + DisconnectNamedPipe(pipe); + CloseHandle(pipe); return 0; } @@ -892,29 +849,40 @@ struct apartment_listener_params */ static DWORD WINAPI apartment_listener_thread(LPVOID p) { - char pipefn[200]; - HANDLE listenPipe; + char pipefn[200]; + HANDLE listenPipe, thread_handle; + OVERLAPPED overlapped; + HANDLE wait[2]; + struct apartment_listener_params * params = (struct apartment_listener_params *)p; - APARTMENT *apt = params->apt; + struct apartment *apt = params->apt; HANDLE event = params->event; + HANDLE apt_shutdown_event = dupe_handle(apt->shutdown_event); + OXID this_oxid = apt->oxid; /* copy here so we can print it when we shut down */ HeapFree(GetProcessHeap(), 0, params); + overlapped.hEvent = CreateEventA(NULL, TRUE, FALSE, NULL); + /* we must join the marshalling threads apartment. we already have a ref here */ - NtCurrentTeb()->ReservedForOle = apt; + COM_CurrentInfo()->apt = apt; sprintf(pipefn,OLESTUBMGR"_%08lx%08lx", (DWORD)(apt->oxid >> 32), (DWORD)(apt->oxid)); TRACE("Apartment listener thread starting on (%s)\n",pipefn); - while (1) { + while (TRUE) + { + struct stub_dispatch_params *params; + DWORD res; + listenPipe = CreateNamedPipeA( pipefn, - PIPE_ACCESS_DUPLEX, + PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 4096, 4096, - NMPWAIT_USE_DEFAULT_WAIT, + 500 /* 0.5 seconds */, NULL ); @@ -927,19 +895,56 @@ static DWORD WINAPI apartment_listener_thread(LPVOID p) if (listenPipe == INVALID_HANDLE_VALUE) { FIXME("pipe creation failed for %s, error %ld\n",pipefn,GetLastError()); - return 1; /* permanent failure, so quit stubmgr thread */ + break; /* permanent failure, so quit stubmgr thread */ } + TRACE("waiting for a client ...\n"); + /* an already connected pipe is not an error */ - if (!ConnectNamedPipe(listenPipe,NULL) && - (GetLastError() != ERROR_PIPE_CONNECTED)) { - ERR("Failure during ConnectNamedPipe %ld!\n",GetLastError()); - CloseHandle(listenPipe); - continue; + if (!ConnectNamedPipe(listenPipe, &overlapped)) + { + DWORD le = GetLastError(); + + if ((le != ERROR_IO_PENDING) && (le != ERROR_PIPE_CONNECTED)) + { + ERR("Failure during ConnectNamedPipe %ld!\n",GetLastError()); + CloseHandle(listenPipe); + continue; + } } - PIPE_StartRequestThread(listenPipe); + /* wait for action */ + wait[0] = apt_shutdown_event; + wait[1] = overlapped.hEvent; + res = WaitForMultipleObjectsEx(2, wait, FALSE, INFINITE, FALSE); + if (res == WAIT_OBJECT_0) break; + + ResetEvent(overlapped.hEvent); + + /* start the stub dispatch thread for this connection */ + TRACE("starting stub dispatch thread for OXID %08lx%08lx\n", (DWORD)(apt->oxid >> 32), (DWORD)(apt->oxid)); + params = HeapAlloc(GetProcessHeap(), 0, sizeof(struct stub_dispatch_params)); + if (!params) + { + ERR("out of memory, dropping this client\n"); + CloseHandle(listenPipe); + continue; + } + params->apt = apt; + params->pipe = listenPipe; + thread_handle = CreateThread(NULL, 0, &client_dispatch_thread, params, 0, NULL); + CloseHandle(thread_handle); } + + TRACE("shutting down: %s\n", wine_dbgstr_longlong(this_oxid)); + + /* we must leave the marshalling threads apartment. we don't have a ref here */ + COM_CurrentInfo()->apt = NULL; + + DisconnectNamedPipe(listenPipe); + CloseHandle(listenPipe); + CloseHandle(overlapped.hEvent); + CloseHandle(apt_shutdown_event); return 0; } @@ -1004,12 +1009,15 @@ static DWORD WINAPI local_server_thread(LPVOID param) HeapFree(GetProcessHeap(), 0, lsp); hPipe = CreateNamedPipeA( pipefn, PIPE_ACCESS_DUPLEX, - PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, - 4096, 4096, NMPWAIT_USE_DEFAULT_WAIT, NULL ); - if (hPipe == INVALID_HANDLE_VALUE) { + PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, + 4096, 4096, 500 /* 0.5 second timeout */, NULL ); + + if (hPipe == INVALID_HANDLE_VALUE) + { FIXME("pipe creation failed for %s, le is %ld\n",pipefn,GetLastError()); return 1; } + while (1) { if (!ConnectNamedPipe(hPipe,NULL)) { ERR("Failure during ConnectNamedPipe %ld, ABORT!\n",GetLastError()); @@ -1037,8 +1045,6 @@ static DWORD WINAPI local_server_thread(LPVOID param) return hres; } - IStream_Release(pStm); - WriteFile(hPipe,buffer,buflen,&res,NULL); FlushFileBuffers(hPipe); DisconnectNamedPipe(hPipe); @@ -1046,6 +1052,7 @@ static DWORD WINAPI local_server_thread(LPVOID param) TRACE("done marshalling IClassFactory\n"); } CloseHandle(hPipe); + IStream_Release(pStm); return 0; } diff --git a/reactos/lib/ole32/stubmanager.c b/reactos/lib/ole32/stubmanager.c index 54a42904788..24c77517b15 100644 --- a/reactos/lib/ole32/stubmanager.c +++ b/reactos/lib/ole32/stubmanager.c @@ -94,6 +94,7 @@ static void stub_manager_delete(struct stub_manager *m) list_remove(&m->entry); + /* release every ifstub */ while ((cursor = list_head(&m->ifstubs))) { struct ifstub *ifstub = LIST_ENTRY(cursor, struct ifstub, entry); @@ -107,19 +108,13 @@ static void stub_manager_delete(struct stub_manager *m) HeapFree(GetProcessHeap(), 0, m); } -/* gets the stub manager associated with an object - caller must call - * release on the stub manager when it is no longer needed */ -struct stub_manager *get_stub_manager_from_object(OXID oxid, void *object) +/* gets the stub manager associated with an object - caller must have + * a reference to the apartment while a reference to the stub manager is held. + * it must also call release on the stub manager when it is no longer needed */ +struct stub_manager *get_stub_manager_from_object(APARTMENT *apt, void *object) { struct stub_manager *result = NULL; struct list *cursor; - APARTMENT *apt; - - if (!(apt = COM_ApartmentFromOXID(oxid, TRUE))) - { - WARN("Could not map OXID %s to apartment object\n", wine_dbgstr_longlong(oxid)); - return NULL; - } EnterCriticalSection(&apt->cs); LIST_FOR_EACH( cursor, &apt->stubmgrs ) @@ -135,13 +130,69 @@ struct stub_manager *get_stub_manager_from_object(OXID oxid, void *object) } LeaveCriticalSection(&apt->cs); - COM_ApartmentRelease(apt); - - TRACE("found %p from object %p\n", result, object); + if (result) + TRACE("found %p for object %p\n", result, object); + else + TRACE("not found for object %p\n", object); return result; } +/* removes the apartment reference to an object, destroying it when no other + * threads have a reference to it */ +void apartment_disconnect_object(APARTMENT *apt, void *object) +{ + int found = FALSE; + struct stub_manager *stubmgr; + + EnterCriticalSection(&apt->cs); + LIST_FOR_EACH_ENTRY( stubmgr, &apt->stubmgrs, struct stub_manager, entry ) + { + if (stubmgr->object == object) + { + found = TRUE; + stub_manager_int_release(stubmgr); + break; + } + } + LeaveCriticalSection(&apt->cs); + + if (found) + TRACE("disconnect object %p\n", object); + else + WARN("couldn't find object %p\n", object); +} + +/* gets the stub manager associated with an object id - caller must have + * a reference to the apartment while a reference to the stub manager is held. + * it must also call release on the stub manager when it is no longer needed */ +struct stub_manager *get_stub_manager(APARTMENT *apt, OID oid) +{ + struct stub_manager *result = NULL; + struct list *cursor; + + EnterCriticalSection(&apt->cs); + LIST_FOR_EACH( cursor, &apt->stubmgrs ) + { + struct stub_manager *m = LIST_ENTRY( cursor, struct stub_manager, entry ); + + if (m->oid == oid) + { + result = m; + stub_manager_int_addref(result); + break; + } + } + LeaveCriticalSection(&apt->cs); + + if (result) + TRACE("found %p for oid %s\n", result, wine_dbgstr_longlong(oid)); + else + TRACE("not found for oid %s\n", wine_dbgstr_longlong(oid)); + + return result; +} + /* increments the internal refcount */ ULONG stub_manager_int_addref(struct stub_manager *This) { @@ -174,41 +225,6 @@ ULONG stub_manager_int_release(struct stub_manager *This) return refs; } -/* gets the stub manager associated with an object id - caller must call - * release on the stub manager when it is no longer needed */ -struct stub_manager *get_stub_manager(OXID oxid, OID oid) -{ - struct stub_manager *result = NULL; - struct list *cursor; - APARTMENT *apt; - - if (!(apt = COM_ApartmentFromOXID(oxid, TRUE))) - { - WARN("Could not map OXID %s to apartment object\n", wine_dbgstr_longlong(oxid)); - return NULL; - } - - EnterCriticalSection(&apt->cs); - LIST_FOR_EACH( cursor, &apt->stubmgrs ) - { - struct stub_manager *m = LIST_ENTRY( cursor, struct stub_manager, entry ); - - if (m->oid == oid) - { - result = m; - stub_manager_int_addref(result); - break; - } - } - LeaveCriticalSection(&apt->cs); - - COM_ApartmentRelease(apt); - - TRACE("found %p from oid %s\n", result, wine_dbgstr_longlong(oid)); - - return result; -} - /* add some external references (ie from a client that unmarshaled an ifptr) */ ULONG stub_manager_ext_addref(struct stub_manager *m, ULONG refs) { @@ -253,11 +269,101 @@ static struct ifstub *stub_manager_ipid_to_ifstub(struct stub_manager *m, const return result; } -IRpcStubBuffer *stub_manager_ipid_to_stubbuffer(struct stub_manager *m, const IPID *ipid) +/* gets the stub manager associated with an ipid - caller must have + * a reference to the apartment while a reference to the stub manager is held. + * it must also call release on the stub manager when it is no longer needed */ +static struct stub_manager *get_stub_manager_from_ipid(APARTMENT *apt, const IPID *ipid) { - struct ifstub *ifstub = stub_manager_ipid_to_ifstub(m, ipid); - - return ifstub ? ifstub->stubbuffer : NULL; + struct stub_manager *result = NULL; + struct list *cursor; + + EnterCriticalSection(&apt->cs); + LIST_FOR_EACH( cursor, &apt->stubmgrs ) + { + struct stub_manager *m = LIST_ENTRY( cursor, struct stub_manager, entry ); + + if (stub_manager_ipid_to_ifstub(m, ipid)) + { + result = m; + stub_manager_int_addref(result); + break; + } + } + LeaveCriticalSection(&apt->cs); + + if (result) + TRACE("found %p for ipid %s\n", result, debugstr_guid(ipid)); + else + ERR("not found for ipid %s\n", debugstr_guid(ipid)); + + return result; +} + +HRESULT ipid_to_stub_manager(const IPID *ipid, APARTMENT **stub_apt, struct stub_manager **stubmgr_ret) +{ + /* FIXME: hack for IRemUnknown */ + if (ipid->Data2 == 0xffff) + *stub_apt = COM_ApartmentFromOXID(*(OXID *)ipid->Data4, TRUE); + else + *stub_apt = COM_ApartmentFromTID(ipid->Data2); + if (!*stub_apt) + { + ERR("Couldn't find apartment corresponding to TID 0x%04x\n", ipid->Data2); + return RPC_E_INVALID_OBJECT; + } + *stubmgr_ret = get_stub_manager_from_ipid(*stub_apt, ipid); + if (!*stubmgr_ret) + { + COM_ApartmentRelease(*stub_apt); + *stub_apt = NULL; + return RPC_E_INVALID_OBJECT; + } + return S_OK; +} + +IRpcStubBuffer *ipid_to_stubbuffer(const IPID *ipid) +{ + IRpcStubBuffer *ret = NULL; + APARTMENT *apt; + struct stub_manager *stubmgr; + struct ifstub *ifstub; + HRESULT hr; + + hr = ipid_to_stub_manager(ipid, &apt, &stubmgr); + if (hr != S_OK) return NULL; + + ifstub = stub_manager_ipid_to_ifstub(stubmgr, ipid); + if (ifstub) + ret = ifstub->stubbuffer; + + stub_manager_int_release(stubmgr); + + COM_ApartmentRelease(apt); + + return ret; +} + +/* generates an ipid in the following format (similar to native version): + * Data1 = apartment-local ipid counter + * Data2 = apartment creator thread ID + * Data3 = process ID + * Data4 = random value + */ +static inline HRESULT generate_ipid(struct stub_manager *m, IPID *ipid) +{ + HRESULT hr; + hr = UuidCreate(ipid); + if (FAILED(hr)) + { + ERR("couldn't create IPID for stub manager %p\n", m); + UuidCreateNil(ipid); + return hr; + } + + ipid->Data1 = InterlockedIncrement(&m->apt->ipidc); + ipid->Data2 = (USHORT)m->apt->tid; + ipid->Data3 = (USHORT)GetCurrentProcessId(); + return S_OK; } /* registers a new interface stub COM object with the stub manager and returns registration record */ @@ -276,14 +382,33 @@ struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *s /* no need to ref this, same object as sb */ stub->iface = iptr; - stub->table = tablemarshal; + + if (tablemarshal) + stub->state = IFSTUB_STATE_TABLE_MARSHALED; + else + stub->state = IFSTUB_STATE_NORMAL_MARSHALED; + stub->iid = *iid; - stub->ipid = *iid; /* FIXME: should be globally unique */ + + /* FIXME: hack for IRemUnknown because we don't notify SCM of our IPID + * yet, so we need to use a well-known one */ + if (IsEqualIID(iid, &IID_IRemUnknown)) + { + stub->ipid.Data1 = 0xffffffff; + stub->ipid.Data2 = 0xffff; + stub->ipid.Data3 = 0xffff; + assert(sizeof(stub->ipid.Data4) == sizeof(m->apt->oxid)); + memcpy(&stub->ipid.Data4, &m->apt->oxid, sizeof(OXID)); + } + else + generate_ipid(m, &stub->ipid); EnterCriticalSection(&m->lock); list_add_head(&m->ifstubs, &stub->entry); LeaveCriticalSection(&m->lock); + TRACE("ifstub %p created with ipid %s\n", stub, debugstr_guid(&stub->ipid)); + return stub; } @@ -298,3 +423,278 @@ static void stub_manager_delete_ifstub(struct stub_manager *m, struct ifstub *if HeapFree(GetProcessHeap(), 0, ifstub); } + +/* returns TRUE if it is possible to unmarshal, FALSE otherwise. */ +BOOL stub_manager_notify_unmarshal(struct stub_manager *m, const IPID *ipid) +{ + struct ifstub *ifstub; + BOOL ret; + + ifstub = stub_manager_ipid_to_ifstub(m, ipid); + if (!ifstub) + { + WARN("Can't find ifstub for OID %s, IPID %s\n", + wine_dbgstr_longlong(m->oid), wine_dbgstr_guid(ipid)); + return FALSE; + } + + EnterCriticalSection(&m->lock); + + switch (ifstub->state) + { + case IFSTUB_STATE_TABLE_MARSHALED: + ret = TRUE; + break; + case IFSTUB_STATE_NORMAL_MARSHALED: + ifstub->state = IFSTUB_STATE_NORMAL_UNMARSHALED; + ret = TRUE; + break; + default: + WARN("object OID %s, IPID %s already unmarshaled\n", + wine_dbgstr_longlong(m->oid), wine_dbgstr_guid(ipid)); + ret = FALSE; + break; + } + + LeaveCriticalSection(&m->lock); + + return ret; +} + +/* is an ifstub table marshaled? */ +BOOL stub_manager_is_table_marshaled(struct stub_manager *m, const IPID *ipid) +{ + struct ifstub *ifstub; + BOOL ret; + + ifstub = stub_manager_ipid_to_ifstub(m, ipid); + if (!ifstub) + { + WARN("Can't find ifstub for OID %s, IPID %s\n", + wine_dbgstr_longlong(m->oid), wine_dbgstr_guid(ipid)); + return FALSE; + } + + EnterCriticalSection(&m->lock); + ret = (ifstub->state == IFSTUB_STATE_TABLE_MARSHALED); + LeaveCriticalSection(&m->lock); + + return ret; +} + + +/***************************************************************************** + * + * IRemUnknown implementation + * + * + * Note: this object is not related to the lifetime of a stub_manager, but it + * interacts with stub managers. + */ + +const IID IID_IRemUnknown = { 0x00000131, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} }; + +typedef struct rem_unknown +{ + const IRemUnknownVtbl *lpVtbl; + ULONG refs; +} RemUnknown; + +static const IRemUnknownVtbl RemUnknown_Vtbl; + + +/* construct an IRemUnknown object with one outstanding reference */ +static HRESULT RemUnknown_Construct(IRemUnknown **ppRemUnknown) +{ + RemUnknown *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + + if (!This) return E_OUTOFMEMORY; + + This->lpVtbl = &RemUnknown_Vtbl; + This->refs = 1; + + *ppRemUnknown = (IRemUnknown *)This; + return S_OK; +} + +static HRESULT WINAPI RemUnknown_QueryInterface(IRemUnknown *iface, REFIID riid, void **ppv) +{ + TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppv); + + if (IsEqualIID(riid, &IID_IUnknown) || + IsEqualIID(riid, &IID_IRemUnknown)) + { + *ppv = (LPVOID)iface; + IRemUnknown_AddRef(iface); + return S_OK; + } + + FIXME("No interface for iid %s\n", debugstr_guid(riid)); + + *ppv = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI RemUnknown_AddRef(IRemUnknown *iface) +{ + ULONG refs; + RemUnknown *This = (RemUnknown *)iface; + + refs = InterlockedIncrement(&This->refs); + + TRACE("%p before: %ld\n", iface, refs-1); + return refs; +} + +static ULONG WINAPI RemUnknown_Release(IRemUnknown *iface) +{ + ULONG refs; + RemUnknown *This = (RemUnknown *)iface; + + refs = InterlockedDecrement(&This->refs); + if (!refs) + HeapFree(GetProcessHeap(), 0, This); + + TRACE("%p after: %ld\n", iface, refs); + return refs; +} + +static HRESULT WINAPI RemUnknown_RemQueryInterface(IRemUnknown *iface, + REFIPID ripid, ULONG cRefs, USHORT cIids, IID *iids /* [size_is(cIids)] */, + REMQIRESULT **ppQIResults /* [size_is(,cIids)] */) +{ + HRESULT hr; + USHORT i; + USHORT successful_qis = 0; + APARTMENT *apt; + struct stub_manager *stubmgr; + + TRACE("(%p)->(%s, %ld, %d, %p, %p)\n", iface, debugstr_guid(ripid), cRefs, cIids, iids, ppQIResults); + + hr = ipid_to_stub_manager(ripid, &apt, &stubmgr); + if (hr != S_OK) return hr; + + *ppQIResults = CoTaskMemAlloc(sizeof(REMQIRESULT) * cIids); + + for (i = 0; i < cIids; i++) + { + HRESULT hrobj = register_ifstub(apt, &(*ppQIResults)[i].std, &iids[i], + stubmgr->object, MSHLFLAGS_NORMAL); + if (hrobj == S_OK) + successful_qis++; + (*ppQIResults)[i].hResult = hrobj; + } + + stub_manager_int_release(stubmgr); + COM_ApartmentRelease(apt); + + if (successful_qis == cIids) + return S_OK; /* we got all requested interfaces */ + else if (successful_qis == 0) + return E_NOINTERFACE; /* we didn't get any interfaces */ + else + return S_FALSE; /* we got some interfaces */ +} + +static HRESULT WINAPI RemUnknown_RemAddRef(IRemUnknown *iface, + USHORT cInterfaceRefs, + REMINTERFACEREF* InterfaceRefs /* [size_is(cInterfaceRefs)] */, + HRESULT *pResults /* [size_is(cInterfaceRefs)] */) +{ + HRESULT hr = S_OK; + USHORT i; + + TRACE("(%p)->(%d, %p, %p)\n", iface, cInterfaceRefs, InterfaceRefs, pResults); + + for (i = 0; i < cInterfaceRefs; i++) + { + APARTMENT *apt; + struct stub_manager *stubmgr; + + pResults[i] = ipid_to_stub_manager(&InterfaceRefs[i].ipid, &apt, &stubmgr); + if (pResults[i] != S_OK) + { + hr = S_FALSE; + continue; + } + + stub_manager_ext_addref(stubmgr, InterfaceRefs[i].cPublicRefs); + if (InterfaceRefs[i].cPrivateRefs) + FIXME("Adding %ld refs securely not implemented\n", InterfaceRefs[i].cPrivateRefs); + + stub_manager_int_release(stubmgr); + COM_ApartmentRelease(apt); + } + + return hr; +} + +static HRESULT WINAPI RemUnknown_RemRelease(IRemUnknown *iface, + USHORT cInterfaceRefs, + REMINTERFACEREF* InterfaceRefs /* [size_is(cInterfaceRefs)] */) +{ + HRESULT hr = S_OK; + USHORT i; + + TRACE("(%p)->(%d, %p)\n", iface, cInterfaceRefs, InterfaceRefs); + + for (i = 0; i < cInterfaceRefs; i++) + { + APARTMENT *apt; + struct stub_manager *stubmgr; + + hr = ipid_to_stub_manager(&InterfaceRefs[i].ipid, &apt, &stubmgr); + if (hr != S_OK) + { + hr = E_INVALIDARG; + /* FIXME: we should undo any changes already made in this function */ + break; + } + + stub_manager_ext_release(stubmgr, InterfaceRefs[i].cPublicRefs); + if (InterfaceRefs[i].cPrivateRefs) + FIXME("Releasing %ld refs securely not implemented\n", InterfaceRefs[i].cPrivateRefs); + + stub_manager_int_release(stubmgr); + COM_ApartmentRelease(apt); + } + + return hr; +} + +static const IRemUnknownVtbl RemUnknown_Vtbl = +{ + RemUnknown_QueryInterface, + RemUnknown_AddRef, + RemUnknown_Release, + RemUnknown_RemQueryInterface, + RemUnknown_RemAddRef, + RemUnknown_RemRelease +}; + +/* starts the IRemUnknown listener for the current apartment */ +HRESULT start_apartment_remote_unknown() +{ + IRemUnknown *pRemUnknown; + HRESULT hr = S_OK; + APARTMENT *apt = COM_CurrentApt(); + + EnterCriticalSection(&apt->cs); + if (!apt->remunk_exported) + { + /* create the IRemUnknown object */ + hr = RemUnknown_Construct(&pRemUnknown); + if (hr == S_OK) + { + STDOBJREF stdobjref; /* dummy - not used */ + /* register it with the stub manager */ + hr = register_ifstub(COM_CurrentApt(), &stdobjref, &IID_IRemUnknown, (IUnknown *)pRemUnknown, MSHLFLAGS_NORMAL); + /* release our reference to the object as the stub manager will manage the life cycle for us */ + IRemUnknown_Release(pRemUnknown); + if (hr == S_OK) + apt->remunk_exported = TRUE; + } + } + LeaveCriticalSection(&apt->cs); + return hr; +} diff --git a/reactos/w32api/include/winerror.h b/reactos/w32api/include/winerror.h index 0ff2573a11b..895f3d49b31 100644 --- a/reactos/w32api/include/winerror.h +++ b/reactos/w32api/include/winerror.h @@ -2198,6 +2198,7 @@ #define RPC_E_CANTCALLOUT_ININPUTSYNCCALL ((HRESULT)0x8001010DL) #define RPC_E_WRONG_THREAD ((HRESULT)0x8001010EL) #define RPC_E_THREAD_NOT_INIT ((HRESULT)0x8001010FL) +#define RPC_E_INVALID_OBJECT ((HRESULT)0x80010114L) #define RPC_E_INVALID_OBJREF ((HRESULT)0x8001011DL) #define RPC_E_UNEXPECTED ((HRESULT)0x8001FFFFL) diff --git a/reactos/w32api/include/wtypes.h b/reactos/w32api/include/wtypes.h index aa749e0209e..0beb1f66119 100644 --- a/reactos/w32api/include/wtypes.h +++ b/reactos/w32api/include/wtypes.h @@ -60,7 +60,7 @@ typedef enum tagCLSCTX { CLSCTX_INPROC_SERVER16=8,CLSCTX_REMOTE_SERVER=16 } CLSCTX; typedef enum tagMSHLFLAGS { - MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK + MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK,MSHLFLAGS_NOPING } MSHLFLAGS; typedef struct _FLAGGED_WORD_BLOB { unsigned long fFlags; From 5faf6ad9c1d7261ebf67f7cb4c1ed13e73f063f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 13 Feb 2005 21:03:37 +0000 Subject: [PATCH 022/248] Sync to Wine-20050211 James Hawkins - Use Interlocked* instead of ++/-- in AddRef/Release. - Use only stored result of Interlocked* in AddRef/Release. - Expand TRACEs to display the ref count. Alex Villacis Lasso - Initialize temporary variants before calling VariantChangeTypeEx. - When parsing an hex/oct integer value, copy value verbatim in VARIANT, rather than a negated value. Add test case for this behavior. Vincent Beron - Remove message telling users to copy native stdole32.tlb over as we now provide it. - Better trace in LoadTypeLib. - Change debug messages type to reflect we provide stdole32.tlb. Robert Shearman - Move OLE automation interface registration to oleaut32. - Add IRemUnknown to list of interfaces to register. Mike Hearn - Change some FIXMEs to ERRs to reflect the fact that nothing needs fixing. - Fix some memory leaks on error paths in _marshal_interface. - Fix a typo, propagate errors better from inside the typelib marshaller. - Return OLE automation build value as win2k by default. Rein Klazes - SafeArrayDestroy() returns success when called with a NULL pointer. Added to the test cases. Paul Vriens - Add WinXP to OaBuildVersion. svn path=/trunk/; revision=13533 --- reactos/lib/oleaut32/connpt.c | 42 ++-- reactos/lib/oleaut32/dispatch.c | 15 +- reactos/lib/oleaut32/oleaut.c | 5 +- reactos/lib/oleaut32/olefont.c | 2 +- reactos/lib/oleaut32/olepicture.c | 19 +- reactos/lib/oleaut32/regsvr.c | 351 ++++++++++++++++++++++++++++++ reactos/lib/oleaut32/safearray.c | 2 +- reactos/lib/oleaut32/tmarshal.c | 169 ++++++++------ reactos/lib/oleaut32/typelib.c | 23 +- reactos/lib/oleaut32/variant.c | 36 ++- 10 files changed, 515 insertions(+), 149 deletions(-) diff --git a/reactos/lib/oleaut32/connpt.c b/reactos/lib/oleaut32/connpt.c index c820abf913c..1993619aaf3 100644 --- a/reactos/lib/oleaut32/connpt.c +++ b/reactos/lib/oleaut32/connpt.c @@ -196,8 +196,11 @@ static HRESULT WINAPI ConnectionPointImpl_QueryInterface( static ULONG WINAPI ConnectionPointImpl_AddRef(IConnectionPoint* iface) { ConnectionPointImpl *This = (ConnectionPointImpl *)iface; - TRACE("(%p)->(ref=%ld)\n", This, This->ref); - return InterlockedIncrement(&This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1); + + return refCount; } /************************************************************************ @@ -209,20 +212,16 @@ static ULONG WINAPI ConnectionPointImpl_Release( IConnectionPoint* iface) { ConnectionPointImpl *This = (ConnectionPointImpl *)iface; - ULONG ref; - TRACE("(%p)->(ref=%ld)\n", This, This->ref); + ULONG refCount = InterlockedDecrement(&This->ref); - /* - * Decrease the reference count on this object. - */ - ref = InterlockedDecrement(&This->ref); + TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1); /* * If the reference count goes down to 0, perform suicide. */ - if (ref == 0) ConnectionPointImpl_Destroy(This); + if (!refCount) ConnectionPointImpl_Destroy(This); - return ref; + return refCount; } /************************************************************************ @@ -470,11 +469,12 @@ static HRESULT WINAPI EnumConnectionsImpl_QueryInterface( static ULONG WINAPI EnumConnectionsImpl_AddRef(IEnumConnections* iface) { EnumConnectionsImpl *This = (EnumConnectionsImpl *)iface; - ULONG ref; - TRACE("(%p)->(ref=%ld)\n", This, This->ref); - ref = InterlockedIncrement(&This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1); + IUnknown_AddRef(This->pUnk); - return ref; + return refCount; } /************************************************************************ @@ -485,22 +485,18 @@ static ULONG WINAPI EnumConnectionsImpl_AddRef(IEnumConnections* iface) static ULONG WINAPI EnumConnectionsImpl_Release(IEnumConnections* iface) { EnumConnectionsImpl *This = (EnumConnectionsImpl *)iface; - ULONG ref; - TRACE("(%p)->(ref=%ld)\n", This, This->ref); + ULONG refCount = InterlockedDecrement(&This->ref); + + TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1); IUnknown_Release(This->pUnk); - /* - * Decrease the reference count on this object. - */ - ref = InterlockedDecrement(&This->ref); - /* * If the reference count goes down to 0, perform suicide. */ - if (ref == 0) EnumConnectionsImpl_Destroy(This); + if (!refCount) EnumConnectionsImpl_Destroy(This); - return ref; + return refCount; } /************************************************************************ diff --git a/reactos/lib/oleaut32/dispatch.c b/reactos/lib/oleaut32/dispatch.c index b3bc302c5df..66bed47500e 100644 --- a/reactos/lib/oleaut32/dispatch.c +++ b/reactos/lib/oleaut32/dispatch.c @@ -256,9 +256,11 @@ static HRESULT WINAPI StdDispatch_QueryInterface( static ULONG WINAPI StdDispatch_AddRef(LPDISPATCH iface) { StdDispatch *This = (StdDispatch *)iface; - TRACE("()\n"); + ULONG refCount = InterlockedIncrement(&This->ref); - return InterlockedIncrement(&This->ref); + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); + + return refCount; } /****************************************************************************** @@ -269,18 +271,17 @@ static ULONG WINAPI StdDispatch_AddRef(LPDISPATCH iface) static ULONG WINAPI StdDispatch_Release(LPDISPATCH iface) { StdDispatch *This = (StdDispatch *)iface; - ULONG ref; - TRACE("(%p)->()\n", This); + ULONG refCount = InterlockedDecrement(&This->ref); - ref = InterlockedDecrement(&This->ref); + TRACE("(%p)->(ref before=%lu)\n", This, refCount + 1); - if (ref == 0) + if (!refCount) { ITypeInfo_Release(This->pTypeInfo); CoTaskMemFree(This); } - return ref; + return refCount; } /****************************************************************************** diff --git a/reactos/lib/oleaut32/oleaut.c b/reactos/lib/oleaut32/oleaut.c index 374eddf35e5..14268147008 100644 --- a/reactos/lib/oleaut32/oleaut.c +++ b/reactos/lib/oleaut32/oleaut.c @@ -563,10 +563,11 @@ ULONG WINAPI OaBuildVersion() case 0x80000a04: /* WIN98 */ case 0x00000004: /* NT40 */ case 0x00000005: /* W2K */ + case 0x00000105: /* WinXP */ return MAKELONG(0xffff, 40); default: - ERR("Version value not known yet. Please investigate it !\n"); - return 0x0; + FIXME("Version value not known yet. Please investigate it !\n"); + return MAKELONG(0xffff, 40); /* for now return the same value as for w2k */ } } diff --git a/reactos/lib/oleaut32/olefont.c b/reactos/lib/oleaut32/olefont.c index 27d1fc5b010..09e8e2bdd42 100644 --- a/reactos/lib/oleaut32/olefont.c +++ b/reactos/lib/oleaut32/olefont.c @@ -1214,7 +1214,7 @@ static HRESULT WINAPI OLEFontImpl_GetTypeInfo( return E_FAIL; hres = LoadTypeLib(stdole32tlb, &tl); if (FAILED(hres)) { - FIXME("Could not load the stdole32.tlb?\n"); + ERR("Could not load the stdole32.tlb?\n"); return hres; } hres = ITypeLib_GetTypeInfoOfGuid(tl, &IID_IDispatch, ppTInfo); diff --git a/reactos/lib/oleaut32/olepicture.c b/reactos/lib/oleaut32/olepicture.c index a7bbed07185..45736779be8 100644 --- a/reactos/lib/oleaut32/olepicture.c +++ b/reactos/lib/oleaut32/olepicture.c @@ -409,8 +409,11 @@ static ULONG WINAPI OLEPictureImpl_AddRef( IPicture* iface) { OLEPictureImpl *This = (OLEPictureImpl *)iface; - TRACE("(%p)->(ref=%ld)\n", This, This->ref); - return InterlockedIncrement(&This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1); + + return refCount; } /************************************************************************ @@ -422,20 +425,16 @@ static ULONG WINAPI OLEPictureImpl_Release( IPicture* iface) { OLEPictureImpl *This = (OLEPictureImpl *)iface; - ULONG ret; - TRACE("(%p)->(ref=%ld)\n", This, This->ref); + ULONG refCount = InterlockedDecrement(&This->ref); - /* - * Decrease the reference count on this object. - */ - ret = InterlockedDecrement(&This->ref); + TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1); /* * If the reference count goes down to 0, perform suicide. */ - if (ret==0) OLEPictureImpl_Destroy(This); + if (!refCount) OLEPictureImpl_Destroy(This); - return ret; + return refCount; } diff --git a/reactos/lib/oleaut32/regsvr.c b/reactos/lib/oleaut32/regsvr.c index 6272f240d69..2c1e851b200 100644 --- a/reactos/lib/oleaut32/regsvr.c +++ b/reactos/lib/oleaut32/regsvr.c @@ -545,7 +545,358 @@ static struct regsvr_coclass const coclass_list[] = { * interface list */ +/* FIXME: these interfaces should be defined in ocidl.idl */ + +static IID const IID_IFontEventsDisp = { + 0x4EF6100A, 0xAF88, 0x11D0, {0x98,0x46,0x00,0xC0,0x4F,0xC2,0x99,0x93} }; + +static IID const IID_IProvideMultipleClassInfo = { + 0xA7ABA9C1, 0x8983, 0x11CF, {0x8F,0x20,0x00,0x80,0x5F,0x2C,0xD0,0x64} }; + static struct regsvr_interface const interface_list[] = { + { &IID_IDispatch, + "IDispatch", + NULL, + 7, + &CLSID_PSDispatch, + &CLSID_PSDispatch + }, + { &IID_ITypeInfo, + "ITypeInfo", + NULL, + 22, + NULL, + &CLSID_PSTypeInfo + }, + { &IID_ITypeLib, + "ITypeLib", + NULL, + 13, + NULL, + &CLSID_PSTypeLib + }, + { &IID_ITypeComp, + "ITypeComp", + NULL, + 5, + NULL, + &CLSID_PSTypeComp + }, + { &IID_IEnumVARIANT, + "IEnumVARIANT", + NULL, + 15, + NULL, + &CLSID_PSEnumVariant + }, + { &IID_ICreateTypeInfo, + "ICreateTypeInfo", + NULL, + 26, + NULL, + NULL + }, + { &IID_ICreateTypeLib, + "ICreateTypeLib", + NULL, + 13, + NULL, + NULL + }, + { &IID_ITypeInfo2, + "ITypeInfo2", + NULL, + 32, + NULL, + &CLSID_PSDispatch + }, + { &IID_ITypeLib2, + "ITypeLib2", + NULL, + 16, + NULL, + &CLSID_PSDispatch + }, + { &IID_IPropertyPage2, + "IPropertyPage2", + NULL, + 15, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IErrorInfo, + "IErrorInfo", + NULL, + 8, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_ICreateErrorInfo, + "ICreateErrorInfo", + NULL, + 8, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPersistPropertyBag2, + "IPersistPropertyBag2", + NULL, + 8, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPropertyBag2, + "IPropertyBag2", + NULL, + 8, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IErrorLog, + "IErrorLog", + NULL, + 4, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPerPropertyBrowsing, + "IPerPropertyBrowsing", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPersistPropertyBag, + "IPersistPropertyBag", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IAdviseSinkEx, + "IAdviseSinkEx", + NULL, + 9, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IFontEventsDisp, + "IFontEventsDisp", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPropertyBag, + "IPropertyBag", + NULL, + 5, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPointerInactive, + "IPointerInactive", + NULL, + 6, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_ISimpleFrameSite, + "ISimpleFrameSite", + NULL, + 5, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPicture, + "IPicture", + NULL, + 17, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPictureDisp, + "IPictureDisp", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPersistStreamInit, + "IPersistStreamInit", + NULL, + 9, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IOleUndoUnit, + "IOleUndoUnit", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPropertyNotifySink, + "IPropertyNotifySink", + NULL, + 5, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IOleInPlaceSiteEx, + "IOleInPlaceSiteEx", + NULL, + 18, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IOleParentUndoUnit, + "IOleParentUndoUnit", + NULL, + 12, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IProvideClassInfo2, + "IProvideClassInfo2", + NULL, + 5, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IProvideMultipleClassInfo, + "IProvideMultipleClassInfo", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IProvideClassInfo, + "IProvideClassInfo", + NULL, + 4, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IConnectionPointContainer, + "IConnectionPointContainer", + NULL, + 5, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IEnumConnectionPoints, + "IEnumConnectionPoints", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IConnectionPoint, + "IConnectionPoint", + NULL, + 8, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IEnumConnections, + "IEnumConnections", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IOleControl, + "IOleControl", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IOleControlSite, + "IOleControlSite", + NULL, + 10, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_ISpecifyPropertyPages, + "ISpecifyPropertyPages", + NULL, + 4, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPropertyPageSite, + "IPropertyPageSite", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPropertyPage, + "IPropertyPage", + NULL, + 14, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IClassFactory2, + "IClassFactory2", + NULL, + 8, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IEnumOleUndoUnits, + "IEnumOleUndoUnits", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IPersistMemory, + "IPersistMemory", + NULL, + 9, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IFont, + "IFont", + NULL, + 27, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IFontDisp, + "IFontDisp", + NULL, + 7, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IQuickActivate, + "IQuickActivate", + NULL, + 6, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IOleUndoManager, + "IOleUndoManager", + NULL, + 15, + NULL, + &CLSID_PSFactoryBuffer + }, + { &IID_IObjectWithSite, + "IObjectWithSite", + NULL, + 5, + NULL, + &CLSID_PSFactoryBuffer + }, { NULL } /* list terminator */ }; diff --git a/reactos/lib/oleaut32/safearray.c b/reactos/lib/oleaut32/safearray.c index b79f56ab76b..d183a5cc614 100644 --- a/reactos/lib/oleaut32/safearray.c +++ b/reactos/lib/oleaut32/safearray.c @@ -1337,7 +1337,7 @@ HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa) TRACE("(%p)\n", psa); if(!psa) - return E_INVALIDARG; + return S_OK; if(psa->cLocks > 0) return DISP_E_ARRAYISLOCKED; diff --git a/reactos/lib/oleaut32/tmarshal.c b/reactos/lib/oleaut32/tmarshal.c index 0957d74ae4e..efc1f1021d2 100644 --- a/reactos/lib/oleaut32/tmarshal.c +++ b/reactos/lib/oleaut32/tmarshal.c @@ -116,34 +116,50 @@ _unmarshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN *pUnk) { DWORD xsize; TRACE("...%s...\n",debugstr_guid(riid)); + *pUnk = NULL; hres = xbuf_get(buf,(LPBYTE)&xsize,sizeof(xsize)); - if (hres) return hres; + if (hres) { + ERR("xbuf_get failed\n"); + return hres; + } + if (xsize == 0) return S_OK; + hres = CreateStreamOnHGlobal(0,TRUE,&pStm); if (hres) { - FIXME("Stream create failed %lx\n",hres); + ERR("Stream create failed %lx\n",hres); return hres; } + hres = IStream_Write(pStm,buf->base+buf->curoff,xsize,&res); - if (hres) { FIXME("stream write %lx\n",hres); return hres; } + if (hres) { + ERR("stream write %lx\n",hres); + return hres; + } + memset(&seekto,0,sizeof(seekto)); hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); - if (hres) { FIXME("Failed Seek %lx\n",hres); return hres;} + if (hres) { + ERR("Failed Seek %lx\n",hres); + return hres; + } + hres = CoUnmarshalInterface(pStm,riid,(LPVOID*)pUnk); if (hres) { - FIXME("Marshalling interface %s failed with %lx\n",debugstr_guid(riid),hres); + ERR("Unmarshalling interface %s failed with %lx\n",debugstr_guid(riid),hres); return hres; } + IStream_Release(pStm); return xbuf_skip(buf,xsize); } static HRESULT _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) { - LPUNKNOWN newiface; - LPBYTE tempbuf; - IStream *pStm; + LPUNKNOWN newiface = NULL; + LPBYTE tempbuf = NULL; + IStream *pStm = NULL; STATSTG ststg; ULARGE_INTEGER newpos; LARGE_INTEGER seekto; @@ -151,45 +167,67 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) { DWORD xsize; HRESULT hres; - hres = S_OK; - if (!pUnk) + hres = E_FAIL; + if (!pUnk) { + ERR("pUnk is NULL?\n"); goto fail; + } TRACE("...%s...\n",debugstr_guid(riid)); - hres=IUnknown_QueryInterface(pUnk,riid,(LPVOID*)&newiface); + hres = IUnknown_QueryInterface(pUnk,riid,(LPVOID*)&newiface); if (hres) { - TRACE("%p does not support iface %s\n",pUnk,debugstr_guid(riid)); + WARN("%p does not support iface %s\n",pUnk,debugstr_guid(riid)); goto fail; } + hres = CreateStreamOnHGlobal(0,TRUE,&pStm); if (hres) { - FIXME("Stream create failed %lx\n",hres); + ERR("Stream create failed %lx\n",hres); goto fail; } + hres = CoMarshalInterface(pStm,riid,newiface,0,NULL,0); - IUnknown_Release(newiface); if (hres) { - FIXME("Marshalling interface %s failed with %lx\n", - debugstr_guid(riid),hres - ); + ERR("Marshalling interface %s failed with %lx\n", debugstr_guid(riid), hres); goto fail; } + hres = IStream_Stat(pStm,&ststg,0); + if (hres) { + ERR("Stream stat failed\n"); + goto fail; + } + tempbuf = HeapAlloc(GetProcessHeap(), 0, ststg.cbSize.u.LowPart); memset(&seekto,0,sizeof(seekto)); hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos); - if (hres) { FIXME("Failed Seek %lx\n",hres); goto fail;} + if (hres) { + ERR("Failed Seek %lx\n",hres); + goto fail; + } + hres = IStream_Read(pStm,tempbuf,ststg.cbSize.u.LowPart,&res); - if (hres) { FIXME("Failed Read %lx\n",hres); goto fail;} - IStream_Release(pStm); + if (hres) { + ERR("Failed Read %lx\n",hres); + goto fail; + } + xsize = ststg.cbSize.u.LowPart; xbuf_add(buf,(LPBYTE)&xsize,sizeof(xsize)); hres = xbuf_add(buf,tempbuf,ststg.cbSize.u.LowPart); + HeapFree(GetProcessHeap(),0,tempbuf); + IUnknown_Release(newiface); + IStream_Release(pStm); + return hres; + fail: xsize = 0; xbuf_add(buf,(LPBYTE)&xsize,sizeof(xsize)); + if (pStm) IUnknown_Release(pStm); + if (newiface) IUnknown_Release(newiface); + HeapFree(GetProcessHeap(), 0, tempbuf); return hres; } @@ -225,20 +263,20 @@ _get_typeinfo_for_iid(REFIID riid, ITypeInfo**ti) { ); if (RegOpenKeyA(HKEY_CLASSES_ROOT,interfacekey,&ikey)) { - FIXME("No %s key found.\n",interfacekey); + ERR("No %s key found.\n",interfacekey); return E_FAIL; } type = (1<ref); - TRACE("()\n"); + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); - return InterlockedIncrement(&This->ref); + return refCount; } static ULONG WINAPI TMProxyImpl_Release(LPRPCPROXYBUFFER iface) { - ULONG refs; ICOM_THIS_MULTI(TMProxyImpl,lpvtbl2,iface); + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("()\n"); + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); - refs = InterlockedDecrement(&This->ref); - if (!refs) + if (!refCount) { DeleteCriticalSection(&This->crit); if (This->chanbuf) IRpcChannelBuffer_Release(This->chanbuf); VirtualFree(This->asmstubs, 0, MEM_RELEASE); CoTaskMemFree(This); } - return refs; + return refCount; } static HRESULT WINAPI @@ -551,7 +589,7 @@ serialize_param( hres = ITypeInfo_GetRefTypeInfo(tinfo,tdesc->u.hreftype,&tinfo2); if (hres) { - FIXME("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.hreftype); + ERR("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.hreftype); return hres; } ITypeInfo_GetTypeAttr(tinfo2,&tattr); @@ -571,7 +609,7 @@ serialize_param( hres = ITypeInfo2_GetVarDesc(tinfo2, i, &vdesc); if (hres) { - FIXME("Could not get vardesc of %d\n",i); + ERR("Could not get vardesc of %d\n",i); return hres; } /* Need them for hack below */ @@ -816,7 +854,7 @@ deserialize_param( case VT_UI1: if (readit) { hres = xbuf_get(buf,(LPBYTE)arg,sizeof(DWORD)); - if (hres) FIXME("Failed to read integer 4 byte\n"); + if (hres) ERR("Failed to read integer 4 byte\n"); } if (debugout) TRACE_(olerelay)("%lx",*arg); return hres; @@ -827,7 +865,7 @@ deserialize_param( if (readit) { hres = xbuf_get(buf,(LPBYTE)&len,sizeof(DWORD)); if (hres) { - FIXME("failed to read bstr klen\n"); + ERR("failed to read bstr klen\n"); return hres; } if (len == -1) { @@ -837,7 +875,7 @@ deserialize_param( str = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,len+sizeof(WCHAR)); hres = xbuf_get(buf,(LPBYTE)str,len); if (hres) { - FIXME("Failed to read BSTR.\n"); + ERR("Failed to read BSTR.\n"); return hres; } *arg = (DWORD)SysAllocStringLen(str,len); @@ -858,7 +896,7 @@ deserialize_param( if (readit) { hres = xbuf_get(buf,(LPBYTE)&cookie,sizeof(cookie)); if (hres) { - FIXME("Failed to load pointer cookie.\n"); + ERR("Failed to load pointer cookie.\n"); return hres; } if (cookie != 0x42424242) { @@ -903,12 +941,12 @@ deserialize_param( hres = ITypeInfo_GetRefTypeInfo(tinfo,tdesc->u.hreftype,&tinfo2); if (hres) { - FIXME("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.hreftype); + ERR("Could not get typeinfo of hreftype %lx for VT_USERDEFINED.\n",tdesc->u.hreftype); return hres; } hres = ITypeInfo_GetTypeAttr(tinfo2,&tattr); if (hres) { - FIXME("Could not get typeattr in VT_USERDEFINED.\n"); + ERR("Could not get typeattr in VT_USERDEFINED.\n"); } else { if (alloc) *arg = (DWORD)HeapAlloc(GetProcessHeap(),0,tattr->cbSizeInstance); @@ -927,7 +965,7 @@ deserialize_param( hres = ITypeInfo2_GetVarDesc(tinfo2, i, &vdesc); if (hres) { - FIXME("Could not get vardesc of %d\n",i); + ERR("Could not get vardesc of %d\n",i); return hres; } hres = deserialize_param( @@ -953,7 +991,7 @@ deserialize_param( } } if (hres) - FIXME("failed to stuballoc in TKIND_RECORD.\n"); + ERR("failed to stuballoc in TKIND_RECORD.\n"); ITypeInfo_Release(tinfo2); return hres; } @@ -1126,26 +1164,26 @@ _get_funcdesc( hres = ITypeInfo_GetTypeAttr(tinfo, &attr); if (hres) { - FIXME("GetTypeAttr failed with %lx\n",hres); + ERR("GetTypeAttr failed with %lx\n",hres); return hres; } /* Not found, so look in inherited ifaces. */ for (j=0;jcImplTypes;j++) { hres = ITypeInfo_GetRefTypeOfImplType(tinfo, j, &href); if (hres) { - FIXME("Did not find a reftype for interface offset %d?\n",j); + ERR("Did not find a reftype for interface offset %d?\n",j); break; } hres = ITypeInfo_GetRefTypeInfo(tinfo, href, &tinfo2); if (hres) { - FIXME("Did not find a typeinfo for reftype %ld?\n",href); + ERR("Did not find a typeinfo for reftype %ld?\n",href); continue; } hres = _get_funcdesc(tinfo2,iMethod,fdesc,iname,fname); ITypeInfo_Release(tinfo2); if (!hres) return S_OK; } - return E_FAIL; + return hres; } if (((*fdesc)->oVft/4) == iMethod) { if (fname) @@ -1273,7 +1311,7 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) ); if (hres) { - FIXME("Failed to serialize param, hres %lx\n",hres); + ERR("Failed to serialize param, hres %lx\n",hres); break; } xargs+=_argsize(elem->tdesc.vt); @@ -1285,7 +1323,7 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) msg.iMethod = method; hres = IRpcChannelBuffer_GetBuffer(tpinfo->chanbuf,&msg,&(tpinfo->iid)); if (hres) { - FIXME("RpcChannelBuffer GetBuffer failed, %lx\n",hres); + ERR("RpcChannelBuffer GetBuffer failed, %lx\n",hres); LeaveCriticalSection(&tpinfo->crit); return hres; } @@ -1293,7 +1331,7 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) if (relaydeb) TRACE_(olerelay)("\n"); hres = IRpcChannelBuffer_SendReceive(tpinfo->chanbuf,&msg,&status); if (hres) { - FIXME("RpcChannelBuffer SendReceive failed, %lx\n",hres); + ERR("RpcChannelBuffer SendReceive failed, %lx\n",hres); LeaveCriticalSection(&tpinfo->crit); return hres; } @@ -1343,7 +1381,7 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) &buf ); if (hres) { - FIXME("Failed to deserialize DISPPARAM*, hres %lx\n",hres); + ERR("Failed to deserialize DISPPARAM*, hres %lx\n",hres); break; } isdeserialized = TRUE; @@ -1373,7 +1411,8 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */) &buf ); if (hres) { - FIXME("Failed to unmarshall param, hres %lx\n",hres); + ERR("Failed to unmarshall param, hres %lx\n",hres); + status = hres; break; } xargs += _argsize(elem->tdesc.vt); @@ -1401,7 +1440,7 @@ PSFacBuf_CreateProxy( TRACE("(...%s...)\n",debugstr_guid(riid)); hres = _get_typeinfo_for_iid(riid,&tinfo); if (hres) { - FIXME("No typeinfo for %s?\n",debugstr_guid(riid)); + ERR("No typeinfo for %s?\n",debugstr_guid(riid)); return hres; } nroffuncs = _nroffuncs(tinfo); @@ -1434,7 +1473,7 @@ PSFacBuf_CreateProxy( int j; hres = _get_funcdesc(tinfo,i,&fdesc,NULL,NULL); if (hres) { - FIXME("GetFuncDesc %lx should not fail here.\n",hres); + ERR("GetFuncDesc %lx should not fail here.\n",hres); return hres; } /* some args take more than 4 byte on the stack */ @@ -1505,27 +1544,27 @@ static ULONG WINAPI TMStubImpl_AddRef(LPRPCSTUBBUFFER iface) { TMStubImpl *This = (TMStubImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p) before %lu\n", This, This->ref); + TRACE("(%p)->(ref before=%lu)\n", This, refCount - 1); - return InterlockedIncrement(&This->ref); + return refCount; } static ULONG WINAPI TMStubImpl_Release(LPRPCSTUBBUFFER iface) { - ULONG refs; TMStubImpl *This = (TMStubImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p) after %lu\n", This, This->ref-1); + TRACE("(%p)->(ref before=%lu)\n", This, refCount + 1); - refs = InterlockedDecrement(&This->ref); - if (!refs) + if (!refCount) { IRpcStubBuffer_Disconnect(iface); CoTaskMemFree(This); } - return refs; + return refCount; } static HRESULT WINAPI @@ -1585,7 +1624,7 @@ TMStubImpl_Invoke( } hres = _get_funcdesc(This->tinfo,xmsg->iMethod,&fdesc,NULL,NULL); if (hres) { - FIXME("GetFuncDesc on method %ld failed with %lx\n",xmsg->iMethod,hres); + ERR("GetFuncDesc on method %ld failed with %lx\n",xmsg->iMethod,hres); return hres; } /* Need them for hack below */ @@ -1626,7 +1665,7 @@ TMStubImpl_Invoke( &buf ); if (hres) { - FIXME("Failed to deserialize DISPPARAM*, hres %lx\n",hres); + ERR("Failed to deserialize DISPPARAM*, hres %lx\n",hres); break; } isdeserialized = TRUE; @@ -1657,7 +1696,7 @@ TMStubImpl_Invoke( ); xargs += _argsize(elem->tdesc.vt); if (hres) { - FIXME("Failed to deserialize param %s, hres %lx\n",relaystr(names[i+1]),hres); + ERR("Failed to deserialize param %s, hres %lx\n",relaystr(names[i+1]),hres); break; } } @@ -1724,7 +1763,7 @@ TMStubImpl_Invoke( ); xargs += _argsize(elem->tdesc.vt); if (hres) { - FIXME("Failed to stuballoc param, hres %lx\n",hres); + ERR("Failed to stuballoc param, hres %lx\n",hres); break; } } @@ -1783,7 +1822,7 @@ PSFacBuf_CreateStub( TRACE("(%s,%p,%p)\n",debugstr_guid(riid),pUnkServer,ppStub); hres = _get_typeinfo_for_iid(riid,&tinfo); if (hres) { - FIXME("No typeinfo for %s?\n",debugstr_guid(riid)); + ERR("No typeinfo for %s?\n",debugstr_guid(riid)); return hres; } stub = CoTaskMemAlloc(sizeof(TMStubImpl)); @@ -1797,7 +1836,7 @@ PSFacBuf_CreateStub( *ppStub = (LPRPCSTUBBUFFER)stub; TRACE("IRpcStubBuffer: %p\n", stub); if (hres) - FIXME("Connect to pUnkServer failed?\n"); + ERR("Connect to pUnkServer failed?\n"); return hres; } diff --git a/reactos/lib/oleaut32/typelib.c b/reactos/lib/oleaut32/typelib.c index 1d09c2a1141..ca56e7f416e 100644 --- a/reactos/lib/oleaut32/typelib.c +++ b/reactos/lib/oleaut32/typelib.c @@ -291,7 +291,7 @@ HRESULT WINAPI LoadTypeLib( const OLECHAR *szFile,/* [in] Name of file to load from */ ITypeLib * *pptLib) /* [out] Pointer to pointer to loaded type library */ { - TRACE("\n"); + TRACE("(%s,%p)\n",debugstr_w(szFile), pptLib); return LoadTypeLibEx(szFile, REGKIND_DEFAULT, pptLib); } @@ -332,26 +332,7 @@ HRESULT WINAPI LoadTypeLibEx( if (GetFileAttributesW(szFileCopy) & FILE_ATTRIBUTE_DIRECTORY) return TYPE_E_CANTLOADLIBRARY; } else { - WCHAR tstpath[260]; - static const WCHAR stdole32tlb[] = { 's','t','d','o','l','e','3','2','.','t','l','b',0 }; - int i; - - lstrcpyW(tstpath,szFile); - CharLowerW(tstpath); - for (i=0;i> 8 == 0) +#define FITS_AS_I2(x) ((x) >> 16 == 0) +#define FITS_AS_I4(x) ((x) >> 32 == 0) + /********************************************************************** * VarNumFromParseNum [OLEAUT32.47] * @@ -1977,52 +1982,43 @@ HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig, l64=-ul64; /* Try signed and unsigned types in size order */ - if (dwVtBits & VTBIT_I1 && ((ul64 <= I1_MAX)||(l64 >= I1_MIN))) + if (dwVtBits & VTBIT_I1 && FITS_AS_I1(ul64)) { V_VT(pVarDst) = VT_I1; - if (ul64 <= I1_MAX) - V_I1(pVarDst) = ul64; - else - V_I1(pVarDst) = l64; + V_I1(pVarDst) = ul64; return S_OK; } - else if (dwVtBits & VTBIT_UI1 && ul64 <= UI1_MAX) + else if (dwVtBits & VTBIT_UI1 && FITS_AS_I1(ul64)) { V_VT(pVarDst) = VT_UI1; V_UI1(pVarDst) = ul64; return S_OK; } - else if (dwVtBits & VTBIT_I2 && ((ul64 <= I2_MAX)||(l64 >= I2_MIN))) + else if (dwVtBits & VTBIT_I2 && FITS_AS_I2(ul64)) { V_VT(pVarDst) = VT_I2; - if (ul64 <= I2_MAX) - V_I2(pVarDst) = ul64; - else - V_I2(pVarDst) = l64; + V_I2(pVarDst) = ul64; return S_OK; } - else if (dwVtBits & VTBIT_UI2 && ul64 <= UI2_MAX) + else if (dwVtBits & VTBIT_UI2 && FITS_AS_I2(ul64)) { V_VT(pVarDst) = VT_UI2; V_UI2(pVarDst) = ul64; return S_OK; } - else if (dwVtBits & VTBIT_I4 && ((ul64 <= I4_MAX)||(l64 >= I4_MIN))) + else if (dwVtBits & VTBIT_I4 && FITS_AS_I4(ul64)) { V_VT(pVarDst) = VT_I4; - if (ul64 <= I4_MAX) - V_I4(pVarDst) = ul64; - else - V_I4(pVarDst) = l64; + V_I4(pVarDst) = ul64; return S_OK; } - else if (dwVtBits & VTBIT_UI4 && ul64 <= UI4_MAX) + else if (dwVtBits & VTBIT_UI4 && FITS_AS_I4(ul64)) { V_VT(pVarDst) = VT_UI4; V_UI4(pVarDst) = ul64; return S_OK; } - else if (dwVtBits & VTBIT_I8 && ((ul64 <= I4_MAX)||(l64>=I4_MIN))) + else if (dwVtBits & VTBIT_I8 && ((ul64 <= I8_MAX)||(l64>=I8_MIN))) { V_VT(pVarDst) = VT_I8; V_I8(pVarDst) = ul64; @@ -2471,6 +2467,7 @@ HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out) HRESULT hres; V_VT(out) = VT_BSTR; + VariantInit(&bstrvar); hres = VariantChangeTypeEx(&bstrvar,right,0,0,VT_BSTR); if (hres) { FIXME("Failed to convert right side from vt %d to VT_BSTR?\n",V_VT(right)); @@ -2484,6 +2481,7 @@ HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out) HRESULT hres; V_VT(out) = VT_BSTR; + VariantInit(&bstrvar); hres = VariantChangeTypeEx(&bstrvar,left,0,0,VT_BSTR); if (hres) { FIXME("Failed to convert right side from vt %d to VT_BSTR?\n",V_VT(right)); From e655d1606e223261e16c2351ba34366546089547 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 13 Feb 2005 21:06:18 +0000 Subject: [PATCH 023/248] Sync to Wine-20050211 Jonathan Ernst - Updated French resources. svn path=/trunk/; revision=13534 --- reactos/lib/oledlg/oledlg_Fr.rc | 59 +++++++++++++++++++++++++++++++++ reactos/lib/oledlg/rsrc.rc | 1 + 2 files changed, 60 insertions(+) create mode 100644 reactos/lib/oledlg/oledlg_Fr.rc diff --git a/reactos/lib/oledlg/oledlg_Fr.rc b/reactos/lib/oledlg/oledlg_Fr.rc new file mode 100644 index 00000000000..b8e1ce49ea6 --- /dev/null +++ b/reactos/lib/oledlg/oledlg_Fr.rc @@ -0,0 +1,59 @@ +/* + * oledlg dll resources + * French language support + * + * Copyright (C) 2005 Jonathan Ernst + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT + +UIINSERTOBJECT DIALOG DISCARDABLE 0, 0, 294, 151 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Insérer Objet" +FONT 8, "MS Shell Dlg" +BEGIN + LISTBOX IDC_OBJTYPELIST,82,19,131,66,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_VSCROLL | + WS_TABSTOP + LTEXT "Type d'objet:",IDC_OBJTYPELBL,82,7,53,8,WS_VISIBLE + DEFPUSHBUTTON "OK",IDOK,221,7,66,14 + PUSHBUTTON "Annuler",IDCANCEL,221,24,66,14 + GROUPBOX "Résultat",IDC_RESULT,7,103,208,41 + CONTROL "Créer Nouveau",IDC_CREATENEW,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,7,20,62,10 + CONTROL "Créer Contrôle",IDC_CREATECONTROL,"Button", + BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,54,62,10 + CONTROL "Créer Depuis Fichier",IDC_CREATEFROMFILE,"Button", + BS_AUTORADIOBUTTON,7,37,67,10 + LTEXT "",IDC_RESULTDESC,49,112,159,23 + PUSHBUTTON "&Ajoute Contrôle...",IDC_ADDCONTROL,81,88,63,14,NOT WS_VISIBLE + CONTROL "Afficher Comme Icône",IDC_ASICON,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP | NOT WS_VISIBLE,223,58,64,10 + PUSHBUTTON "Parcourir...",IDC_BROWSE,83,53,50,14,NOT WS_VISIBLE + LTEXT "Fichier:",IDC_FILELBL,83,27,20,8, NOT WS_VISIBLE + EDITTEXT IDC_FILE,83,37,132,13,ES_AUTOHSCROLL | NOT WS_VISIBLE +END + +STRINGTABLE DISCARDABLE +{ + IDS_RESULTOBJDESC "Insérer un nouvel object %s dans votre document" + IDS_RESULTFILEOBJDESC "Insère le contenu du fichier comme un objet dans votre document afin que vous puissiez l'activer en utilisant le programme avec lequel vous l'avez créé." + IDS_BROWSE "Parcourir" + IDS_NOTOLEMOD "Le fichier ne semble pas être un module OLE valide. Impossible d'enregistrer le contrôle OLE." + IDS_NOTOLEMODCAPTION "Ajouter Contrôle" +} diff --git a/reactos/lib/oledlg/rsrc.rc b/reactos/lib/oledlg/rsrc.rc index 4617259f923..09a88aa1f2b 100644 --- a/reactos/lib/oledlg/rsrc.rc +++ b/reactos/lib/oledlg/rsrc.rc @@ -35,6 +35,7 @@ #include "oledlg_De.rc" #include "oledlg_En.rc" #include "oledlg_Es.rc" +#include "oledlg_Fr.rc" #include "oledlg_It.rc" #include "oledlg_Ja.rc" #include "oledlg_Nl.rc" From 62ed0188103a0b4ad5b88e0cfc78c2260e935622 Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 13 Feb 2005 21:16:59 +0000 Subject: [PATCH 024/248] Resource script added. svn path=/trunk/; revision=13535 --- rosapps/sysutils/kill/.cvsignore | 17 ----------------- rosapps/sysutils/kill/kill.rc | 6 ++++++ rosapps/sysutils/kill/makefile | 4 +--- 3 files changed, 7 insertions(+), 20 deletions(-) delete mode 100644 rosapps/sysutils/kill/.cvsignore create mode 100644 rosapps/sysutils/kill/kill.rc diff --git a/rosapps/sysutils/kill/.cvsignore b/rosapps/sysutils/kill/.cvsignore deleted file mode 100644 index 954ada33419..00000000000 --- a/rosapps/sysutils/kill/.cvsignore +++ /dev/null @@ -1,17 +0,0 @@ -*.sys -*.exe -*.dll -*.cpl -*.a -*.o -*.d -*.coff -*.dsp -*.dsw -*.aps -*.ncb -*.opt -*.sym -*.plg -*.bak -*.map diff --git a/rosapps/sysutils/kill/kill.rc b/rosapps/sysutils/kill/kill.rc new file mode 100644 index 00000000000..38e6ca09058 --- /dev/null +++ b/rosapps/sysutils/kill/kill.rc @@ -0,0 +1,6 @@ +/* $Id: $ */ + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS W32 Kill Process Utility\0" +#define REACTOS_STR_INTERNAL_NAME "kill\0" +#define REACTOS_STR_ORIGINAL_FILENAME "kill.exe\0" +#include diff --git a/rosapps/sysutils/kill/makefile b/rosapps/sysutils/kill/makefile index 58cbfb53ca7..d8aeda6f484 100644 --- a/rosapps/sysutils/kill/makefile +++ b/rosapps/sysutils/kill/makefile @@ -1,9 +1,7 @@ -# +# $Id$ PATH_TO_TOP = ../../../reactos -TARGET_NORC = yes - TARGET_TYPE = program TARGET_APPTYPE = console From 69e17b8f04d10c2e9591e90de3c2f17f93581923 Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 13 Feb 2005 21:17:34 +0000 Subject: [PATCH 025/248] OriginalCopyright added. svn path=/trunk/; revision=13536 --- rosapps/sysutils/chkdsk.rc | 3 ++- rosapps/sysutils/format.rc | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rosapps/sysutils/chkdsk.rc b/rosapps/sysutils/chkdsk.rc index 9129c975166..dc1127106eb 100644 --- a/rosapps/sysutils/chkdsk.rc +++ b/rosapps/sysutils/chkdsk.rc @@ -1,6 +1,7 @@ -/* $Id: chkdsk.rc,v 1.3 2004/10/16 22:30:18 gvg Exp $ */ +/* $Id$ */ #define REACTOS_STR_FILE_DESCRIPTION "ReactOS Disk Checking Utility\0" #define REACTOS_STR_INTERNAL_NAME "chkdsk\0" #define REACTOS_STR_ORIGINAL_FILENAME "chkdsk.exe\0" +#define REACTOS_STR_ORIGINAL_COPYRIGHT "1998 Mark Russinovich\0" #include diff --git a/rosapps/sysutils/format.rc b/rosapps/sysutils/format.rc index b69f5babc59..7e82ae9cf18 100644 --- a/rosapps/sysutils/format.rc +++ b/rosapps/sysutils/format.rc @@ -1,7 +1,7 @@ -/* $Id: format.rc,v 1.3 2004/10/16 22:30:18 gvg Exp $ */ +/* $Id$ */ #define REACTOS_STR_FILE_DESCRIPTION "ReactOS Disk Formatting Tool\0" #define REACTOS_STR_INTERNAL_NAME "format\0" #define REACTOS_STR_ORIGINAL_FILENAME "format.exe\0" -#define REACTOS_STR_ORIGINAL_COPYRIGHT "Mark Russinovich\0" +#define REACTOS_STR_ORIGINAL_COPYRIGHT "1998 Mark Russinovich\0" #include From f2b1a2e2a0957f456b843884589198760f39652c Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 13 Feb 2005 21:18:37 +0000 Subject: [PATCH 026/248] Fix OriginalCopyright. svn path=/trunk/; revision=13537 --- reactos/include/reactos/version.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/include/reactos/version.rc b/reactos/include/reactos/version.rc index 5a78b343ab1..1055e1f600d 100644 --- a/reactos/include/reactos/version.rc +++ b/reactos/include/reactos/version.rc @@ -111,9 +111,9 @@ VS_VERSION_INFO VERSIONINFO VALUE "FileDescription", REACTOS_STR_FILE_DESCRIPTION VALUE "FileVersion", REACTOS_STR_FILE_VERSION VALUE "InternalName", REACTOS_STR_INTERNAL_NAME -#ifdef REACTOS_ORIGINAL_COPYRIGHT +#ifdef REACTOS_STR_ORIGINAL_COPYRIGHT VALUE "OriginalCopyright", REACTOS_STR_ORIGINAL_COPYRIGHT -#endif /* REACTOS_ORIGINAL_COPYRIGHT */ +#endif /* REACTOS_STR_ORIGINAL_COPYRIGHT */ VALUE "LegalCopyright", REACTOS_STR_LEGAL_COPYRIGHT VALUE "OriginalFilename", REACTOS_STR_ORIGINAL_FILENAME VALUE "ProductName", REACTOS_STR_PRODUCT_NAME From 3565708b2674c6af1562d425cdbbb9d3556a938f Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 13 Feb 2005 21:31:34 +0000 Subject: [PATCH 027/248] NtAcceptConnectPort signature fixed. svn path=/trunk/; revision=13538 --- reactos/include/ntos/zw.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/reactos/include/ntos/zw.h b/reactos/include/ntos/zw.h index 476e5822115..82c57d3630f 100755 --- a/reactos/include/ntos/zw.h +++ b/reactos/include/ntos/zw.h @@ -108,12 +108,12 @@ typedef struct _FILE_USER_QUOTA_INFORMATION { #ifndef __USE_NT_LPC__ NTSTATUS STDCALL -NtAcceptConnectPort (PHANDLE PortHandle, - HANDLE NamedPortHandle, - PLPC_MESSAGE ServerReply, - BOOLEAN AcceptIt, - PLPC_SECTION_WRITE WriteMap, - PLPC_SECTION_READ ReadMap); +NtAcceptConnectPort (OUT PHANDLE PortHandle, + IN PVOID Context, + IN PLPC_MESSAGE ServerReply, + IN BOOLEAN AcceptIt, + IN PLPC_SECTION_WRITE WriteMap, + IN PLPC_SECTION_READ ReadMap); #else NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle, From ca17def287046d5cfbebbc480533dfe8c6d451c3 Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 13 Feb 2005 21:32:41 +0000 Subject: [PATCH 028/248] LPC message type LPC_CONNECTION_REFUSED does not exist in NT. svn path=/trunk/; revision=13539 --- reactos/include/ntos/zwtypes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/include/ntos/zwtypes.h b/reactos/include/ntos/zwtypes.h index 067ed8bb132..37ba0b14f6a 100755 --- a/reactos/include/ntos/zwtypes.h +++ b/reactos/include/ntos/zwtypes.h @@ -1742,7 +1742,7 @@ typedef enum LPC_DEBUG_EVENT = 0x8, LPC_ERROR_EVENT = 0x9, LPC_CONNECTION_REQUEST = 0xa, - LPC_CONNECTION_REFUSED = 0xb + LPC_CONNECTION_REFUSED = 0xb /* ReactOS only */ } LPC_TYPE, *PLPC_TYPE; From e63c27b41968a586afefacb7be8a001db9d67aa4 Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 13 Feb 2005 21:32:50 +0000 Subject: [PATCH 029/248] - Silence a debug message. svn path=/trunk/; revision=13540 --- reactos/lib/kernel32/file/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/lib/kernel32/file/file.c b/reactos/lib/kernel32/file/file.c index 5922ac6d99f..0c3eb45a3c7 100644 --- a/reactos/lib/kernel32/file/file.c +++ b/reactos/lib/kernel32/file/file.c @@ -731,7 +731,7 @@ GetFileAttributesExW(LPCWSTR lpFileName, RtlFreeUnicodeString (&FileName); if (!NT_SUCCESS (Status)) { - DPRINT1 ("NtOpenFile() failed %x (Status %lx)\n", &ObjectAttributes, Status); + DPRINT ("NtOpenFile() failed %x (Status %lx)\n", &ObjectAttributes, Status); SetLastErrorByStatus (Status); return FALSE; } From 52cb06691615eb26c9aa3654e3cd6fd414e1face Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sun, 13 Feb 2005 22:00:36 +0000 Subject: [PATCH 030/248] fixed wrong buffer check in NtDuplicateToken and added buffer checks in NtOpenThreadTokenEx svn path=/trunk/; revision=13541 --- reactos/ntoskrnl/se/token.c | 122 +++++++++++++++++++++++------------- 1 file changed, 79 insertions(+), 43 deletions(-) diff --git a/reactos/ntoskrnl/se/token.c b/reactos/ntoskrnl/se/token.c index c0cbb4ed869..62d6f9c01ef 100644 --- a/reactos/ntoskrnl/se/token.c +++ b/reactos/ntoskrnl/se/token.c @@ -136,27 +136,6 @@ SepDuplicateToken(PTOKEN Token, PVOID EndMem; PTOKEN AccessToken; NTSTATUS Status; - - if(PreviousMode != KernelMode) - { - Status = STATUS_SUCCESS; - _SEH_TRY - { - ProbeForWrite(NewAccessToken, - sizeof(TOKEN), - sizeof(ULONG)); - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - - if(!NT_SUCCESS(Status)) - { - return Status; - } - } Status = ObCreateObject(PreviousMode, SepTokenObjectType, @@ -263,17 +242,8 @@ SepDuplicateToken(PTOKEN Token, if ( NT_SUCCESS(Status) ) { - _SEH_TRY - { - *NewAccessToken = AccessToken; - Status = STATUS_SUCCESS; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - return Status; + *NewAccessToken = AccessToken; + return(STATUS_SUCCESS); } ObDereferenceObject(AccessToken); @@ -1068,11 +1038,33 @@ NtDuplicateToken(IN HANDLE ExistingTokenHandle, OUT PHANDLE NewTokenHandle) { KPROCESSOR_MODE PreviousMode; + HANDLE hToken; PTOKEN Token; PTOKEN NewToken; - NTSTATUS Status; + NTSTATUS Status = STATUS_SUCCESS; PreviousMode = KeGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForWrite(NewTokenHandle, + sizeof(HANDLE), + sizeof(ULONG)); + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } + Status = ObReferenceObjectByHandle(ExistingTokenHandle, TOKEN_DUPLICATE, SepTokenObjectType, @@ -1108,17 +1100,24 @@ NtDuplicateToken(IN HANDLE ExistingTokenHandle, DesiredAccess, 0, NULL, - NewTokenHandle); + &hToken); ObDereferenceObject(NewToken); - if (!NT_SUCCESS(Status)) + if (NT_SUCCESS(Status)) { - DPRINT1("Failed to create token handle (Status %lx)\n"); - return Status; + _SEH_TRY + { + *NewTokenHandle = hToken; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; } - return STATUS_SUCCESS; + return Status; } @@ -1846,6 +1845,7 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle, OUT PHANDLE TokenHandle) { PETHREAD Thread; + HANDLE hToken; PTOKEN Token, NewToken, PrimaryToken; BOOLEAN CopyOnOpen, EffectiveOnly; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; @@ -1853,7 +1853,30 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle, OBJECT_ATTRIBUTES ObjectAttributes; SECURITY_DESCRIPTOR SecurityDescriptor; PACL Dacl = NULL; - NTSTATUS Status; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForWrite(TokenHandle, + sizeof(HANDLE), + sizeof(ULONG)); + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } /* * At first open the thread token for information access and verify @@ -1861,7 +1884,7 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle, */ Status = ObReferenceObjectByHandle(ThreadHandle, THREAD_QUERY_INFORMATION, - PsThreadType, UserMode, (PVOID*)&Thread, + PsThreadType, PreviousMode, (PVOID*)&Thread, NULL); if (!NT_SUCCESS(Status)) { @@ -1896,7 +1919,7 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle, if (CopyOnOpen) { Status = ObReferenceObjectByHandle(ThreadHandle, THREAD_ALL_ACCESS, - PsThreadType, UserMode, + PsThreadType, PreviousMode, (PVOID*)&Thread, NULL); if (!NT_SUCCESS(Status)) { @@ -1945,7 +1968,7 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle, } Status = ObInsertObject(NewToken, NULL, DesiredAccess, 0, NULL, - TokenHandle); + &hToken); ObfDereferenceObject(NewToken); } @@ -1953,7 +1976,7 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle, { Status = ObOpenObjectByPointer(Token, HandleAttributes, NULL, DesiredAccess, SepTokenObjectType, - ExGetPreviousMode(), TokenHandle); + PreviousMode, &hToken); } ObfDereferenceObject(Token); @@ -1963,6 +1986,19 @@ NtOpenThreadTokenEx(IN HANDLE ThreadHandle, PsRestoreImpersonation(PsGetCurrentThread(), &ImpersonationState); } + if(NT_SUCCESS(Status)) + { + _SEH_TRY + { + *TokenHandle = hToken; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + } + return Status; } From f8901955065d17f0ff576013c8940f29c2c1e2ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 13 Feb 2005 22:42:47 +0000 Subject: [PATCH 031/248] Sync to Wine-20050211 James Hawkins - Use Interlocked* instead of ++/-- in AddRef/Release. - Use only stored result of Interlocked* in AddRef/Release. - Expand TRACEs to display the ref count. Francois Gouget - Assorted spelling fixes. Mike McCormack - Implement GetAdvise and SetAdvise. Henning Gerhardt - A small spelling fix and a small update (thank to Andreas Mohr). - Update German resources. Joris Huizer - add file_operation_delete - add file_operation_checkFlags - use these in SHFileOperationW replacing inline code svn path=/trunk/; revision=13544 --- reactos/lib/shell32/autocomplete.c | 14 ++- reactos/lib/shell32/cpanelfolder.c | 13 +- reactos/lib/shell32/dataobject.c | 31 +++-- reactos/lib/shell32/dragdrophelper.c | 12 +- reactos/lib/shell32/enumidlist.c | 15 ++- reactos/lib/shell32/folders.c | 12 +- reactos/lib/shell32/memorystream.c | 12 +- reactos/lib/shell32/pidl.c | 4 +- reactos/lib/shell32/shell32_De.rc | 32 +++++ reactos/lib/shell32/shelllink.c | 12 +- reactos/lib/shell32/shellole.c | 14 ++- reactos/lib/shell32/shellord.c | 2 +- reactos/lib/shell32/shellpath.c | 2 +- reactos/lib/shell32/shfldr_desktop.c | 12 +- reactos/lib/shell32/shfldr_fs.c | 13 +- reactos/lib/shell32/shfldr_mycomp.c | 13 +- reactos/lib/shell32/shlfileop.c | 172 +++++++++++++++------------ reactos/lib/shell32/shlfsbind.c | 16 ++- reactos/lib/shell32/shlview.c | 47 ++++++-- reactos/lib/shell32/shv_bg_cmenu.c | 14 +-- reactos/lib/shell32/shv_item_cmenu.c | 13 +- 21 files changed, 297 insertions(+), 178 deletions(-) diff --git a/reactos/lib/shell32/autocomplete.c b/reactos/lib/shell32/autocomplete.c index 93e2b1f0718..f4f9b42548e 100644 --- a/reactos/lib/shell32/autocomplete.c +++ b/reactos/lib/shell32/autocomplete.c @@ -170,9 +170,11 @@ static ULONG WINAPI IAutoComplete_fnAddRef( IAutoComplete * iface) { IAutoCompleteImpl *This = (IAutoCompleteImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(%lu)\n",This,This->ref); - return ++(This->ref); + TRACE("(%p)->(%lu)\n", This, refCount - 1); + + return refCount; } /****************************************************************************** @@ -182,10 +184,11 @@ static ULONG WINAPI IAutoComplete_fnRelease( IAutoComplete * iface) { IAutoCompleteImpl *This = (IAutoCompleteImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(%lu)\n",This,This->ref); + TRACE("(%p)->(%lu)\n", This, refCount + 1); - if (!--(This->ref)) { + if (!refCount) { TRACE(" destroying IAutoComplete(%p)\n",This); HeapFree(GetProcessHeap(), 0, This->quickComplete); HeapFree(GetProcessHeap(), 0, This->txtbackup); @@ -194,9 +197,8 @@ static ULONG WINAPI IAutoComplete_fnRelease( if (This->enumstr) IEnumString_Release(This->enumstr); HeapFree(GetProcessHeap(), 0, This); - return 0; } - return This->ref; + return refCount; } /****************************************************************************** diff --git a/reactos/lib/shell32/cpanelfolder.c b/reactos/lib/shell32/cpanelfolder.c index f20940390cb..6a918017ef2 100644 --- a/reactos/lib/shell32/cpanelfolder.c +++ b/reactos/lib/shell32/cpanelfolder.c @@ -181,26 +181,27 @@ static HRESULT WINAPI ISF_ControlPanel_fnQueryInterface(IShellFolder2 * iface, R static ULONG WINAPI ISF_ControlPanel_fnAddRef(IShellFolder2 * iface) { ICPanelImpl *This = (ICPanelImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%lu)\n", This, This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } static ULONG WINAPI ISF_ControlPanel_fnRelease(IShellFolder2 * iface) { ICPanelImpl *This = (ICPanelImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(count=%lu)\n", This, This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount + 1); - if (!--(This->ref)) { + if (!refCount) { TRACE("-- destroying IShellFolder(%p)\n", This); if (This->pidlRoot) SHFree(This->pidlRoot); LocalFree((HLOCAL) This); - return 0; } - return This->ref; + return refCount; } /************************************************************************** diff --git a/reactos/lib/shell32/dataobject.c b/reactos/lib/shell32/dataobject.c index 96adeb04a40..b311e30424f 100644 --- a/reactos/lib/shell32/dataobject.c +++ b/reactos/lib/shell32/dataobject.c @@ -124,16 +124,21 @@ static HRESULT WINAPI IEnumFORMATETC_fnQueryInterface(LPENUMFORMATETC iface, REF static ULONG WINAPI IEnumFORMATETC_fnAddRef(LPENUMFORMATETC iface) { IEnumFORMATETCImpl *This = (IEnumFORMATETCImpl *)iface; - TRACE("(%p)->(count=%lu)\n",This, This->ref); - return ++(This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); + + return refCount; } static ULONG WINAPI IEnumFORMATETC_fnRelease(LPENUMFORMATETC iface) { IEnumFORMATETCImpl *This = (IEnumFORMATETCImpl *)iface; - TRACE("(%p)->()\n",This); + ULONG refCount = InterlockedDecrement(&This->ref); - if (!--(This->ref)) + TRACE("(%p)->(%lu)\n", This, refCount + 1); + + if (!refCount) { TRACE(" destroying IEnumFORMATETC(%p)\n",This); if (This->pFmt) @@ -143,7 +148,7 @@ static ULONG WINAPI IEnumFORMATETC_fnRelease(LPENUMFORMATETC iface) HeapFree(GetProcessHeap(),0,This); return 0; } - return This->ref; + return refCount; } static HRESULT WINAPI IEnumFORMATETC_fnNext(LPENUMFORMATETC iface, ULONG celt, FORMATETC *rgelt, ULONG *pceltFethed) @@ -291,8 +296,11 @@ static HRESULT WINAPI IDataObject_fnQueryInterface(LPDATAOBJECT iface, REFIID ri static ULONG WINAPI IDataObject_fnAddRef(LPDATAOBJECT iface) { IDataObjectImpl *This = (IDataObjectImpl *)iface; - TRACE("(%p)->(count=%lu)\n",This, This->ref); - return ++(This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); + + return refCount; } /************************************************************************** @@ -301,17 +309,18 @@ static ULONG WINAPI IDataObject_fnAddRef(LPDATAOBJECT iface) static ULONG WINAPI IDataObject_fnRelease(LPDATAOBJECT iface) { IDataObjectImpl *This = (IDataObjectImpl *)iface; - TRACE("(%p)->()\n",This); + ULONG refCount = InterlockedDecrement(&This->ref); - if (!--(This->ref)) + TRACE("(%p)->(%lu)\n", This, refCount + 1); + + if (!refCount) { TRACE(" destroying IDataObject(%p)\n",This); _ILFreeaPidl(This->apidl, This->cidl); ILFree(This->pidl), HeapFree(GetProcessHeap(),0,This); - return 0; } - return This->ref; + return refCount; } /************************************************************************** diff --git a/reactos/lib/shell32/dragdrophelper.c b/reactos/lib/shell32/dragdrophelper.c index f8005708433..53a879f186b 100644 --- a/reactos/lib/shell32/dragdrophelper.c +++ b/reactos/lib/shell32/dragdrophelper.c @@ -113,24 +113,26 @@ static HRESULT WINAPI IDropTargetHelper_fnQueryInterface (IDropTargetHelper * if static ULONG WINAPI IDropTargetHelper_fnAddRef (IDropTargetHelper * iface) { IDropTargetHelperImpl *This = (IDropTargetHelperImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } static ULONG WINAPI IDropTargetHelper_fnRelease (IDropTargetHelper * iface) { IDropTargetHelperImpl *This = (IDropTargetHelperImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount + 1); - if (!--(This->ref)) { + if (!refCount) { TRACE("-- destroying (%p)\n", This); LocalFree ((HLOCAL) This); return 0; } - return This->ref; + return refCount; } static HRESULT WINAPI IDropTargetHelper_fnDragEnter ( diff --git a/reactos/lib/shell32/enumidlist.c b/reactos/lib/shell32/enumidlist.c index 31abedbcad7..1d78e29cbe3 100644 --- a/reactos/lib/shell32/enumidlist.c +++ b/reactos/lib/shell32/enumidlist.c @@ -240,8 +240,11 @@ static ULONG WINAPI IEnumIDList_fnAddRef( IEnumIDList * iface) { IEnumIDListImpl *This = (IEnumIDListImpl *)iface; - TRACE("(%p)->(%lu)\n",This,This->ref); - return ++(This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(%lu)\n", This, refCount - 1); + + return refCount; } /****************************************************************************** * IEnumIDList_fnRelease @@ -250,16 +253,16 @@ static ULONG WINAPI IEnumIDList_fnRelease( IEnumIDList * iface) { IEnumIDListImpl *This = (IEnumIDListImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(%lu)\n",This,This->ref); + TRACE("(%p)->(%lu)\n", This, refCount + 1); - if (!--(This->ref)) { + if (!refCount) { TRACE(" destroying IEnumIDList(%p)\n",This); DeleteList((IEnumIDList*)This); HeapFree(GetProcessHeap(),0,This); - return 0; } - return This->ref; + return refCount; } /************************************************************************** diff --git a/reactos/lib/shell32/folders.c b/reactos/lib/shell32/folders.c index 7aa2e7485d5..12b6fe4d52a 100644 --- a/reactos/lib/shell32/folders.c +++ b/reactos/lib/shell32/folders.c @@ -130,10 +130,11 @@ static HRESULT WINAPI IExtractIconW_fnQueryInterface(IExtractIconW *iface, REFII static ULONG WINAPI IExtractIconW_fnAddRef(IExtractIconW * iface) { IExtractIconWImpl *This = (IExtractIconWImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This, This->ref ); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } /************************************************************************** * IExtractIconW_Release @@ -141,17 +142,18 @@ static ULONG WINAPI IExtractIconW_fnAddRef(IExtractIconW * iface) static ULONG WINAPI IExtractIconW_fnRelease(IExtractIconW * iface) { IExtractIconWImpl *This = (IExtractIconWImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->()\n",This); + TRACE("(%p)->(count=%lu)\n", This, refCount + 1); - if (!--(This->ref)) + if (!refCount) { TRACE(" destroying IExtractIcon(%p)\n",This); SHFree(This->pidl); HeapFree(GetProcessHeap(),0,This); return 0; } - return This->ref; + return refCount; } static HRESULT getIconLocationForFolder(IExtractIconW *iface, UINT uFlags, diff --git a/reactos/lib/shell32/memorystream.c b/reactos/lib/shell32/memorystream.c index ff7ea0b00c8..e6460a6d6c1 100644 --- a/reactos/lib/shell32/memorystream.c +++ b/reactos/lib/shell32/memorystream.c @@ -127,10 +127,11 @@ static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVO static ULONG WINAPI IStream_fnAddRef(IStream *iface) { ISHFileStream *This = (ISHFileStream *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This, This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } /************************************************************************** @@ -139,16 +140,17 @@ static ULONG WINAPI IStream_fnAddRef(IStream *iface) static ULONG WINAPI IStream_fnRelease(IStream *iface) { ISHFileStream *This = (ISHFileStream *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->()\n",This); + TRACE("(%p)->(count=%lu)\n", This, refCount + 1); - if (!--(This->ref)) + if (!refCount) { TRACE(" destroying SHFileStream (%p)\n",This); CloseHandle(This->handle); HeapFree(GetProcessHeap(),0,This); } - return This->ref; + return refCount; } static HRESULT WINAPI IStream_fnRead (IStream * iface, void* pv, ULONG cb, ULONG* pcbRead) diff --git a/reactos/lib/shell32/pidl.c b/reactos/lib/shell32/pidl.c index f77343c7453..d0f4206c5b7 100644 --- a/reactos/lib/shell32/pidl.c +++ b/reactos/lib/shell32/pidl.c @@ -977,7 +977,7 @@ LPITEMIDLIST WINAPI ILCreateFromPathAW (LPCVOID path) * IShellFolder uses that FileSystem Bind Data object of the BindContext * to pass data about the current path element to the next object. This * is used to avoid having to verify the current path element on disk, so - * that creating an ItemIDList from a non-existent path still can work. + * that creating an ItemIDList from a nonexistent path still can work. */ static HRESULT WINAPI _ILParsePathW(LPCWSTR path, LPWIN32_FIND_DATAW lpFindFile, BOOL bBindCtx, LPITEMIDLIST *ppidl, LPDWORD prgfInOut) @@ -1024,7 +1024,7 @@ static HRESULT WINAPI _ILParsePathW(LPCWSTR path, LPWIN32_FIND_DATAW lpFindFile, * SHSimpleIDListFromPath [SHELL32.162] * * Creates a simple ItemIDList from a path and returns it. This function - * does not fail on non-existent paths. + * does not fail on nonexistent paths. * * PARAMS * path [I] path to parse and convert into an ItemIDList diff --git a/reactos/lib/shell32/shell32_De.rc b/reactos/lib/shell32/shell32_De.rc index 0084189fc08..15288eb3c19 100644 --- a/reactos/lib/shell32/shell32_De.rc +++ b/reactos/lib/shell32/shell32_De.rc @@ -188,3 +188,35 @@ STRINGTABLE DISCARDABLE IDS_SHUTDOWN_TITLE "Anhalten" IDS_SHUTDOWN_PROMPT "Möchten Sie die aktuelle ReactOS Sitzung beenden ?" } + +/* shell folder path default values */ +STRINGTABLE DISCARDABLE +{ + IDS_PROGRAMS "Startmenü\\Programme" + IDS_PERSONAL "Eigene Dateien" + IDS_FAVORITES "Favoriten" + IDS_STARTUP "Startmenü\\Programme\\Autostart" + IDS_RECENT "Recent" + IDS_SENDTO "SendTo" + IDS_STARTMENU "Startmenü" + IDS_MYMUSIC "Eigene Dateien\\Meine Musik" + IDS_MYVIDEO "Eigene Dateien\\Meine Videos" + IDS_DESKTOPDIRECTORY "Desktop" + IDS_NETHOOD "Netzwerkumgebung" + IDS_TEMPLATES "Vorlagen" + IDS_APPDATA "Anwendungsdaten" + IDS_PRINTHOOD "Druckumgebung" + IDS_LOCAL_APPDATA "Lokale Einstellungen\\Anwendungsdaten" + IDS_INTERNET_CACHE "Temporary Internet Files" + IDS_COOKIES "Cookies" + IDS_HISTORY "Verlauf" + IDS_PROGRAM_FILES "Programme" + IDS_MYPICTURES "Eigene Dateien\\Eigene Bilder" + IDS_PROGRAM_FILES_COMMON "Programme\\Gemeinsame Dateien" + IDS_COMMON_DOCUMENTS "Dokumente" + IDS_ADMINTOOLS "Startmenü\\Programme\\Verwaltung" + IDS_COMMON_MUSIC "Dokumente\\Eigene Musik" + IDS_COMMON_PICTURES "Dokumente\\Eigene Bilder" + IDS_COMMON_VIDEO "Dokumente\\Eigene Videos" + IDS_CDBURN_AREA "Lokale Einstellungen\\Anwendungsdaten\\Microsoft\\CD Burning" +} diff --git a/reactos/lib/shell32/shelllink.c b/reactos/lib/shell32/shelllink.c index e0272646ecb..b7b379f81c5 100644 --- a/reactos/lib/shell32/shelllink.c +++ b/reactos/lib/shell32/shelllink.c @@ -974,10 +974,11 @@ static HRESULT WINAPI IShellLinkA_fnQueryInterface( IShellLinkA * iface, REFIID static ULONG WINAPI IShellLinkA_fnAddRef(IShellLinkA * iface) { IShellLinkImpl *This = (IShellLinkImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } /****************************************************************************** * IShellLinkA_Release @@ -985,11 +986,12 @@ static ULONG WINAPI IShellLinkA_fnAddRef(IShellLinkA * iface) static ULONG WINAPI IShellLinkA_fnRelease(IShellLinkA * iface) { IShellLinkImpl *This = (IShellLinkImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount + 1); - if (--(This->ref)) - return This->ref; + if (refCount) + return refCount; TRACE("-- destroying IShellLink(%p)\n",This); diff --git a/reactos/lib/shell32/shellole.c b/reactos/lib/shell32/shellole.c index 0167b16dc2f..ea74a9fa088 100644 --- a/reactos/lib/shell32/shellole.c +++ b/reactos/lib/shell32/shellole.c @@ -556,9 +556,11 @@ static HRESULT WINAPI IDefClF_fnQueryInterface( static ULONG WINAPI IDefClF_fnAddRef(LPCLASSFACTORY iface) { IDefClFImpl *This = (IDefClFImpl *)iface; - TRACE("(%p)->(count=%lu)\n",This,This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); - return InterlockedIncrement(&This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); + + return refCount; } /****************************************************************************** * IDefClF_fnRelease @@ -566,9 +568,11 @@ static ULONG WINAPI IDefClF_fnAddRef(LPCLASSFACTORY iface) static ULONG WINAPI IDefClF_fnRelease(LPCLASSFACTORY iface) { IDefClFImpl *This = (IDefClFImpl *)iface; - TRACE("(%p)->(count=%lu)\n",This,This->ref); + ULONG refCount = InterlockedDecrement(&This->ref); + + TRACE("(%p)->(count=%lu)\n", This, refCount + 1); - if (!InterlockedDecrement(&This->ref)) + if (!refCount) { if (This->pcRefDll) InterlockedDecrement(This->pcRefDll); @@ -576,7 +580,7 @@ static ULONG WINAPI IDefClF_fnRelease(LPCLASSFACTORY iface) HeapFree(GetProcessHeap(),0,This); return 0; } - return This->ref; + return refCount; } /****************************************************************************** * IDefClF_fnCreateInstance diff --git a/reactos/lib/shell32/shellord.c b/reactos/lib/shell32/shellord.c index ad6261e510f..403afe2e855 100644 --- a/reactos/lib/shell32/shellord.c +++ b/reactos/lib/shell32/shellord.c @@ -673,7 +673,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv) if (ret == ERROR_SUCCESS) { if (!( (type == REG_DWORD) || ((type == REG_BINARY) && (datalen == 4)) )) { - ERR("Error policy data for \"NoRecentDocsHistory\" not formated correctly, type=%ld, len=%ld\n", + ERR("Error policy data for \"NoRecentDocsHistory\" not formatted correctly, type=%ld, len=%ld\n", type, datalen); return; } diff --git a/reactos/lib/shell32/shellpath.c b/reactos/lib/shell32/shellpath.c index f77a9bf10fe..718bfc216e6 100644 --- a/reactos/lib/shell32/shellpath.c +++ b/reactos/lib/shell32/shellpath.c @@ -1995,7 +1995,7 @@ HRESULT WINAPI SHGetFolderLocation( else if (hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) { /* unlike SHGetFolderPath, SHGetFolderLocation in shell32 - * version 6.0 returns E_FAIL for non-existing paths + * version 6.0 returns E_FAIL for nonexistent paths */ hr = E_FAIL; } diff --git a/reactos/lib/shell32/shfldr_desktop.c b/reactos/lib/shell32/shfldr_desktop.c index 66b4e8c5d16..e14dd087735 100644 --- a/reactos/lib/shell32/shfldr_desktop.c +++ b/reactos/lib/shell32/shfldr_desktop.c @@ -157,19 +157,21 @@ static HRESULT WINAPI ISF_Desktop_fnQueryInterface (IShellFolder2 * iface, REFII static ULONG WINAPI ISF_Desktop_fnAddRef (IShellFolder2 * iface) { IGenericSFImpl *This = (IGenericSFImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } static ULONG WINAPI ISF_Desktop_fnRelease (IShellFolder2 * iface) { IGenericSFImpl *This = (IGenericSFImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount + 1); - if (!--(This->ref)) { + if (!refCount) { TRACE ("-- destroying IShellFolder(%p)\n", This); if (This->pidlRoot) SHFree (This->pidlRoot); @@ -178,7 +180,7 @@ static ULONG WINAPI ISF_Desktop_fnRelease (IShellFolder2 * iface) LocalFree ((HLOCAL) This); return 0; } - return This->ref; + return refCount; } /************************************************************************** diff --git a/reactos/lib/shell32/shfldr_fs.c b/reactos/lib/shell32/shfldr_fs.c index 858628540a4..e8fdca78b38 100644 --- a/reactos/lib/shell32/shfldr_fs.c +++ b/reactos/lib/shell32/shfldr_fs.c @@ -173,19 +173,21 @@ static HRESULT WINAPI IUnknown_fnQueryInterface (IUnknown * iface, REFIID riid, static ULONG WINAPI IUnknown_fnAddRef (IUnknown * iface) { IGenericSFImpl *This = (IGenericSFImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } static ULONG WINAPI IUnknown_fnRelease (IUnknown * iface) { IGenericSFImpl *This = (IGenericSFImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount + 1); - if (!--(This->ref)) { + if (!refCount) { TRACE ("-- destroying IShellFolder(%p)\n", This); if (This->pidlRoot) @@ -193,9 +195,8 @@ static ULONG WINAPI IUnknown_fnRelease (IUnknown * iface) if (This->sPathTarget) SHFree (This->sPathTarget); LocalFree ((HLOCAL) This); - return 0; } - return This->ref; + return refCount; } static IUnknownVtbl unkvt = diff --git a/reactos/lib/shell32/shfldr_mycomp.c b/reactos/lib/shell32/shfldr_mycomp.c index 5de8574efcd..cacfcfbd68c 100644 --- a/reactos/lib/shell32/shfldr_mycomp.c +++ b/reactos/lib/shell32/shfldr_mycomp.c @@ -160,26 +160,27 @@ static HRESULT WINAPI ISF_MyComputer_fnQueryInterface (IShellFolder2 * iface, RE static ULONG WINAPI ISF_MyComputer_fnAddRef (IShellFolder2 * iface) { IGenericSFImpl *This = (IGenericSFImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } static ULONG WINAPI ISF_MyComputer_fnRelease (IShellFolder2 * iface) { IGenericSFImpl *This = (IGenericSFImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%lu)\n", This, refCount + 1); - if (!--(This->ref)) { + if (!refCount) { TRACE ("-- destroying IShellFolder(%p)\n", This); if (This->pidlRoot) SHFree (This->pidlRoot); LocalFree ((HLOCAL) This); - return 0; } - return This->ref; + return refCount; } /************************************************************************** diff --git a/reactos/lib/shell32/shlfileop.c b/reactos/lib/shell32/shlfileop.c index f229819b73b..811a5a9b854 100644 --- a/reactos/lib/shell32/shlfileop.c +++ b/reactos/lib/shell32/shlfileop.c @@ -861,6 +861,90 @@ static const char * debug_shfileops_action( DWORD op ) #define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026 #define HIGH_ADR (LPWSTR)0xffffffff +static int file_operation_delete( WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW nFileOp, LPWSTR pFromFile,LPWSTR pTempFrom,HANDLE *hFind) + +{ + LPWSTR lpFileName; + BOOL b_Mask = (NULL != StrPBrkW(&pFromFile[1], wWildcardChars)); + int retCode = 0; + do + { + lpFileName = wfd->cAlternateFileName; + if (!lpFileName[0]) + lpFileName = wfd->cFileName; + if (IsDotDir(lpFileName) || + ((b_Mask) && IsAttribDir(wfd->dwFileAttributes) && (nFileOp.fFlags & FOF_FILESONLY))) + continue; + SHFileStrCpyCatW(&pFromFile[1], lpFileName, NULL); + /* TODO: Check the SHELL_DeleteFileOrDirectoryW() function in shell32.dll */ + if (IsAttribFile(wfd->dwFileAttributes)) + { + if(SHNotifyDeleteFileW(pTempFrom) != ERROR_SUCCESS) + { + nFileOp.fAnyOperationsAborted = TRUE; + retCode = 0x78; /* value unknown */ + } + } + else if(!SHELL_DeleteDirectoryW(pTempFrom, (!(nFileOp.fFlags & FOF_NOCONFIRMATION)))) + { + nFileOp.fAnyOperationsAborted = TRUE; + retCode = 0x79; /* value unknown */ + } + } + while (!nFileOp.fAnyOperationsAborted && FindNextFileW(*hFind,wfd)); + FindClose(*hFind); + *hFind = INVALID_HANDLE_VALUE; + return retCode; +} + +/* + * Summary of flags: + * + * implemented flags: + * FOF_MULTIDESTFILES, FOF_NOCONFIRMATION, FOF_FILESONLY + * + * unimplememented and ignored flags: + * FOF_CONFIRMMOUSE, FOF_SILENT, FOF_NOCONFIRMMKDIR, + * FOF_SIMPLEPROGRESS, FOF_NOCOPYSECURITYATTRIBS + * + * partially implemented, breaks if file exists: + * FOF_RENAMEONCOLLISION + * + * unimplemented and break if any other flag set: + * FOF_ALLOWUNDO, FOF_WANTMAPPINGHANDLE + */ + +static int file_operation_checkFlags(SHFILEOPSTRUCTW nFileOp) +{ + FILEOP_FLAGS OFl = ((FILEOP_FLAGS)nFileOp.fFlags & 0xfff); + long FuncSwitch = (nFileOp.wFunc & FO_MASK); + long level= nFileOp.wFunc >> 4; + + TRACE("%s level=%ld nFileOp.fFlags=0x%x\n", + debug_shfileops_action(FuncSwitch), level, nFileOp.fFlags); + /* OFl &= (-1 - (FOF_MULTIDESTFILES | FOF_FILESONLY)); */ + /* OFl ^= (FOF_SILENT | FOF_NOCONFIRMATION | FOF_SIMPLEPROGRESS | FOF_NOCONFIRMMKDIR); */ + OFl &= (~(FOF_MULTIDESTFILES | FOF_NOCONFIRMATION | FOF_FILESONLY)); /* implemented */ + OFl ^= (FOF_SILENT | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_NOCOPYSECURITYATTRIBS); /* ignored, if one */ + OFl &= (~FOF_SIMPLEPROGRESS); /* ignored, only with FOF_SILENT */ + if (OFl) + { + if (OFl & (~(FOF_CONFIRMMOUSE | FOF_SILENT | FOF_RENAMEONCOLLISION | + FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_NOCOPYSECURITYATTRIBS))) + { + TRACE("%s level=%ld lpFileOp->fFlags=0x%x not implemented, Aborted=TRUE, stub\n", + debug_shfileops_action(FuncSwitch), level, OFl); + return 0x403; /* 1027, we need an extension to shlfileop */ + } + else + { + TRACE("%s level=%ld lpFileOp->fFlags=0x%x not fully implemented, stub\n", + debug_shfileops_action(FuncSwitch), level, OFl); + } + } + return 0; +} + /************************************************************************* * SHFileOperationW [SHELL32.@] * @@ -884,8 +968,6 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) int retCode = 0; DWORD ToAttr; DWORD ToPathAttr; - DWORD FromPathAttr; - FILEOP_FLAGS OFl = ((FILEOP_FLAGS)lpFileOp->fFlags & 0xfff); BOOL b_Multi = (nFileOp.fFlags & FOF_MULTIDESTFILES); @@ -904,6 +986,8 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) long FuncSwitch = (nFileOp.wFunc & FO_MASK); long level= nFileOp.wFunc>>4; + int ret; + /* default no error */ nFileOp.fAnyOperationsAborted = FALSE; @@ -932,47 +1016,12 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) * create dir 0 0 0 0 0 0 1 0 */ - /* - * Summary of flags: - * - * implemented flags: - * FOF_MULTIDESTFILES, FOF_NOCONFIRMATION, FOF_FILESONLY - * - * unimplememented and ignored flags: - * FOF_CONFIRMMOUSE, FOF_SILENT, FOF_NOCONFIRMMKDIR, - * FOF_SIMPLEPROGRESS, FOF_NOCOPYSECURITYATTRIBS - * - * partially implemented, breaks if file exists: - * FOF_RENAMEONCOLLISION - * - * unimplemented and break if any other flag set: - * FOF_ALLOWUNDO, FOF_WANTMAPPINGHANDLE - */ - - TRACE("%s level=%ld nFileOp.fFlags=0x%x\n", - debug_shfileops_action(FuncSwitch), level, lpFileOp->fFlags); - - /* OFl &= (-1 - (FOF_MULTIDESTFILES | FOF_FILESONLY)); */ - /* OFl ^= (FOF_SILENT | FOF_NOCONFIRMATION | FOF_SIMPLEPROGRESS | FOF_NOCONFIRMMKDIR); */ - OFl &= (~(FOF_MULTIDESTFILES | FOF_NOCONFIRMATION | FOF_FILESONLY)); /* implemented */ - OFl ^= (FOF_SILENT | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_NOCOPYSECURITYATTRIBS); /* ignored, if one */ - OFl &= (~FOF_SIMPLEPROGRESS); /* ignored, only with FOF_SILENT */ - if (OFl) + ret = file_operation_checkFlags(nFileOp); + if (ret != 0) { - if (OFl & (~(FOF_CONFIRMMOUSE | FOF_SILENT | FOF_RENAMEONCOLLISION | - FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_NOCOPYSECURITYATTRIBS))) - { - TRACE("%s level=%ld lpFileOp->fFlags=0x%x not implemented, Aborted=TRUE, stub\n", - debug_shfileops_action(FuncSwitch), level, OFl); - retCode = 0x403; /* 1027, we need an extension to shlfileop */ - goto shfileop_end; - } - else - { - TRACE("%s level=%ld lpFileOp->fFlags=0x%x not fully implemented, stub\n", - debug_shfileops_action(FuncSwitch), level, OFl); - } - } + retCode = ret; + goto shfileop_end; + } if ((pNextFrom) && (!(b_MultiTo) || (pNextTo))) { @@ -1055,12 +1104,13 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) goto shfileop_end; } } - + hFind = FindFirstFileW(pFrom, &wfd); if (INVALID_HANDLE_VALUE == hFind) { if ((FO_DELETE == FuncSwitch) && (b_Mask)) { + DWORD FromPathAttr; pFromFile[0] = '\0'; FromPathAttr = GetFileAttributesW(pTempFrom); pFromFile[0] = '\\'; @@ -1080,37 +1130,13 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) /* ??? b_Mask = (!SHFileStrICmpA(&pFromFile[1], &wfd.cFileName[0], HIGH_ADR, HIGH_ADR)); */ if (!pTo) /* FO_DELETE */ { - do + ret = file_operation_delete(&wfd,nFileOp,pFromFile,pTempFrom,&hFind); + /* if ret is not 0, nFileOp.fAnyOperationsAborted is TRUE */ + if (ret != 0) { - lpFileName = wfd.cAlternateFileName; - if (!lpFileName[0]) - lpFileName = wfd.cFileName; - if (IsDotDir(lpFileName) || - ((b_Mask) && IsAttribDir(wfd.dwFileAttributes) && (nFileOp.fFlags & FOF_FILESONLY))) - continue; - SHFileStrCpyCatW(&pFromFile[1], lpFileName, NULL); - /* TODO: Check the SHELL_DeleteFileOrDirectoryW() function in shell32.dll */ - if (IsAttribFile(wfd.dwFileAttributes)) - { - if(SHNotifyDeleteFileW(pTempFrom) != ERROR_SUCCESS) - { - nFileOp.fAnyOperationsAborted = TRUE; - retCode = 0x78; /* value unknown */ - } - } - else - { - if(!SHELL_DeleteDirectoryW(pTempFrom, (!(nFileOp.fFlags & FOF_NOCONFIRMATION)))) - { - nFileOp.fAnyOperationsAborted = TRUE; - retCode = 0x79; /* value unknown */ - } - } - } while (!nFileOp.fAnyOperationsAborted && FindNextFileW(hFind, &wfd)); - FindClose(hFind); - hFind = INVALID_HANDLE_VALUE; - if (nFileOp.fAnyOperationsAborted) - goto shfileop_end; + retCode = ret; + goto shfileop_end; + } continue; } /* FO_DELETE ends, pTo must be always valid from here */ diff --git a/reactos/lib/shell32/shlfsbind.c b/reactos/lib/shell32/shlfsbind.c index 14e1f3a811d..b558aeab3e1 100644 --- a/reactos/lib/shell32/shlfsbind.c +++ b/reactos/lib/shell32/shlfsbind.c @@ -179,22 +179,26 @@ static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData * static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *iface) { IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; - TRACE("(%p)\n", This); - return InterlockedIncrement(&This->ref); + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(count=%li)\n", This, refCount - 1); + + return refCount; } static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *iface) { IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface; - TRACE("(%p)\n", This); + ULONG refCount = InterlockedDecrement(&This->ref); + + TRACE("(%p)->(count=%li)\n", This, refCount + 1); - if (!InterlockedDecrement(&This->ref)) + if (!refCount) { TRACE(" destroying ISFBindPidl(%p)\n",This); HeapFree(GetProcessHeap(), 0, This); - return 0; } - return This->ref; + return refCount; } static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd) diff --git a/reactos/lib/shell32/shlview.c b/reactos/lib/shell32/shlview.c index aa01c94a881..6dc5e5f92ca 100644 --- a/reactos/lib/shell32/shlview.c +++ b/reactos/lib/shell32/shlview.c @@ -97,6 +97,9 @@ typedef struct LISTVIEW_SORT_INFO ListViewSortInfo; ULONG hNotify; /* change notification handle */ HANDLE hAccel; + DWORD dwAspects; + DWORD dwAdvf; + IAdviseSink *pAdvSink; } IShellViewImpl; static struct IShellViewVtbl svvt; @@ -1639,10 +1642,11 @@ static HRESULT WINAPI IShellView_fnQueryInterface(IShellView * iface,REFIID riid static ULONG WINAPI IShellView_fnAddRef(IShellView * iface) { IShellViewImpl *This = (IShellViewImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } /********************************************************** * IShellView_Release @@ -1650,10 +1654,11 @@ static ULONG WINAPI IShellView_fnAddRef(IShellView * iface) static ULONG WINAPI IShellView_fnRelease(IShellView * iface) { IShellViewImpl *This = (IShellViewImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->()\n",This); + TRACE("(%p)->(count=%li)\n", This, refCount + 1); - if (!--(This->ref)) + if (!refCount) { TRACE(" destroying IShellView(%p)\n",This); @@ -1665,13 +1670,15 @@ static ULONG WINAPI IShellView_fnRelease(IShellView * iface) if(This->pSF2Parent) IShellFolder2_Release(This->pSF2Parent); - if (This->apidl) + if(This->apidl) SHFree(This->apidl); + if(This->pAdvSink) + IAdviseSink_Release(This->pAdvSink); + HeapFree(GetProcessHeap(),0,This); - return 0; } - return This->ref; + return refCount; } /********************************************************** @@ -2374,10 +2381,17 @@ static HRESULT WINAPI ISVViewObject_SetAdvise( _ICOM_THIS_From_IViewObject(IShellViewImpl, iface); - FIXME("Stub: This=%p\n",This); + FIXME("partial stub: %p %08lx %08lx %p\n", + This, aspects, advf, pAdvSink); - return E_NOTIMPL; + /* FIXME: we set the AdviseSink, but never use it to send any advice */ + This->pAdvSink = pAdvSink; + This->dwAspects = aspects; + This->dwAdvf = advf; + + return S_OK; } + static HRESULT WINAPI ISVViewObject_GetAdvise( IViewObject *iface, DWORD* pAspects, @@ -2387,9 +2401,20 @@ static HRESULT WINAPI ISVViewObject_GetAdvise( _ICOM_THIS_From_IViewObject(IShellViewImpl, iface); - FIXME("Stub: This=%p\n",This); + TRACE("This=%p pAspects=%p pAdvf=%p ppAdvSink=%p\n", + This, pAspects, pAdvf, ppAdvSink); - return E_NOTIMPL; + if( ppAdvSink ) + { + IAdviseSink_AddRef( This->pAdvSink ); + *ppAdvSink = This->pAdvSink; + } + if( pAspects ) + *pAspects = This->dwAspects; + if( pAdvf ) + *pAdvf = This->dwAdvf; + + return S_OK; } diff --git a/reactos/lib/shell32/shv_bg_cmenu.c b/reactos/lib/shell32/shv_bg_cmenu.c index 9dd5dc6cb90..b879d180fa2 100644 --- a/reactos/lib/shell32/shv_bg_cmenu.c +++ b/reactos/lib/shell32/shv_bg_cmenu.c @@ -106,10 +106,11 @@ static HRESULT WINAPI ISVBgCm_fnQueryInterface(IContextMenu2 *iface, REFIID riid static ULONG WINAPI ISVBgCm_fnAddRef(IContextMenu2 *iface) { BgCmImpl *This = (BgCmImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This, This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } /************************************************************************** @@ -118,10 +119,11 @@ static ULONG WINAPI ISVBgCm_fnAddRef(IContextMenu2 *iface) static ULONG WINAPI ISVBgCm_fnRelease(IContextMenu2 *iface) { BgCmImpl *This = (BgCmImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->()\n",This); + TRACE("(%p)->(count=%li)\n", This, refCount + 1); - if (!--(This->ref)) + if (!refCount) { TRACE(" destroying IContextMenu(%p)\n",This); @@ -129,10 +131,8 @@ static ULONG WINAPI ISVBgCm_fnRelease(IContextMenu2 *iface) IShellFolder_Release(This->pSFParent); HeapFree(GetProcessHeap(),0,This); - return 0; } - - return This->ref; + return refCount; } /************************************************************************** diff --git a/reactos/lib/shell32/shv_item_cmenu.c b/reactos/lib/shell32/shv_item_cmenu.c index 96584068191..9aedddd735b 100644 --- a/reactos/lib/shell32/shv_item_cmenu.c +++ b/reactos/lib/shell32/shv_item_cmenu.c @@ -142,10 +142,11 @@ static HRESULT WINAPI ISvItemCm_fnQueryInterface(IContextMenu2 *iface, REFIID ri static ULONG WINAPI ISvItemCm_fnAddRef(IContextMenu2 *iface) { ItemCmImpl *This = (ItemCmImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(count=%lu)\n",This, This->ref); + TRACE("(%p)->(count=%lu)\n", This, refCount - 1); - return ++(This->ref); + return refCount; } /************************************************************************** @@ -154,10 +155,11 @@ static ULONG WINAPI ISvItemCm_fnAddRef(IContextMenu2 *iface) static ULONG WINAPI ISvItemCm_fnRelease(IContextMenu2 *iface) { ItemCmImpl *This = (ItemCmImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->()\n",This); + TRACE("(%p)->(count=%li)\n", This, refCount + 1); - if (!--(This->ref)) + if (!refCount) { TRACE(" destroying IContextMenu(%p)\n",This); @@ -171,9 +173,8 @@ static ULONG WINAPI ISvItemCm_fnRelease(IContextMenu2 *iface) _ILFreeaPidl(This->apidl, This->cidl); HeapFree(GetProcessHeap(),0,This); - return 0; } - return This->ref; + return refCount; } /************************************************************************** From f4bc26733ad306b843afff26cc619d5456f86d0f Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 13 Feb 2005 22:55:28 +0000 Subject: [PATCH 032/248] SM - some more work svn path=/trunk/; revision=13547 --- reactos/subsys/smss/client.c | 46 ++++++++++++--------- reactos/subsys/smss/init.c | 2 +- reactos/subsys/smss/smapi.c | 79 ++++++++++++++++++++++++++++-------- reactos/subsys/smss/smss.c | 2 +- reactos/subsys/smss/smss.h | 20 +++++++-- 5 files changed, 106 insertions(+), 43 deletions(-) diff --git a/reactos/subsys/smss/client.c b/reactos/subsys/smss/client.c index b25535e5c85..78d101147a8 100644 --- a/reactos/subsys/smss/client.c +++ b/reactos/subsys/smss/client.c @@ -27,18 +27,10 @@ #include #include "smss.h" -/* Private ADT */ +#define NDEBUG +#include -typedef struct _SM_CLIENT_DATA -{ - USHORT SubsystemId; - BOOL Initialized; - HANDLE ServerProcess; - HANDLE ApiPort; - HANDLE SbApiPort; - struct _SM_CLIENT_DATA * Next; - -} SM_CLIENT_DATA, *PSM_CLIENT_DATA; +/* Private ADT */ struct _SM_CLIENT_DIRECTORY @@ -55,6 +47,7 @@ struct _SM_CLIENT_DIRECTORY NTSTATUS SmInitializeClientManagement (VOID) { + DPRINT("SM: %s called\n", __FUNCTION__); RtlInitializeCriticalSection(& SmpClientDirectory.Lock); SmpClientDirectory.Count = 0; SmpClientDirectory.Client = NULL; @@ -64,22 +57,24 @@ SmInitializeClientManagement (VOID) /********************************************************************** * SmpLookupClient/1 */ -PSM_CLIENT_DATA STDCALL +static PSM_CLIENT_DATA STDCALL SmpLookupClient (USHORT SubsystemId) { PSM_CLIENT_DATA Client = NULL; + DPRINT("SM: %s called\n", __FUNCTION__); + + RtlEnterCriticalSection (& SmpClientDirectory.Lock); if (SmpClientDirectory.Count > 0) { - RtlEnterCriticalSection (& SmpClientDirectory.Lock); Client = SmpClientDirectory.Client; - while (NULL != Client->Next) + while (NULL != Client) { if (SubsystemId == Client->SubsystemId) break; Client = Client->Next; } - RtlLeaveCriticalSection (& SmpClientDirectory.Lock); } + RtlLeaveCriticalSection (& SmpClientDirectory.Lock); return Client; } @@ -87,14 +82,17 @@ SmpLookupClient (USHORT SubsystemId) * SmpCreateClient/1 */ NTSTATUS STDCALL -SmpCreateClient(SM_PORT_MESSAGE Request) +SmCreateClient(PSM_PORT_MESSAGE Request, PSM_CLIENT_DATA * ClientData) { PSM_CLIENT_DATA pClient = NULL; + PSM_CONNECT_DATA ConnectData = (PSM_CONNECT_DATA) ((PBYTE) Request) + sizeof (LPC_REQUEST); + + DPRINT("SM: %s called\n", __FUNCTION__); /* * Check if a client for the ID already exist. */ - if (SmpLookupClient(0)) //FIXME + if (SmpLookupClient(ConnectData->Subsystem)) { DbgPrint("SMSS: %s: attempt to register again subsystem %d.\n",__FUNCTION__,0); return STATUS_UNSUCCESSFUL; @@ -105,11 +103,15 @@ SmpCreateClient(SM_PORT_MESSAGE Request) pClient = RtlAllocateHeap (SmpHeap, HEAP_ZERO_MEMORY, sizeof (SM_CLIENT_DATA)); - if (NULL == pClient) return STATUS_NO_MEMORY; + if (NULL == pClient) + { + DPRINT("SM: %s: out of memory!\n",__FUNCTION__); + return STATUS_NO_MEMORY; + } /* * Initialize the client data */ -// pClient->SubsystemId = Request->Subsystem; + pClient->SubsystemId = ConnectData->Subsystem; pClient->Initialized = FALSE; // TODO /* @@ -128,8 +130,10 @@ SmpCreateClient(SM_PORT_MESSAGE Request) pCD = pCD->Next); pCD->Next = pClient; } + pClient->Next = NULL; ++ SmpClientDirectory.Count; RtlLeaveCriticalSection (& SmpClientDirectory.Lock); + if (ClientData) *ClientData = pClient; return STATUS_SUCCESS; } @@ -137,8 +141,10 @@ SmpCreateClient(SM_PORT_MESSAGE Request) * SmpDestroyClient/1 */ NTSTATUS STDCALL -SmpDestroyClient (ULONG SubsystemId) +SmDestroyClient (ULONG SubsystemId) { + DPRINT("SM: %s called\n", __FUNCTION__); + RtlEnterCriticalSection (& SmpClientDirectory.Lock); /* TODO */ RtlLeaveCriticalSection (& SmpClientDirectory.Lock); diff --git a/reactos/subsys/smss/init.c b/reactos/subsys/smss/init.c index 0dcd79dac75..be2125b1ab5 100644 --- a/reactos/subsys/smss/init.c +++ b/reactos/subsys/smss/init.c @@ -98,7 +98,7 @@ struct { }; NTSTATUS -InitSessionManager(HANDLE Children[]) +InitSessionManager(VOID) { int i; NTSTATUS Status; diff --git a/reactos/subsys/smss/smapi.c b/reactos/subsys/smss/smapi.c index 1e132375c9a..05be26a1e62 100644 --- a/reactos/subsys/smss/smapi.c +++ b/reactos/subsys/smss/smapi.c @@ -1,19 +1,16 @@ /* $Id$ + * + * smapi.c - \SmApiPort LPC port message management * * Reactos Session Manager * - * */ -/*#include -#include */ -#define NTOS_MODE_USER -#include -#include -#include #include "smss.h" +#include #define NDEBUG +#include /* GLOBAL VARIABLES *********************************************************/ @@ -26,20 +23,20 @@ NTSTATUS FASTCALL n (PSM_PORT_MESSAGE Request) SMAPI(SmInvalid) { - DbgPrint("SMSS: %s called\n",__FUNCTION__); + DPRINT("SM: %s called\n",__FUNCTION__); Request->Status = STATUS_NOT_IMPLEMENTED; return STATUS_SUCCESS; } SMAPI(SmCompSes) { - DbgPrint("SMSS: %s called\n",__FUNCTION__); + DPRINT("SM: %s called\n",__FUNCTION__); Request->Status = STATUS_NOT_IMPLEMENTED; return STATUS_SUCCESS; } SMAPI(SmExecPgm) { - DbgPrint("SMSS: %s called\n",__FUNCTION__); + DPRINT("SM: %s called\n",__FUNCTION__); Request->Status = STATUS_NOT_IMPLEMENTED; return STATUS_SUCCESS; } @@ -67,8 +64,54 @@ SM_PORT_API SmApi [] = NTSTATUS STDCALL SmpHandleConnectionRequest (HANDLE Port, PSM_PORT_MESSAGE Request) { - DbgPrint("SMSS: %s called\n",__FUNCTION__); - return STATUS_SUCCESS; + NTSTATUS Status = STATUS_SUCCESS; + PSM_CLIENT_DATA ClientData = NULL; + PVOID Context = NULL; + + DPRINT("SM: %s called\n",__FUNCTION__); + + Status = SmCreateClient (Request, & ClientData); + if(STATUS_SUCCESS == Status) + { +#ifdef __USE_NT_LPC__ + Status = NtAcceptConnectPort (& ClientData->ApiPort, + Context, + SmApiPort, + TRUE, //accept + NULL, + NULL); +#else + Status = NtAcceptConnectPort (& ClientData->ApiPort, + Context, + (PLPC_MESSAGE) Request, + TRUE, //accept + NULL, + NULL); +#endif + if(NT_SUCCESS(Status)) + { + Status = NtCompleteConnectPort(ClientData->ApiPort); + } + return STATUS_SUCCESS; + } else { + /* Reject the subsystem */ +#ifdef __USE_NT_LPC__ + Status = NtAcceptConnectPort (& ClientData->ApiPort, + Context, + SmApiPort, + FALSE, //reject + NULL, + NULL); +#else + Status = NtAcceptConnectPort (& ClientData->ApiPort, + Context, + (PLPC_MESSAGE) Request, + FALSE, //reject + NULL, + NULL); +#endif + } + return Status; } /********************************************************************** @@ -82,23 +125,25 @@ VOID STDCALL SmpApiThread(HANDLE Port) { NTSTATUS Status = STATUS_SUCCESS; - ULONG Unknown = 0; + PVOID Unknown = NULL; PLPC_MESSAGE Reply = NULL; SM_PORT_MESSAGE Request = {{0}}; - DbgPrint("SMSS: %s running.\n",__FUNCTION__); + DPRINT("SM: %s running\n",__FUNCTION__); while (TRUE) { - DbgPrint("SMSS: %s: waiting for message\n",__FUNCTION__); + DPRINT("SM: %s: waiting for message\n",__FUNCTION__); Status = NtReplyWaitReceivePort(Port, - & Unknown, + (PULONG) & Unknown, Reply, (PLPC_MESSAGE) & Request); if (NT_SUCCESS(Status)) { - DbgPrint("SMSS: %s: message received\n",__FUNCTION__); + DPRINT("SM: %s: message received (type=%d)\n", + __FUNCTION__, + PORT_MESSAGE_TYPE(Request)); switch (Request.Header.MessageType) { diff --git a/reactos/subsys/smss/smss.c b/reactos/subsys/smss/smss.c index 80ee0e6daa6..72d0656c33c 100644 --- a/reactos/subsys/smss/smss.c +++ b/reactos/subsys/smss/smss.c @@ -36,7 +36,7 @@ NtProcessStartup(PPEB Peb) { NTSTATUS Status; - Status = InitSessionManager(Children); + Status = InitSessionManager(); if (!NT_SUCCESS(Status)) { int i; diff --git a/reactos/subsys/smss/smss.h b/reactos/subsys/smss/smss.h index 0a8a3d1dee5..1ed5d26e724 100644 --- a/reactos/subsys/smss/smss.h +++ b/reactos/subsys/smss/smss.h @@ -4,15 +4,16 @@ #define NTOS_MODE_USER #include #include +#include #define CHILD_CSRSS 0 #define CHILD_WINLOGON 1 /* init.c */ -extern HANDLE SmpHeap; -NTSTATUS InitSessionManager(HANDLE Children[]); +NTSTATUS InitSessionManager(VOID); /* initheap.c */ +extern HANDLE SmpHeap; NTSTATUS SmCreateHeap(VOID); /* initenv.c */ @@ -53,9 +54,20 @@ NTSTATUS SmCreateApiPort(VOID); VOID STDCALL SmpApiThread(HANDLE Port); /* client.c */ +typedef struct _SM_CLIENT_DATA +{ + USHORT SubsystemId; + BOOL Initialized; + HANDLE ServerProcess; + HANDLE ApiPort; + HANDLE SbApiPort; + WCHAR SbApiPortName [SM_SB_NAME_MAX_LENGTH]; + struct _SM_CLIENT_DATA * Next; + +} SM_CLIENT_DATA, *PSM_CLIENT_DATA; NTSTATUS SmInitializeClientManagement(VOID); -NTSTATUS STDCALL SmpCreateClient(SM_PORT_MESSAGE); -NTSTATUS STDCALL SmpDestroyClient(ULONG); +NTSTATUS STDCALL SmCreateClient(PSM_PORT_MESSAGE,PSM_CLIENT_DATA*); +NTSTATUS STDCALL SmDestroyClient(ULONG); /* debug.c */ extern HANDLE DbgSsApiPort; From 013461bd7d86d1aa04c9d9910c316b9ec127f9c8 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sun, 13 Feb 2005 22:56:12 +0000 Subject: [PATCH 033/248] don't return value of uninitialized variable svn path=/trunk/; revision=13548 --- reactos/drivers/fs/cdfs/fcb.c | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/drivers/fs/cdfs/fcb.c b/reactos/drivers/fs/cdfs/fcb.c index 28b52b152a0..c579a4847c0 100644 --- a/reactos/drivers/fs/cdfs/fcb.c +++ b/reactos/drivers/fs/cdfs/fcb.c @@ -250,6 +250,7 @@ CdfsFCBInitializeCache(PVCB Vcb, KEBUGCHECK(0); } #else + Status = STATUS_SUCCESS; CcInitializeCacheMap(FileObject, (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), FALSE, From 9ad7ca2ec17e7a719a3736dbd20c872a30ac8afa Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sun, 13 Feb 2005 23:01:33 +0000 Subject: [PATCH 034/248] don't return value of uninitialized variable svn path=/trunk/; revision=13549 --- reactos/drivers/fs/ntfs/fcb.c | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/drivers/fs/ntfs/fcb.c b/reactos/drivers/fs/ntfs/fcb.c index bda263a8584..db792775027 100644 --- a/reactos/drivers/fs/ntfs/fcb.c +++ b/reactos/drivers/fs/ntfs/fcb.c @@ -254,6 +254,7 @@ NtfsFCBInitializeCache(PVCB Vcb, KEBUGCHECK(0); } #else + Status = STATUS_SUCCESS; CcInitializeCacheMap(FileObject, (PCC_FILE_SIZES)(&Fcb->RFCB.AllocationSize), FALSE, From ca70c99dadb5983326a3475a4928e00f6a2228c3 Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 13 Feb 2005 23:03:17 +0000 Subject: [PATCH 035/248] Resource script uses the new generic rc script. svn path=/trunk/; revision=13550 --- posix/server/misc/psxss.rc | 43 ++++---------------------------------- 1 file changed, 4 insertions(+), 39 deletions(-) diff --git a/posix/server/misc/psxss.rc b/posix/server/misc/psxss.rc index 2fa3b1f4c51..29d68b46e39 100644 --- a/posix/server/misc/psxss.rc +++ b/posix/server/misc/psxss.rc @@ -1,39 +1,4 @@ -#include -#include - -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -VS_VERSION_INFO VERSIONINFO - FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD - PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "CompanyName", RES_STR_COMPANY_NAME - VALUE "FileDescription", "POSIX+ Environment Subsystem Server\0" - VALUE "FileVersion", RES_STR_FILE_VERSION - VALUE "InternalName", "psxss\0" - VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT - VALUE "OriginalFilename", "psxss.exe\0" - VALUE "ProductName", RES_STR_PRODUCT_NAME - VALUE "ProductVersion", RES_STR_PRODUCT_VERSION - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -/* EOF */ +#define REACTOS_STR_FILE_DESCRIPTION "POSIX+ Environment Subsystem Server\0" +#define REACTOS_STR_INTERNAL_NAME "psxss\0" +#define REACTOS_STR_ORIGINAL_FILENAME "psxss.exe\0" +#include From 9a76ee586154b85d0c14706fdcce6dfa3aa45f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 13 Feb 2005 23:10:36 +0000 Subject: [PATCH 036/248] Sync to Wine-20050211 James Hawkins - Properly implement DllCanUnloadNow ref counting. Make sure the mozilla control is ready to unload as well. - Use Interlocked* instead of ++/-- in AddRef/Release. - Use only stored result of Interlocked* in AddRef/Release. - Expand TRACEs to display the ref count. Mike McCormack - Stub definition for OpenUrl. svn path=/trunk/; revision=13551 --- reactos/lib/shdocvw/classinfo.c | 36 ++++++++++------------ reactos/lib/shdocvw/events.c | 36 ++++++++++------------ reactos/lib/shdocvw/factory.c | 36 ++++++++++------------ reactos/lib/shdocvw/misc.c | 26 ++++++++++------ reactos/lib/shdocvw/oleobject.c | 49 +++++++++++++----------------- reactos/lib/shdocvw/persist.c | 36 ++++++++++------------ reactos/lib/shdocvw/shdocvw.h | 7 +++++ reactos/lib/shdocvw/shdocvw.spec | 2 +- reactos/lib/shdocvw/shdocvw_main.c | 27 +++++++++++++++- reactos/lib/shdocvw/webbrowser.c | 18 +++++------ 10 files changed, 143 insertions(+), 130 deletions(-) diff --git a/reactos/lib/shdocvw/classinfo.c b/reactos/lib/shdocvw/classinfo.c index e93218ae5cc..11f888e867c 100644 --- a/reactos/lib/shdocvw/classinfo.c +++ b/reactos/lib/shdocvw/classinfo.c @@ -38,27 +38,25 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); static HRESULT WINAPI WBPCI_QueryInterface(LPPROVIDECLASSINFO iface, REFIID riid, LPVOID *ppobj) { - IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + + if (ppobj == NULL) return E_POINTER; - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); return E_NOINTERFACE; } static ULONG WINAPI WBPCI_AddRef(LPPROVIDECLASSINFO iface) { - IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBPCI_Release(LPPROVIDECLASSINFO iface) { - IProvideClassInfoImpl *This = (IProvideClassInfoImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } /* Return an ITypeInfo interface to retrieve type library info about @@ -82,7 +80,7 @@ static IProvideClassInfoVtbl WBPCI_Vtbl = WBPCI_GetClassInfo }; -IProvideClassInfoImpl SHDOCVW_ProvideClassInfo = { &WBPCI_Vtbl, 1 }; +IProvideClassInfoImpl SHDOCVW_ProvideClassInfo = { &WBPCI_Vtbl}; /********************************************************************** @@ -93,27 +91,25 @@ IProvideClassInfoImpl SHDOCVW_ProvideClassInfo = { &WBPCI_Vtbl, 1 }; static HRESULT WINAPI WBPCI2_QueryInterface(LPPROVIDECLASSINFO2 iface, REFIID riid, LPVOID *ppobj) { - IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBPCI2_AddRef(LPPROVIDECLASSINFO2 iface) { - IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBPCI2_Release(LPPROVIDECLASSINFO2 iface) { - IProvideClassInfo2Impl *This = (IProvideClassInfo2Impl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } /* Return an ITypeInfo interface to retrieve type library info about @@ -167,4 +163,4 @@ static IProvideClassInfo2Vtbl WBPCI2_Vtbl = WBPCI2_GetGUID }; -IProvideClassInfo2Impl SHDOCVW_ProvideClassInfo2 = { &WBPCI2_Vtbl, 1 }; +IProvideClassInfo2Impl SHDOCVW_ProvideClassInfo2 = { &WBPCI2_Vtbl}; diff --git a/reactos/lib/shdocvw/events.c b/reactos/lib/shdocvw/events.c index 1a1b59d6722..df611246e18 100644 --- a/reactos/lib/shdocvw/events.c +++ b/reactos/lib/shdocvw/events.c @@ -38,27 +38,25 @@ static const GUID IID_INotifyDBEvents = static HRESULT WINAPI WBCPC_QueryInterface(LPCONNECTIONPOINTCONTAINER iface, REFIID riid, LPVOID *ppobj) { - IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBCPC_AddRef(LPCONNECTIONPOINTCONTAINER iface) { - IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBCPC_Release(LPCONNECTIONPOINTCONTAINER iface) { - IConnectionPointContainerImpl *This = (IConnectionPointContainerImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } /* Get a list of connection points inside this container. */ @@ -112,7 +110,7 @@ static IConnectionPointContainerVtbl WBCPC_Vtbl = WBCPC_FindConnectionPoint }; -IConnectionPointContainerImpl SHDOCVW_ConnectionPointContainer = { &WBCPC_Vtbl, 1 }; +IConnectionPointContainerImpl SHDOCVW_ConnectionPointContainer = {&WBCPC_Vtbl}; /********************************************************************** @@ -122,27 +120,25 @@ IConnectionPointContainerImpl SHDOCVW_ConnectionPointContainer = { &WBCPC_Vtbl, static HRESULT WINAPI WBCP_QueryInterface(LPCONNECTIONPOINT iface, REFIID riid, LPVOID *ppobj) { - IConnectionPointImpl *This = (IConnectionPointImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBCP_AddRef(LPCONNECTIONPOINT iface) { - IConnectionPointImpl *This = (IConnectionPointImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBCP_Release(LPCONNECTIONPOINT iface) { - IConnectionPointImpl *This = (IConnectionPointImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } static HRESULT WINAPI WBCP_GetConnectionInterface(LPCONNECTIONPOINT iface, IID* pIId) @@ -209,4 +205,4 @@ static IConnectionPointVtbl WBCP_Vtbl = WBCP_EnumConnections }; -IConnectionPointImpl SHDOCVW_ConnectionPoint = { &WBCP_Vtbl, 1 }; +IConnectionPointImpl SHDOCVW_ConnectionPoint = {&WBCP_Vtbl}; diff --git a/reactos/lib/shdocvw/factory.c b/reactos/lib/shdocvw/factory.c index c1f0be60ef8..df00714d93a 100644 --- a/reactos/lib/shdocvw/factory.c +++ b/reactos/lib/shdocvw/factory.c @@ -36,16 +36,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); static HRESULT WINAPI WBCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppobj) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - - TRACE ("\n"); - - /* - * Perform a sanity check on the parameters. - */ - if ((This == NULL) || (ppobj == NULL) ) - return E_INVALIDARG; - + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } @@ -54,10 +48,9 @@ static HRESULT WINAPI WBCF_QueryInterface(LPCLASSFACTORY iface, */ static ULONG WINAPI WBCF_AddRef(LPCLASSFACTORY iface) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } /************************************************************************ @@ -65,11 +58,9 @@ static ULONG WINAPI WBCF_AddRef(LPCLASSFACTORY iface) */ static ULONG WINAPI WBCF_Release(LPCLASSFACTORY iface) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } /************************************************************************ @@ -104,8 +95,13 @@ static HRESULT WINAPI WBCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter */ static HRESULT WINAPI WBCF_LockServer(LPCLASSFACTORY iface, BOOL dolock) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - FIXME("(%p)->(%d),stub!\n", This, dolock); + TRACE("(%d)\n", dolock); + + if (dolock) + SHDOCVW_LockModule(); + else + SHDOCVW_UnlockModule(); + return S_OK; } @@ -118,4 +114,4 @@ static IClassFactoryVtbl WBCF_Vtbl = WBCF_LockServer }; -IClassFactoryImpl SHDOCVW_ClassFactory = { &WBCF_Vtbl, 1 }; +IClassFactoryImpl SHDOCVW_ClassFactory = {&WBCF_Vtbl}; diff --git a/reactos/lib/shdocvw/misc.c b/reactos/lib/shdocvw/misc.c index a2f7af6d013..928f2a34def 100644 --- a/reactos/lib/shdocvw/misc.c +++ b/reactos/lib/shdocvw/misc.c @@ -32,27 +32,25 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); static HRESULT WINAPI WBQA_QueryInterface(LPQUICKACTIVATE iface, REFIID riid, LPVOID *ppobj) { - IQuickActivateImpl *This = (IQuickActivateImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBQA_AddRef(LPQUICKACTIVATE iface) { - IQuickActivateImpl *This = (IQuickActivateImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBQA_Release(LPQUICKACTIVATE iface) { - IQuickActivateImpl *This = (IQuickActivateImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } /* Alternative interface for quicker, easier activation of a control. */ @@ -90,4 +88,12 @@ static IQuickActivateVtbl WBQA_Vtbl = WBQA_GetContentExtent }; -IQuickActivateImpl SHDOCVW_QuickActivate = { &WBQA_Vtbl, 1 }; +IQuickActivateImpl SHDOCVW_QuickActivate = {&WBQA_Vtbl}; + +/********************************************************************** + * OpenURL (SHDOCVW.@) + */ +void WINAPI OpenURL(HWND hWnd, HINSTANCE hInst, LPCSTR lpcstrUrl, int nShowCmd) +{ + FIXME("%p %p %s %d\n", hWnd, hInst, debugstr_a(lpcstrUrl), nShowCmd); +} diff --git a/reactos/lib/shdocvw/oleobject.c b/reactos/lib/shdocvw/oleobject.c index c6b3d6cd197..6652b875da6 100644 --- a/reactos/lib/shdocvw/oleobject.c +++ b/reactos/lib/shdocvw/oleobject.c @@ -143,10 +143,9 @@ static HRESULT WINAPI WBOOBJ_QueryInterface(LPOLEOBJECT iface, */ static ULONG WINAPI WBOOBJ_AddRef(LPOLEOBJECT iface) { - IOleObjectImpl *This = (IOleObjectImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } /************************************************************************ @@ -154,11 +153,9 @@ static ULONG WINAPI WBOOBJ_AddRef(LPOLEOBJECT iface) */ static ULONG WINAPI WBOOBJ_Release(LPOLEOBJECT iface) { - IOleObjectImpl *This = (IOleObjectImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } /************************************************************************ @@ -438,7 +435,7 @@ static IOleObjectVtbl WBOOBJ_Vtbl = WBOOBJ_SetColorScheme }; -IOleObjectImpl SHDOCVW_OleObject = { &WBOOBJ_Vtbl, 1 }; +IOleObjectImpl SHDOCVW_OleObject = {&WBOOBJ_Vtbl}; /********************************************************************** @@ -448,27 +445,25 @@ IOleObjectImpl SHDOCVW_OleObject = { &WBOOBJ_Vtbl, 1 }; static HRESULT WINAPI WBOIPO_QueryInterface(LPOLEINPLACEOBJECT iface, REFIID riid, LPVOID *ppobj) { - IOleInPlaceObjectImpl *This = (IOleInPlaceObjectImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBOIPO_AddRef(LPOLEINPLACEOBJECT iface) { - IOleInPlaceObjectImpl *This = (IOleInPlaceObjectImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBOIPO_Release(LPOLEINPLACEOBJECT iface) { - IOleInPlaceObjectImpl *This = (IOleInPlaceObjectImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } static HRESULT WINAPI WBOIPO_GetWindow(LPOLEINPLACEOBJECT iface, HWND* phwnd) @@ -540,7 +535,7 @@ static IOleInPlaceObjectVtbl WBOIPO_Vtbl = WBOIPO_ReactivateAndUndo }; -IOleInPlaceObjectImpl SHDOCVW_OleInPlaceObject = { &WBOIPO_Vtbl, 1 }; +IOleInPlaceObjectImpl SHDOCVW_OleInPlaceObject = {&WBOIPO_Vtbl}; /********************************************************************** @@ -550,27 +545,25 @@ IOleInPlaceObjectImpl SHDOCVW_OleInPlaceObject = { &WBOIPO_Vtbl, 1 }; static HRESULT WINAPI WBOC_QueryInterface(LPOLECONTROL iface, REFIID riid, LPVOID *ppobj) { - IOleControlImpl *This = (IOleControlImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBOC_AddRef(LPOLECONTROL iface) { - IOleControlImpl *This = (IOleControlImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBOC_Release(LPOLECONTROL iface) { - IOleControlImpl *This = (IOleControlImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } static HRESULT WINAPI WBOC_GetControlInfo(LPOLECONTROL iface, LPCONTROLINFO pCI) @@ -612,4 +605,4 @@ static IOleControlVtbl WBOC_Vtbl = WBOC_FreezeEvents }; -IOleControlImpl SHDOCVW_OleControl = { &WBOC_Vtbl, 1 }; +IOleControlImpl SHDOCVW_OleControl = {&WBOC_Vtbl}; diff --git a/reactos/lib/shdocvw/persist.c b/reactos/lib/shdocvw/persist.c index f7868cbe792..53533e5617f 100644 --- a/reactos/lib/shdocvw/persist.c +++ b/reactos/lib/shdocvw/persist.c @@ -30,27 +30,25 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); static HRESULT WINAPI WBPS_QueryInterface(LPPERSISTSTORAGE iface, REFIID riid, LPVOID *ppobj) { - IPersistStorageImpl *This = (IPersistStorageImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBPS_AddRef(LPPERSISTSTORAGE iface) { - IPersistStorageImpl *This = (IPersistStorageImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBPS_Release(LPPERSISTSTORAGE iface) { - IPersistStorageImpl *This = (IPersistStorageImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } static HRESULT WINAPI WBPS_GetClassID(LPPERSISTSTORAGE iface, CLSID *pClassID) @@ -107,7 +105,7 @@ static IPersistStorageVtbl WBPS_Vtbl = WBPS_SaveCompleted }; -IPersistStorageImpl SHDOCVW_PersistStorage = { &WBPS_Vtbl, 1 }; +IPersistStorageImpl SHDOCVW_PersistStorage = {&WBPS_Vtbl}; /********************************************************************** @@ -117,27 +115,25 @@ IPersistStorageImpl SHDOCVW_PersistStorage = { &WBPS_Vtbl, 1 }; static HRESULT WINAPI WBPSI_QueryInterface(LPPERSISTSTREAMINIT iface, REFIID riid, LPVOID *ppobj) { - IPersistStreamInitImpl *This = (IPersistStreamInitImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WBPSI_AddRef(LPPERSISTSTREAMINIT iface) { - IPersistStreamInitImpl *This = (IPersistStreamInitImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WBPSI_Release(LPPERSISTSTREAMINIT iface) { - IPersistStreamInitImpl *This = (IPersistStreamInitImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } static HRESULT WINAPI WBPSI_GetClassID(LPPERSISTSTREAMINIT iface, CLSID *pClassID) @@ -195,4 +191,4 @@ static IPersistStreamInitVtbl WBPSI_Vtbl = WBPSI_InitNew }; -IPersistStreamInitImpl SHDOCVW_PersistStreamInit = { &WBPSI_Vtbl, 1 }; +IPersistStreamInitImpl SHDOCVW_PersistStreamInit = {&WBPSI_Vtbl}; diff --git a/reactos/lib/shdocvw/shdocvw.h b/reactos/lib/shdocvw/shdocvw.h index 14b4dfe1921..44ea589bdea 100644 --- a/reactos/lib/shdocvw/shdocvw.h +++ b/reactos/lib/shdocvw/shdocvw.h @@ -190,4 +190,11 @@ typedef struct extern IConnectionPointImpl SHDOCVW_ConnectionPoint; +/********************************************************************** + * Dll lifetime tracking declaration for shdocvw.dll + */ +extern LONG SHDOCVW_refCount; +static inline void SHDOCVW_LockModule() { InterlockedIncrement( &SHDOCVW_refCount ); } +static inline void SHDOCVW_UnlockModule() { InterlockedDecrement( &SHDOCVW_refCount ); } + #endif /* __WINE_SHDOCVW_H */ diff --git a/reactos/lib/shdocvw/shdocvw.spec b/reactos/lib/shdocvw/shdocvw.spec index b1d54cb4d36..c48373d5f02 100644 --- a/reactos/lib/shdocvw/shdocvw.spec +++ b/reactos/lib/shdocvw/shdocvw.spec @@ -121,7 +121,7 @@ @ stub ImportPrivacySettings @ stub InstallReg_RunDLL @ stub IEWriteErrorLog -@ stub OpenURL +@ stdcall OpenURL(long long str long) @ stub SHGetIDispatchForFolder @ stdcall SetQueryNetSessionCount(long) @ stub SoftwareUpdateMessageBox diff --git a/reactos/lib/shdocvw/shdocvw_main.c b/reactos/lib/shdocvw/shdocvw_main.c index 72a9b173cea..b5e16701615 100644 --- a/reactos/lib/shdocvw/shdocvw_main.c +++ b/reactos/lib/shdocvw/shdocvw_main.c @@ -47,6 +47,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); +LONG SHDOCVW_refCount = 0; + static const WCHAR szMozDlPath[] = { 'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\', 's','h','d','o','c','v','w',0 @@ -55,6 +57,7 @@ static const WCHAR szMozDlPath[] = { DEFINE_GUID( CLSID_MozillaBrowser, 0x1339B54C,0x3453,0x11D2,0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00); typedef HRESULT (WINAPI *fnGetClassObject)(REFCLSID rclsid, REFIID iid, LPVOID *ppv); +typedef HRESULT (WINAPI *fnCanUnloadNow)(void); HINSTANCE shdocvw_hinstance = 0; static HMODULE SHDOCVW_hshell32 = 0; @@ -127,7 +130,20 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD fdwReason, LPVOID fImpLoad) */ HRESULT WINAPI SHDOCVW_DllCanUnloadNow(void) { - FIXME("(void): stub\n"); + HRESULT moz_can_unload = S_FALSE; + fnCanUnloadNow pCanUnloadNow; + + if (hMozCtl) + { + pCanUnloadNow = (fnCanUnloadNow) + GetProcAddress(hMozCtl, "DllCanUnloadNow"); + moz_can_unload = pCanUnloadNow(); + } + else + moz_can_unload = S_OK; + + if (moz_can_unload == S_OK && SHDOCVW_refCount == 0) + return S_OK; return S_FALSE; } @@ -145,6 +161,8 @@ typedef struct _IBindStatusCallbackImpl { static HRESULT WINAPI dlQueryInterface( IBindStatusCallback* This, REFIID riid, void** ppvObject ) { + if (ppvObject == NULL) return E_POINTER; + if( IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IBindStatusCallback)) { @@ -158,6 +176,9 @@ dlQueryInterface( IBindStatusCallback* This, REFIID riid, void** ppvObject ) static ULONG WINAPI dlAddRef( IBindStatusCallback* iface ) { IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; + + SHDOCVW_LockModule(); + return InterlockedIncrement( &This->ref ); } @@ -165,11 +186,15 @@ static ULONG WINAPI dlRelease( IBindStatusCallback* iface ) { IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; DWORD ref = InterlockedDecrement( &This->ref ); + if( !ref ) { DestroyWindow( This->hDialog ); HeapFree( GetProcessHeap(), 0, This ); } + + SHDOCVW_UnlockModule(); + return ref; } diff --git a/reactos/lib/shdocvw/webbrowser.c b/reactos/lib/shdocvw/webbrowser.c index 7c40dcd69a9..21bd351b649 100644 --- a/reactos/lib/shdocvw/webbrowser.c +++ b/reactos/lib/shdocvw/webbrowser.c @@ -29,27 +29,25 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); static HRESULT WINAPI WB_QueryInterface(IWebBrowser *iface, REFIID riid, LPVOID *ppobj) { - IWebBrowserImpl *This = (IWebBrowserImpl *)iface; + FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); - FIXME("(%p)->(%s,%p),stub!\n", This, debugstr_guid(riid), ppobj); + if (ppobj == NULL) return E_POINTER; + return E_NOINTERFACE; } static ULONG WINAPI WB_AddRef(IWebBrowser *iface) { - IWebBrowserImpl *This = (IWebBrowserImpl *)iface; + SHDOCVW_LockModule(); - TRACE("\n"); - return ++(This->ref); + return 2; /* non-heap based object */ } static ULONG WINAPI WB_Release(IWebBrowser *iface) { - IWebBrowserImpl *This = (IWebBrowserImpl *)iface; + SHDOCVW_UnlockModule(); - /* static class, won't be freed */ - TRACE("\n"); - return --(This->ref); + return 1; /* non-heap based object */ } /* IDispatch methods */ @@ -277,4 +275,4 @@ static IWebBrowserVtbl WB_Vtbl = WB_get_Busy }; -IWebBrowserImpl SHDOCVW_WebBrowser = { &WB_Vtbl, 1 }; +IWebBrowserImpl SHDOCVW_WebBrowser = {&WB_Vtbl}; From caea1ad51fd1cde6b60befaec07d0f4b74f6072f Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 00:28:12 +0000 Subject: [PATCH 037/248] secure access to buffers in NtAllocateLocallyUniqueId svn path=/trunk/; revision=13552 --- reactos/ntoskrnl/include/internal/ex.h | 3 ++ reactos/ntoskrnl/se/luid.c | 72 +++++++++++++++++++++----- reactos/ntoskrnl/se/token.c | 6 +-- 3 files changed, 64 insertions(+), 17 deletions(-) diff --git a/reactos/ntoskrnl/include/internal/ex.h b/reactos/ntoskrnl/include/internal/ex.h index 44e5a5aeeac..2f7841c0d2c 100644 --- a/reactos/ntoskrnl/include/internal/ex.h +++ b/reactos/ntoskrnl/include/internal/ex.h @@ -120,6 +120,9 @@ ExfpInterlockedExchange64(LONGLONG volatile * Destination, NTSTATUS ExpSetTimeZoneInformation(PTIME_ZONE_INFORMATION TimeZoneInformation); +NTSTATUS +ExpAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId);; + #define InterlockedDecrementUL(Addend) \ (ULONG)InterlockedDecrement((PLONG)(Addend)) diff --git a/reactos/ntoskrnl/se/luid.c b/reactos/ntoskrnl/se/luid.c index 1ea9e71c3fc..702bfcdd201 100644 --- a/reactos/ntoskrnl/se/luid.c +++ b/reactos/ntoskrnl/se/luid.c @@ -15,7 +15,6 @@ /* GLOBALS *******************************************************************/ -static KSPIN_LOCK LuidLock; static LARGE_INTEGER LuidIncrement; static LARGE_INTEGER LuidValue; @@ -26,34 +25,79 @@ SepInitLuid(VOID) { LUID DummyLuidValue = SYSTEM_LUID; - KeInitializeSpinLock(&LuidLock); LuidValue.u.HighPart = DummyLuidValue.HighPart; LuidValue.u.LowPart = DummyLuidValue.LowPart; LuidIncrement.QuadPart = 1; } +NTSTATUS +ExpAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId) +{ + LARGE_INTEGER NewLuid, PrevLuid; + + /* atomically increment the luid */ + do + { + PrevLuid = (volatile LARGE_INTEGER)LuidValue; + NewLuid = RtlLargeIntegerAdd(PrevLuid, + LuidIncrement); + } while(ExfInterlockedCompareExchange64(&LuidValue.QuadPart, + &NewLuid.QuadPart, + &PrevLuid.QuadPart) != PrevLuid.QuadPart); + + LocallyUniqueId->LowPart = NewLuid.u.LowPart; + LocallyUniqueId->HighPart = NewLuid.u.HighPart; + + return STATUS_SUCCESS; +} + + /* * @implemented */ NTSTATUS STDCALL NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId) { - LARGE_INTEGER ReturnedLuid; - KIRQL Irql; + LUID NewLuid; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForWrite(LocallyUniqueId, + sizeof(LUID), + sizeof(ULONG)); + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } - KeAcquireSpinLock(&LuidLock, - &Irql); - ReturnedLuid = LuidValue; - LuidValue = RtlLargeIntegerAdd(LuidValue, - LuidIncrement); - KeReleaseSpinLock(&LuidLock, - Irql); + Status = ExpAllocateLocallyUniqueId(&NewLuid); - LocallyUniqueId->LowPart = ReturnedLuid.u.LowPart; - LocallyUniqueId->HighPart = ReturnedLuid.u.HighPart; + _SEH_TRY + { + *LocallyUniqueId = NewLuid; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; - return(STATUS_SUCCESS); + return Status; } diff --git a/reactos/ntoskrnl/se/token.c b/reactos/ntoskrnl/se/token.c index 62d6f9c01ef..7fbe6f72077 100644 --- a/reactos/ntoskrnl/se/token.c +++ b/reactos/ntoskrnl/se/token.c @@ -1415,21 +1415,21 @@ SepCreateSystemProcessToken(struct _EPROCESS* Process) return(Status); } - Status = NtAllocateLocallyUniqueId(&AccessToken->TokenId); + Status = ExpAllocateLocallyUniqueId(&AccessToken->TokenId); if (!NT_SUCCESS(Status)) { ObDereferenceObject(AccessToken); return(Status); } - Status = NtAllocateLocallyUniqueId(&AccessToken->ModifiedId); + Status = ExpAllocateLocallyUniqueId(&AccessToken->ModifiedId); if (!NT_SUCCESS(Status)) { ObDereferenceObject(AccessToken); return(Status); } - Status = NtAllocateLocallyUniqueId(&AccessToken->AuthenticationId); + Status = ExpAllocateLocallyUniqueId(&AccessToken->AuthenticationId); if (!NT_SUCCESS(Status)) { ObDereferenceObject(AccessToken); From 44b4c1125eff517d9748c7c4a374e53e1395038b Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 00:32:09 +0000 Subject: [PATCH 038/248] probe pointers in NtCreateToken. Still needs some work as access to the buffers needs to be secured svn path=/trunk/; revision=13553 --- reactos/ntoskrnl/se/token.c | 104 ++++++++++++++++++++++++++---------- 1 file changed, 76 insertions(+), 28 deletions(-) diff --git a/reactos/ntoskrnl/se/token.c b/reactos/ntoskrnl/se/token.c index 7fbe6f72077..ab4c24ff510 100644 --- a/reactos/ntoskrnl/se/token.c +++ b/reactos/ntoskrnl/se/token.c @@ -1588,7 +1588,7 @@ SepCreateSystemProcessToken(struct _EPROCESS* Process) NTSTATUS STDCALL -NtCreateToken(OUT PHANDLE UnsafeTokenHandle, +NtCreateToken(OUT PHANDLE TokenHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN TOKEN_TYPE TokenType, @@ -1602,14 +1602,64 @@ NtCreateToken(OUT PHANDLE UnsafeTokenHandle, IN PTOKEN_DEFAULT_DACL TokenDefaultDacl, IN PTOKEN_SOURCE TokenSource) { - HANDLE TokenHandle; + HANDLE hToken; PTOKEN AccessToken; - NTSTATUS Status; LUID TokenId; LUID ModifiedId; PVOID EndMem; ULONG uLength; ULONG i; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForWrite(TokenHandle, + sizeof(HANDLE), + sizeof(ULONG)); + ProbeForRead(AuthenticationId, + sizeof(LUID), + sizeof(ULONG)); + ProbeForRead(ExpirationTime, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + ProbeForRead(TokenUser, + sizeof(TOKEN_USER), + sizeof(ULONG)); + ProbeForRead(TokenGroups, + sizeof(TOKEN_GROUPS), + sizeof(ULONG)); + ProbeForRead(TokenPrivileges, + sizeof(TOKEN_PRIVILEGES), + sizeof(ULONG)); + ProbeForRead(TokenOwner, + sizeof(TOKEN_OWNER), + sizeof(ULONG)); + ProbeForRead(TokenPrimaryGroup, + sizeof(TOKEN_PRIMARY_GROUP), + sizeof(ULONG)); + ProbeForRead(TokenDefaultDacl, + sizeof(TOKEN_DEFAULT_DACL), + sizeof(ULONG)); + ProbeForRead(TokenSource, + sizeof(TOKEN_SOURCE), + sizeof(ULONG)); + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } Status = ZwAllocateLocallyUniqueId(&TokenId); if (!NT_SUCCESS(Status)) @@ -1619,10 +1669,10 @@ NtCreateToken(OUT PHANDLE UnsafeTokenHandle, if (!NT_SUCCESS(Status)) return(Status); - Status = ObCreateObject(ExGetPreviousMode(), + Status = ObCreateObject(PreviousMode, SepTokenObjectType, ObjectAttributes, - ExGetPreviousMode(), + PreviousMode, NULL, sizeof(TOKEN), 0, @@ -1634,19 +1684,6 @@ NtCreateToken(OUT PHANDLE UnsafeTokenHandle, return(Status); } - Status = ObInsertObject ((PVOID)AccessToken, - NULL, - DesiredAccess, - 0, - NULL, - &TokenHandle); - if (!NT_SUCCESS(Status)) - { - DPRINT1("ObInsertObject() failed (Status %lx)\n"); - ObDereferenceObject (AccessToken); - return Status; - } - RtlCopyLuid(&AccessToken->TokenSource.SourceIdentifier, &TokenSource->SourceIdentifier); memcpy(AccessToken->TokenSource.SourceName, @@ -1740,22 +1777,33 @@ NtCreateToken(OUT PHANDLE UnsafeTokenHandle, TokenDefaultDacl->DefaultDacl->AclSize); } + Status = ObInsertObject ((PVOID)AccessToken, + NULL, + DesiredAccess, + 0, + NULL, + &hToken); + if (!NT_SUCCESS(Status)) + { + DPRINT1("ObInsertObject() failed (Status %lx)\n", Status); + } + ObDereferenceObject(AccessToken); if (NT_SUCCESS(Status)) { - Status = MmCopyToCaller(UnsafeTokenHandle, - &TokenHandle, - sizeof(HANDLE)); + _SEH_TRY + { + *TokenHandle = hToken; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; } - if (!NT_SUCCESS(Status)) - { - ZwClose(TokenHandle); - return(Status); - } - - return(STATUS_SUCCESS); + return Status; } From 3f700c132c68fa5c863a6f4a79ac550ee7a0abfd Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Mon, 14 Feb 2005 05:36:04 +0000 Subject: [PATCH 039/248] Reimplemented Kernel and Executive Timers. Use Microsoft documented structures, added locks to protect against race conditions, use dispatcher database, implement new features like wake timers, use thread timer lists, simplify timer list, add more comments and debug info, actually add apc/dpc functions which do what the should do, fix a couple of bugs, simplfiy absolute vs relative timers. I will do more testing and see wether an experimental Timer Tree patch (which greatly speeds up timer processing) is necessary. svn path=/trunk/; revision=13554 --- reactos/include/ddk/kefuncs.h | 6 + reactos/ntoskrnl/Makefile | 1 + reactos/ntoskrnl/ex/timer.c | 1038 +++++++++++---------- reactos/ntoskrnl/include/internal/ke.h | 4 +- reactos/ntoskrnl/ke/clock.c | 410 +++++++++ reactos/ntoskrnl/ke/i386/kernel.c | 2 +- reactos/ntoskrnl/ke/kthread.c | 59 ++ reactos/ntoskrnl/ke/profile.c | 56 ++ reactos/ntoskrnl/ke/timer.c | 1139 +++++++----------------- reactos/ntoskrnl/ke/wait.c | 35 +- 10 files changed, 1458 insertions(+), 1292 deletions(-) create mode 100644 reactos/ntoskrnl/ke/clock.c diff --git a/reactos/include/ddk/kefuncs.h b/reactos/include/ddk/kefuncs.h index 038bbd26cd3..e28a5bae9f3 100644 --- a/reactos/include/ddk/kefuncs.h +++ b/reactos/include/ddk/kefuncs.h @@ -246,6 +246,12 @@ KeQueryTimeIncrement ( VOID ); +ULONGLONG +STDCALL +KeQueryInterruptTime( + VOID + ); + VOID STDCALL KeRaiseIrql ( diff --git a/reactos/ntoskrnl/Makefile b/reactos/ntoskrnl/Makefile index 63d323aacf8..6ae59eb607d 100644 --- a/reactos/ntoskrnl/Makefile +++ b/reactos/ntoskrnl/Makefile @@ -96,6 +96,7 @@ OBJECTS_KE = \ ke/apc.o \ ke/bug.o \ ke/catch.o \ + ke/clock.o \ ke/critical.o \ ke/dpc.o \ ke/device.o \ diff --git a/reactos/ntoskrnl/ex/timer.c b/reactos/ntoskrnl/ex/timer.c index 3deeff2518c..00ba8cb94e2 100644 --- a/reactos/ntoskrnl/ex/timer.c +++ b/reactos/ntoskrnl/ex/timer.c @@ -5,7 +5,8 @@ * FILE: ntoskrnl/ex/timer.c * PURPOSE: User-mode timers * - * PROGRAMMERS: David Welch (welch@mcmail.com) + * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) - Reimplemented + * David Welch (welch@mcmail.com) */ /* INCLUDES *****************************************************************/ @@ -13,528 +14,665 @@ #include #include - /* TYPES ********************************************************************/ -typedef struct _NTTIMER -{ - KTIMER Timer; - KDPC Dpc; - KAPC Apc; - BOOLEAN Running; -} NTTIMER, *PNTTIMER; - +/* Executive Timer Object */ +typedef struct _ETIMER { + KTIMER KeTimer; + KAPC TimerApc; + KDPC TimerDpc; + LIST_ENTRY ActiveTimerListEntry; + KSPIN_LOCK Lock; + LONG Period; + BOOLEAN ApcAssociated; + BOOLEAN WakeTimer; + LIST_ENTRY WakeTimerListEntry; +} ETIMER, *PETIMER; /* GLOBALS ******************************************************************/ +/* Timer Object Type */ POBJECT_TYPE ExTimerType = NULL; -static GENERIC_MAPPING ExpTimerMapping = { - STANDARD_RIGHTS_READ | TIMER_QUERY_STATE, - STANDARD_RIGHTS_WRITE | TIMER_MODIFY_STATE, - STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE, - TIMER_ALL_ACCESS}; +KSPIN_LOCK ExpWakeListLock; +LIST_ENTRY ExpWakeList; -static const INFORMATION_CLASS_INFO ExTimerInfoClass[] = -{ - ICI_SQ_SAME( sizeof(TIMER_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY ), /* TimerBasicInformation */ +/* Timer Mapping */ +static GENERIC_MAPPING ExpTimerMapping = { + STANDARD_RIGHTS_READ | TIMER_QUERY_STATE, + STANDARD_RIGHTS_WRITE | TIMER_MODIFY_STATE, + STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE, + TIMER_ALL_ACCESS +}; + +/* Timer Information Classes */ +static const INFORMATION_CLASS_INFO ExTimerInfoClass[] = { + + /* TimerBasicInformation */ + ICI_SQ_SAME( sizeof(TIMER_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY ), }; /* FUNCTIONS *****************************************************************/ -NTSTATUS STDCALL -ExpCreateTimer(PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - POBJECT_ATTRIBUTES ObjectAttributes) -{ - DPRINT("ExpCreateTimer(ObjectBody %x, Parent %x, RemainingPath %S)\n", - ObjectBody, Parent, RemainingPath); - - if (RemainingPath != NULL && wcschr(RemainingPath+1, '\\') != NULL) - { - return(STATUS_UNSUCCESSFUL); - } - - return(STATUS_SUCCESS); -} - - -VOID STDCALL +VOID +STDCALL ExpDeleteTimer(PVOID ObjectBody) { - KIRQL OldIrql; - PNTTIMER Timer = ObjectBody; + KIRQL OldIrql; + PETIMER Timer = ObjectBody; - DPRINT("ExpDeleteTimer()\n"); + DPRINT("ExpDeleteTimer(Timer: %x)\n", Timer); - OldIrql = KeRaiseIrqlToDpcLevel(); + /* Lock the Wake List */ + KeAcquireSpinLock(&ExpWakeListLock, &OldIrql); + + /* Check if it has a Wait List */ + if (!IsListEmpty(&Timer->WakeTimerListEntry)) { + + /* Remove it from the Wait List */ + DPRINT("Removing wake list\n"); + RemoveEntryList(&Timer->WakeTimerListEntry); + } + + /* Release the Wake List */ + KeReleaseSpinLock(&ExpWakeListLock, OldIrql); - KeCancelTimer(&Timer->Timer); - KeRemoveQueueDpc(&Timer->Dpc); - KeRemoveQueueApc(&Timer->Apc); - Timer->Running = FALSE; - - KeLowerIrql(OldIrql); + /* Tell the Kernel to cancel the Timer */ + DPRINT("Cancelling Timer\n"); + KeCancelTimer(&Timer->KeTimer); } - -VOID STDCALL +VOID +STDCALL ExpTimerDpcRoutine(PKDPC Dpc, - PVOID DeferredContext, - PVOID SystemArgument1, - PVOID SystemArgument2) + PVOID DeferredContext, + PVOID SystemArgument1, + PVOID SystemArgument2) { - PNTTIMER Timer; + PETIMER Timer; + KIRQL OldIrql; - DPRINT("ExpTimerDpcRoutine()\n"); + DPRINT("ExpTimerDpcRoutine(Dpc: %x)\n", Dpc); - Timer = (PNTTIMER)DeferredContext; + /* Get the Timer Object */ + Timer = (PETIMER)DeferredContext; - if ( Timer->Running ) - { - KeInsertQueueApc(&Timer->Apc, - SystemArgument1, - SystemArgument2, - IO_NO_INCREMENT); - } + /* Lock the Timer */ + KeAcquireSpinLock(&Timer->Lock, &OldIrql); + + /* Queue the APC */ + if(Timer->ApcAssociated) { + + DPRINT("Queuing APC\n"); + KeInsertQueueApc(&Timer->TimerApc, + SystemArgument1, + SystemArgument2, + IO_NO_INCREMENT); + } + + /* Release the Timer */ + KeReleaseSpinLock(&Timer->Lock, OldIrql); } -VOID STDCALL +VOID +STDCALL ExpTimerApcKernelRoutine(PKAPC Apc, - PKNORMAL_ROUTINE* NormalRoutine, - PVOID* NormalContext, - PVOID* SystemArgument1, - PVOID* SystemArguemnt2) + PKNORMAL_ROUTINE* NormalRoutine, + PVOID* NormalContext, + PVOID* SystemArgument1, + PVOID* SystemArguemnt2) { - DPRINT("ExpTimerApcKernelRoutine()\n"); - + PETIMER Timer; + PETHREAD CurrentThread = PsGetCurrentThread(); + KIRQL OldIrql; + + /* We need to find out which Timer we are */ + Timer = CONTAINING_RECORD(Apc, ETIMER, TimerApc); + DPRINT("ExpTimerApcKernelRoutine(Apc: %x. Timer: %x)\n", Apc, Timer); + + /* Lock the Timer */ + KeAcquireSpinLock(&Timer->Lock, &OldIrql); + + /* Lock the Thread's Active Timer List*/ + KeAcquireSpinLockAtDpcLevel(&CurrentThread->ActiveTimerListLock); + + /* + * Make sure that the Timer is still valid, and that it belongs to this thread + * Remove it if it's not periodic + */ + if ((Timer->ApcAssociated) && + (&CurrentThread->Tcb == Timer->TimerApc.Thread) && + (!Timer->Period)) { + + /* Remove it from the Active Timers List */ + DPRINT("Removing Timer\n"); + RemoveEntryList(&Timer->ActiveTimerListEntry); + + /* Disable it */ + Timer->ApcAssociated = FALSE; + + /* Release spinlocks */ + KeReleaseSpinLockFromDpcLevel(&CurrentThread->ActiveTimerListLock); + KeReleaseSpinLock(&Timer->Lock, OldIrql); + + /* Dereference the Timer Object */ + ObDereferenceObject(Timer); + return; + } + + /* Release spinlocks */ + KeReleaseSpinLockFromDpcLevel(&CurrentThread->ActiveTimerListLock); + KeReleaseSpinLock(&Timer->Lock, OldIrql); } - -VOID INIT_FUNCTION +VOID +INIT_FUNCTION ExpInitializeTimerImplementation(VOID) { - ASSERT(!ExTimerType) - ExTimerType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE)); + DPRINT("ExpInitializeTimerImplementation()\n"); + + /* Allocate Memory for the Timer */ + ExTimerType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE)); - RtlpCreateUnicodeString(&ExTimerType->TypeName, L"Timer", NonPagedPool); - - ExTimerType->Tag = TAG('T', 'I', 'M', 'T'); - ExTimerType->PeakObjects = 0; - ExTimerType->PeakHandles = 0; - ExTimerType->TotalObjects = 0; - ExTimerType->TotalHandles = 0; - ExTimerType->PagedPoolCharge = 0; - ExTimerType->NonpagedPoolCharge = sizeof(NTTIMER); - ExTimerType->Mapping = &ExpTimerMapping; - ExTimerType->Dump = NULL; - ExTimerType->Open = NULL; - ExTimerType->Close = NULL; - ExTimerType->Delete = ExpDeleteTimer; - ExTimerType->Parse = NULL; - ExTimerType->Security = NULL; - ExTimerType->QueryName = NULL; - ExTimerType->OkayToClose = NULL; - ExTimerType->Create = ExpCreateTimer; - ExTimerType->DuplicationNotify = NULL; - - ObpCreateTypeObject(ExTimerType); + /* Create the Executive Timer Object */ + RtlpCreateUnicodeString(&ExTimerType->TypeName, L"Timer", NonPagedPool); + ExTimerType->Tag = TAG('T', 'I', 'M', 'T'); + ExTimerType->PeakObjects = 0; + ExTimerType->PeakHandles = 0; + ExTimerType->TotalObjects = 0; + ExTimerType->TotalHandles = 0; + ExTimerType->PagedPoolCharge = 0; + ExTimerType->NonpagedPoolCharge = sizeof(ETIMER); + ExTimerType->Mapping = &ExpTimerMapping; + ExTimerType->Dump = NULL; + ExTimerType->Open = NULL; + ExTimerType->Close = NULL; + ExTimerType->Delete = ExpDeleteTimer; + ExTimerType->Parse = NULL; + ExTimerType->Security = NULL; + ExTimerType->QueryName = NULL; + ExTimerType->OkayToClose = NULL; + ExTimerType->Create = NULL; + ExTimerType->DuplicationNotify = NULL; + ObpCreateTypeObject(ExTimerType); + + /* Initialize the Wait List and Lock */ + KeInitializeSpinLock(&ExpWakeListLock); + InitializeListHead(&ExpWakeList); } -NTSTATUS STDCALL +NTSTATUS +STDCALL NtCancelTimer(IN HANDLE TimerHandle, - OUT PBOOLEAN CurrentState OPTIONAL) + OUT PBOOLEAN CurrentState OPTIONAL) { - PNTTIMER Timer; - KPROCESSOR_MODE PreviousMode; - NTSTATUS Status = STATUS_SUCCESS; + PETIMER Timer; + KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); + NTSTATUS Status = STATUS_SUCCESS; + BOOLEAN State; + KIRQL OldIrql; + BOOLEAN KillTimer = FALSE; + PETHREAD TimerThread; - PreviousMode = ExGetPreviousMode(); + DPRINT("NtCancelTimer(0x%x, 0x%x)\n", TimerHandle, CurrentState); - DPRINT("NtCancelTimer(0x%x, 0x%x)\n", TimerHandle, CurrentState); - - if(CurrentState != NULL && PreviousMode != KernelMode) - { - _SEH_TRY - { - ProbeForWrite(CurrentState, - sizeof(BOOLEAN), - sizeof(BOOLEAN)); - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; + /* Check Parameter Validity */ + if(CurrentState != NULL && PreviousMode != KernelMode) { + _SEH_TRY { + ProbeForWrite(CurrentState, + sizeof(BOOLEAN), + sizeof(BOOLEAN)); + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; - if(!NT_SUCCESS(Status)) - { - return Status; - } - } + if(!NT_SUCCESS(Status)) { + return Status; + } + } - Status = ObReferenceObjectByHandle(TimerHandle, - TIMER_ALL_ACCESS, - ExTimerType, - PreviousMode, - (PVOID*)&Timer, - NULL); - if(NT_SUCCESS(Status)) - { - BOOLEAN State; - KIRQL OldIrql = KeRaiseIrqlToDpcLevel(); + /* Get the Timer Object */ + Status = ObReferenceObjectByHandle(TimerHandle, + TIMER_ALL_ACCESS, + ExTimerType, + PreviousMode, + (PVOID*)&Timer, + NULL); + + /* Check for success */ + if(NT_SUCCESS(Status)) { + + DPRINT("Timer Referencced: %x\n", Timer); + + /* Lock the Timer */ + KeAcquireSpinLock(&Timer->Lock, &OldIrql); + + /* Check if it's enabled */ + if (Timer->ApcAssociated) { + + /* + * First, remove it from the Thread's Active List + * Get the Thread. + */ + TimerThread = CONTAINING_RECORD(Timer->TimerApc.Thread, ETHREAD, Tcb); + DPRINT("Removing from Thread: %x\n", TimerThread); + + /* Lock its active list */ + KeAcquireSpinLockAtDpcLevel(&TimerThread->ActiveTimerListLock); + + /* Remove it */ + RemoveEntryList(&TimerThread->ActiveTimerListHead); + + /* Unlock the list */ + KeReleaseSpinLockFromDpcLevel(&TimerThread->ActiveTimerListLock); + + /* Cancel the Timer */ + KeCancelTimer(&Timer->KeTimer); + KeRemoveQueueDpc(&Timer->TimerDpc); + KeRemoveQueueApc(&Timer->TimerApc); + Timer->ApcAssociated = FALSE; + KillTimer = TRUE; + + } else { + + /* If timer was disabled, we still need to cancel it */ + DPRINT("APC was not Associated. Cancelling Timer\n"); + KeCancelTimer(&Timer->KeTimer); + } + + /* Read the old State */ + State = KeReadStateTimer(&Timer->KeTimer); + + /* Dereference the Object */ + ObDereferenceObject(Timer); + + /* Unlock the Timer */ + KeReleaseSpinLock(&Timer->Lock, OldIrql); + + /* Dereference if it was previously enabled */ + if (KillTimer) ObDereferenceObject(Timer); + DPRINT1("Timer disabled\n"); - State = KeCancelTimer(&Timer->Timer); - KeRemoveQueueDpc(&Timer->Dpc); - KeRemoveQueueApc(&Timer->Apc); - Timer->Running = FALSE; + /* Make sure it's safe to write to the handle */ + if(CurrentState != NULL) { + _SEH_TRY { + *CurrentState = State; + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + } + } - KeLowerIrql(OldIrql); - ObDereferenceObject(Timer); - - if(CurrentState != NULL) - { - _SEH_TRY - { - *CurrentState = State; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - } - } - - return Status; + /* Return to Caller */ + return Status; } -NTSTATUS STDCALL +NTSTATUS +STDCALL NtCreateTimer(OUT PHANDLE TimerHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN TIMER_TYPE TimerType) + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN TIMER_TYPE TimerType) { - PNTTIMER Timer; - HANDLE hTimer; - KPROCESSOR_MODE PreviousMode; - NTSTATUS Status = STATUS_SUCCESS; + PETIMER Timer; + HANDLE hTimer; + KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); + NTSTATUS Status = STATUS_SUCCESS; - DPRINT("NtCreateTimer()\n"); - - PreviousMode = ExGetPreviousMode(); - - if(PreviousMode != KernelMode) - { - _SEH_TRY - { - ProbeForWrite(TimerHandle, - sizeof(HANDLE), - sizeof(ULONG)); - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; + DPRINT("NtCreateTimer(Handle: %x, Type: %d)\n", TimerHandle, TimerType); - if(!NT_SUCCESS(Status)) - { - return Status; - } - } - - Status = ObCreateObject(PreviousMode, - ExTimerType, - ObjectAttributes, - PreviousMode, - NULL, - sizeof(NTTIMER), - 0, - 0, - (PVOID*)&Timer); - if(NT_SUCCESS(Status)) - { - KeInitializeTimerEx(&Timer->Timer, - TimerType); - - KeInitializeDpc(&Timer->Dpc, - &ExpTimerDpcRoutine, - Timer); - - Timer->Running = FALSE; - - Status = ObInsertObject ((PVOID)Timer, - NULL, - DesiredAccess, - 0, - NULL, - &hTimer); - ObDereferenceObject(Timer); + /* Check Parameter Validity */ + if (PreviousMode != KernelMode) { + _SEH_TRY { + ProbeForWrite(TimerHandle, + sizeof(HANDLE), + sizeof(ULONG)); + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; - if(NT_SUCCESS(Status)) - { - _SEH_TRY - { - *TimerHandle = hTimer; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - } - } - - return Status; -} - - -NTSTATUS STDCALL -NtOpenTimer(OUT PHANDLE TimerHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes) -{ - HANDLE hTimer; - KPROCESSOR_MODE PreviousMode; - NTSTATUS Status = STATUS_SUCCESS; - - DPRINT("NtOpenTimer()\n"); - - PreviousMode = ExGetPreviousMode(); - - if(PreviousMode != KernelMode) - { - _SEH_TRY - { - ProbeForWrite(TimerHandle, - sizeof(HANDLE), - sizeof(ULONG)); - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - - if(!NT_SUCCESS(Status)) - { - return Status; - } - } - - Status = ObOpenObjectByName(ObjectAttributes, - ExTimerType, - NULL, - PreviousMode, - DesiredAccess, - NULL, - &hTimer); - if(NT_SUCCESS(Status)) - { - _SEH_TRY - { - *TimerHandle = hTimer; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - } + if(!NT_SUCCESS(Status)) { + return Status; + } + } + + /* Create the Object */ + Status = ObCreateObject(PreviousMode, + ExTimerType, + ObjectAttributes, + PreviousMode, + NULL, + sizeof(ETIMER), + 0, + 0, + (PVOID*)&Timer); - return Status; + /* Check for Success */ + if(NT_SUCCESS(Status)) { + + /* Initialize the Kernel Timer */ + DPRINT("Initializing Timer: %x\n", Timer); + KeInitializeTimerEx(&Timer->KeTimer, TimerType); + + /* Initialize the Timer Lock */ + KeInitializeSpinLock(&Timer->Lock); + + /* Initialize the DPC */ + KeInitializeDpc(&Timer->TimerDpc, ExpTimerDpcRoutine, Timer); + + /* Set Initial State */ + Timer->ApcAssociated = FALSE; + InitializeListHead(&Timer->WakeTimerListEntry); + Timer->WakeTimer = FALSE; + + /* Insert the Timer */ + Status = ObInsertObject((PVOID)Timer, + NULL, + DesiredAccess, + 0, + NULL, + &hTimer); + DPRINT("Timer Inserted\n"); + + + /* Make sure it's safe to write to the handle */ + _SEH_TRY { + *TimerHandle = hTimer; + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + } + + /* Return to Caller */ + return Status; } -NTSTATUS STDCALL +NTSTATUS +STDCALL +NtOpenTimer(OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes) +{ + HANDLE hTimer; + KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); + NTSTATUS Status = STATUS_SUCCESS; + + DPRINT("NtOpenTimer(TimerHandle: %x)\n", TimerHandle); + + /* Check Parameter Validity */ + if (PreviousMode != KernelMode) { + _SEH_TRY { + ProbeForWrite(TimerHandle, + sizeof(HANDLE), + sizeof(ULONG)); + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + + if(!NT_SUCCESS(Status)) { + return Status; + } + } + + /* Open the Timer */ + Status = ObOpenObjectByName(ObjectAttributes, + ExTimerType, + NULL, + PreviousMode, + DesiredAccess, + NULL, + &hTimer); + + /* Check for success */ + if(NT_SUCCESS(Status)) { + + /* Make sure it's safe to write to the handle */ + _SEH_TRY { + *TimerHandle = hTimer; + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + } + + /* Return to Caller */ + return Status; +} + + +NTSTATUS +STDCALL NtQueryTimer(IN HANDLE TimerHandle, - IN TIMER_INFORMATION_CLASS TimerInformationClass, - OUT PVOID TimerInformation, - IN ULONG TimerInformationLength, - OUT PULONG ReturnLength OPTIONAL) + IN TIMER_INFORMATION_CLASS TimerInformationClass, + OUT PVOID TimerInformation, + IN ULONG TimerInformationLength, + OUT PULONG ReturnLength OPTIONAL) { - PNTTIMER Timer; - KPROCESSOR_MODE PreviousMode; - NTSTATUS Status = STATUS_SUCCESS; + PETIMER Timer; + KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); + NTSTATUS Status = STATUS_SUCCESS; + PTIMER_BASIC_INFORMATION BasicInfo = (PTIMER_BASIC_INFORMATION)TimerInformation; - PreviousMode = ExGetPreviousMode(); + DPRINT("NtQueryTimer(TimerHandle: %x, Class: %d)\n", TimerHandle, TimerInformationClass); + + /* Check Validity */ + DefaultQueryInfoBufferCheck(TimerInformationClass, + ExTimerInfoClass, + TimerInformation, + TimerInformationLength, + ReturnLength, + PreviousMode, + &Status); + if(!NT_SUCCESS(Status)) { + + DPRINT1("NtQueryTimer() failed, Status: 0x%x\n", Status); + return Status; + } - DefaultQueryInfoBufferCheck(TimerInformationClass, - ExTimerInfoClass, - TimerInformation, - TimerInformationLength, - ReturnLength, - PreviousMode, - &Status); - if(!NT_SUCCESS(Status)) - { - DPRINT1("NtQueryTimer() failed, Status: 0x%x\n", Status); - return Status; - } + /* Get the Timer Object */ + Status = ObReferenceObjectByHandle(TimerHandle, + TIMER_QUERY_STATE, + ExTimerType, + PreviousMode, + (PVOID*)&Timer, + NULL); + + /* Check for Success */ + if(NT_SUCCESS(Status)) { + + /* Return the Basic Information */ + _SEH_TRY { + + /* FIXME: Interrupt correction based on Interrupt Time */ + DPRINT("Returning Information for Timer: %x. Time Remaining: %d\n", Timer, Timer->KeTimer.DueTime.QuadPart); + BasicInfo->TimeRemaining.QuadPart = Timer->KeTimer.DueTime.QuadPart; + BasicInfo->SignalState = KeReadStateTimer(&Timer->KeTimer); + ObDereferenceObject(Timer); - Status = ObReferenceObjectByHandle(TimerHandle, - TIMER_QUERY_STATE, - ExTimerType, - PreviousMode, - (PVOID*)&Timer, - NULL); - if(NT_SUCCESS(Status)) - { - switch(TimerInformationClass) - { - case TimerBasicInformation: - { - PTIMER_BASIC_INFORMATION BasicInfo = (PTIMER_BASIC_INFORMATION)TimerInformation; - - _SEH_TRY - { - /* FIXME - interrupt correction */ - BasicInfo->TimeRemaining.QuadPart = Timer->Timer.DueTime.QuadPart; - BasicInfo->SignalState = (BOOLEAN)Timer->Timer.Header.SignalState; - - if(ReturnLength != NULL) - { - *ReturnLength = sizeof(TIMER_BASIC_INFORMATION); - } - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - break; - } - - default: - Status = STATUS_NOT_IMPLEMENTED; - break; - } - - ObDereferenceObject(Timer); - } - - return Status; + if(ReturnLength != NULL) { + *ReturnLength = sizeof(TIMER_BASIC_INFORMATION); + } + + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + } + + /* Return Status */ + return Status; } - -NTSTATUS STDCALL +NTSTATUS +STDCALL NtSetTimer(IN HANDLE TimerHandle, - IN PLARGE_INTEGER DueTime, - IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL, - IN PVOID TimerContext OPTIONAL, - IN BOOLEAN ResumeTimer, - IN LONG Period OPTIONAL, - OUT PBOOLEAN PreviousState OPTIONAL) + IN PLARGE_INTEGER DueTime, + IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL, + IN PVOID TimerContext OPTIONAL, + IN BOOLEAN WakeTimer, + IN LONG Period OPTIONAL, + OUT PBOOLEAN PreviousState OPTIONAL) { - PNTTIMER Timer; - BOOLEAN Result; - BOOLEAN State; - LARGE_INTEGER TimerDueTime; - KPROCESSOR_MODE PreviousMode; - NTSTATUS Status = STATUS_SUCCESS; + PETIMER Timer; + KIRQL OldIrql; + BOOLEAN KillTimer; + BOOLEAN State; + KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); + PETHREAD CurrentThread = PsGetCurrentThread(); + NTSTATUS Status = STATUS_SUCCESS; + LARGE_INTEGER TimerDueTime; + PETHREAD TimerThread; - DPRINT("NtSetTimer()\n"); + DPRINT("NtSetTimer(TimerHandle: %x, DueTime: %d, Apc: %x, Period: %d)\n", TimerHandle, DueTime->QuadPart, TimerApcRoutine, Period); - PreviousMode = ExGetPreviousMode(); + /* Check Parameter Validity */ + if (PreviousMode != KernelMode) { + _SEH_TRY { + ProbeForRead(DueTime, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + TimerDueTime = *DueTime; + + if(PreviousState != NULL) { + ProbeForWrite(PreviousState, + sizeof(BOOLEAN), + sizeof(BOOLEAN)); + } + + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + + if(!NT_SUCCESS(Status)) { + return Status; + } + } + + /* Get the Timer Object */ + Status = ObReferenceObjectByHandle(TimerHandle, + TIMER_ALL_ACCESS, + ExTimerType, + PreviousMode, + (PVOID*)&Timer, + NULL); + + /* Check status */ + if (NT_SUCCESS(Status)) { + + /* Lock the Timer */ + DPRINT("Timer Referencced: %x\n", Timer); + KeAcquireSpinLock(&Timer->Lock, &OldIrql); + + /* Cancel Running Timer */ + if (Timer->ApcAssociated) { + + /* + * First, remove it from the Thread's Active List + * Get the Thread. + */ + TimerThread = CONTAINING_RECORD(Timer->TimerApc.Thread, ETHREAD, Tcb); + DPRINT("Thread already running. Removing from Thread: %x\n", TimerThread); + + /* Lock its active list */ + KeAcquireSpinLockAtDpcLevel(&TimerThread->ActiveTimerListLock); + + /* Remove it */ + RemoveEntryList(&TimerThread->ActiveTimerListHead); + + /* Unlock the list */ + KeReleaseSpinLockFromDpcLevel(&TimerThread->ActiveTimerListLock); + + /* Cancel the Timer */ + KeCancelTimer(&Timer->KeTimer); + KeRemoveQueueDpc(&Timer->TimerDpc); + KeRemoveQueueApc(&Timer->TimerApc); + Timer->ApcAssociated = FALSE; + KillTimer = TRUE; + + } else { + + /* If timer was disabled, we still need to cancel it */ + DPRINT("No APCs. Simply cancelling\n"); + KeCancelTimer(&Timer->KeTimer); + } + + /* Read the State */ + State = KeReadStateTimer(&Timer->KeTimer); - if(PreviousMode != KernelMode) - { - _SEH_TRY - { - ProbeForRead(DueTime, - sizeof(LARGE_INTEGER), - sizeof(ULONG)); - TimerDueTime = *DueTime; + /* Handle Wake Timers */ + DPRINT("Doing Wake Semantics\n"); + KeAcquireSpinLockAtDpcLevel(&ExpWakeListLock); + if (WakeTimer) { + + /* Insert it into the list */ + InsertTailList(&ExpWakeList, &Timer->WakeTimerListEntry); + + } else { + + /* Remove it from the list */ + RemoveEntryList(&Timer->WakeTimerListEntry); + Timer->WakeTimerListEntry.Flink = NULL; + } + KeReleaseSpinLockFromDpcLevel(&ExpWakeListLock); + + /* Set up the APC Routine if specified */ + if (TimerApcRoutine) { + + /* Initialize the APC */ + DPRINT("Initializing APC: %x\n", Timer->TimerApc); + KeInitializeApc(&Timer->TimerApc, + &CurrentThread->Tcb, + CurrentApcEnvironment, + &ExpTimerApcKernelRoutine, + (PKRUNDOWN_ROUTINE)NULL, + (PKNORMAL_ROUTINE)TimerApcRoutine, + PreviousMode, + TimerContext); + + /* Lock the Thread's Active List and Insert */ + KeAcquireSpinLockAtDpcLevel(&CurrentThread->ActiveTimerListLock); + InsertTailList(&CurrentThread->ActiveTimerListHead, + &Timer->ActiveTimerListEntry); + KeReleaseSpinLockFromDpcLevel(&CurrentThread->ActiveTimerListLock); + + } - if(PreviousState != NULL) - { - ProbeForWrite(PreviousState, - sizeof(BOOLEAN), - sizeof(BOOLEAN)); - } - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; + /* Enable and Set the Timer */ + DPRINT("Setting Kernel Timer\n"); + KeSetTimerEx(&Timer->KeTimer, + TimerDueTime, + Period, + TimerApcRoutine ? &Timer->TimerDpc : 0); + Timer->ApcAssociated = TimerApcRoutine ? TRUE : FALSE; + + /* Unlock the Timer */ + KeReleaseSpinLock(&Timer->Lock, OldIrql); - if(!NT_SUCCESS(Status)) - { - return Status; - } - } + /* Dereference the Object */ + ObDereferenceObject(Timer); + + /* Unlock the Timer */ + KeReleaseSpinLock(&Timer->Lock, OldIrql); + + /* Dereference if it was previously enabled */ + if (!TimerApcRoutine) ObDereferenceObject(Timer); + if (KillTimer) ObDereferenceObject(Timer); + DPRINT("Finished Setting the Timer\n"); - Status = ObReferenceObjectByHandle(TimerHandle, - TIMER_ALL_ACCESS, - ExTimerType, - PreviousMode, - (PVOID*)&Timer, - NULL); - if (!NT_SUCCESS(Status)) - { - return Status; - } + /* Make sure it's safe to write to the handle */ + if(PreviousState != NULL) { + _SEH_TRY { + *PreviousState = State; + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + } + } - State = KeReadStateTimer(&Timer->Timer); - - if (Timer->Running == TRUE) - { - /* cancel running timer */ - const KIRQL OldIrql = KeRaiseIrqlToDpcLevel(); - KeCancelTimer(&Timer->Timer); - KeRemoveQueueDpc(&Timer->Dpc); - KeRemoveQueueApc(&Timer->Apc); - Timer->Running = FALSE; - KeLowerIrql(OldIrql); - } - - if (TimerApcRoutine) - { - KeInitializeApc(&Timer->Apc, - KeGetCurrentThread(), - OriginalApcEnvironment, - &ExpTimerApcKernelRoutine, - (PKRUNDOWN_ROUTINE)NULL, - (PKNORMAL_ROUTINE)TimerApcRoutine, - PreviousMode, - TimerContext); - } - - Result = KeSetTimerEx(&Timer->Timer, - TimerDueTime, - Period, - TimerApcRoutine ? &Timer->Dpc : 0 ); - if (Result) - { - ObDereferenceObject(Timer); - DPRINT1( "KeSetTimer says the timer was already running, this shouldn't be\n" ); - return STATUS_UNSUCCESSFUL; - } - - Timer->Running = TRUE; - - ObDereferenceObject(Timer); - - if (PreviousState != NULL) - { - _SEH_TRY - { - *PreviousState = State; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - } - - return Status; + /* Return to Caller */ + return Status; } /* EOF */ diff --git a/reactos/ntoskrnl/include/internal/ke.h b/reactos/ntoskrnl/include/internal/ke.h index 14ba678b188..e9e78f6d9ef 100644 --- a/reactos/ntoskrnl/include/internal/ke.h +++ b/reactos/ntoskrnl/include/internal/ke.h @@ -142,6 +142,8 @@ VOID STDCALL KiDeleteProfile(PVOID ObjectBody); VOID STDCALL KeUpdateSystemTime(PKTRAP_FRAME TrapFrame, KIRQL Irql); VOID STDCALL KeUpdateRunTime(PKTRAP_FRAME TrapFrame, KIRQL Irql); +VOID STDCALL KiExpireTimers(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2); + KIRQL KeAcquireDispatcherDatabaseLock(VOID); VOID KeAcquireDispatcherDatabaseLockAtDpcLevel(VOID); VOID KeReleaseDispatcherDatabaseLock(KIRQL Irql); @@ -193,7 +195,7 @@ VOID KeInitTimer(VOID); VOID KeInitDpc(struct _KPCR* Pcr); VOID KeInitDispatcher(VOID); VOID KeInitializeDispatcher(VOID); -VOID KeInitializeTimerImpl(VOID); +VOID KiInitializeSystemClock(VOID); VOID KeInitializeBugCheck(VOID); VOID Phase1Initialization(PVOID Context); diff --git a/reactos/ntoskrnl/ke/clock.c b/reactos/ntoskrnl/ke/clock.c new file mode 100644 index 00000000000..e9424cbed4f --- /dev/null +++ b/reactos/ntoskrnl/ke/clock.c @@ -0,0 +1,410 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: ntoskrnl/ke/clock.c + * PURPOSE: Handle System Clock + * + * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) - Created + * David Welch & Phillip Susi - Implementation (?) + */ + + /* NOTES ******************************************************************/ +/* + * System time units are 100-nanosecond intervals + */ + +/* INCLUDES ***************************************************************/ + +#include + +#define NDEBUG +#include + +/* GLOBALS ****************************************************************/ + +/* + * Current time + */ +#if defined(__GNUC__) +LARGE_INTEGER SystemBootTime = (LARGE_INTEGER)0LL; +#else +LARGE_INTEGER SystemBootTime = { 0 }; +#endif + +CHAR KiTimerSystemAuditing = 0; +static KDPC KiExpireTimerDpc; +static BOOLEAN KiClockSetupComplete = FALSE; + +/* + * Number of timer interrupts since initialisation + */ +volatile ULONGLONG KeTickCount = 0; +volatile ULONG KiRawTicks = 0; + +extern LIST_ENTRY KiTimerListHead; + +/* + * The increment in the system clock every timer tick (in system time units) + * + * = (1/18.2)*10^9 + * + * RJJ was 54945055 + */ +#define CLOCK_INCREMENT (100000) + +#ifdef __GNUC__ +ULONG EXPORTED KeMaximumIncrement = 100000; +ULONG EXPORTED KeMinimumIncrement = 100000; +#else +/* Microsoft-style declarations */ +EXPORTED ULONG KeMaximumIncrement = 100000; +EXPORTED ULONG KeMinimumIncrement = 100000; +#endif + +#define MICROSECONDS_PER_TICK (10000) +#define TICKS_TO_CALIBRATE (1) +#define CALIBRATE_PERIOD (MICROSECONDS_PER_TICK * TICKS_TO_CALIBRATE) + +/* FUNCTIONS **************************************************************/ + +/* + * FUNCTION: Initializes timer irq handling + * NOTE: This is only called once from main() + */ +VOID +INIT_FUNCTION +KiInitializeSystemClock(VOID) +{ + TIME_FIELDS TimeFields; + + DPRINT1("KiInitializeSystemClock()\n"); + InitializeListHead(&KiTimerListHead); + KeInitializeDpc(&KiExpireTimerDpc, (PKDEFERRED_ROUTINE)KiExpireTimers, 0); + + /* Calculate the starting time for the system clock */ + HalQueryRealTimeClock(&TimeFields); + RtlTimeFieldsToTime(&TimeFields, &SystemBootTime); + + /* Set up the Used Shared Data */ + SharedUserData->TickCountLowDeprecated = 0; + SharedUserData->TickCountMultiplier = 167783691; // 2^24 * 1193182 / 119310 + SharedUserData->InterruptTime.High2Time = 0; + SharedUserData->InterruptTime.LowPart = 0; + SharedUserData->InterruptTime.High1Time = 0; + SharedUserData->SystemTime.High2Time = SystemBootTime.u.HighPart; + SharedUserData->SystemTime.LowPart = SystemBootTime.u.LowPart; + SharedUserData->SystemTime.High1Time = SystemBootTime.u.HighPart; + + KiClockSetupComplete = TRUE; + DPRINT1("Finished KiInitializeSystemClock()\n"); +} + +VOID +KiSetSystemTime(PLARGE_INTEGER NewSystemTime) +{ + LARGE_INTEGER OldSystemTime; + LARGE_INTEGER DeltaTime; + KIRQL OldIrql; + + ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL); + + OldIrql = KeAcquireDispatcherDatabaseLock(); + + do + { + OldSystemTime.u.HighPart = SharedUserData->SystemTime.High1Time; + OldSystemTime.u.LowPart = SharedUserData->SystemTime.LowPart; + } + while (OldSystemTime.u.HighPart != SharedUserData->SystemTime.High2Time); + + /* Set the new system time */ + SharedUserData->SystemTime.LowPart = NewSystemTime->u.LowPart; + SharedUserData->SystemTime.High1Time = NewSystemTime->u.HighPart; + SharedUserData->SystemTime.High2Time = NewSystemTime->u.HighPart; + + /* Calculate the difference between the new and the old time */ + DeltaTime.QuadPart = NewSystemTime->QuadPart - OldSystemTime.QuadPart; + + /* Update system boot time */ + SystemBootTime.QuadPart += DeltaTime.QuadPart; + + /* Update absolute timers */ + DPRINT1("FIXME: TIMER UPDATE NOT DONE!!!\n"); + + KeReleaseDispatcherDatabaseLock(OldIrql); + + /* + * NOTE: Expired timers will be processed at the next clock tick! + */ +} + +/* + * @implemented + */ +ULONG +STDCALL +KeQueryTimeIncrement(VOID) +/* + * FUNCTION: Gets the increment (in 100-nanosecond units) that is added to + * the system clock every time the clock interrupts + * RETURNS: The increment + */ +{ + return KeMaximumIncrement; +} + +/* + * @implemented + */ +VOID +STDCALL +KeQueryTickCount(PLARGE_INTEGER TickCount) +/* + * FUNCTION: Returns the number of ticks since the system was booted + * ARGUMENTS: + * TickCount (OUT) = Points to storage for the number of ticks + */ +{ + TickCount->QuadPart = KeTickCount; +} + +/* + * FUNCTION: Gets the current system time + * ARGUMENTS: + * CurrentTime (OUT) = The routine stores the current time here + * NOTE: The time is the number of 100-nanosecond intervals since the + * 1st of January, 1601. + * + * @implemented + */ +VOID +STDCALL +KeQuerySystemTime(PLARGE_INTEGER CurrentTime) +{ + do { + CurrentTime->u.HighPart = SharedUserData->SystemTime.High1Time; + CurrentTime->u.LowPart = SharedUserData->SystemTime.LowPart; + } while (CurrentTime->u.HighPart != SharedUserData->SystemTime.High2Time); +} + +ULONGLONG +STDCALL +KeQueryInterruptTime(VOID) +{ + LARGE_INTEGER CurrentTime; + + do { + CurrentTime.u.HighPart = SharedUserData->InterruptTime.High1Time; + CurrentTime.u.LowPart = SharedUserData->InterruptTime.LowPart; + } while (CurrentTime.u.HighPart != SharedUserData->InterruptTime.High2Time); + + return CurrentTime.QuadPart; +} + +/* + * @implemented + */ +VOID +STDCALL +KeSetTimeIncrement( + IN ULONG MaxIncrement, + IN ULONG MinIncrement) +{ + /* Set some Internal Variables */ + /* FIXME: We use a harcoded CLOCK_INCREMENT. That *must* be changed */ + KeMaximumIncrement = MaxIncrement; + KeMinimumIncrement = MinIncrement; +} + +/* + * @unimplemented + */ +VOID +FASTCALL +KeSetTimeUpdateNotifyRoutine( + IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine + ) +{ + UNIMPLEMENTED; +} + +/* + * NOTE: On Windows this function takes exactly one parameter and EBP is + * guaranteed to point to KTRAP_FRAME. The function is used only + * by HAL, so there's no point in keeping that prototype. + * + * @implemented + */ +VOID +STDCALL +KeUpdateRunTime( + IN PKTRAP_FRAME TrapFrame, + IN KIRQL Irql + ) +{ + PKPCR Pcr; + PKTHREAD CurrentThread; + PKPROCESS CurrentProcess; +#if 0 + ULONG DpcLastCount; +#endif + + Pcr = KeGetCurrentKPCR(); + + /* Make sure we don't go further if we're in early boot phase. */ + if (Pcr == NULL || Pcr->PrcbData.CurrentThread == NULL) + return; + + DPRINT("KernelTime %u, UserTime %u \n", Pcr->PrcbData.KernelTime, Pcr->PrcbData.UserTime); + + CurrentThread = Pcr->PrcbData.CurrentThread; + CurrentProcess = CurrentThread->ApcState.Process; + + /* + * Cs bit 0 is always set for user mode if we are in protected mode. + * V86 mode is counted as user time. + */ + if (TrapFrame->Cs & 0x1 || + TrapFrame->Eflags & X86_EFLAGS_VM) + { + InterlockedIncrementUL(&CurrentThread->UserTime); + InterlockedIncrementUL(&CurrentProcess->UserTime); + Pcr->PrcbData.UserTime++; + } + else + { + if (Irql > DISPATCH_LEVEL) + { + Pcr->PrcbData.InterruptTime++; + } + else if (Irql == DISPATCH_LEVEL) + { + Pcr->PrcbData.DpcTime++; + } + else + { + InterlockedIncrementUL(&CurrentThread->KernelTime); + InterlockedIncrementUL(&CurrentProcess->KernelTime); + Pcr->PrcbData.KernelTime++; + } + } + +#if 0 + DpcLastCount = Pcr->PrcbData.DpcLastCount; + Pcr->PrcbData.DpcLastCount = Pcr->PrcbData.DpcCount; + Pcr->PrcbData.DpcRequestRate = ((Pcr->PrcbData.DpcCount - DpcLastCount) + + Pcr->PrcbData.DpcRequestRate) / 2; +#endif + + if (Pcr->PrcbData.DpcData[0].DpcQueueDepth > 0 && + Pcr->PrcbData.DpcRoutineActive == FALSE && + Pcr->PrcbData.DpcInterruptRequested == FALSE) + { + HalRequestSoftwareInterrupt(DISPATCH_LEVEL); + } + + /* FIXME: Do DPC rate adjustments */ + + /* + * If we're at end of quantum request software interrupt. The rest + * is handled in KiDispatchInterrupt. + */ + if ((CurrentThread->Quantum -= 3) <= 0) + { + Pcr->PrcbData.QuantumEnd = TRUE; + HalRequestSoftwareInterrupt(DISPATCH_LEVEL); + } +} + + +/* + * NOTE: On Windows this function takes exactly zero parameters and EBP is + * guaranteed to point to KTRAP_FRAME. Also [esp+0] contains an IRQL. + * The function is used only by HAL, so there's no point in keeping + * that prototype. + * + * @implemented + */ +VOID +STDCALL +KeUpdateSystemTime( + IN PKTRAP_FRAME TrapFrame, + IN KIRQL Irql + ) +/* + * FUNCTION: Handles a timer interrupt + */ +{ + LARGE_INTEGER Time; + + ASSERT(KeGetCurrentIrql() == PROFILE_LEVEL); + + KiRawTicks++; + + if (KiClockSetupComplete == FALSE) return; + + /* + * Increment the number of timers ticks + */ + KeTickCount++; + SharedUserData->TickCountLowDeprecated++; + + Time.u.LowPart = SharedUserData->InterruptTime.LowPart; + Time.u.HighPart = SharedUserData->InterruptTime.High1Time; + Time.QuadPart += CLOCK_INCREMENT; + SharedUserData->InterruptTime.High2Time = Time.u.HighPart; + SharedUserData->InterruptTime.LowPart = Time.u.LowPart; + SharedUserData->InterruptTime.High1Time = Time.u.HighPart; + + Time.u.LowPart = SharedUserData->SystemTime.LowPart; + Time.u.HighPart = SharedUserData->SystemTime.High1Time; + Time.QuadPart += CLOCK_INCREMENT; + SharedUserData->SystemTime.High2Time = Time.u.HighPart; + SharedUserData->SystemTime.LowPart = Time.u.LowPart; + SharedUserData->SystemTime.High1Time = Time.u.HighPart; + + /* FIXME: Here we should check for remote debugger break-ins */ + + /* Update process and thread times */ + KeUpdateRunTime(TrapFrame, Irql); + + /* + * Queue a DPC that will expire timers + */ + KeInsertQueueDpc(&KiExpireTimerDpc, (PVOID)TrapFrame->Eip, 0); +} + +/* + * @implemented + */ +ULONG +STDCALL +NtGetTickCount(VOID) +{ + LARGE_INTEGER TickCount; + + KeQueryTickCount(&TickCount); + return TickCount.u.LowPart; +} + +NTSTATUS +STDCALL +NtQueryTimerResolution(OUT PULONG MinimumResolution, + OUT PULONG MaximumResolution, + OUT PULONG ActualResolution) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +STDCALL +NtSetTimerResolution(IN ULONG DesiredResolution, + IN BOOLEAN SetResolution, + OUT PULONG CurrentResolution) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +/* EOF */ diff --git a/reactos/ntoskrnl/ke/i386/kernel.c b/reactos/ntoskrnl/ke/i386/kernel.c index a1ffb830baf..37852a5f0e7 100644 --- a/reactos/ntoskrnl/ke/i386/kernel.c +++ b/reactos/ntoskrnl/ke/i386/kernel.c @@ -341,7 +341,7 @@ KeInit2(VOID) KeInitializeBugCheck(); KeInitializeDispatcher(); - KeInitializeTimerImpl(); + KiInitializeSystemClock(); if (Pcr->PrcbData.FeatureBits & X86_FEATURE_PAE) { diff --git a/reactos/ntoskrnl/ke/kthread.c b/reactos/ntoskrnl/ke/kthread.c index 5a1eaa2b8ab..40b352fb11a 100644 --- a/reactos/ntoskrnl/ke/kthread.c +++ b/reactos/ntoskrnl/ke/kthread.c @@ -72,6 +72,23 @@ KeQueryPriorityThread ( return Thread->Priority; } +/* + * @implemented + */ +ULONG +STDCALL +KeQueryRuntimeThread( + IN PKTHREAD Thread, + OUT PULONG UserTime + ) +{ + /* Return the User Time */ + *UserTime = Thread->UserTime; + + /* Return the Kernel Time */ + return Thread->KernelTime; +} + NTSTATUS KeReleaseThread(PKTHREAD Thread) /* @@ -405,3 +422,45 @@ KeTerminateThread(IN KPRIORITY Increment) /* Call our own internal routine */ PsTerminateCurrentThread(0); } + + +NTSTATUS +STDCALL +NtDelayExecution(IN BOOLEAN Alertable, + IN PLARGE_INTEGER DelayInterval) +{ + KPROCESSOR_MODE PreviousMode; + LARGE_INTEGER SafeInterval; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + NTSTATUS Status = STATUS_SUCCESS; + + _SEH_TRY + { + ProbeForRead(DelayInterval, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + /* make a copy on the kernel stack and let DelayInterval point to it so + we don't need to wrap KeDelayExecutionThread in SEH! */ + SafeInterval = *DelayInterval; + DelayInterval = &SafeInterval; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } + + return KeDelayExecutionThread(PreviousMode, + Alertable, + DelayInterval); +} diff --git a/reactos/ntoskrnl/ke/profile.c b/reactos/ntoskrnl/ke/profile.c index 08b9bb9d968..454e15c3afc 100644 --- a/reactos/ntoskrnl/ke/profile.c +++ b/reactos/ntoskrnl/ke/profile.c @@ -284,3 +284,59 @@ KeSetProfileIrql( { UNIMPLEMENTED; } + +NTSTATUS STDCALL +NtQueryPerformanceCounter(OUT PLARGE_INTEGER PerformanceCounter, + OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL) +{ + LARGE_INTEGER PerfCounter; + LARGE_INTEGER PerfFrequency; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForWrite(PerformanceCounter, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + if(PerformanceFrequency != NULL) + { + ProbeForWrite(PerformanceFrequency, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + } + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } + + PerfCounter = KeQueryPerformanceCounter(&PerfFrequency); + + _SEH_TRY + { + *PerformanceCounter = PerfCounter; + if(PerformanceFrequency != NULL) + { + *PerformanceFrequency = PerfFrequency; + } + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + return Status; +} diff --git a/reactos/ntoskrnl/ke/timer.c b/reactos/ntoskrnl/ke/timer.c index 46ec4198975..9ef0be57a8f 100644 --- a/reactos/ntoskrnl/ke/timer.c +++ b/reactos/ntoskrnl/ke/timer.c @@ -1,17 +1,11 @@ -/* $Id$ - * +/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/ke/timer.c - * PURPOSE: Handle timers + * PURPOSE: Handle Kernel Timers (Kernel-part of Executive Timers) * - * PROGRAMMERS: David Welch (welch@mcmail.com) - * Phillip Susi - */ - -/* NOTES ******************************************************************/ -/* - * System time units are 100-nanosecond intervals + * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) - Reimplemented some parts, fixed many bugs. + * David Welch (welch@mcmail.com) & Phillip Susi - Original Implementation. */ /* INCLUDES ***************************************************************/ @@ -21,451 +15,79 @@ #define NDEBUG #include - /* GLOBALS ****************************************************************/ -/* - * Current time - */ -#if defined(__GNUC__) -LARGE_INTEGER SystemBootTime = (LARGE_INTEGER)0LL; -#else -LARGE_INTEGER SystemBootTime = { 0 }; -#endif +LIST_ENTRY KiTimerListHead; -CHAR KiTimerSystemAuditing = 0; - -/* - * Number of timer interrupts since initialisation - */ -volatile ULONGLONG KeTickCount = 0; -volatile ULONG KiRawTicks = 0; - -/* - * The increment in the system clock every timer tick (in system time units) - * - * = (1/18.2)*10^9 - * - * RJJ was 54945055 - */ -#define CLOCK_INCREMENT (100000) - -#ifdef __GNUC__ -ULONG EXPORTED KeMaximumIncrement = 100000; -ULONG EXPORTED KeMinimumIncrement = 100000; -#else -/* Microsoft-style declarations */ -EXPORTED ULONG KeMaximumIncrement = 100000; -EXPORTED ULONG KeMinimumIncrement = 100000; -#endif - - - -/* - * PURPOSE: List of timers - */ -static LIST_ENTRY AbsoluteTimerListHead; -static LIST_ENTRY RelativeTimerListHead; -static KSPIN_LOCK TimerListLock; -static KDPC ExpireTimerDpc; - -/* must raise IRQL to PROFILE_LEVEL and grab spin lock there, to sync with ISR */ - -#define MICROSECONDS_PER_TICK (10000) -#define TICKS_TO_CALIBRATE (1) -#define CALIBRATE_PERIOD (MICROSECONDS_PER_TICK * TICKS_TO_CALIBRATE) #define SYSTEM_TIME_UNITS_PER_MSEC (10000) -static BOOLEAN TimerInitDone = FALSE; - /* FUNCTIONS **************************************************************/ - -NTSTATUS STDCALL -NtQueryTimerResolution(OUT PULONG MinimumResolution, - OUT PULONG MaximumResolution, - OUT PULONG ActualResolution) -{ - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; -} - - -NTSTATUS STDCALL -NtSetTimerResolution(IN ULONG DesiredResolution, - IN BOOLEAN SetResolution, - OUT PULONG CurrentResolution) -{ - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; -} - - -NTSTATUS STDCALL -NtQueryPerformanceCounter(OUT PLARGE_INTEGER PerformanceCounter, - OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL) -{ - LARGE_INTEGER PerfCounter; - LARGE_INTEGER PerfFrequency; - KPROCESSOR_MODE PreviousMode; - NTSTATUS Status = STATUS_SUCCESS; - - PreviousMode = ExGetPreviousMode(); - - if(PreviousMode != KernelMode) - { - _SEH_TRY - { - ProbeForWrite(PerformanceCounter, - sizeof(LARGE_INTEGER), - sizeof(ULONG)); - if(PerformanceFrequency != NULL) - { - ProbeForWrite(PerformanceFrequency, - sizeof(LARGE_INTEGER), - sizeof(ULONG)); - } - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - - if(!NT_SUCCESS(Status)) - { - return Status; - } - } - - PerfCounter = KeQueryPerformanceCounter(&PerfFrequency); - - _SEH_TRY - { - *PerformanceCounter = PerfCounter; - if(PerformanceFrequency != NULL) - { - *PerformanceFrequency = PerfFrequency; - } - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - - return Status; -} - - -NTSTATUS STDCALL -NtDelayExecution(IN BOOLEAN Alertable, - IN PLARGE_INTEGER DelayInterval) -{ - KPROCESSOR_MODE PreviousMode; - LARGE_INTEGER SafeInterval; - - PreviousMode = ExGetPreviousMode(); - - if(PreviousMode != KernelMode) - { - NTSTATUS Status = STATUS_SUCCESS; - - _SEH_TRY - { - ProbeForRead(DelayInterval, - sizeof(LARGE_INTEGER), - sizeof(ULONG)); - /* make a copy on the kernel stack and let DelayInterval point to it so - we don't need to wrap KeDelayExecutionThread in SEH! */ - SafeInterval = *DelayInterval; - DelayInterval = &SafeInterval; - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END; - - if(!NT_SUCCESS(Status)) - { - return Status; - } - } - - return KeDelayExecutionThread(PreviousMode, - Alertable, - DelayInterval); -} - +BOOLEAN STDCALL KiInsertTimer(PKTIMER Timer, LARGE_INTEGER DueTime); +VOID STDCALL KiHandleExpiredTimer(PKTIMER Timer); /* * @implemented - */ -NTSTATUS STDCALL -KeDelayExecutionThread (KPROCESSOR_MODE WaitMode, - BOOLEAN Alertable, - PLARGE_INTEGER Interval) -/* - * FUNCTION: Puts the current thread into an alertable or nonalertable - * wait state for a given internal - * ARGUMENTS: - * WaitMode = Processor mode in which the caller is waiting - * Altertable = Specifies if the wait is alertable - * Interval = Specifies the interval to wait - * RETURNS: Status - */ -{ - PKTHREAD Thread = KeGetCurrentThread(); - - KeSetTimer(&Thread->Timer, *Interval, NULL); - return (KeWaitForSingleObject(&Thread->Timer, - (WaitMode == KernelMode) ? Executive : UserRequest, /* TMN: Was unconditionally Executive */ - WaitMode, /* TMN: Was UserMode */ - Alertable, - NULL)); -} - - -/* - * @implemented - */ -ULONG STDCALL -KeQueryTimeIncrement(VOID) -/* - * FUNCTION: Gets the increment (in 100-nanosecond units) that is added to - * the system clock every time the clock interrupts - * RETURNS: The increment - */ -{ - return(CLOCK_INCREMENT); -} - - -/* - * FUNCTION: Gets the current system time - * ARGUMENTS: - * CurrentTime (OUT) = The routine stores the current time here - * NOTE: The time is the number of 100-nanosecond intervals since the - * 1st of January, 1601. * - * @implemented - */ -VOID STDCALL -KeQuerySystemTime(PLARGE_INTEGER CurrentTime) -{ - do - { - CurrentTime->u.HighPart = SharedUserData->SystemTime.High1Time; - CurrentTime->u.LowPart = SharedUserData->SystemTime.LowPart; - } - while (CurrentTime->u.HighPart != SharedUserData->SystemTime.High2Time); -} - -ULONGLONG STDCALL -KeQueryInterruptTime(VOID) -{ - LARGE_INTEGER CurrentTime; - - do - { - CurrentTime.u.HighPart = SharedUserData->InterruptTime.High1Time; - CurrentTime.u.LowPart = SharedUserData->InterruptTime.LowPart; - } - while (CurrentTime.u.HighPart != SharedUserData->InterruptTime.High2Time); - - return CurrentTime.QuadPart; -} - -/* - * @implemented - */ -ULONG -STDCALL -NtGetTickCount(VOID) -{ - LARGE_INTEGER TickCount; - KeQueryTickCount(&TickCount); - return TickCount.u.LowPart; -} - -/* - * @implemented - */ -BOOLEAN STDCALL -KeSetTimer (PKTIMER Timer, - LARGE_INTEGER DueTime, - PKDPC Dpc) -/* - * FUNCTION: Sets the absolute or relative interval at which a timer object - * is to be set to the signaled state and optionally supplies a - * CustomTimerDpc to be executed when the timer expires. - * ARGUMENTS: - * Timer = Points to a previously initialized timer object - * DueTimer = If positive then absolute time to expire at - * If negative then the relative time to expire at - * Dpc = If non-NULL then a dpc to be called when the timer expires - * RETURNS: True if the timer was already in the system timer queue - * False otherwise - */ -{ - return(KeSetTimerEx(Timer, DueTime, 0, Dpc)); -} - -/* - * @implemented - */ -BOOLEAN STDCALL -KeSetTimerEx (PKTIMER Timer, - LARGE_INTEGER DueTime, - LONG Period, - PKDPC Dpc) -/* - * FUNCTION: Sets the absolute or relative interval at which a timer object - * is to be set to the signaled state and optionally supplies a - * CustomTimerDpc to be executed when the timer expires. - * ARGUMENTS: - * Timer = Points to a previously initialized timer object - * DueTimer = If positive then absolute time to expire at - * If negative then the relative time to expire at - * Dpc = If non-NULL then a dpc to be called when the timer expires - * RETURNS: True if the timer was already in the system timer queue - * False otherwise - */ -{ - KIRQL oldlvl; - LARGE_INTEGER Time; - BOOLEAN AlreadyInList; - - DPRINT("KeSetTimerEx(Timer %x), DueTime: \n",Timer); - - ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL); - - KeAcquireSpinLock(&TimerListLock, &oldlvl); - - Timer->Dpc = Dpc; - if (DueTime.QuadPart < 0) - { - Timer->Header.Absolute = 0; - Timer->DueTime.QuadPart = KeQueryInterruptTime() - DueTime.QuadPart; - } - else - { - KeQuerySystemTime(&Time); - Timer->Header.Absolute = 1; - if (DueTime.QuadPart >= Time.QuadPart) - { - Timer->DueTime.QuadPart = DueTime.QuadPart; - } - else - { - Timer->DueTime.QuadPart = Time.QuadPart; - } - } - Timer->Period = Period; - Timer->Header.SignalState = FALSE; - AlreadyInList = (Timer->TimerListEntry.Flink == NULL) ? FALSE : TRUE; - ASSERT((Timer->TimerListEntry.Flink == NULL && Timer->TimerListEntry.Blink == NULL) || - (Timer->TimerListEntry.Flink != NULL && Timer->TimerListEntry.Blink != NULL)); - if (AlreadyInList) - { - RemoveEntryList(&Timer->TimerListEntry); - } - if (Timer->Header.Absolute) - { - InsertAscendingList(&AbsoluteTimerListHead, - KTIMER, - TimerListEntry, - Timer, - DueTime.QuadPart); - - } - else - { - InsertAscendingList(&RelativeTimerListHead, - KTIMER, - TimerListEntry, - Timer, - DueTime.QuadPart); - - } - - KeReleaseSpinLock(&TimerListLock, oldlvl); - - return AlreadyInList; -} - -/* - * @implemented - */ -BOOLEAN STDCALL -KeCancelTimer (PKTIMER Timer) -/* * FUNCTION: Removes a timer from the system timer list * ARGUMENTS: * Timer = timer to cancel * RETURNS: True if the timer was running * False otherwise */ +BOOLEAN +STDCALL +KeCancelTimer(PKTIMER Timer) { - KIRQL oldlvl; + KIRQL OldIrql; + BOOLEAN Inserted = FALSE; - DPRINT("KeCancelTimer(Timer %x)\n",Timer); + DPRINT("KeCancelTimer(Timer %x)\n",Timer); - KeAcquireSpinLock(&TimerListLock, &oldlvl); + /* Lock the Database and Raise IRQL */ + OldIrql = KeAcquireDispatcherDatabaseLock(); - if (Timer->TimerListEntry.Flink == NULL) - { - KeReleaseSpinLock(&TimerListLock, oldlvl); - return(FALSE); - } - if (Timer->Header.Absolute) - { - ASSERT(&Timer->TimerListEntry != &AbsoluteTimerListHead); - } - else - { - ASSERT(&Timer->TimerListEntry != &RelativeTimerListHead); - } - ASSERT(Timer->TimerListEntry.Flink != &Timer->TimerListEntry); - RemoveEntryList(&Timer->TimerListEntry); - Timer->TimerListEntry.Flink = Timer->TimerListEntry.Blink = NULL; - KeReleaseSpinLock(&TimerListLock, oldlvl); + /* Check if it's inserted, and remove it if it is */ + if ((Inserted = Timer->Header.Inserted)) { + + /* Remove from list */ + DPRINT("Timer was inserted, removing\n"); + RemoveEntryList(&Timer->TimerListEntry); + Timer->Header.Inserted = FALSE; + + } else { + + DPRINT("Timer was not inserted\n"); + } - return(TRUE); + /* Release Dispatcher Lock */ + KeReleaseDispatcherDatabaseLock(OldIrql); + + /* Return the old state */ + DPRINT("Old State: %d\n", Inserted); + return(Inserted); } /* * @implemented - */ -BOOLEAN STDCALL -KeReadStateTimer (PKTIMER Timer) -{ - return (BOOLEAN)(Timer->Header.SignalState); -} - -/* - * @implemented - */ -VOID STDCALL -KeInitializeTimer (PKTIMER Timer) -/* + * * FUNCTION: Initalizes a kernel timer object * ARGUMENTS: * Timer = caller supplied storage for the timer * NOTE: This function initializes a notification timer */ +VOID +STDCALL +KeInitializeTimer (PKTIMER Timer) + { - KeInitializeTimerEx(Timer, NotificationTimer); + /* Call the New Function */ + KeInitializeTimerEx(Timer, NotificationTimer); } /* * @implemented - */ -VOID STDCALL -KeInitializeTimerEx (PKTIMER Timer, - TIMER_TYPE Type) -/* + * * FUNCTION: Initializes a kernel timer object * ARGUMENTS: * Timer = caller supplied storage for the timer @@ -475,443 +97,288 @@ KeInitializeTimerEx (PKTIMER Timer, * syncrhonization timer expires its state is set to signalled until a * single waiting thread is released and then the timer is reset. */ -{ - ULONG IType; - - if (Type == NotificationTimer) - { - IType = InternalNotificationTimer; - } - else if (Type == SynchronizationTimer) - { - IType = InternalSynchronizationTimer; - } - else - { - ASSERT(FALSE); - return; - } - - KeInitializeDispatcherHeader(&Timer->Header, - IType, - sizeof(KTIMER) / sizeof(ULONG), - FALSE); - Timer->TimerListEntry.Flink = Timer->TimerListEntry.Blink = NULL; -} - -/* - * @implemented - */ -VOID STDCALL -KeQueryTickCount(PLARGE_INTEGER TickCount) -/* - * FUNCTION: Returns the number of ticks since the system was booted - * ARGUMENTS: - * TickCount (OUT) = Points to storage for the number of ticks - */ -{ - TickCount->QuadPart = KeTickCount; -} - -/* - * @implemented - */ -ULONG +VOID STDCALL -KeQueryRuntimeThread( - IN PKTHREAD Thread, - OUT PULONG UserTime - ) +KeInitializeTimerEx (PKTIMER Timer, + TIMER_TYPE Type) { - /* Return the User Time */ - *UserTime = Thread->UserTime; - - /* Return the Kernel Time */ - return Thread->KernelTime; + + DPRINT("KeInitializeTimerEx(%x, %d)\n", Timer, Type); + + /* Initialize the Dispatch Header */ + KeInitializeDispatcherHeader(&Timer->Header, + InternalNotificationTimer + Type, + sizeof(KTIMER) / sizeof(ULONG), + FALSE); + + /* Initalize the List Head and other data */ + InitializeListHead(&Timer->Header.WaitListHead); + Timer->DueTime.QuadPart = 0; + Timer->Period = 0; } + /* * @implemented */ +BOOLEAN +STDCALL +KeReadStateTimer (PKTIMER Timer) +{ + /* Return the Signal State */ + return (BOOLEAN)Timer->Header.SignalState; +} + +/* + * @implemented + * + * FUNCTION: Sets the absolute or relative interval at which a timer object + * is to be set to the signaled state and optionally supplies a + * CustomTimerDpc to be executed when the timer expires. + * ARGUMENTS: + * Timer = Points to a previously initialized timer object + * DueTimer = If positive then absolute time to expire at + * If negative then the relative time to expire at + * Dpc = If non-NULL then a dpc to be called when the timer expires + * RETURNS: True if the timer was already in the system timer queue + * False otherwise + */ +BOOLEAN +STDCALL +KeSetTimer (PKTIMER Timer, + LARGE_INTEGER DueTime, + PKDPC Dpc) +{ + /* Call the newer function and supply a period of 0 */ + return KeSetTimerEx(Timer, DueTime, 0, Dpc); +} + +/* + * @implemented + * + * FUNCTION: Sets the absolute or relative interval at which a timer object + * is to be set to the signaled state and optionally supplies a + * CustomTimerDpc to be executed when the timer expires. + * ARGUMENTS: + * Timer = Points to a previously initialized timer object + * DueTimer = If positive then absolute time to expire at + * If negative then the relative time to expire at + * Dpc = If non-NULL then a dpc to be called when the timer expires + * RETURNS: True if the timer was already in the system timer queue + * False otherwise + */ +BOOLEAN +STDCALL +KeSetTimerEx (PKTIMER Timer, + LARGE_INTEGER DueTime, + LONG Period, + PKDPC Dpc) +{ + KIRQL OldIrql; + BOOLEAN Inserted; + + DPRINT("KeSetTimerEx(Timer %x, DueTime %I64d, Period %d, Dpc %x)\n", Timer, DueTime.QuadPart, Period, Dpc); + ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL); + + /* Lock the Database and Raise IRQL */ + OldIrql = KeAcquireDispatcherDatabaseLock(); + + /* Check if it's inserted, and remove it if it is */ + if ((Inserted = Timer->Header.Inserted)) { + + /* Remove from list */ + DPRINT("Timer was already inserted\n"); + RemoveEntryList(&Timer->TimerListEntry); + Timer->Header.Inserted = FALSE; + } + + /* Set Default Timer Data */ + Timer->Dpc = Dpc; + Timer->Period = Period; + Timer->Header.SignalState = FALSE; + Timer->Header.Absolute = FALSE; + + /* Insert it */ + if (!KiInsertTimer(Timer, DueTime)) { + + /* FIXME: I will think about how to handle this and fix it ASAP -- Alex */ + DPRINT1("CRITICAL UNHANDLED CASE: TIMER ALREADY EXPIRED!!!\n"); + }; + + /* Release Dispatcher Lock */ + KeReleaseDispatcherDatabaseLock(OldIrql); + + /* Return old state */ + DPRINT("Old State: %d\n", Inserted); + return Inserted; +} + VOID STDCALL -KeSetTimeIncrement( - IN ULONG MaxIncrement, - IN ULONG MinIncrement -) +KiExpireTimers(PKDPC Dpc, + PVOID DeferredContext, + PVOID SystemArgument1, + PVOID SystemArgument2) { - /* Set some Internal Variables */ - /* FIXME: We use a harcoded CLOCK_INCREMENT. That *must* be changed */ - KeMaximumIncrement = MaxIncrement; - KeMinimumIncrement = MinIncrement; + ULONG Eip = (ULONG)SystemArgument1; + PKTIMER Timer = NULL; + ULONGLONG InterruptTime; + LIST_ENTRY ExpiredTimerList; + PLIST_ENTRY CurrentEntry = NULL; + KIRQL OldIrql; + + DPRINT("KiExpireTimers(Dpc: %x)\n", Dpc); + + /* Lock the Database and Raise IRQL */ + OldIrql = KeAcquireDispatcherDatabaseLock(); + + /* Initialize the Expired Timer List */ + InitializeListHead(&ExpiredTimerList); + + /* Query Interrupt Times */ + InterruptTime = KeQueryInterruptTime(); + + /* Loop through the Timer List and remove Expired Timers. Insert them into the Expired Listhead */ + for (CurrentEntry = KiTimerListHead.Flink; CurrentEntry != &KiTimerListHead; CurrentEntry = CurrentEntry->Flink) { + + /* Get the Current Timer */ + Timer = CONTAINING_RECORD(CurrentEntry, KTIMER, TimerListEntry); + DPRINT("Looping for Timer: %x. Duetime: %I64d. InterruptTime %I64d \n", Timer, Timer->DueTime.QuadPart, InterruptTime); + + /* Check if we have to Expire it */ + if (InterruptTime < Timer->DueTime.QuadPart) break; + + /* Remove it from the Timer List, add it to the Expired List */ + RemoveEntryList(&Timer->TimerListEntry); + InsertTailList(&ExpiredTimerList, &Timer->TimerListEntry); + } + + /* Expire the Timers */ + while (!IsListEmpty(&ExpiredTimerList)) { + + /* Get the Next Entry */ + CurrentEntry = RemoveHeadList(&ExpiredTimerList); + + /* Get the Timer */ + Timer = CONTAINING_RECORD(CurrentEntry, KTIMER, TimerListEntry); + DPRINT("Expiring Timer: %x\n", Timer); + + /* Expire it */ + KiHandleExpiredTimer(Timer); + } + + DPRINT("Timers expired\n"); + /* Add a Profile Event */ + KiAddProfileEvent(ProfileTime, Eip); + + /* Release Dispatcher Lock */ + KeReleaseDispatcherDatabaseLock(OldIrql); } /* * We enter this function at IRQL DISPATCH_LEVEL, and with the - * TimerListLock held. - */ -STATIC VOID -HandleExpiredTimer(PKTIMER Timer) -{ - DPRINT("HandleExpiredTime(Timer %x)\n", Timer); - if (Timer->Dpc != NULL) - { - DPRINT("Timer->Dpc %x Timer->Dpc->DeferredRoutine %x\n", - Timer->Dpc, Timer->Dpc->DeferredRoutine); - KeInsertQueueDpc(Timer->Dpc, - NULL, - NULL); - DPRINT("Finished dpc routine\n"); - } - - ASSERT_IRQL_EQUAL(DISPATCH_LEVEL); - - KeAcquireDispatcherDatabaseLockAtDpcLevel(); - Timer->Header.SignalState = TRUE; - KiDispatcherObjectWake(&Timer->Header, 0); - KeReleaseDispatcherDatabaseLockFromDpcLevel(); - - if (Timer->Period != 0) - { - Timer->DueTime.QuadPart += - Timer->Period * SYSTEM_TIME_UNITS_PER_MSEC; - if (Timer->Header.Absolute) - { - InsertAscendingList(&AbsoluteTimerListHead, - KTIMER, - TimerListEntry, - Timer, - DueTime.QuadPart); - } - else - { - InsertAscendingList(&RelativeTimerListHead, - KTIMER, - TimerListEntry, - Timer, - DueTime.QuadPart); - } - } -} - -VOID STDCALL -KeExpireTimers(PKDPC Dpc, - PVOID Context1, - PVOID Arg1, - PVOID Arg2) -{ - PLIST_ENTRY current_entry = NULL; - PKTIMER current = NULL; - ULONG Eip = (ULONG)Arg1; - LARGE_INTEGER InterruptTime; - LARGE_INTEGER SystemTime; - LIST_ENTRY TimerList; - - DPRINT("KeExpireTimers()\n"); - - ASSERT_IRQL_EQUAL(DISPATCH_LEVEL); - - InitializeListHead(&TimerList); - - KeAcquireSpinLockAtDpcLevel(&TimerListLock); - - InterruptTime.QuadPart = KeQueryInterruptTime(); - KeQuerySystemTime(&SystemTime); - - current_entry = RelativeTimerListHead.Flink; - ASSERT(current_entry); - while (current_entry != &RelativeTimerListHead) - { - current = CONTAINING_RECORD(current_entry, KTIMER, TimerListEntry); - ASSERT(current); - ASSERT(current_entry != &RelativeTimerListHead); - ASSERT(current_entry->Flink != current_entry); - if ((ULONGLONG)InterruptTime.QuadPart < current->DueTime.QuadPart) - { - break; - } - current_entry = current_entry->Flink; - RemoveEntryList(¤t->TimerListEntry); - InsertTailList(&TimerList, ¤t->TimerListEntry); - } - - current_entry = AbsoluteTimerListHead.Flink; - ASSERT(current_entry); - while (current_entry != &AbsoluteTimerListHead) - { - current = CONTAINING_RECORD(current_entry, KTIMER, TimerListEntry); - ASSERT(current); - ASSERT(current_entry != &AbsoluteTimerListHead); - ASSERT(current_entry->Flink != current_entry); - if ((ULONGLONG)SystemTime.QuadPart < current->DueTime.QuadPart) - { - break; - } - current_entry = current_entry->Flink; - RemoveEntryList(¤t->TimerListEntry); - InsertTailList(&TimerList, ¤t->TimerListEntry); - } - - while (!IsListEmpty(&TimerList)) - { - current_entry = RemoveHeadList(&TimerList); - current = CONTAINING_RECORD(current_entry, KTIMER, TimerListEntry); - current->TimerListEntry.Flink = current->TimerListEntry.Blink = NULL; - HandleExpiredTimer(current); - } - - KiAddProfileEvent(ProfileTime, Eip); - - KeReleaseSpinLockFromDpcLevel(&TimerListLock); -} - - -VOID INIT_FUNCTION -KeInitializeTimerImpl(VOID) -/* - * FUNCTION: Initializes timer irq handling - * NOTE: This is only called once from main() - */ -{ - TIME_FIELDS TimeFields; - - DPRINT("KeInitializeTimerImpl()\n"); - InitializeListHead(&AbsoluteTimerListHead); - InitializeListHead(&RelativeTimerListHead); - KeInitializeSpinLock(&TimerListLock); - KeInitializeDpc(&ExpireTimerDpc, KeExpireTimers, 0); - /* - * Calculate the starting time for the system clock - */ - HalQueryRealTimeClock(&TimeFields); - RtlTimeFieldsToTime(&TimeFields, &SystemBootTime); - - SharedUserData->TickCountLowDeprecated = 0; - SharedUserData->TickCountMultiplier = 167783691; // 2^24 * 1193182 / 119310 - SharedUserData->InterruptTime.High2Time = 0; - SharedUserData->InterruptTime.LowPart = 0; - SharedUserData->InterruptTime.High1Time = 0; - SharedUserData->SystemTime.High2Time = SystemBootTime.u.HighPart; - SharedUserData->SystemTime.LowPart = SystemBootTime.u.LowPart; - SharedUserData->SystemTime.High1Time = SystemBootTime.u.HighPart; - - TimerInitDone = TRUE; - DPRINT("Finished KeInitializeTimerImpl()\n"); -} - -/* - * @unimplemented - */ -VOID -FASTCALL -KeSetTimeUpdateNotifyRoutine( - IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine - ) -{ - UNIMPLEMENTED; -} - - -/* - * NOTE: On Windows this function takes exactly one parameter and EBP is - * guaranteed to point to KTRAP_FRAME. The function is used only - * by HAL, so there's no point in keeping that prototype. - * - * @implemented - */ -VOID -STDCALL -KeUpdateRunTime( - IN PKTRAP_FRAME TrapFrame, - IN KIRQL Irql - ) -{ - PKPCR Pcr; - PKTHREAD CurrentThread; - PKPROCESS CurrentProcess; -#if 0 - ULONG DpcLastCount; -#endif - - Pcr = KeGetCurrentKPCR(); - - /* Make sure we don't go further if we're in early boot phase. */ - if (Pcr == NULL || Pcr->PrcbData.CurrentThread == NULL) - return; - - DPRINT("KernelTime %u, UserTime %u \n", Pcr->PrcbData.KernelTime, Pcr->PrcbData.UserTime); - - CurrentThread = Pcr->PrcbData.CurrentThread; - CurrentProcess = CurrentThread->ApcState.Process; - - /* - * Cs bit 0 is always set for user mode if we are in protected mode. - * V86 mode is counted as user time. - */ - if (TrapFrame->Cs & 0x1 || - TrapFrame->Eflags & X86_EFLAGS_VM) - { - InterlockedIncrementUL(&CurrentThread->UserTime); - InterlockedIncrementUL(&CurrentProcess->UserTime); - Pcr->PrcbData.UserTime++; - } - else - { - if (Irql > DISPATCH_LEVEL) - { - Pcr->PrcbData.InterruptTime++; - } - else if (Irql == DISPATCH_LEVEL) - { - Pcr->PrcbData.DpcTime++; - } - else - { - InterlockedIncrementUL(&CurrentThread->KernelTime); - InterlockedIncrementUL(&CurrentProcess->KernelTime); - Pcr->PrcbData.KernelTime++; - } - } - -#if 0 - DpcLastCount = Pcr->PrcbData.DpcLastCount; - Pcr->PrcbData.DpcLastCount = Pcr->PrcbData.DpcCount; - Pcr->PrcbData.DpcRequestRate = ((Pcr->PrcbData.DpcCount - DpcLastCount) + - Pcr->PrcbData.DpcRequestRate) / 2; -#endif - - if (Pcr->PrcbData.DpcData[0].DpcQueueDepth > 0 && - Pcr->PrcbData.DpcRoutineActive == FALSE && - Pcr->PrcbData.DpcInterruptRequested == FALSE) - { - HalRequestSoftwareInterrupt(DISPATCH_LEVEL); - } - - /* FIXME: Do DPC rate adjustments */ - - /* - * If we're at end of quantum request software interrupt. The rest - * is handled in KiDispatchInterrupt. - */ - if ((CurrentThread->Quantum -= 3) <= 0) - { - Pcr->PrcbData.QuantumEnd = TRUE; - HalRequestSoftwareInterrupt(DISPATCH_LEVEL); - } -} - - -/* - * NOTE: On Windows this function takes exactly zero parameters and EBP is - * guaranteed to point to KTRAP_FRAME. Also [esp+0] contains an IRQL. - * The function is used only by HAL, so there's no point in keeping - * that prototype. - * - * @implemented + * Dispatcher Lock held! */ VOID STDCALL -KeUpdateSystemTime( - IN PKTRAP_FRAME TrapFrame, - IN KIRQL Irql - ) +KiHandleExpiredTimer(PKTIMER Timer) +{ + + LARGE_INTEGER DueTime; + DPRINT("HandleExpiredTime(Timer %x)\n", Timer); + + /* First of all, remove the Timer */ + Timer->Header.Inserted = FALSE; + RemoveEntryList(&Timer->TimerListEntry); + + /* Set it as Signaled */ + DPRINT("Setting Timer as Signaled\n"); + Timer->Header.SignalState = TRUE; + KiDispatcherObjectWake(&Timer->Header, 0); + + /* If the Timer is periodic, reinsert the timer with the new due time */ + if (Timer->Period) { + + /* Reinsert the Timer */ + DueTime.QuadPart = Timer->Period * -SYSTEM_TIME_UNITS_PER_MSEC; + if (!KiInsertTimer(Timer, DueTime)) { + + /* FIXME: I will think about how to handle this and fix it ASAP -- Alex */ + DPRINT1("CRITICAL UNHANDLED CASE: TIMER ALREADY EXPIRED!!!\n"); + }; + } + + /* Check if the Timer has a DPC */ + if (Timer->Dpc) { + + DPRINT("Timer->Dpc %x Timer->Dpc->DeferredRoutine %x\n", Timer->Dpc, Timer->Dpc->DeferredRoutine); + + /* Insert the DPC */ + KeInsertQueueDpc(Timer->Dpc, + NULL, + NULL); + + DPRINT("Finished dpc routine\n"); + } +} + /* - * FUNCTION: Handles a timer interrupt + * Note: This function is called with the Dispatcher Lock held. */ +BOOLEAN +STDCALL +KiInsertTimer(PKTIMER Timer, + LARGE_INTEGER DueTime) { - LARGE_INTEGER Time; - - ASSERT(KeGetCurrentIrql() == PROFILE_LEVEL); - - KiRawTicks++; - - if (TimerInitDone == FALSE) - { - return; - } - /* - * Increment the number of timers ticks - */ - KeTickCount++; - SharedUserData->TickCountLowDeprecated++; - - Time.u.LowPart = SharedUserData->InterruptTime.LowPart; - Time.u.HighPart = SharedUserData->InterruptTime.High1Time; - Time.QuadPart += CLOCK_INCREMENT; - SharedUserData->InterruptTime.High2Time = Time.u.HighPart; - SharedUserData->InterruptTime.LowPart = Time.u.LowPart; - SharedUserData->InterruptTime.High1Time = Time.u.HighPart; - - Time.u.LowPart = SharedUserData->SystemTime.LowPart; - Time.u.HighPart = SharedUserData->SystemTime.High1Time; - Time.QuadPart += CLOCK_INCREMENT; - SharedUserData->SystemTime.High2Time = Time.u.HighPart; - SharedUserData->SystemTime.LowPart = Time.u.LowPart; - SharedUserData->SystemTime.High1Time = Time.u.HighPart; - - /* FIXME: Here we should check for remote debugger break-ins */ - - /* Update process and thread times */ - KeUpdateRunTime(TrapFrame, Irql); - - /* - * Queue a DPC that will expire timers - */ - KeInsertQueueDpc(&ExpireTimerDpc, (PVOID)TrapFrame->Eip, 0); -} - - -VOID -KiSetSystemTime(PLARGE_INTEGER NewSystemTime) -{ - LARGE_INTEGER OldSystemTime; - LARGE_INTEGER DeltaTime; - KIRQL OldIrql; - PLIST_ENTRY current_entry = NULL; - PKTIMER current = NULL; - - ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL); - - OldIrql = KeAcquireDispatcherDatabaseLock(); - - do - { - OldSystemTime.u.HighPart = SharedUserData->SystemTime.High1Time; - OldSystemTime.u.LowPart = SharedUserData->SystemTime.LowPart; + LARGE_INTEGER SystemTime; + LARGE_INTEGER DifferenceTime; + ULONGLONG InterruptTime; + + DPRINT("KiInsertTimer(Timer %x DueTime %I64d)\n", Timer, DueTime.QuadPart); + + /* Set it as Inserted */ + Timer->Header.Inserted = TRUE; + + /* Convert to relative time if needed */ + if (DueTime.u.HighPart >= 0) { + + /* Get System Time */ + KeQuerySystemTime(&SystemTime); + + /* Do the conversion */ + DifferenceTime.QuadPart = SystemTime.QuadPart - DueTime.QuadPart; + DPRINT("Time Difference is: %I64d\n", DifferenceTime.QuadPart); + + /* Make sure it hasn't already expired */ + if (DifferenceTime.u.HighPart >= 0) { + + /* Cancel everything */ + DPRINT("Timer already expired: %d\n", DifferenceTime.u.HighPart); + Timer->Header.SignalState = TRUE; + Timer->Header.Inserted = FALSE; + return FALSE; + } + + /* Set the time as Absolute */ + Timer->Header.Absolute = TRUE; + DueTime = DifferenceTime; } - while (OldSystemTime.u.HighPart != SharedUserData->SystemTime.High2Time); - - /* Set the new system time */ - SharedUserData->SystemTime.LowPart = NewSystemTime->u.LowPart; - SharedUserData->SystemTime.High1Time = NewSystemTime->u.HighPart; - SharedUserData->SystemTime.High2Time = NewSystemTime->u.HighPart; - - /* Calculate the difference between the new and the old time */ - DeltaTime.QuadPart = NewSystemTime->QuadPart - OldSystemTime.QuadPart; - - /* Update system boot time */ - SystemBootTime.QuadPart += DeltaTime.QuadPart; - - /* Update all relative timers */ - current_entry = RelativeTimerListHead.Flink; - ASSERT(current_entry); - while (current_entry != &RelativeTimerListHead) - { - current = CONTAINING_RECORD(current_entry, KTIMER, TimerListEntry); - ASSERT(current); - ASSERT(current_entry != &RelativeTimerListHead); - ASSERT(current_entry->Flink != current_entry); - - current->DueTime.QuadPart += DeltaTime.QuadPart; - - current_entry = current_entry->Flink; - } - - KeReleaseDispatcherDatabaseLock(OldIrql); - - /* - * NOTE: Expired timers will be processed at the next clock tick! - */ + + /* Get the Interrupt Time */ + InterruptTime = KeQueryInterruptTime(); + + /* Set the Final Due Time */ + Timer->DueTime.QuadPart = InterruptTime - DueTime.QuadPart; + DPRINT("Final Due Time is: %I64d\n", Timer->DueTime.QuadPart); + + /* Now insert it into the Timer List */ + DPRINT("Inserting Timer into list\n"); + InsertAscendingList(&KiTimerListHead, + KTIMER, + TimerListEntry, + Timer, + DueTime.QuadPart); + + return TRUE; } - /* EOF */ diff --git a/reactos/ntoskrnl/ke/wait.c b/reactos/ntoskrnl/ke/wait.c index 3cff12ee706..8e4da0f3ae2 100644 --- a/reactos/ntoskrnl/ke/wait.c +++ b/reactos/ntoskrnl/ke/wait.c @@ -397,6 +397,32 @@ BOOLEAN KiDispatcherObjectWake(DISPATCHER_HEADER* hdr, KPRIORITY increment) return(FALSE); } +/* + * @implemented + */ +NTSTATUS STDCALL +KeDelayExecutionThread (KPROCESSOR_MODE WaitMode, + BOOLEAN Alertable, + PLARGE_INTEGER Interval) +/* + * FUNCTION: Puts the current thread into an alertable or nonalertable + * wait state for a given internal + * ARGUMENTS: + * WaitMode = Processor mode in which the caller is waiting + * Altertable = Specifies if the wait is alertable + * Interval = Specifies the interval to wait + * RETURNS: Status + */ +{ + PKTHREAD Thread = KeGetCurrentThread(); + + KeSetTimer(&Thread->Timer, *Interval, NULL); + return (KeWaitForSingleObject(&Thread->Timer, + (WaitMode == KernelMode) ? Executive : UserRequest, /* TMN: Was unconditionally Executive */ + WaitMode, /* TMN: Was UserMode */ + Alertable, + NULL)); +} /* * @implemented @@ -585,13 +611,13 @@ KeWaitForMultipleObjects(ULONG Count, { Abandoned = KiSideEffectsBeforeWake(hdr, CurrentThread) ? TRUE : Abandoned; + KeReleaseDispatcherDatabaseLock(OldIrql); + if (Timeout != NULL && Timeout->QuadPart != 0) { KeCancelTimer(&CurrentThread->Timer); } - KeReleaseDispatcherDatabaseLock(OldIrql); - DPRINT("One object is (already) signaled!\n"); if (Abandoned == TRUE) { @@ -612,12 +638,13 @@ KeWaitForMultipleObjects(ULONG Count, Abandoned = KiSideEffectsBeforeWake(hdr, CurrentThread) ? TRUE : Abandoned; } + KeReleaseDispatcherDatabaseLock(OldIrql); + if (Timeout != NULL && Timeout->QuadPart != 0) { KeCancelTimer(&CurrentThread->Timer); } - KeReleaseDispatcherDatabaseLock(OldIrql); DPRINT("All objects are (already) signaled!\n"); if (Abandoned == TRUE) @@ -641,8 +668,8 @@ KeWaitForMultipleObjects(ULONG Count, if (Timeout != NULL && KiIsObjectSignalled(&CurrentThread->Timer.Header, CurrentThread)) { KiSideEffectsBeforeWake(&CurrentThread->Timer.Header, CurrentThread); - KeCancelTimer(&CurrentThread->Timer); KeReleaseDispatcherDatabaseLock(OldIrql); + KeCancelTimer(&CurrentThread->Timer); return (STATUS_TIMEOUT); } From be2fa40d3ef4ffbbe91517e65ea899f6aa7199dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 14 Feb 2005 07:46:14 +0000 Subject: [PATCH 040/248] netzimme@netscape.net Make RTL8029 work with NE2000 driver svn path=/trunk/; revision=13555 --- reactos/drivers/net/ndis/ndis/miniport.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/drivers/net/ndis/ndis/miniport.c b/reactos/drivers/net/ndis/ndis/miniport.c index 0a792aaf10b..65f4ed9a649 100644 --- a/reactos/drivers/net/ndis/ndis/miniport.c +++ b/reactos/drivers/net/ndis/ndis/miniport.c @@ -603,7 +603,7 @@ MiniQueryInformation( Adapter->NdisMiniportBlock.MiniportAdapterContext, Oid, Adapter->QueryBuffer, - Size, + Adapter->QueryBufferLength, BytesWritten, &BytesNeeded); } From 31a913fde76bf4b17e210e37f15fdf3148cabca4 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 11:46:17 +0000 Subject: [PATCH 041/248] don't leak a reference to the timer object when copying to the buffer failed in NtQueryTimer() and don't use uninitialized variable in NtSetTimer() svn path=/trunk/; revision=13556 --- reactos/ntoskrnl/ex/timer.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/reactos/ntoskrnl/ex/timer.c b/reactos/ntoskrnl/ex/timer.c index 00ba8cb94e2..0a0234a061e 100644 --- a/reactos/ntoskrnl/ex/timer.c +++ b/reactos/ntoskrnl/ex/timer.c @@ -483,22 +483,27 @@ NtQueryTimer(IN HANDLE TimerHandle, /* Check for Success */ if(NT_SUCCESS(Status)) { - /* Return the Basic Information */ - _SEH_TRY { - - /* FIXME: Interrupt correction based on Interrupt Time */ - DPRINT("Returning Information for Timer: %x. Time Remaining: %d\n", Timer, Timer->KeTimer.DueTime.QuadPart); - BasicInfo->TimeRemaining.QuadPart = Timer->KeTimer.DueTime.QuadPart; - BasicInfo->SignalState = KeReadStateTimer(&Timer->KeTimer); - ObDereferenceObject(Timer); + switch(TimerInformationClass) { + case TimerBasicInformation: { + /* Return the Basic Information */ + _SEH_TRY { - if(ReturnLength != NULL) { - *ReturnLength = sizeof(TIMER_BASIC_INFORMATION); - } + /* FIXME: Interrupt correction based on Interrupt Time */ + DPRINT("Returning Information for Timer: %x. Time Remaining: %d\n", Timer, Timer->KeTimer.DueTime.QuadPart); + BasicInfo->TimeRemaining.QuadPart = Timer->KeTimer.DueTime.QuadPart; + BasicInfo->SignalState = KeReadStateTimer(&Timer->KeTimer); + + if(ReturnLength != NULL) { + *ReturnLength = sizeof(TIMER_BASIC_INFORMATION); + } + + } _SEH_HANDLE { + Status = _SEH_GetExceptionCode(); + } _SEH_END; + } + } - } _SEH_HANDLE { - Status = _SEH_GetExceptionCode(); - } _SEH_END; + ObDereferenceObject(Timer); } /* Return Status */ @@ -517,7 +522,7 @@ NtSetTimer(IN HANDLE TimerHandle, { PETIMER Timer; KIRQL OldIrql; - BOOLEAN KillTimer; + BOOLEAN KillTimer = FALSE; BOOLEAN State; KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); PETHREAD CurrentThread = PsGetCurrentThread(); From 3922c4030b86b90b3efeafdd96103159c3377aca Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 11:57:51 +0000 Subject: [PATCH 042/248] fixed some warnings svn path=/trunk/; revision=13557 --- reactos/drivers/net/ndis/ndis/miniport.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/net/ndis/ndis/miniport.c b/reactos/drivers/net/ndis/ndis/miniport.c index 65f4ed9a649..7b9fc9ebe1a 100644 --- a/reactos/drivers/net/ndis/ndis/miniport.c +++ b/reactos/drivers/net/ndis/ndis/miniport.c @@ -1290,14 +1290,14 @@ NdisIPnPStartDevice( NTSTATUS Status; UINT SelectedMediumIndex = 0; NDIS_OID AddressOID; - BOOLEAN Success; + BOOLEAN Success = FALSE; ULONG ResourceCount; ULONG ResourceListSize; UNICODE_STRING ParamName; PNDIS_CONFIGURATION_PARAMETER ConfigParam; NDIS_HANDLE ConfigHandle; ULONG Size; - KIRQL OldIrql; +/* FIXME - KIRQL OldIrql; */ /* * Prepare wrapper context used by HW and configuration routines. @@ -1461,7 +1461,7 @@ NdisIPnPStartDevice( /* FIXME: Support other types of media */ NDIS_DbgPrint(MIN_TRACE, ("error: unsupported media\n")); ASSERT(FALSE); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); +/* FIXME - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); */ return STATUS_UNSUCCESSFUL; } @@ -1564,6 +1564,8 @@ NdisIDispatchPnp( break; case IRP_MN_STOP_DEVICE: + /* FIXME */ + Status = STATUS_UNSUCCESSFUL; break; Status = NdisIForwardIrpAndWait(Adapter, Irp); if (NT_SUCCESS(Status) && NT_SUCCESS(Irp->IoStatus.Status)) @@ -1576,7 +1578,8 @@ NdisIDispatchPnp( default: IoSkipCurrentIrpStackLocation(Irp); - return IoCallDriver(Adapter->NdisMiniportBlock.NextDeviceObject, Irp); + Status = IoCallDriver(Adapter->NdisMiniportBlock.NextDeviceObject, Irp); + break; } return Status; From dfa5c9434a8eaea674555f34ce859437ab31f4af Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 14 Feb 2005 14:36:03 +0000 Subject: [PATCH 043/248] - Implement RtlSetAttributesSecurityDescriptor, RtlInitializeGenericTableAvl, RtlNumberGenericTableElements and RtlNumberGenericTableElementsAvl. svn path=/trunk/; revision=13558 --- reactos/lib/ntdll/def/ntdll.def | 2 +- reactos/lib/rtl/generictable.c | 60 ++++++++++++++++----------------- reactos/lib/rtl/sd.c | 28 +++++++++++++-- 3 files changed, 57 insertions(+), 33 deletions(-) diff --git a/reactos/lib/ntdll/def/ntdll.def b/reactos/lib/ntdll/def/ntdll.def index e1d6af97011..5a1bd2a8778 100644 --- a/reactos/lib/ntdll/def/ntdll.def +++ b/reactos/lib/ntdll/def/ntdll.def @@ -586,7 +586,7 @@ RtlSecondsSince1970ToTime@8 RtlSecondsSince1980ToTime@8 RtlSelfRelativeToAbsoluteSD@44 RtlSetAllBits@4 -;RtlSetAttributesSecurityDescriptor +RtlSetAttributesSecurityDescriptor@12 RtlSetBits@12 RtlSetControlSecurityDescriptor@12 RtlSetCriticalSectionSpinCount@8 diff --git a/reactos/lib/rtl/generictable.c b/reactos/lib/rtl/generictable.c index 3ac6d804202..c38c416d077 100644 --- a/reactos/lib/rtl/generictable.c +++ b/reactos/lib/rtl/generictable.c @@ -28,6 +28,7 @@ #define NDEBUG #include + /* FUNCTIONS *****************************************************************/ /* @@ -177,22 +178,28 @@ RtlInitializeGenericTable ( UNIMPLEMENTED; } + /* -* @unimplemented -*/ -VOID -STDCALL -RtlInitializeGenericTableAvl ( - PRTL_AVL_TABLE Table, - PRTL_AVL_COMPARE_ROUTINE CompareRoutine, - PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, - PRTL_AVL_FREE_ROUTINE FreeRoutine, - PVOID TableContext - ) + * @implemented + */ +VOID STDCALL +RtlInitializeGenericTableAvl(IN OUT PRTL_AVL_TABLE Table, + IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine, + IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, + IN PRTL_AVL_FREE_ROUTINE FreeRoutine, + IN PVOID TableContext) { - UNIMPLEMENTED; + RtlZeroMemory(Table, + sizeof(RTL_AVL_TABLE)); + Table->BalancedRoot.Parent = &Table->BalancedRoot; + + Table->CompareRoutine = CompareRoutine; + Table->AllocateRoutine = AllocateRoutine; + Table->FreeRoutine = FreeRoutine; + Table->TableContext = TableContext; } + /* * @unimplemented */ @@ -351,29 +358,22 @@ RtlLookupElementGenericTableFullAvl ( /* -* @unimplemented -*/ -ULONG -STDCALL -RtlNumberGenericTableElements( - PRTL_GENERIC_TABLE Table - ) + * @implemented + */ +ULONG STDCALL +RtlNumberGenericTableElements(IN PRTL_GENERIC_TABLE Table) { - UNIMPLEMENTED; - return 0; + return Table->NumberGenericTableElements; } + /* -* @unimplemented -*/ -ULONG -STDCALL -RtlNumberGenericTableElementsAvl ( - PRTL_AVL_TABLE Table - ) + * @implemented + */ +ULONG STDCALL +RtlNumberGenericTableElementsAvl(IN PRTL_AVL_TABLE Table) { - UNIMPLEMENTED; - return 0; + return Table->NumberGenericTableElements; } /* EOF */ diff --git a/reactos/lib/rtl/sd.c b/reactos/lib/rtl/sd.c index a27f2e5e458..f8c60102d01 100644 --- a/reactos/lib/rtl/sd.c +++ b/reactos/lib/rtl/sd.c @@ -107,8 +107,8 @@ RtlpQuerySecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor, } /* -* @implemented -*/ + * @implemented + */ NTSTATUS STDCALL RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG Revision) @@ -814,4 +814,28 @@ RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor, } } + +/* + * @implemented + */ +NTSTATUS STDCALL +RtlSetAttributesSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN SECURITY_DESCRIPTOR_CONTROL Control, + OUT PULONG Revision) +{ + *Revision = SecurityDescriptor->Revision; + + if (SecurityDescriptor->Revision != SECURITY_DESCRIPTOR_REVISION1) + return STATUS_UNKNOWN_REVISION; + + Control &= + ~(SE_OWNER_DEFAULTED | SE_GROUP_DEFAULTED | SE_DACL_PRESENT | + SE_DACL_DEFAULTED | SE_SACL_PRESENT | SE_SACL_DEFAULTED | + SE_RM_CONTROL_VALID | SE_SELF_RELATIVE); + + return RtlSetControlSecurityDescriptor(SecurityDescriptor, + Control, + Control); +} + /* EOF */ From 54eed4d70852ecfb3a19ec9975641e83d02c8492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 14 Feb 2005 14:50:45 +0000 Subject: [PATCH 044/248] Sync to Wine-20050211 James Hawkins - use only stored result of Interlocked* in AddRef/Release - expand TRACEs to display the ref count Hans Leidekker - Stub implementations for PathUnExpandEnvStringsSHRegEnumUSValue{A,W}, SHRegCreateUSKey{A,W}, SHRegDeleteEmptyUSKey{A,W}, SHRegDeleteUSValue{A,W}, SHRegEnumUSValue{A,W}. - Implement and test PathIsValidChar{A,W}. Paul Vriens - Change the order of Src and Dst in CopyKey calls/functions. svn path=/trunk/; revision=13559 --- reactos/lib/shlwapi/assoc.c | 16 +-- reactos/lib/shlwapi/istream.c | 17 +-- reactos/lib/shlwapi/path.c | 204 +++++++++++++++++++------------ reactos/lib/shlwapi/reg.c | 160 ++++++++++++++++++++++-- reactos/lib/shlwapi/regstream.c | 15 ++- reactos/lib/shlwapi/shlwapi.spec | 20 +-- 6 files changed, 313 insertions(+), 119 deletions(-) diff --git a/reactos/lib/shlwapi/assoc.c b/reactos/lib/shlwapi/assoc.c index 2bd8b195808..340ac2071b5 100644 --- a/reactos/lib/shlwapi/assoc.c +++ b/reactos/lib/shlwapi/assoc.c @@ -467,10 +467,11 @@ static HRESULT WINAPI IQueryAssociations_fnQueryInterface( static ULONG WINAPI IQueryAssociations_fnAddRef(IQueryAssociations *iface) { IQueryAssociationsImpl *This = (IQueryAssociationsImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); - TRACE("(%p)->(ref before=%lu)\n",This, This->ref); - - return InterlockedIncrement(&This->ref); + return refCount; } /************************************************************************** @@ -481,16 +482,17 @@ static ULONG WINAPI IQueryAssociations_fnAddRef(IQueryAssociations *iface) static ULONG WINAPI IQueryAssociations_fnRelease(IQueryAssociations *iface) { IQueryAssociationsImpl *This = (IQueryAssociationsImpl *)iface; - ULONG ulRet; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%lu)\n",This, This->ref); + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); - if (!(ulRet = InterlockedDecrement(&This->ref))) + if (!refCount) { TRACE("Destroying IQueryAssociations (%p)\n", This); HeapFree(GetProcessHeap(), 0, This); } - return ulRet; + + return refCount; } /************************************************************************** diff --git a/reactos/lib/shlwapi/istream.c b/reactos/lib/shlwapi/istream.c index de061ae0b72..50581c02d62 100644 --- a/reactos/lib/shlwapi/istream.c +++ b/reactos/lib/shlwapi/istream.c @@ -78,9 +78,11 @@ static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVO static ULONG WINAPI IStream_fnAddRef(IStream *iface) { ISHFileStream *This = (ISHFileStream *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); - TRACE("(%p)\n", This); - return InterlockedIncrement(&This->ref); + return refCount; } /************************************************************************** @@ -89,18 +91,19 @@ static ULONG WINAPI IStream_fnAddRef(IStream *iface) static ULONG WINAPI IStream_fnRelease(IStream *iface) { ISHFileStream *This = (ISHFileStream *)iface; - ULONG ulRet; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)\n", This); - - if (!(ulRet = InterlockedDecrement(&This->ref))) + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); + + if (!refCount) { IStream_fnCommit(iface, 0); /* If ever buffered, this will be needed */ LocalFree((HLOCAL)This->lpszPath); CloseHandle(This->hFile); HeapFree(GetProcessHeap(), 0, This); } - return ulRet; + + return refCount; } /************************************************************************** diff --git a/reactos/lib/shlwapi/path.c b/reactos/lib/shlwapi/path.c index fd78b765ba1..1c070f1e6cd 100644 --- a/reactos/lib/shlwapi/path.c +++ b/reactos/lib/shlwapi/path.c @@ -3910,6 +3910,38 @@ VOID WINAPI PathUndecorateW(LPWSTR lpszPath) } } +/************************************************************************* + * PathUnExpandEnvStringsA [SHLWAPI.@] + * + * Substitute folder names in a path with their corresponding environment + * strings. + * + * PARAMS + * pszPath [I] Buffer containing the path to unexpand. + * pszBuf [O] Buffer to receive the unexpanded path. + * cchBuf [I] Size of pszBuf in characters. + * + * RETURNS + * Success: TRUE + * Failure: FALSE + */ +BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR pszPath, LPSTR pszBuf, UINT cchBuf) +{ + FIXME("(%s,%s,0x%08x)\n", debugstr_a(pszPath), debugstr_a(pszBuf), cchBuf); + return FALSE; +} + +/************************************************************************* + * PathUnExpandEnvStringsW [SHLWAPI.@] + * + * Unicode version of PathUnExpandEnvStringsA. + */ +BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR pszPath, LPWSTR pszBuf, UINT cchBuf) +{ + FIXME("(%s,%s,0x%08x)\n", debugstr_w(pszPath), debugstr_w(pszBuf), cchBuf); + return FALSE; +} + /************************************************************************* * @ [SHLWAPI.440] * @@ -3990,100 +4022,110 @@ HRESULT WINAPI SHGetWebFolderFilePathW(LPCWSTR lpszFile, LPWSTR lpszPath, DWORD return E_FAIL; } -#define PATH_CHAR_CLASS_LETTER 0x0001 -#define PATH_CHAR_CLASS_ASTERIX 0x0002 -#define PATH_CHAR_CLASS_DOT 0x0004 -#define PATH_CHAR_CLASS_BACKSLASH 0x0008 -#define PATH_CHAR_CLASS_COLON 0x0010 -#define PATH_CHAR_CLASS_SEMICOLON 0x0020 -#define PATH_CHAR_CLASS_COMMA 0x0040 -#define PATH_CHAR_CLASS_SPACE 0x0080 -#define PATH_CHAR_CLASS_OTHER_VALID 0x0100 -#define PATH_CHAR_CLASS_DOUBLEQUOTE 0x0200 +#define PATH_CHAR_CLASS_LETTER 0x00000001 +#define PATH_CHAR_CLASS_ASTERIX 0x00000002 +#define PATH_CHAR_CLASS_DOT 0x00000004 +#define PATH_CHAR_CLASS_BACKSLASH 0x00000008 +#define PATH_CHAR_CLASS_COLON 0x00000010 +#define PATH_CHAR_CLASS_SEMICOLON 0x00000020 +#define PATH_CHAR_CLASS_COMMA 0x00000040 +#define PATH_CHAR_CLASS_SPACE 0x00000080 +#define PATH_CHAR_CLASS_OTHER_VALID 0x00000100 +#define PATH_CHAR_CLASS_DOUBLEQUOTE 0x00000200 -/************************************************************************* - * PathIsValidCharAW [internal] - * - * Check if a char is of a certain class - */ -static BOOL WINAPI PathIsValidCharAW(unsigned Ch, DWORD Class) +#define PATH_CHAR_CLASS_INVALID 0x00000000 +#define PATH_CHAR_CLASS_ANY 0xffffffff + +static const DWORD SHELL_charclass[] = { - static struct - { - char Ch; - DWORD Class; - } CharClass[] = - { - { ' ', PATH_CHAR_CLASS_SPACE }, - { '!', PATH_CHAR_CLASS_OTHER_VALID }, - { '"', PATH_CHAR_CLASS_DOUBLEQUOTE }, - { '#', PATH_CHAR_CLASS_OTHER_VALID }, - { '$', PATH_CHAR_CLASS_OTHER_VALID }, - { '%', PATH_CHAR_CLASS_OTHER_VALID }, - { '&', PATH_CHAR_CLASS_OTHER_VALID }, - { '\'', PATH_CHAR_CLASS_OTHER_VALID }, - { '(', PATH_CHAR_CLASS_OTHER_VALID }, - { ')', PATH_CHAR_CLASS_OTHER_VALID }, - { '*', PATH_CHAR_CLASS_ASTERIX }, - { '+', PATH_CHAR_CLASS_OTHER_VALID }, - { ',', PATH_CHAR_CLASS_COMMA }, - { '-', PATH_CHAR_CLASS_OTHER_VALID }, - { '.', PATH_CHAR_CLASS_DOT }, - { ':', PATH_CHAR_CLASS_COLON }, - { ';', PATH_CHAR_CLASS_SEMICOLON }, - { '=', PATH_CHAR_CLASS_OTHER_VALID }, - { '?', PATH_CHAR_CLASS_LETTER }, - { '@', PATH_CHAR_CLASS_OTHER_VALID }, - { '[', PATH_CHAR_CLASS_OTHER_VALID }, - { '\\', PATH_CHAR_CLASS_BACKSLASH }, - { ']', PATH_CHAR_CLASS_OTHER_VALID }, - { '^', PATH_CHAR_CLASS_OTHER_VALID }, - { '_', PATH_CHAR_CLASS_OTHER_VALID }, - { '`', PATH_CHAR_CLASS_OTHER_VALID }, - { '{', PATH_CHAR_CLASS_OTHER_VALID }, - { '}', PATH_CHAR_CLASS_OTHER_VALID }, - { '~', PATH_CHAR_CLASS_OTHER_VALID }, - { 0x7f, PATH_CHAR_CLASS_OTHER_VALID } - }; - unsigned Index; - - if (('A' <= Ch && Ch <= 'Z') || ('a' <= Ch && Ch <= 'z')) - { - return (Class & PATH_CHAR_CLASS_LETTER); - } - - if (('0' <= Ch && Ch <= '9') || 0x80 <= Ch) - { - return (Class & PATH_CHAR_CLASS_OTHER_VALID); - } - - for (Index = 0; Index < sizeof(CharClass) / sizeof(CharClass[0]); Index++) - { - if (Ch == CharClass[Index].Ch) - { - return (Class & CharClass[Index].Class); - } - } - - return FALSE; -} + /* 0x00 */ PATH_CHAR_CLASS_INVALID, /* 0x01 */ PATH_CHAR_CLASS_INVALID, + /* 0x02 */ PATH_CHAR_CLASS_INVALID, /* 0x03 */ PATH_CHAR_CLASS_INVALID, + /* 0x04 */ PATH_CHAR_CLASS_INVALID, /* 0x05 */ PATH_CHAR_CLASS_INVALID, + /* 0x06 */ PATH_CHAR_CLASS_INVALID, /* 0x07 */ PATH_CHAR_CLASS_INVALID, + /* 0x08 */ PATH_CHAR_CLASS_INVALID, /* 0x09 */ PATH_CHAR_CLASS_INVALID, + /* 0x0a */ PATH_CHAR_CLASS_INVALID, /* 0x0b */ PATH_CHAR_CLASS_INVALID, + /* 0x0c */ PATH_CHAR_CLASS_INVALID, /* 0x0d */ PATH_CHAR_CLASS_INVALID, + /* 0x0e */ PATH_CHAR_CLASS_INVALID, /* 0x0f */ PATH_CHAR_CLASS_INVALID, + /* 0x10 */ PATH_CHAR_CLASS_INVALID, /* 0x11 */ PATH_CHAR_CLASS_INVALID, + /* 0x12 */ PATH_CHAR_CLASS_INVALID, /* 0x13 */ PATH_CHAR_CLASS_INVALID, + /* 0x14 */ PATH_CHAR_CLASS_INVALID, /* 0x15 */ PATH_CHAR_CLASS_INVALID, + /* 0x16 */ PATH_CHAR_CLASS_INVALID, /* 0x17 */ PATH_CHAR_CLASS_INVALID, + /* 0x18 */ PATH_CHAR_CLASS_INVALID, /* 0x19 */ PATH_CHAR_CLASS_INVALID, + /* 0x1a */ PATH_CHAR_CLASS_INVALID, /* 0x1b */ PATH_CHAR_CLASS_INVALID, + /* 0x1c */ PATH_CHAR_CLASS_INVALID, /* 0x1d */ PATH_CHAR_CLASS_INVALID, + /* 0x1e */ PATH_CHAR_CLASS_INVALID, /* 0x1f */ PATH_CHAR_CLASS_INVALID, + /* ' ' */ PATH_CHAR_CLASS_SPACE, /* '!' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '"' */ PATH_CHAR_CLASS_DOUBLEQUOTE, /* '#' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '$' */ PATH_CHAR_CLASS_OTHER_VALID, /* '%' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '&' */ PATH_CHAR_CLASS_OTHER_VALID, /* '\'' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '(' */ PATH_CHAR_CLASS_OTHER_VALID, /* ')' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '*' */ PATH_CHAR_CLASS_ASTERIX, /* '+' */ PATH_CHAR_CLASS_OTHER_VALID, + /* ',' */ PATH_CHAR_CLASS_COMMA, /* '-' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '.' */ PATH_CHAR_CLASS_DOT, /* '/' */ PATH_CHAR_CLASS_INVALID, + /* '0' */ PATH_CHAR_CLASS_OTHER_VALID, /* '1' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '2' */ PATH_CHAR_CLASS_OTHER_VALID, /* '3' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '4' */ PATH_CHAR_CLASS_OTHER_VALID, /* '5' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '6' */ PATH_CHAR_CLASS_OTHER_VALID, /* '7' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '8' */ PATH_CHAR_CLASS_OTHER_VALID, /* '9' */ PATH_CHAR_CLASS_OTHER_VALID, + /* ':' */ PATH_CHAR_CLASS_COLON, /* ';' */ PATH_CHAR_CLASS_SEMICOLON, + /* '<' */ PATH_CHAR_CLASS_INVALID, /* '=' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '>' */ PATH_CHAR_CLASS_INVALID, /* '?' */ PATH_CHAR_CLASS_LETTER, + /* '@' */ PATH_CHAR_CLASS_OTHER_VALID, /* 'A' */ PATH_CHAR_CLASS_ANY, + /* 'B' */ PATH_CHAR_CLASS_ANY, /* 'C' */ PATH_CHAR_CLASS_ANY, + /* 'D' */ PATH_CHAR_CLASS_ANY, /* 'E' */ PATH_CHAR_CLASS_ANY, + /* 'F' */ PATH_CHAR_CLASS_ANY, /* 'G' */ PATH_CHAR_CLASS_ANY, + /* 'H' */ PATH_CHAR_CLASS_ANY, /* 'I' */ PATH_CHAR_CLASS_ANY, + /* 'J' */ PATH_CHAR_CLASS_ANY, /* 'K' */ PATH_CHAR_CLASS_ANY, + /* 'L' */ PATH_CHAR_CLASS_ANY, /* 'M' */ PATH_CHAR_CLASS_ANY, + /* 'N' */ PATH_CHAR_CLASS_ANY, /* 'O' */ PATH_CHAR_CLASS_ANY, + /* 'P' */ PATH_CHAR_CLASS_ANY, /* 'Q' */ PATH_CHAR_CLASS_ANY, + /* 'R' */ PATH_CHAR_CLASS_ANY, /* 'S' */ PATH_CHAR_CLASS_ANY, + /* 'T' */ PATH_CHAR_CLASS_ANY, /* 'U' */ PATH_CHAR_CLASS_ANY, + /* 'V' */ PATH_CHAR_CLASS_ANY, /* 'W' */ PATH_CHAR_CLASS_ANY, + /* 'X' */ PATH_CHAR_CLASS_ANY, /* 'Y' */ PATH_CHAR_CLASS_ANY, + /* 'Z' */ PATH_CHAR_CLASS_ANY, /* '[' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '\\' */ PATH_CHAR_CLASS_BACKSLASH, /* ']' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '^' */ PATH_CHAR_CLASS_OTHER_VALID, /* '_' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '`' */ PATH_CHAR_CLASS_OTHER_VALID, /* 'a' */ PATH_CHAR_CLASS_ANY, + /* 'b' */ PATH_CHAR_CLASS_ANY, /* 'c' */ PATH_CHAR_CLASS_ANY, + /* 'd' */ PATH_CHAR_CLASS_ANY, /* 'e' */ PATH_CHAR_CLASS_ANY, + /* 'f' */ PATH_CHAR_CLASS_ANY, /* 'g' */ PATH_CHAR_CLASS_ANY, + /* 'h' */ PATH_CHAR_CLASS_ANY, /* 'i' */ PATH_CHAR_CLASS_ANY, + /* 'j' */ PATH_CHAR_CLASS_ANY, /* 'k' */ PATH_CHAR_CLASS_ANY, + /* 'l' */ PATH_CHAR_CLASS_ANY, /* 'm' */ PATH_CHAR_CLASS_ANY, + /* 'n' */ PATH_CHAR_CLASS_ANY, /* 'o' */ PATH_CHAR_CLASS_ANY, + /* 'p' */ PATH_CHAR_CLASS_ANY, /* 'q' */ PATH_CHAR_CLASS_ANY, + /* 'r' */ PATH_CHAR_CLASS_ANY, /* 's' */ PATH_CHAR_CLASS_ANY, + /* 't' */ PATH_CHAR_CLASS_ANY, /* 'u' */ PATH_CHAR_CLASS_ANY, + /* 'v' */ PATH_CHAR_CLASS_ANY, /* 'w' */ PATH_CHAR_CLASS_ANY, + /* 'x' */ PATH_CHAR_CLASS_ANY, /* 'y' */ PATH_CHAR_CLASS_ANY, + /* 'z' */ PATH_CHAR_CLASS_ANY, /* '{' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '|' */ PATH_CHAR_CLASS_INVALID, /* '}' */ PATH_CHAR_CLASS_OTHER_VALID, + /* '~' */ PATH_CHAR_CLASS_OTHER_VALID +}; /************************************************************************* * @ [SHLWAPI.455] * - * Check if an Ascii char is of a certain class + * Check if an ASCII char is of a certain class */ -BOOL WINAPI PathIsValidCharA(char Ch, DWORD Class) +BOOL WINAPI PathIsValidCharA( char c, DWORD class ) { - return PathIsValidCharAW((unsigned) Ch, Class); + if ((unsigned)c > 0x7e) + return class & PATH_CHAR_CLASS_OTHER_VALID; + + return class & SHELL_charclass[(unsigned)c]; } /************************************************************************* * @ [SHLWAPI.456] * - * Check if an Unicode char is of a certain class + * Check if a Unicode char is of a certain class */ -BOOL WINAPI PathIsValidCharW(WCHAR Ch, DWORD Class) +BOOL WINAPI PathIsValidCharW( WCHAR c, DWORD class ) { - return PathIsValidCharAW((unsigned) Ch, Class); + if (c > 0x7e) + return class & PATH_CHAR_CLASS_OTHER_VALID; + + return class & SHELL_charclass[c]; } diff --git a/reactos/lib/shlwapi/reg.c b/reactos/lib/shlwapi/reg.c index a7a8486cfba..15a1f17c86c 100644 --- a/reactos/lib/shlwapi/reg.c +++ b/reactos/lib/shlwapi/reg.c @@ -206,6 +206,150 @@ LONG WINAPI SHRegCloseUSKey( return ret; } +/************************************************************************* + * SHRegCreateUSKeyA [SHLWAPI.@] + * + * Create or open a user-specific registry key. + * + * PARAMS + * pszPath [I] Key name to create or open. + * samDesired [I] Wanted security access. + * hRelativeUSKey [I] Base path if pszPath is relative. NULL otherwise. + * phNewUSKey [O] Receives a handle to the new or openened key. + * dwFlags [I] Base key under which the key should be opened. + * + * RETURNS + * Success: ERROR_SUCCESS + * Failure: Nonzero error code from winerror.h + */ +LONG WINAPI SHRegCreateUSKeyA(LPCSTR pszPath, REGSAM samDesired, HUSKEY hRelativeUSKey, + PHUSKEY phNewUSKey, DWORD dwFlags) +{ + FIXME("(%s, 0x%08lx, %p, %p, 0x%08lx) stub\n", debugstr_a(pszPath), samDesired, + hRelativeUSKey, phNewUSKey, dwFlags); + return ERROR_SUCCESS; +} + +/************************************************************************* + * SHRegCreateUSKeyW [SHLWAPI.@] + * + * See SHRegCreateUSKeyA. + */ +LONG WINAPI SHRegCreateUSKeyW(LPCWSTR pszPath, REGSAM samDesired, HUSKEY hRelativeUSKey, + PHUSKEY phNewUSKey, DWORD dwFlags) +{ + FIXME("(%s, 0x%08lx, %p, %p, 0x%08lx) stub\n", debugstr_w(pszPath), samDesired, + hRelativeUSKey, phNewUSKey, dwFlags); + return ERROR_SUCCESS; +} + +/************************************************************************* + * SHRegDeleteEmptyUSKeyA [SHLWAPI.@] + * + * Delete an empty user-specific registry key. + * + * PARAMS + * hUSKey [I] Handle to an open registry key. + * pszValue [I] Empty key name. + * delRegFlags [I] Flag that specifies the base from which to delete + * the key. + * + * RETURNS + * Success: ERROR_SUCCESS + * Failure: Nonzero error code from winerror.h + */ +LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY hUSKey, LPCSTR pszValue, SHREGDEL_FLAGS delRegFlags) +{ + FIXME("(%p, %s, 0x%08x) stub\n", hUSKey, debugstr_a(pszValue), delRegFlags); + return ERROR_SUCCESS; +} + +/************************************************************************* + * SHRegDeleteEmptyUSKeyW [SHLWAPI.@] + * + * See SHRegDeleteEmptyUSKeyA. + */ +LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY hUSKey, LPCWSTR pszValue, SHREGDEL_FLAGS delRegFlags) +{ + FIXME("(%p, %s, 0x%08x) stub\n", hUSKey, debugstr_w(pszValue), delRegFlags); + return ERROR_SUCCESS; +} + +/************************************************************************* + * SHRegDeleteUSValueA [SHLWAPI.@] + * + * Delete a user-specific registry value. + * + * PARAMS + * hUSKey [I] Handle to an open registry key. + * pszValue [I] Specifies the value to delete. + * delRegFlags [I] Flag that specifies the base of the key from which to + * delete the value. + * + * RETURNS + * Success: ERROR_SUCCESS + * Failure: Nonzero error code from winerror.h + */ +LONG WINAPI SHRegDeleteUSValueA(HUSKEY hUSKey, LPCSTR pszValue, SHREGDEL_FLAGS delRegFlags) +{ + FIXME("(%p, %s, 0x%08x) stub\n", hUSKey, debugstr_a(pszValue), delRegFlags); + return ERROR_SUCCESS; +} + +/************************************************************************* + * SHRegDeleteUSValueW [SHLWAPI.@] + * + * See SHRegDeleteUSValueA. + */ +LONG WINAPI SHRegDeleteUSValueW(HUSKEY hUSKey, LPCWSTR pszValue, SHREGDEL_FLAGS delRegFlags) +{ + FIXME("(%p, %s, 0x%08x) stub\n", hUSKey, debugstr_w(pszValue), delRegFlags); + return ERROR_SUCCESS; +} + +/************************************************************************* + * SHRegEnumUSValueA [SHLWAPI.@] + * + * Enumerate values of a specified registry key. + * + * PARAMS + * hUSKey [I] Handle to an open registry key. + * dwIndex [I] Index of the value to be retrieved. + * pszValueName [O] Buffer to receive the value name. + * pcchValueNameLen [I] Size of pszValueName in characters. + * pdwType [O] Receives data type of the value. + * pvData [O] Receives value data. May be NULL. + * pcbData [I/O] Size of pvData in bytes. + * enumRegFlags [I] Flag that specifies the base key under which to + * enumerate values. + * + * RETURNS + * Success: ERROR_SUCCESS + * Failure: Nonzero error code from winerror.h + */ +LONG WINAPI SHRegEnumUSValueA(HUSKEY hUSKey, DWORD dwIndex, LPSTR pszValueName, + LPDWORD pcchValueNameLen, LPDWORD pdwType, LPVOID pvData, + LPDWORD pcbData, SHREGENUM_FLAGS enumRegFlags) +{ + FIXME("(%p, 0x%08lx, %s, %p, %p, %p, %p, 0x%08x) stub\n", hUSKey, dwIndex, + debugstr_a(pszValueName), pcchValueNameLen, pdwType, pvData, pcbData, enumRegFlags); + return ERROR_INVALID_FUNCTION; +} + +/************************************************************************* + * SHRegEnumUSValueW [SHLWAPI.@] + * + * See SHRegEnumUSValueA. + */ +LONG WINAPI SHRegEnumUSValueW(HUSKEY hUSKey, DWORD dwIndex, LPWSTR pszValueName, + LPDWORD pcchValueNameLen, LPDWORD pdwType, LPVOID pvData, + LPDWORD pcbData, SHREGENUM_FLAGS enumRegFlags) +{ + FIXME("(%p, 0x%08lx, %s, %p, %p, %p, %p, 0x%08x) stub\n", hUSKey, dwIndex, + debugstr_w(pszValueName), pcchValueNameLen, pdwType, pvData, pcbData, enumRegFlags); + return ERROR_INVALID_FUNCTION; +} + /************************************************************************* * SHRegQueryUSValueA [SHLWAPI.@] * @@ -2038,9 +2182,9 @@ HKEY WINAPI SHRegDuplicateHKey(HKEY hKey) * Copy a key and its values/sub keys to another location. * * PARAMS - * hKeyDst [I] Destination key - * lpszSubKey [I] Sub key under hKeyDst, or NULL to use hKeyDst directly * hKeySrc [I] Source key to copy from + * lpszSubKey [I] Sub key under hKeyDst, or NULL to use hKeyDst directly + * hKeyDst [I] Destination key * dwReserved [I] Reserved, must be 0 * * RETURNS @@ -2052,16 +2196,16 @@ HKEY WINAPI SHRegDuplicateHKey(HKEY hKey) * (It will loop until out of stack, or the registry is full). This * bug is present in Win32 also. */ -DWORD WINAPI SHCopyKeyA(HKEY hKeyDst, LPCSTR lpszSubKey, HKEY hKeySrc, DWORD dwReserved) +DWORD WINAPI SHCopyKeyA(HKEY hKeySrc, LPCSTR lpszSubKey, HKEY hKeyDst, DWORD dwReserved) { WCHAR szSubKeyW[MAX_PATH]; - TRACE("(hkey=%p,%s,%p08x,%ld)\n", hKeyDst, debugstr_a(lpszSubKey), hKeySrc, dwReserved); + TRACE("(hkey=%p,%s,%p08x,%ld)\n", hKeySrc, debugstr_a(lpszSubKey), hKeyDst, dwReserved); if (lpszSubKey) MultiByteToWideChar(0, 0, lpszSubKey, -1, szSubKeyW, MAX_PATH); - return SHCopyKeyW(hKeyDst, lpszSubKey ? szSubKeyW : NULL, hKeySrc, dwReserved); + return SHCopyKeyW(hKeySrc, lpszSubKey ? szSubKeyW : NULL, hKeyDst, dwReserved); } /************************************************************************* @@ -2069,7 +2213,7 @@ DWORD WINAPI SHCopyKeyA(HKEY hKeyDst, LPCSTR lpszSubKey, HKEY hKeySrc, DWORD dwR * * See SHCopyKeyA. */ -DWORD WINAPI SHCopyKeyW(HKEY hKeyDst, LPCWSTR lpszSubKey, HKEY hKeySrc, DWORD dwReserved) +DWORD WINAPI SHCopyKeyW(HKEY hKeySrc, LPCWSTR lpszSubKey, HKEY hKeyDst, DWORD dwReserved) { DWORD dwKeyCount = 0, dwValueCount = 0, dwMaxKeyLen = 0; DWORD dwMaxValueLen = 0, dwMaxDataLen = 0, i; @@ -2078,7 +2222,7 @@ DWORD WINAPI SHCopyKeyW(HKEY hKeyDst, LPCWSTR lpszSubKey, HKEY hKeySrc, DWORD dw WCHAR szName[MAX_PATH], *lpszName = szName; DWORD dwRet = S_OK; - TRACE("hkey=%p,%s,%p08x,%ld)\n", hKeyDst, debugstr_w(lpszSubKey), hKeySrc, dwReserved); + TRACE("hkey=%p,%s,%p08x,%ld)\n", hKeySrc, debugstr_w(lpszSubKey), hKeyDst, dwReserved); if(!hKeyDst || !hKeySrc) dwRet = ERROR_INVALID_PARAMETER; @@ -2134,7 +2278,7 @@ DWORD WINAPI SHCopyKeyW(HKEY hKeyDst, LPCWSTR lpszSubKey, HKEY hKeySrc, DWORD dw if(!dwRet) { /* Recursively copy keys and values from the sub key */ - dwRet = SHCopyKeyW(hSubKeyDst, NULL, hSubKeySrc, 0); + dwRet = SHCopyKeyW(hSubKeySrc, NULL, hSubKeyDst, 0); RegCloseKey(hSubKeyDst); } } diff --git a/reactos/lib/shlwapi/regstream.c b/reactos/lib/shlwapi/regstream.c index 14c48d21c05..172e1bbd842 100644 --- a/reactos/lib/shlwapi/regstream.c +++ b/reactos/lib/shlwapi/regstream.c @@ -75,10 +75,11 @@ static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVO static ULONG WINAPI IStream_fnAddRef(IStream *iface) { ISHRegStream *This = (ISHRegStream *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); - TRACE("(%p)->(count=%lu)\n",This, This->ref); - - return InterlockedIncrement(&This->ref); + return refCount; } /************************************************************************** @@ -87,10 +88,11 @@ static ULONG WINAPI IStream_fnAddRef(IStream *iface) static ULONG WINAPI IStream_fnRelease(IStream *iface) { ISHRegStream *This = (ISHRegStream *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->()\n",This); + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); - if (!InterlockedDecrement(&This->ref)) + if (!refCount) { TRACE(" destroying SHReg IStream (%p)\n",This); @@ -102,7 +104,8 @@ static ULONG WINAPI IStream_fnRelease(IStream *iface) HeapFree(GetProcessHeap(),0,This); return 0; } - return This->ref; + + return refCount; } /************************************************************************** diff --git a/reactos/lib/shlwapi/shlwapi.spec b/reactos/lib/shlwapi/shlwapi.spec index 654011a8163..140de9fda58 100644 --- a/reactos/lib/shlwapi/shlwapi.spec +++ b/reactos/lib/shlwapi/shlwapi.spec @@ -687,16 +687,16 @@ @ stdcall SHQueryValueExA(long str ptr ptr ptr ptr) @ stdcall SHQueryValueExW(long wstr ptr ptr ptr ptr) @ stdcall SHRegCloseUSKey(ptr) -@ stub SHRegCreateUSKeyA -@ stub SHRegCreateUSKeyW -@ stub SHRegDeleteEmptyUSKeyA -@ stub SHRegDeleteEmptyUSKeyW -@ stub SHRegDeleteUSValueA -@ stub SHRegDeleteUSValueW +@ stdcall SHRegCreateUSKeyA(str long long ptr long) +@ stdcall SHRegCreateUSKeyW(wstr long long ptr long) +@ stdcall SHRegDeleteEmptyUSKeyA(long str long) +@ stdcall SHRegDeleteEmptyUSKeyW(long wstr long) +@ stdcall SHRegDeleteUSValueA(long str long) +@ stdcall SHRegDeleteUSValueW(long wstr long) @ stdcall SHRegEnumUSKeyA(long long str ptr long) @ stdcall SHRegEnumUSKeyW(long long wstr ptr long) -@ stub SHRegEnumUSValueA -@ stub SHRegEnumUSValueW +@ stdcall SHRegEnumUSValueA(long long ptr ptr ptr ptr ptr long) +@ stdcall SHRegEnumUSValueW(long long ptr ptr ptr ptr ptr long) @ stdcall SHRegGetBoolUSValueA(str str long long) @ stdcall SHRegGetBoolUSValueW(wstr wstr long long) @ stdcall SHRegGetUSValueA ( str str ptr ptr ptr long ptr long ) @@ -814,8 +814,8 @@ @ stdcall _SHGetInstanceExplorer(ptr) @ stdcall PathUndecorateA(str) @ stdcall PathUndecorateW(wstr) -@ stub PathUnExpandEnvStringsA -@ stub PathUnExpandEnvStringsW +@ stdcall PathUnExpandEnvStringsA(str ptr long) +@ stdcall PathUnExpandEnvStringsW(wstr ptr long) @ stdcall SHCopyKeyA(long str long long) @ stdcall SHCopyKeyW(long wstr long long) @ stdcall SHAutoComplete(ptr long) From 05ba38b0819d5d70c30e4ea2716239c32f44ab24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 14 Feb 2005 14:55:38 +0000 Subject: [PATCH 045/248] Sync to Wine-20050211 James Hawkins - use only stored result of Interlocked* in AddRef/Release - expand TRACEs to display the ref count Hans Leidekker - Stub implementations for PathUnExpandEnvStringsSHRegEnumUSValue{A,W}, SHRegCreateUSKey{A,W}, SHRegDeleteEmptyUSKey{A,W}, SHRegDeleteUSValue{A,W}, SHRegEnumUSValue{A,W}. - Implement and test PathIsValidChar{A,W}. Paul Vriens - Change the order of Src and Dst in CopyKey calls/functions. svn path=/trunk/; revision=13560 --- reactos/w32api/include/shlwapi.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/w32api/include/shlwapi.h b/reactos/w32api/include/shlwapi.h index 5fdc02574ff..98a3517fffa 100644 --- a/reactos/w32api/include/shlwapi.h +++ b/reactos/w32api/include/shlwapi.h @@ -520,8 +520,8 @@ WINSHLWAPI LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); WINSHLWAPI HKEY WINAPI SHRegDuplicateHKey(HKEY); WINSHLWAPI LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS); WINSHLWAPI LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI DWORD WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); -WINSHLWAPI DWORD WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL); WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL); WINSHLWAPI DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD); From e2e83d6591e8c3a5f84c0d1c540bcdbaad80c15c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 14 Feb 2005 15:04:09 +0000 Subject: [PATCH 046/248] Sync to Wine-20050211 James Hawkins - Properly implement DllCanUnloadNow ref counting. - Use only stored result of Interlocked* in AddRef/Release. - Expand TRACEs to display the ref count. svn path=/trunk/; revision=13561 --- reactos/lib/urlmon/sec_mgr.c | 37 ++++++++++++++++++++------------ reactos/lib/urlmon/umon.c | 19 +++++++++------- reactos/lib/urlmon/urlmon_main.c | 19 +++++++++++----- reactos/lib/urlmon/urlmon_main.h | 7 ++++++ 4 files changed, 55 insertions(+), 27 deletions(-) diff --git a/reactos/lib/urlmon/sec_mgr.c b/reactos/lib/urlmon/sec_mgr.c index 10fc1a88d34..99162c40002 100644 --- a/reactos/lib/urlmon/sec_mgr.c +++ b/reactos/lib/urlmon/sec_mgr.c @@ -78,25 +78,30 @@ static HRESULT WINAPI SecManagerImpl_QueryInterface(IInternetSecurityManager* if static ULONG WINAPI SecManagerImpl_AddRef(IInternetSecurityManager* iface) { SecManagerImpl *This = (SecManagerImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)\n",This); + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); - return InterlockedIncrement(&This->ref); + URLMON_LockModule(); + + return refCount; } static ULONG WINAPI SecManagerImpl_Release(IInternetSecurityManager* iface) { SecManagerImpl *This = (SecManagerImpl *)iface; - ULONG ref; - TRACE("(%p)\n",This); + ULONG refCount = InterlockedDecrement(&This->ref); - ref = InterlockedDecrement(&This->ref); + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); /* destroy the object if there's no more reference on it */ - if (ref==0){ + if (!refCount){ HeapFree(GetProcessHeap(),0,This); } - return ref; + + URLMON_UnlockModule(); + + return refCount; } static HRESULT WINAPI SecManagerImpl_SetSecuritySite(IInternetSecurityManager *iface, @@ -238,10 +243,13 @@ static HRESULT WINAPI ZoneMgrImpl_QueryInterface(IInternetZoneManager* iface, RE static ULONG WINAPI ZoneMgrImpl_AddRef(IInternetZoneManager* iface) { ZoneMgrImpl* This = (ZoneMgrImpl*)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p) was %lu\n", This, This->ref); + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); - return InterlockedIncrement(&This->ref); + URLMON_LockModule(); + + return refCount; } /******************************************************************** @@ -250,15 +258,16 @@ static ULONG WINAPI ZoneMgrImpl_AddRef(IInternetZoneManager* iface) static ULONG WINAPI ZoneMgrImpl_Release(IInternetZoneManager* iface) { ZoneMgrImpl* This = (ZoneMgrImpl*)iface; - ULONG ref; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p) was %lu\n", This, This->ref); - ref = InterlockedDecrement(&This->ref); + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); - if(!ref) + if(!refCount) HeapFree(GetProcessHeap(), 0, This); - return ref; + URLMON_UnlockModule(); + + return refCount; } /******************************************************************** diff --git a/reactos/lib/urlmon/umon.c b/reactos/lib/urlmon/umon.c index adac1efccdd..7436ed21c25 100644 --- a/reactos/lib/urlmon/umon.c +++ b/reactos/lib/urlmon/umon.c @@ -103,10 +103,13 @@ static HRESULT WINAPI URLMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid, static ULONG WINAPI URLMonikerImpl_AddRef(IMoniker* iface) { URLMonikerImpl *This = (URLMonikerImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)\n",This); + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); - return InterlockedIncrement(&This->ref); + URLMON_LockModule(); + + return refCount; } /****************************************************************************** @@ -115,19 +118,19 @@ static ULONG WINAPI URLMonikerImpl_AddRef(IMoniker* iface) static ULONG WINAPI URLMonikerImpl_Release(IMoniker* iface) { URLMonikerImpl *This = (URLMonikerImpl *)iface; - ULONG ref; + ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)\n",This); - - ref = InterlockedDecrement(&This->ref); + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); /* destroy the object if there's no more reference on it */ - if (ref == 0) { + if (!refCount) { HeapFree(GetProcessHeap(),0,This->URLName); HeapFree(GetProcessHeap(),0,This); } - return ref; + URLMON_UnlockModule(); + + return refCount; } /****************************************************************************** diff --git a/reactos/lib/urlmon/urlmon_main.c b/reactos/lib/urlmon/urlmon_main.c index 839882fbb1e..93439f48196 100644 --- a/reactos/lib/urlmon/urlmon_main.c +++ b/reactos/lib/urlmon/urlmon_main.c @@ -37,6 +37,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon); +LONG URLMON_refCount = 0; + HINSTANCE URLMON_hInstance = 0; /*********************************************************************** @@ -76,9 +78,7 @@ HRESULT WINAPI URLMON_DllInstall(BOOL bInstall, LPCWSTR cmdline) */ HRESULT WINAPI URLMON_DllCanUnloadNow(void) { - FIXME("(void): stub\n"); - - return S_FALSE; + return URLMON_refCount != 0 ? S_FALSE : S_OK; } @@ -125,6 +125,8 @@ CF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) static ULONG WINAPI CF_AddRef(LPCLASSFACTORY iface) { IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + URLMON_LockModule(); + return InterlockedIncrement(&This->ref); } @@ -137,6 +139,8 @@ static ULONG WINAPI CF_Release(LPCLASSFACTORY iface) if (ref == 0) HeapFree(GetProcessHeap(), 0, This); + URLMON_UnlockModule(); + return ref; } @@ -160,8 +164,13 @@ static HRESULT WINAPI CF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, static HRESULT WINAPI CF_LockServer(LPCLASSFACTORY iface,BOOL dolock) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; - FIXME("(%p)->(%d),stub!\n",This,dolock); + TRACE("(%d)\n", dolock); + + if (dolock) + URLMON_LockModule(); + else + URLMON_UnlockModule(); + return S_OK; } diff --git a/reactos/lib/urlmon/urlmon_main.h b/reactos/lib/urlmon/urlmon_main.h index 7bd3b06b54d..4f9dc6e3a81 100644 --- a/reactos/lib/urlmon/urlmon_main.h +++ b/reactos/lib/urlmon/urlmon_main.h @@ -28,6 +28,13 @@ extern HINSTANCE URLMON_hInstance; extern HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); extern HRESULT ZoneMgrImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +/********************************************************************** + * Dll lifetime tracking declaration for urlmon.dll + */ +extern LONG URLMON_refCount; +static inline void URLMON_LockModule() { InterlockedIncrement( &URLMON_refCount ); } +static inline void URLMON_UnlockModule() { InterlockedDecrement( &URLMON_refCount ); } + #define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field)) #endif /* __WINE_URLMON_MAIN_H */ From 40623e356a5b936ff09229a039ac23d915af53db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 14 Feb 2005 15:55:32 +0000 Subject: [PATCH 047/248] Sync to Wine-20050211 Oleh R. Nykyforchyn - Ukrainian codepage 21866 added and respective files corrected. Two keyboard layouts (for Ukrainian and Russian) added. svn path=/trunk/; revision=13562 --- reactos/lib/unicode/Makefile.in | 1 + reactos/lib/unicode/c_21866.c | 716 ++++++++++++++++++++++++++++++++ reactos/lib/unicode/cpmap.pl | 1 + reactos/lib/unicode/cptable.c | 4 +- 4 files changed, 721 insertions(+), 1 deletion(-) create mode 100644 reactos/lib/unicode/c_21866.c diff --git a/reactos/lib/unicode/Makefile.in b/reactos/lib/unicode/Makefile.in index 9787346037b..2b05383a7a0 100644 --- a/reactos/lib/unicode/Makefile.in +++ b/reactos/lib/unicode/Makefile.in @@ -53,6 +53,7 @@ CODEPAGES = \ 10081 \ 20866 \ 20932 \ + 21866 \ 28591 \ 28592 \ 28593 \ diff --git a/reactos/lib/unicode/c_21866.c b/reactos/lib/unicode/c_21866.c new file mode 100644 index 00000000000..c79376f776d --- /dev/null +++ b/reactos/lib/unicode/c_21866.c @@ -0,0 +1,716 @@ +/* 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, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 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, + 0x3f, 0x3f, 0x3f, 0x3f, 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, + uni2cp_low, + uni2cp_high +}; diff --git a/reactos/lib/unicode/cpmap.pl b/reactos/lib/unicode/cpmap.pl index 12b9dbb963a..deea544973e 100644 --- a/reactos/lib/unicode/cpmap.pl +++ b/reactos/lib/unicode/cpmap.pl @@ -82,6 +82,7 @@ $DEF_CHAR = ord '?'; [ 10081, "VENDORS/MICSFT/MAC/TURKISH.TXT", "Mac Turkish" ], [ 20866, "VENDORS/MISC/KOI8-R.TXT", "Russian KOI8" ], [ 20932, "OBSOLETE/EASTASIA/JIS/JIS0208.TXT", "EUC-JP" ], + [ 21866, "VENDORS/MISC/KOI8-U.TXT", "Ukrainian KOI8" ], [ 28591, "ISO8859/8859-1.TXT", "ISO 8859-1 Latin 1" ], [ 28592, "ISO8859/8859-2.TXT", "ISO 8859-2 Latin 2 (East European)" ], [ 28593, "ISO8859/8859-3.TXT", "ISO 8859-3 Latin 3 (South European)" ], diff --git a/reactos/lib/unicode/cptable.c b/reactos/lib/unicode/cptable.c index 6c1b3dfaef6..8fcc910784b 100644 --- a/reactos/lib/unicode/cptable.c +++ b/reactos/lib/unicode/cptable.c @@ -69,6 +69,7 @@ extern union cptable cptable_10079; extern union cptable cptable_10081; 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; @@ -84,7 +85,7 @@ extern union cptable cptable_28604; extern union cptable cptable_28605; extern union cptable cptable_28606; -static const union cptable * const cptables[59] = +static const union cptable * const cptables[60] = { &cptable_037, &cptable_424, @@ -131,6 +132,7 @@ static const union cptable * const cptables[59] = &cptable_10081, &cptable_20866, &cptable_20932, + &cptable_21866, &cptable_28591, &cptable_28592, &cptable_28593, From 04380923bf83720d253f482eecb72b53b23b7e6b Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 16:41:53 +0000 Subject: [PATCH 048/248] don't remove the timer from the list before walking to the next timer. also handle over-due timers in KeSetTimerEx(). This should make the system bootable again. svn path=/trunk/; revision=13566 --- reactos/ntoskrnl/ke/timer.c | 47 ++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/reactos/ntoskrnl/ke/timer.c b/reactos/ntoskrnl/ke/timer.c index 9ef0be57a8f..6440cc9d61e 100644 --- a/reactos/ntoskrnl/ke/timer.c +++ b/reactos/ntoskrnl/ke/timer.c @@ -200,9 +200,8 @@ KeSetTimerEx (PKTIMER Timer, /* Insert it */ if (!KiInsertTimer(Timer, DueTime)) { - - /* FIXME: I will think about how to handle this and fix it ASAP -- Alex */ - DPRINT1("CRITICAL UNHANDLED CASE: TIMER ALREADY EXPIRED!!!\n"); + + KiHandleExpiredTimer(Timer); }; /* Release Dispatcher Lock */ @@ -221,43 +220,44 @@ KiExpireTimers(PKDPC Dpc, PVOID SystemArgument2) { ULONG Eip = (ULONG)SystemArgument1; - PKTIMER Timer = NULL; + PKTIMER Timer; ULONGLONG InterruptTime; LIST_ENTRY ExpiredTimerList; PLIST_ENTRY CurrentEntry = NULL; KIRQL OldIrql; DPRINT("KiExpireTimers(Dpc: %x)\n", Dpc); + + /* Initialize the Expired Timer List */ + InitializeListHead(&ExpiredTimerList); /* Lock the Database and Raise IRQL */ OldIrql = KeAcquireDispatcherDatabaseLock(); - - /* Initialize the Expired Timer List */ - InitializeListHead(&ExpiredTimerList); /* Query Interrupt Times */ InterruptTime = KeQueryInterruptTime(); /* Loop through the Timer List and remove Expired Timers. Insert them into the Expired Listhead */ - for (CurrentEntry = KiTimerListHead.Flink; CurrentEntry != &KiTimerListHead; CurrentEntry = CurrentEntry->Flink) { + CurrentEntry = KiTimerListHead.Flink; + while (CurrentEntry != &KiTimerListHead) { /* Get the Current Timer */ Timer = CONTAINING_RECORD(CurrentEntry, KTIMER, TimerListEntry); DPRINT("Looping for Timer: %x. Duetime: %I64d. InterruptTime %I64d \n", Timer, Timer->DueTime.QuadPart, InterruptTime); + CurrentEntry = CurrentEntry->Flink; + /* Check if we have to Expire it */ - if (InterruptTime < Timer->DueTime.QuadPart) break; + if (InterruptTime >= Timer->DueTime.QuadPart) { - /* Remove it from the Timer List, add it to the Expired List */ - RemoveEntryList(&Timer->TimerListEntry); - InsertTailList(&ExpiredTimerList, &Timer->TimerListEntry); + /* Remove it from the Timer List, add it to the Expired List */ + RemoveEntryList(&Timer->TimerListEntry); + InsertTailList(&ExpiredTimerList, &Timer->TimerListEntry); + } } /* Expire the Timers */ - while (!IsListEmpty(&ExpiredTimerList)) { - - /* Get the Next Entry */ - CurrentEntry = RemoveHeadList(&ExpiredTimerList); + while ((CurrentEntry = RemoveHeadList(&ExpiredTimerList)) != &ExpiredTimerList) { /* Get the Timer */ Timer = CONTAINING_RECORD(CurrentEntry, KTIMER, TimerListEntry); @@ -287,9 +287,12 @@ KiHandleExpiredTimer(PKTIMER Timer) LARGE_INTEGER DueTime; DPRINT("HandleExpiredTime(Timer %x)\n", Timer); - /* First of all, remove the Timer */ - Timer->Header.Inserted = FALSE; - RemoveEntryList(&Timer->TimerListEntry); + if(Timer->Header.Inserted) { + + /* First of all, remove the Timer */ + Timer->Header.Inserted = FALSE; + RemoveEntryList(&Timer->TimerListEntry); + } /* Set it as Signaled */ DPRINT("Setting Timer as Signaled\n"); @@ -302,9 +305,9 @@ KiHandleExpiredTimer(PKTIMER Timer) /* Reinsert the Timer */ DueTime.QuadPart = Timer->Period * -SYSTEM_TIME_UNITS_PER_MSEC; if (!KiInsertTimer(Timer, DueTime)) { - - /* FIXME: I will think about how to handle this and fix it ASAP -- Alex */ - DPRINT1("CRITICAL UNHANDLED CASE: TIMER ALREADY EXPIRED!!!\n"); + + /* FIXME: I will think about how to handle this and fix it ASAP -- Alex */ + DPRINT1("CRITICAL UNHANDLED CASE: TIMER ALREADY EXPIRED!!!\n"); }; } From f9f5d877423a08661366ab310cf43e989f751350 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 16:49:36 +0000 Subject: [PATCH 049/248] fixed typo and don't use memcpy to just copy a 32bit variable... svn path=/trunk/; revision=13567 --- reactos/lib/kernel32/process/proc.c | 2 +- reactos/ntoskrnl/include/internal/ex.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/lib/kernel32/process/proc.c b/reactos/lib/kernel32/process/proc.c index 83cf6788544..27c867dce34 100644 --- a/reactos/lib/kernel32/process/proc.c +++ b/reactos/lib/kernel32/process/proc.c @@ -297,7 +297,7 @@ GetExitCodeProcess(HANDLE hProcess, return(FALSE); } - memcpy(lpExitCode, &ProcessBasic.ExitStatus, sizeof(DWORD)); + *lpExitCode = (DWORD)ProcessBasic.ExitStatus; return(TRUE); } diff --git a/reactos/ntoskrnl/include/internal/ex.h b/reactos/ntoskrnl/include/internal/ex.h index 2f7841c0d2c..8c732db7642 100644 --- a/reactos/ntoskrnl/include/internal/ex.h +++ b/reactos/ntoskrnl/include/internal/ex.h @@ -121,7 +121,7 @@ NTSTATUS ExpSetTimeZoneInformation(PTIME_ZONE_INFORMATION TimeZoneInformation); NTSTATUS -ExpAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId);; +ExpAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId); #define InterlockedDecrementUL(Addend) \ (ULONG)InterlockedDecrement((PLONG)(Addend)) From 2e2b7b407310bf625ba57ed4bb16ffdd4d97492a Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 17:03:16 +0000 Subject: [PATCH 050/248] don't walk all the timers as they're sorted. svn path=/trunk/; revision=13568 --- reactos/ntoskrnl/ke/timer.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/reactos/ntoskrnl/ke/timer.c b/reactos/ntoskrnl/ke/timer.c index 6440cc9d61e..c46db9ddcff 100644 --- a/reactos/ntoskrnl/ke/timer.c +++ b/reactos/ntoskrnl/ke/timer.c @@ -245,15 +245,14 @@ KiExpireTimers(PKDPC Dpc, Timer = CONTAINING_RECORD(CurrentEntry, KTIMER, TimerListEntry); DPRINT("Looping for Timer: %x. Duetime: %I64d. InterruptTime %I64d \n", Timer, Timer->DueTime.QuadPart, InterruptTime); - CurrentEntry = CurrentEntry->Flink; - /* Check if we have to Expire it */ - if (InterruptTime >= Timer->DueTime.QuadPart) { + if (InterruptTime < Timer->DueTime.QuadPart) break; + + CurrentEntry = CurrentEntry->Flink; - /* Remove it from the Timer List, add it to the Expired List */ - RemoveEntryList(&Timer->TimerListEntry); - InsertTailList(&ExpiredTimerList, &Timer->TimerListEntry); - } + /* Remove it from the Timer List, add it to the Expired List */ + RemoveEntryList(&Timer->TimerListEntry); + InsertTailList(&ExpiredTimerList, &Timer->TimerListEntry); } /* Expire the Timers */ From 861abd2956ecb04559de0a0b383089739bb38e46 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 14 Feb 2005 17:10:20 +0000 Subject: [PATCH 051/248] Export splay-tree and generic table functions. svn path=/trunk/; revision=13569 --- reactos/lib/ntdll/def/ntdll.def | 40 ++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/reactos/lib/ntdll/def/ntdll.def b/reactos/lib/ntdll/def/ntdll.def index 5a1bd2a8778..42357752c2c 100644 --- a/reactos/lib/ntdll/def/ntdll.def +++ b/reactos/lib/ntdll/def/ntdll.def @@ -365,12 +365,13 @@ RtlCutoverTimeToSystemTime@16 RtlDeNormalizeProcessParams@4 RtlDecompressBuffer@24 RtlDecompressFragment@32 -;RtlDelete +RtlDelete@4 RtlDeleteAce@8 RtlDeleteAtomFromAtomTable@8 RtlDeleteCriticalSection@4 -;RtlDeleteElementGenericTable -;RtlDeleteNoSplay +RtlDeleteElementGenericTable@8 +RtlDeleteElementGenericTableAvl@8 +RtlDeleteNoSplay@8 RtlDeleteOwnersRanges@8 RtlDeleteRange@24 RtlDeleteRegistryValue@12 @@ -399,8 +400,11 @@ RtlEnlargedUnsignedDivide@16 RtlEnlargedUnsignedMultiply@8 RtlEnterCriticalSection@4 RtlEnumProcessHeaps@8 -;RtlEnumerateGenericTable -;RtlEnumerateGenericTableWithoutSplaying +RtlEnumerateGenericTable@8 +RtlEnumerateGenericTableAvl@8 +RtlEnumerateGenericTableLikeADirectory@28 +RtlEnumerateGenericTableWithoutSplaying@8 +RtlEnumerateGenericTableWithoutSplayingAvl@8 RtlEqualComputerName@8 RtlEqualDomainName@8 RtlEqualLuid@8 @@ -449,7 +453,8 @@ RtlGetCompressionWorkSpaceSize@12 RtlGetControlSecurityDescriptor@12 RtlGetCurrentDirectory_U@8 RtlGetDaclSecurityDescriptor@16 -;RtlGetElementGenericTable +RtlGetElementGenericTable@8 +RtlGetElementGenericTableAvl@8 RtlGetFirstRange@12 RtlGetFullPathName_U@16 RtlGetGroupSecurityDescriptor@12 @@ -483,13 +488,17 @@ RtlInitializeBitMap@12 RtlInitializeContext@20 RtlInitializeCriticalSection@4 RtlInitializeCriticalSectionAndSpinCount@8 -;RtlInitializeGenericTable +RtlInitializeGenericTable@20 +RtlInitializeGenericTableAvl@20 RtlInitializeHandleTable@12 RtlInitializeRangeList@4 RtlInitializeResource@4 ;RtlInitializeRXact RtlInitializeSid@12 -;RtlInsertElementGenericTable +RtlInsertElementGenericTable@16 +RtlInsertElementGenericTableAvl@16 +RtlInsertElementGenericTableFull@24 +RtlInsertElementGenericTableFullAvl@24 RtlInt64ToUnicodeString@16 RtlIntegerToChar@16 RtlIntegerToUnicodeString@12 @@ -512,6 +521,7 @@ RtlIpv6StringToAddressExW@16 RtlIpv6StringToAddressW@16 RtlIsDosDeviceName_U@4 RtlIsGenericTableEmpty@4 +RtlIsGenericTableEmptyAvl@4 RtlIsNameLegalDOS8Dot3@12 RtlIsRangeAvailable@40 RtlIsTextUnicode@12 @@ -532,7 +542,10 @@ RtlLengthSid@4 RtlLocalTimeToSystemTime@8 RtlLockHeap@4 RtlLookupAtomInAtomTable@12 -;RtlLookupElementGenericTable +RtlLookupElementGenericTable@8 +RtlLookupElementGenericTableAvl@8 +RtlLookupElementGenericTableFull@16 +RtlLookupElementGenericTableFullAvl@16 RtlMakeSelfRelativeSD@12 RtlMapGenericMask@8 RtlMergeRangeLists@16 @@ -545,7 +558,8 @@ RtlMultiByteToUnicodeSize@12 RtlNormalizeProcessParams@4 RtlNtPathNameToDosPathName@16 RtlNtStatusToDosError@4 -;RtlNumberGenericTableElements +RtlNumberGenericTableElements@4 +RtlNumberGenericTableElementsAvl@4 RtlNumberOfClearBits@4 RtlNumberOfSetBits@4 RtlOemStringToUnicodeSize@4 @@ -573,8 +587,8 @@ RtlRaiseStatus@4 RtlRandom@4 RtlRandomEx=RtlRandom@4 RtlReAllocateHeap@16 -;RtlRealPredecessor -;RtlRealSuccessor +RtlRealPredecessor@4 +RtlRealSuccessor@4 RtlReleasePebLock@0 RtlReleaseResource@4 ;RtlRemoteCall @@ -607,7 +621,7 @@ RtlSetTimeZoneInformation@4 ;RtlSetUserFlagsHeap ;RtlSetUserValueHeap RtlSizeHeap@12 -;RtlSplay +RtlSplay@4 ;RtlStartRXact RtlStringFromGUID@8 RtlSubAuthorityCountSid@4 From eb51ddf583d4f410dfa5c443a7e2b4c56b9c8001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 14 Feb 2005 18:36:46 +0000 Subject: [PATCH 052/248] Delete old version in preparation of vendor drop svn path=/trunk/; revision=13572 --- reactos/tools/winebuild/Makefile | 43 - reactos/tools/winebuild/Makefile.in | 42 - reactos/tools/winebuild/build.h | 210 ---- reactos/tools/winebuild/import.c | 1089 ------------------- reactos/tools/winebuild/main.c | 468 --------- reactos/tools/winebuild/mkstemps.c | 138 --- reactos/tools/winebuild/parser.c | 997 ------------------ reactos/tools/winebuild/relay.c | 1208 ---------------------- reactos/tools/winebuild/res16.c | 360 ------- reactos/tools/winebuild/res32.c | 489 --------- reactos/tools/winebuild/spec16.c | 830 --------------- reactos/tools/winebuild/spec32.c | 1036 ------------------- reactos/tools/winebuild/utils.c | 415 -------- reactos/tools/winebuild/winebuild.man.in | 426 -------- reactos/tools/winebuild/winehq2ros.patch | 332 ------ reactos/tools/winebuild/winglue.h | 31 - 16 files changed, 8114 deletions(-) delete mode 100644 reactos/tools/winebuild/Makefile delete mode 100644 reactos/tools/winebuild/Makefile.in delete mode 100644 reactos/tools/winebuild/build.h delete mode 100644 reactos/tools/winebuild/import.c delete mode 100644 reactos/tools/winebuild/main.c delete mode 100644 reactos/tools/winebuild/mkstemps.c delete mode 100644 reactos/tools/winebuild/parser.c delete mode 100644 reactos/tools/winebuild/relay.c delete mode 100644 reactos/tools/winebuild/res16.c delete mode 100644 reactos/tools/winebuild/res32.c delete mode 100644 reactos/tools/winebuild/spec16.c delete mode 100644 reactos/tools/winebuild/spec32.c delete mode 100644 reactos/tools/winebuild/utils.c delete mode 100644 reactos/tools/winebuild/winebuild.man.in delete mode 100644 reactos/tools/winebuild/winehq2ros.patch delete mode 100644 reactos/tools/winebuild/winglue.h diff --git a/reactos/tools/winebuild/Makefile b/reactos/tools/winebuild/Makefile deleted file mode 100644 index 925892a46bc..00000000000 --- a/reactos/tools/winebuild/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# -# winebuild -# -PATH_TO_TOP = ../.. - -include $(PATH_TO_TOP)/rules.mak - -TARGET = winebuild$(EXE_POSTFIX) - -all: $(TARGET) - -# relay.o spec16.o -OBJECTS = \ - import.o \ - main.o \ - parser.o \ - res16.o \ - res32.o \ - spec32.o \ - utils.o \ - mkstemps.o - -CLEAN_FILES = *.o $(TARGET) - -HOST_CFLAGS = -D__USE_W32API -I$(PATH_TO_TOP)/include/wine - -%.o: %.c - $(HOST_CC) $(HOST_CFLAGS) -c $< -o $@ - -$(TARGET): $(OBJECTS) - $(HOST_CC) $(OBJECTS) -o $(TARGET) - -ifeq ($(HOST),mingw32-linux) -clean: - rm -f $(CLEAN_FILES) -endif -ifneq ($(HOST),mingw32-linux) -clean: - del $(CLEAN_FILES) -endif - -.PHONY: clean - diff --git a/reactos/tools/winebuild/Makefile.in b/reactos/tools/winebuild/Makefile.in deleted file mode 100644 index 39dd8c840a0..00000000000 --- a/reactos/tools/winebuild/Makefile.in +++ /dev/null @@ -1,42 +0,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -EXEEXT = @EXEEXT@ - -PROGRAMS = winebuild$(EXEEXT) -MODULE = none - -C_SRCS = \ - import.c \ - main.c \ - parser.c \ - relay.c \ - res16.c \ - res32.c \ - spec16.c \ - spec32.c \ - utils.c - -all: $(PROGRAMS) winebuild.man - -@MAKE_RULES@ - -winebuild$(EXEEXT): $(OBJS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBPORT) $(LDFLAGS) - -winebuild.man: winebuild.man.in - sed -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' $(SRCDIR)/winebuild.man.in >$@ || ($(RM) $@ && false) - -install:: $(PROGRAMS) winebuild.man - $(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext) - $(INSTALL_PROGRAM) winebuild$(EXEEXT) $(bindir)/winebuild$(EXEEXT) - $(INSTALL_DATA) winebuild.man $(mandir)/man$(prog_manext)/winebuild.$(prog_manext) - -uninstall:: - $(RM) $(bindir)/winebuild$(EXEEXT) $(mandir)/man$(prog_manext)/winebuild.$(prog_manext) - -clean:: - $(RM) winebuild.man - -### Dependencies: diff --git a/reactos/tools/winebuild/build.h b/reactos/tools/winebuild/build.h deleted file mode 100644 index c58ca840f20..00000000000 --- a/reactos/tools/winebuild/build.h +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright 1993 Robert J. Amstadt - * Copyright 1995 Martin von Loewis - * Copyright 1995, 1996, 1997 Alexandre Julliard - * Copyright 1997 Eric Youngdale - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef __WINE_BUILD_H -#define __WINE_BUILD_H - -#ifndef __WINE_CONFIG_H -# error You must include config.h to use this header -#endif - -#include -#include -#include - -typedef enum -{ - TYPE_VARIABLE, /* variable */ - TYPE_PASCAL, /* pascal function (Win16) */ - TYPE_ABS, /* absolute value (Win16) */ - TYPE_STUB, /* unimplemented stub */ - TYPE_STDCALL, /* stdcall function (Win32) */ - TYPE_CDECL, /* cdecl function (Win32) */ - TYPE_VARARGS, /* varargs function (Win32) */ - TYPE_EXTERN, /* external symbol (Win32) */ - TYPE_NBTYPES -} ORD_TYPE; - -typedef enum -{ - SPEC_WIN16, - SPEC_WIN32 -} SPEC_TYPE; - -typedef struct -{ - int n_values; - int *values; -} ORD_VARIABLE; - -typedef struct -{ - char arg_types[21]; -} ORD_FUNCTION; - -typedef struct -{ - int value; -} ORD_ABS; - -typedef struct -{ - ORD_TYPE type; - int ordinal; - int offset; - int lineno; - int flags; - char *name; /* public name of this function */ - char *link_name; /* name of the C symbol to link to */ - char *export_name; /* name exported under for noname exports */ - union - { - ORD_VARIABLE var; - ORD_FUNCTION func; - ORD_ABS abs; - } u; -} ORDDEF; - -typedef struct -{ - char *file_name; /* file name of the dll */ - char *dll_name; /* internal name of the dll */ - char *owner_name; /* name of the 32-bit dll owning this one */ - char *init_func; /* initialization routine */ - SPEC_TYPE type; /* type of dll (Win16/Win32) */ - int base; /* ordinal base */ - int limit; /* ordinal limit */ - int stack_size; /* exe stack size */ - int heap_size; /* exe heap size */ - int nb_entry_points; /* number of used entry points */ - int alloc_entry_points; /* number of allocated entry points */ - int nb_names; /* number of entry points with names */ - int nb_resources; /* number of resources */ - int characteristics; /* characteristics for the PE header */ - int subsystem; /* subsystem id */ - int subsystem_major; /* subsystem version major number */ - int subsystem_minor; /* subsystem version minor number */ - ORDDEF *entry_points; /* dll entry points */ - ORDDEF **names; /* array of entry point names (points into entry_points) */ - ORDDEF **ordinals; /* array of dll ordinals (points into entry_points) */ - struct resource *resources; /* array of dll resources (format differs between Win16/Win32) */ -} DLLSPEC; - -/* entry point flags */ -#define FLAG_NORELAY 0x01 /* don't use relay debugging for this function */ -#define FLAG_NONAME 0x02 /* don't import function by name */ -#define FLAG_RET16 0x04 /* function returns a 16-bit value */ -#define FLAG_RET64 0x08 /* function returns a 64-bit value */ -#define FLAG_I386 0x10 /* function is i386 only */ -#define FLAG_REGISTER 0x20 /* use register calling convention */ -#define FLAG_PRIVATE 0x40 /* function is private (cannot be imported) */ - -#define FLAG_FORWARD 0x80 /* function is a forwarded name */ - - /* Offset of a structure field relative to the start of the struct */ -#define STRUCTOFFSET(type,field) ((int)&((type *)0)->field) - - /* Offset of register relative to the start of the CONTEXT struct */ -#define CONTEXTOFFSET(reg) STRUCTOFFSET(CONTEXT86,reg) - - /* Offset of register relative to the start of the STACK16FRAME struct */ -#define STACK16OFFSET(reg) STRUCTOFFSET(STACK16FRAME,reg) - - /* Offset of register relative to the start of the STACK32FRAME struct */ -#define STACK32OFFSET(reg) STRUCTOFFSET(STACK32FRAME,reg) - - /* Offset of the stack pointer relative to %fs:(0) */ -#define STACKOFFSET (STRUCTOFFSET(TEB,cur_stack)) - - -#define MAX_ORDINALS 65535 - -/* global functions */ - -#ifndef __GNUC__ -#define __attribute__(X) -#endif - -extern void *xmalloc (size_t size); -extern void *xrealloc (void *ptr, size_t size); -extern char *xstrdup( const char *str ); -extern char *strupper(char *s); -extern void fatal_error( const char *msg, ... ) - __attribute__ ((__format__ (__printf__, 1, 2))); -extern void fatal_perror( const char *msg, ... ) - __attribute__ ((__format__ (__printf__, 1, 2))); -extern void error( const char *msg, ... ) - __attribute__ ((__format__ (__printf__, 1, 2))); -extern void warning( const char *msg, ... ) - __attribute__ ((__format__ (__printf__, 1, 2))); -extern void output_standard_file_header( FILE *outfile ); -extern FILE *open_input_file( const char *srcdir, const char *name ); -extern void close_input_file( FILE *file ); -extern void dump_bytes( FILE *outfile, const unsigned char *data, int len, - const char *label, int constant ); -extern int remove_stdcall_decoration( char *name ); -extern DLLSPEC *alloc_dll_spec(void); -extern void free_dll_spec( DLLSPEC *spec ); -extern const char *make_c_identifier( const char *str ); -extern int get_alignment(int alignBoundary); - -extern void add_import_dll( const char *name, int delay ); -extern void add_ignore_symbol( const char *name ); -extern void read_undef_symbols( char **argv ); -extern int resolve_imports( DLLSPEC *spec ); -extern int output_imports( FILE *outfile, DLLSPEC *spec ); -extern int load_res32_file( const char *name, DLLSPEC *spec ); -extern void output_resources( FILE *outfile, DLLSPEC *spec ); -extern void load_res16_file( const char *name, DLLSPEC *spec ); -extern int output_res16_data( FILE *outfile, DLLSPEC *spec ); -extern int output_res16_directory( unsigned char *buffer, DLLSPEC *spec ); -extern void output_dll_init( FILE *outfile, const char *constructor, const char *destructor ); - -extern void BuildRelays16( FILE *outfile ); -extern void BuildRelays32( FILE *outfile ); -extern void BuildSpec16File( FILE *outfile, DLLSPEC *spec ); -extern void BuildSpec32File( FILE *outfile, DLLSPEC *spec ); -extern void BuildDef32File( FILE *outfile, DLLSPEC *spec ); -extern void BuildDebugFile( FILE *outfile, const char *srcdir, char **argv ); -extern void BuildPedllFile( FILE *outfile, DLLSPEC *spec ); - -extern int parse_spec_file( FILE *file, DLLSPEC *spec ); -extern int parse_def_file( FILE *file, DLLSPEC *spec ); -extern int parse_debug_channels( const char *srcdir, const char *filename ); - -/* global variables */ - -extern int current_line; -extern int UsePIC; -extern int debugging; -extern int nb_debug_channels; -extern int nb_lib_paths; -extern int nb_errors; -extern int display_warnings; -extern int kill_at; - -extern char *input_file_name; -extern const char *output_file_name; -extern char **debug_channels; -extern char **lib_path; - -#endif /* __WINE_BUILD_H */ diff --git a/reactos/tools/winebuild/import.c b/reactos/tools/winebuild/import.c deleted file mode 100644 index e9d98dd3015..00000000000 --- a/reactos/tools/winebuild/import.c +++ /dev/null @@ -1,1089 +0,0 @@ -/* - * DLL imports support - * - * Copyright 2000, 2004 Alexandre Julliard - * Copyright 2000 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#ifdef HAVE_UNISTD_H -# include -#endif - -#include "winglue.h" -#include "build.h" - -struct import -{ - DLLSPEC *spec; /* description of the imported dll */ - int delay; /* delay or not dll loading ? */ - ORDDEF **exports; /* functions exported from this dll */ - int nb_exports; /* number of exported functions */ - ORDDEF **imports; /* functions we want to import from this dll */ - int nb_imports; /* number of imported functions */ -}; - -static char **undef_symbols; /* list of undefined symbols */ -static int nb_undef_symbols = -1; -static int undef_size; - -static char **ignore_symbols; /* list of symbols to ignore */ -static int nb_ignore_symbols; -static int ignore_size; - -static char *ld_tmp_file; /* ld temp file name */ - -static struct import **dll_imports = NULL; -static int nb_imports = 0; /* number of imported dlls (delayed or not) */ -static int nb_delayed = 0; /* number of delayed dlls */ -static int total_imports = 0; /* total number of imported functions */ -static int total_delayed = 0; /* total number of imported functions in delayed DLLs */ - -/* list of symbols that are ignored by default */ -static const char * const default_ignored_symbols[] = -{ - "abs", - "acos", - "asin", - "atan", - "atan2", - "atof", - "atoi", - "atol", - "bsearch", - "ceil", - "cos", - "cosh", - "exp", - "fabs", - "floor", - "fmod", - "frexp", - "labs", - "log", - "log10", - "memchr", - "memcmp", - "memcpy", - "memmove", - "memset", - "modf", - "pow", - "qsort", - "sin", - "sinh", - "sqrt", - "strcat", - "strchr", - "strcmp", - "strcpy", - "strcspn", - "strlen", - "strncat", - "strncmp", - "strncpy", - "strpbrk", - "strrchr", - "strspn", - "strstr", - "tan", - "tanh" -}; - -#ifdef __powerpc__ -# ifdef __APPLE__ -# define ppc_high(mem) "ha16(" mem ")" -# define ppc_low(mem) "lo16(" mem ")" -static const char * const ppc_reg[32] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10","r11","r12","r13","r14","r15", - "r16","r17","r18","r19","r20","r21","r22","r23", - "r24","r25","r26","r27","r28","r29","r30","r31" }; -# else /* __APPLE__ */ -# define ppc_high(mem) "(" mem ")@hi" -# define ppc_low(mem) "(" mem ")@l" -static const char * const ppc_reg[32] = { "0", "1", "2", "3", "4", "5", "6", "7", - "8", "9", "10","11","12","13","14","15", - "16","17","18","19","20","21","22","23", - "24","25","26","27","28","29","30","31" }; -# endif /* __APPLE__ */ -#endif /* __powerpc__ */ - -/* compare function names; helper for resolve_imports */ -static int name_cmp( const void *name, const void *entry ) -{ - return strcmp( *(const char* const *)name, *(const char* const *)entry ); -} - -/* compare function names; helper for resolve_imports */ -static int func_cmp( const void *func1, const void *func2 ) -{ - const ORDDEF *odp1 = *(const ORDDEF * const *)func1; - const ORDDEF *odp2 = *(const ORDDEF * const *)func2; - return strcmp( odp1->name ? odp1->name : odp1->export_name, - odp2->name ? odp2->name : odp2->export_name ); -} - -/* locate a symbol in a (sorted) list */ -inline static const char *find_symbol( const char *name, char **table, int size ) -{ - char **res = NULL; - - if (table) { - res = bsearch( &name, table, size, sizeof(*table), name_cmp ); - } - - return res ? *res : NULL; -} - -/* locate an export in a (sorted) export list */ -inline static ORDDEF *find_export( const char *name, ORDDEF **table, int size ) -{ - ORDDEF func, *odp, **res = NULL; - - func.name = (char *)name; - func.ordinal = -1; - odp = &func; - if (table) res = bsearch( &odp, table, size, sizeof(*table), func_cmp ); - return res ? *res : NULL; -} - -/* sort a symbol table */ -inline static void sort_symbols( char **table, int size ) -{ - if (table ) - qsort( table, size, sizeof(*table), name_cmp ); -} - -inline static void output_function_size( FILE *outfile, const char *name ) -{ -#ifdef HAVE_ASM_DOT_SIZE - fprintf( outfile, " \"\\t.size " __ASM_NAME("%s") ", . - " __ASM_NAME("%s") "\\n\"\n", name, name); -#endif -} - -/* free an import structure */ -static void free_imports( struct import *imp ) -{ - free( imp->exports ); - free( imp->imports ); - free_dll_spec( imp->spec ); - free( imp ); -} - -/* remove the temp file at exit */ -static void remove_ld_tmp_file(void) -{ - if (ld_tmp_file) unlink( ld_tmp_file ); -} - -/* check whether a given dll has already been imported */ -static int is_already_imported( const char *name ) -{ - int i; - - for (i = 0; i < nb_imports; i++) - { - if (!strcmp( dll_imports[i]->spec->file_name, name )) return 1; - } - return 0; -} - -/* open the .so library for a given dll in a specified path */ -static char *try_library_path( const char *path, const char *name ) -{ - char *buffer; - int fd; - - buffer = xmalloc( strlen(path) + strlen(name) + 9 ); - sprintf( buffer, "%s/lib%s.def", path, name ); - - /* check if the file exists */ - if ((fd = open( buffer, O_RDONLY )) != -1) - { - close( fd ); - return buffer; - } - free( buffer ); - return NULL; -} - -/* open the .so library for a given dll */ -static char *open_library( const char *name ) -{ - char *fullname; - int i; - - for (i = 0; i < nb_lib_paths; i++) - { - if ((fullname = try_library_path( lib_path[i], name ))) return fullname; - } - fatal_error( "could not open .def file for %s\n", name ); - return NULL; -} - -/* read in the list of exported symbols of an import library */ -static int read_import_lib( const char *name, struct import *imp ) -{ - FILE *f; - char *fullname; - int i, ret; - DLLSPEC *spec = imp->spec; - - imp->exports = NULL; - imp->nb_exports = 0; - - fullname = open_library( name ); - f = open_input_file( NULL, fullname ); - free( fullname ); - - ret = parse_def_file( f, spec ); - close_input_file( f ); - if (!ret) return 0; - if (is_already_imported( spec->file_name )) return 0; - - imp->exports = xmalloc( spec->nb_entry_points * sizeof(*imp->exports) ); - - for (i = 0; i < spec->nb_entry_points; i++) - { - ORDDEF *odp = &spec->entry_points[i]; - - if (odp->type != TYPE_STDCALL && odp->type != TYPE_CDECL) continue; - if (odp->flags & FLAG_PRIVATE) continue; - imp->exports[imp->nb_exports++] = odp; - } - imp->exports = xrealloc( imp->exports, imp->nb_exports * sizeof(*imp->exports) ); - if (imp->nb_exports) - qsort( imp->exports, imp->nb_exports, sizeof(*imp->exports), func_cmp ); - return 1; -} - -/* add a dll to the list of imports */ -void add_import_dll( const char *name, int delay ) -{ - struct import *imp; - char *fullname; - - fullname = xmalloc( strlen(name) + 5 ); - strcpy( fullname, name ); - if (!strchr( fullname, '.' )) strcat( fullname, ".dll" ); - - /* check if we already imported it */ - if (is_already_imported( fullname )) - { - free( fullname ); - return; - } - - imp = xmalloc( sizeof(*imp) ); - imp->spec = alloc_dll_spec(); - imp->spec->file_name = fullname; - imp->delay = delay; - imp->imports = NULL; - imp->nb_imports = 0; - if (delay) nb_delayed++; - - if (read_import_lib( name, imp )) - { - dll_imports = xrealloc( dll_imports, (nb_imports+1) * sizeof(*dll_imports) ); - dll_imports[nb_imports++] = imp; - } - else - { - free_imports( imp ); - if (nb_errors) exit(1); - } -} - -/* remove an imported dll, based on its index in the dll_imports array */ -static void remove_import_dll( int index ) -{ - struct import *imp = dll_imports[index]; - - memmove( &dll_imports[index], &dll_imports[index+1], sizeof(imp) * (nb_imports - index - 1) ); - nb_imports--; - if (imp->delay) nb_delayed--; - free_imports( imp ); -} - -/* initialize the list of ignored symbols */ -static void init_ignored_symbols(void) -{ - int i; - - nb_ignore_symbols = sizeof(default_ignored_symbols)/sizeof(default_ignored_symbols[0]); - ignore_size = nb_ignore_symbols + 32; - ignore_symbols = xmalloc( ignore_size * sizeof(*ignore_symbols) ); - for (i = 0; i < nb_ignore_symbols; i++) - ignore_symbols[i] = xstrdup( default_ignored_symbols[i] ); -} - -/* add a symbol to the ignored symbol list */ -/* if the name starts with '-' the symbol is removed instead */ -void add_ignore_symbol( const char *name ) -{ - int i; - - if (!ignore_symbols) init_ignored_symbols(); /* first time around, fill list with defaults */ - - if (name[0] == '-') /* remove it */ - { - if (!name[1]) /* remove everything */ - { - for (i = 0; i < nb_ignore_symbols; i++) free( ignore_symbols[i] ); - nb_ignore_symbols = 0; - } - else - { - for (i = 0; i < nb_ignore_symbols; i++) - { - if (!strcmp( ignore_symbols[i], name+1 )) - { - free( ignore_symbols[i] ); - memmove( &ignore_symbols[i], &ignore_symbols[i+1], nb_ignore_symbols - i - 1 ); - nb_ignore_symbols--; - } - } - } - } - else - { - if (nb_ignore_symbols == ignore_size) - { - ignore_size += 32; - ignore_symbols = xrealloc( ignore_symbols, ignore_size * sizeof(*ignore_symbols) ); - } - ignore_symbols[nb_ignore_symbols++] = xstrdup( name ); - } -} - -/* add a function to the list of imports from a given dll */ -static void add_import_func( struct import *imp, ORDDEF *func ) -{ - imp->imports = xrealloc( imp->imports, (imp->nb_imports+1) * sizeof(*imp->imports) ); - imp->imports[imp->nb_imports++] = func; - total_imports++; - if (imp->delay) total_delayed++; -} - -/* add a symbol to the undef list */ -inline static void add_undef_symbol( const char *name ) -{ - if (nb_undef_symbols == undef_size) - { - undef_size += 128; - undef_symbols = xrealloc( undef_symbols, undef_size * sizeof(*undef_symbols) ); - } - undef_symbols[nb_undef_symbols++] = xstrdup( name ); -} - -/* remove all the holes in the undefined symbol list; return the number of removed symbols */ -static int remove_symbol_holes(void) -{ - int i, off; - for (i = off = 0; i < nb_undef_symbols; i++) - { - if (!undef_symbols[i]) off++; - else undef_symbols[i - off] = undef_symbols[i]; - } - nb_undef_symbols -= off; - return off; -} - -/* add a symbol to the extra list, but only if needed */ -static int add_extra_symbol( const char **extras, int *count, const char *name, const DLLSPEC *spec ) -{ - int i; - - if (!find_symbol( name, undef_symbols, nb_undef_symbols )) - { - /* check if the symbol is being exported by this dll */ - for (i = 0; i < spec->nb_entry_points; i++) - { - ORDDEF *odp = &spec->entry_points[i]; - if (odp->type == TYPE_STDCALL || - odp->type == TYPE_CDECL || - odp->type == TYPE_VARARGS || - odp->type == TYPE_EXTERN) - { - if (odp->name && !strcmp( odp->name, name )) return 0; - } - } - extras[*count] = name; - (*count)++; - } - return 1; -} - -/* add the extra undefined symbols that will be contained in the generated spec file itself */ -static void add_extra_undef_symbols( const DLLSPEC *spec ) -{ - const char *extras[10]; - int i, count = 0, nb_stubs = 0, nb_regs = 0; - int kernel_imports = 0, ntdll_imports = 0; - - sort_symbols( undef_symbols, nb_undef_symbols ); - - for (i = 0; i < spec->nb_entry_points; i++) - { - ORDDEF *odp = &spec->entry_points[i]; - if (odp->type == TYPE_STUB) nb_stubs++; - if (odp->flags & FLAG_REGISTER) nb_regs++; - } - - /* add symbols that will be contained in the spec file itself */ - if (!(spec->characteristics & IMAGE_FILE_DLL)) - { - switch (spec->subsystem) - { - case IMAGE_SUBSYSTEM_WINDOWS_GUI: - case IMAGE_SUBSYSTEM_WINDOWS_CUI: - kernel_imports += add_extra_symbol( extras, &count, "GetCommandLineA", spec ); - kernel_imports += add_extra_symbol( extras, &count, "GetStartupInfoA", spec ); - kernel_imports += add_extra_symbol( extras, &count, "GetModuleHandleA", spec ); - kernel_imports += add_extra_symbol( extras, &count, "ExitProcess", spec ); - break; - } - } - if (nb_delayed) - { - kernel_imports += add_extra_symbol( extras, &count, "LoadLibraryA", spec ); - kernel_imports += add_extra_symbol( extras, &count, "GetProcAddress", spec ); - } - if (nb_regs) - ntdll_imports += add_extra_symbol( extras, &count, "__wine_call_from_32_regs", spec ); - if (nb_delayed || nb_stubs) - ntdll_imports += add_extra_symbol( extras, &count, "RtlRaiseException", spec ); - - /* make sure we import the dlls that contain these functions */ - if (kernel_imports) add_import_dll( "kernel32", 0 ); - if (ntdll_imports) add_import_dll( "ntdll", 0 ); - - if (count) - { - for (i = 0; i < count; i++) add_undef_symbol( extras[i] ); - sort_symbols( undef_symbols, nb_undef_symbols ); - } -} - -/* check if a given imported dll is not needed, taking forwards into account */ -static int check_unused( const struct import* imp, const DLLSPEC *spec ) -{ - int i; - const char *file_name = imp->spec->file_name; - size_t len = strlen( file_name ); - const char *p = strchr( file_name, '.' ); - if (p && !strcasecmp( p, ".dll" )) len = p - file_name; - - for (i = spec->base; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (!odp || !(odp->flags & FLAG_FORWARD)) continue; - if (!strncasecmp( odp->link_name, file_name, len ) && - odp->link_name[len] == '.') - return 0; /* found a forward, it is used */ - } - return 1; -} - -/* combine a list of object files with ld into a single object file */ -/* returns the name of the combined file */ -static const char *ldcombine_files( char **argv ) -{ - int i, len = 0; - char *cmd, *ldcmd; - int fd, err; - - if (output_file_name && output_file_name[0]) - { - ld_tmp_file = xmalloc( strlen(output_file_name) + 10 ); - strcpy( ld_tmp_file, output_file_name ); - strcat( ld_tmp_file, ".XXXXXX.o" ); - } - else ld_tmp_file = xstrdup( "/tmp/winebuild.tmp.XXXXXX.o" ); - - if ((fd = mkstemps( ld_tmp_file, 2 ) == -1)) fatal_error( "could not generate a temp file\n" ); - close( fd ); - atexit( remove_ld_tmp_file ); - - ldcmd = getenv("LD"); - if (!ldcmd) ldcmd = "ld"; - for (i = 0; argv[i]; i++) len += strlen(argv[i]) + 1; - cmd = xmalloc( len + strlen(ld_tmp_file) + 8 + strlen(ldcmd) ); - sprintf( cmd, "%s -r -o %s", ldcmd, ld_tmp_file ); - for (i = 0; argv[i]; i++) sprintf( cmd + strlen(cmd), " %s", argv[i] ); - err = system( cmd ); - if (err) fatal_error( "ld -r failed with status %d\n", err ); - free( cmd ); - return ld_tmp_file; -} - -/* read in the list of undefined symbols */ -void read_undef_symbols( char **argv ) -{ - static const char name_prefix[] = __ASM_NAME(""); - static const int prefix_len = sizeof(name_prefix) - 1; - FILE *f; - char buffer[1024]; - int err; - const char *name; - - if (!argv[0]) return; - - undef_size = nb_undef_symbols = 0; - - /* if we have multiple object files, link them together */ - if (argv[1]) name = ldcombine_files( argv ); - else name = argv[0]; - - sprintf( buffer, "nm -u %s", name ); - if (!(f = popen( buffer, "r" ))) - fatal_error( "Cannot execute '%s'\n", buffer ); - - while (fgets( buffer, sizeof(buffer), f )) - { - char *p = buffer + strlen(buffer) - 1; - if (p < buffer) continue; - if (*p == '\n') *p-- = 0; - p = buffer; - while (*p == ' ') p++; - if (p[0] == 'U' && p[1] == ' ' && p[2]) p += 2; - if (prefix_len && !strncmp( p, name_prefix, prefix_len )) p += prefix_len; - add_undef_symbol( p ); - } - if ((err = pclose( f ))) warning( "nm -u %s error %d\n", name, err ); -} - -static void remove_ignored_symbols(void) -{ - int i; - - if (!ignore_symbols) init_ignored_symbols(); - sort_symbols( ignore_symbols, nb_ignore_symbols ); - for (i = 0; i < nb_undef_symbols; i++) - { - if (find_symbol( undef_symbols[i], ignore_symbols, nb_ignore_symbols )) - { - free( undef_symbols[i] ); - undef_symbols[i] = NULL; - } - } - remove_symbol_holes(); -} - -/* resolve the imports for a Win32 module */ -int resolve_imports( DLLSPEC *spec ) -{ - int i, j; - - if (nb_undef_symbols == -1) return 0; /* no symbol file specified */ - - add_extra_undef_symbols( spec ); - remove_ignored_symbols(); - - for (i = 0; i < nb_imports; i++) - { - struct import *imp = dll_imports[i]; - - for (j = 0; j < nb_undef_symbols; j++) - { - ORDDEF *odp = find_export( undef_symbols[j], imp->exports, imp->nb_exports ); - if (odp) - { - add_import_func( imp, odp ); - free( undef_symbols[j] ); - undef_symbols[j] = NULL; - } - } - /* remove all the holes in the undef symbols list */ - if (!remove_symbol_holes() && check_unused( imp, spec )) - { - /* the dll is not used, get rid of it */ - warning( "%s imported but no symbols used\n", imp->spec->file_name ); - remove_import_dll( i ); - i--; - } - } - return 1; -} - -/* output the import table of a Win32 module */ -static int output_immediate_imports( FILE *outfile ) -{ - int i, j, pos; - int nb_imm = nb_imports - nb_delayed; - static const char import_thunks[] = "__wine_spec_import_thunks"; - - if (!nb_imm) goto done; - - /* main import header */ - - fprintf( outfile, "\nstatic struct {\n" ); - fprintf( outfile, " struct {\n" ); - fprintf( outfile, " void *OriginalFirstThunk;\n" ); - fprintf( outfile, " unsigned int TimeDateStamp;\n" ); - fprintf( outfile, " unsigned int ForwarderChain;\n" ); - fprintf( outfile, " const char *Name;\n" ); - fprintf( outfile, " void *FirstThunk;\n" ); - fprintf( outfile, " } imp[%d];\n", nb_imm+1 ); - fprintf( outfile, " const char *data[%d];\n", - total_imports - total_delayed + nb_imm ); - fprintf( outfile, "} imports = {\n {\n" ); - - /* list of dlls */ - - for (i = j = 0; i < nb_imports; i++) - { - if (dll_imports[i]->delay) continue; - fprintf( outfile, " { 0, 0, 0, \"%s\", &imports.data[%d] },\n", - dll_imports[i]->spec->file_name, j ); - j += dll_imports[i]->nb_imports + 1; - } - - fprintf( outfile, " { 0, 0, 0, 0, 0 },\n" ); - fprintf( outfile, " },\n {\n" ); - - /* list of imported functions */ - - for (i = 0; i < nb_imports; i++) - { - if (dll_imports[i]->delay) continue; - fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); - for (j = 0; j < dll_imports[i]->nb_imports; j++) - { - ORDDEF *odp = dll_imports[i]->imports[j]; - if (!(odp->flags & FLAG_NONAME)) - { - unsigned short ord = odp->ordinal; - fprintf( outfile, " \"\\%03o\\%03o%s\",\n", - *(unsigned char *)&ord, *((unsigned char *)&ord + 1), odp->name ); - } - else - fprintf( outfile, " (char *)%d,\n", odp->ordinal ); - } - fprintf( outfile, " 0,\n" ); - } - fprintf( outfile, " }\n};\n\n" ); - - /* thunks for imported functions */ - - fprintf( outfile, "#ifndef __GNUC__\nstatic void __asm__dummy_import(void) {\n#endif\n\n" ); - pos = 20 * (nb_imm + 1); /* offset of imports.data from start of imports */ - fprintf( outfile, "asm(\".data\\n\\t.align %d\\n\"\n", get_alignment(8) ); - fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", import_thunks); - - for (i = 0; i < nb_imports; i++) - { - if (dll_imports[i]->delay) continue; - for (j = 0; j < dll_imports[i]->nb_imports; j++, pos += 4) - { - ORDDEF *odp = dll_imports[i]->imports[j]; - const char *name = odp->name ? odp->name : odp->export_name; - fprintf( outfile, " \"\\t" __ASM_FUNC("%s") "\\n\"\n", name ); - fprintf( outfile, " \"\\t.globl " __ASM_NAME("%s") "\\n\"\n", name ); - fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\\t", name); - -#if defined(__i386__) - if (strstr( name, "__wine_call_from_16" )) - fprintf( outfile, ".byte 0x2e\\n\\tjmp *(imports+%d)\\n\\tnop\\n", pos ); - else - fprintf( outfile, "jmp *(imports+%d)\\n\\tmovl %%esi,%%esi\\n", pos ); -#elif defined(__sparc__) - if ( !UsePIC ) - { - fprintf( outfile, "sethi %%hi(imports+%d), %%g1\\n\\t", pos ); - fprintf( outfile, "ld [%%g1+%%lo(imports+%d)], %%g1\\n\\t", pos ); - fprintf( outfile, "jmp %%g1\\n\\tnop\\n" ); - } - else - { - /* Hmpf. Stupid sparc assembler always interprets global variable - names as GOT offsets, so we have to do it the long way ... */ - fprintf( outfile, "save %%sp, -96, %%sp\\n" ); - fprintf( outfile, "0:\\tcall 1f\\n\\tnop\\n" ); - fprintf( outfile, "1:\\tsethi %%hi(imports+%d-0b), %%g1\\n\\t", pos ); - fprintf( outfile, "or %%g1, %%lo(imports+%d-0b), %%g1\\n\\t", pos ); - fprintf( outfile, "ld [%%g1+%%o7], %%g1\\n\\t" ); - fprintf( outfile, "jmp %%g1\\n\\trestore\\n" ); - } - -#elif defined(__powerpc__) - fprintf(outfile, "\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf(outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); - fprintf(outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf(outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); - fprintf(outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf(outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); - - fprintf(outfile, "\t\"\\tlis %s, " ppc_high(__ASM_NAME("imports") "+ %d") "\\n\"\n", ppc_reg[9], pos); - fprintf(outfile, "\t\"\\tla %s, " ppc_low (__ASM_NAME("imports") "+ %d") "(%s)\\n\"\n", ppc_reg[8], pos, ppc_reg[9]); - fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[8]); - fprintf(outfile, "\t\"\\tmtctr %s\\n\"\n", ppc_reg[7]); - - fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); - fprintf(outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); - fprintf(outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); - fprintf(outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf(outfile, "\t\"\\tbctr\\n"); -#else -#error You need to define import thunks for your architecture! -#endif - fprintf( outfile, "\"\n" ); - output_function_size( outfile, name ); - } - pos += 4; - } - output_function_size( outfile, import_thunks ); - fprintf( outfile, " \".text\");\n#ifndef __GNUC__\n}\n#endif\n\n" ); - - done: - return nb_imm; -} - -/* output the delayed import table of a Win32 module */ -static int output_delayed_imports( FILE *outfile, const DLLSPEC *spec ) -{ - int i, idx, j, pos; - static const char delayed_import_loaders[] = "__wine_spec_delayed_import_loaders"; - static const char delayed_import_thunks[] = "__wine_spec_delayed_import_thunks"; - - if (!nb_delayed) goto done; - - for (i = 0; i < nb_imports; i++) - { - if (!dll_imports[i]->delay) continue; - fprintf( outfile, "static void *__wine_delay_imp_%d_hmod;\n", i); - for (j = 0; j < dll_imports[i]->nb_imports; j++) - { - ORDDEF *odp = dll_imports[i]->imports[j]; - const char *name = odp->name ? odp->name : odp->export_name; - fprintf( outfile, "void __wine_delay_imp_%d_%s();\n", i, name ); - } - } - fprintf( outfile, "\n" ); - fprintf( outfile, "static struct {\n" ); - fprintf( outfile, " struct ImgDelayDescr {\n" ); - fprintf( outfile, " unsigned int grAttrs;\n" ); - fprintf( outfile, " const char *szName;\n" ); - fprintf( outfile, " void **phmod;\n" ); - fprintf( outfile, " void **pIAT;\n" ); - fprintf( outfile, " const char **pINT;\n" ); - fprintf( outfile, " void* pBoundIAT;\n" ); - fprintf( outfile, " void* pUnloadIAT;\n" ); - fprintf( outfile, " unsigned long dwTimeStamp;\n" ); - fprintf( outfile, " } imp[%d];\n", nb_delayed ); - fprintf( outfile, " void *IAT[%d];\n", total_delayed ); - fprintf( outfile, " const char *INT[%d];\n", total_delayed ); - fprintf( outfile, "} delay_imports = {\n" ); - fprintf( outfile, " {\n" ); - for (i = j = 0; i < nb_imports; i++) - { - if (!dll_imports[i]->delay) continue; - fprintf( outfile, " { 0, \"%s\", &__wine_delay_imp_%d_hmod, &delay_imports.IAT[%d], &delay_imports.INT[%d], 0, 0, 0 },\n", - dll_imports[i]->spec->file_name, i, j, j ); - j += dll_imports[i]->nb_imports; - } - fprintf( outfile, " },\n {\n" ); - for (i = 0; i < nb_imports; i++) - { - if (!dll_imports[i]->delay) continue; - fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); - for (j = 0; j < dll_imports[i]->nb_imports; j++) - { - ORDDEF *odp = dll_imports[i]->imports[j]; - const char *name = odp->name ? odp->name : odp->export_name; - fprintf( outfile, " &__wine_delay_imp_%d_%s,\n", i, name ); - } - } - fprintf( outfile, " },\n {\n" ); - for (i = 0; i < nb_imports; i++) - { - if (!dll_imports[i]->delay) continue; - fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); - for (j = 0; j < dll_imports[i]->nb_imports; j++) - { - ORDDEF *odp = dll_imports[i]->imports[j]; - if (!odp->name) - fprintf( outfile, " (char *)%d,\n", odp->ordinal ); - else - fprintf( outfile, " \"%s\",\n", odp->name ); - } - } - fprintf( outfile, " }\n};\n\n" ); - - /* check if there's some stub defined. if so, exception struct - * is already defined, so don't emit it twice - */ - for (i = 0; i < spec->nb_entry_points; i++) if (spec->entry_points[i].type == TYPE_STUB) break; - - if (i == spec->nb_entry_points) { - fprintf( outfile, "struct exc_record {\n" ); - fprintf( outfile, " unsigned int code, flags;\n" ); - fprintf( outfile, " void *rec, *addr;\n" ); - fprintf( outfile, " unsigned int params;\n" ); - fprintf( outfile, " const void *info[15];\n" ); - fprintf( outfile, "};\n\n" ); - fprintf( outfile, "extern void __stdcall RtlRaiseException( struct exc_record * );\n" ); - } - - fprintf( outfile, "extern void * __stdcall LoadLibraryA(const char*);\n"); - fprintf( outfile, "extern void * __stdcall GetProcAddress(void *, const char*);\n"); - fprintf( outfile, "\n" ); - - fprintf( outfile, "void *__stdcall __wine_delay_load( int idx_nr )\n" ); - fprintf( outfile, "{\n" ); - fprintf( outfile, " int idx = idx_nr >> 16, nr = idx_nr & 0xffff;\n" ); - fprintf( outfile, " struct ImgDelayDescr *imd = delay_imports.imp + idx;\n" ); - fprintf( outfile, " void **pIAT = imd->pIAT + nr;\n" ); - fprintf( outfile, " const char** pINT = imd->pINT + nr;\n" ); - fprintf( outfile, " void *fn;\n\n" ); - - fprintf( outfile, " if (!*imd->phmod) *imd->phmod = LoadLibraryA(imd->szName);\n" ); - fprintf( outfile, " if (*imd->phmod && (fn = GetProcAddress(*imd->phmod, *pINT)))\n"); - fprintf( outfile, " /* patch IAT with final value */\n" ); - fprintf( outfile, " return *pIAT = fn;\n" ); - fprintf( outfile, " else {\n"); - fprintf( outfile, " struct exc_record rec;\n" ); - fprintf( outfile, " rec.code = 0x80000100;\n" ); - fprintf( outfile, " rec.flags = 1;\n" ); - fprintf( outfile, " rec.rec = 0;\n" ); - fprintf( outfile, " rec.params = 2;\n" ); - fprintf( outfile, " rec.info[0] = imd->szName;\n" ); - fprintf( outfile, " rec.info[1] = *pINT;\n" ); - fprintf( outfile, "#ifdef __GNUC__\n" ); - fprintf( outfile, " rec.addr = __builtin_return_address(1);\n" ); - fprintf( outfile, "#else\n" ); - fprintf( outfile, " rec.addr = 0;\n" ); - fprintf( outfile, "#endif\n" ); - fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n" ); - fprintf( outfile, " return 0; /* shouldn't go here */\n" ); - fprintf( outfile, " }\n}\n\n" ); - - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "static void __asm__dummy_delay_import(void) {\n" ); - fprintf( outfile, "#endif\n" ); - - fprintf( outfile, "asm(\".align %d\\n\"\n", get_alignment(8) ); - fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", delayed_import_loaders); - fprintf( outfile, " \"\\t" __ASM_FUNC("__wine_delay_load_asm") "\\n\"\n" ); - fprintf( outfile, " \"" __ASM_NAME("__wine_delay_load_asm") ":\\n\"\n" ); -#if defined(__i386__) - fprintf( outfile, " \"\\tpushl %%ecx\\n\\tpushl %%edx\\n\\tpushl %%eax\\n\"\n" ); - fprintf( outfile, " \"\\tcall __wine_delay_load\\n\"\n" ); - fprintf( outfile, " \"\\tpopl %%edx\\n\\tpopl %%ecx\\n\\tjmp *%%eax\\n\"\n" ); -#elif defined(__sparc__) - fprintf( outfile, " \"\\tsave %%sp, -96, %%sp\\n\"\n" ); - fprintf( outfile, " \"\\tcall __wine_delay_load\\n\"\n" ); - fprintf( outfile, " \"\\tmov %%g1, %%o0\\n\"\n" ); - fprintf( outfile, " \"\\tjmp %%o0\\n\\trestore\\n\"\n" ); -#elif defined(__powerpc__) -# if defined(__APPLE__) -/* On darwin an extra 56 bytes must be allowed for the linkage area+param area */ -# define extra_stack_storage 56 -# else -# define extra_stack_storage 0 -# endif - /* Save all callee saved registers into a stackframe. */ - fprintf( outfile, " \"\\tstwu %s, -%d(%s)\\n\"\n",ppc_reg[1], 48+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[3], 4+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[4], 8+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[5], 12+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[6], 16+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[7], 20+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[8], 24+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[9], 28+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[10],32+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[11],36+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[12],40+extra_stack_storage, ppc_reg[1]); - - /* r0 -> r3 (arg1) */ - fprintf( outfile, " \"\\tmr %s, %s\\n\"\n", ppc_reg[3], ppc_reg[0]); - - /* save return address */ - fprintf( outfile, " \"\\tmflr %s\\n\"\n", ppc_reg[0]); - fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[0], 44+extra_stack_storage, ppc_reg[1]); - - /* Call the __wine_delay_load function, arg1 is arg1. */ - fprintf( outfile, " \"\\tbl " __ASM_NAME("__wine_delay_load") "\\n\"\n"); - - /* Load return value from call into ctr register */ - fprintf( outfile, " \"\\tmtctr %s\\n\"\n", ppc_reg[3]); - - /* restore all saved registers and drop stackframe. */ - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[3], 4+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[4], 8+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[5], 12+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[6], 16+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[7], 20+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[8], 24+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[9], 28+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[10],32+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[11],36+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[12],40+extra_stack_storage, ppc_reg[1]); - - /* Load return value from call into return register */ - fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[0], 44+extra_stack_storage, ppc_reg[1]); - fprintf( outfile, " \"\\tmtlr %s\\n\"\n", ppc_reg[0]); - fprintf( outfile, " \"\\taddi %s, %s, %d\\n\"\n", ppc_reg[1], ppc_reg[1], 48+extra_stack_storage); - - /* branch to ctr register. */ - fprintf( outfile, " \"bctr\\n\"\n"); -#else -#error You need to defined delayed import thunks for your architecture! -#endif - output_function_size( outfile, "__wine_delay_load_asm" ); - - for (i = idx = 0; i < nb_imports; i++) - { - if (!dll_imports[i]->delay) continue; - for (j = 0; j < dll_imports[i]->nb_imports; j++) - { - char buffer[128]; - ORDDEF *odp = dll_imports[i]->imports[j]; - const char *name = odp->name ? odp->name : odp->export_name; - - sprintf( buffer, "__wine_delay_imp_%d_%s", i, name ); - fprintf( outfile, " \"\\t" __ASM_FUNC("%s") "\\n\"\n", buffer ); - fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", buffer ); -#if defined(__i386__) - fprintf( outfile, " \"\\tmovl $%d, %%eax\\n\"\n", (idx << 16) | j ); - fprintf( outfile, " \"\\tjmp __wine_delay_load_asm\\n\"\n" ); -#elif defined(__sparc__) - fprintf( outfile, " \"\\tset %d, %%g1\\n\"\n", (idx << 16) | j ); - fprintf( outfile, " \"\\tb,a __wine_delay_load_asm\\n\"\n" ); -#elif defined(__powerpc__) -#ifdef __APPLE__ - /* On Darwin we can use r0 and r2 */ - /* Upper part in r2 */ - fprintf( outfile, " \"\\tlis %s, %d\\n\"\n", ppc_reg[2], idx); - /* Lower part + r2 -> r0, Note we can't use r0 directly */ - fprintf( outfile, " \"\\taddi %s, %s, %d\\n\"\n", ppc_reg[0], ppc_reg[2], j); - fprintf( outfile, " \"\\tb " __ASM_NAME("__wine_delay_load_asm") "\\n\"\n"); -#else /* __APPLE__ */ - /* On linux we can't use r2 since r2 is not a scratch register (hold the TOC) */ - /* Save r13 on the stack */ - fprintf( outfile, " \"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, " \"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[13], ppc_reg[1]); - /* Upper part in r13 */ - fprintf( outfile, " \"\\tlis %s, %d\\n\"\n", ppc_reg[13], idx); - /* Lower part + r13 -> r0, Note we can't use r0 directly */ - fprintf( outfile, " \"\\taddi %s, %s, %d\\n\"\n", ppc_reg[0], ppc_reg[13], j); - /* Restore r13 */ - fprintf( outfile, " \"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[13], ppc_reg[1]); - fprintf( outfile, " \"\\taddic %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, " \"\\tb " __ASM_NAME("__wine_delay_load_asm") "\\n\"\n"); -#endif /* __APPLE__ */ -#else -#error You need to defined delayed import thunks for your architecture! -#endif - output_function_size( outfile, name ); - } - idx++; - } - output_function_size( outfile, delayed_import_loaders ); - - fprintf( outfile, "\n \".data\\n\\t.align %d\\n\"\n", get_alignment(8) ); - fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", delayed_import_thunks); - pos = nb_delayed * 32; - for (i = 0; i < nb_imports; i++) - { - if (!dll_imports[i]->delay) continue; - for (j = 0; j < dll_imports[i]->nb_imports; j++, pos += 4) - { - ORDDEF *odp = dll_imports[i]->imports[j]; - const char *name = odp->name ? odp->name : odp->export_name; - - fprintf( outfile, " \"\\t" __ASM_FUNC("%s") "\\n\"\n", name ); - fprintf( outfile, " \"\\t.globl " __ASM_NAME("%s") "\\n\"\n", name ); - fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\\t\"", name ); -#if defined(__i386__) - if (strstr( name, "__wine_call_from_16" )) - fprintf( outfile, "\".byte 0x2e\\n\\tjmp *(delay_imports+%d)\\n\\tnop\\n\"", pos ); - else - fprintf( outfile, "\"jmp *(delay_imports+%d)\\n\\tmovl %%esi,%%esi\\n\"", pos ); -#elif defined(__sparc__) - if ( !UsePIC ) - { - fprintf( outfile, "\"sethi %%hi(delay_imports+%d), %%g1\\n\\t\"", pos ); - fprintf( outfile, "\"ld [%%g1+%%lo(delay_imports+%d)], %%g1\\n\\t\"", pos ); - fprintf( outfile, "\"jmp %%g1\\n\\tnop\\n\"" ); - } - else - { - /* Hmpf. Stupid sparc assembler always interprets global variable - names as GOT offsets, so we have to do it the long way ... */ - fprintf( outfile, "\"save %%sp, -96, %%sp\\n\"" ); - fprintf( outfile, "\"0:\\tcall 1f\\n\\tnop\\n\"" ); - fprintf( outfile, "\"1:\\tsethi %%hi(delay_imports+%d-0b), %%g1\\n\\t\"", pos ); - fprintf( outfile, "\"or %%g1, %%lo(delay_imports+%d-0b), %%g1\\n\\t\"", pos ); - fprintf( outfile, "\"ld [%%g1+%%o7], %%g1\\n\\t\"" ); - fprintf( outfile, "\"jmp %%g1\\n\\trestore\\n\"" ); - } - -#elif defined(__powerpc__) - fprintf( outfile, "\t\"addi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); - fprintf( outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); - fprintf( outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); - - fprintf( outfile, "\t\"\\tlis %s, " ppc_high(__ASM_NAME("delay_imports") "+ %d") "\\n\"\n", ppc_reg[9], pos); - fprintf( outfile, "\t\"\\tla %s, " ppc_low (__ASM_NAME("delay_imports") "+ %d") "(%s)\\n\"\n", ppc_reg[8], pos, ppc_reg[9]); - fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[8]); - fprintf( outfile, "\t\"\\tmtctr %s\\n\"\n", ppc_reg[7]); - - fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); - fprintf( outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); - fprintf( outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); - fprintf( outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); - fprintf( outfile, "\t\"\\tbctr\\n\""); -#else -#error You need to define delayed import thunks for your architecture! -#endif - fprintf( outfile, "\n" ); - output_function_size( outfile, name ); - } - } - output_function_size( outfile, delayed_import_thunks ); - fprintf( outfile, "\".text\");\n" ); - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "}\n" ); - fprintf( outfile, "#endif\n" ); - fprintf( outfile, "\n" ); - - done: - return nb_delayed; -} - -/* output the import and delayed import tables of a Win32 module - * returns number of DLLs exported in 'immediate' mode - */ -int output_imports( FILE *outfile, DLLSPEC *spec ) -{ - output_delayed_imports( outfile, spec ); - return output_immediate_imports( outfile ); -} diff --git a/reactos/tools/winebuild/main.c b/reactos/tools/winebuild/main.c deleted file mode 100644 index e397157d755..00000000000 --- a/reactos/tools/winebuild/main.c +++ /dev/null @@ -1,468 +0,0 @@ -/* - * Main function - * - * Copyright 1993 Robert J. Amstadt - * Copyright 1995 Martin von Loewis - * Copyright 1995, 1996, 1997 Alexandre Julliard - * Copyright 1997 Eric Youngdale - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#ifdef HAVE_GETOPT_H -# include -#endif - -#include "winglue.h" -#include "build.h" - -int UsePIC = 0; -int nb_debug_channels = 0; -int nb_lib_paths = 0; -int nb_errors = 0; -int display_warnings = 0; -int kill_at = 0; - -/* we only support relay debugging on i386 */ -#if defined(__i386__) && !defined(NO_TRACE_MSGS) -int debugging = 1; -#else -int debugging = 0; -#endif - -char **debug_channels = NULL; -char **lib_path = NULL; - -char *input_file_name = NULL; -const char *output_file_name = NULL; - -static FILE *output_file; -static const char *current_src_dir; -static int nb_res_files; -static char **res_files; -static char *spec_file_name; - -/* execution mode */ -enum exec_mode_values -{ - MODE_NONE, - MODE_DLL, - MODE_EXE, - MODE_DEF, - MODE_DEBUG, - MODE_RELAY16, - MODE_RELAY32, - MODE_PEDLL -}; - -static enum exec_mode_values exec_mode = MODE_NONE; - -/* set the dll file name from the input file name */ -static void set_dll_file_name( const char *name, DLLSPEC *spec ) -{ - char *p; - - if (spec->file_name) return; - - if ((p = strrchr( name, '\\' ))) name = p + 1; - if ((p = strrchr( name, '/' ))) name = p + 1; - spec->file_name = xmalloc( strlen(name) + 5 ); - strcpy( spec->file_name, name ); - if ((p = strrchr( spec->file_name, '.' ))) - { - if (!strcmp( p, ".spec" ) || !strcmp( p, ".def" )) *p = 0; - } - if (!strchr( spec->file_name, '.' )) strcat( spec->file_name, ".dll" ); -} - -/* set the dll subsystem */ -static void set_subsystem( const char *subsystem, DLLSPEC *spec ) -{ - char *major, *minor, *str = xstrdup( subsystem ); - - if ((major = strchr( str, ':' ))) *major++ = 0; - if (!strcmp( str, "native" )) spec->subsystem = IMAGE_SUBSYSTEM_NATIVE; - else if (!strcmp( str, "windows" )) spec->subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI; - else if (!strcmp( str, "console" )) spec->subsystem = IMAGE_SUBSYSTEM_WINDOWS_CUI; - else fatal_error( "Invalid subsystem name '%s'\n", subsystem ); - if (major) - { - if ((minor = strchr( major, '.' ))) - { - *minor++ = 0; - spec->subsystem_minor = atoi( minor ); - } - spec->subsystem_major = atoi( major ); - } - free( str ); -} - -/* cleanup on program exit */ -static void cleanup(void) -{ - if (output_file_name) unlink( output_file_name ); -} - - -/******************************************************************* - * command-line option handling - */ -static const char usage_str[] = -"Usage: winebuild [OPTIONS] [FILES]\n\n" -"Options:\n" -" -C --source-dir=DIR Look for source files in DIR\n" -" -d --delay-lib=LIB Import the specified library in delayed mode\n" -" -D SYM Ignored for C flags compatibility\n" -" -e --entry=FUNC Set the DLL entry point function (default: DllMain)\n" -" -f FLAGS Compiler flags (only -fPIC is supported)\n" -" -F --filename=DLLFILE Set the DLL filename (default: from input file name)\n" -" -h --help Display this help message\n" -" -H --heap=SIZE Set the heap size for a Win16 dll\n" -" -i --ignore=SYM[,SYM] Ignore specified symbols when resolving imports\n" -" -I DIR Ignored for C flags compatibility\n" -" -k --kill-at Kill stdcall decorations in generated .def files\n" -" -K FLAGS Compiler flags (only -KPIC is supported)\n" -" -l --library=LIB Import the specified library\n" -" -L --library-path=DIR Look for imports libraries in DIR\n" -" -M --main-module=MODULE Set the name of the main module for a Win16 dll\n" -" -N --dll-name=DLLNAME Set the DLL name (default: from input file name)\n" -" -o --output=NAME Set the output file name (default: stdout)\n" -" -r --res=RSRC.RES Load resources from RSRC.RES\n" -" --subsystem=SUBSYS Set the subsystem (one of native, windows, console)\n" -" --version Print the version and exit\n" -" -w --warnings Turn on warnings\n" -"\nMode options:\n" -" --dll=FILE Build a .c file from a .spec or .def file\n" -" --def=FILE.SPEC Build a .def file from a spec file\n" -" --exe=NAME Build a .c file for the named executable\n" -" --debug [FILES] Build a .c file with the debug channels declarations\n" -" --relay16 Build the 16-bit relay assembly routines\n" -" --relay32 Build the 32-bit relay assembly routines\n" -" --pedll Build a .c file for PE dll\n\n" -"The mode options are mutually exclusive; you must specify one and only one.\n\n"; - -enum long_options_values -{ - LONG_OPT_DLL = 1, - LONG_OPT_DEF, - LONG_OPT_EXE, - LONG_OPT_DEBUG, - LONG_OPT_RELAY16, - LONG_OPT_RELAY32, - LONG_OPT_SUBSYSTEM, - LONG_OPT_VERSION, - LONG_OPT_PEDLL -}; - -static const char short_options[] = "C:D:F:H:I:K:L:M:N:d:e:f:hi:kl:m:o:r:w"; - -static const struct option long_options[] = -{ - { "dll", 1, 0, LONG_OPT_DLL }, - { "def", 1, 0, LONG_OPT_DEF }, - { "exe", 1, 0, LONG_OPT_EXE }, - { "debug", 0, 0, LONG_OPT_DEBUG }, - { "relay16", 0, 0, LONG_OPT_RELAY16 }, - { "relay32", 0, 0, LONG_OPT_RELAY32 }, - { "subsystem",1, 0, LONG_OPT_SUBSYSTEM }, - { "version", 0, 0, LONG_OPT_VERSION }, - { "pedll", 1, 0, LONG_OPT_PEDLL }, - /* aliases for short options */ - { "source-dir", 1, 0, 'C' }, - { "delay-lib", 1, 0, 'd' }, - { "entry", 1, 0, 'e' }, - { "filename", 1, 0, 'F' }, - { "help", 0, 0, 'h' }, - { "heap", 1, 0, 'H' }, - { "ignore", 1, 0, 'i' }, - { "kill-at", 0, 0, 'k' }, - { "library", 1, 0, 'l' }, - { "library-path", 1, 0, 'L' }, - { "main-module", 1, 0, 'M' }, - { "dll-name", 1, 0, 'N' }, - { "output", 1, 0, 'o' }, - { "res", 1, 0, 'r' }, - { "warnings", 0, 0, 'w' }, - { NULL, 0, 0, 0 } -}; - -static void usage( int exit_code ) -{ - fprintf( stderr, "%s", usage_str ); - exit( exit_code ); -} - -static void set_exec_mode( enum exec_mode_values mode ) -{ - if (exec_mode != MODE_NONE) usage(1); - exec_mode = mode; -} - -/* parse options from the argv array and remove all the recognized ones */ -static char **parse_options( int argc, char **argv, DLLSPEC *spec ) -{ - char *p; - int optc; - - while ((optc = getopt_long( argc, argv, short_options, long_options, NULL )) != -1) - { - switch(optc) - { - case 'C': - current_src_dir = optarg; - break; - case 'D': - /* ignored */ - break; - case 'F': - spec->file_name = xstrdup( optarg ); - break; - case 'H': - if (!isdigit(optarg[0])) - fatal_error( "Expected number argument with -H option instead of '%s'\n", optarg ); - spec->heap_size = atoi(optarg); - if (spec->heap_size > 65535) - fatal_error( "Invalid heap size %d, maximum is 65535\n", spec->heap_size ); - break; - case 'I': - /* ignored */ - break; - case 'K': - /* ignored, because cc generates correct code. */ - break; - case 'L': - lib_path = xrealloc( lib_path, (nb_lib_paths+1) * sizeof(*lib_path) ); - lib_path[nb_lib_paths++] = xstrdup( optarg ); - break; - case 'M': - spec->owner_name = xstrdup( optarg ); - spec->type = SPEC_WIN16; - break; - case 'N': - spec->dll_name = xstrdup( optarg ); - break; - case 'd': - add_import_dll( optarg, 1 ); - break; - case 'e': - spec->init_func = xstrdup( optarg ); - if ((p = strchr( spec->init_func, '@' ))) *p = 0; /* kill stdcall decoration */ - break; - case 'f': - if (!strcmp( optarg, "PIC") || !strcmp( optarg, "pic")) UsePIC = 1; - /* ignore all other flags */ - break; - case 'h': - usage(0); - break; - case 'i': - { - char *str = xstrdup( optarg ); - char *token = strtok( str, "," ); - while (token) - { - add_ignore_symbol( token ); - token = strtok( NULL, "," ); - } - free( str ); - } - break; - case 'k': - kill_at = 1; - break; - case 'l': - add_import_dll( optarg, 0 ); - break; - case 'o': - if (unlink( optarg ) == -1 && errno != ENOENT) - fatal_error( "Unable to create output file '%s'\n", optarg ); - if (!(output_file = fopen( optarg, "w" ))) - fatal_error( "Unable to create output file '%s'\n", optarg ); - output_file_name = xstrdup(optarg); - atexit( cleanup ); /* make sure we remove the output file on exit */ - break; - case 'r': - res_files = xrealloc( res_files, (nb_res_files+1) * sizeof(*res_files) ); - res_files[nb_res_files++] = xstrdup( optarg ); - break; - case 'w': - display_warnings = 1; - break; - case LONG_OPT_DLL: - set_exec_mode( MODE_DLL ); - spec_file_name = xstrdup( optarg ); - set_dll_file_name( optarg, spec ); - break; - case LONG_OPT_DEF: - set_exec_mode( MODE_DEF ); - spec_file_name = xstrdup( optarg ); - set_dll_file_name( optarg, spec ); - break; - case LONG_OPT_EXE: - set_exec_mode( MODE_EXE ); - if ((p = strrchr( optarg, '/' ))) p++; - else p = optarg; - spec->file_name = xmalloc( strlen(p) + 5 ); - strcpy( spec->file_name, p ); - if (!strchr( spec->file_name, '.' )) strcat( spec->file_name, ".exe" ); - if (!spec->subsystem) spec->subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI; - break; - case LONG_OPT_DEBUG: - set_exec_mode( MODE_DEBUG ); - break; - case LONG_OPT_RELAY16: - set_exec_mode( MODE_RELAY16 ); - break; - case LONG_OPT_RELAY32: - set_exec_mode( MODE_RELAY32 ); - break; - case LONG_OPT_SUBSYSTEM: - set_subsystem( optarg, spec ); - break; - case LONG_OPT_VERSION: - printf( "winebuild version " PACKAGE_VERSION "\n" ); - exit(0); - case LONG_OPT_PEDLL: - set_exec_mode( MODE_PEDLL ); - spec_file_name = xstrdup( optarg ); - set_dll_file_name( optarg, spec ); - break; - case '?': - usage(1); - break; - } - } - return &argv[optind]; -} - - -/* load all specified resource files */ -static void load_resources( char *argv[], DLLSPEC *spec ) -{ - int i; - char **ptr, **last; - - switch (spec->type) - { - case SPEC_WIN16: - for (i = 0; i < nb_res_files; i++) load_res16_file( res_files[i], spec ); - break; - - case SPEC_WIN32: - for (i = 0; i < nb_res_files; i++) - { - if (!load_res32_file( res_files[i], spec )) - fatal_error( "%s is not a valid Win32 resource file\n", res_files[i] ); - } - - /* load any resource file found in the remaining arguments */ - for (ptr = last = argv; *ptr; ptr++) - { - if (!load_res32_file( *ptr, spec )) - *last++ = *ptr; /* not a resource file, keep it in the list */ - } - *last = NULL; - break; - } -} - -static int parse_input_file( DLLSPEC *spec ) -{ - FILE *input_file = open_input_file( NULL, spec_file_name ); - char *extension = strrchr( spec_file_name, '.' ); - - if (extension && !strcmp( extension, ".def" )) - return parse_def_file( input_file, spec ); - else - return parse_spec_file( input_file, spec ); - close_input_file( input_file ); -} - - -/******************************************************************* - * main - */ -int main(int argc, char **argv) -{ - DLLSPEC *spec = alloc_dll_spec(); - - output_file = stdout; - argv = parse_options( argc, argv, spec ); - - switch(exec_mode) - { - case MODE_DLL: - spec->characteristics |= IMAGE_FILE_DLL; - load_resources( argv, spec ); - if (!parse_input_file( spec )) break; - switch (spec->type) - { - case SPEC_WIN16: - fatal_error( "Win16 specs are not supported in ReactOS version of winebuild\n" ); - break; - case SPEC_WIN32: - read_undef_symbols( argv ); - BuildSpec32File( output_file, spec ); - break; - default: assert(0); - } - break; - case MODE_EXE: - if (spec->type == SPEC_WIN16) fatal_error( "Cannot build 16-bit exe files\n" ); - load_resources( argv, spec ); - read_undef_symbols( argv ); - BuildSpec32File( output_file, spec ); - break; - case MODE_DEF: - if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] ); - if (spec->type == SPEC_WIN16) fatal_error( "Cannot yet build .def file for 16-bit dlls\n" ); - if (!parse_input_file( spec )) break; - BuildDef32File( output_file, spec ); - break; - case MODE_DEBUG: - BuildDebugFile( output_file, current_src_dir, argv ); - break; - case MODE_RELAY16: - fatal_error( "Win16 relays are not supported in ReactOS version of winebuild\n" ); - break; - case MODE_RELAY32: - fatal_error( "Win32 relays are not supported in ReactOS version of winebuild\n" ); - break; - case MODE_PEDLL: - if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] ); - if (!parse_input_file( spec )) break; - BuildPedllFile( output_file, spec ); - break; - default: - usage(1); - break; - } - if (nb_errors) exit(1); - if (output_file_name) - { - fclose( output_file ); - output_file_name = NULL; - } - return 0; -} diff --git a/reactos/tools/winebuild/mkstemps.c b/reactos/tools/winebuild/mkstemps.c deleted file mode 100644 index 9919eac949f..00000000000 --- a/reactos/tools/winebuild/mkstemps.c +++ /dev/null @@ -1,138 +0,0 @@ -/* Copyright (C) 1991, 1992, 1996, 1998 Free Software Foundation, Inc. - This file is derived from mkstemp.c from the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_PROCESS_H -#include -#endif - -/* We need to provide a type for gcc_uint64_t. */ -#ifdef __GNUC__ -__extension__ typedef unsigned long long gcc_uint64_t; -#else -typedef unsigned long gcc_uint64_t; -#endif - -#ifndef TMP_MAX -#define TMP_MAX 16384 -#endif - -/* - -@deftypefn Replacement int mkstemps (char *@var{template}, int @var{suffix_len}) - -Generate a unique temporary file name from @var{template}. -@var{template} has the form: - -@example - @var{path}/ccXXXXXX@var{suffix} -@end example - -@var{suffix_len} tells us how long @var{suffix} is (it can be zero -length). The last six characters of @var{template} before @var{suffix} -must be @samp{XXXXXX}; they are replaced with a string that makes the -filename unique. Returns a file descriptor open on the file for -reading and writing. - -@end deftypefn - -*/ - -int -mkstemps ( - char *template, - int suffix_len) -{ - static const char letters[] - = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - static gcc_uint64_t value; -#ifdef HAVE_GETTIMEOFDAY - struct timeval tv; -#endif - char *XXXXXX; - size_t len; - int count; - - len = strlen (template); - - if ((int) len < 6 + suffix_len - || strncmp (&template[len - 6 - suffix_len], "XXXXXX", 6)) - { - return -1; - } - - XXXXXX = &template[len - 6 - suffix_len]; - -#ifdef HAVE_GETTIMEOFDAY - /* Get some more or less random data. */ - gettimeofday (&tv, NULL); - value += ((gcc_uint64_t) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid (); -#else - value += getpid (); -#endif - - for (count = 0; count < TMP_MAX; ++count) - { - gcc_uint64_t v = value; - int fd; - - /* Fill in the random bits. */ - XXXXXX[0] = letters[v % 62]; - v /= 62; - XXXXXX[1] = letters[v % 62]; - v /= 62; - XXXXXX[2] = letters[v % 62]; - v /= 62; - XXXXXX[3] = letters[v % 62]; - v /= 62; - XXXXXX[4] = letters[v % 62]; - v /= 62; - XXXXXX[5] = letters[v % 62]; - -#ifdef VMS - fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600, "fop=tmd"); -#else - fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600); -#endif - if (fd >= 0) - /* The file does not exist. */ - return fd; - - /* This is a random value. It is only necessary that the next - TMP_MAX values generated by adding 7777 to VALUE are different - with (module 2^32). */ - value += 7777; - } - - /* We return the null string if we can't find a unique file name. */ - template[0] = '\0'; - return -1; -} diff --git a/reactos/tools/winebuild/parser.c b/reactos/tools/winebuild/parser.c deleted file mode 100644 index b287dfacb4e..00000000000 --- a/reactos/tools/winebuild/parser.c +++ /dev/null @@ -1,997 +0,0 @@ -/* - * Spec file parser - * - * Copyright 1993 Robert J. Amstadt - * Copyright 1995 Martin von Loewis - * Copyright 1995, 1996, 1997, 2004 Alexandre Julliard - * Copyright 1997 Eric Youngdale - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include - -#include "winglue.h" -#include "build.h" - -int current_line = 0; - -static char ParseBuffer[512]; -static char TokenBuffer[512]; -static char *ParseNext = ParseBuffer; -static FILE *input_file; - -static const char *separator_chars; -static const char *comment_chars; - -static const char * const TypeNames[TYPE_NBTYPES] = -{ - "variable", /* TYPE_VARIABLE */ - "pascal", /* TYPE_PASCAL */ - "equate", /* TYPE_ABS */ - "stub", /* TYPE_STUB */ - "stdcall", /* TYPE_STDCALL */ - "cdecl", /* TYPE_CDECL */ - "varargs", /* TYPE_VARARGS */ - "extern" /* TYPE_EXTERN */ -}; - -static const char * const FlagNames[] = -{ - "norelay", /* FLAG_NORELAY */ - "noname", /* FLAG_NONAME */ - "ret16", /* FLAG_RET16 */ - "ret64", /* FLAG_RET64 */ - "i386", /* FLAG_I386 */ - "register", /* FLAG_REGISTER */ - "private", /* FLAG_PRIVATE */ - NULL -}; - -static int IsNumberString(const char *s) -{ - while (*s) if (!isdigit(*s++)) return 0; - return 1; -} - -inline static int is_token_separator( char ch ) -{ - return strchr( separator_chars, ch ) != NULL; -} - -inline static int is_token_comment( char ch ) -{ - return strchr( comment_chars, ch ) != NULL; -} - -/* get the next line from the input file, or return 0 if at eof */ -static int get_next_line(void) -{ - ParseNext = ParseBuffer; - current_line++; - return (fgets(ParseBuffer, sizeof(ParseBuffer), input_file) != NULL); -} - -static const char * GetToken( int allow_eol ) -{ - char *p = ParseNext; - char *token = TokenBuffer; - - for (;;) - { - /* remove initial white space */ - p = ParseNext; - while (isspace(*p)) p++; - - if (*p == '\\' && p[1] == '\n') /* line continuation */ - { - if (!get_next_line()) - { - if (!allow_eol) error( "Unexpected end of file\n" ); - return NULL; - } - } - else break; - } - - if ((*p == '\0') || is_token_comment(*p)) - { - if (!allow_eol) error( "Declaration not terminated properly\n" ); - return NULL; - } - - /* - * Find end of token. - */ - if (is_token_separator(*p)) - { - /* a separator is always a complete token */ - *token++ = *p++; - } - else while (*p != '\0' && !is_token_separator(*p) && !isspace(*p)) - { - if (*p == '\\') p++; - if (*p) *token++ = *p++; - } - *token = '\0'; - ParseNext = p; - return TokenBuffer; -} - - -static ORDDEF *add_entry_point( DLLSPEC *spec ) -{ - if (spec->nb_entry_points == spec->alloc_entry_points) - { - spec->alloc_entry_points += 128; - spec->entry_points = xrealloc( spec->entry_points, - spec->alloc_entry_points * sizeof(*spec->entry_points) ); - } - return &spec->entry_points[spec->nb_entry_points++]; -} - -/******************************************************************* - * parse_spec_variable - * - * Parse a variable definition in a .spec file. - */ -static int parse_spec_variable( ORDDEF *odp, DLLSPEC *spec ) -{ - char *endptr; - int *value_array; - int n_values; - int value_array_size; - const char *token; - - if (spec->type == SPEC_WIN32) - { - error( "'variable' not supported in Win32, use 'extern' instead\n" ); - return 0; - } - - if (!(token = GetToken(0))) return 0; - if (*token != '(') - { - error( "Expected '(' got '%s'\n", token ); - return 0; - } - - n_values = 0; - value_array_size = 25; - value_array = xmalloc(sizeof(*value_array) * value_array_size); - - for (;;) - { - if (!(token = GetToken(0))) - { - free( value_array ); - return 0; - } - if (*token == ')') - break; - - value_array[n_values++] = strtol(token, &endptr, 0); - if (n_values == value_array_size) - { - value_array_size += 25; - value_array = xrealloc(value_array, - sizeof(*value_array) * value_array_size); - } - - if (endptr == NULL || *endptr != '\0') - { - error( "Expected number value, got '%s'\n", token ); - free( value_array ); - return 0; - } - } - - odp->u.var.n_values = n_values; - odp->u.var.values = xrealloc(value_array, sizeof(*value_array) * n_values); - return 1; -} - - -/******************************************************************* - * parse_spec_export - * - * Parse an exported function definition in a .spec file. - */ -static int parse_spec_export( ORDDEF *odp, DLLSPEC *spec ) -{ - const char *token; - unsigned int i; - - switch(spec->type) - { - case SPEC_WIN16: - if (odp->type == TYPE_STDCALL) - { - error( "'stdcall' not supported for Win16\n" ); - return 0; - } - break; - case SPEC_WIN32: - if (odp->type == TYPE_PASCAL) - { - error( "'pascal' not supported for Win32\n" ); - return 0; - } - break; - default: - break; - } - - if (!(token = GetToken(0))) return 0; - if (*token != '(') - { - error( "Expected '(' got '%s'\n", token ); - return 0; - } - - for (i = 0; i < sizeof(odp->u.func.arg_types); i++) - { - if (!(token = GetToken(0))) return 0; - if (*token == ')') - break; - - if (!strcmp(token, "word")) - odp->u.func.arg_types[i] = 'w'; - else if (!strcmp(token, "s_word")) - odp->u.func.arg_types[i] = 's'; - else if (!strcmp(token, "long") || !strcmp(token, "segptr")) - odp->u.func.arg_types[i] = 'l'; - else if (!strcmp(token, "ptr")) - odp->u.func.arg_types[i] = 'p'; - else if (!strcmp(token, "str")) - odp->u.func.arg_types[i] = 't'; - else if (!strcmp(token, "wstr")) - odp->u.func.arg_types[i] = 'W'; - else if (!strcmp(token, "segstr")) - odp->u.func.arg_types[i] = 'T'; - else if (!strcmp(token, "double")) - { - odp->u.func.arg_types[i++] = 'l'; - if (i < sizeof(odp->u.func.arg_types)) odp->u.func.arg_types[i] = 'l'; - } - else - { - error( "Unknown argument type '%s'\n", token ); - return 0; - } - - if (spec->type == SPEC_WIN32) - { - if (strcmp(token, "long") && - strcmp(token, "ptr") && - strcmp(token, "str") && - strcmp(token, "wstr") && - strcmp(token, "double")) - { - error( "Type '%s' not supported for Win32\n", token ); - return 0; - } - } - } - if ((*token != ')') || (i >= sizeof(odp->u.func.arg_types))) - { - error( "Too many arguments\n" ); - return 0; - } - - odp->u.func.arg_types[i] = '\0'; - if (odp->type == TYPE_VARARGS) - odp->flags |= FLAG_NORELAY; /* no relay debug possible for varags entry point */ - - if (!(token = GetToken(1))) - { - if (!strcmp( odp->name, "@" )) - { - error( "Missing handler name for anonymous function\n" ); - return 0; - } - odp->link_name = xstrdup( odp->name ); - } - else - { - odp->link_name = xstrdup( token ); - if (strchr( odp->link_name, '.' )) - { - if (spec->type == SPEC_WIN16) - { - error( "Forwarded functions not supported for Win16\n" ); - return 0; - } - odp->flags |= FLAG_FORWARD; - } - } - return 1; -} - - -/******************************************************************* - * parse_spec_equate - * - * Parse an 'equate' definition in a .spec file. - */ -static int parse_spec_equate( ORDDEF *odp, DLLSPEC *spec ) -{ - char *endptr; - int value; - const char *token; - - if (spec->type == SPEC_WIN32) - { - error( "'equate' not supported for Win32\n" ); - return 0; - } - if (!(token = GetToken(0))) return 0; - value = strtol(token, &endptr, 0); - if (endptr == NULL || *endptr != '\0') - { - error( "Expected number value, got '%s'\n", token ); - return 0; - } - odp->u.abs.value = value; - return 1; -} - - -/******************************************************************* - * parse_spec_stub - * - * Parse a 'stub' definition in a .spec file - */ -static int parse_spec_stub( ORDDEF *odp, DLLSPEC *spec ) -{ - odp->u.func.arg_types[0] = '\0'; - odp->link_name = xstrdup(""); - return 1; -} - - -/******************************************************************* - * parse_spec_extern - * - * Parse an 'extern' definition in a .spec file. - */ -static int parse_spec_extern( ORDDEF *odp, DLLSPEC *spec ) -{ - const char *token; - - if (spec->type == SPEC_WIN16) - { - error( "'extern' not supported for Win16, use 'variable' instead\n" ); - return 0; - } - if (!(token = GetToken(1))) - { - if (!strcmp( odp->name, "@" )) - { - error( "Missing handler name for anonymous extern\n" ); - return 0; - } - odp->link_name = xstrdup( odp->name ); - } - else - { - odp->link_name = xstrdup( token ); - if (strchr( odp->link_name, '.' )) odp->flags |= FLAG_FORWARD; - } - return 1; -} - - -/******************************************************************* - * parse_spec_flags - * - * Parse the optional flags for an entry point in a .spec file. - */ -static const char *parse_spec_flags( ORDDEF *odp ) -{ - unsigned int i; - const char *token; - - do - { - if (!(token = GetToken(0))) break; - for (i = 0; FlagNames[i]; i++) - if (!strcmp( FlagNames[i], token )) break; - if (!FlagNames[i]) - { - error( "Unknown flag '%s'\n", token ); - return NULL; - } - odp->flags |= 1 << i; - token = GetToken(0); - } while (token && *token == '-'); - - return token; -} - - -/******************************************************************* - * parse_spec_ordinal - * - * Parse an ordinal definition in a .spec file. - */ -static int parse_spec_ordinal( int ordinal, DLLSPEC *spec ) -{ - const char *token; - - ORDDEF *odp = add_entry_point( spec ); - memset( odp, 0, sizeof(*odp) ); - - if (!(token = GetToken(0))) goto error; - - for (odp->type = 0; odp->type < TYPE_NBTYPES; odp->type++) - if (TypeNames[odp->type] && !strcmp( token, TypeNames[odp->type] )) - break; - - if (odp->type >= TYPE_NBTYPES) - { - error( "Expected type after ordinal, found '%s' instead\n", token ); - goto error; - } - - if (!(token = GetToken(0))) goto error; - if (*token == '-' && !(token = parse_spec_flags( odp ))) goto error; - - odp->name = xstrdup( token ); - odp->lineno = current_line; - odp->ordinal = ordinal; - - switch(odp->type) - { - case TYPE_VARIABLE: - if (!parse_spec_variable( odp, spec )) goto error; - break; - case TYPE_PASCAL: - case TYPE_STDCALL: - case TYPE_VARARGS: - case TYPE_CDECL: - if (!parse_spec_export( odp, spec )) goto error; - break; - case TYPE_ABS: - if (!parse_spec_equate( odp, spec )) goto error; - break; - case TYPE_STUB: - if (!parse_spec_stub( odp, spec )) goto error; - break; - case TYPE_EXTERN: - if (!parse_spec_extern( odp, spec )) goto error; - break; - default: - assert( 0 ); - } - -#ifndef __i386__ - if (odp->flags & FLAG_I386) - { - /* ignore this entry point on non-Intel archs */ - spec->nb_entry_points--; - return 1; - } -#endif - - if (ordinal != -1) - { - if (!ordinal) - { - error( "Ordinal 0 is not valid\n" ); - goto error; - } - if (ordinal >= MAX_ORDINALS) - { - error( "Ordinal number %d too large\n", ordinal ); - goto error; - } - if (ordinal > spec->limit) spec->limit = ordinal; - if (ordinal < spec->base) spec->base = ordinal; - odp->ordinal = ordinal; - } - - if (odp->type == TYPE_STDCALL && !(odp->flags & FLAG_PRIVATE)) - { - if (!strcmp( odp->name, "DllRegisterServer" ) || - !strcmp( odp->name, "DllUnregisterServer" ) || - !strcmp( odp->name, "DllGetClassObject" ) || - !strcmp( odp->name, "DllCanUnloadNow" )) - { - warning( "Function %s should be marked private\n", odp->name ); - } - } - - if (!strcmp( odp->name, "@" ) || odp->flags & FLAG_NONAME) - { - if (ordinal == -1) - { - error( "Nameless function needs an explicit ordinal number\n" ); - goto error; - } - if (spec->type != SPEC_WIN32) - { - error( "Nameless functions not supported for Win16\n" ); - goto error; - } - if (!strcmp( odp->name, "@" )) free( odp->name ); - else odp->export_name = odp->name; - odp->name = NULL; - } - return 1; - -error: - spec->nb_entry_points--; - free( odp->name ); - return 0; -} - - -static int name_compare( const void *name1, const void *name2 ) -{ - const ORDDEF *odp1 = *(const ORDDEF * const *)name1; - const ORDDEF *odp2 = *(const ORDDEF * const *)name2; - return strcmp( odp1->name, odp2->name ); -} - -/******************************************************************* - * assign_names - * - * Build the name array and catch duplicates. - */ -static void assign_names( DLLSPEC *spec ) -{ - int i, j; - - spec->nb_names = 0; - for (i = 0; i < spec->nb_entry_points; i++) - if (spec->entry_points[i].name) spec->nb_names++; - if (!spec->nb_names) return; - - spec->names = xmalloc( spec->nb_names * sizeof(spec->names[0]) ); - for (i = j = 0; i < spec->nb_entry_points; i++) - if (spec->entry_points[i].name) spec->names[j++] = &spec->entry_points[i]; - - /* sort the list of names */ - qsort( spec->names, spec->nb_names, sizeof(spec->names[0]), name_compare ); - - /* check for duplicate names */ - for (i = 0; i < spec->nb_names - 1; i++) - { - if (!strcmp( spec->names[i]->name, spec->names[i+1]->name )) - { - current_line = max( spec->names[i]->lineno, spec->names[i+1]->lineno ); - error( "'%s' redefined\n%s:%d: First defined here\n", - spec->names[i]->name, input_file_name, - min( spec->names[i]->lineno, spec->names[i+1]->lineno ) ); - } - } -} - -/******************************************************************* - * assign_ordinals - * - * Build the ordinal array. - */ -static void assign_ordinals( DLLSPEC *spec ) -{ - int i, count, ordinal; - - /* start assigning from base, or from 1 if no ordinal defined yet */ - if (spec->base == MAX_ORDINALS) spec->base = 1; - if (spec->limit < spec->base) spec->limit = spec->base; - - count = max( spec->limit + 1, spec->base + spec->nb_entry_points ); - spec->ordinals = xmalloc( count * sizeof(spec->ordinals[0]) ); - memset( spec->ordinals, 0, count * sizeof(spec->ordinals[0]) ); - - /* fill in all explicitly specified ordinals */ - for (i = 0; i < spec->nb_entry_points; i++) - { - ordinal = spec->entry_points[i].ordinal; - if (ordinal == -1) continue; - if (spec->ordinals[ordinal]) - { - current_line = max( spec->entry_points[i].lineno, spec->ordinals[ordinal]->lineno ); - error( "ordinal %d redefined\n%s:%d: First defined here\n", - ordinal, input_file_name, - min( spec->entry_points[i].lineno, spec->ordinals[ordinal]->lineno ) ); - } - else spec->ordinals[ordinal] = &spec->entry_points[i]; - } - - /* now assign ordinals to the rest */ - for (i = 0, ordinal = spec->base; i < spec->nb_names; i++) - { - if (spec->names[i]->ordinal != -1) continue; /* already has an ordinal */ - while (spec->ordinals[ordinal]) ordinal++; - if (ordinal >= MAX_ORDINALS) - { - current_line = spec->names[i]->lineno; - fatal_error( "Too many functions defined (max %d)\n", MAX_ORDINALS ); - } - spec->names[i]->ordinal = ordinal; - spec->ordinals[ordinal] = spec->names[i]; - } - if (ordinal > spec->limit) spec->limit = ordinal; -} - - -/******************************************************************* - * parse_spec_file - * - * Parse a .spec file. - */ -int parse_spec_file( FILE *file, DLLSPEC *spec ) -{ - const char *token; - - input_file = file; - current_line = 0; - - comment_chars = "#;"; - separator_chars = "()-"; - - while (get_next_line()) - { - if (!(token = GetToken(1))) continue; - if (strcmp(token, "@") == 0) - { - if (spec->type != SPEC_WIN32) - { - error( "'@' ordinals not supported for Win16\n" ); - continue; - } - if (!parse_spec_ordinal( -1, spec )) continue; - } - else if (IsNumberString(token)) - { - if (!parse_spec_ordinal( atoi(token), spec )) continue; - } - else - { - error( "Expected ordinal declaration, got '%s'\n", token ); - continue; - } - if ((token = GetToken(1))) error( "Syntax error near '%s'\n", token ); - } - - current_line = 0; /* no longer parsing the input file */ - assign_names( spec ); - assign_ordinals( spec ); - return !nb_errors; -} - - -/******************************************************************* - * parse_def_library - * - * Parse a LIBRARY declaration in a .def file. - */ -static int parse_def_library( DLLSPEC *spec ) -{ - const char *token = GetToken(1); - - if (!token) return 1; - if (strcmp( token, "BASE" )) - { - free( spec->file_name ); - spec->file_name = xstrdup( token ); - if (!(token = GetToken(1))) return 1; - } - if (strcmp( token, "BASE" )) - { - error( "Expected library name or BASE= declaration, got '%s'\n", token ); - return 0; - } - if (!(token = GetToken(0))) return 0; - if (strcmp( token, "=" )) - { - error( "Expected '=' after BASE, got '%s'\n", token ); - return 0; - } - if (!(token = GetToken(0))) return 0; - /* FIXME: do something with base address */ - - return 1; -} - - -/******************************************************************* - * parse_def_stack_heap_size - * - * Parse a STACKSIZE or HEAPSIZE declaration in a .def file. - */ -static int parse_def_stack_heap_size( int is_stack, DLLSPEC *spec ) -{ - const char *token = GetToken(0); - char *end; - unsigned long size; - - if (!token) return 0; - size = strtoul( token, &end, 0 ); - if (*end) - { - error( "Invalid number '%s'\n", token ); - return 0; - } - if (is_stack) spec->stack_size = size / 1024; - else spec->heap_size = size / 1024; - if (!(token = GetToken(1))) return 1; - if (strcmp( token, "," )) - { - error( "Expected ',' after size, got '%s'\n", token ); - return 0; - } - if (!(token = GetToken(0))) return 0; - /* FIXME: do something with reserve size */ - return 1; -} - - -/******************************************************************* - * parse_def_export - * - * Parse an export declaration in a .def file. - */ -static int parse_def_export( char *name, DLLSPEC *spec ) -{ - int i, args; - const char *token = GetToken(1); - - ORDDEF *odp = add_entry_point( spec ); - memset( odp, 0, sizeof(*odp) ); - - odp->lineno = current_line; - odp->ordinal = -1; - odp->name = name; - args = remove_stdcall_decoration( odp->name ); - if (args == -1) odp->type = TYPE_CDECL; - else - { - odp->type = TYPE_STDCALL; - args /= sizeof(int); - if (args >= sizeof(odp->u.func.arg_types)) - { - error( "Too many arguments in stdcall function '%s'\n", odp->name ); - return 0; - } - for (i = 0; i < args; i++) odp->u.func.arg_types[i] = 'l'; - } - - /* check for optional internal name */ - - if (token && !strcmp( token, "=" )) - { - if (!(token = GetToken(0))) goto error; - odp->link_name = xstrdup( token ); - remove_stdcall_decoration( odp->link_name ); - token = GetToken(1); - } - - /* check for optional ordinal */ - - if (token && token[0] == '@') - { - int ordinal; - - if (!IsNumberString( token+1 )) - { - error( "Expected number after '@', got '%s'\n", token+1 ); - goto error; - } - ordinal = atoi( token+1 ); - if (!ordinal) - { - error( "Ordinal 0 is not valid\n" ); - goto error; - } - if (ordinal >= MAX_ORDINALS) - { - error( "Ordinal number %d too large\n", ordinal ); - goto error; - } - if (ordinal > spec->limit) spec->limit = ordinal; - if (ordinal < spec->base) spec->base = ordinal; - odp->ordinal = ordinal; - token = GetToken(1); - } - - /* check for other optional keywords */ - - if (token && !strcmp( token, "NONAME" )) - { - if (odp->ordinal == -1) - { - error( "NONAME requires an ordinal\n" ); - goto error; - } - odp->export_name = odp->name; - odp->name = NULL; - odp->flags |= FLAG_NONAME; - token = GetToken(1); - } - if (token && !strcmp( token, "PRIVATE" )) - { - odp->flags |= FLAG_PRIVATE; - token = GetToken(1); - } - if (token && !strcmp( token, "DATA" )) - { - odp->type = TYPE_EXTERN; - token = GetToken(1); - } - if (token) - { - error( "Garbage text '%s' found at end of export declaration\n", token ); - goto error; - } - return 1; - -error: - spec->nb_entry_points--; - free( odp->name ); - return 0; -} - - -/******************************************************************* - * parse_def_file - * - * Parse a .def file. - */ -int parse_def_file( FILE *file, DLLSPEC *spec ) -{ - const char *token; - int in_exports = 0; - - input_file = file; - current_line = 0; - - comment_chars = ";"; - separator_chars = ",="; - - while (get_next_line()) - { - if (!(token = GetToken(1))) continue; - - if (!strcmp( token, "LIBRARY" ) || !strcmp( token, "NAME" )) - { - if (!parse_def_library( spec )) continue; - goto end_of_line; - } - else if (!strcmp( token, "STACKSIZE" )) - { - if (!parse_def_stack_heap_size( 1, spec )) continue; - goto end_of_line; - } - else if (!strcmp( token, "HEAPSIZE" )) - { - if (!parse_def_stack_heap_size( 0, spec )) continue; - goto end_of_line; - } - else if (!strcmp( token, "EXPORTS" )) - { - in_exports = 1; - if (!(token = GetToken(1))) continue; - } - else if (!strcmp( token, "IMPORTS" )) - { - in_exports = 0; - if (!(token = GetToken(1))) continue; - } - else if (!strcmp( token, "SECTIONS" )) - { - in_exports = 0; - if (!(token = GetToken(1))) continue; - } - - if (!in_exports) continue; /* ignore this line */ - if (!parse_def_export( xstrdup(token), spec )) continue; - - end_of_line: - if ((token = GetToken(1))) error( "Syntax error near '%s'\n", token ); - } - - current_line = 0; /* no longer parsing the input file */ - assign_names( spec ); - assign_ordinals( spec ); - return !nb_errors; -} - - -/******************************************************************* - * add_debug_channel - */ -static void add_debug_channel( const char *name ) -{ - int i; - - for (i = 0; i < nb_debug_channels; i++) - if (!strcmp( debug_channels[i], name )) return; - - debug_channels = xrealloc( debug_channels, (nb_debug_channels + 1) * sizeof(*debug_channels)); - debug_channels[nb_debug_channels++] = xstrdup(name); -} - - -/******************************************************************* - * parse_debug_channels - * - * Parse a source file and extract the debug channel definitions. - */ -int parse_debug_channels( const char *srcdir, const char *filename ) -{ - FILE *file; - int eol_seen = 1; - - file = open_input_file( srcdir, filename ); - while (fgets( ParseBuffer, sizeof(ParseBuffer), file )) - { - char *channel, *end, *p = ParseBuffer; - - p = ParseBuffer + strlen(ParseBuffer) - 1; - if (!eol_seen) /* continuation line */ - { - eol_seen = (*p == '\n'); - continue; - } - if ((eol_seen = (*p == '\n'))) *p = 0; - - p = ParseBuffer; - while (isspace(*p)) p++; - if (!memcmp( p, "WINE_DECLARE_DEBUG_CHANNEL", 26 ) || - !memcmp( p, "WINE_DEFAULT_DEBUG_CHANNEL", 26 )) - { - p += 26; - while (isspace(*p)) p++; - if (*p != '(') - { - error( "invalid debug channel specification '%s'\n", ParseBuffer ); - goto next; - } - p++; - while (isspace(*p)) p++; - if (!isalpha(*p)) - { - error( "invalid debug channel specification '%s'\n", ParseBuffer ); - goto next; - } - channel = p; - while (isalnum(*p) || *p == '_') p++; - end = p; - while (isspace(*p)) p++; - if (*p != ')') - { - error( "invalid debug channel specification '%s'\n", ParseBuffer ); - goto next; - } - *end = 0; - add_debug_channel( channel ); - } - next: - current_line++; - } - close_input_file( file ); - return !nb_errors; -} diff --git a/reactos/tools/winebuild/relay.c b/reactos/tools/winebuild/relay.c deleted file mode 100644 index b43f5a09633..00000000000 --- a/reactos/tools/winebuild/relay.c +++ /dev/null @@ -1,1208 +0,0 @@ -/* - * Relay calls helper routines - * - * Copyright 1993 Robert J. Amstadt - * Copyright 1995 Martin von Loewis - * Copyright 1995, 1996, 1997 Alexandre Julliard - * Copyright 1997 Eric Youngdale - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include - -#include "thread.h" -#include "stackframe.h" - -#include "build.h" - -#ifdef __i386__ - -static void function_header( FILE *outfile, const char *name ) -{ - fprintf( outfile, "\n\t.align %d\n", get_alignment(4) ); - fprintf( outfile, "\t" __ASM_FUNC("%s") "\n", name ); - fprintf( outfile, "\t.globl " __ASM_NAME("%s") "\n", name ); - fprintf( outfile, __ASM_NAME("%s") ":\n", name ); -} - - -static void function_footer( FILE *outfile, const char *name ) -{ - fprintf( outfile, ".size " __ASM_NAME("%s") ", . - " __ASM_NAME("%s") "\n", name, name ); -} - -/******************************************************************* - * BuildCallFrom16Core - * - * This routine builds the core routines used in 16->32 thunks: - * CallFrom16Word, CallFrom16Long, CallFrom16Register, and CallFrom16Thunk. - * - * These routines are intended to be called via a far call (with 32-bit - * operand size) from 16-bit code. The 16-bit code stub must push %bp, - * the 32-bit entry point to be called, and the argument conversion - * routine to be used (see stack layout below). - * - * The core routine completes the STACK16FRAME on the 16-bit stack and - * switches to the 32-bit stack. Then, the argument conversion routine - * is called; it gets passed the 32-bit entry point and a pointer to the - * 16-bit arguments (on the 16-bit stack) as parameters. (You can either - * use conversion routines automatically generated by BuildCallFrom16, - * or write your own for special purposes.) - * - * The conversion routine must call the 32-bit entry point, passing it - * the converted arguments, and return its return value to the core. - * After the conversion routine has returned, the core switches back - * to the 16-bit stack, converts the return value to the DX:AX format - * (CallFrom16Long), and returns to the 16-bit call stub. All parameters, - * including %bp, are popped off the stack. - * - * The 16-bit call stub now returns to the caller, popping the 16-bit - * arguments if necessary (pascal calling convention). - * - * In the case of a 'register' function, CallFrom16Register fills a - * CONTEXT86 structure with the values all registers had at the point - * the first instruction of the 16-bit call stub was about to be - * executed. A pointer to this CONTEXT86 is passed as third parameter - * to the argument conversion routine, which typically passes it on - * to the called 32-bit entry point. - * - * CallFrom16Thunk is a special variant used by the implementation of - * the Win95 16->32 thunk functions C16ThkSL and C16ThkSL01 and is - * implemented as follows: - * On entry, the EBX register is set up to contain a flat pointer to the - * 16-bit stack such that EBX+22 points to the first argument. - * Then, the entry point is called, while EBP is set up to point - * to the return address (on the 32-bit stack). - * The called function returns with CX set to the number of bytes - * to be popped of the caller's stack. - * - * Stack layout upon entry to the core routine (STACK16FRAME): - * ... ... - * (sp+24) word first 16-bit arg - * (sp+22) word cs - * (sp+20) word ip - * (sp+18) word bp - * (sp+14) long 32-bit entry point (reused for Win16 mutex recursion count) - * (sp+12) word ip of actual entry point (necessary for relay debugging) - * (sp+8) long relay (argument conversion) function entry point - * (sp+4) long cs of 16-bit entry point - * (sp) long ip of 16-bit entry point - * - * Added on the stack: - * (sp-2) word saved gs - * (sp-4) word saved fs - * (sp-6) word saved es - * (sp-8) word saved ds - * (sp-12) long saved ebp - * (sp-16) long saved ecx - * (sp-20) long saved edx - * (sp-24) long saved previous stack - */ -static void BuildCallFrom16Core( FILE *outfile, int reg_func, int thunk, int short_ret ) -{ - const char *name = thunk? "thunk" : reg_func? "regs" : short_ret? "word" : "long"; - - /* Function header */ - if (thunk) function_header( outfile, "__wine_call_from_16_thunk" ); - else if (reg_func) function_header( outfile, "__wine_call_from_16_regs" ); - else if (short_ret) function_header( outfile, "__wine_call_from_16_word" ); - else function_header( outfile, "__wine_call_from_16_long" ); - - /* Create STACK16FRAME (except STACK32FRAME link) */ - fprintf( outfile, "\tpushw %%gs\n" ); - fprintf( outfile, "\tpushw %%fs\n" ); - fprintf( outfile, "\tpushw %%es\n" ); - fprintf( outfile, "\tpushw %%ds\n" ); - fprintf( outfile, "\tpushl %%ebp\n" ); - fprintf( outfile, "\tpushl %%ecx\n" ); - fprintf( outfile, "\tpushl %%edx\n" ); - - /* Save original EFlags register */ - fprintf( outfile, "\tpushfl\n" ); - - if ( UsePIC ) - { - /* Get Global Offset Table into %ecx */ - fprintf( outfile, "\tcall .L__wine_call_from_16_%s.getgot1\n", name ); - fprintf( outfile, ".L__wine_call_from_16_%s.getgot1:\n", name ); - fprintf( outfile, "\tpopl %%ecx\n" ); - fprintf( outfile, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-.L__wine_call_from_16_%s.getgot1], %%ecx\n", name ); - } - - if (UsePIC) - { - fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_DataSelector@GOT") "(%%ecx), %%edx\n" ); - fprintf( outfile, "\t.byte 0x2e\n\tmovl (%%edx), %%edx\n" ); - } - else - fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_DataSelector") ",%%edx\n" ); - - /* Load 32-bit segment registers */ -#ifdef __svr4__ - fprintf( outfile, "\tdata16\n"); -#endif - fprintf( outfile, "\tmovw %%dx, %%ds\n" ); -#ifdef __svr4__ - fprintf( outfile, "\tdata16\n"); -#endif - fprintf( outfile, "\tmovw %%dx, %%es\n" ); - - if ( UsePIC ) - { - fprintf( outfile, "\tmovl " __ASM_NAME("CallTo16_TebSelector@GOT") "(%%ecx), %%edx\n" ); - fprintf( outfile, "\tmovw (%%edx), %%fs\n" ); - } - else - fprintf( outfile, "\tmovw " __ASM_NAME("CallTo16_TebSelector") ", %%fs\n" ); - - fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%gs\n", STRUCTOFFSET(TEB,gs_sel) ); - - /* Get address of wine_ldt_copy array into %ecx */ - if ( UsePIC ) - fprintf( outfile, "\tmovl " __ASM_NAME("wine_ldt_copy@GOT") "(%%ecx), %%ecx\n" ); - else - fprintf( outfile, "\tmovl $" __ASM_NAME("wine_ldt_copy") ", %%ecx\n" ); - - /* Translate STACK16FRAME base to flat offset in %edx */ - fprintf( outfile, "\tmovw %%ss, %%dx\n" ); - fprintf( outfile, "\tandl $0xfff8, %%edx\n" ); - fprintf( outfile, "\tshrl $1, %%edx\n" ); - fprintf( outfile, "\tmovl (%%ecx,%%edx), %%edx\n" ); - fprintf( outfile, "\tmovzwl %%sp, %%ebp\n" ); - fprintf( outfile, "\tleal (%%ebp,%%edx), %%edx\n" ); - - /* Get saved flags into %ecx */ - fprintf( outfile, "\tpopl %%ecx\n" ); - - /* Get the 32-bit stack pointer from the TEB and complete STACK16FRAME */ - fprintf( outfile, "\t.byte 0x64\n\tmovl (%d), %%ebp\n", STACKOFFSET ); - fprintf( outfile, "\tpushl %%ebp\n" ); - - /* Switch stacks */ -#ifdef __svr4__ - fprintf( outfile,"\tdata16\n"); -#endif - fprintf( outfile, "\t.byte 0x64\n\tmovw %%ss, (%d)\n", STACKOFFSET + 2 ); - fprintf( outfile, "\t.byte 0x64\n\tmovw %%sp, (%d)\n", STACKOFFSET ); - fprintf( outfile, "\tpushl %%ds\n" ); - fprintf( outfile, "\tpopl %%ss\n" ); - fprintf( outfile, "\tmovl %%ebp, %%esp\n" ); - fprintf( outfile, "\taddl $%d, %%ebp\n", STRUCTOFFSET(STACK32FRAME, ebp) ); - - - /* At this point: - STACK16FRAME is completely set up - DS, ES, SS: flat data segment - FS: current TEB - ESP: points to last STACK32FRAME - EBP: points to ebp member of last STACK32FRAME - EDX: points to current STACK16FRAME - ECX: contains saved flags - all other registers: unchanged */ - - /* Special case: C16ThkSL stub */ - if ( thunk ) - { - /* Set up registers as expected and call thunk */ - fprintf( outfile, "\tleal %d(%%edx), %%ebx\n", sizeof(STACK16FRAME)-22 ); - fprintf( outfile, "\tleal -4(%%esp), %%ebp\n" ); - - fprintf( outfile, "\tcall *%d(%%edx)\n", STACK16OFFSET(entry_point) ); - - /* Switch stack back */ - fprintf( outfile, "\t.byte 0x64\n\tmovw (%d), %%ss\n", STACKOFFSET+2 ); - fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%esp\n", STACKOFFSET ); - fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); - - /* Restore registers and return directly to caller */ - fprintf( outfile, "\taddl $8, %%esp\n" ); - fprintf( outfile, "\tpopl %%ebp\n" ); - fprintf( outfile, "\tpopw %%ds\n" ); - fprintf( outfile, "\tpopw %%es\n" ); - fprintf( outfile, "\tpopw %%fs\n" ); - fprintf( outfile, "\tpopw %%gs\n" ); - fprintf( outfile, "\taddl $20, %%esp\n" ); - - fprintf( outfile, "\txorb %%ch, %%ch\n" ); - fprintf( outfile, "\tpopl %%ebx\n" ); - fprintf( outfile, "\taddw %%cx, %%sp\n" ); - fprintf( outfile, "\tpush %%ebx\n" ); - - fprintf( outfile, "\t.byte 0x66\n" ); - fprintf( outfile, "\tlret\n" ); - - return; - } - - - /* Build register CONTEXT */ - if ( reg_func ) - { - fprintf( outfile, "\tsubl $%d, %%esp\n", sizeof(CONTEXT86) ); - - fprintf( outfile, "\tmovl %%ecx, %d(%%esp)\n", CONTEXTOFFSET(EFlags) ); - - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Eax) ); - fprintf( outfile, "\tmovl %%ebx, %d(%%esp)\n", CONTEXTOFFSET(Ebx) ); - fprintf( outfile, "\tmovl %%esi, %d(%%esp)\n", CONTEXTOFFSET(Esi) ); - fprintf( outfile, "\tmovl %%edi, %d(%%esp)\n", CONTEXTOFFSET(Edi) ); - - fprintf( outfile, "\tmovl %d(%%edx), %%eax\n", STACK16OFFSET(ebp) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Ebp) ); - fprintf( outfile, "\tmovl %d(%%edx), %%eax\n", STACK16OFFSET(ecx) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Ecx) ); - fprintf( outfile, "\tmovl %d(%%edx), %%eax\n", STACK16OFFSET(edx) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Edx) ); - - fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(ds) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegDs) ); - fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(es) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegEs) ); - fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(fs) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegFs) ); - fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(gs) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegGs) ); - - fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(cs) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegCs) ); - fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(ip) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Eip) ); - - fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%eax\n", STACKOFFSET+2 ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegSs) ); - fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%eax\n", STACKOFFSET ); - fprintf( outfile, "\taddl $%d, %%eax\n", STACK16OFFSET(ip) ); - fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Esp) ); -#if 0 - fprintf( outfile, "\tfsave %d(%%esp)\n", CONTEXTOFFSET(FloatSave) ); -#endif - - /* Push address of CONTEXT86 structure -- popped by the relay routine */ - fprintf( outfile, "\tpushl %%esp\n" ); - } - - - /* Print debug info before call */ - if ( debugging ) - { - if ( UsePIC ) - { - fprintf( outfile, "\tpushl %%ebx\n" ); - - /* Get Global Offset Table into %ebx (for PLT call) */ - fprintf( outfile, "\tcall .L__wine_call_from_16_%s.getgot2\n", name ); - fprintf( outfile, ".L__wine_call_from_16_%s.getgot2:\n", name ); - fprintf( outfile, "\tpopl %%ebx\n" ); - fprintf( outfile, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-.L__wine_call_from_16_%s.getgot2], %%ebx\n", name ); - } - - fprintf( outfile, "\tpushl %%edx\n" ); - if ( reg_func ) - fprintf( outfile, "\tleal -%d(%%ebp), %%eax\n\tpushl %%eax\n", - sizeof(CONTEXT) + STRUCTOFFSET(STACK32FRAME, ebp) ); - else - fprintf( outfile, "\tpushl $0\n" ); - - if ( UsePIC ) - fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16@PLT") "\n "); - else - fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16") "\n "); - - fprintf( outfile, "\tpopl %%edx\n" ); - fprintf( outfile, "\tpopl %%edx\n" ); - - if ( UsePIC ) - fprintf( outfile, "\tpopl %%ebx\n" ); - } - - /* Call relay routine (which will call the API entry point) */ - fprintf( outfile, "\tleal %d(%%edx), %%eax\n", sizeof(STACK16FRAME) ); - fprintf( outfile, "\tpushl %%eax\n" ); - fprintf( outfile, "\tpushl %d(%%edx)\n", STACK16OFFSET(entry_point) ); - fprintf( outfile, "\tcall *%d(%%edx)\n", STACK16OFFSET(relay) ); - - /* Print debug info after call */ - if ( debugging ) - { - if ( UsePIC ) - { - fprintf( outfile, "\tpushl %%ebx\n" ); - - /* Get Global Offset Table into %ebx (for PLT call) */ - fprintf( outfile, "\tcall .L__wine_call_from_16_%s.getgot3\n", name ); - fprintf( outfile, ".L__wine_call_from_16_%s.getgot3:\n", name ); - fprintf( outfile, "\tpopl %%ebx\n" ); - fprintf( outfile, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-.L__wine_call_from_16_%s.getgot3], %%ebx\n", name ); - } - - fprintf( outfile, "\tpushl %%eax\n" ); - if ( reg_func ) - fprintf( outfile, "\tleal -%d(%%ebp), %%eax\n\tpushl %%eax\n", - sizeof(CONTEXT) + STRUCTOFFSET(STACK32FRAME, ebp) ); - else - fprintf( outfile, "\tpushl $0\n" ); - - if ( UsePIC ) - fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16Ret@PLT") "\n "); - else - fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16Ret") "\n "); - - fprintf( outfile, "\tpopl %%eax\n" ); - fprintf( outfile, "\tpopl %%eax\n" ); - - if ( UsePIC ) - fprintf( outfile, "\tpopl %%ebx\n" ); - } - - - if ( reg_func ) - { - fprintf( outfile, "\tmovl %%esp, %%ebx\n" ); - - /* Switch stack back */ - fprintf( outfile, "\t.byte 0x64\n\tmovw (%d), %%ss\n", STACKOFFSET+2 ); - fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%esp\n", STACKOFFSET ); - fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); - - /* Get return address to CallFrom16 stub */ - fprintf( outfile, "\taddw $%d, %%sp\n", STACK16OFFSET(callfrom_ip)-4 ); - fprintf( outfile, "\tpopl %%eax\n" ); - fprintf( outfile, "\tpopl %%edx\n" ); - - /* Restore all registers from CONTEXT */ - fprintf( outfile, "\tmovw %d(%%ebx), %%ss\n", CONTEXTOFFSET(SegSs) ); - fprintf( outfile, "\tmovl %d(%%ebx), %%esp\n", CONTEXTOFFSET(Esp) ); - fprintf( outfile, "\taddl $4, %%esp\n" ); /* room for final return address */ - - fprintf( outfile, "\tpushw %d(%%ebx)\n", CONTEXTOFFSET(SegCs) ); - fprintf( outfile, "\tpushw %d(%%ebx)\n", CONTEXTOFFSET(Eip) ); - fprintf( outfile, "\tpushl %%edx\n" ); - fprintf( outfile, "\tpushl %%eax\n" ); - fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(EFlags) ); - fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegDs) ); - - fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegEs) ); - fprintf( outfile, "\tpopl %%es\n" ); - fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegFs) ); - fprintf( outfile, "\tpopl %%fs\n" ); - fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegGs) ); - fprintf( outfile, "\tpopl %%gs\n" ); - - fprintf( outfile, "\tmovl %d(%%ebx), %%ebp\n", CONTEXTOFFSET(Ebp) ); - fprintf( outfile, "\tmovl %d(%%ebx), %%esi\n", CONTEXTOFFSET(Esi) ); - fprintf( outfile, "\tmovl %d(%%ebx), %%edi\n", CONTEXTOFFSET(Edi) ); - fprintf( outfile, "\tmovl %d(%%ebx), %%eax\n", CONTEXTOFFSET(Eax) ); - fprintf( outfile, "\tmovl %d(%%ebx), %%edx\n", CONTEXTOFFSET(Edx) ); - fprintf( outfile, "\tmovl %d(%%ebx), %%ecx\n", CONTEXTOFFSET(Ecx) ); - fprintf( outfile, "\tmovl %d(%%ebx), %%ebx\n", CONTEXTOFFSET(Ebx) ); - - fprintf( outfile, "\tpopl %%ds\n" ); - fprintf( outfile, "\tpopfl\n" ); - fprintf( outfile, "\tlret\n" ); - } - else - { - /* Switch stack back */ - fprintf( outfile, "\t.byte 0x64\n\tmovw (%d), %%ss\n", STACKOFFSET+2 ); - fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%esp\n", STACKOFFSET ); - fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); - - /* Restore registers */ - fprintf( outfile, "\tpopl %%edx\n" ); - fprintf( outfile, "\tpopl %%ecx\n" ); - fprintf( outfile, "\tpopl %%ebp\n" ); - fprintf( outfile, "\tpopw %%ds\n" ); - fprintf( outfile, "\tpopw %%es\n" ); - fprintf( outfile, "\tpopw %%fs\n" ); - fprintf( outfile, "\tpopw %%gs\n" ); - - /* Prepare return value and set flags accordingly */ - if ( !short_ret ) - fprintf( outfile, "\tshldl $16, %%eax, %%edx\n" ); - fprintf( outfile, "\torl %%eax, %%eax\n" ); - - /* Return to return stub which will return to caller */ - fprintf( outfile, "\tlret $12\n" ); - } - if (thunk) function_footer( outfile, "__wine_call_from_16_thunk" ); - else if (reg_func) function_footer( outfile, "__wine_call_from_16_regs" ); - else if (short_ret) function_footer( outfile, "__wine_call_from_16_word" ); - else function_footer( outfile, "__wine_call_from_16_long" ); -} - - -/******************************************************************* - * BuildCallTo16Core - * - * This routine builds the core routines used in 32->16 thunks: - * - * extern DWORD WINAPI wine_call_to_16( FARPROC16 target, DWORD cbArgs, PEXCEPTION_HANDLER handler ); - * extern void WINAPI wine_call_to_16_regs( CONTEXT86 *context, DWORD cbArgs, PEXCEPTION_HANDLER handler ); - * - * These routines can be called directly from 32-bit code. - * - * All routines expect that the 16-bit stack contents (arguments) and the - * return address (segptr to CallTo16_Ret) were already set up by the - * caller; nb_args must contain the number of bytes to be conserved. The - * 16-bit SS:SP will be set accordinly. - * - * All other registers are either taken from the CONTEXT86 structure - * or else set to default values. The target routine address is either - * given directly or taken from the CONTEXT86. - */ -static void BuildCallTo16Core( FILE *outfile, int reg_func ) -{ - const char *name = reg_func ? "wine_call_to_16_regs" : "wine_call_to_16"; - - /* Function header */ - function_header( outfile, name ); - - /* Function entry sequence */ - fprintf( outfile, "\tpushl %%ebp\n" ); - fprintf( outfile, "\tmovl %%esp, %%ebp\n" ); - - /* Save the 32-bit registers */ - fprintf( outfile, "\tpushl %%ebx\n" ); - fprintf( outfile, "\tpushl %%esi\n" ); - fprintf( outfile, "\tpushl %%edi\n" ); - fprintf( outfile, "\t.byte 0x64\n\tmovl %%gs,(%d)\n", STRUCTOFFSET(TEB,gs_sel) ); - - /* Setup exception frame */ - fprintf( outfile, "\t.byte 0x64\n\tpushl (%d)\n", STACKOFFSET ); - fprintf( outfile, "\tpushl 16(%%ebp)\n" ); /* handler */ - fprintf( outfile, "\t.byte 0x64\n\tpushl (%d)\n", STRUCTOFFSET(TEB,Tib.ExceptionList) ); - fprintf( outfile, "\t.byte 0x64\n\tmovl %%esp,(%d)\n", STRUCTOFFSET(TEB,Tib.ExceptionList) ); - - /* Call the actual CallTo16 routine (simulate a lcall) */ - fprintf( outfile, "\tpushl %%cs\n" ); - fprintf( outfile, "\tcall .L%s\n", name ); - - /* Remove exception frame */ - fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STRUCTOFFSET(TEB,Tib.ExceptionList) ); - fprintf( outfile, "\taddl $4, %%esp\n" ); - fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); - - if ( !reg_func ) - { - /* Convert return value */ - fprintf( outfile, "\tandl $0xffff,%%eax\n" ); - fprintf( outfile, "\tshll $16,%%edx\n" ); - fprintf( outfile, "\torl %%edx,%%eax\n" ); - } - else - { - /* - * Modify CONTEXT86 structure to contain new values - * - * NOTE: We restore only EAX, EBX, EDX, EDX, EBP, and ESP. - * The segment registers as well as ESI and EDI should - * not be modified by a well-behaved 16-bit routine in - * any case. [If necessary, we could restore them as well, - * at the cost of a somewhat less efficient return path.] - */ - - fprintf( outfile, "\tmovl %d(%%esp), %%edi\n", STACK32OFFSET(target) - STACK32OFFSET(edi)); - /* everything above edi has been popped already */ - - fprintf( outfile, "\tmovl %%eax, %d(%%edi)\n", CONTEXTOFFSET(Eax) ); - fprintf( outfile, "\tmovl %%ebx, %d(%%edi)\n", CONTEXTOFFSET(Ebx) ); - fprintf( outfile, "\tmovl %%ecx, %d(%%edi)\n", CONTEXTOFFSET(Ecx) ); - fprintf( outfile, "\tmovl %%edx, %d(%%edi)\n", CONTEXTOFFSET(Edx) ); - fprintf( outfile, "\tmovl %%ebp, %d(%%edi)\n", CONTEXTOFFSET(Ebp) ); - fprintf( outfile, "\tmovl %%esi, %d(%%edi)\n", CONTEXTOFFSET(Esp) ); - /* The return glue code saved %esp into %esi */ - } - - /* Restore the 32-bit registers */ - fprintf( outfile, "\tpopl %%edi\n" ); - fprintf( outfile, "\tpopl %%esi\n" ); - fprintf( outfile, "\tpopl %%ebx\n" ); - - /* Function exit sequence */ - fprintf( outfile, "\tpopl %%ebp\n" ); - fprintf( outfile, "\tret $12\n" ); - - - /* Start of the actual CallTo16 routine */ - - fprintf( outfile, ".L%s:\n", name ); - - /* Switch to the 16-bit stack */ - fprintf( outfile, "\tmovl %%esp,%%edx\n" ); -#ifdef __svr4__ - fprintf( outfile,"\tdata16\n"); -#endif - fprintf( outfile, "\t.byte 0x64\n\tmovw (%d),%%ss\n", STACKOFFSET + 2); - fprintf( outfile, "\t.byte 0x64\n\tmovw (%d),%%sp\n", STACKOFFSET ); - fprintf( outfile, "\t.byte 0x64\n\tmovl %%edx,(%d)\n", STACKOFFSET ); - - /* Make %bp point to the previous stackframe (built by CallFrom16) */ - fprintf( outfile, "\tmovzwl %%sp,%%ebp\n" ); - fprintf( outfile, "\tleal %d(%%ebp),%%ebp\n", STACK16OFFSET(bp) ); - - /* Add the specified offset to the new sp */ - fprintf( outfile, "\tsubw %d(%%edx), %%sp\n", STACK32OFFSET(nb_args) ); - - if (reg_func) - { - /* Push the called routine address */ - fprintf( outfile, "\tmovl %d(%%edx),%%edx\n", STACK32OFFSET(target) ); - fprintf( outfile, "\tpushw %d(%%edx)\n", CONTEXTOFFSET(SegCs) ); - fprintf( outfile, "\tpushw %d(%%edx)\n", CONTEXTOFFSET(Eip) ); - - /* Get the registers */ - fprintf( outfile, "\tpushw %d(%%edx)\n", CONTEXTOFFSET(SegDs) ); - fprintf( outfile, "\tpushl %d(%%edx)\n", CONTEXTOFFSET(SegEs) ); - fprintf( outfile, "\tpopl %%es\n" ); - fprintf( outfile, "\tpushl %d(%%edx)\n", CONTEXTOFFSET(SegFs) ); - fprintf( outfile, "\tpopl %%fs\n" ); - fprintf( outfile, "\tpushl %d(%%edx)\n", CONTEXTOFFSET(SegGs) ); - fprintf( outfile, "\tpopl %%gs\n" ); - fprintf( outfile, "\tmovl %d(%%edx),%%ebp\n", CONTEXTOFFSET(Ebp) ); - fprintf( outfile, "\tmovl %d(%%edx),%%esi\n", CONTEXTOFFSET(Esi) ); - fprintf( outfile, "\tmovl %d(%%edx),%%edi\n", CONTEXTOFFSET(Edi) ); - fprintf( outfile, "\tmovl %d(%%edx),%%eax\n", CONTEXTOFFSET(Eax) ); - fprintf( outfile, "\tmovl %d(%%edx),%%ebx\n", CONTEXTOFFSET(Ebx) ); - fprintf( outfile, "\tmovl %d(%%edx),%%ecx\n", CONTEXTOFFSET(Ecx) ); - fprintf( outfile, "\tmovl %d(%%edx),%%edx\n", CONTEXTOFFSET(Edx) ); - - /* Get the 16-bit ds */ - fprintf( outfile, "\tpopw %%ds\n" ); - } - else /* not a register function */ - { - /* Push the called routine address */ - fprintf( outfile, "\tpushl %d(%%edx)\n", STACK32OFFSET(target) ); - - /* Set %fs and %gs to the value saved by the last CallFrom16 */ - fprintf( outfile, "\tpushw %d(%%ebp)\n", STACK16OFFSET(fs)-STACK16OFFSET(bp) ); - fprintf( outfile, "\tpopw %%fs\n" ); - fprintf( outfile, "\tpushw %d(%%ebp)\n", STACK16OFFSET(gs)-STACK16OFFSET(bp) ); - fprintf( outfile, "\tpopw %%gs\n" ); - - /* Set %ds and %es (and %ax just in case) equal to %ss */ - fprintf( outfile, "\tmovw %%ss,%%ax\n" ); - fprintf( outfile, "\tmovw %%ax,%%ds\n" ); - fprintf( outfile, "\tmovw %%ax,%%es\n" ); - } - - /* Jump to the called routine */ - fprintf( outfile, "\t.byte 0x66\n" ); - fprintf( outfile, "\tlret\n" ); - - /* Function footer */ - function_footer( outfile, name ); -} - - -/******************************************************************* - * BuildRet16Func - * - * Build the return code for 16-bit callbacks - */ -static void BuildRet16Func( FILE *outfile ) -{ - function_header( outfile, "CallTo16_Ret" ); - - /* Save %esp into %esi */ - fprintf( outfile, "\tmovl %%esp,%%esi\n" ); - - /* Restore 32-bit segment registers */ - - fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_DataSelector") "-" __ASM_NAME("Call16_Ret_Start") ",%%edi\n" ); -#ifdef __svr4__ - fprintf( outfile, "\tdata16\n"); -#endif - fprintf( outfile, "\tmovw %%di,%%ds\n" ); -#ifdef __svr4__ - fprintf( outfile, "\tdata16\n"); -#endif - fprintf( outfile, "\tmovw %%di,%%es\n" ); - - fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_TebSelector") "-" __ASM_NAME("Call16_Ret_Start") ",%%fs\n" ); - - fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%gs\n", STRUCTOFFSET(TEB,gs_sel) ); - - /* Restore the 32-bit stack */ - -#ifdef __svr4__ - fprintf( outfile, "\tdata16\n"); -#endif - fprintf( outfile, "\tmovw %%di,%%ss\n" ); - fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%esp\n", STACKOFFSET ); - - /* Return to caller */ - - fprintf( outfile, "\tlret\n" ); - - /* Function footer */ - function_footer( outfile, "CallTo16_Ret" ); - - /* Declare the return address and data selector variables */ - - fprintf( outfile, "\n\t.align %d\n", get_alignment(4) ); - fprintf( outfile, "\t.globl " __ASM_NAME("CallTo16_DataSelector") "\n" ); - fprintf( outfile, __ASM_NAME("CallTo16_DataSelector") ":\t.long 0\n" ); - fprintf( outfile, "\t.globl " __ASM_NAME("CallTo16_TebSelector") "\n" ); - fprintf( outfile, __ASM_NAME("CallTo16_TebSelector") ":\t.long 0\n" ); -} - - -/******************************************************************* - * BuildCallTo32CBClient - * - * Call a CBClient relay stub from 32-bit code (KERNEL.620). - * - * Since the relay stub is itself 32-bit, this should not be a problem; - * unfortunately, the relay stubs are expected to switch back to a - * 16-bit stack (and 16-bit code) after completion :-( - * - * This would conflict with our 16- vs. 32-bit stack handling, so - * we simply switch *back* to our 32-bit stack before returning to - * the caller ... - * - * The CBClient relay stub expects to be called with the following - * 16-bit stack layout, and with ebp and ebx pointing into the 16-bit - * stack at the designated places: - * - * ... - * (ebp+14) original arguments to the callback routine - * (ebp+10) far return address to original caller - * (ebp+6) Thunklet target address - * (ebp+2) Thunklet relay ID code - * (ebp) BP (saved by CBClientGlueSL) - * (ebp-2) SI (saved by CBClientGlueSL) - * (ebp-4) DI (saved by CBClientGlueSL) - * (ebp-6) DS (saved by CBClientGlueSL) - * - * ... buffer space used by the 16-bit side glue for temp copies - * - * (ebx+4) far return address to 16-bit side glue code - * (ebx) saved 16-bit ss:sp (pointing to ebx+4) - * - * The 32-bit side glue code accesses both the original arguments (via ebp) - * and the temporary copies prepared by the 16-bit side glue (via ebx). - * After completion, the stub will load ss:sp from the buffer at ebx - * and perform a far return to 16-bit code. - * - * To trick the relay stub into returning to us, we replace the 16-bit - * return address to the glue code by a cs:ip pair pointing to our - * return entry point (the original return address is saved first). - * Our return stub thus called will then reload the 32-bit ss:esp and - * return to 32-bit code (by using and ss:esp value that we have also - * pushed onto the 16-bit stack before and a cs:eip values found at - * that position on the 32-bit stack). The ss:esp to be restored is - * found relative to the 16-bit stack pointer at: - * - * (ebx-4) ss (flat) - * (ebx-8) sp (32-bit stack pointer) - * - * The second variant of this routine, CALL32_CBClientEx, which is used - * to implement KERNEL.621, has to cope with yet another problem: Here, - * the 32-bit side directly returns to the caller of the CBClient thunklet, - * restoring registers saved by CBClientGlueSL and cleaning up the stack. - * As we have to return to our 32-bit code first, we have to adapt the - * layout of our temporary area so as to include values for the registers - * that are to be restored, and later (in the implementation of KERNEL.621) - * we *really* restore them. The return stub restores DS, DI, SI, and BP - * from the stack, skips the next 8 bytes (CBClient relay code / target), - * and then performs a lret NN, where NN is the number of arguments to be - * removed. Thus, we prepare our temporary area as follows: - * - * (ebx+22) 16-bit cs (this segment) - * (ebx+20) 16-bit ip ('16-bit' return entry point) - * (ebx+16) 32-bit ss (flat) - * (ebx+12) 32-bit sp (32-bit stack pointer) - * (ebx+10) 16-bit bp (points to ebx+24) - * (ebx+8) 16-bit si (ignored) - * (ebx+6) 16-bit di (ignored) - * (ebx+4) 16-bit ds (we actually use the flat DS here) - * (ebx+2) 16-bit ss (16-bit stack segment) - * (ebx+0) 16-bit sp (points to ebx+4) - * - * Note that we ensure that DS is not changed and remains the flat segment, - * and the 32-bit stack pointer our own return stub needs fits just - * perfectly into the 8 bytes that are skipped by the Windows stub. - * One problem is that we have to determine the number of removed arguments, - * as these have to be really removed in KERNEL.621. Thus, the BP value - * that we place in the temporary area to be restored, contains the value - * that SP would have if no arguments were removed. By comparing the actual - * value of SP with this value in our return stub we can compute the number - * of removed arguments. This is then returned to KERNEL.621. - * - * The stack layout of this function: - * (ebp+20) nArgs pointer to variable receiving nr. of args (Ex only) - * (ebp+16) esi pointer to caller's esi value - * (ebp+12) arg ebp value to be set for relay stub - * (ebp+8) func CBClient relay stub address - * (ebp+4) ret addr - * (ebp) ebp - */ -static void BuildCallTo32CBClient( FILE *outfile, BOOL isEx ) -{ - const char *name = isEx? "CBClientEx" : "CBClient"; - int size = isEx? 24 : 12; - - /* Function header */ - - fprintf( outfile, "\n\t.align %d\n", get_alignment(4) ); - fprintf( outfile, "\t.globl " __ASM_NAME("CALL32_%s") "\n", name ); - fprintf( outfile, __ASM_NAME("CALL32_%s") ":\n", name ); - - /* Entry code */ - - fprintf( outfile, "\tpushl %%ebp\n" ); - fprintf( outfile, "\tmovl %%esp,%%ebp\n" ); - fprintf( outfile, "\tpushl %%edi\n" ); - fprintf( outfile, "\tpushl %%esi\n" ); - fprintf( outfile, "\tpushl %%ebx\n" ); - - /* Get the 16-bit stack */ - - fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%ebx\n", STACKOFFSET); - - /* Convert it to a flat address */ - - fprintf( outfile, "\tshldl $16,%%ebx,%%eax\n" ); - fprintf( outfile, "\tandl $0xfff8,%%eax\n" ); - fprintf( outfile, "\tshrl $1,%%eax\n" ); - fprintf( outfile, "\tmovl " __ASM_NAME("wine_ldt_copy") "(%%eax),%%esi\n" ); - fprintf( outfile, "\tmovw %%bx,%%ax\n" ); - fprintf( outfile, "\taddl %%eax,%%esi\n" ); - - /* Allocate temporary area (simulate STACK16_PUSH) */ - - fprintf( outfile, "\tpushf\n" ); - fprintf( outfile, "\tcld\n" ); - fprintf( outfile, "\tleal -%d(%%esi), %%edi\n", size ); - fprintf( outfile, "\tmovl $%d, %%ecx\n", sizeof(STACK16FRAME) ); - fprintf( outfile, "\trep\n\tmovsb\n" ); - fprintf( outfile, "\tpopf\n" ); - - fprintf( outfile, "\t.byte 0x64\n\tsubw $%d,(%d)\n", size, STACKOFFSET ); - - fprintf( outfile, "\tpushl %%edi\n" ); /* remember address */ - - /* Set up temporary area */ - - if ( !isEx ) - { - fprintf( outfile, "\tleal 4(%%edi), %%edi\n" ); - - fprintf( outfile, "\tleal -8(%%esp), %%eax\n" ); - fprintf( outfile, "\tmovl %%eax, -8(%%edi)\n" ); /* 32-bit sp */ - - fprintf( outfile, "\tmovw %%ss, %%ax\n" ); - fprintf( outfile, "\tandl $0x0000ffff, %%eax\n" ); - fprintf( outfile, "\tmovl %%eax, -4(%%edi)\n" ); /* 32-bit ss */ - - fprintf( outfile, "\taddl $%d, %%ebx\n", sizeof(STACK16FRAME)-size+4 + 4 ); - fprintf( outfile, "\tmovl %%ebx, 0(%%edi)\n" ); /* 16-bit ss:sp */ - - fprintf( outfile, "\tmovl " __ASM_NAME("CALL32_%s_RetAddr") ", %%eax\n", name ); - fprintf( outfile, "\tmovl %%eax, 4(%%edi)\n" ); /* overwrite return address */ - } - else - { - fprintf( outfile, "\taddl $%d, %%ebx\n", sizeof(STACK16FRAME)-size+4 ); - fprintf( outfile, "\tmovl %%ebx, 0(%%edi)\n" ); - - fprintf( outfile, "\tmovw %%ds, %%ax\n" ); - fprintf( outfile, "\tmovw %%ax, 4(%%edi)\n" ); - - fprintf( outfile, "\taddl $20, %%ebx\n" ); - fprintf( outfile, "\tmovw %%bx, 10(%%edi)\n" ); - - fprintf( outfile, "\tleal -8(%%esp), %%eax\n" ); - fprintf( outfile, "\tmovl %%eax, 12(%%edi)\n" ); - - fprintf( outfile, "\tmovw %%ss, %%ax\n" ); - fprintf( outfile, "\tandl $0x0000ffff, %%eax\n" ); - fprintf( outfile, "\tmovl %%eax, 16(%%edi)\n" ); - - fprintf( outfile, "\tmovl " __ASM_NAME("CALL32_%s_RetAddr") ", %%eax\n", name ); - fprintf( outfile, "\tmovl %%eax, 20(%%edi)\n" ); - } - - /* Set up registers and call CBClient relay stub (simulating a far call) */ - - fprintf( outfile, "\tmovl 16(%%ebp), %%esi\n" ); - fprintf( outfile, "\tmovl (%%esi), %%esi\n" ); - - fprintf( outfile, "\tmovl %%edi, %%ebx\n" ); - fprintf( outfile, "\tmovl 8(%%ebp), %%eax\n" ); - fprintf( outfile, "\tmovl 12(%%ebp), %%ebp\n" ); - - fprintf( outfile, "\tpushl %%cs\n" ); - fprintf( outfile, "\tcall *%%eax\n" ); - - /* Return new esi value to caller */ - - fprintf( outfile, "\tmovl 32(%%esp), %%edi\n" ); - fprintf( outfile, "\tmovl %%esi, (%%edi)\n" ); - - /* Cleanup temporary area (simulate STACK16_POP) */ - - fprintf( outfile, "\tpop %%esi\n" ); - - fprintf( outfile, "\tpushf\n" ); - fprintf( outfile, "\tstd\n" ); - fprintf( outfile, "\tdec %%esi\n" ); - fprintf( outfile, "\tleal %d(%%esi), %%edi\n", size ); - fprintf( outfile, "\tmovl $%d, %%ecx\n", sizeof(STACK16FRAME) ); - fprintf( outfile, "\trep\n\tmovsb\n" ); - fprintf( outfile, "\tpopf\n" ); - - fprintf( outfile, "\t.byte 0x64\n\taddw $%d,(%d)\n", size, STACKOFFSET ); - - /* Return argument size to caller */ - if ( isEx ) - { - fprintf( outfile, "\tmovl 32(%%esp), %%ebx\n" ); - fprintf( outfile, "\tmovl %%ebp, (%%ebx)\n" ); - } - - /* Restore registers and return */ - - fprintf( outfile, "\tpopl %%ebx\n" ); - fprintf( outfile, "\tpopl %%esi\n" ); - fprintf( outfile, "\tpopl %%edi\n" ); - fprintf( outfile, "\tpopl %%ebp\n" ); - fprintf( outfile, "\tret\n" ); - fprintf( outfile, ".size " __ASM_NAME("CALL32_%s") ", . - " __ASM_NAME("CALL32_%s") "\n", name, name ); -} - -static void BuildCallTo32CBClientRet( FILE *outfile, BOOL isEx ) -{ - const char *name = isEx? "CBClientEx" : "CBClient"; - - /* '16-bit' return stub */ - - fprintf( outfile, "\n\t.globl " __ASM_NAME("CALL32_%s_Ret") "\n", name ); - fprintf( outfile, __ASM_NAME("CALL32_%s_Ret") ":\n", name ); - - if ( !isEx ) - { - fprintf( outfile, "\tmovzwl %%sp, %%ebx\n" ); - fprintf( outfile, "\tlssl %%ss:-16(%%ebx), %%esp\n" ); - } - else - { - fprintf( outfile, "\tmovzwl %%bp, %%ebx\n" ); - fprintf( outfile, "\tsubw %%bp, %%sp\n" ); - fprintf( outfile, "\tmovzwl %%sp, %%ebp\n" ); - fprintf( outfile, "\tlssl %%ss:-12(%%ebx), %%esp\n" ); - } - fprintf( outfile, "\tlret\n" ); - - fprintf( outfile, ".size " __ASM_NAME("CALL32_%s_Ret") ", . - " __ASM_NAME("CALL32_%s_Ret") "\n", name, name ); - - /* Declare the return address variable */ - - fprintf( outfile, "\n\t.globl " __ASM_NAME("CALL32_%s_RetAddr") "\n", name ); - fprintf( outfile, __ASM_NAME("CALL32_%s_RetAddr") ":\t.long 0\n", name ); -} - - -/******************************************************************* - * BuildCallFrom32Regs - * - * Build a 32-bit-to-Wine call-back function for a 'register' function. - * 'args' is the number of dword arguments. - * - * Stack layout: - * ... - * (ebp+12) first arg - * (ebp+8) ret addr to user code - * (ebp+4) ret addr to relay code - * (ebp+0) saved ebp - * (ebp-128) buffer area to allow stack frame manipulation - * (ebp-332) CONTEXT86 struct - * (ebp-336) CONTEXT86 *argument - * .... other arguments copied from (ebp+12) - * - * The entry point routine is called with a CONTEXT* extra argument, - * following the normal args. In this context structure, EIP_reg - * contains the return address to user code, and ESP_reg the stack - * pointer on return (with the return address and arguments already - * removed). - */ -static void BuildCallFrom32Regs( FILE *outfile ) -{ - static const int STACK_SPACE = 128 + sizeof(CONTEXT86); - - /* Function header */ - - function_header( outfile, "__wine_call_from_32_regs" ); - - /* Allocate some buffer space on the stack */ - - fprintf( outfile, "\tpushl %%ebp\n" ); - fprintf( outfile, "\tmovl %%esp,%%ebp\n "); - fprintf( outfile, "\tleal -%d(%%esp), %%esp\n", STACK_SPACE ); - - /* Build the context structure */ - - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Eax) - STACK_SPACE ); - fprintf( outfile, "\tpushfl\n" ); - fprintf( outfile, "\tpopl %%eax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(EFlags) - STACK_SPACE ); - fprintf( outfile, "\tmovl 0(%%ebp),%%eax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Ebp) - STACK_SPACE ); - fprintf( outfile, "\tmovl %%ebx,%d(%%ebp)\n", CONTEXTOFFSET(Ebx) - STACK_SPACE ); - fprintf( outfile, "\tmovl %%ecx,%d(%%ebp)\n", CONTEXTOFFSET(Ecx) - STACK_SPACE ); - fprintf( outfile, "\tmovl %%edx,%d(%%ebp)\n", CONTEXTOFFSET(Edx) - STACK_SPACE ); - fprintf( outfile, "\tmovl %%esi,%d(%%ebp)\n", CONTEXTOFFSET(Esi) - STACK_SPACE ); - fprintf( outfile, "\tmovl %%edi,%d(%%ebp)\n", CONTEXTOFFSET(Edi) - STACK_SPACE ); - - fprintf( outfile, "\txorl %%eax,%%eax\n" ); - fprintf( outfile, "\tmovw %%cs,%%ax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegCs) - STACK_SPACE ); - fprintf( outfile, "\tmovw %%es,%%ax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegEs) - STACK_SPACE ); - fprintf( outfile, "\tmovw %%fs,%%ax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegFs) - STACK_SPACE ); - fprintf( outfile, "\tmovw %%gs,%%ax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegGs) - STACK_SPACE ); - fprintf( outfile, "\tmovw %%ss,%%ax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegSs) - STACK_SPACE ); - fprintf( outfile, "\tmovw %%ds,%%ax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegDs) - STACK_SPACE ); - fprintf( outfile, "\tmovw %%ax,%%es\n" ); /* set %es equal to %ds just in case */ - - fprintf( outfile, "\tmovl $0x%x,%%eax\n", CONTEXT86_FULL ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(ContextFlags) - STACK_SPACE ); - - fprintf( outfile, "\tmovl 8(%%ebp),%%eax\n" ); /* Get %eip at time of call */ - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Eip) - STACK_SPACE ); - - /* Transfer the arguments */ - - fprintf( outfile, "\tmovl 4(%%ebp),%%ebx\n" ); /* get relay code addr */ - fprintf( outfile, "\tpushl %%esp\n" ); /* push ptr to context struct */ - fprintf( outfile, "\tmovzbl 4(%%ebx),%%ecx\n" ); /* fetch number of args to copy */ - fprintf( outfile, "\tjecxz 1f\n" ); - fprintf( outfile, "\tsubl %%ecx,%%esp\n" ); - fprintf( outfile, "\tleal 12(%%ebp),%%esi\n" ); /* get %esp at time of call */ - fprintf( outfile, "\tmovl %%esp,%%edi\n" ); - fprintf( outfile, "\tshrl $2,%%ecx\n" ); - fprintf( outfile, "\tcld\n" ); - fprintf( outfile, "\trep\n\tmovsl\n" ); /* copy args */ - - fprintf( outfile, "1:\tmovzbl 5(%%ebx),%%eax\n" ); /* fetch number of args to remove */ - fprintf( outfile, "\tleal 12(%%ebp,%%eax),%%eax\n" ); - fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Esp) - STACK_SPACE ); - - /* Call the entry point */ - - fprintf( outfile, "\tcall *0(%%ebx)\n" ); - fprintf( outfile, "\tleal -%d(%%ebp),%%ecx\n", STACK_SPACE ); - - /* Restore the context structure */ - - fprintf( outfile, "2:\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegEs) ); - fprintf( outfile, "\tpopl %%es\n" ); - fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegFs) ); - fprintf( outfile, "\tpopl %%fs\n" ); - fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegGs) ); - fprintf( outfile, "\tpopl %%gs\n" ); - - fprintf( outfile, "\tmovl %d(%%ecx),%%edi\n", CONTEXTOFFSET(Edi) ); - fprintf( outfile, "\tmovl %d(%%ecx),%%esi\n", CONTEXTOFFSET(Esi) ); - fprintf( outfile, "\tmovl %d(%%ecx),%%edx\n", CONTEXTOFFSET(Edx) ); - fprintf( outfile, "\tmovl %d(%%ecx),%%ebx\n", CONTEXTOFFSET(Ebx) ); - fprintf( outfile, "\tmovl %d(%%ecx),%%eax\n", CONTEXTOFFSET(Eax) ); - fprintf( outfile, "\tmovl %d(%%ecx),%%ebp\n", CONTEXTOFFSET(Ebp) ); - - fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegSs) ); - fprintf( outfile, "\tpopl %%ss\n" ); - fprintf( outfile, "\tmovl %d(%%ecx),%%esp\n", CONTEXTOFFSET(Esp) ); - - fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(EFlags) ); - fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegCs) ); - fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(Eip) ); - fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegDs) ); - fprintf( outfile, "\tmovl %d(%%ecx),%%ecx\n", CONTEXTOFFSET(Ecx) ); - - fprintf( outfile, "\tpopl %%ds\n" ); - fprintf( outfile, "\tiret\n" ); - function_footer( outfile, "__wine_call_from_32_regs" ); - - function_header( outfile, "__wine_call_from_32_restore_regs" ); - fprintf( outfile, "\tleal 4(%%esp),%%ecx\n" ); - fprintf( outfile, "\tjmp 2b\n" ); - function_footer( outfile, "__wine_call_from_32_restore_regs" ); -} - - -/******************************************************************* - * BuildPendingEventCheck - * - * Build a function that checks whether there are any - * pending DPMI events. - * - * Stack layout: - * - * (sp+12) long eflags - * (sp+6) long cs - * (sp+2) long ip - * (sp) word fs - * - * On entry to function, fs register points to a valid TEB. - * On exit from function, stack will be popped. - */ -static void BuildPendingEventCheck( FILE *outfile ) -{ - /* Function header */ - - function_header( outfile, "DPMI_PendingEventCheck" ); - - /* Check for pending events. */ - - fprintf( outfile, "\t.byte 0x64\n\ttestl $0xffffffff,(%d)\n", - STRUCTOFFSET(TEB,vm86_pending) ); - fprintf( outfile, "\tje " __ASM_NAME("DPMI_PendingEventCheck_Cleanup") "\n" ); - - fprintf( outfile, "\t.byte 0x64\n\ttestl $0xffffffff,(%d)\n", - STRUCTOFFSET(TEB,dpmi_vif) ); - - fprintf( outfile, "\tje " __ASM_NAME("DPMI_PendingEventCheck_Cleanup") "\n" ); - - /* Process pending events. */ - - fprintf( outfile, "\tsti\n" ); - - /* Start cleanup. Restore fs register. */ - - fprintf( outfile, ".globl " __ASM_NAME("DPMI_PendingEventCheck_Cleanup") "\n" ); - fprintf( outfile, __ASM_NAME("DPMI_PendingEventCheck_Cleanup") ":\n" ); - fprintf( outfile, "\tpopw %%fs\n" ); - - /* Return from function. */ - - fprintf( outfile, ".globl " __ASM_NAME("DPMI_PendingEventCheck_Return") "\n" ); - fprintf( outfile, __ASM_NAME("DPMI_PendingEventCheck_Return") ":\n" ); - fprintf( outfile, "\tiret\n" ); - - function_footer( outfile, "DPMI_PendingEventCheck" ); -} - - -/******************************************************************* - * BuildRelays16 - * - * Build all the 16-bit relay callbacks - */ -void BuildRelays16( FILE *outfile ) -{ - /* File header */ - - fprintf( outfile, "/* File generated automatically. Do not edit! */\n\n" ); - fprintf( outfile, "\t.text\n" ); - - fprintf( outfile, __ASM_NAME("__wine_spec_thunk_text_16") ":\n\n" ); - - fprintf( outfile, __ASM_NAME("Call16_Start") ":\n" ); - fprintf( outfile, "\t.globl " __ASM_NAME("Call16_Start") "\n" ); - fprintf( outfile, "\t.byte 0\n\n" ); - - /* Standard CallFrom16 routine (WORD return) */ - BuildCallFrom16Core( outfile, FALSE, FALSE, TRUE ); - - /* Standard CallFrom16 routine (DWORD return) */ - BuildCallFrom16Core( outfile, FALSE, FALSE, FALSE ); - - /* Register CallFrom16 routine */ - BuildCallFrom16Core( outfile, TRUE, FALSE, FALSE ); - - /* C16ThkSL CallFrom16 routine */ - BuildCallFrom16Core( outfile, FALSE, TRUE, FALSE ); - - /* Standard CallTo16 routine */ - BuildCallTo16Core( outfile, 0 ); - - /* Register CallTo16 routine */ - BuildCallTo16Core( outfile, 1 ); - - /* CBClientThunkSL routine */ - BuildCallTo32CBClient( outfile, FALSE ); - - /* CBClientThunkSLEx routine */ - BuildCallTo32CBClient( outfile, TRUE ); - - fprintf( outfile, __ASM_NAME("Call16_End") ":\n" ); - fprintf( outfile, "\t.globl " __ASM_NAME("Call16_End") "\n" ); - fprintf( outfile, "\t.size " __ASM_NAME("__wine_spec_thunk_text_16") ",. - " __ASM_NAME("__wine_spec_thunk_text_16") "\n" ); - - /* The whole Call16_Ret segment must lie within the .data section */ - fprintf( outfile, "\n\t.data\n" ); - fprintf( outfile, __ASM_NAME("__wine_spec_thunk_data_16") ":\n\n" ); - fprintf( outfile, "\t.globl " __ASM_NAME("Call16_Ret_Start") "\n" ); - fprintf( outfile, __ASM_NAME("Call16_Ret_Start") ":\n" ); - - /* Standard CallTo16 return stub */ - BuildRet16Func( outfile ); - - /* CBClientThunkSL return stub */ - BuildCallTo32CBClientRet( outfile, FALSE ); - - /* CBClientThunkSLEx return stub */ - BuildCallTo32CBClientRet( outfile, TRUE ); - - /* Pending DPMI events check stub */ - BuildPendingEventCheck( outfile ); - - /* End of Call16_Ret segment */ - fprintf( outfile, "\n\t.globl " __ASM_NAME("Call16_Ret_End") "\n" ); - fprintf( outfile, __ASM_NAME("Call16_Ret_End") ":\n" ); - fprintf( outfile, "\t.size " __ASM_NAME("__wine_spec_thunk_data_16") ",. - " __ASM_NAME("__wine_spec_thunk_data_16") "\n" ); -} - -/******************************************************************* - * BuildRelays32 - * - * Build all the 32-bit relay callbacks - */ -void BuildRelays32( FILE *outfile ) -{ - /* File header */ - - fprintf( outfile, "/* File generated automatically. Do not edit! */\n\n" ); - fprintf( outfile, "\t.text\n" ); - fprintf( outfile, __ASM_NAME("__wine_spec_thunk_text_32") ":\n\n" ); - - /* 32-bit register entry point */ - BuildCallFrom32Regs( outfile ); - - fprintf( outfile, "\t.size " __ASM_NAME("__wine_spec_thunk_text_32") ",. - " __ASM_NAME("__wine_spec_thunk_text_32") "\n" ); -} - -#else /* __i386__ */ - -void BuildRelays16( FILE *outfile ) -{ - fprintf( outfile, "/* File not used with this architecture. Do not edit! */\n\n" ); -} - -void BuildRelays32( FILE *outfile ) -{ - fprintf( outfile, "/* File not used with this architecture. Do not edit! */\n\n" ); -} - -#endif /* __i386__ */ diff --git a/reactos/tools/winebuild/res16.c b/reactos/tools/winebuild/res16.c deleted file mode 100644 index 285e890859f..00000000000 --- a/reactos/tools/winebuild/res16.c +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Builtin dlls resource 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#include -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_SYS_MMAN_H -#include -#endif - -#include "winglue.h" -#include "build.h" - -#define ALIGNMENT 2 /* alignment for resource data */ -#define ALIGN_MASK ((1 << ALIGNMENT) - 1) - -/* Unicode string or integer id */ -struct string_id -{ - char *str; /* ptr to string */ - WORD id; /* integer id if str is NULL */ -}; - -/* descriptor for a resource */ -struct resource -{ - struct string_id type; - struct string_id name; - const void *data; - unsigned int data_size; - WORD memopt; -}; - -/* type level of the resource tree */ -struct res_type -{ - const struct string_id *type; /* type name */ - const struct resource *res; /* first resource of this type */ - unsigned int nb_names; /* total number of names */ -}; - -/* top level of the resource tree */ -struct res_tree -{ - struct res_type *types; /* types array */ - unsigned int nb_types; /* total number of types */ -}; - -static const unsigned char *file_pos; /* current position in resource file */ -static const unsigned char *file_end; /* end of resource file */ -static const char *file_name; /* current resource file name */ - - -inline static struct resource *add_resource( DLLSPEC *spec ) -{ - spec->resources = xrealloc( spec->resources, (spec->nb_resources + 1) * sizeof(*spec->resources) ); - return &spec->resources[spec->nb_resources++]; -} - -static struct res_type *add_type( struct res_tree *tree, const struct resource *res ) -{ - struct res_type *type; - tree->types = xrealloc( tree->types, (tree->nb_types + 1) * sizeof(*tree->types) ); - type = &tree->types[tree->nb_types++]; - type->type = &res->type; - type->res = res; - type->nb_names = 0; - return type; -} - -/* get the next byte from the current resource file */ -static unsigned char get_byte(void) -{ - unsigned char ret = *file_pos++; - if (file_pos > file_end) fatal_error( "%s is a truncated/corrupted file\n", file_name ); - return ret; -} - -/* get the next word from the current resource file */ -static WORD get_word(void) -{ - /* might not be aligned */ -#ifdef WORDS_BIGENDIAN - unsigned char high = get_byte(); - unsigned char low = get_byte(); -#else - unsigned char low = get_byte(); - unsigned char high = get_byte(); -#endif - return low | (high << 8); -} - -/* get the next dword from the current resource file */ -static DWORD get_dword(void) -{ -#ifdef WORDS_BIGENDIAN - WORD high = get_word(); - WORD low = get_word(); -#else - WORD low = get_word(); - WORD high = get_word(); -#endif - return low | (high << 16); -} - -/* get a string from the current resource file */ -static void get_string( struct string_id *str ) -{ - if (*file_pos == 0xff) - { - get_byte(); /* skip the 0xff */ - str->str = NULL; - str->id = get_word(); - } - else - { - char *p = xmalloc( (strlen(file_pos) + 1) ); - str->str = p; - str->id = 0; - while ((*p++ = get_byte())); - } -} - -/* load the next resource from the current file */ -static void load_next_resource( DLLSPEC *spec ) -{ - struct resource *res = add_resource( spec ); - - get_string( &res->type ); - get_string( &res->name ); - res->memopt = get_word(); - res->data_size = get_dword(); - res->data = file_pos; - file_pos += res->data_size; - if (file_pos > file_end) fatal_error( "%s is a truncated/corrupted file\n", file_name ); -} - -/* load a Win16 .res file */ -void load_res16_file( const char *name, DLLSPEC *spec ) -{ - int fd; - void *base; - struct stat st; - - if ((fd = open( name, O_RDONLY )) == -1) fatal_perror( "Cannot open %s", name ); - if ((fstat( fd, &st ) == -1)) fatal_perror( "Cannot stat %s", name ); - if (!st.st_size) fatal_error( "%s is an empty file\n", name ); -#ifdef HAVE_MMAP - if ((base = mmap( NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0 )) == (void*)-1) -#endif /* HAVE_MMAP */ - { - base = xmalloc( st.st_size ); - if (read( fd, base, st.st_size ) != st.st_size) - fatal_error( "Cannot read %s\n", name ); - } - - file_name = name; - file_pos = base; - file_end = file_pos + st.st_size; - while (file_pos < file_end) load_next_resource( spec ); -} - -/* compare two strings/ids */ -static int cmp_string( const struct string_id *str1, const struct string_id *str2 ) -{ - if (!str1->str) - { - if (!str2->str) return str1->id - str2->id; - return 1; /* an id compares larger than a string */ - } - if (!str2->str) return -1; - return strcasecmp( str1->str, str2->str ); -} - -/* compare two resources for sorting the resource directory */ -/* resources are stored first by type, then by name */ -static int cmp_res( const void *ptr1, const void *ptr2 ) -{ - const struct resource *res1 = ptr1; - const struct resource *res2 = ptr2; - int ret; - - if ((ret = cmp_string( &res1->type, &res2->type ))) return ret; - return cmp_string( &res1->name, &res2->name ); -} - -/* build the 2-level (type,name) resource tree */ -static struct res_tree *build_resource_tree( DLLSPEC *spec ) -{ - int i; - struct res_tree *tree; - struct res_type *type = NULL; - - qsort( spec->resources, spec->nb_resources, sizeof(*spec->resources), cmp_res ); - - tree = xmalloc( sizeof(*tree) ); - tree->types = NULL; - tree->nb_types = 0; - - for (i = 0; i < spec->nb_resources; i++) - { - if (!i || cmp_string( &spec->resources[i].type, &spec->resources[i-1].type )) /* new type */ - type = add_type( tree, &spec->resources[i] ); - type->nb_names++; - } - return tree; -} - -/* free the resource tree */ -static void free_resource_tree( struct res_tree *tree ) -{ - free( tree->types ); - free( tree ); -} - -inline static void put_byte( unsigned char **buffer, unsigned char val ) -{ - *(*buffer)++ = val; -} - -inline static void put_word( unsigned char **buffer, WORD val ) -{ -#ifdef WORDS_BIGENDIAN - put_byte( buffer, HIBYTE(val) ); - put_byte( buffer, LOBYTE(val) ); -#else - put_byte( buffer, LOBYTE(val) ); - put_byte( buffer, HIBYTE(val) ); -#endif -} - -/* output a string preceded by its length */ -static void output_string( unsigned char **buffer, const char *str ) -{ - int len = strlen(str); - put_byte( buffer, len ); - while (len--) put_byte( buffer, *str++ ); -} - -/* output the resource data */ -int output_res16_data( FILE *outfile, DLLSPEC *spec ) -{ - const struct resource *res; - unsigned char *buffer, *p; - int i, total; - - if (!spec->nb_resources) return 0; - - for (i = total = 0, res = spec->resources; i < spec->nb_resources; i++, res++) - total += (res->data_size + ALIGN_MASK) & ~ALIGN_MASK; - - buffer = p = xmalloc( total ); - for (i = 0, res = spec->resources; i < spec->nb_resources; i++, res++) - { - memcpy( p, res->data, res->data_size ); - p += res->data_size; - while ((int)p & ALIGN_MASK) *p++ = 0; - } - dump_bytes( outfile, buffer, total, "resource_data", 1 ); - free( buffer ); - return total; -} - -/* output the resource definitions */ -int output_res16_directory( unsigned char *buffer, DLLSPEC *spec ) -{ - int i, offset, res_offset = 0; - unsigned int j; - struct res_tree *tree; - const struct res_type *type; - const struct resource *res; - unsigned char *start = buffer; - - tree = build_resource_tree( spec ); - - offset = 4; /* alignment + terminator */ - offset += tree->nb_types * 8; /* typeinfo structures */ - offset += spec->nb_resources * 12; /* nameinfo structures */ - - put_word( &buffer, ALIGNMENT ); - - /* type and name structures */ - - for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) - { - if (type->type->str) - { - put_word( &buffer, offset ); - offset += strlen(type->type->str) + 1; - } - else - put_word( &buffer, type->type->id | 0x8000 ); - - put_word( &buffer, type->nb_names ); - put_word( &buffer, 0 ); - put_word( &buffer, 0 ); - - for (j = 0, res = type->res; j < type->nb_names; j++, res++) - { - put_word( &buffer, res_offset >> ALIGNMENT ); - put_word( &buffer, (res->data_size + ALIGN_MASK) >> ALIGNMENT ); - put_word( &buffer, res->memopt ); - if (res->name.str) - { - put_word( &buffer, offset ); - offset += strlen(res->name.str) + 1; - } - else - put_word( &buffer, res->name.id | 0x8000 ); - put_word( &buffer, 0 ); - put_word( &buffer, 0 ); - res_offset += (res->data_size + ALIGN_MASK) & ~ALIGN_MASK; - } - } - put_word( &buffer, 0 ); /* terminator */ - - /* name strings */ - - for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) - { - if (type->type->str) output_string( &buffer, type->type->str ); - for (j = 0, res = type->res; j < type->nb_names; j++, res++) - { - if (res->name.str) output_string( &buffer, res->name.str ); - } - } - put_byte( &buffer, 0 ); /* names terminator */ - if ((buffer - start) & 1) put_byte( &buffer, 0 ); /* align on word boundary */ - - free_resource_tree( tree ); - return buffer - start; -} diff --git a/reactos/tools/winebuild/res32.c b/reactos/tools/winebuild/res32.c deleted file mode 100644 index 1e4d28bde84..00000000000 --- a/reactos/tools/winebuild/res32.c +++ /dev/null @@ -1,489 +0,0 @@ -/* - * Builtin dlls resource 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#include -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_SYS_MMAN_H -#include -#endif - -#include "winglue.h" -#include "build.h" - -/* Unicode string or integer id */ -struct string_id -{ - WCHAR *str; /* ptr to Unicode string */ - WORD id; /* integer id if str is NULL */ -}; - -/* descriptor for a resource */ -struct resource -{ - struct string_id type; - struct string_id name; - const void *data; - unsigned int data_size; - WORD lang; -}; - -/* name level of the resource tree */ -struct res_name -{ - const struct string_id *name; /* name */ - const struct resource *res; /* resource */ - int nb_languages; /* number of languages */ - unsigned int name_offset; /* offset of name in resource dir */ -}; - -/* type level of the resource tree */ -struct res_type -{ - const struct string_id *type; /* type name */ - struct res_name *names; /* names array */ - unsigned int nb_names; /* total number of names */ - unsigned int nb_id_names; /* number of names that have a numeric id */ - unsigned int name_offset; /* offset of type name in resource dir */ -}; - -/* top level of the resource tree */ -struct res_tree -{ - struct res_type *types; /* types array */ - unsigned int nb_types; /* total number of types */ -}; - -static const unsigned char *file_pos; /* current position in resource file */ -static const unsigned char *file_end; /* end of resource file */ -static const char *file_name; /* current resource file name */ - -/* size of a resource directory with n entries */ -#define RESDIR_SIZE(n) ((4 + 2 * (n)) * sizeof(int)) - - -inline static struct resource *add_resource( DLLSPEC *spec ) -{ - spec->resources = xrealloc( spec->resources, (spec->nb_resources + 1) * sizeof(spec->resources[0]) ); - return &spec->resources[spec->nb_resources++]; -} - -static inline unsigned int strlenW( const WCHAR *str ) -{ - const WCHAR *s = str; - while (*s) s++; - return s - str; -} - -static inline int strcmpW( const WCHAR *str1, const WCHAR *str2 ) -{ - while (*str1 && (*str1 == *str2)) { str1++; str2++; } - return *str1 - *str2; -} - -static struct res_name *add_name( struct res_type *type, const struct resource *res ) -{ - struct res_name *name; - type->names = xrealloc( type->names, (type->nb_names + 1) * sizeof(*type->names) ); - name = &type->names[type->nb_names++]; - name->name = &res->name; - name->res = res; - name->nb_languages = 1; - if (!name->name->str) type->nb_id_names++; - return name; -} - -static struct res_type *add_type( struct res_tree *tree, const struct resource *res ) -{ - struct res_type *type; - tree->types = xrealloc( tree->types, (tree->nb_types + 1) * sizeof(*tree->types) ); - type = &tree->types[tree->nb_types++]; - type->type = &res->type; - type->names = NULL; - type->nb_names = 0; - type->nb_id_names = 0; - return type; -} - -/* get the next word from the current resource file */ -static WORD get_word(void) -{ - WORD ret = *(const WORD *)file_pos; - file_pos += sizeof(WORD); - if (file_pos > file_end) fatal_error( "%s is a truncated file\n", file_name ); - return ret; -} - -/* get the next dword from the current resource file */ -static DWORD get_dword(void) -{ - DWORD ret = *(const DWORD *)file_pos; - file_pos += sizeof(DWORD); - if (file_pos > file_end) fatal_error( "%s is a truncated file\n", file_name ); - return ret; -} - -/* get a string from the current resource file */ -static void get_string( struct string_id *str ) -{ - if (*(const WCHAR *)file_pos == 0xffff) - { - get_word(); /* skip the 0xffff */ - str->str = NULL; - str->id = get_word(); - } - else - { - WCHAR *p = xmalloc( (strlenW((const WCHAR*)file_pos) + 1) * sizeof(WCHAR) ); - str->str = p; - str->id = 0; - while ((*p++ = get_word())); - } -} - -/* check the file header */ -/* all values must be zero except header size */ -static int check_header(void) -{ - if (get_dword()) return 0; /* data size */ - if (get_dword() != 32) return 0; /* header size */ - if (get_word() != 0xffff || get_word()) return 0; /* type, must be id 0 */ - if (get_word() != 0xffff || get_word()) return 0; /* name, must be id 0 */ - if (get_dword()) return 0; /* data version */ - if (get_word()) return 0; /* mem options */ - if (get_word()) return 0; /* language */ - if (get_dword()) return 0; /* version */ - if (get_dword()) return 0; /* characteristics */ - return 1; -} - -/* load the next resource from the current file */ -static void load_next_resource( DLLSPEC *spec ) -{ - DWORD hdr_size; - struct resource *res = add_resource( spec ); - - res->data_size = (get_dword() + 3) & ~3; - hdr_size = get_dword(); - if (hdr_size & 3) fatal_error( "%s header size not aligned\n", file_name ); - - res->data = file_pos - 2*sizeof(DWORD) + hdr_size; - get_string( &res->type ); - get_string( &res->name ); - if ((int)file_pos & 2) get_word(); /* align to dword boundary */ - get_dword(); /* skip data version */ - get_word(); /* skip mem options */ - res->lang = get_word(); - get_dword(); /* skip version */ - get_dword(); /* skip characteristics */ - - file_pos = (const char *)res->data + res->data_size; - if (file_pos > file_end) fatal_error( "%s is a truncated file\n", file_name ); -} - -/* load a Win32 .res file */ -int load_res32_file( const char *name, DLLSPEC *spec ) -{ - int fd, ret; - void *base; - struct stat st; - - if ((fd = open( name, O_RDONLY )) == -1) fatal_perror( "Cannot open %s", name ); - if ((fstat( fd, &st ) == -1)) fatal_perror( "Cannot stat %s", name ); - if (!st.st_size) fatal_error( "%s is an empty file\n", name ); -#ifdef HAVE_MMAP - if ((base = mmap( NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0 )) == (void*)-1) -#endif /* HAVE_MMAP */ - { - base = xmalloc( st.st_size ); - if (read( fd, base, st.st_size ) != st.st_size) - fatal_error( "Cannot read %s\n", name ); - } - - file_name = name; - file_pos = base; - file_end = file_pos + st.st_size; - if ((ret = check_header())) - { - while (file_pos < file_end) load_next_resource( spec ); - } - close( fd ); - return ret; -} - -/* compare two unicode strings/ids */ -static int cmp_string( const struct string_id *str1, const struct string_id *str2 ) -{ - if (!str1->str) - { - if (!str2->str) return str1->id - str2->id; - return 1; /* an id compares larger than a string */ - } - if (!str2->str) return -1; - return strcmpW( str1->str, str2->str ); -} - -/* compare two resources for sorting the resource directory */ -/* resources are stored first by type, then by name, then by language */ -static int cmp_res( const void *ptr1, const void *ptr2 ) -{ - const struct resource *res1 = ptr1; - const struct resource *res2 = ptr2; - int ret; - - if ((ret = cmp_string( &res1->type, &res2->type ))) return ret; - if ((ret = cmp_string( &res1->name, &res2->name ))) return ret; - return res1->lang - res2->lang; -} - -/* build the 3-level (type,name,language) resource tree */ -static struct res_tree *build_resource_tree( DLLSPEC *spec ) -{ - int i; - struct res_tree *tree; - struct res_type *type = NULL; - struct res_name *name = NULL; - - qsort( spec->resources, spec->nb_resources, sizeof(*spec->resources), cmp_res ); - - tree = xmalloc( sizeof(*tree) ); - tree->types = NULL; - tree->nb_types = 0; - - for (i = 0; i < spec->nb_resources; i++) - { - if (!i || cmp_string( &spec->resources[i].type, &spec->resources[i-1].type )) /* new type */ - { - type = add_type( tree, &spec->resources[i] ); - name = add_name( type, &spec->resources[i] ); - } - else if (cmp_string( &spec->resources[i].name, &spec->resources[i-1].name )) /* new name */ - { - name = add_name( type, &spec->resources[i] ); - } - else name->nb_languages++; - } - return tree; -} - -/* free the resource tree */ -static void free_resource_tree( struct res_tree *tree ) -{ - int i; - - for (i = 0; i < tree->nb_types; i++) free( tree->types[i].names ); - free( tree->types ); - free( tree ); -} - -/* output a Unicode string */ -static void output_string( FILE *outfile, const WCHAR *name ) -{ - int i, len = strlenW(name); - fprintf( outfile, "0x%04x", len ); - for (i = 0; i < len; i++) fprintf( outfile, ", 0x%04x", name[i] ); - fprintf( outfile, " /* " ); - for (i = 0; i < len; i++) fprintf( outfile, "%c", isprint((char)name[i]) ? (char)name[i] : '?' ); - fprintf( outfile, " */" ); -} - -/* output the resource definitions */ -void output_resources( FILE *outfile, DLLSPEC *spec ) -{ - int i, j, k, nb_id_types; - unsigned int n, offset, data_offset; - struct res_tree *tree; - struct res_type *type; - struct res_name *name; - const struct resource *res; - - if (!spec->nb_resources) return; - - tree = build_resource_tree( spec ); - - /* resource data */ - - for (i = 0, res = spec->resources; i < spec->nb_resources; i++, res++) - { - const unsigned int *p = res->data; - int size = res->data_size / 4; - /* dump data as ints to ensure correct alignment */ - fprintf( outfile, "static const unsigned int res_%d[%d] = {\n ", i, size ); - for (j = 0; j < size - 1; j++, p++) - { - fprintf( outfile, "0x%08x,", *p ); - if ((j % 8) == 7) fprintf( outfile, "\n " ); - } - fprintf( outfile, "0x%08x\n};\n\n", *p ); - } - - /* directory structures */ - - fprintf( outfile, "struct res_dir {\n" ); - fprintf( outfile, " unsigned int Characteristics;\n" ); - fprintf( outfile, " unsigned int TimeDateStamp;\n" ); - fprintf( outfile, " unsigned short MajorVersion, MinorVersion;\n" ); - fprintf( outfile, " unsigned short NumerOfNamedEntries, NumberOfIdEntries;\n};\n\n" ); - fprintf( outfile, "struct res_dir_entry {\n" ); - fprintf( outfile, " unsigned int Name;\n" ); - fprintf( outfile, " unsigned int OffsetToData;\n};\n\n" ); - fprintf( outfile, "struct res_data_entry {\n" ); - fprintf( outfile, " const unsigned int *OffsetToData;\n" ); - fprintf( outfile, " unsigned int Size;\n" ); - fprintf( outfile, " unsigned int CodePage;\n" ); - fprintf( outfile, " unsigned int ResourceHandle;\n};\n\n" ); - - /* resource directory definition */ - - fprintf( outfile, "static struct res_struct{\n" ); - fprintf( outfile, " struct res_dir type_dir;\n" ); - fprintf( outfile, " struct res_dir_entry type_entries[%d];\n", tree->nb_types ); - offset = RESDIR_SIZE( tree->nb_types ); - - for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) - { - offset += RESDIR_SIZE( type->nb_names ); - fprintf( outfile, " struct res_dir name_%d_dir;\n", i ); - fprintf( outfile, " struct res_dir_entry name_%d_entries[%d];\n", i, type->nb_names ); - for (n = 0, name = type->names; n < type->nb_names; n++, name++) - { - offset += RESDIR_SIZE( name->nb_languages ); - fprintf( outfile, " struct res_dir lang_%d_%d_dir;\n", i, n ); - fprintf( outfile, " struct res_dir_entry lang_%d_%d_entries[%d];\n", - i, n, name->nb_languages ); - } - } - - fprintf( outfile, " struct res_data_entry data_entries[%d];\n", spec->nb_resources ); - offset += spec->nb_resources * 4 * sizeof(int); - - for (i = nb_id_types = 0, type = tree->types; i < tree->nb_types; i++, type++) - { - if (type->type->str) - { - type->name_offset = offset | 0x80000000; - offset += (strlenW(type->type->str)+1) * sizeof(unsigned short); - fprintf( outfile, " unsigned short type_%d_name[%d];\n", - i, strlenW(type->type->str)+1 ); - } - else - { - type->name_offset = type->type->id; - nb_id_types++; - } - - for (n = 0, name = type->names; n < type->nb_names; n++, name++) - { - if (name->name->str) - { - name->name_offset = offset | 0x80000000; - offset += (strlenW(name->name->str)+1) * sizeof(unsigned short); - fprintf( outfile, " unsigned short name_%d_%d_name[%d];\n", - i, n, strlenW(name->name->str)+1 ); - } - else name->name_offset = name->name->id; - } - } - - /* resource directory contents */ - - fprintf( outfile, "} resources = {\n" ); - fprintf( outfile, " { 0, 0, 0, 0, %d, %d },\n", tree->nb_types - nb_id_types, nb_id_types ); - - /* dump the type directory */ - offset = RESDIR_SIZE( tree->nb_types ); - fprintf( outfile, " {\n" ); - for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) - { - fprintf( outfile, " { 0x%08x, 0x%08x },\n", type->name_offset, offset | 0x80000000 ); - offset += RESDIR_SIZE( type->nb_names ); - for (n = 0, name = type->names; n < type->nb_names; n++, name++) - offset += RESDIR_SIZE( name->nb_languages ); - } - fprintf( outfile, " },\n" ); - - data_offset = offset; - offset = RESDIR_SIZE( tree->nb_types ); - - /* dump the names and languages directories */ - for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) - { - fprintf( outfile, " { 0, 0, 0, 0, %d, %d }, /* name_%d_dir */\n {\n", - type->nb_names - type->nb_id_names, type->nb_id_names, i ); - offset += RESDIR_SIZE( type->nb_names ); - for (n = 0, name = type->names; n < type->nb_names; n++, name++) - { - fprintf( outfile, " { 0x%08x, 0x%08x },\n", name->name_offset, offset | 0x80000000 ); - offset += RESDIR_SIZE( name->nb_languages ); - } - fprintf( outfile, " },\n" ); - - for (n = 0, name = type->names; n < type->nb_names; n++, name++) - { - fprintf( outfile, " { 0, 0, 0, 0, 0, %d }, /* lang_%d_%d_dir */\n {\n", - name->nb_languages, i, n ); - for (k = 0, res = name->res; k < name->nb_languages; k++, res++) - { - fprintf( outfile, " { 0x%04x, 0x%08x },\n", - res->lang, data_offset + (res - spec->resources) * 4 * sizeof(int) ); - } - fprintf( outfile, " },\n" ); - } - } - - /* dump the resource data entries */ - fprintf( outfile, " {\n" ); - for (i = 0, res = spec->resources; i < spec->nb_resources; i++, res++) - { - fprintf( outfile, " { res_%d, sizeof(res_%d), 0, 0 }, /* %08x */\n", i, i, - data_offset + i * 4 * sizeof(int) ); - } - - /* dump the name strings */ - for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) - { - if (type->type->str) - { - fprintf( outfile, " },\n { " ); - output_string( outfile, type->type->str ); - } - for (n = 0, name = type->names; n < type->nb_names; n++, name++) - { - if (name->name->str) - { - fprintf( outfile, " },\n { " ); - output_string( outfile, name->name->str ); - } - } - } - fprintf( outfile, " }\n};\n\n" ); - free_resource_tree( tree ); -} diff --git a/reactos/tools/winebuild/spec16.c b/reactos/tools/winebuild/spec16.c deleted file mode 100644 index 271a4f9818e..00000000000 --- a/reactos/tools/winebuild/spec16.c +++ /dev/null @@ -1,830 +0,0 @@ -/* - * 16-bit spec files - * - * Copyright 1993 Robert J. Amstadt - * Copyright 1995 Martin von Loewis - * Copyright 1995, 1996, 1997 Alexandre Julliard - * Copyright 1997 Eric Youngdale - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include - -#include "wine/exception.h" -#include "stackframe.h" -#include "builtin16.h" -#include "module.h" - -#include "build.h" - - -/******************************************************************* - * get_cs - */ -#ifdef __i386__ -static inline unsigned short get_cs(void) -{ - unsigned short res; -#ifdef __GNUC__ - __asm__("movw %%cs,%w0" : "=r"(res)); -#elif defined(_MSC_VER) - __asm { mov res, cs } -#else - res = 0; -#endif - return res; -} -#endif /* __i386__ */ - - -/******************************************************************* - * output_file_header - * - * Output a file header with the common declarations we need. - */ -static void output_file_header( FILE *outfile ) -{ - output_standard_file_header( outfile ); - fprintf( outfile, "extern struct\n{\n" ); - fprintf( outfile, " void *base[8192];\n" ); - fprintf( outfile, " unsigned long limit[8192];\n" ); - fprintf( outfile, " unsigned char flags[8192];\n" ); - fprintf( outfile, "} wine_ldt_copy;\n\n" ); -#ifdef __i386__ - fprintf( outfile, "#define __stdcall __attribute__((__stdcall__))\n\n" ); -#else - fprintf( outfile, "#define __stdcall\n\n" ); -#endif -} - - -/******************************************************************* - * StoreVariableCode - * - * Store a list of ints into a byte array. - */ -static int StoreVariableCode( unsigned char *buffer, int size, ORDDEF *odp ) -{ - int i; - - switch(size) - { - case 1: - for (i = 0; i < odp->u.var.n_values; i++) - buffer[i] = odp->u.var.values[i]; - break; - case 2: - for (i = 0; i < odp->u.var.n_values; i++) - ((unsigned short *)buffer)[i] = odp->u.var.values[i]; - break; - case 4: - for (i = 0; i < odp->u.var.n_values; i++) - ((unsigned int *)buffer)[i] = odp->u.var.values[i]; - break; - } - return odp->u.var.n_values * size; -} - - -/******************************************************************* - * BuildModule16 - * - * Build the in-memory representation of a 16-bit NE module, and dump it - * as a byte stream into the assembly code. - */ -static int BuildModule16( FILE *outfile, int max_code_offset, - int max_data_offset, DLLSPEC *spec ) -{ - int i; - char *buffer; - NE_MODULE *pModule; - SEGTABLEENTRY *pSegment; - OFSTRUCT *pFileInfo; - BYTE *pstr; - ET_BUNDLE *bundle = 0; - ET_ENTRY entry; - - /* Module layout: - * NE_MODULE Module - * OFSTRUCT File information - * SEGTABLEENTRY Segment 1 (code) - * SEGTABLEENTRY Segment 2 (data) - * WORD[2] Resource table (empty) - * BYTE[2] Imported names (empty) - * BYTE[n] Resident names table - * BYTE[n] Entry table - */ - - buffer = xmalloc( 0x10000 ); - memset( buffer, 0, 0x10000 ); - - pModule = (NE_MODULE *)buffer; - pModule->magic = IMAGE_OS2_SIGNATURE; - pModule->count = 1; - pModule->next = 0; - pModule->flags = NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE; - pModule->dgroup = 2; - pModule->heap_size = spec->heap_size; - pModule->stack_size = 0; - pModule->ip = 0; - pModule->cs = 0; - pModule->sp = 0; - pModule->ss = 0; - pModule->seg_count = 2; - pModule->modref_count = 0; - pModule->nrname_size = 0; - pModule->modref_table = 0; - pModule->nrname_fpos = 0; - pModule->moveable_entries = 0; - pModule->alignment = 0; - pModule->truetype = 0; - pModule->os_flags = NE_OSFLAGS_WINDOWS; - pModule->misc_flags = 0; - pModule->dlls_to_init = 0; - pModule->nrname_handle = 0; - pModule->min_swap_area = 0; - pModule->expected_version = 0; - pModule->module32 = 0; - pModule->self = 0; - pModule->self_loading_sel = 0; - - /* File information */ - - pFileInfo = (OFSTRUCT *)(pModule + 1); - pModule->fileinfo = (int)pFileInfo - (int)pModule; - memset( pFileInfo, 0, sizeof(*pFileInfo) - sizeof(pFileInfo->szPathName) ); - pFileInfo->cBytes = sizeof(*pFileInfo) - sizeof(pFileInfo->szPathName) - + strlen(spec->file_name); - strcpy( pFileInfo->szPathName, spec->file_name ); - pstr = (char *)pFileInfo + pFileInfo->cBytes + 1; - - /* Segment table */ - - pstr = (char *)(((long)pstr + 3) & ~3); - pSegment = (SEGTABLEENTRY *)pstr; - pModule->seg_table = (int)pSegment - (int)pModule; - pSegment->filepos = 0; - pSegment->size = max_code_offset; - pSegment->flags = 0; - pSegment->minsize = max_code_offset; - pSegment->hSeg = 0; - pSegment++; - - pModule->dgroup_entry = (int)pSegment - (int)pModule; - pSegment->filepos = 0; - pSegment->size = max_data_offset; - pSegment->flags = NE_SEGFLAGS_DATA; - pSegment->minsize = max_data_offset; - pSegment->hSeg = 0; - pSegment++; - - /* Resource table */ - - pstr = (char *)pSegment; - pstr = (char *)(((long)pstr + 3) & ~3); - pModule->res_table = (int)pstr - (int)pModule; - pstr += output_res16_directory( pstr, spec ); - - /* Imported names table */ - - pstr = (char *)(((long)pstr + 3) & ~3); - pModule->import_table = (int)pstr - (int)pModule; - *pstr++ = 0; - *pstr++ = 0; - - /* Resident names table */ - - pstr = (char *)(((long)pstr + 3) & ~3); - pModule->name_table = (int)pstr - (int)pModule; - /* First entry is module name */ - *pstr = strlen( spec->dll_name ); - strcpy( pstr + 1, spec->dll_name ); - strupper( pstr + 1 ); - pstr += *pstr + 1; - *pstr++ = 0; - *pstr++ = 0; - /* Store all ordinals */ - for (i = 1; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - WORD ord = i; - if (!odp || !odp->name[0]) continue; - *pstr = strlen( odp->name ); - strcpy( pstr + 1, odp->name ); - strupper( pstr + 1 ); - pstr += *pstr + 1; - memcpy( pstr, &ord, sizeof(WORD) ); - pstr += sizeof(WORD); - } - *pstr++ = 0; - - /* Entry table */ - - pstr = (char *)(((long)pstr + 3) & ~3); - pModule->entry_table = (int)pstr - (int)pModule; - for (i = 1; i <= spec->limit; i++) - { - int selector = 0; - ORDDEF *odp = spec->ordinals[i]; - if (!odp) continue; - - switch (odp->type) - { - case TYPE_CDECL: - case TYPE_PASCAL: - case TYPE_VARARGS: - case TYPE_STUB: - selector = 1; /* Code selector */ - break; - - case TYPE_VARIABLE: - selector = 2; /* Data selector */ - break; - - case TYPE_ABS: - selector = 0xfe; /* Constant selector */ - break; - - default: - selector = 0; /* Invalid selector */ - break; - } - - if ( !selector ) - continue; - - if ( bundle && bundle->last+1 == i ) - bundle->last++; - else - { - pstr = (char *)(((long)pstr + 1) & ~1); - if ( bundle ) - bundle->next = (char *)pstr - (char *)pModule; - - bundle = (ET_BUNDLE *)pstr; - bundle->first = i-1; - bundle->last = i; - bundle->next = 0; - pstr += sizeof(ET_BUNDLE); - } - - /* FIXME: is this really correct ?? */ - entry.type = 0xff; /* movable */ - entry.flags = 3; /* exported & public data */ - entry.segnum = selector; - entry.offs = odp->offset; - memcpy( pstr, &entry, sizeof(ET_ENTRY) ); - pstr += sizeof(ET_ENTRY); - } - *pstr++ = 0; - - /* Dump the module content */ - - pstr = (char *)(((long)pstr + 3) & ~3); - dump_bytes( outfile, (char *)pModule, (int)pstr - (int)pModule, "Module", 0 ); - return (int)pstr - (int)pModule; -} - - -/******************************************************************* - * BuildCallFrom16Func - * - * Build a 16-bit-to-Wine callback glue function. - * - * The generated routines are intended to be used as argument conversion - * routines to be called by the CallFrom16... core. Thus, the prototypes of - * the generated routines are (see also CallFrom16): - * - * extern WORD WINAPI PREFIX_CallFrom16_C_word_xxx( FARPROC func, LPBYTE args ); - * extern LONG WINAPI PREFIX_CallFrom16_C_long_xxx( FARPROC func, LPBYTE args ); - * extern void WINAPI PREFIX_CallFrom16_C_regs_xxx( FARPROC func, LPBYTE args, - * CONTEXT86 *context ); - * - * where 'C' is the calling convention ('p' for pascal or 'c' for cdecl), - * and each 'x' is an argument ('w'=word, 's'=signed word, 'l'=long, - * 'p'=linear pointer, 't'=linear pointer to null-terminated string, - * 'T'=segmented pointer to null-terminated string). - * - * The generated routines fetch the arguments from the 16-bit stack (pointed - * to by 'args'); the offsets of the single argument values are computed - * according to the calling convention and the argument types. Then, the - * 32-bit entry point is called with these arguments. - * - * For register functions, the arguments (if present) are converted just - * the same as for normal functions, but in addition the CONTEXT86 pointer - * filled with the current register values is passed to the 32-bit routine. - */ -static void BuildCallFrom16Func( FILE *outfile, const char *profile, const char *prefix ) -{ - int i, pos, argsize = 0; - int short_ret = 0; - int reg_func = 0; - int usecdecl = 0; - int varargs = 0; - const char *args = profile + 7; - const char *ret_type; - - /* Parse function type */ - - if (!strncmp( "c_", profile, 2 )) usecdecl = 1; - else if (!strncmp( "v_", profile, 2 )) varargs = usecdecl = 1; - else if (strncmp( "p_", profile, 2 )) - { - fprintf( stderr, "Invalid function name '%s', ignored\n", profile ); - return; - } - - if (!strncmp( "word_", profile + 2, 5 )) short_ret = 1; - else if (!strncmp( "regs_", profile + 2, 5 )) reg_func = 1; - else if (strncmp( "long_", profile + 2, 5 )) - { - fprintf( stderr, "Invalid function name '%s', ignored\n", profile ); - return; - } - - for ( i = 0; args[i]; i++ ) - switch ( args[i] ) - { - case 'w': /* word */ - case 's': /* s_word */ - argsize += 2; - break; - case 'l': /* long or segmented pointer */ - case 'T': /* segmented pointer to null-terminated string */ - case 'p': /* linear pointer */ - case 't': /* linear pointer to null-terminated string */ - argsize += 4; - break; - } - - ret_type = reg_func? "void" : short_ret ? "unsigned short" : "unsigned int"; - - fprintf( outfile, "typedef %s (%s*proc_%s_t)( ", - ret_type, usecdecl ? "" : "__stdcall ", profile ); - args = profile + 7; - for ( i = 0; args[i]; i++ ) - { - if ( i ) fprintf( outfile, ", " ); - switch (args[i]) - { - case 'w': fprintf( outfile, "unsigned short" ); break; - case 's': fprintf( outfile, "short" ); break; - case 'l': case 'T': fprintf( outfile, "unsigned int" ); break; - case 'p': case 't': fprintf( outfile, "void *" ); break; - } - } - if (reg_func || varargs) - fprintf( outfile, "%svoid *", i? ", " : "" ); - else if ( !i ) - fprintf( outfile, "void" ); - fprintf( outfile, " );\n" ); - - fprintf( outfile, "static %s __stdcall __wine_%s_CallFrom16_%s( proc_%s_t proc, unsigned char *args%s )\n", - ret_type, make_c_identifier(prefix), profile, profile, - reg_func? ", void *context" : "" ); - - fprintf( outfile, "{\n %sproc(\n", reg_func ? "" : "return " ); - args = profile + 7; - pos = !usecdecl? argsize : 0; - for ( i = 0; args[i]; i++ ) - { - if ( i ) fprintf( outfile, ",\n" ); - fprintf( outfile, " " ); - switch (args[i]) - { - case 'w': /* word */ - if ( !usecdecl ) pos -= 2; - fprintf( outfile, "*(unsigned short *)(args+%d)", pos ); - if ( usecdecl ) pos += 2; - break; - - case 's': /* s_word */ - if ( !usecdecl ) pos -= 2; - fprintf( outfile, "*(short *)(args+%d)", pos ); - if ( usecdecl ) pos += 2; - break; - - case 'l': /* long or segmented pointer */ - case 'T': /* segmented pointer to null-terminated string */ - if ( !usecdecl ) pos -= 4; - fprintf( outfile, "*(unsigned int *)(args+%d)", pos ); - if ( usecdecl ) pos += 4; - break; - - case 'p': /* linear pointer */ - case 't': /* linear pointer to null-terminated string */ - if ( !usecdecl ) pos -= 4; - fprintf( outfile, "((char*)wine_ldt_copy.base[*(unsigned short*)(args+%d) >> 3] + *(unsigned short*)(args+%d))", - pos + 2, pos ); - if ( usecdecl ) pos += 4; - break; - - default: - fprintf( stderr, "Unknown arg type '%c'\n", args[i] ); - } - } - if ( reg_func ) - fprintf( outfile, "%s context", i? ",\n" : "" ); - else if (varargs) - fprintf( outfile, "%s args + %d", i? ",\n" : "", argsize ); - fprintf( outfile, " );\n}\n\n" ); -} - - -/******************************************************************* - * get_function_name - */ -static const char *get_function_name( const ORDDEF *odp ) -{ - static char buffer[80]; - - sprintf( buffer, "%s_%s_%s", - (odp->type == TYPE_PASCAL) ? "p" : - (odp->type == TYPE_VARARGS) ? "v" : "c", - (odp->flags & FLAG_REGISTER) ? "regs" : - (odp->flags & FLAG_RET16) ? "word" : "long", - odp->u.func.arg_types ); - return buffer; -} - - -/******************************************************************* - * Spec16TypeCompare - */ -static int Spec16TypeCompare( const void *e1, const void *e2 ) -{ - const ORDDEF *odp1 = *(const ORDDEF * const *)e1; - const ORDDEF *odp2 = *(const ORDDEF * const *)e2; - int retval; - int type1 = odp1->type; - int type2 = odp2->type; - - if (type1 == TYPE_STUB) type1 = TYPE_CDECL; - if (type2 == TYPE_STUB) type2 = TYPE_CDECL; - - if ((retval = type1 - type2) != 0) return retval; - - type1 = odp1->flags & (FLAG_RET16|FLAG_REGISTER); - type2 = odp2->flags & (FLAG_RET16|FLAG_REGISTER); - - if ((retval = type1 - type2) != 0) return retval; - - return strcmp( odp1->u.func.arg_types, odp2->u.func.arg_types ); -} - - -/******************************************************************* - * output_stub_funcs - * - * Output the functions for stub entry points -*/ -static void output_stub_funcs( FILE *outfile, const DLLSPEC *spec ) -{ - int i; - char *p; - - for (i = 0; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (!odp || odp->type != TYPE_STUB) continue; - fprintf( outfile, "#ifdef __GNUC__\n" ); - fprintf( outfile, "static void __wine_unimplemented( const char *func ) __attribute__((noreturn));\n" ); - fprintf( outfile, "#endif\n" ); - fprintf( outfile, "static void __wine_unimplemented( const char *func )\n{\n" ); - fprintf( outfile, " struct exc_record {\n" ); - fprintf( outfile, " unsigned int code, flags;\n" ); - fprintf( outfile, " void *rec, *addr;\n" ); - fprintf( outfile, " unsigned int params;\n" ); - fprintf( outfile, " const void *info[15];\n" ); - fprintf( outfile, " } rec;\n\n" ); - fprintf( outfile, " extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" ); - fprintf( outfile, " rec.code = 0x%08x;\n", EXCEPTION_WINE_STUB ); - fprintf( outfile, " rec.flags = %d;\n", EH_NONCONTINUABLE ); - fprintf( outfile, " rec.rec = 0;\n" ); - fprintf( outfile, " rec.params = 2;\n" ); - fprintf( outfile, " rec.info[0] = \"%s\";\n", spec->file_name ); - fprintf( outfile, " rec.info[1] = func;\n" ); - fprintf( outfile, "#ifdef __GNUC__\n" ); - fprintf( outfile, " rec.addr = __builtin_return_address(1);\n" ); - fprintf( outfile, "#else\n" ); - fprintf( outfile, " rec.addr = 0;\n" ); - fprintf( outfile, "#endif\n" ); - fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n}\n\n" ); - break; - } - for (i = 0; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (!odp || odp->type != TYPE_STUB) continue; - odp->link_name = xrealloc( odp->link_name, strlen(odp->name) + 13 ); - strcpy( odp->link_name, "__wine_stub_" ); - strcat( odp->link_name, odp->name ); - for (p = odp->link_name; *p; p++) if (!isalnum(*p)) *p = '_'; - fprintf( outfile, "static void %s(void) { __wine_unimplemented(\"%s\"); }\n", - odp->link_name, odp->name ); - } -} - - -/******************************************************************* - * BuildSpec16File - * - * Build a Win16 assembly file from a spec file. - */ -void BuildSpec16File( FILE *outfile, DLLSPEC *spec ) -{ - ORDDEF **type, **typelist; - int i, nFuncs, nTypes; - int code_offset, data_offset, module_size, res_size; - unsigned char *data; - char constructor[100], destructor[100]; -#ifdef __i386__ - unsigned short code_selector = get_cs(); -#endif - - /* File header */ - - output_file_header( outfile ); - fprintf( outfile, "extern unsigned short __wine_call_from_16_word();\n" ); - fprintf( outfile, "extern unsigned int __wine_call_from_16_long();\n" ); - fprintf( outfile, "extern void __wine_call_from_16_regs();\n" ); - fprintf( outfile, "extern void __wine_call_from_16_thunk();\n" ); - - data = (unsigned char *)xmalloc( 0x10000 ); - memset( data, 0, 16 ); - data_offset = 16; - - if (!spec->dll_name) /* set default name from file name */ - { - char *p; - spec->dll_name = xstrdup( spec->file_name ); - if ((p = strrchr( spec->dll_name, '.' ))) *p = 0; - } - - output_stub_funcs( outfile, spec ); - - /* Build sorted list of all argument types, without duplicates */ - - typelist = (ORDDEF **)calloc( spec->limit+1, sizeof(ORDDEF *) ); - - for (i = nFuncs = 0; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (!odp) continue; - switch (odp->type) - { - case TYPE_CDECL: - case TYPE_PASCAL: - case TYPE_VARARGS: - case TYPE_STUB: - typelist[nFuncs++] = odp; - - default: - break; - } - } - - qsort( typelist, nFuncs, sizeof(ORDDEF *), Spec16TypeCompare ); - - i = nTypes = 0; - while ( i < nFuncs ) - { - typelist[nTypes++] = typelist[i++]; - while ( i < nFuncs && Spec16TypeCompare( typelist + i, typelist + nTypes-1 ) == 0 ) - i++; - } - - /* Output CallFrom16 routines needed by this .spec file */ -#ifdef __i386__ - for ( i = 0; i < nTypes; i++ ) - { - char profile[101]; - - strcpy( profile, get_function_name( typelist[i] )); - BuildCallFrom16Func( outfile, profile, spec->file_name ); - } -#endif - - /* Output the DLL functions prototypes */ - - for (i = 0; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (!odp) continue; - switch(odp->type) - { - case TYPE_CDECL: - case TYPE_PASCAL: - case TYPE_VARARGS: - fprintf( outfile, "extern void %s();\n", odp->link_name ); - break; - default: - break; - } - } - - /* Output code segment */ - - fprintf( outfile, "\n#include \"pshpack1.h\"\n" ); - fprintf( outfile, "\nstatic struct code_segment\n{\n" ); - fprintf( outfile, " struct {\n" ); -#ifdef __i386__ - fprintf( outfile, " unsigned char pushl;\n" ); /* pushl $relay */ - fprintf( outfile, " void *relay;\n" ); - fprintf( outfile, " unsigned char lcall;\n" ); /* lcall __FLATCS__:glue */ - fprintf( outfile, " void *glue;\n" ); - fprintf( outfile, " unsigned short flatcs;\n" ); -#endif - fprintf( outfile, " unsigned short lret;\n" ); /* lret $args */ - fprintf( outfile, " unsigned short args;\n" ); - fprintf( outfile, " unsigned int arg_types[2];\n" ); - fprintf( outfile, " } call[%d];\n", nTypes ); - fprintf( outfile, " struct {\n" ); -#ifdef __i386__ - fprintf( outfile, " unsigned short pushw_bp;\n" ); /* pushw %bp */ - fprintf( outfile, " unsigned char pushl;\n" ); /* pushl $target */ -#endif - fprintf( outfile, " void (*target)();\n" ); - fprintf( outfile, " unsigned short call;\n" ); /* call CALLFROM16 */ - fprintf( outfile, " short callfrom16;\n" ); - fprintf( outfile, " } entry[%d];\n", nFuncs ); - fprintf( outfile, "} code_segment =\n{\n {\n" ); - - code_offset = 0; - - for ( i = 0; i < nTypes; i++ ) - { - char profile[101], *arg; - unsigned int arg_types[2]; - int j, argsize = 0; - - strcpy( profile, get_function_name( typelist[i] )); - if ( typelist[i]->type == TYPE_PASCAL ) - for ( arg = typelist[i]->u.func.arg_types; *arg; arg++ ) - switch ( *arg ) - { - case 'w': /* word */ - case 's': /* s_word */ - argsize += 2; - break; - case 'l': /* long or segmented pointer */ - case 'T': /* segmented pointer to null-terminated string */ - case 'p': /* linear pointer */ - case 't': /* linear pointer to null-terminated string */ - argsize += 4; - break; - } - - /* build the arg types bit fields */ - arg_types[0] = arg_types[1] = 0; - for (j = 0; typelist[i]->u.func.arg_types[j]; j++) - { - int type = 0; - switch(typelist[i]->u.func.arg_types[j]) - { - case 'w': type = ARG_WORD; break; - case 's': type = ARG_SWORD; break; - case 'l': type = ARG_LONG; break; - case 'p': type = ARG_PTR; break; - case 't': type = ARG_STR; break; - case 'T': type = ARG_SEGSTR; break; - } - arg_types[j / 10] |= type << (3 * (j % 10)); - } - if (typelist[i]->flags & FLAG_REGISTER) arg_types[0] |= ARG_REGISTER; - if (typelist[i]->flags & FLAG_RET16) arg_types[0] |= ARG_RET16; - -#ifdef __i386__ - fprintf( outfile, " { 0x68, __wine_%s_CallFrom16_%s, 0x9a, __wine_call_from_16_%s,\n", - make_c_identifier(spec->file_name), profile, - (typelist[i]->flags & FLAG_REGISTER) ? "regs": - (typelist[i]->flags & FLAG_RET16) ? "word" : "long" ); - if (argsize) - fprintf( outfile, " 0x%04x, 0xca66, %d, { 0x%08x, 0x%08x } },\n", - code_selector, argsize, arg_types[0], arg_types[1] ); - else - fprintf( outfile, " 0x%04x, 0xcb66, 0x9090, { 0x%08x, 0x%08x } },\n", - code_selector, arg_types[0], arg_types[1] ); -#else - if (argsize) - fprintf( outfile, " { 0xca66, %d, { 0x%08x, 0x%08x } },\n", - argsize, arg_types[0], arg_types[1] ); - else - fprintf( outfile, " { 0xcb66, 0x9090, { 0x%08x, 0x%08x } },\n", - arg_types[0], arg_types[1] ); -#endif - code_offset += sizeof(CALLFROM16); - } - fprintf( outfile, " },\n {\n" ); - - for (i = 0; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (!odp) continue; - switch (odp->type) - { - case TYPE_ABS: - odp->offset = LOWORD(odp->u.abs.value); - break; - - case TYPE_VARIABLE: - odp->offset = data_offset; - data_offset += StoreVariableCode( data + data_offset, 4, odp); - break; - - case TYPE_CDECL: - case TYPE_PASCAL: - case TYPE_VARARGS: - case TYPE_STUB: - type = bsearch( &odp, typelist, nTypes, sizeof(ORDDEF *), Spec16TypeCompare ); - assert( type ); - - fprintf( outfile, " /* %s.%d */ ", spec->dll_name, i ); -#ifdef __i386__ - fprintf( outfile, "{ 0x5566, 0x68, %s, 0xe866, %d /* %s */ },\n", -#else - fprintf( outfile, "{ %s, 0xe866, %d, /* %s */ },\n", -#endif - odp->link_name, - (type-typelist)*sizeof(CALLFROM16) - - (code_offset + sizeof(ENTRYPOINT16)), - get_function_name( odp ) ); - - odp->offset = code_offset; - code_offset += sizeof(ENTRYPOINT16); - break; - - default: - fprintf(stderr,"build: function type %d not available for Win16\n", - odp->type); - exit(1); - } - } - - fprintf( outfile, " }\n};\n" ); - - /* Output data segment */ - - dump_bytes( outfile, data, data_offset, "Data_Segment", 0 ); - - /* Build the module */ - - module_size = BuildModule16( outfile, code_offset, data_offset, spec ); - res_size = output_res16_data( outfile, spec ); - - /* Output the DLL descriptor */ - - fprintf( outfile, "#include \"poppack.h\"\n\n" ); - - fprintf( outfile, "static const struct dll_descriptor\n{\n" ); - fprintf( outfile, " unsigned char *module_start;\n" ); - fprintf( outfile, " int module_size;\n" ); - fprintf( outfile, " struct code_segment *code_start;\n" ); - fprintf( outfile, " unsigned char *data_start;\n" ); - fprintf( outfile, " const char *owner;\n" ); - fprintf( outfile, " const unsigned char *rsrc;\n" ); - fprintf( outfile, "} descriptor =\n{\n" ); - fprintf( outfile, " Module,\n" ); - fprintf( outfile, " sizeof(Module),\n" ); - fprintf( outfile, " &code_segment,\n" ); - fprintf( outfile, " Data_Segment,\n" ); - fprintf( outfile, " \"%s\",\n", spec->owner_name ); - fprintf( outfile, " %s\n", res_size ? "resource_data" : "0" ); - fprintf( outfile, "};\n" ); - - /* Output the DLL constructor */ - - sprintf( constructor, "__wine_spec_%s_init", make_c_identifier(spec->file_name) ); - sprintf( destructor, "__wine_spec_%s_fini", make_c_identifier(spec->file_name) ); - output_dll_init( outfile, constructor, destructor ); - - fprintf( outfile, - "void %s(void)\n" - "{\n" - " extern void __wine_register_dll_16( const struct dll_descriptor *descr );\n" - " __wine_register_dll_16( &descriptor );\n" - "}\n", constructor ); - fprintf( outfile, - "void %s(void)\n" - "{\n" - " extern void __wine_unregister_dll_16( const struct dll_descriptor *descr );\n" - " __wine_unregister_dll_16( &descriptor );\n" - "}\n", destructor ); -} diff --git a/reactos/tools/winebuild/spec32.c b/reactos/tools/winebuild/spec32.c deleted file mode 100644 index c72e91b7b32..00000000000 --- a/reactos/tools/winebuild/spec32.c +++ /dev/null @@ -1,1036 +0,0 @@ -/* - * 32-bit spec files - * - * Copyright 1993 Robert J. Amstadt - * Copyright 1995 Martin von Loewis - * Copyright 1995, 1996, 1997 Alexandre Julliard - * Copyright 1997 Eric Youngdale - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#include -#include -#include -#include - -#include "winglue.h" - -#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */ -#define EH_NONCONTINUABLE 0x01 - -#include "build.h" - - -#ifdef __APPLE__ -# define __ASM_SKIP ".space" -#else -# define __ASM_SKIP ".skip" -#endif - -static int string_compare( const void *ptr1, const void *ptr2 ) -{ - const char * const *str1 = ptr1; - const char * const *str2 = ptr2; - return strcmp( *str1, *str2 ); -} - - -/******************************************************************* - * make_internal_name - * - * Generate an internal name for an entry point. Used for stubs etc. - */ -static const char *make_internal_name( const ORDDEF *odp, DLLSPEC *spec, const char *prefix ) -{ - static char buffer[256]; - if (odp->name || odp->export_name) - { - char *p; - sprintf( buffer, "__wine_%s_%s_%s", prefix, spec->file_name, - odp->name ? odp->name : odp->export_name ); - /* make sure name is a legal C identifier */ - for (p = buffer; *p; p++) if (!isalnum(*p) && *p != '_') break; - if (!*p) return buffer; - } - sprintf( buffer, "__wine_%s_%s_%d", prefix, make_c_identifier(spec->file_name), odp->ordinal ); - return buffer; -} - -/******************************************************************* - * declare_weak_function - * - * Output a prototype for a weak function. - */ -static void declare_weak_function( FILE *outfile, const char *ret_type, const char *name, const char *params) -{ - fprintf( outfile, "#ifdef __GNUC__\n" ); - fprintf( outfile, "# ifdef __APPLE__\n" ); - fprintf( outfile, "extern %s %s(%s) __attribute__((weak_import));\n", ret_type, name, params ); - fprintf( outfile, "static %s (*__wine_spec_weak_%s)(%s) = %s;\n", ret_type, name, params, name ); - fprintf( outfile, "#define %s __wine_spec_weak_%s\n", name, name ); - fprintf( outfile, "# else\n" ); - fprintf( outfile, "extern %s %s(%s) __attribute__((weak));\n", ret_type, name, params ); - fprintf( outfile, "# endif\n" ); - fprintf( outfile, "#else\n" ); - fprintf( outfile, "extern %s %s(%s);\n", ret_type, name, params ); - fprintf( outfile, "static void __asm__dummy_%s(void)", name ); - fprintf( outfile, " { asm(\".weak " __ASM_NAME("%s") "\"); }\n", name ); - fprintf( outfile, "#endif\n\n" ); -} - - -/******************************************************************* - * output_debug - * - * Output the debug channels. - */ -static int output_debug( FILE *outfile ) -{ - int i; - - if (!nb_debug_channels) return 0; - qsort( debug_channels, nb_debug_channels, sizeof(debug_channels[0]), string_compare ); - - for (i = 0; i < nb_debug_channels; i++) - fprintf( outfile, "char __wine_dbch_%s[] = \"\\003%s\";\n", - debug_channels[i], debug_channels[i] ); - - fprintf( outfile, "\nstatic char * const debug_channels[%d] =\n{\n", nb_debug_channels ); - for (i = 0; i < nb_debug_channels; i++) - { - fprintf( outfile, " __wine_dbch_%s", debug_channels[i] ); - if (i < nb_debug_channels - 1) fprintf( outfile, ",\n" ); - } - fprintf( outfile, "\n};\n\n" ); - fprintf( outfile, "static void *debug_registration;\n\n" ); - - return nb_debug_channels; -} - - -/******************************************************************* - * output_exports - * - * Output the export table for a Win32 module. - */ -static int output_exports( FILE *outfile, int nr_exports, DLLSPEC *spec ) -{ - int i, fwd_size = 0, total_size = 0; - - if (!nr_exports) return 0; - - fprintf( outfile, "asm(\".data\\n\"\n" ); - fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(4) ); - fprintf( outfile, " \"" __ASM_NAME("__wine_spec_exports") ":\\n\"\n" ); - - /* export directory header */ - - fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* Characteristics */ - fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* TimeDateStamp */ - fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* MajorVersion/MinorVersion */ - fprintf( outfile, " \"\\t.long __wine_spec_exp_names\\n\"\n" ); /* Name */ - fprintf( outfile, " \"\\t.long %d\\n\"\n", spec->base ); /* Base */ - fprintf( outfile, " \"\\t.long %d\\n\"\n", nr_exports ); /* NumberOfFunctions */ - fprintf( outfile, " \"\\t.long %d\\n\"\n", spec->nb_names ); /* NumberOfNames */ - fprintf( outfile, " \"\\t.long __wine_spec_exports_funcs\\n\"\n" ); /* AddressOfFunctions */ - if (spec->nb_names) - { - fprintf( outfile, " \"\\t.long __wine_spec_exp_name_ptrs\\n\"\n" ); /* AddressOfNames */ - fprintf( outfile, " \"\\t.long __wine_spec_exp_ordinals\\n\"\n" ); /* AddressOfNameOrdinals */ - } - else - { - fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* AddressOfNames */ - fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* AddressOfNameOrdinals */ - } - total_size += 10 * sizeof(int); - - /* output the function pointers */ - - fprintf( outfile, " \"__wine_spec_exports_funcs:\\n\"\n" ); - for (i = spec->base; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (!odp) fprintf( outfile, " \"\\t.long 0\\n\"\n" ); - else switch(odp->type) - { - case TYPE_EXTERN: - case TYPE_STDCALL: - case TYPE_VARARGS: - case TYPE_CDECL: - if (!(odp->flags & FLAG_FORWARD)) - { - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", - (odp->flags & FLAG_REGISTER) ? make_internal_name( odp, spec, "regs" ) - : odp->link_name ); - } - else - { - fprintf( outfile, " \"\\t.long __wine_spec_forwards+%d\\n\"\n", fwd_size ); - fwd_size += strlen(odp->link_name) + 1; - } - break; - case TYPE_STUB: - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", - make_internal_name( odp, spec, "stub" ) ); - break; - default: - assert(0); - } - } - total_size += (spec->limit - spec->base + 1) * sizeof(int); - - if (spec->nb_names) - { - /* output the function name pointers */ - - int namepos = strlen(spec->file_name) + 1; - - fprintf( outfile, " \"__wine_spec_exp_name_ptrs:\\n\"\n" ); - for (i = 0; i < spec->nb_names; i++) - { - fprintf( outfile, " \"\\t.long __wine_spec_exp_names+%d\\n\"\n", namepos ); - namepos += strlen(spec->names[i]->name) + 1; - } - total_size += spec->nb_names * sizeof(int); - } - - /* output the function names */ - - fprintf( outfile, " \"\\t.text\\n\"\n" ); - fprintf( outfile, " \"__wine_spec_exp_names:\\n\"\n" ); - fprintf( outfile, " \"\\t" __ASM_STRING " \\\"%s\\\"\\n\"\n", spec->file_name ); - for (i = 0; i < spec->nb_names; i++) - fprintf( outfile, " \"\\t" __ASM_STRING " \\\"%s\\\"\\n\"\n", spec->names[i]->name ); - fprintf( outfile, " \"\\t.data\\n\"\n" ); - - if (spec->nb_names) - { - /* output the function ordinals */ - - fprintf( outfile, " \"__wine_spec_exp_ordinals:\\n\"\n" ); - for (i = 0; i < spec->nb_names; i++) - { - fprintf( outfile, " \"\\t" __ASM_SHORT " %d\\n\"\n", - spec->names[i]->ordinal - spec->base ); - } - total_size += spec->nb_names * sizeof(short); - if (spec->nb_names % 2) - { - fprintf( outfile, " \"\\t" __ASM_SHORT " 0\\n\"\n" ); - total_size += sizeof(short); - } - } - - /* output forward strings */ - - if (fwd_size) - { - fprintf( outfile, " \"__wine_spec_forwards:\\n\"\n" ); - for (i = spec->base; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - if (odp && (odp->flags & FLAG_FORWARD)) - fprintf( outfile, " \"\\t" __ASM_STRING " \\\"%s\\\"\\n\"\n", odp->link_name ); - } - fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(4) ); - total_size += (fwd_size + 3) & ~3; - } - - /* output relays */ - - if (debugging) - { - for (i = spec->base; i <= spec->limit; i++) - { - ORDDEF *odp = spec->ordinals[i]; - unsigned int j, args, mask = 0; - const char *name; - - /* skip non-existent entry points */ - if (!odp) goto ignore; - /* skip non-functions */ - if ((odp->type != TYPE_STDCALL) && (odp->type != TYPE_CDECL)) goto ignore; - /* skip norelay and forward entry points */ - if (odp->flags & (FLAG_NORELAY|FLAG_FORWARD)) goto ignore; - - for (j = 0; odp->u.func.arg_types[j]; j++) - { - if (odp->u.func.arg_types[j] == 't') mask |= 1<< (j*2); - if (odp->u.func.arg_types[j] == 'W') mask |= 2<< (j*2); - } - if ((odp->flags & FLAG_RET64) && (j < 16)) mask |= 0x80000000; - - name = odp->link_name; - args = strlen(odp->u.func.arg_types) * sizeof(int); - if (odp->flags & FLAG_REGISTER) name = make_internal_name( odp, spec, "regs" ); - - switch(odp->type) - { - case TYPE_STDCALL: - fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", name ); - fprintf( outfile, " \"\\tret $%d\\n\"\n", args ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", name, mask ); - break; - case TYPE_CDECL: - fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", name ); - fprintf( outfile, " \"\\tret\\n\"\n" ); - fprintf( outfile, " \"\\t" __ASM_SHORT " %d\\n\"\n", args ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", name, mask ); - break; - default: - assert(0); - } - continue; - - ignore: - fprintf( outfile, " \"\\t.long 0,0,0,0\\n\"\n" ); - } - } - - fprintf( outfile, " \"\\t.text\\n\"\n" ); - fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(4) ); - fprintf( outfile, ");\n\n" ); - - return total_size; -} - - -/******************************************************************* - * output_stub_funcs - * - * Output the functions for stub entry points -*/ -static void output_stub_funcs( FILE *outfile, DLLSPEC *spec ) -{ - int i; - - for (i = 0; i < spec->nb_entry_points; i++) - { - ORDDEF *odp = &spec->entry_points[i]; - if (odp->type != TYPE_STUB) continue; - fprintf( outfile, "#ifdef __GNUC__\n" ); - fprintf( outfile, "static void __wine_unimplemented( const char *func ) __attribute__((noreturn));\n" ); - fprintf( outfile, "#endif\n\n" ); - fprintf( outfile, "struct exc_record {\n" ); - fprintf( outfile, " unsigned int code, flags;\n" ); - fprintf( outfile, " void *rec, *addr;\n" ); - fprintf( outfile, " unsigned int params;\n" ); - fprintf( outfile, " const void *info[15];\n" ); - fprintf( outfile, "};\n\n" ); - fprintf( outfile, "extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" ); - fprintf( outfile, "static void __wine_unimplemented( const char *func )\n{\n" ); - fprintf( outfile, " struct exc_record rec;\n" ); - fprintf( outfile, " rec.code = 0x%08x;\n", EXCEPTION_WINE_STUB ); - fprintf( outfile, " rec.flags = %d;\n", EH_NONCONTINUABLE ); - fprintf( outfile, " rec.rec = 0;\n" ); - fprintf( outfile, " rec.params = 2;\n" ); - fprintf( outfile, " rec.info[0] = \"%s\";\n", spec->file_name ); - fprintf( outfile, " rec.info[1] = func;\n" ); - fprintf( outfile, "#ifdef __GNUC__\n" ); - fprintf( outfile, " rec.addr = __builtin_return_address(1);\n" ); - fprintf( outfile, "#else\n" ); - fprintf( outfile, " rec.addr = 0;\n" ); - fprintf( outfile, "#endif\n" ); - fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n}\n\n" ); - break; - } - - for (i = 0; i < spec->nb_entry_points; i++) - { - const ORDDEF *odp = &spec->entry_points[i]; - if (odp->type != TYPE_STUB) continue; - fprintf( outfile, "void %s(void) ", make_internal_name( odp, spec, "stub" ) ); - if (odp->name) - fprintf( outfile, "{ __wine_unimplemented(\"%s\"); }\n", odp->name ); - else if (odp->export_name) - fprintf( outfile, "{ __wine_unimplemented(\"%s\"); }\n", odp->export_name ); - else - fprintf( outfile, "{ __wine_unimplemented(\"%d\"); }\n", odp->ordinal ); - } -} - - -/******************************************************************* - * output_register_funcs - * - * Output the functions for register entry points - */ -static void output_register_funcs( FILE *outfile, DLLSPEC *spec ) -{ - const char *name; - int i; - - for (i = 0; i < spec->nb_entry_points; i++) - { - const ORDDEF *odp = &spec->entry_points[i]; - if (odp->type != TYPE_STDCALL && odp->type != TYPE_CDECL) continue; - if (!(odp->flags & FLAG_REGISTER)) continue; - if (odp->flags & FLAG_FORWARD) continue; - name = make_internal_name( odp, spec, "regs" ); - fprintf( outfile, - "asm(\".align %d\\n\\t\"\n" - " \"" __ASM_FUNC("%s") "\\n\\t\"\n" - " \"" __ASM_NAME("%s") ":\\n\\t\"\n" - " \"call " __ASM_NAME("__wine_call_from_32_regs") "\\n\\t\"\n" - " \".long " __ASM_NAME("%s") "\\n\\t\"\n" - " \".byte %d,%d\");\n", - get_alignment(4), - name, name, odp->link_name, - strlen(odp->u.func.arg_types) * sizeof(int), - (odp->type == TYPE_CDECL) ? 0 : (strlen(odp->u.func.arg_types) * sizeof(int)) ); - } -} - - -/******************************************************************* - * output_dll_init - * - * Output code for calling a dll constructor and destructor. - */ -void output_dll_init( FILE *outfile, const char *constructor, const char *destructor ) -{ - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "static void __asm__dummy_dll_init(void) {\n" ); - fprintf( outfile, "#endif\n" ); - -#if defined(__i386__) - if (constructor) - { - fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", constructor ); - fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); - } - if (destructor) - { - fprintf( outfile, "asm(\"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", destructor ); - fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); - } -#elif defined(__sparc__) - if (constructor) - { - fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", constructor ); - fprintf( outfile, " \"\\tnop\\n\"\n" ); - fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); - } - if (destructor) - { - fprintf( outfile, "asm(\"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", destructor ); - fprintf( outfile, " \"\\tnop\\n\"\n" ); - fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); - } -#elif defined(__powerpc__) -# ifdef __APPLE__ -/* Mach-O doesn't have an init section */ - if (constructor) - { - fprintf( outfile, "asm(\"\\t.mod_init_func\\n\"\n" ); - fprintf( outfile, " \"\\t.align 2\\n\"\n" ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", constructor ); - fprintf( outfile, " \"\\t.text\\n\");\n" ); - } - if (destructor) - { - fprintf( outfile, "asm(\"\\t.mod_term_func\\n\"\n" ); - fprintf( outfile, " \"\\t.align 2\\n\"\n" ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", destructor ); - fprintf( outfile, " \"\\t.text\\n\");\n" ); - } -# else /* __APPLE__ */ - if (constructor) - { - fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tbl " __ASM_NAME("%s") "\\n\"\n", constructor ); - fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); - } - if (destructor) - { - fprintf( outfile, "asm(\"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tbl " __ASM_NAME("%s") "\\n\"\n", destructor ); - fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); - } -# endif /* __APPLE__ */ -#else -#error You need to define the DLL constructor for your architecture -#endif - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "}\n" ); - fprintf( outfile, "#endif\n" ); -} - - -/******************************************************************* - * BuildSpec32File - * - * Build a Win32 C file from a spec file. - */ -void BuildSpec32File( FILE *outfile, DLLSPEC *spec ) -{ - int exports_size = 0; - int nr_exports, nr_imports; - DWORD page_size; - const char *init_func = spec->init_func; - -#ifdef HAVE_GETPAGESIZE - page_size = getpagesize(); -#elif defined(__svr4__) - page_size = sysconf(_SC_PAGESIZE); -#elif defined(_WINDOWS) - { - SYSTEM_INFO si; - GetSystemInfo(&si); - page_size = si.dwPageSize; - } -#else -# error Cannot get the page size on this platform -#endif - - nr_exports = spec->base <= spec->limit ? spec->limit - spec->base + 1 : 0; - resolve_imports( spec ); - output_standard_file_header( outfile ); - - /* Reserve some space for the PE header */ - - fprintf( outfile, "extern char __wine_spec_pe_header[];\n" ); - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "static void __asm__dummy_header(void) {\n" ); - fprintf( outfile, "#endif\n" ); - fprintf( outfile, "asm(\".text\\n\\t\"\n" ); - fprintf( outfile, " \".align %d\\n\"\n", get_alignment(page_size) ); - fprintf( outfile, " \"" __ASM_NAME("__wine_spec_pe_header") ":\\t" __ASM_SKIP " 65536\\n\\t\"\n" ); - fprintf( outfile, " \".data\\n\\t\"\n" ); - fprintf( outfile, " \".align %d\\n\"\n", get_alignment(4) ); - fprintf( outfile, " \"" __ASM_NAME("__wine_spec_data_start") ":\\t.long 1\");\n" ); - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "}\n" ); - fprintf( outfile, "#endif\n" ); - -#ifdef __APPLE__ - fprintf( outfile, "static char _end[4];\n" ); -#else - fprintf( outfile, "extern char _end[];\n" ); -#endif - - fprintf( outfile, "extern int __wine_spec_data_start[], __wine_spec_exports[];\n\n" ); - -#ifdef __i386__ - fprintf( outfile, "#define __stdcall __attribute__((__stdcall__))\n\n" ); -#else - fprintf( outfile, "#define __stdcall\n\n" ); -#endif - - if (nr_exports) - { - /* Output the stub functions */ - - output_stub_funcs( outfile, spec ); - - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "static void __asm__dummy(void) {\n" ); - fprintf( outfile, "#endif /* !defined(__GNUC__) */\n" ); - - /* Output code for all register functions */ - - output_register_funcs( outfile, spec ); - - /* Output the exports and relay entry points */ - - exports_size = output_exports( outfile, nr_exports, spec ); - - fprintf( outfile, "#ifndef __GNUC__\n" ); - fprintf( outfile, "}\n" ); - fprintf( outfile, "#endif /* !defined(__GNUC__) */\n" ); - } - - /* Output the DLL imports */ - - nr_imports = output_imports( outfile, spec ); - - /* Output the resources */ - - output_resources( outfile, spec ); - - /* Output the entry point function */ - - fprintf( outfile, "static int __wine_spec_init_state;\n" ); - fprintf( outfile, "extern int __wine_main_argc;\n" ); - fprintf( outfile, "extern char **__wine_main_argv;\n" ); - fprintf( outfile, "extern char **__wine_main_environ;\n" ); - fprintf( outfile, "extern unsigned short **__wine_main_wargv;\n" ); -#ifdef __APPLE__ - fprintf( outfile, "extern _dyld_func_lookup(char *, void *);" ); - fprintf( outfile, "static void __wine_spec_hidden_init(int argc, char** argv, char** envp)\n" ); - fprintf( outfile, "{\n" ); - fprintf( outfile, " void (*init)(void);\n" ); - fprintf( outfile, " _dyld_func_lookup(\"__dyld_make_delayed_module_initializer_calls\", (unsigned long *)&init);\n" ); - fprintf( outfile, " init();\n" ); - fprintf( outfile, "}\n" ); - fprintf( outfile, "static void __wine_spec_hidden_fini()\n" ); - fprintf( outfile, "{\n" ); - fprintf( outfile, " void (*fini)(void);\n" ); - fprintf( outfile, " _dyld_func_lookup(\"__dyld_mod_term_funcs\", (unsigned long *)&fini);\n" ); - fprintf( outfile, " fini();\n" ); - fprintf( outfile, "}\n" ); - fprintf( outfile, "#define _init __wine_spec_hidden_init\n" ); - fprintf( outfile, "#define _fini __wine_spec_hidden_fini\n" ); -#else - fprintf( outfile, "extern void _init(int, char**, char**);\n" ); - fprintf( outfile, "extern void _fini();\n" ); -#endif - - if (spec->characteristics & IMAGE_FILE_DLL) - { - if (init_func) - fprintf( outfile, "extern int __stdcall %s( void*, unsigned int, void* );\n\n", init_func ); - else - { - declare_weak_function( outfile, "int __stdcall", "DllMain", "void*, unsigned int, void*" ); - init_func = "DllMain"; - } - fprintf( outfile, - "static int __stdcall __wine_dll_main( void *inst, unsigned int reason, void *reserved )\n" - "{\n" - " int ret;\n" - " if (reason == %d && __wine_spec_init_state == 1)\n" - " _init( __wine_main_argc, __wine_main_argv, __wine_main_environ );\n" - " ret = %s ? %s( inst, reason, reserved ) : 1;\n" - " if (reason == %d && __wine_spec_init_state == 1) _fini();\n" - " return ret;\n" - "}\n", - DLL_PROCESS_ATTACH, init_func, init_func, DLL_PROCESS_DETACH ); - init_func = "__wine_dll_main"; - } - else switch(spec->subsystem) - { - case IMAGE_SUBSYSTEM_NATIVE: - if (init_func) - fprintf( outfile, "extern int __stdcall %s( void*, void* );\n\n", init_func ); - else - { - declare_weak_function( outfile, "int __stdcall", "DriverEntry", "void*, void*"); - init_func = "DriverEntry"; - } - fprintf( outfile, - "static int __stdcall __wine_driver_entry( void *obj, void *path )\n" - "{\n" - " int ret;\n" - " if (__wine_spec_init_state == 1)\n" - " _init( __wine_main_argc, __wine_main_argv, __wine_main_environ );\n" - " ret = %s ? %s( obj, path ) : 0;\n" - " if (__wine_spec_init_state == 1) _fini();\n" - " return ret;\n" - "}\n", - init_func, init_func ); - init_func = "__wine_driver_entry"; - break; - case IMAGE_SUBSYSTEM_WINDOWS_GUI: - case IMAGE_SUBSYSTEM_WINDOWS_CUI: - if (init_func) - fprintf( outfile, "extern int %s( int argc, char *argv[] );\n", init_func ); - else - { - declare_weak_function( outfile, "int", "main", "int argc, char *argv[]" ); - declare_weak_function( outfile, "int", "wmain", "int argc, unsigned short *argv[]" ); - declare_weak_function( outfile, "int __stdcall", "WinMain", "void *,void *,char *,int" ); - } - fprintf( outfile, - "\ntypedef struct {\n" - " unsigned int cb;\n" - " char *lpReserved, *lpDesktop, *lpTitle;\n" - " unsigned int dwX, dwY, dwXSize, dwYSize;\n" - " unsigned int dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags;\n" - " unsigned short wShowWindow, cbReserved2;\n" - " char *lpReserved2;\n" - " void *hStdInput, *hStdOutput, *hStdError;\n" - "} STARTUPINFOA;\n" - "extern char * __stdcall GetCommandLineA(void);\n" - "extern void * __stdcall GetModuleHandleA(char *);\n" - "extern void __stdcall GetStartupInfoA(STARTUPINFOA *);\n" - "extern void __stdcall ExitProcess(unsigned int);\n" - "static void __wine_exe_main(void)\n" - "{\n" - " int ret;\n" - " if (__wine_spec_init_state == 1)\n" - " _init( __wine_main_argc, __wine_main_argv, __wine_main_environ );\n" ); - if (init_func) - fprintf( outfile, - " ret = %s( __wine_main_argc, __wine_main_argv );\n", init_func ); - else - fprintf( outfile, - " if (WinMain) {\n" - " STARTUPINFOA info;\n" - " char *cmdline = GetCommandLineA();\n" - " int bcount=0, in_quotes=0;\n" - " while (*cmdline) {\n" - " if ((*cmdline=='\\t' || *cmdline==' ') && !in_quotes) break;\n" - " else if (*cmdline=='\\\\') bcount++;\n" - " else if (*cmdline=='\\\"') {\n" - " if ((bcount & 1)==0) in_quotes=!in_quotes;\n" - " bcount=0;\n" - " }\n" - " else bcount=0;\n" - " cmdline++;\n" - " }\n" - " while (*cmdline=='\\t' || *cmdline==' ') cmdline++;\n" - " GetStartupInfoA( &info );\n" - " if (!(info.dwFlags & 1)) info.wShowWindow = 1;\n" - " ret = WinMain( GetModuleHandleA(0), 0, cmdline, info.wShowWindow );\n" - " }\n" - " else if (wmain) ret = wmain( __wine_main_argc, __wine_main_wargv );\n" - " else ret = main( __wine_main_argc, __wine_main_argv );\n" ); - fprintf( outfile, - " if (__wine_spec_init_state == 1) _fini();\n" - " ExitProcess( ret );\n" - "}\n\n" ); - init_func = "__wine_exe_main"; - break; - } - - /* Output the NT header */ - - /* this is the IMAGE_NT_HEADERS structure, but we cannot include winnt.h here */ - fprintf( outfile, "static const struct image_nt_headers\n{\n" ); - fprintf( outfile, " int Signature;\n" ); - fprintf( outfile, " struct file_header {\n" ); - fprintf( outfile, " short Machine;\n" ); - fprintf( outfile, " short NumberOfSections;\n" ); - fprintf( outfile, " int TimeDateStamp;\n" ); - fprintf( outfile, " void *PointerToSymbolTable;\n" ); - fprintf( outfile, " int NumberOfSymbols;\n" ); - fprintf( outfile, " short SizeOfOptionalHeader;\n" ); - fprintf( outfile, " short Characteristics;\n" ); - fprintf( outfile, " } FileHeader;\n" ); - fprintf( outfile, " struct opt_header {\n" ); - fprintf( outfile, " short Magic;\n" ); - fprintf( outfile, " char MajorLinkerVersion, MinorLinkerVersion;\n" ); - fprintf( outfile, " int SizeOfCode;\n" ); - fprintf( outfile, " int SizeOfInitializedData;\n" ); - fprintf( outfile, " int SizeOfUninitializedData;\n" ); - fprintf( outfile, " void *AddressOfEntryPoint;\n" ); - fprintf( outfile, " void *BaseOfCode;\n" ); - fprintf( outfile, " void *BaseOfData;\n" ); - fprintf( outfile, " void *ImageBase;\n" ); - fprintf( outfile, " int SectionAlignment;\n" ); - fprintf( outfile, " int FileAlignment;\n" ); - fprintf( outfile, " short MajorOperatingSystemVersion;\n" ); - fprintf( outfile, " short MinorOperatingSystemVersion;\n" ); - fprintf( outfile, " short MajorImageVersion;\n" ); - fprintf( outfile, " short MinorImageVersion;\n" ); - fprintf( outfile, " short MajorSubsystemVersion;\n" ); - fprintf( outfile, " short MinorSubsystemVersion;\n" ); - fprintf( outfile, " int Win32VersionValue;\n" ); - fprintf( outfile, " void *SizeOfImage;\n" ); - fprintf( outfile, " int SizeOfHeaders;\n" ); - fprintf( outfile, " int CheckSum;\n" ); - fprintf( outfile, " short Subsystem;\n" ); - fprintf( outfile, " short DllCharacteristics;\n" ); - fprintf( outfile, " int SizeOfStackReserve;\n" ); - fprintf( outfile, " int SizeOfStackCommit;\n" ); - fprintf( outfile, " int SizeOfHeapReserve;\n" ); - fprintf( outfile, " int SizeOfHeapCommit;\n" ); - fprintf( outfile, " int LoaderFlags;\n" ); - fprintf( outfile, " int NumberOfRvaAndSizes;\n" ); - fprintf( outfile, " struct { const void *VirtualAddress; int Size; } DataDirectory[%d];\n", - IMAGE_NUMBEROF_DIRECTORY_ENTRIES ); - fprintf( outfile, " } OptionalHeader;\n" ); - fprintf( outfile, "} nt_header = {\n" ); - fprintf( outfile, " 0x%04x,\n", IMAGE_NT_SIGNATURE ); /* Signature */ -#ifdef __i386__ - fprintf( outfile, " { 0x%04x,\n", IMAGE_FILE_MACHINE_I386 ); /* Machine */ -#elif defined(__powerpc__) - fprintf( outfile, " { 0x%04x,\n", IMAGE_FILE_MACHINE_POWERPC ); /* Machine */ -#else - fprintf( outfile, " { 0x%04x,\n", IMAGE_FILE_MACHINE_UNKNOWN ); /* Machine */ -#endif - fprintf( outfile, " 0, 0, 0, 0,\n" ); - fprintf( outfile, " sizeof(nt_header.OptionalHeader),\n" ); /* SizeOfOptionalHeader */ - fprintf( outfile, " 0x%04x },\n", spec->characteristics ); /* Characteristics */ - - fprintf( outfile, " { 0x%04x,\n", IMAGE_NT_OPTIONAL_HDR_MAGIC ); /* Magic */ - fprintf( outfile, " 0, 0,\n" ); /* Major/MinorLinkerVersion */ - fprintf( outfile, " 0, 0, 0,\n" ); /* SizeOfCode/Data */ - fprintf( outfile, " %s,\n", init_func ); /* AddressOfEntryPoint */ - fprintf( outfile, " 0, __wine_spec_data_start,\n" ); /* BaseOfCode/Data */ - fprintf( outfile, " __wine_spec_pe_header,\n" ); /* ImageBase */ - fprintf( outfile, " %ld,\n", page_size ); /* SectionAlignment */ - fprintf( outfile, " %ld,\n", page_size ); /* FileAlignment */ - fprintf( outfile, " 1, 0,\n" ); /* Major/MinorOperatingSystemVersion */ - fprintf( outfile, " 0, 0,\n" ); /* Major/MinorImageVersion */ - fprintf( outfile, " %d,\n", spec->subsystem_major ); /* MajorSubsystemVersion */ - fprintf( outfile, " %d,\n", spec->subsystem_minor ); /* MinorSubsystemVersion */ - fprintf( outfile, " 0,\n" ); /* Win32VersionValue */ - fprintf( outfile, " _end,\n" ); /* SizeOfImage */ - fprintf( outfile, " %ld,\n", page_size ); /* SizeOfHeaders */ - fprintf( outfile, " 0,\n" ); /* CheckSum */ - fprintf( outfile, " 0x%04x,\n", spec->subsystem );/* Subsystem */ - fprintf( outfile, " 0,\n" ); /* DllCharacteristics */ - fprintf( outfile, " %d, %ld,\n", /* SizeOfStackReserve/Commit */ - (spec->stack_size ? spec->stack_size : 1024) * 1024, page_size ); - fprintf( outfile, " %d, %ld,\n", /* SizeOfHeapReserve/Commit */ - (spec->heap_size ? spec->heap_size : 1024) * 1024, page_size ); - fprintf( outfile, " 0,\n" ); /* LoaderFlags */ - fprintf( outfile, " %d,\n", IMAGE_NUMBEROF_DIRECTORY_ENTRIES ); /* NumberOfRvaAndSizes */ - fprintf( outfile, " {\n" ); - fprintf( outfile, " { %s, %d },\n", /* IMAGE_DIRECTORY_ENTRY_EXPORT */ - exports_size ? "__wine_spec_exports" : "0", exports_size ); - fprintf( outfile, " { %s, %s },\n", /* IMAGE_DIRECTORY_ENTRY_IMPORT */ - nr_imports ? "&imports" : "0", nr_imports ? "sizeof(imports)" : "0" ); - fprintf( outfile, " { %s, %s },\n", /* IMAGE_DIRECTORY_ENTRY_RESOURCE */ - spec->nb_resources ? "&resources" : "0", - spec->nb_resources ? "sizeof(resources)" : "0" ); - fprintf( outfile, " }\n }\n};\n\n" ); - - /* Output the DLL constructor */ - - fprintf( outfile, - "void __wine_spec_init(void)\n" - "{\n" - " extern void __wine_dll_register( const struct image_nt_headers *, const char * );\n" - " __wine_spec_init_state = 1;\n" - " __wine_dll_register( &nt_header, \"%s\" );\n" - "}\n\n", - spec->file_name ); - - output_dll_init( outfile, "__wine_spec_init_ctor", NULL ); - fprintf( outfile, - "void __wine_spec_init_ctor(void)\n" - "{\n" - " if (__wine_spec_init_state) return;\n" - " __wine_spec_init();\n" - " __wine_spec_init_state = 2;\n" - "}\n" ); -} - - -/******************************************************************* - * BuildDef32File - * - * Build a Win32 def file from a spec file. - */ -void BuildDef32File( FILE *outfile, DLLSPEC *spec ) -{ - const char *name; - int i; - - fprintf(outfile, "; File generated automatically from %s; do not edit!\n\n", - input_file_name ); - - fprintf(outfile, "LIBRARY %s\n\n", spec->file_name); - - fprintf(outfile, "EXPORTS\n"); - - /* Output the exports and relay entry points */ - - for(i = 0; i < spec->nb_entry_points; i++) - { - const ORDDEF *odp = &spec->entry_points[i]; - int is_data = 0; - - if (!odp) continue; - if (odp->name) name = odp->name; - else if (odp->type == TYPE_STUB) name = make_internal_name( odp, spec, "stub" ); - else if (odp->export_name) name = odp->export_name; - else name = make_internal_name( odp, spec, "noname_export" ); - - fprintf(outfile, " %s", name); - - switch(odp->type) - { - case TYPE_EXTERN: - is_data = 1; - /* fall through */ - case TYPE_VARARGS: - case TYPE_CDECL: - /* try to reduce output */ - if(strcmp(name, odp->link_name) || (odp->flags & FLAG_FORWARD)) - fprintf(outfile, "=%s", odp->link_name); - break; - case TYPE_STDCALL: - { - int at_param = strlen(odp->u.func.arg_types) * sizeof(int); - if (!kill_at) fprintf(outfile, "@%d", at_param); - if (odp->flags & FLAG_FORWARD) - { - fprintf(outfile, "=%s", odp->link_name); - } - else if (strcmp(name, odp->link_name)) /* try to reduce output */ - { - fprintf(outfile, "=%s", odp->link_name); - if (!kill_at) fprintf(outfile, "@%d", at_param); - } - break; - } - case TYPE_STUB: - { - if (!kill_at) - { - const char *check = name + strlen(name); - while (name != check && - '0' <= check[-1] && check[-1] <= '9') - { - check--; - } - if (name != check && check != name + strlen(name) && - '@' == check[-1]) - { - fprintf(outfile, "%s", check - 1); - } - } - if (NULL != odp->name) - { - fprintf(outfile, "=%s", make_internal_name( odp, spec, "stub" )); - } - break; - } - default: - assert(0); - } - fprintf( outfile, " @%d", odp->ordinal ); -#if 0 /* MinGW binutils cannot handle this correctly */ - if (!odp->name) fprintf( outfile, " NONAME" ); -#else - if (!odp->name && (odp->type == TYPE_STUB || odp->export_name)) fprintf( outfile, " NONAME" ); -#endif - if (is_data) fprintf( outfile, " DATA" ); -#if 0 - /* MinGW binutils cannot handle this correctly */ - if (odp->flags & FLAG_PRIVATE) fprintf( outfile, " PRIVATE" ); -#endif - fprintf( outfile, "\n" ); - } -} - - -/******************************************************************* - * BuildDebugFile - * - * Build the debugging channels source file. - */ -void BuildDebugFile( FILE *outfile, const char *srcdir, char **argv ) -{ - int nr_debug; - char *prefix, *p; - - while (*argv) - { - if (!parse_debug_channels( srcdir, *argv++ )) exit(1); - } - - output_standard_file_header( outfile ); - nr_debug = output_debug( outfile ); - if (!nr_debug) - { - fprintf( outfile, "/* no debug channels found for this module */\n" ); - return; - } - - if (output_file_name) - { - if ((p = strrchr( output_file_name, '/' ))) p++; - prefix = xstrdup( p ? p : output_file_name ); - if ((p = strchr( prefix, '.' ))) *p = 0; - strcpy( p, make_c_identifier(p) ); - } - else prefix = xstrdup( "_" ); - - /* Output the DLL constructor */ - - fprintf( outfile, - "#ifdef __GNUC__\n" - "void __wine_dbg_%s_init(void) __attribute__((constructor));\n" - "void __wine_dbg_%s_fini(void) __attribute__((destructor));\n" - "#else\n" - "static void __asm__dummy_dll_init(void) {\n", - prefix, prefix ); - -#if defined(__i386__) - fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); -#elif defined(__sparc__) - fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\tnop\\n\"\n" ); - fprintf( outfile, " \"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\tnop\\n\"\n" ); - fprintf( outfile, " \"\\t.section\t\\\".text\\\"\\n\");\n" ); -#elif defined(__powerpc__) -# ifdef __APPLE__ - fprintf( outfile, "asm(\"\\t.mod_init_func\\n\"\n" ); - fprintf( outfile, " \"\\t.align 2\\n\"\n" ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\t.text\\n\");\n" ); - fprintf( outfile, "asm(\"\\t.mod_term_func\\n\"\n" ); - fprintf( outfile, " \"\\t.align 2\\n\"\n" ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\t.text\\n\");\n" ); -# else - fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tbl " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); - fprintf( outfile, " \"\\tbl " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); - fprintf( outfile, " \"\\t.text\\n\");\n" ); -# endif -#else -#error You need to define the DLL constructor for your architecture -#endif - fprintf( outfile, "}\n#endif /* defined(__GNUC__) */\n\n" ); - - fprintf( outfile, - "void __wine_dbg_%s_init(void)\n" - "{\n" - " extern void *__wine_dbg_register( char * const *, int );\n" - " if (!debug_registration) debug_registration = __wine_dbg_register( debug_channels, %d );\n" - "}\n\n", prefix, nr_debug ); - fprintf( outfile, - "void __wine_dbg_%s_fini(void)\n" - "{\n" - " extern void __wine_dbg_unregister( void* );\n" - " __wine_dbg_unregister( debug_registration );\n" - "}\n", prefix ); - - free( prefix ); -} - - -/******************************************************************* - * BuildPedllFile - * - * Build a PE DLL C file from a spec file. - */ -void BuildPedllFile( FILE *outfile, DLLSPEC *spec ) -{ - int nr_exports; - - nr_exports = spec->base <= spec->limit ? spec->limit - spec->base + 1 : 0; - output_standard_file_header( outfile ); - - if (nr_exports) - { - /* Output the stub functions */ - - output_stub_funcs( outfile, spec ); - } -} diff --git a/reactos/tools/winebuild/utils.c b/reactos/tools/winebuild/utils.c deleted file mode 100644 index bf71941ee0d..00000000000 --- a/reactos/tools/winebuild/utils.c +++ /dev/null @@ -1,415 +0,0 @@ -/* - * Small utility functions for winebuild - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "config.h" - -#if !defined(WIN32) -#undef strdup -#endif - -#include -#include -#include -#include -#include - -#include "build.h" - -void *xmalloc (size_t size) -{ - void *res; - - res = malloc (size ? size : 1); - if (res == NULL) - { - fprintf (stderr, "Virtual memory exhausted.\n"); - exit (1); - } - return res; -} - -void *xrealloc (void *ptr, size_t size) -{ - void *res = realloc (ptr, size); - if (res == NULL) - { - fprintf (stderr, "Virtual memory exhausted.\n"); - exit (1); - } - return res; -} - -char *xstrdup( const char *str ) -{ - char *res = strdup( str ); - if (!res) - { - fprintf (stderr, "Virtual memory exhausted.\n"); - exit (1); - } - return res; -} - -char *strupper(char *s) -{ - char *p; - for (p = s; *p; p++) *p = toupper(*p); - return s; -} - -void fatal_error( const char *msg, ... ) -{ - va_list valist; - va_start( valist, msg ); - if (input_file_name) - { - fprintf( stderr, "%s:", input_file_name ); - if (current_line) - fprintf( stderr, "%d:", current_line ); - fputc( ' ', stderr ); - } - else fprintf( stderr, "winebuild: " ); - vfprintf( stderr, msg, valist ); - va_end( valist ); - exit(1); -} - -void fatal_perror( const char *msg, ... ) -{ - va_list valist; - va_start( valist, msg ); - if (input_file_name) - { - fprintf( stderr, "%s:", input_file_name ); - if (current_line) - fprintf( stderr, "%d:", current_line ); - fputc( ' ', stderr ); - } - vfprintf( stderr, msg, valist ); - perror( " " ); - va_end( valist ); - exit(1); -} - -void error( const char *msg, ... ) -{ - va_list valist; - va_start( valist, msg ); - if (input_file_name) - { - fprintf( stderr, "%s:", input_file_name ); - if (current_line) - fprintf( stderr, "%d:", current_line ); - fputc( ' ', stderr ); - } - vfprintf( stderr, msg, valist ); - va_end( valist ); - nb_errors++; -} - -void warning( const char *msg, ... ) -{ - va_list valist; - - if (!display_warnings) return; - va_start( valist, msg ); - if (input_file_name) - { - fprintf( stderr, "%s:", input_file_name ); - if (current_line) - fprintf( stderr, "%d:", current_line ); - fputc( ' ', stderr ); - } - fprintf( stderr, "warning: " ); - vfprintf( stderr, msg, valist ); - va_end( valist ); -} - -/* output a standard header for generated files */ -void output_standard_file_header( FILE *outfile ) -{ - if (input_file_name) - fprintf( outfile, "/* File generated automatically from %s; do not edit! */\n", - input_file_name ); - else - fprintf( outfile, "/* File generated automatically; do not edit! */\n" ); - fprintf( outfile, - "/* This file can be copied, modified and distributed without restriction. */\n\n" ); -} - -/* dump a byte stream into the assembly code */ -void dump_bytes( FILE *outfile, const unsigned char *data, int len, - const char *label, int constant ) -{ - int i; - - fprintf( outfile, "\nstatic %sunsigned char %s[%d] = {", - constant ? "const " : "", label, len ); - for (i = 0; i < len; i++) - { - if (!(i & 7)) fprintf( outfile, "\n " ); - fprintf( outfile, "0x%02x", *data++ ); - if (i < len - 1) fprintf( outfile, "," ); - } - fprintf( outfile, "\n};\n" ); -} - - -/******************************************************************* - * open_input_file - * - * Open a file in the given srcdir and set the input_file_name global variable. - */ -FILE *open_input_file( const char *srcdir, const char *name ) -{ - char *fullname; - FILE *file = fopen( name, "r" ); - - if (!file && srcdir) - { - fullname = xmalloc( strlen(srcdir) + strlen(name) + 2 ); - strcpy( fullname, srcdir ); - strcat( fullname, "/" ); - strcat( fullname, name ); - file = fopen( fullname, "r" ); - } - else fullname = xstrdup( name ); - - if (!file) fatal_error( "Cannot open file '%s'\n", fullname ); - input_file_name = fullname; - current_line = 1; - return file; -} - - -/******************************************************************* - * close_input_file - * - * Close the current input file (must have been opened with open_input_file). - */ -void close_input_file( FILE *file ) -{ - fclose( file ); - free( input_file_name ); - input_file_name = NULL; - current_line = 0; -} - - -/******************************************************************* - * remove_stdcall_decoration - * - * Remove a possible @xx suffix from a function name. - * Return the numerical value of the suffix, or -1 if none. - */ -int remove_stdcall_decoration( char *name ) -{ - char *p, *end = strrchr( name, '@' ); - if (!end || !end[1] || end == name) return -1; - /* make sure all the rest is digits */ - for (p = end + 1; *p; p++) if (!isdigit(*p)) return -1; - *end = 0; - return atoi( end + 1 ); -} - - -/******************************************************************* - * alloc_dll_spec - * - * Create a new dll spec file descriptor - */ -DLLSPEC *alloc_dll_spec(void) -{ - DLLSPEC *spec; - - spec = xmalloc( sizeof(*spec) ); - spec->file_name = NULL; - spec->dll_name = NULL; - spec->owner_name = NULL; - spec->init_func = NULL; - spec->type = SPEC_WIN32; - spec->base = MAX_ORDINALS; - spec->limit = 0; - spec->stack_size = 0; - spec->heap_size = 0; - spec->nb_entry_points = 0; - spec->alloc_entry_points = 0; - spec->nb_names = 0; - spec->nb_resources = 0; - spec->characteristics = 0; - spec->subsystem = 0; - spec->subsystem_major = 4; - spec->subsystem_minor = 0; - spec->entry_points = NULL; - spec->names = NULL; - spec->ordinals = NULL; - spec->resources = NULL; - return spec; -} - - -/******************************************************************* - * free_dll_spec - * - * Free dll spec file descriptor - */ -void free_dll_spec( DLLSPEC *spec ) -{ - int i; - - for (i = 0; i < spec->nb_entry_points; i++) - { - ORDDEF *odp = &spec->entry_points[i]; - free( odp->name ); - free( odp->export_name ); - free( odp->link_name ); - } - free( spec->file_name ); - free( spec->dll_name ); - free( spec->owner_name ); - free( spec->init_func ); - free( spec->entry_points ); - free( spec->names ); - free( spec->ordinals ); - free( spec->resources ); - free( spec ); -} - - -/******************************************************************* - * make_c_identifier - * - * Map a string to a valid C identifier. - */ -const char *make_c_identifier( const char *str ) -{ - static char buffer[256]; - char *p; - - for (p = buffer; *str && p < buffer+sizeof(buffer)-1; p++, str++) - { - if (isalnum(*str)) *p = *str; - else *p = '_'; - } - *p = 0; - return buffer; -} - - -/***************************************************************** - * Function: get_alignment - * - * Description: - * According to the info page for gas, the .align directive behaves - * differently on different systems. On some architectures, the - * argument of a .align directive is the number of bytes to pad to, so - * to align on an 8-byte boundary you'd say - * .align 8 - * On other systems, the argument is "the number of low-order zero bits - * that the location counter must have after advancement." So to - * align on an 8-byte boundary you'd say - * .align 3 - * - * The reason gas is written this way is that it's trying to mimick - * native assemblers for the various architectures it runs on. gas - * provides other directives that work consistantly across - * architectures, but of course we want to work on all arches with or - * without gas. Hence this function. - * - * - * Parameters: - * alignBoundary -- the number of bytes to align to. - * If we're on an architecture where - * the assembler requires a 'number - * of low-order zero bits' as a - * .align argument, then this number - * must be a power of 2. - * - */ -int get_alignment(int alignBoundary) -{ -#if defined(__powerpc__) || defined(__ALPHA__) - - int n = 0; - - switch(alignBoundary) - { - case 2: - n = 1; - break; - case 4: - n = 2; - break; - case 8: - n = 3; - break; - case 16: - n = 4; - break; - case 32: - n = 5; - break; - case 64: - n = 6; - break; - case 128: - n = 7; - break; - case 256: - n = 8; - break; - case 512: - n = 9; - break; - case 1024: - n = 10; - break; - case 2048: - n = 11; - break; - case 4096: - n = 12; - break; - case 8192: - n = 13; - break; - case 16384: - n = 14; - break; - case 32768: - n = 15; - break; - case 65536: - n = 16; - break; - default: - fatal_error("Alignment to %d-byte boundary not supported on this architecture.\n", - alignBoundary); - } - return n; - -#elif defined(__i386__) || defined(__sparc__) - - return alignBoundary; - -#else -#error "How does the '.align' assembler directive work on your architecture?" -#endif -} diff --git a/reactos/tools/winebuild/winebuild.man.in b/reactos/tools/winebuild/winebuild.man.in deleted file mode 100644 index de9a79255c1..00000000000 --- a/reactos/tools/winebuild/winebuild.man.in +++ /dev/null @@ -1,426 +0,0 @@ -.\" -*- nroff -*- -.TH WINEBUILD 1 "March 2003" "@PACKAGE_STRING@" "Wine dll builder" -.SH NAME -winebuild \- Wine dll builder -.SH SYNOPSIS -.BI winebuild\ [options]\ [input\ files] -.SH DESCRIPTION -.B winebuild -generates the C and assembly files that are necessary to build a Wine -dll, which is basically a Win32 dll encapsulated inside a Unix -library. -.PP -.B winebuild -has different modes, depending on what kind of file it is asked to -generate. The mode is specified by one of the mode options specified -below. In addition to the mode option, various other command-line -option can be specified, as described in the \fBOPTIONS\fR section. -.SH "MODE OPTIONS" -You have to specify exactly one of the following options, depending on -what you want winebuild to generate. -.TP -.BI \--dll= filename -Build a C file from a .spec file (see \fBSPEC FILE SYNTAX\fR for -details), or from a standard Windows .def file. The resulting C file -must be compiled and linked to the other object files to build a -working Wine dll. -.br -In that mode, the -.I input files -should be the list of all object files that will be linked into the -final dll, to allow -.B winebuild -to get the list of all undefined symbols that need to be imported from -other dlls. -.TP -.BI \--exe= name -Build a C file for the named executable. This is basically the same as -the --dll mode except that it doesn't require a .spec file as input, -since an executable doesn't export functions. The resulting C file -must be compiled and linked to the other object files to build a -working Wine executable, and all the other object files must be listed -as -.I input files. -.TP -.BI \--def= file.spec -Build a .def file from a spec file. This is used when building dlls -with a PE (Win32) compiler. -.TP -.B \--debug -Build a C file containing the definitions for debugging channels. In -that mode the -.I input files -should be a list of C files to search for debug channel -definitions. The resulting C file must be compiled and linked with the -dll. -.TP -.B \--relay16 -Generate the assembly code for the 16-bit relay routines. This is for -Wine internal usage only, you should never need to use this option. -.TP -.B \--relay32 -Generate the assembly code for the 32-bit relay routines. This is for -Wine internal usage only, you should never need to use this option. -.SH OPTIONS -.TP -.BI \-C,\ --source-dir= directory -Change to the specified directory before reading source files. Only -meaningful in -.BR \--debug\ mode. -.TP -.BI \-D\ symbol -Ignored for compatibility with the C compiler. -.TP -.BI \-e,\ --entry= function -Specify the module entry point function; if not specified, the default -is -.B DllMain -for dlls, and -.B WinMain -for executables (if -.B WinMain -is not defined, the standard C -.B main -is used instead). This is only valid for Win32 modules. -.TP -.BI \-f\ flags -Ignored for compatibility with the C compiler. -.TP -.BI \-F,\ --filename= filename -Set the file name of the module. The default is to use the base name -of the spec file (without any extension). -.TP -.B \-h, --help -Display a usage message and exit. -.TP -.BI \-H,\ --heap= size -Specify the size of the module local heap in bytes (only valid for -Win16 modules); default is no local heap. -.TP -.BI \-i,\ --ignore= [-]symbol[,[-]symbol] -Specify a list of symbols that should be ignored when resolving -undefined symbols against the imported libraries. This forces these -symbols to be resolved from the Unix C library (or from another Unix -library linked with the application). If a symbol is prefixed by '-' -it is removed from the list instead of being added; a stand-alone '-' -clears the whole list. -.TP -.BI \-I\ directory -Ignored for compatibility with the C compiler. -.TP -.B \-k, --kill-at -Remove the stdcall decorations from the symbol names in the -generated .def file. Only meaningful in \fB--def\fR mode. -.TP -.BI \-K\ flags -Ignored for compatibility with the C compiler. -.TP -.BI \-L,\ --library-path= directory -Append the specified directory to the list of directories that are -searched for import libraries. -.TP -.BI \-l,\ --library= name -Import the specified library, looking for a corresponding -\fIlibname.def\fR file in the directories specified with the \fB-L\fR -option. -.TP -.BI \-d,\ --delay-lib= name -Same as the \fB-l\fR option, but import the specified library in -delayed mode (i.e. the library won't be loaded until a function -imported from it is actually called). -.TP -.BI \-M,\ --main-module= module -Specify that we are building a 16-bit dll, that will ultimately be -linked together with the 32-bit dll specified in \fImodule\fR. Only -meaningful in \fB--dll\fR mode. -.TP -.BI \-N,\ --dll-name= dllname -Set the internal name of the module. It is only used in Win16 -modules. The default is to use the base name of the spec file (without -any extension). This is used for KERNEL, since it lives in -KRNL386.EXE. It shouldn't be needed otherwise. -.TP -.BI \-o,\ --output= file -Set the name of the output file (default is standard output). -.TP -.BI \-r,\ --res= rsrc.res -Load resources from the specified binary resource file. The -\fIrsrc.res\fR can be produced from a source resource file with -.BR wrc(1) -(or with a Windows resource compiler). -.br -This option is only necessary for Win16 resource files, the Win32 ones -can simply listed as -.I input files -and will automatically be handled correctly (though the -.B \-r -option will also work for Win32 files). -.TP -.BI --subsystem= subsystem[:major[.minor]] -Set the subsystem of the executable, which can be one of the following: -.br -.B console -for a command line executable, -.br -.B windows -for a graphical executable, -.br -.B native -for a native-mode dll. -.br -The entry point of a command line executable is a normal C \fBmain\fR -function. A \fBwmain\fR function can be used instead if you need the -argument array to use Unicode strings. A graphical executable has a -\fBWinMain\fR entry point. -.br -Optionally a major and minor subsystem version can also be specified; -the default subsystem version is 4.0. -.TP -.B \--version -Display the program version and exit. -.TP -.B \-w, --warnings -Turn on warnings. -.SH "SPEC FILE SYNTAX" -.SS "General syntax" -A spec file should contain a list of ordinal declarations. The general -syntax is the following: -.PP -.I ordinal functype -.RI [ flags ]\ exportname \ \fB(\fR\ [ args... ] \ \fB) \ [ handler ] -.br -.IB ordinal\ variable -.RI [ flags ]\ exportname \ \fB(\fR\ [ data... ] \ \fB) -.br -.IB ordinal\ extern -.RI [ flags ]\ exportname \ [ symbolname ] -.br -.IB ordinal\ stub -.RI [ flags ]\ exportname -.br -.IB ordinal\ equate -.RI [ flags ]\ exportname\ data -.br -.BI #\ comments -.PP -Declarations must fit on a single line, except if the end of line is -escaped using a backslash character. The -.B # -character anywhere in a line causes the rest of the line to be ignored -as a comment. -.PP -.I ordinal -specifies the ordinal number corresponding to the entry point, or '@' -for automatic ordinal allocation (Win32 only). -.PP -.I flags -is a series of optional flags, preceded by a '-' character. The -supported flags are: -.RS -.TP -.B -norelay -The entry point is not displayed in relay debugging traces (Win32 -only). -.TP -.B -noname -The entry point will be imported by ordinal instead of by name. -.TP -.B -ret16 -The function returns a 16-bit value (Win16 only). -.TP -.B -ret64 -The function returns a 64-bit value (Win32 only). -.TP -.B -i386 -The entry point is only available on i386 platforms. -.TP -.B -register -The function uses CPU register to pass arguments. -.TP -.B -private -The function cannot be imported from other dlls, it can only be -accessed through GetProcAddress. -.SS "Function ordinals" -Syntax: -.br -.I ordinal functype -.RI [ flags ]\ exportname \ \fB(\fR\ [ args... ] \ \fB) \ [ handler ] -.br - -This declaration defines a function entry point. The prototype defined by -.IR exportname \ \fB(\fR\ [ args... ] \ \fB) -specifies the name available for dynamic linking and the format of the -arguments. '@' can be used instead of -.I exportname -for ordinal-only exports. -.PP -.I functype -should be one of: -.RS -.TP -.B stdcall -for a normal Win32 function -.TP -.B pascal -for a normal Win16 function -.TP -.B cdecl -for a Win16 or Win32 function using the C calling convention -.TP -.B varargs -for a Win16 or Win32 function using the C calling convention with a -variable number of arguments -.RE -.PP -.I args -should be one or several of: -.RS -.TP -.B word -(16-bit unsigned value) -.TP -.B s_word -(16-bit signed word) -.TP -.B long -(32-bit value) -.TP -.B double -(64-bit value) -.TP -.B ptr -(linear pointer) -.TP -.B str -(linear pointer to a null-terminated ASCII string) -.TP -.B wstr -(linear pointer to a null-terminated Unicode string) -.TP -.B segptr -(segmented pointer) -.TP -.B segstr -(segmented pointer to a null-terminated ASCII string). -.HP -.RB Only\ ptr ,\ str ,\ wstr ,\ long\ and\ double -are valid for Win32 functions. -.RE -.PP -.I handler -is the name of the actual C function that will implement that entry -point in 32-bit mode. The handler can also be specified as -.IB dllname . function -to define a forwarded function (one whose implementation is in another -dll). If -.I handler -is not specified, it is assumed to be identical to -.I exportname. -.PP -This first example defines an entry point for the 32-bit GetFocus() -call: -.IP -@ stdcall GetFocus() GetFocus -.PP -This second example defines an entry point for the 16-bit -CreateWindow() call (the ordinal 100 is just an example); it also -shows how long lines can be split using a backslash: -.IP -100 pascal CreateWindow(ptr ptr long s_word s_word s_word \\ - s_word word word word ptr) WIN_CreateWindow -.PP -To declare a function using a variable number of arguments, specify -the function as -.B varargs -and declare it in the C file with a '...' parameter for a Win32 -function, or with an extra VA_LIST16 argument for a Win16 function. -See the wsprintf* functions in user.exe.spec and user32.spec for an -example. -.SS "Variable ordinals" -Syntax: -.br -.IB ordinal\ variable -.RI [ flags ]\ exportname \ \fB(\fR\ [ data... ] \ \fB) -.PP -This declaration defines data storage as 32-bit words at the ordinal -specified. -.I exportname -will be the name available for dynamic -linking. -.I data -can be a decimal number or a hex number preceeded by "0x". The -following example defines the variable VariableA at ordinal 2 and -containing 4 ints: -.IP -2 variable VariableA(-1 0xff 0 0) -.PP -This declaration only works in Win16 spec files. In Win32 you should -use -.B extern -instead (see below). -.SS "Extern ordinals" -Syntax: -.br -.IB ordinal\ extern -.RI [ flags ]\ exportname \ [ symbolname ] -.PP -This declaration defines an entry that simply maps to a C symbol -(variable or function). It only works in Win32 spec files. -.I exportname -will point to the symbol -.I symbolname -that must be defined in the C code. Alternatively, it can be of the -form -.IB dllname . symbolname -to define a forwarded symbol (one whose implementation is in another -dll). If -.I symbolname -is not specified, it is assumed to be identical to -.I exportname. -.SS "Stub ordinals" -Syntax: -.br -.IB ordinal\ stub -.RI [ flags ]\ exportname -.PP -This declaration defines a stub function. It makes the name and -ordinal available for dynamic linking, but will terminate execution -with an error message if the function is ever called. -.SS "Equate ordinals" -Syntax: -.br -.IB ordinal\ equate -.RI [ flags ]\ exportname\ data -.PP -This declaration defines an ordinal as an absolute value. -.I exportname -will be the name available for dynamic linking. -.I data -can be a decimal number or a hex number preceeded by "0x". -.SH AUTHORS -.B winebuild -has been worked on by many people over the years. The main authors are -Robert J. Amstadt, Alexandre Julliard, Martin von Loewis, Ulrich -Weigand and Eric Youngdale. Many other Wine developers have -contributed, please check the file Changelog in the Wine distribution -for the complete details. -.SH BUGS -It is not yet possible to use a PE-format dll in an import -specification; only Wine dlls can be imported. -.PP -If you find a bug, please submit a bug report at -.UR http://bugs.winehq.org -.B http://bugs.winehq.org. -.UE -.SH AVAILABILITY -.B winebuild -is part of the wine distribution, which is available through WineHQ, -the -.B wine -development headquarters, at -.UR http://www.winehq.org/ -.B http://www.winehq.org/. -.UE -.SH "SEE ALSO" -.BR wine (1), -.BR wrc (1). diff --git a/reactos/tools/winebuild/winehq2ros.patch b/reactos/tools/winebuild/winehq2ros.patch deleted file mode 100644 index 95695c9d8a4..00000000000 --- a/reactos/tools/winebuild/winehq2ros.patch +++ /dev/null @@ -1,332 +0,0 @@ ---- build.h Thu Mar 25 07:35:37 2004 -+++ build.h Sun Dec 26 19:03:46 2004 -@@ -185,6 +185,7 @@ - extern void BuildSpec32File( FILE *outfile, DLLSPEC *spec ); - extern void BuildDef32File( FILE *outfile, DLLSPEC *spec ); - extern void BuildDebugFile( FILE *outfile, const char *srcdir, char **argv ); -+extern void BuildPedllFile( FILE *outfile, DLLSPEC *spec ); - - extern int parse_spec_file( FILE *file, DLLSPEC *spec ); - extern int parse_def_file( FILE *file, DLLSPEC *spec ); ---- import.c Thu Jul 29 07:35:19 2004 -+++ import.c Sun Dec 26 19:05:00 2004 -@@ -20,7 +20,6 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - #include -@@ -31,8 +30,7 @@ - # include - #endif - --#include "windef.h" --#include "winbase.h" -+#include "winglue.h" - #include "build.h" - - struct import ---- main.c Thu Mar 25 07:35:37 2004 -+++ main.c Sun Dec 26 19:05:06 2004 -@@ -23,7 +23,6 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - #include -@@ -35,8 +34,7 @@ - # include - #endif - --#include "windef.h" --#include "winbase.h" -+#include "winglue.h" - #include "build.h" - - int UsePIC = 0; -@@ -74,7 +72,8 @@ - MODE_DEF, - MODE_DEBUG, - MODE_RELAY16, -- MODE_RELAY32 -+ MODE_RELAY32, -+ MODE_PEDLL - }; - - static enum exec_mode_values exec_mode = MODE_NONE; -@@ -159,7 +158,8 @@ - " --exe=NAME Build a .c file for the named executable\n" - " --debug [FILES] Build a .c file with the debug channels declarations\n" - " --relay16 Build the 16-bit relay assembly routines\n" --" --relay32 Build the 32-bit relay assembly routines\n\n" -+" --relay32 Build the 32-bit relay assembly routines\n" -+" --pedll Build a .c file for PE dll\n\n" - "The mode options are mutually exclusive; you must specify one and only one.\n\n"; - - enum long_options_values -@@ -171,7 +171,8 @@ - LONG_OPT_RELAY16, - LONG_OPT_RELAY32, - LONG_OPT_SUBSYSTEM, -- LONG_OPT_VERSION -+ LONG_OPT_VERSION, -+ LONG_OPT_PEDLL - }; - - static const char short_options[] = "C:D:F:H:I:K:L:M:N:d:e:f:hi:kl:m:o:r:w"; -@@ -186,6 +187,7 @@ - { "relay32", 0, 0, LONG_OPT_RELAY32 }, - { "subsystem",1, 0, LONG_OPT_SUBSYSTEM }, - { "version", 0, 0, LONG_OPT_VERSION }, -+ { "pedll", 1, 0, LONG_OPT_PEDLL }, - /* aliases for short options */ - { "source-dir", 1, 0, 'C' }, - { "delay-lib", 1, 0, 'd' }, -@@ -341,6 +343,11 @@ - case LONG_OPT_VERSION: - printf( "winebuild version " PACKAGE_VERSION "\n" ); - exit(0); -+ case LONG_OPT_PEDLL: -+ set_exec_mode( MODE_PEDLL ); -+ spec_file_name = xstrdup( optarg ); -+ set_dll_file_name( optarg, spec ); -+ break; - case '?': - usage(1); - break; -@@ -412,9 +419,7 @@ - switch (spec->type) - { - case SPEC_WIN16: -- if (argv[0]) -- fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] ); -- BuildSpec16File( output_file, spec ); -+ fatal_error( "Win16 specs are not supported in ReactOS version of winebuild\n" ); - break; - case SPEC_WIN32: - read_undef_symbols( argv ); -@@ -439,12 +444,15 @@ - BuildDebugFile( output_file, current_src_dir, argv ); - break; - case MODE_RELAY16: -- if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] ); -- BuildRelays16( output_file ); -+ fatal_error( "Win16 relays are not supported in ReactOS version of winebuild\n" ); - break; - case MODE_RELAY32: -+ fatal_error( "Win32 relays are not supported in ReactOS version of winebuild\n" ); -+ break; -+ case MODE_PEDLL: - if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] ); -- BuildRelays32( output_file ); -+ if (!parse_input_file( spec )) break; -+ BuildPedllFile( output_file, spec ); - break; - default: - usage(1); ---- parser.c Sat Aug 28 07:35:50 2004 -+++ parser.c Sun Dec 26 19:05:14 2004 -@@ -23,7 +23,6 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - #include -@@ -32,8 +31,7 @@ - #include - #include - --#include "windef.h" --#include "winbase.h" -+#include "winglue.h" - #include "build.h" - - int current_line = 0; ---- relay.c Wed May 19 07:35:43 2004 -+++ relay.c Sun Dec 26 19:04:48 2004 -@@ -23,7 +23,6 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - ---- res16.c Thu Feb 12 06:50:19 2004 -+++ res16.c Sun Dec 26 19:05:20 2004 -@@ -19,7 +19,6 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - #include -@@ -37,8 +36,7 @@ - #include - #endif - --#include "windef.h" --#include "winbase.h" -+#include "winglue.h" - #include "build.h" - - #define ALIGNMENT 2 /* alignment for resource data */ ---- res32.c Wed Sep 8 07:35:21 2004 -+++ res32.c Sun Dec 26 19:05:26 2004 -@@ -19,7 +19,6 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - #include -@@ -37,8 +36,7 @@ - #include - #endif - --#include "windef.h" --#include "winbase.h" -+#include "winglue.h" - #include "build.h" - - /* Unicode string or integer id */ ---- spec16.c Wed May 19 07:35:43 2004 -+++ spec16.c Sun Dec 26 19:04:48 2004 -@@ -23,7 +23,6 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - #include ---- spec32.c Fri Jul 16 07:35:18 2004 -+++ spec32.c Sun Dec 26 19:05:36 2004 -@@ -23,16 +23,17 @@ - */ - - #include "config.h" --#include "wine/port.h" - - #include - #include - #include - #include - --#include "windef.h" --#include "winbase.h" --#include "wine/exception.h" -+#include "winglue.h" -+ -+#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */ -+#define EH_NONCONTINUABLE 0x01 -+ - #include "build.h" - - -@@ -845,12 +846,10 @@ - int is_data = 0; - - if (!odp) continue; -- if (odp->flags & FLAG_REGISTER) continue; -- if (odp->type == TYPE_STUB) continue; -- - if (odp->name) name = odp->name; -+ else if (odp->type == TYPE_STUB) name = make_internal_name( odp, spec, "stub" ); - else if (odp->export_name) name = odp->export_name; -- else continue; -+ else name = make_internal_name( odp, spec, "noname_export" ); - - fprintf(outfile, " %s", name); - -@@ -880,13 +879,42 @@ - } - break; - } -+ case TYPE_STUB: -+ { -+ if (!kill_at) -+ { -+ const char *check = name + strlen(name); -+ while (name != check && -+ '0' <= check[-1] && check[-1] <= '9') -+ { -+ check--; -+ } -+ if (name != check && check != name + strlen(name) && -+ '@' == check[-1]) -+ { -+ fprintf(outfile, "%s", check - 1); -+ } -+ } -+ if (NULL != odp->name) -+ { -+ fprintf(outfile, "=%s", make_internal_name( odp, spec, "stub" )); -+ } -+ break; -+ } - default: - assert(0); - } - fprintf( outfile, " @%d", odp->ordinal ); -+#if 0 /* MinGW binutils cannot handle this correctly */ - if (!odp->name) fprintf( outfile, " NONAME" ); -+#else -+ if (!odp->name && (odp->type == TYPE_STUB || odp->export_name)) fprintf( outfile, " NONAME" ); -+#endif - if (is_data) fprintf( outfile, " DATA" ); -+#if 0 -+ /* MinGW binutils cannot handle this correctly */ - if (odp->flags & FLAG_PRIVATE) fprintf( outfile, " PRIVATE" ); -+#endif - fprintf( outfile, "\n" ); - } - } -@@ -984,4 +1012,25 @@ - "}\n", prefix ); - - free( prefix ); -+} -+ -+ -+/******************************************************************* -+ * BuildPedllFile -+ * -+ * Build a PE DLL C file from a spec file. -+ */ -+void BuildPedllFile( FILE *outfile, DLLSPEC *spec ) -+{ -+ int nr_exports; -+ -+ nr_exports = spec->base <= spec->limit ? spec->limit - spec->base + 1 : 0; -+ output_standard_file_header( outfile ); -+ -+ if (nr_exports) -+ { -+ /* Output the stub functions */ -+ -+ output_stub_funcs( outfile, spec ); -+ } - } ---- winebuild/utils.c Thu Mar 25 07:35:37 2004 -+++ winebuild/utils.c Sun Dec 26 19:04:48 2004 -@@ -19,7 +19,10 @@ - */ - - #include "config.h" --#include "wine/port.h" -+ -+#if !defined(WIN32) -+#undef strdup -+#endif - - #include - #include diff --git a/reactos/tools/winebuild/winglue.h b/reactos/tools/winebuild/winglue.h deleted file mode 100644 index ecbb4f86588..00000000000 --- a/reactos/tools/winebuild/winglue.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _WINGLUE_H -#define _WINGLUE_H - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned short WCHAR; - -#define LOBYTE(w) ((BYTE)(w)) -#define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF)) - -#define DLL_PROCESS_ATTACH 1 -#define DLL_PROCESS_DETACH 0 - -#define IMAGE_FILE_DLL 8192 -#define IMAGE_SUBSYSTEM_NATIVE 1 -#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 -#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 -#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 -#define IMAGE_FILE_MACHINE_I386 332 -#define IMAGE_NT_SIGNATURE 0x00004550 -#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b - -#ifndef max -#define max(a,b) ((a)>(b)?(a):(b)) -#endif -#ifndef min -#define min(a,b) ((a)<(b)?(a):(b)) -#endif - -#endif /* _WINGLUE_H */ From 36e7b406b5425598a1e10b04f1e9582707c4acde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 14 Feb 2005 18:39:15 +0000 Subject: [PATCH 053/248] Sync to Wine-20050211 svn path=/trunk/; revision=13573 --- reactos/tools/winebuild/Makefile | 43 + reactos/tools/winebuild/Makefile.in | 42 + reactos/tools/winebuild/build.h | 213 ++++ reactos/tools/winebuild/import.c | 1105 ++++++++++++++++++++ reactos/tools/winebuild/main.c | 495 +++++++++ reactos/tools/winebuild/mkstemps.c | 138 +++ reactos/tools/winebuild/parser.c | 1001 ++++++++++++++++++ reactos/tools/winebuild/relay.c | 1208 ++++++++++++++++++++++ reactos/tools/winebuild/res16.c | 360 +++++++ reactos/tools/winebuild/res32.c | 489 +++++++++ reactos/tools/winebuild/spec16.c | 832 +++++++++++++++ reactos/tools/winebuild/spec32.c | 1057 +++++++++++++++++++ reactos/tools/winebuild/utils.c | 415 ++++++++ reactos/tools/winebuild/winebuild.man.in | 434 ++++++++ reactos/tools/winebuild/winglue.h | 31 + 15 files changed, 7863 insertions(+) create mode 100644 reactos/tools/winebuild/Makefile create mode 100644 reactos/tools/winebuild/Makefile.in create mode 100644 reactos/tools/winebuild/build.h create mode 100644 reactos/tools/winebuild/import.c create mode 100644 reactos/tools/winebuild/main.c create mode 100644 reactos/tools/winebuild/mkstemps.c create mode 100644 reactos/tools/winebuild/parser.c create mode 100644 reactos/tools/winebuild/relay.c create mode 100644 reactos/tools/winebuild/res16.c create mode 100644 reactos/tools/winebuild/res32.c create mode 100644 reactos/tools/winebuild/spec16.c create mode 100644 reactos/tools/winebuild/spec32.c create mode 100644 reactos/tools/winebuild/utils.c create mode 100644 reactos/tools/winebuild/winebuild.man.in create mode 100644 reactos/tools/winebuild/winglue.h diff --git a/reactos/tools/winebuild/Makefile b/reactos/tools/winebuild/Makefile new file mode 100644 index 00000000000..925892a46bc --- /dev/null +++ b/reactos/tools/winebuild/Makefile @@ -0,0 +1,43 @@ +# +# winebuild +# +PATH_TO_TOP = ../.. + +include $(PATH_TO_TOP)/rules.mak + +TARGET = winebuild$(EXE_POSTFIX) + +all: $(TARGET) + +# relay.o spec16.o +OBJECTS = \ + import.o \ + main.o \ + parser.o \ + res16.o \ + res32.o \ + spec32.o \ + utils.o \ + mkstemps.o + +CLEAN_FILES = *.o $(TARGET) + +HOST_CFLAGS = -D__USE_W32API -I$(PATH_TO_TOP)/include/wine + +%.o: %.c + $(HOST_CC) $(HOST_CFLAGS) -c $< -o $@ + +$(TARGET): $(OBJECTS) + $(HOST_CC) $(OBJECTS) -o $(TARGET) + +ifeq ($(HOST),mingw32-linux) +clean: + rm -f $(CLEAN_FILES) +endif +ifneq ($(HOST),mingw32-linux) +clean: + del $(CLEAN_FILES) +endif + +.PHONY: clean + diff --git a/reactos/tools/winebuild/Makefile.in b/reactos/tools/winebuild/Makefile.in new file mode 100644 index 00000000000..39dd8c840a0 --- /dev/null +++ b/reactos/tools/winebuild/Makefile.in @@ -0,0 +1,42 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +EXEEXT = @EXEEXT@ + +PROGRAMS = winebuild$(EXEEXT) +MODULE = none + +C_SRCS = \ + import.c \ + main.c \ + parser.c \ + relay.c \ + res16.c \ + res32.c \ + spec16.c \ + spec32.c \ + utils.c + +all: $(PROGRAMS) winebuild.man + +@MAKE_RULES@ + +winebuild$(EXEEXT): $(OBJS) + $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBPORT) $(LDFLAGS) + +winebuild.man: winebuild.man.in + sed -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' $(SRCDIR)/winebuild.man.in >$@ || ($(RM) $@ && false) + +install:: $(PROGRAMS) winebuild.man + $(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext) + $(INSTALL_PROGRAM) winebuild$(EXEEXT) $(bindir)/winebuild$(EXEEXT) + $(INSTALL_DATA) winebuild.man $(mandir)/man$(prog_manext)/winebuild.$(prog_manext) + +uninstall:: + $(RM) $(bindir)/winebuild$(EXEEXT) $(mandir)/man$(prog_manext)/winebuild.$(prog_manext) + +clean:: + $(RM) winebuild.man + +### Dependencies: diff --git a/reactos/tools/winebuild/build.h b/reactos/tools/winebuild/build.h new file mode 100644 index 00000000000..c17c7208202 --- /dev/null +++ b/reactos/tools/winebuild/build.h @@ -0,0 +1,213 @@ +/* + * Copyright 1993 Robert J. Amstadt + * Copyright 1995 Martin von Loewis + * Copyright 1995, 1996, 1997 Alexandre Julliard + * Copyright 1997 Eric Youngdale + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WINE_BUILD_H +#define __WINE_BUILD_H + +#ifndef __WINE_CONFIG_H +# error You must include config.h to use this header +#endif + +#include +#include +#include + +typedef enum +{ + TYPE_VARIABLE, /* variable */ + TYPE_PASCAL, /* pascal function (Win16) */ + TYPE_ABS, /* absolute value (Win16) */ + TYPE_STUB, /* unimplemented stub */ + TYPE_STDCALL, /* stdcall function (Win32) */ + TYPE_CDECL, /* cdecl function (Win32) */ + TYPE_VARARGS, /* varargs function (Win32) */ + TYPE_EXTERN, /* external symbol (Win32) */ + TYPE_NBTYPES +} ORD_TYPE; + +typedef enum +{ + SPEC_WIN16, + SPEC_WIN32 +} SPEC_TYPE; + +typedef struct +{ + int n_values; + int *values; +} ORD_VARIABLE; + +typedef struct +{ + char arg_types[21]; +} ORD_FUNCTION; + +typedef struct +{ + int value; +} ORD_ABS; + +typedef struct +{ + ORD_TYPE type; + int ordinal; + int offset; + int lineno; + int flags; + char *name; /* public name of this function */ + char *link_name; /* name of the C symbol to link to */ + char *export_name; /* name exported under for noname exports */ + union + { + ORD_VARIABLE var; + ORD_FUNCTION func; + ORD_ABS abs; + } u; +} ORDDEF; + +typedef struct +{ + char *file_name; /* file name of the dll */ + char *dll_name; /* internal name of the dll */ + char *owner_name; /* name of the 32-bit dll owning this one */ + char *init_func; /* initialization routine */ + SPEC_TYPE type; /* type of dll (Win16/Win32) */ + int base; /* ordinal base */ + int limit; /* ordinal limit */ + int stack_size; /* exe stack size */ + int heap_size; /* exe heap size */ + int nb_entry_points; /* number of used entry points */ + int alloc_entry_points; /* number of allocated entry points */ + int nb_names; /* number of entry points with names */ + int nb_resources; /* number of resources */ + int characteristics; /* characteristics for the PE header */ + int subsystem; /* subsystem id */ + int subsystem_major; /* subsystem version major number */ + int subsystem_minor; /* subsystem version minor number */ + ORDDEF *entry_points; /* dll entry points */ + ORDDEF **names; /* array of entry point names (points into entry_points) */ + ORDDEF **ordinals; /* array of dll ordinals (points into entry_points) */ + struct resource *resources; /* array of dll resources (format differs between Win16/Win32) */ +} DLLSPEC; + +/* entry point flags */ +#define FLAG_NORELAY 0x01 /* don't use relay debugging for this function */ +#define FLAG_NONAME 0x02 /* don't import function by name */ +#define FLAG_RET16 0x04 /* function returns a 16-bit value */ +#define FLAG_RET64 0x08 /* function returns a 64-bit value */ +#define FLAG_I386 0x10 /* function is i386 only */ +#define FLAG_REGISTER 0x20 /* use register calling convention */ +#define FLAG_PRIVATE 0x40 /* function is private (cannot be imported) */ + +#define FLAG_FORWARD 0x80 /* function is a forwarded name */ + + /* Offset of a structure field relative to the start of the struct */ +#define STRUCTOFFSET(type,field) ((int)&((type *)0)->field) + + /* Offset of register relative to the start of the CONTEXT struct */ +#define CONTEXTOFFSET(reg) STRUCTOFFSET(CONTEXT86,reg) + + /* Offset of register relative to the start of the STACK16FRAME struct */ +#define STACK16OFFSET(reg) STRUCTOFFSET(STACK16FRAME,reg) + + /* Offset of register relative to the start of the STACK32FRAME struct */ +#define STACK32OFFSET(reg) STRUCTOFFSET(STACK32FRAME,reg) + + /* Offset of the stack pointer relative to %fs:(0) */ +#define STACKOFFSET (STRUCTOFFSET(TEB,cur_stack)) + + +#define MAX_ORDINALS 65535 + +/* global functions */ + +#ifndef __GNUC__ +#define __attribute__(X) +#endif + +extern void *xmalloc (size_t size); +extern void *xrealloc (void *ptr, size_t size); +extern char *xstrdup( const char *str ); +extern char *strupper(char *s); +extern void fatal_error( const char *msg, ... ) + __attribute__ ((__format__ (__printf__, 1, 2))); +extern void fatal_perror( const char *msg, ... ) + __attribute__ ((__format__ (__printf__, 1, 2))); +extern void error( const char *msg, ... ) + __attribute__ ((__format__ (__printf__, 1, 2))); +extern void warning( const char *msg, ... ) + __attribute__ ((__format__ (__printf__, 1, 2))); +extern void output_standard_file_header( FILE *outfile ); +extern FILE *open_input_file( const char *srcdir, const char *name ); +extern void close_input_file( FILE *file ); +extern void dump_bytes( FILE *outfile, const unsigned char *data, int len, + const char *label, int constant ); +extern int remove_stdcall_decoration( char *name ); +extern DLLSPEC *alloc_dll_spec(void); +extern void free_dll_spec( DLLSPEC *spec ); +extern const char *make_c_identifier( const char *str ); +extern int get_alignment(int alignBoundary); + +extern void add_import_dll( const char *name, int delay ); +extern void add_ignore_symbol( const char *name ); +extern void read_undef_symbols( char **argv ); +extern int resolve_imports( DLLSPEC *spec ); +extern int output_imports( FILE *outfile, DLLSPEC *spec ); +extern int load_res32_file( const char *name, DLLSPEC *spec ); +extern void output_resources( FILE *outfile, DLLSPEC *spec ); +extern void load_res16_file( const char *name, DLLSPEC *spec ); +extern int output_res16_data( FILE *outfile, DLLSPEC *spec ); +extern int output_res16_directory( unsigned char *buffer, DLLSPEC *spec ); +extern void output_dll_init( FILE *outfile, const char *constructor, const char *destructor ); + +extern void BuildRelays16( FILE *outfile ); +extern void BuildRelays32( FILE *outfile ); +extern void BuildSpec16File( FILE *outfile, DLLSPEC *spec ); +extern void BuildSpec32File( FILE *outfile, DLLSPEC *spec ); +extern void BuildDef32File( FILE *outfile, DLLSPEC *spec ); +extern void BuildDebugFile( FILE *outfile, const char *srcdir, char **argv ); +extern void BuildPedllFile( FILE *outfile, DLLSPEC *spec ); + +extern int parse_spec_file( FILE *file, DLLSPEC *spec ); +extern int parse_def_file( FILE *file, DLLSPEC *spec ); +extern int parse_debug_channels( const char *srcdir, const char *filename ); + +/* global variables */ + +extern int current_line; +extern int UsePIC; +extern int debugging; +extern int nb_debug_channels; +extern int nb_lib_paths; +extern int nb_errors; +extern int display_warnings; +extern int kill_at; + +extern char *input_file_name; +extern const char *output_file_name; +extern char **debug_channels; +extern char **lib_path; + +extern char *ld_command; +extern char *nm_command; + +#endif /* __WINE_BUILD_H */ diff --git a/reactos/tools/winebuild/import.c b/reactos/tools/winebuild/import.c new file mode 100644 index 00000000000..aa655375e95 --- /dev/null +++ b/reactos/tools/winebuild/import.c @@ -0,0 +1,1105 @@ +/* + * DLL imports support + * + * Copyright 2000, 2004 Alexandre Julliard + * Copyright 2000 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif + +#include "winglue.h" +#include "build.h" + +struct import +{ + DLLSPEC *spec; /* description of the imported dll */ + int delay; /* delay or not dll loading ? */ + ORDDEF **exports; /* functions exported from this dll */ + int nb_exports; /* number of exported functions */ + ORDDEF **imports; /* functions we want to import from this dll */ + int nb_imports; /* number of imported functions */ +}; + +static char **undef_symbols; /* list of undefined symbols */ +static int nb_undef_symbols = -1; +static int undef_size; + +static char **ignore_symbols; /* list of symbols to ignore */ +static int nb_ignore_symbols; +static int ignore_size; + +static char *ld_tmp_file; /* ld temp file name */ + +static struct import **dll_imports = NULL; +static int nb_imports = 0; /* number of imported dlls (delayed or not) */ +static int nb_delayed = 0; /* number of delayed dlls */ +static int total_imports = 0; /* total number of imported functions */ +static int total_delayed = 0; /* total number of imported functions in delayed DLLs */ + +/* list of symbols that are ignored by default */ +static const char * const default_ignored_symbols[] = +{ + "abs", + "acos", + "asin", + "atan", + "atan2", + "atof", + "atoi", + "atol", + "bsearch", + "ceil", + "cos", + "cosh", + "exp", + "fabs", + "floor", + "fmod", + "frexp", + "labs", + "log", + "log10", + "memchr", + "memcmp", + "memcpy", + "memmove", + "memset", + "modf", + "pow", + "qsort", + "sin", + "sinh", + "sqrt", + "strcat", + "strchr", + "strcmp", + "strcpy", + "strcspn", + "strlen", + "strncat", + "strncmp", + "strncpy", + "strpbrk", + "strrchr", + "strspn", + "strstr", + "tan", + "tanh" +}; + +#ifdef __powerpc__ +# ifdef __APPLE__ +# define ppc_high(mem) "ha16(" mem ")" +# define ppc_low(mem) "lo16(" mem ")" +static const char * const ppc_reg[32] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10","r11","r12","r13","r14","r15", + "r16","r17","r18","r19","r20","r21","r22","r23", + "r24","r25","r26","r27","r28","r29","r30","r31" }; +# else /* __APPLE__ */ +# define ppc_high(mem) "(" mem ")@hi" +# define ppc_low(mem) "(" mem ")@l" +static const char * const ppc_reg[32] = { "0", "1", "2", "3", "4", "5", "6", "7", + "8", "9", "10","11","12","13","14","15", + "16","17","18","19","20","21","22","23", + "24","25","26","27","28","29","30","31" }; +# endif /* __APPLE__ */ +#endif /* __powerpc__ */ + +/* compare function names; helper for resolve_imports */ +static int name_cmp( const void *name, const void *entry ) +{ + return strcmp( *(const char* const *)name, *(const char* const *)entry ); +} + +/* compare function names; helper for resolve_imports */ +static int func_cmp( const void *func1, const void *func2 ) +{ + const ORDDEF *odp1 = *(const ORDDEF * const *)func1; + const ORDDEF *odp2 = *(const ORDDEF * const *)func2; + return strcmp( odp1->name ? odp1->name : odp1->export_name, + odp2->name ? odp2->name : odp2->export_name ); +} + +/* locate a symbol in a (sorted) list */ +inline static const char *find_symbol( const char *name, char **table, int size ) +{ + char **res = NULL; + + if (table) { + res = bsearch( &name, table, size, sizeof(*table), name_cmp ); + } + + return res ? *res : NULL; +} + +/* locate an export in a (sorted) export list */ +inline static ORDDEF *find_export( const char *name, ORDDEF **table, int size ) +{ + ORDDEF func, *odp, **res = NULL; + + func.name = (char *)name; + func.ordinal = -1; + odp = &func; + if (table) res = bsearch( &odp, table, size, sizeof(*table), func_cmp ); + return res ? *res : NULL; +} + +/* sort a symbol table */ +inline static void sort_symbols( char **table, int size ) +{ + if (table ) + qsort( table, size, sizeof(*table), name_cmp ); +} + +inline static void output_function_size( FILE *outfile, const char *name ) +{ +#ifdef HAVE_ASM_DOT_SIZE + fprintf( outfile, " \"\\t.size " __ASM_NAME("%s") ", . - " __ASM_NAME("%s") "\\n\"\n", name, name); +#endif +} + +/* free an import structure */ +static void free_imports( struct import *imp ) +{ + free( imp->exports ); + free( imp->imports ); + free_dll_spec( imp->spec ); + free( imp ); +} + +/* remove the temp file at exit */ +static void remove_ld_tmp_file(void) +{ + if (ld_tmp_file) unlink( ld_tmp_file ); +} + +/* check whether a given dll has already been imported */ +static int is_already_imported( const char *name ) +{ + int i; + + for (i = 0; i < nb_imports; i++) + { + if (!strcmp( dll_imports[i]->spec->file_name, name )) return 1; + } + return 0; +} + +/* open the .so library for a given dll in a specified path */ +static char *try_library_path( const char *path, const char *name ) +{ + char *buffer; + int fd; + + buffer = xmalloc( strlen(path) + strlen(name) + 9 ); + sprintf( buffer, "%s/lib%s.def", path, name ); + + /* check if the file exists */ + if ((fd = open( buffer, O_RDONLY )) != -1) + { + close( fd ); + return buffer; + } + free( buffer ); + return NULL; +} + +/* open the .so library for a given dll */ +static char *open_library( const char *name ) +{ + char *fullname; + int i; + + for (i = 0; i < nb_lib_paths; i++) + { + if ((fullname = try_library_path( lib_path[i], name ))) return fullname; + } + fatal_error( "could not open .def file for %s\n", name ); + return NULL; +} + +/* read in the list of exported symbols of an import library */ +static int read_import_lib( const char *name, struct import *imp ) +{ + FILE *f; + char *fullname; + int i, ret; + DLLSPEC *spec = imp->spec; + + imp->exports = NULL; + imp->nb_exports = 0; + + fullname = open_library( name ); + f = open_input_file( NULL, fullname ); + free( fullname ); + + ret = parse_def_file( f, spec ); + close_input_file( f ); + if (!ret) return 0; + if (is_already_imported( spec->file_name )) return 0; + + imp->exports = xmalloc( spec->nb_entry_points * sizeof(*imp->exports) ); + + for (i = 0; i < spec->nb_entry_points; i++) + { + ORDDEF *odp = &spec->entry_points[i]; + + if (odp->type != TYPE_STDCALL && odp->type != TYPE_CDECL) continue; + if (odp->flags & FLAG_PRIVATE) continue; + imp->exports[imp->nb_exports++] = odp; + } + imp->exports = xrealloc( imp->exports, imp->nb_exports * sizeof(*imp->exports) ); + if (imp->nb_exports) + qsort( imp->exports, imp->nb_exports, sizeof(*imp->exports), func_cmp ); + return 1; +} + +/* add a dll to the list of imports */ +void add_import_dll( const char *name, int delay ) +{ + struct import *imp; + char *fullname; + + fullname = xmalloc( strlen(name) + 5 ); + strcpy( fullname, name ); + if (!strchr( fullname, '.' )) strcat( fullname, ".dll" ); + + /* check if we already imported it */ + if (is_already_imported( fullname )) + { + free( fullname ); + return; + } + + imp = xmalloc( sizeof(*imp) ); + imp->spec = alloc_dll_spec(); + imp->spec->file_name = fullname; + imp->delay = delay; + imp->imports = NULL; + imp->nb_imports = 0; + if (delay) nb_delayed++; + + if (read_import_lib( name, imp )) + { + dll_imports = xrealloc( dll_imports, (nb_imports+1) * sizeof(*dll_imports) ); + dll_imports[nb_imports++] = imp; + } + else + { + free_imports( imp ); + if (nb_errors) exit(1); + } +} + +/* remove an imported dll, based on its index in the dll_imports array */ +static void remove_import_dll( int index ) +{ + struct import *imp = dll_imports[index]; + + memmove( &dll_imports[index], &dll_imports[index+1], sizeof(imp) * (nb_imports - index - 1) ); + nb_imports--; + if (imp->delay) nb_delayed--; + free_imports( imp ); +} + +/* initialize the list of ignored symbols */ +static void init_ignored_symbols(void) +{ + int i; + + nb_ignore_symbols = sizeof(default_ignored_symbols)/sizeof(default_ignored_symbols[0]); + ignore_size = nb_ignore_symbols + 32; + ignore_symbols = xmalloc( ignore_size * sizeof(*ignore_symbols) ); + for (i = 0; i < nb_ignore_symbols; i++) + ignore_symbols[i] = xstrdup( default_ignored_symbols[i] ); +} + +/* add a symbol to the ignored symbol list */ +/* if the name starts with '-' the symbol is removed instead */ +void add_ignore_symbol( const char *name ) +{ + int i; + + if (!ignore_symbols) init_ignored_symbols(); /* first time around, fill list with defaults */ + + if (name[0] == '-') /* remove it */ + { + if (!name[1]) /* remove everything */ + { + for (i = 0; i < nb_ignore_symbols; i++) free( ignore_symbols[i] ); + nb_ignore_symbols = 0; + } + else + { + for (i = 0; i < nb_ignore_symbols; i++) + { + if (!strcmp( ignore_symbols[i], name+1 )) + { + free( ignore_symbols[i] ); + memmove( &ignore_symbols[i], &ignore_symbols[i+1], nb_ignore_symbols - i - 1 ); + nb_ignore_symbols--; + } + } + } + } + else + { + if (nb_ignore_symbols == ignore_size) + { + ignore_size += 32; + ignore_symbols = xrealloc( ignore_symbols, ignore_size * sizeof(*ignore_symbols) ); + } + ignore_symbols[nb_ignore_symbols++] = xstrdup( name ); + } +} + +/* add a function to the list of imports from a given dll */ +static void add_import_func( struct import *imp, ORDDEF *func ) +{ + imp->imports = xrealloc( imp->imports, (imp->nb_imports+1) * sizeof(*imp->imports) ); + imp->imports[imp->nb_imports++] = func; + total_imports++; + if (imp->delay) total_delayed++; +} + +/* add a symbol to the undef list */ +inline static void add_undef_symbol( const char *name ) +{ + if (nb_undef_symbols == undef_size) + { + undef_size += 128; + undef_symbols = xrealloc( undef_symbols, undef_size * sizeof(*undef_symbols) ); + } + undef_symbols[nb_undef_symbols++] = xstrdup( name ); +} + +/* remove all the holes in the undefined symbol list; return the number of removed symbols */ +static int remove_symbol_holes(void) +{ + int i, off; + for (i = off = 0; i < nb_undef_symbols; i++) + { + if (!undef_symbols[i]) off++; + else undef_symbols[i - off] = undef_symbols[i]; + } + nb_undef_symbols -= off; + return off; +} + +/* add a symbol to the extra list, but only if needed */ +static int add_extra_symbol( const char **extras, int *count, const char *name, const DLLSPEC *spec ) +{ + int i; + + if (!find_symbol( name, undef_symbols, nb_undef_symbols )) + { + /* check if the symbol is being exported by this dll */ + for (i = 0; i < spec->nb_entry_points; i++) + { + ORDDEF *odp = &spec->entry_points[i]; + if (odp->type == TYPE_STDCALL || + odp->type == TYPE_CDECL || + odp->type == TYPE_VARARGS || + odp->type == TYPE_EXTERN) + { + if (odp->name && !strcmp( odp->name, name )) return 0; + } + } + extras[*count] = name; + (*count)++; + } + return 1; +} + +/* add the extra undefined symbols that will be contained in the generated spec file itself */ +static void add_extra_undef_symbols( const DLLSPEC *spec ) +{ + const char *extras[10]; + int i, count = 0, nb_stubs = 0, nb_regs = 0; + int kernel_imports = 0, ntdll_imports = 0; + + sort_symbols( undef_symbols, nb_undef_symbols ); + + for (i = 0; i < spec->nb_entry_points; i++) + { + ORDDEF *odp = &spec->entry_points[i]; + if (odp->type == TYPE_STUB) nb_stubs++; + if (odp->flags & FLAG_REGISTER) nb_regs++; + } + + /* add symbols that will be contained in the spec file itself */ + if (!(spec->characteristics & IMAGE_FILE_DLL)) + { + switch (spec->subsystem) + { + case IMAGE_SUBSYSTEM_WINDOWS_GUI: + case IMAGE_SUBSYSTEM_WINDOWS_CUI: + kernel_imports += add_extra_symbol( extras, &count, "GetCommandLineA", spec ); + kernel_imports += add_extra_symbol( extras, &count, "GetStartupInfoA", spec ); + kernel_imports += add_extra_symbol( extras, &count, "GetModuleHandleA", spec ); + kernel_imports += add_extra_symbol( extras, &count, "ExitProcess", spec ); + break; + } + } + if (nb_delayed) + { + kernel_imports += add_extra_symbol( extras, &count, "LoadLibraryA", spec ); + kernel_imports += add_extra_symbol( extras, &count, "GetProcAddress", spec ); + } + if (nb_regs) + ntdll_imports += add_extra_symbol( extras, &count, "__wine_call_from_32_regs", spec ); + if (nb_delayed || nb_stubs) + ntdll_imports += add_extra_symbol( extras, &count, "RtlRaiseException", spec ); + + /* make sure we import the dlls that contain these functions */ + if (kernel_imports) add_import_dll( "kernel32", 0 ); + if (ntdll_imports) add_import_dll( "ntdll", 0 ); + + if (count) + { + for (i = 0; i < count; i++) add_undef_symbol( extras[i] ); + sort_symbols( undef_symbols, nb_undef_symbols ); + } +} + +/* check if a given imported dll is not needed, taking forwards into account */ +static int check_unused( const struct import* imp, const DLLSPEC *spec ) +{ + int i; + const char *file_name = imp->spec->file_name; + size_t len = strlen( file_name ); + const char *p = strchr( file_name, '.' ); + if (p && !strcasecmp( p, ".dll" )) len = p - file_name; + + for (i = spec->base; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (!odp || !(odp->flags & FLAG_FORWARD)) continue; + if (!strncasecmp( odp->link_name, file_name, len ) && + odp->link_name[len] == '.') + return 0; /* found a forward, it is used */ + } + return 1; +} + +/* combine a list of object files with ld into a single object file */ +/* returns the name of the combined file */ +static const char *ldcombine_files( char **argv ) +{ + int i, len = 0; + char *cmd; + int fd, err; + + if (output_file_name && output_file_name[0]) + { + ld_tmp_file = xmalloc( strlen(output_file_name) + 10 ); + strcpy( ld_tmp_file, output_file_name ); + strcat( ld_tmp_file, ".XXXXXX.o" ); + } + else ld_tmp_file = xstrdup( "/tmp/winebuild.tmp.XXXXXX.o" ); + + if ((fd = mkstemps( ld_tmp_file, 2 ) == -1)) fatal_error( "could not generate a temp file\n" ); + close( fd ); + atexit( remove_ld_tmp_file ); + + for (i = 0; argv[i]; i++) len += strlen(argv[i]) + 1; + cmd = xmalloc( len + strlen(ld_tmp_file) + 8 + strlen(ld_command) ); + sprintf( cmd, "%s -r -o %s", ld_command, ld_tmp_file ); + for (i = 0; argv[i]; i++) sprintf( cmd + strlen(cmd), " %s", argv[i] ); + err = system( cmd ); + if (err) fatal_error( "%s -r failed with status %d\n", ld_command, err ); + free( cmd ); + return ld_tmp_file; +} + +/* read in the list of undefined symbols */ +void read_undef_symbols( char **argv ) +{ + static const char name_prefix[] = __ASM_NAME(""); + static const int prefix_len = sizeof(name_prefix) - 1; + FILE *f; + char *cmd, buffer[1024]; + int err; + const char *name; + + if (!argv[0]) return; + + undef_size = nb_undef_symbols = 0; + + /* if we have multiple object files, link them together */ + if (argv[1]) name = ldcombine_files( argv ); + else name = argv[0]; + + cmd = xmalloc( strlen(nm_command) + strlen(name) + 5 ); + sprintf( cmd, "%s -u %s", nm_command, name ); + if (!(f = popen( cmd, "r" ))) + fatal_error( "Cannot execute '%s'\n", cmd ); + + while (fgets( buffer, sizeof(buffer), f )) + { + char *p = buffer + strlen(buffer) - 1; + if (p < buffer) continue; + if (*p == '\n') *p-- = 0; + p = buffer; + while (*p == ' ') p++; + if (p[0] == 'U' && p[1] == ' ' && p[2]) p += 2; + if (prefix_len && !strncmp( p, name_prefix, prefix_len )) p += prefix_len; + add_undef_symbol( p ); + } + if ((err = pclose( f ))) warning( "%s failed with status %d\n", cmd, err ); + free( cmd ); +} + +static void remove_ignored_symbols(void) +{ + int i; + + if (!ignore_symbols) init_ignored_symbols(); + sort_symbols( ignore_symbols, nb_ignore_symbols ); + for (i = 0; i < nb_undef_symbols; i++) + { + if (find_symbol( undef_symbols[i], ignore_symbols, nb_ignore_symbols )) + { + free( undef_symbols[i] ); + undef_symbols[i] = NULL; + } + } + remove_symbol_holes(); +} + +/* resolve the imports for a Win32 module */ +int resolve_imports( DLLSPEC *spec ) +{ + int i, j; + + if (nb_undef_symbols == -1) return 0; /* no symbol file specified */ + + add_extra_undef_symbols( spec ); + remove_ignored_symbols(); + + for (i = 0; i < nb_imports; i++) + { + struct import *imp = dll_imports[i]; + + for (j = 0; j < nb_undef_symbols; j++) + { + ORDDEF *odp = find_export( undef_symbols[j], imp->exports, imp->nb_exports ); + if (odp) + { + add_import_func( imp, odp ); + free( undef_symbols[j] ); + undef_symbols[j] = NULL; + } + } + /* remove all the holes in the undef symbols list */ + if (!remove_symbol_holes() && check_unused( imp, spec )) + { + /* the dll is not used, get rid of it */ + warning( "%s imported but no symbols used\n", imp->spec->file_name ); + remove_import_dll( i ); + i--; + } + } + return 1; +} + +/* output the import table of a Win32 module */ +static int output_immediate_imports( FILE *outfile ) +{ + int i, j, pos; + int nb_imm = nb_imports - nb_delayed; + static const char import_thunks[] = "__wine_spec_import_thunks"; + + if (!nb_imm) goto done; + + /* main import header */ + + fprintf( outfile, "\nstatic struct {\n" ); + fprintf( outfile, " struct {\n" ); + fprintf( outfile, " void *OriginalFirstThunk;\n" ); + fprintf( outfile, " unsigned int TimeDateStamp;\n" ); + fprintf( outfile, " unsigned int ForwarderChain;\n" ); + fprintf( outfile, " const char *Name;\n" ); + fprintf( outfile, " void *FirstThunk;\n" ); + fprintf( outfile, " } imp[%d];\n", nb_imm+1 ); + fprintf( outfile, " const char *data[%d];\n", + total_imports - total_delayed + nb_imm ); + fprintf( outfile, "} imports = {\n {\n" ); + + /* list of dlls */ + + for (i = j = 0; i < nb_imports; i++) + { + if (dll_imports[i]->delay) continue; + fprintf( outfile, " { 0, 0, 0, \"%s\", &imports.data[%d] },\n", + dll_imports[i]->spec->file_name, j ); + j += dll_imports[i]->nb_imports + 1; + } + + fprintf( outfile, " { 0, 0, 0, 0, 0 },\n" ); + fprintf( outfile, " },\n {\n" ); + + /* list of imported functions */ + + for (i = 0; i < nb_imports; i++) + { + if (dll_imports[i]->delay) continue; + fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); + for (j = 0; j < dll_imports[i]->nb_imports; j++) + { + ORDDEF *odp = dll_imports[i]->imports[j]; + if (!(odp->flags & FLAG_NONAME)) + { + unsigned short ord = odp->ordinal; + fprintf( outfile, " \"\\%03o\\%03o%s\",\n", + *(unsigned char *)&ord, *((unsigned char *)&ord + 1), odp->name ); + } + else + fprintf( outfile, " (char *)%d,\n", odp->ordinal ); + } + fprintf( outfile, " 0,\n" ); + } + fprintf( outfile, " }\n};\n\n" ); + + /* thunks for imported functions */ + + fprintf( outfile, "#ifndef __GNUC__\nstatic void __asm__dummy_import(void) {\n#endif\n\n" ); + pos = (sizeof(void *) + 2*sizeof(unsigned int) + sizeof(const char *) + sizeof(void *)) * + (nb_imm + 1); /* offset of imports.data from start of imports */ + fprintf( outfile, "asm(\".text\\n\\t.align %d\\n\"\n", get_alignment(8) ); + fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", import_thunks); + + for (i = 0; i < nb_imports; i++) + { + if (dll_imports[i]->delay) continue; + for (j = 0; j < dll_imports[i]->nb_imports; j++, pos += sizeof(const char *)) + { + ORDDEF *odp = dll_imports[i]->imports[j]; + const char *name = odp->name ? odp->name : odp->export_name; + fprintf( outfile, " \"\\t" __ASM_FUNC("%s") "\\n\"\n", name ); + fprintf( outfile, " \"\\t.globl " __ASM_NAME("%s") "\\n\"\n", name ); + fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\\t", name); + +#if defined(__i386__) + if (strstr( name, "__wine_call_from_16" )) + fprintf( outfile, ".byte 0x2e\\n\\tjmp *(imports+%d)\\n\\tnop\\n", pos ); + else + fprintf( outfile, "jmp *(imports+%d)\\n\\tmovl %%esi,%%esi\\n", pos ); +#elif defined(__sparc__) + if ( !UsePIC ) + { + fprintf( outfile, "sethi %%hi(imports+%d), %%g1\\n\\t", pos ); + fprintf( outfile, "ld [%%g1+%%lo(imports+%d)], %%g1\\n\\t", pos ); + fprintf( outfile, "jmp %%g1\\n\\tnop\\n" ); + } + else + { + /* Hmpf. Stupid sparc assembler always interprets global variable + names as GOT offsets, so we have to do it the long way ... */ + fprintf( outfile, "save %%sp, -96, %%sp\\n" ); + fprintf( outfile, "0:\\tcall 1f\\n\\tnop\\n" ); + fprintf( outfile, "1:\\tsethi %%hi(imports+%d-0b), %%g1\\n\\t", pos ); + fprintf( outfile, "or %%g1, %%lo(imports+%d-0b), %%g1\\n\\t", pos ); + fprintf( outfile, "ld [%%g1+%%o7], %%g1\\n\\t" ); + fprintf( outfile, "jmp %%g1\\n\\trestore\\n" ); + } + +#elif defined(__powerpc__) + fprintf(outfile, "\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf(outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); + fprintf(outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf(outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); + fprintf(outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf(outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); + + fprintf(outfile, "\t\"\\tlis %s, " ppc_high(__ASM_NAME("imports") "+ %d") "\\n\"\n", ppc_reg[9], pos); + fprintf(outfile, "\t\"\\tla %s, " ppc_low (__ASM_NAME("imports") "+ %d") "(%s)\\n\"\n", ppc_reg[8], pos, ppc_reg[9]); + fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[8]); + fprintf(outfile, "\t\"\\tmtctr %s\\n\"\n", ppc_reg[7]); + + fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); + fprintf(outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); + fprintf(outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf(outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); + fprintf(outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf(outfile, "\t\"\\tbctr\\n"); +#elif defined(__ALPHA__) + fprintf( outfile, "\tlda $0,imports\\n\"\n" ); + fprintf( outfile, "\t\"\\tlda $0,%d($0)\\n\"\n", pos); + fprintf( outfile, "\t\"\\tjmp $31,($0)\\n" ); +#else +#error You need to define import thunks for your architecture! +#endif + fprintf( outfile, "\"\n" ); + output_function_size( outfile, name ); + } + pos += 4; + } + output_function_size( outfile, import_thunks ); + fprintf( outfile, " \".text\");\n#ifndef __GNUC__\n}\n#endif\n\n" ); + + done: + return nb_imm; +} + +/* output the delayed import table of a Win32 module */ +static int output_delayed_imports( FILE *outfile, const DLLSPEC *spec ) +{ + int i, idx, j, pos; + static const char delayed_import_loaders[] = "__wine_spec_delayed_import_loaders"; + static const char delayed_import_thunks[] = "__wine_spec_delayed_import_thunks"; + + if (!nb_delayed) goto done; + + for (i = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; + fprintf( outfile, "static void *__wine_delay_imp_%d_hmod;\n", i); + for (j = 0; j < dll_imports[i]->nb_imports; j++) + { + ORDDEF *odp = dll_imports[i]->imports[j]; + const char *name = odp->name ? odp->name : odp->export_name; + fprintf( outfile, "void __wine_delay_imp_%d_%s();\n", i, name ); + } + } + fprintf( outfile, "\n" ); + fprintf( outfile, "static struct {\n" ); + fprintf( outfile, " struct ImgDelayDescr {\n" ); + fprintf( outfile, " unsigned int grAttrs;\n" ); + fprintf( outfile, " const char *szName;\n" ); + fprintf( outfile, " void **phmod;\n" ); + fprintf( outfile, " void **pIAT;\n" ); + fprintf( outfile, " const char **pINT;\n" ); + fprintf( outfile, " void* pBoundIAT;\n" ); + fprintf( outfile, " void* pUnloadIAT;\n" ); + fprintf( outfile, " unsigned long dwTimeStamp;\n" ); + fprintf( outfile, " } imp[%d];\n", nb_delayed ); + fprintf( outfile, " void *IAT[%d];\n", total_delayed ); + fprintf( outfile, " const char *INT[%d];\n", total_delayed ); + fprintf( outfile, "} delay_imports = {\n" ); + fprintf( outfile, " {\n" ); + for (i = j = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; + fprintf( outfile, " { 0, \"%s\", &__wine_delay_imp_%d_hmod, &delay_imports.IAT[%d], &delay_imports.INT[%d], 0, 0, 0 },\n", + dll_imports[i]->spec->file_name, i, j, j ); + j += dll_imports[i]->nb_imports; + } + fprintf( outfile, " },\n {\n" ); + for (i = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; + fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); + for (j = 0; j < dll_imports[i]->nb_imports; j++) + { + ORDDEF *odp = dll_imports[i]->imports[j]; + const char *name = odp->name ? odp->name : odp->export_name; + fprintf( outfile, " &__wine_delay_imp_%d_%s,\n", i, name ); + } + } + fprintf( outfile, " },\n {\n" ); + for (i = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; + fprintf( outfile, " /* %s */\n", dll_imports[i]->spec->file_name ); + for (j = 0; j < dll_imports[i]->nb_imports; j++) + { + ORDDEF *odp = dll_imports[i]->imports[j]; + if (!odp->name) + fprintf( outfile, " (char *)%d,\n", odp->ordinal ); + else + fprintf( outfile, " \"%s\",\n", odp->name ); + } + } + fprintf( outfile, " }\n};\n\n" ); + + /* check if there's some stub defined. if so, exception struct + * is already defined, so don't emit it twice + */ + for (i = 0; i < spec->nb_entry_points; i++) if (spec->entry_points[i].type == TYPE_STUB) break; + + if (i == spec->nb_entry_points) { + fprintf( outfile, "struct exc_record {\n" ); + fprintf( outfile, " unsigned int code, flags;\n" ); + fprintf( outfile, " void *rec, *addr;\n" ); + fprintf( outfile, " unsigned int params;\n" ); + fprintf( outfile, " const void *info[15];\n" ); + fprintf( outfile, "};\n\n" ); + fprintf( outfile, "extern void __stdcall RtlRaiseException( struct exc_record * );\n" ); + } + + fprintf( outfile, "extern void * __stdcall LoadLibraryA(const char*);\n"); + fprintf( outfile, "extern void * __stdcall GetProcAddress(void *, const char*);\n"); + fprintf( outfile, "\n" ); + + fprintf( outfile, "void *__stdcall __wine_delay_load( int idx_nr )\n" ); + fprintf( outfile, "{\n" ); + fprintf( outfile, " int idx = idx_nr >> 16, nr = idx_nr & 0xffff;\n" ); + fprintf( outfile, " struct ImgDelayDescr *imd = delay_imports.imp + idx;\n" ); + fprintf( outfile, " void **pIAT = imd->pIAT + nr;\n" ); + fprintf( outfile, " const char** pINT = imd->pINT + nr;\n" ); + fprintf( outfile, " void *fn;\n\n" ); + + fprintf( outfile, " if (!*imd->phmod) *imd->phmod = LoadLibraryA(imd->szName);\n" ); + fprintf( outfile, " if (*imd->phmod && (fn = GetProcAddress(*imd->phmod, *pINT)))\n"); + fprintf( outfile, " /* patch IAT with final value */\n" ); + fprintf( outfile, " return *pIAT = fn;\n" ); + fprintf( outfile, " else {\n"); + fprintf( outfile, " struct exc_record rec;\n" ); + fprintf( outfile, " rec.code = 0x80000100;\n" ); + fprintf( outfile, " rec.flags = 1;\n" ); + fprintf( outfile, " rec.rec = 0;\n" ); + fprintf( outfile, " rec.params = 2;\n" ); + fprintf( outfile, " rec.info[0] = imd->szName;\n" ); + fprintf( outfile, " rec.info[1] = *pINT;\n" ); + fprintf( outfile, "#ifdef __GNUC__\n" ); + fprintf( outfile, " rec.addr = __builtin_return_address(1);\n" ); + fprintf( outfile, "#else\n" ); + fprintf( outfile, " rec.addr = 0;\n" ); + fprintf( outfile, "#endif\n" ); + fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n" ); + fprintf( outfile, " return 0; /* shouldn't go here */\n" ); + fprintf( outfile, " }\n}\n\n" ); + + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "static void __asm__dummy_delay_import(void) {\n" ); + fprintf( outfile, "#endif\n" ); + + fprintf( outfile, "asm(\".align %d\\n\"\n", get_alignment(8) ); + fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", delayed_import_loaders); + fprintf( outfile, " \"\\t" __ASM_FUNC("__wine_delay_load_asm") "\\n\"\n" ); + fprintf( outfile, " \"" __ASM_NAME("__wine_delay_load_asm") ":\\n\"\n" ); +#if defined(__i386__) + fprintf( outfile, " \"\\tpushl %%ecx\\n\\tpushl %%edx\\n\\tpushl %%eax\\n\"\n" ); + fprintf( outfile, " \"\\tcall __wine_delay_load\\n\"\n" ); + fprintf( outfile, " \"\\tpopl %%edx\\n\\tpopl %%ecx\\n\\tjmp *%%eax\\n\"\n" ); +#elif defined(__sparc__) + fprintf( outfile, " \"\\tsave %%sp, -96, %%sp\\n\"\n" ); + fprintf( outfile, " \"\\tcall __wine_delay_load\\n\"\n" ); + fprintf( outfile, " \"\\tmov %%g1, %%o0\\n\"\n" ); + fprintf( outfile, " \"\\tjmp %%o0\\n\\trestore\\n\"\n" ); +#elif defined(__powerpc__) +# if defined(__APPLE__) +/* On darwin an extra 56 bytes must be allowed for the linkage area+param area */ +# define extra_stack_storage 56 +# else +# define extra_stack_storage 0 +# endif + /* Save all callee saved registers into a stackframe. */ + fprintf( outfile, " \"\\tstwu %s, -%d(%s)\\n\"\n",ppc_reg[1], 48+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[3], 4+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[4], 8+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[5], 12+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[6], 16+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[7], 20+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[8], 24+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[9], 28+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[10],32+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[11],36+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[12],40+extra_stack_storage, ppc_reg[1]); + + /* r0 -> r3 (arg1) */ + fprintf( outfile, " \"\\tmr %s, %s\\n\"\n", ppc_reg[3], ppc_reg[0]); + + /* save return address */ + fprintf( outfile, " \"\\tmflr %s\\n\"\n", ppc_reg[0]); + fprintf( outfile, " \"\\tstw %s, %d(%s)\\n\"\n", ppc_reg[0], 44+extra_stack_storage, ppc_reg[1]); + + /* Call the __wine_delay_load function, arg1 is arg1. */ + fprintf( outfile, " \"\\tbl " __ASM_NAME("__wine_delay_load") "\\n\"\n"); + + /* Load return value from call into ctr register */ + fprintf( outfile, " \"\\tmtctr %s\\n\"\n", ppc_reg[3]); + + /* restore all saved registers and drop stackframe. */ + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[3], 4+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[4], 8+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[5], 12+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[6], 16+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[7], 20+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[8], 24+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[9], 28+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[10],32+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[11],36+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[12],40+extra_stack_storage, ppc_reg[1]); + + /* Load return value from call into return register */ + fprintf( outfile, " \"\\tlwz %s, %d(%s)\\n\"\n", ppc_reg[0], 44+extra_stack_storage, ppc_reg[1]); + fprintf( outfile, " \"\\tmtlr %s\\n\"\n", ppc_reg[0]); + fprintf( outfile, " \"\\taddi %s, %s, %d\\n\"\n", ppc_reg[1], ppc_reg[1], 48+extra_stack_storage); + + /* branch to ctr register. */ + fprintf( outfile, " \"bctr\\n\"\n"); +#elif defined(__ALPHA__) + fprintf( outfile, " \"\\tjsr $26,__wine_delay_load\\n\"\n" ); + fprintf( outfile, " \"\\tjmp $31,($0)\\n\"\n" ); +#else +#error You need to defined delayed import thunks for your architecture! +#endif + output_function_size( outfile, "__wine_delay_load_asm" ); + + for (i = idx = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; + for (j = 0; j < dll_imports[i]->nb_imports; j++) + { + char buffer[128]; + ORDDEF *odp = dll_imports[i]->imports[j]; + const char *name = odp->name ? odp->name : odp->export_name; + + sprintf( buffer, "__wine_delay_imp_%d_%s", i, name ); + fprintf( outfile, " \"\\t" __ASM_FUNC("%s") "\\n\"\n", buffer ); + fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", buffer ); +#if defined(__i386__) + fprintf( outfile, " \"\\tmovl $%d, %%eax\\n\"\n", (idx << 16) | j ); + fprintf( outfile, " \"\\tjmp __wine_delay_load_asm\\n\"\n" ); +#elif defined(__sparc__) + fprintf( outfile, " \"\\tset %d, %%g1\\n\"\n", (idx << 16) | j ); + fprintf( outfile, " \"\\tb,a __wine_delay_load_asm\\n\"\n" ); +#elif defined(__powerpc__) +#ifdef __APPLE__ + /* On Darwin we can use r0 and r2 */ + /* Upper part in r2 */ + fprintf( outfile, " \"\\tlis %s, %d\\n\"\n", ppc_reg[2], idx); + /* Lower part + r2 -> r0, Note we can't use r0 directly */ + fprintf( outfile, " \"\\taddi %s, %s, %d\\n\"\n", ppc_reg[0], ppc_reg[2], j); + fprintf( outfile, " \"\\tb " __ASM_NAME("__wine_delay_load_asm") "\\n\"\n"); +#else /* __APPLE__ */ + /* On linux we can't use r2 since r2 is not a scratch register (hold the TOC) */ + /* Save r13 on the stack */ + fprintf( outfile, " \"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, " \"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[13], ppc_reg[1]); + /* Upper part in r13 */ + fprintf( outfile, " \"\\tlis %s, %d\\n\"\n", ppc_reg[13], idx); + /* Lower part + r13 -> r0, Note we can't use r0 directly */ + fprintf( outfile, " \"\\taddi %s, %s, %d\\n\"\n", ppc_reg[0], ppc_reg[13], j); + /* Restore r13 */ + fprintf( outfile, " \"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[13], ppc_reg[1]); + fprintf( outfile, " \"\\taddic %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, " \"\\tb " __ASM_NAME("__wine_delay_load_asm") "\\n\"\n"); +#endif /* __APPLE__ */ +#elif defined(__ALPHA__) + fprintf( outfile, " \"\\tlda $0,%d($31)\\n\"\n", j); + fprintf( outfile, " \"\\tldah $0,%d($0)\\n\"\n", idx); + fprintf( outfile, " \"\\tjmp $31,__wine_delay_load_asm\\n\"\n" ); +#else +#error You need to defined delayed import thunks for your architecture! +#endif + output_function_size( outfile, name ); + } + idx++; + } + output_function_size( outfile, delayed_import_loaders ); + + fprintf( outfile, "\n \".align %d\\n\"\n", get_alignment(8) ); + fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\"\n", delayed_import_thunks); + pos = nb_delayed * 32; + for (i = 0; i < nb_imports; i++) + { + if (!dll_imports[i]->delay) continue; + for (j = 0; j < dll_imports[i]->nb_imports; j++, pos += 4) + { + ORDDEF *odp = dll_imports[i]->imports[j]; + const char *name = odp->name ? odp->name : odp->export_name; + + fprintf( outfile, " \"\\t" __ASM_FUNC("%s") "\\n\"\n", name ); + fprintf( outfile, " \"\\t.globl " __ASM_NAME("%s") "\\n\"\n", name ); + fprintf( outfile, " \"" __ASM_NAME("%s") ":\\n\\t\"", name ); +#if defined(__i386__) + if (strstr( name, "__wine_call_from_16" )) + fprintf( outfile, "\".byte 0x2e\\n\\tjmp *(delay_imports+%d)\\n\\tnop\\n\"", pos ); + else + fprintf( outfile, "\"jmp *(delay_imports+%d)\\n\\tmovl %%esi,%%esi\\n\"", pos ); +#elif defined(__sparc__) + if ( !UsePIC ) + { + fprintf( outfile, "\"sethi %%hi(delay_imports+%d), %%g1\\n\\t\"", pos ); + fprintf( outfile, "\"ld [%%g1+%%lo(delay_imports+%d)], %%g1\\n\\t\"", pos ); + fprintf( outfile, "\"jmp %%g1\\n\\tnop\\n\"" ); + } + else + { + /* Hmpf. Stupid sparc assembler always interprets global variable + names as GOT offsets, so we have to do it the long way ... */ + fprintf( outfile, "\"save %%sp, -96, %%sp\\n\"" ); + fprintf( outfile, "\"0:\\tcall 1f\\n\\tnop\\n\"" ); + fprintf( outfile, "\"1:\\tsethi %%hi(delay_imports+%d-0b), %%g1\\n\\t\"", pos ); + fprintf( outfile, "\"or %%g1, %%lo(delay_imports+%d-0b), %%g1\\n\\t\"", pos ); + fprintf( outfile, "\"ld [%%g1+%%o7], %%g1\\n\\t\"" ); + fprintf( outfile, "\"jmp %%g1\\n\\trestore\\n\"" ); + } + +#elif defined(__powerpc__) + fprintf( outfile, "\t\"addi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); + fprintf( outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); + fprintf( outfile, "\t\"\\taddi %s, %s, -0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, "\t\"\\tstw %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); + + fprintf( outfile, "\t\"\\tlis %s, " ppc_high(__ASM_NAME("delay_imports") "+ %d") "\\n\"\n", ppc_reg[9], pos); + fprintf( outfile, "\t\"\\tla %s, " ppc_low (__ASM_NAME("delay_imports") "+ %d") "(%s)\\n\"\n", ppc_reg[8], pos, ppc_reg[9]); + fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[8]); + fprintf( outfile, "\t\"\\tmtctr %s\\n\"\n", ppc_reg[7]); + + fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[7], ppc_reg[1]); + fprintf( outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[8], ppc_reg[1]); + fprintf( outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, "\t\"\\tlwz %s, 0(%s)\\n\"\n", ppc_reg[9], ppc_reg[1]); + fprintf( outfile, "\t\"\\taddi %s, %s, 0x4\\n\"\n", ppc_reg[1], ppc_reg[1]); + fprintf( outfile, "\t\"\\tbctr\\n\""); +#elif defined(__ALPHA__) + fprintf( outfile, "\t\"lda $0,delay_imports\\n\"\n" ); + fprintf( outfile, "\t\"\\tlda $0,%d($0)\\n\"\n", pos); + fprintf( outfile, "\t\"\\tjmp $31,($0)\\n\"" ); +#else +#error You need to define delayed import thunks for your architecture! +#endif + fprintf( outfile, "\n" ); + output_function_size( outfile, name ); + } + } + output_function_size( outfile, delayed_import_thunks ); + fprintf( outfile, ");\n" ); + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "}\n" ); + fprintf( outfile, "#endif\n" ); + fprintf( outfile, "\n" ); + + done: + return nb_delayed; +} + +/* output the import and delayed import tables of a Win32 module + * returns number of DLLs exported in 'immediate' mode + */ +int output_imports( FILE *outfile, DLLSPEC *spec ) +{ + output_delayed_imports( outfile, spec ); + return output_immediate_imports( outfile ); +} diff --git a/reactos/tools/winebuild/main.c b/reactos/tools/winebuild/main.c new file mode 100644 index 00000000000..2071777f741 --- /dev/null +++ b/reactos/tools/winebuild/main.c @@ -0,0 +1,495 @@ +/* + * Main function + * + * Copyright 1993 Robert J. Amstadt + * Copyright 1995 Martin von Loewis + * Copyright 1995, 1996, 1997 Alexandre Julliard + * Copyright 1997 Eric Youngdale + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_GETOPT_H +# include +#endif + +#include "winglue.h" +#include "build.h" + +int UsePIC = 0; +int nb_debug_channels = 0; +int nb_lib_paths = 0; +int nb_errors = 0; +int display_warnings = 0; +int kill_at = 0; + +/* we only support relay debugging on i386 */ +#ifdef __i386__ +int debugging = 1; +#else +int debugging = 0; +#endif + +char **debug_channels = NULL; +char **lib_path = NULL; + +char *input_file_name = NULL; +const char *output_file_name = NULL; + +char *ld_command = "ld"; +char *nm_command = "nm"; + +static FILE *output_file; +static const char *current_src_dir; +static int nb_res_files; +static char **res_files; +static char *spec_file_name; + +/* execution mode */ +enum exec_mode_values +{ + MODE_NONE, + MODE_DLL, + MODE_EXE, + MODE_DEF, + MODE_DEBUG, + MODE_RELAY16, + MODE_RELAY32, + MODE_PEDLL +}; + +static enum exec_mode_values exec_mode = MODE_NONE; + +/* set the dll file name from the input file name */ +static void set_dll_file_name( const char *name, DLLSPEC *spec ) +{ + char *p; + + if (spec->file_name) return; + + if ((p = strrchr( name, '\\' ))) name = p + 1; + if ((p = strrchr( name, '/' ))) name = p + 1; + spec->file_name = xmalloc( strlen(name) + 5 ); + strcpy( spec->file_name, name ); + if ((p = strrchr( spec->file_name, '.' ))) + { + if (!strcmp( p, ".spec" ) || !strcmp( p, ".def" )) *p = 0; + } + if (!strchr( spec->file_name, '.' )) strcat( spec->file_name, ".dll" ); +} + +/* set the dll subsystem */ +static void set_subsystem( const char *subsystem, DLLSPEC *spec ) +{ + char *major, *minor, *str = xstrdup( subsystem ); + + if ((major = strchr( str, ':' ))) *major++ = 0; + if (!strcmp( str, "native" )) spec->subsystem = IMAGE_SUBSYSTEM_NATIVE; + else if (!strcmp( str, "windows" )) spec->subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI; + else if (!strcmp( str, "console" )) spec->subsystem = IMAGE_SUBSYSTEM_WINDOWS_CUI; + else fatal_error( "Invalid subsystem name '%s'\n", subsystem ); + if (major) + { + if ((minor = strchr( major, '.' ))) + { + *minor++ = 0; + spec->subsystem_minor = atoi( minor ); + } + spec->subsystem_major = atoi( major ); + } + free( str ); +} + +/* cleanup on program exit */ +static void cleanup(void) +{ + if (output_file_name) unlink( output_file_name ); +} + +/* clean things up when aborting on a signal */ +static void exit_on_signal( int sig ) +{ + exit(1); /* this will call atexit functions */ +} + +/******************************************************************* + * command-line option handling + */ +static const char usage_str[] = +"Usage: winebuild [OPTIONS] [FILES]\n\n" +"Options:\n" +" -C --source-dir=DIR Look for source files in DIR\n" +" -d --delay-lib=LIB Import the specified library in delayed mode\n" +" -D SYM Ignored for C flags compatibility\n" +" -e --entry=FUNC Set the DLL entry point function (default: DllMain)\n" +" -f FLAGS Compiler flags (only -fPIC is supported)\n" +" -F --filename=DLLFILE Set the DLL filename (default: from input file name)\n" +" -h --help Display this help message\n" +" -H --heap=SIZE Set the heap size for a Win16 dll\n" +" -i --ignore=SYM[,SYM] Ignore specified symbols when resolving imports\n" +" -I DIR Ignored for C flags compatibility\n" +" -k --kill-at Kill stdcall decorations in generated .def files\n" +" -K FLAGS Compiler flags (only -KPIC is supported)\n" +" --ld-cmd=LD Command to use for linking (default: ld)\n" +" -l --library=LIB Import the specified library\n" +" -L --library-path=DIR Look for imports libraries in DIR\n" +" -M --main-module=MODULE Set the name of the main module for a Win16 dll\n" +" --nm-cmd=NM Command to use to get undefined symbols (default: nm)\n" +" -N --dll-name=DLLNAME Set the DLL name (default: from input file name)\n" +" -o --output=NAME Set the output file name (default: stdout)\n" +" -r --res=RSRC.RES Load resources from RSRC.RES\n" +" --subsystem=SUBSYS Set the subsystem (one of native, windows, console)\n" +" --version Print the version and exit\n" +" -w --warnings Turn on warnings\n" +"\nMode options:\n" +" --dll=FILE Build a .c file from a .spec or .def file\n" +" --def=FILE.SPEC Build a .def file from a spec file\n" +" --exe=NAME Build a .c file for the named executable\n" +" --debug [FILES] Build a .c file with the debug channels declarations\n" +" --relay16 Build the 16-bit relay assembly routines\n" +" --relay32 Build the 32-bit relay assembly routines\n" +" --pedll Build a .c file for PE dll\n\n" +"The mode options are mutually exclusive; you must specify one and only one.\n\n"; + +enum long_options_values +{ + LONG_OPT_DLL = 1, + LONG_OPT_DEF, + LONG_OPT_EXE, + LONG_OPT_DEBUG, + LONG_OPT_LDCMD, + LONG_OPT_NMCMD, + LONG_OPT_RELAY16, + LONG_OPT_RELAY32, + LONG_OPT_SUBSYSTEM, + LONG_OPT_VERSION, + LONG_OPT_PEDLL +}; + +static const char short_options[] = "C:D:F:H:I:K:L:M:N:d:e:f:hi:kl:m:o:r:w"; + +static const struct option long_options[] = +{ + { "dll", 1, 0, LONG_OPT_DLL }, + { "def", 1, 0, LONG_OPT_DEF }, + { "exe", 1, 0, LONG_OPT_EXE }, + { "debug", 0, 0, LONG_OPT_DEBUG }, + { "ld-cmd", 1, 0, LONG_OPT_LDCMD }, + { "nm-cmd", 1, 0, LONG_OPT_NMCMD }, + { "relay16", 0, 0, LONG_OPT_RELAY16 }, + { "relay32", 0, 0, LONG_OPT_RELAY32 }, + { "subsystem",1, 0, LONG_OPT_SUBSYSTEM }, + { "version", 0, 0, LONG_OPT_VERSION }, + { "pedll", 1, 0, LONG_OPT_PEDLL }, + /* aliases for short options */ + { "source-dir", 1, 0, 'C' }, + { "delay-lib", 1, 0, 'd' }, + { "entry", 1, 0, 'e' }, + { "filename", 1, 0, 'F' }, + { "help", 0, 0, 'h' }, + { "heap", 1, 0, 'H' }, + { "ignore", 1, 0, 'i' }, + { "kill-at", 0, 0, 'k' }, + { "library", 1, 0, 'l' }, + { "library-path", 1, 0, 'L' }, + { "main-module", 1, 0, 'M' }, + { "dll-name", 1, 0, 'N' }, + { "output", 1, 0, 'o' }, + { "res", 1, 0, 'r' }, + { "warnings", 0, 0, 'w' }, + { NULL, 0, 0, 0 } +}; + +static void usage( int exit_code ) +{ + fprintf( stderr, "%s", usage_str ); + exit( exit_code ); +} + +static void set_exec_mode( enum exec_mode_values mode ) +{ + if (exec_mode != MODE_NONE) usage(1); + exec_mode = mode; +} + +/* parse options from the argv array and remove all the recognized ones */ +static char **parse_options( int argc, char **argv, DLLSPEC *spec ) +{ + char *p; + int optc; + + while ((optc = getopt_long( argc, argv, short_options, long_options, NULL )) != -1) + { + switch(optc) + { + case 'C': + current_src_dir = optarg; + break; + case 'D': + /* ignored */ + break; + case 'F': + spec->file_name = xstrdup( optarg ); + break; + case 'H': + if (!isdigit(optarg[0])) + fatal_error( "Expected number argument with -H option instead of '%s'\n", optarg ); + spec->heap_size = atoi(optarg); + if (spec->heap_size > 65535) + fatal_error( "Invalid heap size %d, maximum is 65535\n", spec->heap_size ); + break; + case 'I': + /* ignored */ + break; + case 'K': + /* ignored, because cc generates correct code. */ + break; + case 'L': + lib_path = xrealloc( lib_path, (nb_lib_paths+1) * sizeof(*lib_path) ); + lib_path[nb_lib_paths++] = xstrdup( optarg ); + break; + case 'M': + spec->owner_name = xstrdup( optarg ); + spec->type = SPEC_WIN16; + break; + case 'N': + spec->dll_name = xstrdup( optarg ); + break; + case 'd': + add_import_dll( optarg, 1 ); + break; + case 'e': + spec->init_func = xstrdup( optarg ); + if ((p = strchr( spec->init_func, '@' ))) *p = 0; /* kill stdcall decoration */ + break; + case 'f': + if (!strcmp( optarg, "PIC") || !strcmp( optarg, "pic")) UsePIC = 1; + /* ignore all other flags */ + break; + case 'h': + usage(0); + break; + case 'i': + { + char *str = xstrdup( optarg ); + char *token = strtok( str, "," ); + while (token) + { + add_ignore_symbol( token ); + token = strtok( NULL, "," ); + } + free( str ); + } + break; + case 'k': + kill_at = 1; + break; + case 'l': + add_import_dll( optarg, 0 ); + break; + case 'o': + if (unlink( optarg ) == -1 && errno != ENOENT) + fatal_error( "Unable to create output file '%s'\n", optarg ); + if (!(output_file = fopen( optarg, "w" ))) + fatal_error( "Unable to create output file '%s'\n", optarg ); + output_file_name = xstrdup(optarg); + atexit( cleanup ); /* make sure we remove the output file on exit */ + break; + case 'r': + res_files = xrealloc( res_files, (nb_res_files+1) * sizeof(*res_files) ); + res_files[nb_res_files++] = xstrdup( optarg ); + break; + case 'w': + display_warnings = 1; + break; + case LONG_OPT_DLL: + set_exec_mode( MODE_DLL ); + spec_file_name = xstrdup( optarg ); + set_dll_file_name( optarg, spec ); + break; + case LONG_OPT_DEF: + set_exec_mode( MODE_DEF ); + spec_file_name = xstrdup( optarg ); + set_dll_file_name( optarg, spec ); + break; + case LONG_OPT_EXE: + set_exec_mode( MODE_EXE ); + if ((p = strrchr( optarg, '/' ))) p++; + else p = optarg; + spec->file_name = xmalloc( strlen(p) + 5 ); + strcpy( spec->file_name, p ); + if (!strchr( spec->file_name, '.' )) strcat( spec->file_name, ".exe" ); + if (!spec->subsystem) spec->subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI; + break; + case LONG_OPT_DEBUG: + set_exec_mode( MODE_DEBUG ); + break; + case LONG_OPT_LDCMD: + ld_command = xstrdup( optarg ); + break; + case LONG_OPT_NMCMD: + nm_command = xstrdup( optarg ); + break; + case LONG_OPT_RELAY16: + set_exec_mode( MODE_RELAY16 ); + break; + case LONG_OPT_RELAY32: + set_exec_mode( MODE_RELAY32 ); + break; + case LONG_OPT_SUBSYSTEM: + set_subsystem( optarg, spec ); + break; + case LONG_OPT_VERSION: + printf( "winebuild version " PACKAGE_VERSION "\n" ); + exit(0); + case LONG_OPT_PEDLL: + set_exec_mode( MODE_PEDLL ); + spec_file_name = xstrdup( optarg ); + set_dll_file_name( optarg, spec ); + break; + case '?': + usage(1); + break; + } + } + return &argv[optind]; +} + + +/* load all specified resource files */ +static void load_resources( char *argv[], DLLSPEC *spec ) +{ + int i; + char **ptr, **last; + + switch (spec->type) + { + case SPEC_WIN16: + for (i = 0; i < nb_res_files; i++) load_res16_file( res_files[i], spec ); + break; + + case SPEC_WIN32: + for (i = 0; i < nb_res_files; i++) + { + if (!load_res32_file( res_files[i], spec )) + fatal_error( "%s is not a valid Win32 resource file\n", res_files[i] ); + } + + /* load any resource file found in the remaining arguments */ + for (ptr = last = argv; *ptr; ptr++) + { + if (!load_res32_file( *ptr, spec )) + *last++ = *ptr; /* not a resource file, keep it in the list */ + } + *last = NULL; + break; + } +} + +static int parse_input_file( DLLSPEC *spec ) +{ + FILE *input_file = open_input_file( NULL, spec_file_name ); + char *extension = strrchr( spec_file_name, '.' ); + + if (extension && !strcmp( extension, ".def" )) + return parse_def_file( input_file, spec ); + else + return parse_spec_file( input_file, spec ); + close_input_file( input_file ); +} + + +/******************************************************************* + * main + */ +int main(int argc, char **argv) +{ + DLLSPEC *spec = alloc_dll_spec(); + +#ifdef SIGHUP + signal( SIGHUP, exit_on_signal ); +#endif + signal( SIGTERM, exit_on_signal ); + signal( SIGINT, exit_on_signal ); + + output_file = stdout; + argv = parse_options( argc, argv, spec ); + + switch(exec_mode) + { + case MODE_DLL: + spec->characteristics |= IMAGE_FILE_DLL; + load_resources( argv, spec ); + if (!parse_input_file( spec )) break; + switch (spec->type) + { + case SPEC_WIN16: + fatal_error( "Win16 specs are not supported in ReactOS version of winebuild\n" ); + break; + case SPEC_WIN32: + read_undef_symbols( argv ); + BuildSpec32File( output_file, spec ); + break; + default: assert(0); + } + break; + case MODE_EXE: + if (spec->type == SPEC_WIN16) fatal_error( "Cannot build 16-bit exe files\n" ); + load_resources( argv, spec ); + read_undef_symbols( argv ); + BuildSpec32File( output_file, spec ); + break; + case MODE_DEF: + if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] ); + if (spec->type == SPEC_WIN16) fatal_error( "Cannot yet build .def file for 16-bit dlls\n" ); + if (!parse_input_file( spec )) break; + BuildDef32File( output_file, spec ); + break; + case MODE_DEBUG: + BuildDebugFile( output_file, current_src_dir, argv ); + break; + case MODE_RELAY16: + fatal_error( "Win16 relays are not supported in ReactOS version of winebuild\n" ); + break; + case MODE_RELAY32: + fatal_error( "Win32 relays are not supported in ReactOS version of winebuild\n" ); + break; + case MODE_PEDLL: + if (argv[0]) fatal_error( "file argument '%s' not allowed in this mode\n", argv[0] ); + if (!parse_input_file( spec )) break; + BuildPedllFile( output_file, spec ); + break; + default: + usage(1); + break; + } + if (nb_errors) exit(1); + if (output_file_name) + { + fclose( output_file ); + output_file_name = NULL; + } + return 0; +} diff --git a/reactos/tools/winebuild/mkstemps.c b/reactos/tools/winebuild/mkstemps.c new file mode 100644 index 00000000000..9919eac949f --- /dev/null +++ b/reactos/tools/winebuild/mkstemps.c @@ -0,0 +1,138 @@ +/* Copyright (C) 1991, 1992, 1996, 1998 Free Software Foundation, Inc. + This file is derived from mkstemp.c from the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_SYS_TIME_H +#include +#endif +#ifdef HAVE_PROCESS_H +#include +#endif + +/* We need to provide a type for gcc_uint64_t. */ +#ifdef __GNUC__ +__extension__ typedef unsigned long long gcc_uint64_t; +#else +typedef unsigned long gcc_uint64_t; +#endif + +#ifndef TMP_MAX +#define TMP_MAX 16384 +#endif + +/* + +@deftypefn Replacement int mkstemps (char *@var{template}, int @var{suffix_len}) + +Generate a unique temporary file name from @var{template}. +@var{template} has the form: + +@example + @var{path}/ccXXXXXX@var{suffix} +@end example + +@var{suffix_len} tells us how long @var{suffix} is (it can be zero +length). The last six characters of @var{template} before @var{suffix} +must be @samp{XXXXXX}; they are replaced with a string that makes the +filename unique. Returns a file descriptor open on the file for +reading and writing. + +@end deftypefn + +*/ + +int +mkstemps ( + char *template, + int suffix_len) +{ + static const char letters[] + = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + static gcc_uint64_t value; +#ifdef HAVE_GETTIMEOFDAY + struct timeval tv; +#endif + char *XXXXXX; + size_t len; + int count; + + len = strlen (template); + + if ((int) len < 6 + suffix_len + || strncmp (&template[len - 6 - suffix_len], "XXXXXX", 6)) + { + return -1; + } + + XXXXXX = &template[len - 6 - suffix_len]; + +#ifdef HAVE_GETTIMEOFDAY + /* Get some more or less random data. */ + gettimeofday (&tv, NULL); + value += ((gcc_uint64_t) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid (); +#else + value += getpid (); +#endif + + for (count = 0; count < TMP_MAX; ++count) + { + gcc_uint64_t v = value; + int fd; + + /* Fill in the random bits. */ + XXXXXX[0] = letters[v % 62]; + v /= 62; + XXXXXX[1] = letters[v % 62]; + v /= 62; + XXXXXX[2] = letters[v % 62]; + v /= 62; + XXXXXX[3] = letters[v % 62]; + v /= 62; + XXXXXX[4] = letters[v % 62]; + v /= 62; + XXXXXX[5] = letters[v % 62]; + +#ifdef VMS + fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600, "fop=tmd"); +#else + fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600); +#endif + if (fd >= 0) + /* The file does not exist. */ + return fd; + + /* This is a random value. It is only necessary that the next + TMP_MAX values generated by adding 7777 to VALUE are different + with (module 2^32). */ + value += 7777; + } + + /* We return the null string if we can't find a unique file name. */ + template[0] = '\0'; + return -1; +} diff --git a/reactos/tools/winebuild/parser.c b/reactos/tools/winebuild/parser.c new file mode 100644 index 00000000000..a998777d873 --- /dev/null +++ b/reactos/tools/winebuild/parser.c @@ -0,0 +1,1001 @@ +/* + * Spec file parser + * + * Copyright 1993 Robert J. Amstadt + * Copyright 1995 Martin von Loewis + * Copyright 1995, 1996, 1997, 2004 Alexandre Julliard + * Copyright 1997 Eric Youngdale + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include + +#include "winglue.h" +#include "build.h" + +int current_line = 0; + +static char ParseBuffer[512]; +static char TokenBuffer[512]; +static char *ParseNext = ParseBuffer; +static FILE *input_file; + +static const char *separator_chars; +static const char *comment_chars; + +static const char * const TypeNames[TYPE_NBTYPES] = +{ + "variable", /* TYPE_VARIABLE */ + "pascal", /* TYPE_PASCAL */ + "equate", /* TYPE_ABS */ + "stub", /* TYPE_STUB */ + "stdcall", /* TYPE_STDCALL */ + "cdecl", /* TYPE_CDECL */ + "varargs", /* TYPE_VARARGS */ + "extern" /* TYPE_EXTERN */ +}; + +static const char * const FlagNames[] = +{ + "norelay", /* FLAG_NORELAY */ + "noname", /* FLAG_NONAME */ + "ret16", /* FLAG_RET16 */ + "ret64", /* FLAG_RET64 */ + "i386", /* FLAG_I386 */ + "register", /* FLAG_REGISTER */ + "private", /* FLAG_PRIVATE */ + NULL +}; + +static int IsNumberString(const char *s) +{ + while (*s) if (!isdigit(*s++)) return 0; + return 1; +} + +inline static int is_token_separator( char ch ) +{ + return strchr( separator_chars, ch ) != NULL; +} + +inline static int is_token_comment( char ch ) +{ + return strchr( comment_chars, ch ) != NULL; +} + +/* get the next line from the input file, or return 0 if at eof */ +static int get_next_line(void) +{ + ParseNext = ParseBuffer; + current_line++; + return (fgets(ParseBuffer, sizeof(ParseBuffer), input_file) != NULL); +} + +static const char * GetToken( int allow_eol ) +{ + char *p = ParseNext; + char *token = TokenBuffer; + + for (;;) + { + /* remove initial white space */ + p = ParseNext; + while (isspace(*p)) p++; + + if (*p == '\\' && p[1] == '\n') /* line continuation */ + { + if (!get_next_line()) + { + if (!allow_eol) error( "Unexpected end of file\n" ); + return NULL; + } + } + else break; + } + + if ((*p == '\0') || is_token_comment(*p)) + { + if (!allow_eol) error( "Declaration not terminated properly\n" ); + return NULL; + } + + /* + * Find end of token. + */ + if (is_token_separator(*p)) + { + /* a separator is always a complete token */ + *token++ = *p++; + } + else while (*p != '\0' && !is_token_separator(*p) && !isspace(*p)) + { + if (*p == '\\') p++; + if (*p) *token++ = *p++; + } + *token = '\0'; + ParseNext = p; + return TokenBuffer; +} + + +static ORDDEF *add_entry_point( DLLSPEC *spec ) +{ + if (spec->nb_entry_points == spec->alloc_entry_points) + { + spec->alloc_entry_points += 128; + spec->entry_points = xrealloc( spec->entry_points, + spec->alloc_entry_points * sizeof(*spec->entry_points) ); + } + return &spec->entry_points[spec->nb_entry_points++]; +} + +/******************************************************************* + * parse_spec_variable + * + * Parse a variable definition in a .spec file. + */ +static int parse_spec_variable( ORDDEF *odp, DLLSPEC *spec ) +{ + char *endptr; + int *value_array; + int n_values; + int value_array_size; + const char *token; + + if (spec->type == SPEC_WIN32) + { + error( "'variable' not supported in Win32, use 'extern' instead\n" ); + return 0; + } + + if (!(token = GetToken(0))) return 0; + if (*token != '(') + { + error( "Expected '(' got '%s'\n", token ); + return 0; + } + + n_values = 0; + value_array_size = 25; + value_array = xmalloc(sizeof(*value_array) * value_array_size); + + for (;;) + { + if (!(token = GetToken(0))) + { + free( value_array ); + return 0; + } + if (*token == ')') + break; + + value_array[n_values++] = strtol(token, &endptr, 0); + if (n_values == value_array_size) + { + value_array_size += 25; + value_array = xrealloc(value_array, + sizeof(*value_array) * value_array_size); + } + + if (endptr == NULL || *endptr != '\0') + { + error( "Expected number value, got '%s'\n", token ); + free( value_array ); + return 0; + } + } + + odp->u.var.n_values = n_values; + odp->u.var.values = xrealloc(value_array, sizeof(*value_array) * n_values); + return 1; +} + + +/******************************************************************* + * parse_spec_export + * + * Parse an exported function definition in a .spec file. + */ +static int parse_spec_export( ORDDEF *odp, DLLSPEC *spec ) +{ + const char *token; + unsigned int i; + + switch(spec->type) + { + case SPEC_WIN16: + if (odp->type == TYPE_STDCALL) + { + error( "'stdcall' not supported for Win16\n" ); + return 0; + } + break; + case SPEC_WIN32: + if (odp->type == TYPE_PASCAL) + { + error( "'pascal' not supported for Win32\n" ); + return 0; + } + break; + default: + break; + } + + if (!(token = GetToken(0))) return 0; + if (*token != '(') + { + error( "Expected '(' got '%s'\n", token ); + return 0; + } + + for (i = 0; i < sizeof(odp->u.func.arg_types); i++) + { + if (!(token = GetToken(0))) return 0; + if (*token == ')') + break; + + if (!strcmp(token, "word")) + odp->u.func.arg_types[i] = 'w'; + else if (!strcmp(token, "s_word")) + odp->u.func.arg_types[i] = 's'; + else if (!strcmp(token, "long") || !strcmp(token, "segptr")) + odp->u.func.arg_types[i] = 'l'; + else if (!strcmp(token, "ptr")) + odp->u.func.arg_types[i] = 'p'; + else if (!strcmp(token, "str")) + odp->u.func.arg_types[i] = 't'; + else if (!strcmp(token, "wstr")) + odp->u.func.arg_types[i] = 'W'; + else if (!strcmp(token, "segstr")) + odp->u.func.arg_types[i] = 'T'; + else if (!strcmp(token, "double")) + { + odp->u.func.arg_types[i++] = 'l'; + if (i < sizeof(odp->u.func.arg_types)) odp->u.func.arg_types[i] = 'l'; + } + else + { + error( "Unknown argument type '%s'\n", token ); + return 0; + } + + if (spec->type == SPEC_WIN32) + { + if (strcmp(token, "long") && + strcmp(token, "ptr") && + strcmp(token, "str") && + strcmp(token, "wstr") && + strcmp(token, "double")) + { + error( "Type '%s' not supported for Win32\n", token ); + return 0; + } + } + } + if ((*token != ')') || (i >= sizeof(odp->u.func.arg_types))) + { + error( "Too many arguments\n" ); + return 0; + } + + odp->u.func.arg_types[i] = '\0'; + if (odp->type == TYPE_VARARGS) + odp->flags |= FLAG_NORELAY; /* no relay debug possible for varags entry point */ + + if (!(token = GetToken(1))) + { + if (!strcmp( odp->name, "@" )) + { + error( "Missing handler name for anonymous function\n" ); + return 0; + } + odp->link_name = xstrdup( odp->name ); + } + else + { + odp->link_name = xstrdup( token ); + if (strchr( odp->link_name, '.' )) + { + if (spec->type == SPEC_WIN16) + { + error( "Forwarded functions not supported for Win16\n" ); + return 0; + } + odp->flags |= FLAG_FORWARD; + } + } + return 1; +} + + +/******************************************************************* + * parse_spec_equate + * + * Parse an 'equate' definition in a .spec file. + */ +static int parse_spec_equate( ORDDEF *odp, DLLSPEC *spec ) +{ + char *endptr; + int value; + const char *token; + + if (spec->type == SPEC_WIN32) + { + error( "'equate' not supported for Win32\n" ); + return 0; + } + if (!(token = GetToken(0))) return 0; + value = strtol(token, &endptr, 0); + if (endptr == NULL || *endptr != '\0') + { + error( "Expected number value, got '%s'\n", token ); + return 0; + } + odp->u.abs.value = value; + return 1; +} + + +/******************************************************************* + * parse_spec_stub + * + * Parse a 'stub' definition in a .spec file + */ +static int parse_spec_stub( ORDDEF *odp, DLLSPEC *spec ) +{ + odp->u.func.arg_types[0] = '\0'; + odp->link_name = xstrdup(""); + return 1; +} + + +/******************************************************************* + * parse_spec_extern + * + * Parse an 'extern' definition in a .spec file. + */ +static int parse_spec_extern( ORDDEF *odp, DLLSPEC *spec ) +{ + const char *token; + + if (spec->type == SPEC_WIN16) + { + error( "'extern' not supported for Win16, use 'variable' instead\n" ); + return 0; + } + if (!(token = GetToken(1))) + { + if (!strcmp( odp->name, "@" )) + { + error( "Missing handler name for anonymous extern\n" ); + return 0; + } + odp->link_name = xstrdup( odp->name ); + } + else + { + odp->link_name = xstrdup( token ); + if (strchr( odp->link_name, '.' )) odp->flags |= FLAG_FORWARD; + } + return 1; +} + + +/******************************************************************* + * parse_spec_flags + * + * Parse the optional flags for an entry point in a .spec file. + */ +static const char *parse_spec_flags( ORDDEF *odp ) +{ + unsigned int i; + const char *token; + + do + { + if (!(token = GetToken(0))) break; + for (i = 0; FlagNames[i]; i++) + if (!strcmp( FlagNames[i], token )) break; + if (!FlagNames[i]) + { + error( "Unknown flag '%s'\n", token ); + return NULL; + } + odp->flags |= 1 << i; + token = GetToken(0); + } while (token && *token == '-'); + + return token; +} + + +/******************************************************************* + * parse_spec_ordinal + * + * Parse an ordinal definition in a .spec file. + */ +static int parse_spec_ordinal( int ordinal, DLLSPEC *spec ) +{ + const char *token; + + ORDDEF *odp = add_entry_point( spec ); + memset( odp, 0, sizeof(*odp) ); + + if (!(token = GetToken(0))) goto error; + + for (odp->type = 0; odp->type < TYPE_NBTYPES; odp->type++) + if (TypeNames[odp->type] && !strcmp( token, TypeNames[odp->type] )) + break; + + if (odp->type >= TYPE_NBTYPES) + { + error( "Expected type after ordinal, found '%s' instead\n", token ); + goto error; + } + + if (!(token = GetToken(0))) goto error; + if (*token == '-' && !(token = parse_spec_flags( odp ))) goto error; + + odp->name = xstrdup( token ); + odp->lineno = current_line; + odp->ordinal = ordinal; + + switch(odp->type) + { + case TYPE_VARIABLE: + if (!parse_spec_variable( odp, spec )) goto error; + break; + case TYPE_PASCAL: + case TYPE_STDCALL: + case TYPE_VARARGS: + case TYPE_CDECL: + if (!parse_spec_export( odp, spec )) goto error; + break; + case TYPE_ABS: + if (!parse_spec_equate( odp, spec )) goto error; + break; + case TYPE_STUB: + if (!parse_spec_stub( odp, spec )) goto error; + break; + case TYPE_EXTERN: + if (!parse_spec_extern( odp, spec )) goto error; + break; + default: + assert( 0 ); + } + +#ifndef __i386__ + if (odp->flags & FLAG_I386) + { + /* ignore this entry point on non-Intel archs */ + spec->nb_entry_points--; + return 1; + } +#endif + + if (ordinal != -1) + { + if (!ordinal) + { + error( "Ordinal 0 is not valid\n" ); + goto error; + } + if (ordinal >= MAX_ORDINALS) + { + error( "Ordinal number %d too large\n", ordinal ); + goto error; + } + if (ordinal > spec->limit) spec->limit = ordinal; + if (ordinal < spec->base) spec->base = ordinal; + odp->ordinal = ordinal; + } + + if (odp->type == TYPE_STDCALL && !(odp->flags & FLAG_PRIVATE)) + { + if (!strcmp( odp->name, "DllRegisterServer" ) || + !strcmp( odp->name, "DllUnregisterServer" ) || + !strcmp( odp->name, "DllGetClassObject" ) || + !strcmp( odp->name, "DllCanUnloadNow" )) + { + warning( "Function %s should be marked private\n", odp->name ); + } + } + + if (!strcmp( odp->name, "@" ) || odp->flags & FLAG_NONAME) + { + if (ordinal == -1) + { + error( "Nameless function needs an explicit ordinal number\n" ); + goto error; + } + if (spec->type != SPEC_WIN32) + { + error( "Nameless functions not supported for Win16\n" ); + goto error; + } + if (!strcmp( odp->name, "@" )) free( odp->name ); + else odp->export_name = odp->name; + odp->name = NULL; + } + return 1; + +error: + spec->nb_entry_points--; + free( odp->name ); + return 0; +} + + +static int name_compare( const void *name1, const void *name2 ) +{ + const ORDDEF *odp1 = *(const ORDDEF * const *)name1; + const ORDDEF *odp2 = *(const ORDDEF * const *)name2; + return strcmp( odp1->name, odp2->name ); +} + +/******************************************************************* + * assign_names + * + * Build the name array and catch duplicates. + */ +static void assign_names( DLLSPEC *spec ) +{ + int i, j; + + spec->nb_names = 0; + for (i = 0; i < spec->nb_entry_points; i++) + if (spec->entry_points[i].name) spec->nb_names++; + if (!spec->nb_names) return; + + spec->names = xmalloc( spec->nb_names * sizeof(spec->names[0]) ); + for (i = j = 0; i < spec->nb_entry_points; i++) + if (spec->entry_points[i].name) spec->names[j++] = &spec->entry_points[i]; + + /* sort the list of names */ + qsort( spec->names, spec->nb_names, sizeof(spec->names[0]), name_compare ); + + /* check for duplicate names */ + for (i = 0; i < spec->nb_names - 1; i++) + { + if (!strcmp( spec->names[i]->name, spec->names[i+1]->name )) + { + current_line = max( spec->names[i]->lineno, spec->names[i+1]->lineno ); + error( "'%s' redefined\n%s:%d: First defined here\n", + spec->names[i]->name, input_file_name, + min( spec->names[i]->lineno, spec->names[i+1]->lineno ) ); + } + } +} + +/******************************************************************* + * assign_ordinals + * + * Build the ordinal array. + */ +static void assign_ordinals( DLLSPEC *spec ) +{ + int i, count, ordinal; + + /* start assigning from base, or from 1 if no ordinal defined yet */ + if (spec->base == MAX_ORDINALS) spec->base = 1; + if (spec->limit < spec->base) spec->limit = spec->base; + + count = max( spec->limit + 1, spec->base + spec->nb_entry_points ); + spec->ordinals = xmalloc( count * sizeof(spec->ordinals[0]) ); + memset( spec->ordinals, 0, count * sizeof(spec->ordinals[0]) ); + + /* fill in all explicitly specified ordinals */ + for (i = 0; i < spec->nb_entry_points; i++) + { + ordinal = spec->entry_points[i].ordinal; + if (ordinal == -1) continue; + if (spec->ordinals[ordinal]) + { + current_line = max( spec->entry_points[i].lineno, spec->ordinals[ordinal]->lineno ); + error( "ordinal %d redefined\n%s:%d: First defined here\n", + ordinal, input_file_name, + min( spec->entry_points[i].lineno, spec->ordinals[ordinal]->lineno ) ); + } + else spec->ordinals[ordinal] = &spec->entry_points[i]; + } + + /* now assign ordinals to the rest */ + for (i = 0, ordinal = spec->base; i < spec->nb_names; i++) + { + if (spec->names[i]->ordinal != -1) continue; /* already has an ordinal */ + while (spec->ordinals[ordinal]) ordinal++; + if (ordinal >= MAX_ORDINALS) + { + current_line = spec->names[i]->lineno; + fatal_error( "Too many functions defined (max %d)\n", MAX_ORDINALS ); + } + spec->names[i]->ordinal = ordinal; + spec->ordinals[ordinal] = spec->names[i]; + } + if (ordinal > spec->limit) spec->limit = ordinal; +} + + +/******************************************************************* + * parse_spec_file + * + * Parse a .spec file. + */ +int parse_spec_file( FILE *file, DLLSPEC *spec ) +{ + const char *token; + + input_file = file; + current_line = 0; + + comment_chars = "#;"; + separator_chars = "()-"; + + while (get_next_line()) + { + if (!(token = GetToken(1))) continue; + if (strcmp(token, "@") == 0) + { + if (spec->type != SPEC_WIN32) + { + error( "'@' ordinals not supported for Win16\n" ); + continue; + } + if (!parse_spec_ordinal( -1, spec )) continue; + } + else if (IsNumberString(token)) + { + if (!parse_spec_ordinal( atoi(token), spec )) continue; + } + else + { + error( "Expected ordinal declaration, got '%s'\n", token ); + continue; + } + if ((token = GetToken(1))) error( "Syntax error near '%s'\n", token ); + } + + current_line = 0; /* no longer parsing the input file */ + assign_names( spec ); + assign_ordinals( spec ); + return !nb_errors; +} + + +/******************************************************************* + * parse_def_library + * + * Parse a LIBRARY declaration in a .def file. + */ +static int parse_def_library( DLLSPEC *spec ) +{ + const char *token = GetToken(1); + + if (!token) return 1; + if (strcmp( token, "BASE" )) + { + free( spec->file_name ); + spec->file_name = xstrdup( token ); + if (!(token = GetToken(1))) return 1; + } + if (strcmp( token, "BASE" )) + { + error( "Expected library name or BASE= declaration, got '%s'\n", token ); + return 0; + } + if (!(token = GetToken(0))) return 0; + if (strcmp( token, "=" )) + { + error( "Expected '=' after BASE, got '%s'\n", token ); + return 0; + } + if (!(token = GetToken(0))) return 0; + /* FIXME: do something with base address */ + + return 1; +} + + +/******************************************************************* + * parse_def_stack_heap_size + * + * Parse a STACKSIZE or HEAPSIZE declaration in a .def file. + */ +static int parse_def_stack_heap_size( int is_stack, DLLSPEC *spec ) +{ + const char *token = GetToken(0); + char *end; + unsigned long size; + + if (!token) return 0; + size = strtoul( token, &end, 0 ); + if (*end) + { + error( "Invalid number '%s'\n", token ); + return 0; + } + if (is_stack) spec->stack_size = size / 1024; + else spec->heap_size = size / 1024; + if (!(token = GetToken(1))) return 1; + if (strcmp( token, "," )) + { + error( "Expected ',' after size, got '%s'\n", token ); + return 0; + } + if (!(token = GetToken(0))) return 0; + /* FIXME: do something with reserve size */ + return 1; +} + + +/******************************************************************* + * parse_def_export + * + * Parse an export declaration in a .def file. + */ +static int parse_def_export( char *name, DLLSPEC *spec ) +{ + int i, args; + const char *token = GetToken(1); + + ORDDEF *odp = add_entry_point( spec ); + memset( odp, 0, sizeof(*odp) ); + + odp->lineno = current_line; + odp->ordinal = -1; + odp->name = name; + args = remove_stdcall_decoration( odp->name ); + if (args == -1) odp->type = TYPE_CDECL; + else + { + odp->type = TYPE_STDCALL; + args /= sizeof(int); + if (args >= sizeof(odp->u.func.arg_types)) + { + error( "Too many arguments in stdcall function '%s'\n", odp->name ); + return 0; + } + for (i = 0; i < args; i++) odp->u.func.arg_types[i] = 'l'; + } + + /* check for optional internal name */ + + if (token && !strcmp( token, "=" )) + { + if (!(token = GetToken(0))) goto error; + odp->link_name = xstrdup( token ); + remove_stdcall_decoration( odp->link_name ); + token = GetToken(1); + } + else + { + odp->link_name = xstrdup( name ); + } + + /* check for optional ordinal */ + + if (token && token[0] == '@') + { + int ordinal; + + if (!IsNumberString( token+1 )) + { + error( "Expected number after '@', got '%s'\n", token+1 ); + goto error; + } + ordinal = atoi( token+1 ); + if (!ordinal) + { + error( "Ordinal 0 is not valid\n" ); + goto error; + } + if (ordinal >= MAX_ORDINALS) + { + error( "Ordinal number %d too large\n", ordinal ); + goto error; + } + if (ordinal > spec->limit) spec->limit = ordinal; + if (ordinal < spec->base) spec->base = ordinal; + odp->ordinal = ordinal; + token = GetToken(1); + } + + /* check for other optional keywords */ + + if (token && !strcmp( token, "NONAME" )) + { + if (odp->ordinal == -1) + { + error( "NONAME requires an ordinal\n" ); + goto error; + } + odp->export_name = odp->name; + odp->name = NULL; + odp->flags |= FLAG_NONAME; + token = GetToken(1); + } + if (token && !strcmp( token, "PRIVATE" )) + { + odp->flags |= FLAG_PRIVATE; + token = GetToken(1); + } + if (token && !strcmp( token, "DATA" )) + { + odp->type = TYPE_EXTERN; + token = GetToken(1); + } + if (token) + { + error( "Garbage text '%s' found at end of export declaration\n", token ); + goto error; + } + return 1; + +error: + spec->nb_entry_points--; + free( odp->name ); + return 0; +} + + +/******************************************************************* + * parse_def_file + * + * Parse a .def file. + */ +int parse_def_file( FILE *file, DLLSPEC *spec ) +{ + const char *token; + int in_exports = 0; + + input_file = file; + current_line = 0; + + comment_chars = ";"; + separator_chars = ",="; + + while (get_next_line()) + { + if (!(token = GetToken(1))) continue; + + if (!strcmp( token, "LIBRARY" ) || !strcmp( token, "NAME" )) + { + if (!parse_def_library( spec )) continue; + goto end_of_line; + } + else if (!strcmp( token, "STACKSIZE" )) + { + if (!parse_def_stack_heap_size( 1, spec )) continue; + goto end_of_line; + } + else if (!strcmp( token, "HEAPSIZE" )) + { + if (!parse_def_stack_heap_size( 0, spec )) continue; + goto end_of_line; + } + else if (!strcmp( token, "EXPORTS" )) + { + in_exports = 1; + if (!(token = GetToken(1))) continue; + } + else if (!strcmp( token, "IMPORTS" )) + { + in_exports = 0; + if (!(token = GetToken(1))) continue; + } + else if (!strcmp( token, "SECTIONS" )) + { + in_exports = 0; + if (!(token = GetToken(1))) continue; + } + + if (!in_exports) continue; /* ignore this line */ + if (!parse_def_export( xstrdup(token), spec )) continue; + + end_of_line: + if ((token = GetToken(1))) error( "Syntax error near '%s'\n", token ); + } + + current_line = 0; /* no longer parsing the input file */ + assign_names( spec ); + assign_ordinals( spec ); + return !nb_errors; +} + + +/******************************************************************* + * add_debug_channel + */ +static void add_debug_channel( const char *name ) +{ + int i; + + for (i = 0; i < nb_debug_channels; i++) + if (!strcmp( debug_channels[i], name )) return; + + debug_channels = xrealloc( debug_channels, (nb_debug_channels + 1) * sizeof(*debug_channels)); + debug_channels[nb_debug_channels++] = xstrdup(name); +} + + +/******************************************************************* + * parse_debug_channels + * + * Parse a source file and extract the debug channel definitions. + */ +int parse_debug_channels( const char *srcdir, const char *filename ) +{ + FILE *file; + int eol_seen = 1; + + file = open_input_file( srcdir, filename ); + while (fgets( ParseBuffer, sizeof(ParseBuffer), file )) + { + char *channel, *end, *p = ParseBuffer; + + p = ParseBuffer + strlen(ParseBuffer) - 1; + if (!eol_seen) /* continuation line */ + { + eol_seen = (*p == '\n'); + continue; + } + if ((eol_seen = (*p == '\n'))) *p = 0; + + p = ParseBuffer; + while (isspace(*p)) p++; + if (!memcmp( p, "WINE_DECLARE_DEBUG_CHANNEL", 26 ) || + !memcmp( p, "WINE_DEFAULT_DEBUG_CHANNEL", 26 )) + { + p += 26; + while (isspace(*p)) p++; + if (*p != '(') + { + error( "invalid debug channel specification '%s'\n", ParseBuffer ); + goto next; + } + p++; + while (isspace(*p)) p++; + if (!isalpha(*p)) + { + error( "invalid debug channel specification '%s'\n", ParseBuffer ); + goto next; + } + channel = p; + while (isalnum(*p) || *p == '_') p++; + end = p; + while (isspace(*p)) p++; + if (*p != ')') + { + error( "invalid debug channel specification '%s'\n", ParseBuffer ); + goto next; + } + *end = 0; + add_debug_channel( channel ); + } + next: + current_line++; + } + close_input_file( file ); + return !nb_errors; +} diff --git a/reactos/tools/winebuild/relay.c b/reactos/tools/winebuild/relay.c new file mode 100644 index 00000000000..b43f5a09633 --- /dev/null +++ b/reactos/tools/winebuild/relay.c @@ -0,0 +1,1208 @@ +/* + * Relay calls helper routines + * + * Copyright 1993 Robert J. Amstadt + * Copyright 1995 Martin von Loewis + * Copyright 1995, 1996, 1997 Alexandre Julliard + * Copyright 1997 Eric Youngdale + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include + +#include "thread.h" +#include "stackframe.h" + +#include "build.h" + +#ifdef __i386__ + +static void function_header( FILE *outfile, const char *name ) +{ + fprintf( outfile, "\n\t.align %d\n", get_alignment(4) ); + fprintf( outfile, "\t" __ASM_FUNC("%s") "\n", name ); + fprintf( outfile, "\t.globl " __ASM_NAME("%s") "\n", name ); + fprintf( outfile, __ASM_NAME("%s") ":\n", name ); +} + + +static void function_footer( FILE *outfile, const char *name ) +{ + fprintf( outfile, ".size " __ASM_NAME("%s") ", . - " __ASM_NAME("%s") "\n", name, name ); +} + +/******************************************************************* + * BuildCallFrom16Core + * + * This routine builds the core routines used in 16->32 thunks: + * CallFrom16Word, CallFrom16Long, CallFrom16Register, and CallFrom16Thunk. + * + * These routines are intended to be called via a far call (with 32-bit + * operand size) from 16-bit code. The 16-bit code stub must push %bp, + * the 32-bit entry point to be called, and the argument conversion + * routine to be used (see stack layout below). + * + * The core routine completes the STACK16FRAME on the 16-bit stack and + * switches to the 32-bit stack. Then, the argument conversion routine + * is called; it gets passed the 32-bit entry point and a pointer to the + * 16-bit arguments (on the 16-bit stack) as parameters. (You can either + * use conversion routines automatically generated by BuildCallFrom16, + * or write your own for special purposes.) + * + * The conversion routine must call the 32-bit entry point, passing it + * the converted arguments, and return its return value to the core. + * After the conversion routine has returned, the core switches back + * to the 16-bit stack, converts the return value to the DX:AX format + * (CallFrom16Long), and returns to the 16-bit call stub. All parameters, + * including %bp, are popped off the stack. + * + * The 16-bit call stub now returns to the caller, popping the 16-bit + * arguments if necessary (pascal calling convention). + * + * In the case of a 'register' function, CallFrom16Register fills a + * CONTEXT86 structure with the values all registers had at the point + * the first instruction of the 16-bit call stub was about to be + * executed. A pointer to this CONTEXT86 is passed as third parameter + * to the argument conversion routine, which typically passes it on + * to the called 32-bit entry point. + * + * CallFrom16Thunk is a special variant used by the implementation of + * the Win95 16->32 thunk functions C16ThkSL and C16ThkSL01 and is + * implemented as follows: + * On entry, the EBX register is set up to contain a flat pointer to the + * 16-bit stack such that EBX+22 points to the first argument. + * Then, the entry point is called, while EBP is set up to point + * to the return address (on the 32-bit stack). + * The called function returns with CX set to the number of bytes + * to be popped of the caller's stack. + * + * Stack layout upon entry to the core routine (STACK16FRAME): + * ... ... + * (sp+24) word first 16-bit arg + * (sp+22) word cs + * (sp+20) word ip + * (sp+18) word bp + * (sp+14) long 32-bit entry point (reused for Win16 mutex recursion count) + * (sp+12) word ip of actual entry point (necessary for relay debugging) + * (sp+8) long relay (argument conversion) function entry point + * (sp+4) long cs of 16-bit entry point + * (sp) long ip of 16-bit entry point + * + * Added on the stack: + * (sp-2) word saved gs + * (sp-4) word saved fs + * (sp-6) word saved es + * (sp-8) word saved ds + * (sp-12) long saved ebp + * (sp-16) long saved ecx + * (sp-20) long saved edx + * (sp-24) long saved previous stack + */ +static void BuildCallFrom16Core( FILE *outfile, int reg_func, int thunk, int short_ret ) +{ + const char *name = thunk? "thunk" : reg_func? "regs" : short_ret? "word" : "long"; + + /* Function header */ + if (thunk) function_header( outfile, "__wine_call_from_16_thunk" ); + else if (reg_func) function_header( outfile, "__wine_call_from_16_regs" ); + else if (short_ret) function_header( outfile, "__wine_call_from_16_word" ); + else function_header( outfile, "__wine_call_from_16_long" ); + + /* Create STACK16FRAME (except STACK32FRAME link) */ + fprintf( outfile, "\tpushw %%gs\n" ); + fprintf( outfile, "\tpushw %%fs\n" ); + fprintf( outfile, "\tpushw %%es\n" ); + fprintf( outfile, "\tpushw %%ds\n" ); + fprintf( outfile, "\tpushl %%ebp\n" ); + fprintf( outfile, "\tpushl %%ecx\n" ); + fprintf( outfile, "\tpushl %%edx\n" ); + + /* Save original EFlags register */ + fprintf( outfile, "\tpushfl\n" ); + + if ( UsePIC ) + { + /* Get Global Offset Table into %ecx */ + fprintf( outfile, "\tcall .L__wine_call_from_16_%s.getgot1\n", name ); + fprintf( outfile, ".L__wine_call_from_16_%s.getgot1:\n", name ); + fprintf( outfile, "\tpopl %%ecx\n" ); + fprintf( outfile, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-.L__wine_call_from_16_%s.getgot1], %%ecx\n", name ); + } + + if (UsePIC) + { + fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_DataSelector@GOT") "(%%ecx), %%edx\n" ); + fprintf( outfile, "\t.byte 0x2e\n\tmovl (%%edx), %%edx\n" ); + } + else + fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_DataSelector") ",%%edx\n" ); + + /* Load 32-bit segment registers */ +#ifdef __svr4__ + fprintf( outfile, "\tdata16\n"); +#endif + fprintf( outfile, "\tmovw %%dx, %%ds\n" ); +#ifdef __svr4__ + fprintf( outfile, "\tdata16\n"); +#endif + fprintf( outfile, "\tmovw %%dx, %%es\n" ); + + if ( UsePIC ) + { + fprintf( outfile, "\tmovl " __ASM_NAME("CallTo16_TebSelector@GOT") "(%%ecx), %%edx\n" ); + fprintf( outfile, "\tmovw (%%edx), %%fs\n" ); + } + else + fprintf( outfile, "\tmovw " __ASM_NAME("CallTo16_TebSelector") ", %%fs\n" ); + + fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%gs\n", STRUCTOFFSET(TEB,gs_sel) ); + + /* Get address of wine_ldt_copy array into %ecx */ + if ( UsePIC ) + fprintf( outfile, "\tmovl " __ASM_NAME("wine_ldt_copy@GOT") "(%%ecx), %%ecx\n" ); + else + fprintf( outfile, "\tmovl $" __ASM_NAME("wine_ldt_copy") ", %%ecx\n" ); + + /* Translate STACK16FRAME base to flat offset in %edx */ + fprintf( outfile, "\tmovw %%ss, %%dx\n" ); + fprintf( outfile, "\tandl $0xfff8, %%edx\n" ); + fprintf( outfile, "\tshrl $1, %%edx\n" ); + fprintf( outfile, "\tmovl (%%ecx,%%edx), %%edx\n" ); + fprintf( outfile, "\tmovzwl %%sp, %%ebp\n" ); + fprintf( outfile, "\tleal (%%ebp,%%edx), %%edx\n" ); + + /* Get saved flags into %ecx */ + fprintf( outfile, "\tpopl %%ecx\n" ); + + /* Get the 32-bit stack pointer from the TEB and complete STACK16FRAME */ + fprintf( outfile, "\t.byte 0x64\n\tmovl (%d), %%ebp\n", STACKOFFSET ); + fprintf( outfile, "\tpushl %%ebp\n" ); + + /* Switch stacks */ +#ifdef __svr4__ + fprintf( outfile,"\tdata16\n"); +#endif + fprintf( outfile, "\t.byte 0x64\n\tmovw %%ss, (%d)\n", STACKOFFSET + 2 ); + fprintf( outfile, "\t.byte 0x64\n\tmovw %%sp, (%d)\n", STACKOFFSET ); + fprintf( outfile, "\tpushl %%ds\n" ); + fprintf( outfile, "\tpopl %%ss\n" ); + fprintf( outfile, "\tmovl %%ebp, %%esp\n" ); + fprintf( outfile, "\taddl $%d, %%ebp\n", STRUCTOFFSET(STACK32FRAME, ebp) ); + + + /* At this point: + STACK16FRAME is completely set up + DS, ES, SS: flat data segment + FS: current TEB + ESP: points to last STACK32FRAME + EBP: points to ebp member of last STACK32FRAME + EDX: points to current STACK16FRAME + ECX: contains saved flags + all other registers: unchanged */ + + /* Special case: C16ThkSL stub */ + if ( thunk ) + { + /* Set up registers as expected and call thunk */ + fprintf( outfile, "\tleal %d(%%edx), %%ebx\n", sizeof(STACK16FRAME)-22 ); + fprintf( outfile, "\tleal -4(%%esp), %%ebp\n" ); + + fprintf( outfile, "\tcall *%d(%%edx)\n", STACK16OFFSET(entry_point) ); + + /* Switch stack back */ + fprintf( outfile, "\t.byte 0x64\n\tmovw (%d), %%ss\n", STACKOFFSET+2 ); + fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%esp\n", STACKOFFSET ); + fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); + + /* Restore registers and return directly to caller */ + fprintf( outfile, "\taddl $8, %%esp\n" ); + fprintf( outfile, "\tpopl %%ebp\n" ); + fprintf( outfile, "\tpopw %%ds\n" ); + fprintf( outfile, "\tpopw %%es\n" ); + fprintf( outfile, "\tpopw %%fs\n" ); + fprintf( outfile, "\tpopw %%gs\n" ); + fprintf( outfile, "\taddl $20, %%esp\n" ); + + fprintf( outfile, "\txorb %%ch, %%ch\n" ); + fprintf( outfile, "\tpopl %%ebx\n" ); + fprintf( outfile, "\taddw %%cx, %%sp\n" ); + fprintf( outfile, "\tpush %%ebx\n" ); + + fprintf( outfile, "\t.byte 0x66\n" ); + fprintf( outfile, "\tlret\n" ); + + return; + } + + + /* Build register CONTEXT */ + if ( reg_func ) + { + fprintf( outfile, "\tsubl $%d, %%esp\n", sizeof(CONTEXT86) ); + + fprintf( outfile, "\tmovl %%ecx, %d(%%esp)\n", CONTEXTOFFSET(EFlags) ); + + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Eax) ); + fprintf( outfile, "\tmovl %%ebx, %d(%%esp)\n", CONTEXTOFFSET(Ebx) ); + fprintf( outfile, "\tmovl %%esi, %d(%%esp)\n", CONTEXTOFFSET(Esi) ); + fprintf( outfile, "\tmovl %%edi, %d(%%esp)\n", CONTEXTOFFSET(Edi) ); + + fprintf( outfile, "\tmovl %d(%%edx), %%eax\n", STACK16OFFSET(ebp) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Ebp) ); + fprintf( outfile, "\tmovl %d(%%edx), %%eax\n", STACK16OFFSET(ecx) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Ecx) ); + fprintf( outfile, "\tmovl %d(%%edx), %%eax\n", STACK16OFFSET(edx) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Edx) ); + + fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(ds) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegDs) ); + fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(es) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegEs) ); + fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(fs) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegFs) ); + fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(gs) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegGs) ); + + fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(cs) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegCs) ); + fprintf( outfile, "\tmovzwl %d(%%edx), %%eax\n", STACK16OFFSET(ip) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Eip) ); + + fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%eax\n", STACKOFFSET+2 ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(SegSs) ); + fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%eax\n", STACKOFFSET ); + fprintf( outfile, "\taddl $%d, %%eax\n", STACK16OFFSET(ip) ); + fprintf( outfile, "\tmovl %%eax, %d(%%esp)\n", CONTEXTOFFSET(Esp) ); +#if 0 + fprintf( outfile, "\tfsave %d(%%esp)\n", CONTEXTOFFSET(FloatSave) ); +#endif + + /* Push address of CONTEXT86 structure -- popped by the relay routine */ + fprintf( outfile, "\tpushl %%esp\n" ); + } + + + /* Print debug info before call */ + if ( debugging ) + { + if ( UsePIC ) + { + fprintf( outfile, "\tpushl %%ebx\n" ); + + /* Get Global Offset Table into %ebx (for PLT call) */ + fprintf( outfile, "\tcall .L__wine_call_from_16_%s.getgot2\n", name ); + fprintf( outfile, ".L__wine_call_from_16_%s.getgot2:\n", name ); + fprintf( outfile, "\tpopl %%ebx\n" ); + fprintf( outfile, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-.L__wine_call_from_16_%s.getgot2], %%ebx\n", name ); + } + + fprintf( outfile, "\tpushl %%edx\n" ); + if ( reg_func ) + fprintf( outfile, "\tleal -%d(%%ebp), %%eax\n\tpushl %%eax\n", + sizeof(CONTEXT) + STRUCTOFFSET(STACK32FRAME, ebp) ); + else + fprintf( outfile, "\tpushl $0\n" ); + + if ( UsePIC ) + fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16@PLT") "\n "); + else + fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16") "\n "); + + fprintf( outfile, "\tpopl %%edx\n" ); + fprintf( outfile, "\tpopl %%edx\n" ); + + if ( UsePIC ) + fprintf( outfile, "\tpopl %%ebx\n" ); + } + + /* Call relay routine (which will call the API entry point) */ + fprintf( outfile, "\tleal %d(%%edx), %%eax\n", sizeof(STACK16FRAME) ); + fprintf( outfile, "\tpushl %%eax\n" ); + fprintf( outfile, "\tpushl %d(%%edx)\n", STACK16OFFSET(entry_point) ); + fprintf( outfile, "\tcall *%d(%%edx)\n", STACK16OFFSET(relay) ); + + /* Print debug info after call */ + if ( debugging ) + { + if ( UsePIC ) + { + fprintf( outfile, "\tpushl %%ebx\n" ); + + /* Get Global Offset Table into %ebx (for PLT call) */ + fprintf( outfile, "\tcall .L__wine_call_from_16_%s.getgot3\n", name ); + fprintf( outfile, ".L__wine_call_from_16_%s.getgot3:\n", name ); + fprintf( outfile, "\tpopl %%ebx\n" ); + fprintf( outfile, "\taddl $_GLOBAL_OFFSET_TABLE_+[.-.L__wine_call_from_16_%s.getgot3], %%ebx\n", name ); + } + + fprintf( outfile, "\tpushl %%eax\n" ); + if ( reg_func ) + fprintf( outfile, "\tleal -%d(%%ebp), %%eax\n\tpushl %%eax\n", + sizeof(CONTEXT) + STRUCTOFFSET(STACK32FRAME, ebp) ); + else + fprintf( outfile, "\tpushl $0\n" ); + + if ( UsePIC ) + fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16Ret@PLT") "\n "); + else + fprintf( outfile, "\tcall " __ASM_NAME("RELAY_DebugCallFrom16Ret") "\n "); + + fprintf( outfile, "\tpopl %%eax\n" ); + fprintf( outfile, "\tpopl %%eax\n" ); + + if ( UsePIC ) + fprintf( outfile, "\tpopl %%ebx\n" ); + } + + + if ( reg_func ) + { + fprintf( outfile, "\tmovl %%esp, %%ebx\n" ); + + /* Switch stack back */ + fprintf( outfile, "\t.byte 0x64\n\tmovw (%d), %%ss\n", STACKOFFSET+2 ); + fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%esp\n", STACKOFFSET ); + fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); + + /* Get return address to CallFrom16 stub */ + fprintf( outfile, "\taddw $%d, %%sp\n", STACK16OFFSET(callfrom_ip)-4 ); + fprintf( outfile, "\tpopl %%eax\n" ); + fprintf( outfile, "\tpopl %%edx\n" ); + + /* Restore all registers from CONTEXT */ + fprintf( outfile, "\tmovw %d(%%ebx), %%ss\n", CONTEXTOFFSET(SegSs) ); + fprintf( outfile, "\tmovl %d(%%ebx), %%esp\n", CONTEXTOFFSET(Esp) ); + fprintf( outfile, "\taddl $4, %%esp\n" ); /* room for final return address */ + + fprintf( outfile, "\tpushw %d(%%ebx)\n", CONTEXTOFFSET(SegCs) ); + fprintf( outfile, "\tpushw %d(%%ebx)\n", CONTEXTOFFSET(Eip) ); + fprintf( outfile, "\tpushl %%edx\n" ); + fprintf( outfile, "\tpushl %%eax\n" ); + fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(EFlags) ); + fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegDs) ); + + fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegEs) ); + fprintf( outfile, "\tpopl %%es\n" ); + fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegFs) ); + fprintf( outfile, "\tpopl %%fs\n" ); + fprintf( outfile, "\tpushl %d(%%ebx)\n", CONTEXTOFFSET(SegGs) ); + fprintf( outfile, "\tpopl %%gs\n" ); + + fprintf( outfile, "\tmovl %d(%%ebx), %%ebp\n", CONTEXTOFFSET(Ebp) ); + fprintf( outfile, "\tmovl %d(%%ebx), %%esi\n", CONTEXTOFFSET(Esi) ); + fprintf( outfile, "\tmovl %d(%%ebx), %%edi\n", CONTEXTOFFSET(Edi) ); + fprintf( outfile, "\tmovl %d(%%ebx), %%eax\n", CONTEXTOFFSET(Eax) ); + fprintf( outfile, "\tmovl %d(%%ebx), %%edx\n", CONTEXTOFFSET(Edx) ); + fprintf( outfile, "\tmovl %d(%%ebx), %%ecx\n", CONTEXTOFFSET(Ecx) ); + fprintf( outfile, "\tmovl %d(%%ebx), %%ebx\n", CONTEXTOFFSET(Ebx) ); + + fprintf( outfile, "\tpopl %%ds\n" ); + fprintf( outfile, "\tpopfl\n" ); + fprintf( outfile, "\tlret\n" ); + } + else + { + /* Switch stack back */ + fprintf( outfile, "\t.byte 0x64\n\tmovw (%d), %%ss\n", STACKOFFSET+2 ); + fprintf( outfile, "\t.byte 0x64\n\tmovzwl (%d), %%esp\n", STACKOFFSET ); + fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); + + /* Restore registers */ + fprintf( outfile, "\tpopl %%edx\n" ); + fprintf( outfile, "\tpopl %%ecx\n" ); + fprintf( outfile, "\tpopl %%ebp\n" ); + fprintf( outfile, "\tpopw %%ds\n" ); + fprintf( outfile, "\tpopw %%es\n" ); + fprintf( outfile, "\tpopw %%fs\n" ); + fprintf( outfile, "\tpopw %%gs\n" ); + + /* Prepare return value and set flags accordingly */ + if ( !short_ret ) + fprintf( outfile, "\tshldl $16, %%eax, %%edx\n" ); + fprintf( outfile, "\torl %%eax, %%eax\n" ); + + /* Return to return stub which will return to caller */ + fprintf( outfile, "\tlret $12\n" ); + } + if (thunk) function_footer( outfile, "__wine_call_from_16_thunk" ); + else if (reg_func) function_footer( outfile, "__wine_call_from_16_regs" ); + else if (short_ret) function_footer( outfile, "__wine_call_from_16_word" ); + else function_footer( outfile, "__wine_call_from_16_long" ); +} + + +/******************************************************************* + * BuildCallTo16Core + * + * This routine builds the core routines used in 32->16 thunks: + * + * extern DWORD WINAPI wine_call_to_16( FARPROC16 target, DWORD cbArgs, PEXCEPTION_HANDLER handler ); + * extern void WINAPI wine_call_to_16_regs( CONTEXT86 *context, DWORD cbArgs, PEXCEPTION_HANDLER handler ); + * + * These routines can be called directly from 32-bit code. + * + * All routines expect that the 16-bit stack contents (arguments) and the + * return address (segptr to CallTo16_Ret) were already set up by the + * caller; nb_args must contain the number of bytes to be conserved. The + * 16-bit SS:SP will be set accordinly. + * + * All other registers are either taken from the CONTEXT86 structure + * or else set to default values. The target routine address is either + * given directly or taken from the CONTEXT86. + */ +static void BuildCallTo16Core( FILE *outfile, int reg_func ) +{ + const char *name = reg_func ? "wine_call_to_16_regs" : "wine_call_to_16"; + + /* Function header */ + function_header( outfile, name ); + + /* Function entry sequence */ + fprintf( outfile, "\tpushl %%ebp\n" ); + fprintf( outfile, "\tmovl %%esp, %%ebp\n" ); + + /* Save the 32-bit registers */ + fprintf( outfile, "\tpushl %%ebx\n" ); + fprintf( outfile, "\tpushl %%esi\n" ); + fprintf( outfile, "\tpushl %%edi\n" ); + fprintf( outfile, "\t.byte 0x64\n\tmovl %%gs,(%d)\n", STRUCTOFFSET(TEB,gs_sel) ); + + /* Setup exception frame */ + fprintf( outfile, "\t.byte 0x64\n\tpushl (%d)\n", STACKOFFSET ); + fprintf( outfile, "\tpushl 16(%%ebp)\n" ); /* handler */ + fprintf( outfile, "\t.byte 0x64\n\tpushl (%d)\n", STRUCTOFFSET(TEB,Tib.ExceptionList) ); + fprintf( outfile, "\t.byte 0x64\n\tmovl %%esp,(%d)\n", STRUCTOFFSET(TEB,Tib.ExceptionList) ); + + /* Call the actual CallTo16 routine (simulate a lcall) */ + fprintf( outfile, "\tpushl %%cs\n" ); + fprintf( outfile, "\tcall .L%s\n", name ); + + /* Remove exception frame */ + fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STRUCTOFFSET(TEB,Tib.ExceptionList) ); + fprintf( outfile, "\taddl $4, %%esp\n" ); + fprintf( outfile, "\t.byte 0x64\n\tpopl (%d)\n", STACKOFFSET ); + + if ( !reg_func ) + { + /* Convert return value */ + fprintf( outfile, "\tandl $0xffff,%%eax\n" ); + fprintf( outfile, "\tshll $16,%%edx\n" ); + fprintf( outfile, "\torl %%edx,%%eax\n" ); + } + else + { + /* + * Modify CONTEXT86 structure to contain new values + * + * NOTE: We restore only EAX, EBX, EDX, EDX, EBP, and ESP. + * The segment registers as well as ESI and EDI should + * not be modified by a well-behaved 16-bit routine in + * any case. [If necessary, we could restore them as well, + * at the cost of a somewhat less efficient return path.] + */ + + fprintf( outfile, "\tmovl %d(%%esp), %%edi\n", STACK32OFFSET(target) - STACK32OFFSET(edi)); + /* everything above edi has been popped already */ + + fprintf( outfile, "\tmovl %%eax, %d(%%edi)\n", CONTEXTOFFSET(Eax) ); + fprintf( outfile, "\tmovl %%ebx, %d(%%edi)\n", CONTEXTOFFSET(Ebx) ); + fprintf( outfile, "\tmovl %%ecx, %d(%%edi)\n", CONTEXTOFFSET(Ecx) ); + fprintf( outfile, "\tmovl %%edx, %d(%%edi)\n", CONTEXTOFFSET(Edx) ); + fprintf( outfile, "\tmovl %%ebp, %d(%%edi)\n", CONTEXTOFFSET(Ebp) ); + fprintf( outfile, "\tmovl %%esi, %d(%%edi)\n", CONTEXTOFFSET(Esp) ); + /* The return glue code saved %esp into %esi */ + } + + /* Restore the 32-bit registers */ + fprintf( outfile, "\tpopl %%edi\n" ); + fprintf( outfile, "\tpopl %%esi\n" ); + fprintf( outfile, "\tpopl %%ebx\n" ); + + /* Function exit sequence */ + fprintf( outfile, "\tpopl %%ebp\n" ); + fprintf( outfile, "\tret $12\n" ); + + + /* Start of the actual CallTo16 routine */ + + fprintf( outfile, ".L%s:\n", name ); + + /* Switch to the 16-bit stack */ + fprintf( outfile, "\tmovl %%esp,%%edx\n" ); +#ifdef __svr4__ + fprintf( outfile,"\tdata16\n"); +#endif + fprintf( outfile, "\t.byte 0x64\n\tmovw (%d),%%ss\n", STACKOFFSET + 2); + fprintf( outfile, "\t.byte 0x64\n\tmovw (%d),%%sp\n", STACKOFFSET ); + fprintf( outfile, "\t.byte 0x64\n\tmovl %%edx,(%d)\n", STACKOFFSET ); + + /* Make %bp point to the previous stackframe (built by CallFrom16) */ + fprintf( outfile, "\tmovzwl %%sp,%%ebp\n" ); + fprintf( outfile, "\tleal %d(%%ebp),%%ebp\n", STACK16OFFSET(bp) ); + + /* Add the specified offset to the new sp */ + fprintf( outfile, "\tsubw %d(%%edx), %%sp\n", STACK32OFFSET(nb_args) ); + + if (reg_func) + { + /* Push the called routine address */ + fprintf( outfile, "\tmovl %d(%%edx),%%edx\n", STACK32OFFSET(target) ); + fprintf( outfile, "\tpushw %d(%%edx)\n", CONTEXTOFFSET(SegCs) ); + fprintf( outfile, "\tpushw %d(%%edx)\n", CONTEXTOFFSET(Eip) ); + + /* Get the registers */ + fprintf( outfile, "\tpushw %d(%%edx)\n", CONTEXTOFFSET(SegDs) ); + fprintf( outfile, "\tpushl %d(%%edx)\n", CONTEXTOFFSET(SegEs) ); + fprintf( outfile, "\tpopl %%es\n" ); + fprintf( outfile, "\tpushl %d(%%edx)\n", CONTEXTOFFSET(SegFs) ); + fprintf( outfile, "\tpopl %%fs\n" ); + fprintf( outfile, "\tpushl %d(%%edx)\n", CONTEXTOFFSET(SegGs) ); + fprintf( outfile, "\tpopl %%gs\n" ); + fprintf( outfile, "\tmovl %d(%%edx),%%ebp\n", CONTEXTOFFSET(Ebp) ); + fprintf( outfile, "\tmovl %d(%%edx),%%esi\n", CONTEXTOFFSET(Esi) ); + fprintf( outfile, "\tmovl %d(%%edx),%%edi\n", CONTEXTOFFSET(Edi) ); + fprintf( outfile, "\tmovl %d(%%edx),%%eax\n", CONTEXTOFFSET(Eax) ); + fprintf( outfile, "\tmovl %d(%%edx),%%ebx\n", CONTEXTOFFSET(Ebx) ); + fprintf( outfile, "\tmovl %d(%%edx),%%ecx\n", CONTEXTOFFSET(Ecx) ); + fprintf( outfile, "\tmovl %d(%%edx),%%edx\n", CONTEXTOFFSET(Edx) ); + + /* Get the 16-bit ds */ + fprintf( outfile, "\tpopw %%ds\n" ); + } + else /* not a register function */ + { + /* Push the called routine address */ + fprintf( outfile, "\tpushl %d(%%edx)\n", STACK32OFFSET(target) ); + + /* Set %fs and %gs to the value saved by the last CallFrom16 */ + fprintf( outfile, "\tpushw %d(%%ebp)\n", STACK16OFFSET(fs)-STACK16OFFSET(bp) ); + fprintf( outfile, "\tpopw %%fs\n" ); + fprintf( outfile, "\tpushw %d(%%ebp)\n", STACK16OFFSET(gs)-STACK16OFFSET(bp) ); + fprintf( outfile, "\tpopw %%gs\n" ); + + /* Set %ds and %es (and %ax just in case) equal to %ss */ + fprintf( outfile, "\tmovw %%ss,%%ax\n" ); + fprintf( outfile, "\tmovw %%ax,%%ds\n" ); + fprintf( outfile, "\tmovw %%ax,%%es\n" ); + } + + /* Jump to the called routine */ + fprintf( outfile, "\t.byte 0x66\n" ); + fprintf( outfile, "\tlret\n" ); + + /* Function footer */ + function_footer( outfile, name ); +} + + +/******************************************************************* + * BuildRet16Func + * + * Build the return code for 16-bit callbacks + */ +static void BuildRet16Func( FILE *outfile ) +{ + function_header( outfile, "CallTo16_Ret" ); + + /* Save %esp into %esi */ + fprintf( outfile, "\tmovl %%esp,%%esi\n" ); + + /* Restore 32-bit segment registers */ + + fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_DataSelector") "-" __ASM_NAME("Call16_Ret_Start") ",%%edi\n" ); +#ifdef __svr4__ + fprintf( outfile, "\tdata16\n"); +#endif + fprintf( outfile, "\tmovw %%di,%%ds\n" ); +#ifdef __svr4__ + fprintf( outfile, "\tdata16\n"); +#endif + fprintf( outfile, "\tmovw %%di,%%es\n" ); + + fprintf( outfile, "\t.byte 0x2e\n\tmovl " __ASM_NAME("CallTo16_TebSelector") "-" __ASM_NAME("Call16_Ret_Start") ",%%fs\n" ); + + fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%gs\n", STRUCTOFFSET(TEB,gs_sel) ); + + /* Restore the 32-bit stack */ + +#ifdef __svr4__ + fprintf( outfile, "\tdata16\n"); +#endif + fprintf( outfile, "\tmovw %%di,%%ss\n" ); + fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%esp\n", STACKOFFSET ); + + /* Return to caller */ + + fprintf( outfile, "\tlret\n" ); + + /* Function footer */ + function_footer( outfile, "CallTo16_Ret" ); + + /* Declare the return address and data selector variables */ + + fprintf( outfile, "\n\t.align %d\n", get_alignment(4) ); + fprintf( outfile, "\t.globl " __ASM_NAME("CallTo16_DataSelector") "\n" ); + fprintf( outfile, __ASM_NAME("CallTo16_DataSelector") ":\t.long 0\n" ); + fprintf( outfile, "\t.globl " __ASM_NAME("CallTo16_TebSelector") "\n" ); + fprintf( outfile, __ASM_NAME("CallTo16_TebSelector") ":\t.long 0\n" ); +} + + +/******************************************************************* + * BuildCallTo32CBClient + * + * Call a CBClient relay stub from 32-bit code (KERNEL.620). + * + * Since the relay stub is itself 32-bit, this should not be a problem; + * unfortunately, the relay stubs are expected to switch back to a + * 16-bit stack (and 16-bit code) after completion :-( + * + * This would conflict with our 16- vs. 32-bit stack handling, so + * we simply switch *back* to our 32-bit stack before returning to + * the caller ... + * + * The CBClient relay stub expects to be called with the following + * 16-bit stack layout, and with ebp and ebx pointing into the 16-bit + * stack at the designated places: + * + * ... + * (ebp+14) original arguments to the callback routine + * (ebp+10) far return address to original caller + * (ebp+6) Thunklet target address + * (ebp+2) Thunklet relay ID code + * (ebp) BP (saved by CBClientGlueSL) + * (ebp-2) SI (saved by CBClientGlueSL) + * (ebp-4) DI (saved by CBClientGlueSL) + * (ebp-6) DS (saved by CBClientGlueSL) + * + * ... buffer space used by the 16-bit side glue for temp copies + * + * (ebx+4) far return address to 16-bit side glue code + * (ebx) saved 16-bit ss:sp (pointing to ebx+4) + * + * The 32-bit side glue code accesses both the original arguments (via ebp) + * and the temporary copies prepared by the 16-bit side glue (via ebx). + * After completion, the stub will load ss:sp from the buffer at ebx + * and perform a far return to 16-bit code. + * + * To trick the relay stub into returning to us, we replace the 16-bit + * return address to the glue code by a cs:ip pair pointing to our + * return entry point (the original return address is saved first). + * Our return stub thus called will then reload the 32-bit ss:esp and + * return to 32-bit code (by using and ss:esp value that we have also + * pushed onto the 16-bit stack before and a cs:eip values found at + * that position on the 32-bit stack). The ss:esp to be restored is + * found relative to the 16-bit stack pointer at: + * + * (ebx-4) ss (flat) + * (ebx-8) sp (32-bit stack pointer) + * + * The second variant of this routine, CALL32_CBClientEx, which is used + * to implement KERNEL.621, has to cope with yet another problem: Here, + * the 32-bit side directly returns to the caller of the CBClient thunklet, + * restoring registers saved by CBClientGlueSL and cleaning up the stack. + * As we have to return to our 32-bit code first, we have to adapt the + * layout of our temporary area so as to include values for the registers + * that are to be restored, and later (in the implementation of KERNEL.621) + * we *really* restore them. The return stub restores DS, DI, SI, and BP + * from the stack, skips the next 8 bytes (CBClient relay code / target), + * and then performs a lret NN, where NN is the number of arguments to be + * removed. Thus, we prepare our temporary area as follows: + * + * (ebx+22) 16-bit cs (this segment) + * (ebx+20) 16-bit ip ('16-bit' return entry point) + * (ebx+16) 32-bit ss (flat) + * (ebx+12) 32-bit sp (32-bit stack pointer) + * (ebx+10) 16-bit bp (points to ebx+24) + * (ebx+8) 16-bit si (ignored) + * (ebx+6) 16-bit di (ignored) + * (ebx+4) 16-bit ds (we actually use the flat DS here) + * (ebx+2) 16-bit ss (16-bit stack segment) + * (ebx+0) 16-bit sp (points to ebx+4) + * + * Note that we ensure that DS is not changed and remains the flat segment, + * and the 32-bit stack pointer our own return stub needs fits just + * perfectly into the 8 bytes that are skipped by the Windows stub. + * One problem is that we have to determine the number of removed arguments, + * as these have to be really removed in KERNEL.621. Thus, the BP value + * that we place in the temporary area to be restored, contains the value + * that SP would have if no arguments were removed. By comparing the actual + * value of SP with this value in our return stub we can compute the number + * of removed arguments. This is then returned to KERNEL.621. + * + * The stack layout of this function: + * (ebp+20) nArgs pointer to variable receiving nr. of args (Ex only) + * (ebp+16) esi pointer to caller's esi value + * (ebp+12) arg ebp value to be set for relay stub + * (ebp+8) func CBClient relay stub address + * (ebp+4) ret addr + * (ebp) ebp + */ +static void BuildCallTo32CBClient( FILE *outfile, BOOL isEx ) +{ + const char *name = isEx? "CBClientEx" : "CBClient"; + int size = isEx? 24 : 12; + + /* Function header */ + + fprintf( outfile, "\n\t.align %d\n", get_alignment(4) ); + fprintf( outfile, "\t.globl " __ASM_NAME("CALL32_%s") "\n", name ); + fprintf( outfile, __ASM_NAME("CALL32_%s") ":\n", name ); + + /* Entry code */ + + fprintf( outfile, "\tpushl %%ebp\n" ); + fprintf( outfile, "\tmovl %%esp,%%ebp\n" ); + fprintf( outfile, "\tpushl %%edi\n" ); + fprintf( outfile, "\tpushl %%esi\n" ); + fprintf( outfile, "\tpushl %%ebx\n" ); + + /* Get the 16-bit stack */ + + fprintf( outfile, "\t.byte 0x64\n\tmovl (%d),%%ebx\n", STACKOFFSET); + + /* Convert it to a flat address */ + + fprintf( outfile, "\tshldl $16,%%ebx,%%eax\n" ); + fprintf( outfile, "\tandl $0xfff8,%%eax\n" ); + fprintf( outfile, "\tshrl $1,%%eax\n" ); + fprintf( outfile, "\tmovl " __ASM_NAME("wine_ldt_copy") "(%%eax),%%esi\n" ); + fprintf( outfile, "\tmovw %%bx,%%ax\n" ); + fprintf( outfile, "\taddl %%eax,%%esi\n" ); + + /* Allocate temporary area (simulate STACK16_PUSH) */ + + fprintf( outfile, "\tpushf\n" ); + fprintf( outfile, "\tcld\n" ); + fprintf( outfile, "\tleal -%d(%%esi), %%edi\n", size ); + fprintf( outfile, "\tmovl $%d, %%ecx\n", sizeof(STACK16FRAME) ); + fprintf( outfile, "\trep\n\tmovsb\n" ); + fprintf( outfile, "\tpopf\n" ); + + fprintf( outfile, "\t.byte 0x64\n\tsubw $%d,(%d)\n", size, STACKOFFSET ); + + fprintf( outfile, "\tpushl %%edi\n" ); /* remember address */ + + /* Set up temporary area */ + + if ( !isEx ) + { + fprintf( outfile, "\tleal 4(%%edi), %%edi\n" ); + + fprintf( outfile, "\tleal -8(%%esp), %%eax\n" ); + fprintf( outfile, "\tmovl %%eax, -8(%%edi)\n" ); /* 32-bit sp */ + + fprintf( outfile, "\tmovw %%ss, %%ax\n" ); + fprintf( outfile, "\tandl $0x0000ffff, %%eax\n" ); + fprintf( outfile, "\tmovl %%eax, -4(%%edi)\n" ); /* 32-bit ss */ + + fprintf( outfile, "\taddl $%d, %%ebx\n", sizeof(STACK16FRAME)-size+4 + 4 ); + fprintf( outfile, "\tmovl %%ebx, 0(%%edi)\n" ); /* 16-bit ss:sp */ + + fprintf( outfile, "\tmovl " __ASM_NAME("CALL32_%s_RetAddr") ", %%eax\n", name ); + fprintf( outfile, "\tmovl %%eax, 4(%%edi)\n" ); /* overwrite return address */ + } + else + { + fprintf( outfile, "\taddl $%d, %%ebx\n", sizeof(STACK16FRAME)-size+4 ); + fprintf( outfile, "\tmovl %%ebx, 0(%%edi)\n" ); + + fprintf( outfile, "\tmovw %%ds, %%ax\n" ); + fprintf( outfile, "\tmovw %%ax, 4(%%edi)\n" ); + + fprintf( outfile, "\taddl $20, %%ebx\n" ); + fprintf( outfile, "\tmovw %%bx, 10(%%edi)\n" ); + + fprintf( outfile, "\tleal -8(%%esp), %%eax\n" ); + fprintf( outfile, "\tmovl %%eax, 12(%%edi)\n" ); + + fprintf( outfile, "\tmovw %%ss, %%ax\n" ); + fprintf( outfile, "\tandl $0x0000ffff, %%eax\n" ); + fprintf( outfile, "\tmovl %%eax, 16(%%edi)\n" ); + + fprintf( outfile, "\tmovl " __ASM_NAME("CALL32_%s_RetAddr") ", %%eax\n", name ); + fprintf( outfile, "\tmovl %%eax, 20(%%edi)\n" ); + } + + /* Set up registers and call CBClient relay stub (simulating a far call) */ + + fprintf( outfile, "\tmovl 16(%%ebp), %%esi\n" ); + fprintf( outfile, "\tmovl (%%esi), %%esi\n" ); + + fprintf( outfile, "\tmovl %%edi, %%ebx\n" ); + fprintf( outfile, "\tmovl 8(%%ebp), %%eax\n" ); + fprintf( outfile, "\tmovl 12(%%ebp), %%ebp\n" ); + + fprintf( outfile, "\tpushl %%cs\n" ); + fprintf( outfile, "\tcall *%%eax\n" ); + + /* Return new esi value to caller */ + + fprintf( outfile, "\tmovl 32(%%esp), %%edi\n" ); + fprintf( outfile, "\tmovl %%esi, (%%edi)\n" ); + + /* Cleanup temporary area (simulate STACK16_POP) */ + + fprintf( outfile, "\tpop %%esi\n" ); + + fprintf( outfile, "\tpushf\n" ); + fprintf( outfile, "\tstd\n" ); + fprintf( outfile, "\tdec %%esi\n" ); + fprintf( outfile, "\tleal %d(%%esi), %%edi\n", size ); + fprintf( outfile, "\tmovl $%d, %%ecx\n", sizeof(STACK16FRAME) ); + fprintf( outfile, "\trep\n\tmovsb\n" ); + fprintf( outfile, "\tpopf\n" ); + + fprintf( outfile, "\t.byte 0x64\n\taddw $%d,(%d)\n", size, STACKOFFSET ); + + /* Return argument size to caller */ + if ( isEx ) + { + fprintf( outfile, "\tmovl 32(%%esp), %%ebx\n" ); + fprintf( outfile, "\tmovl %%ebp, (%%ebx)\n" ); + } + + /* Restore registers and return */ + + fprintf( outfile, "\tpopl %%ebx\n" ); + fprintf( outfile, "\tpopl %%esi\n" ); + fprintf( outfile, "\tpopl %%edi\n" ); + fprintf( outfile, "\tpopl %%ebp\n" ); + fprintf( outfile, "\tret\n" ); + fprintf( outfile, ".size " __ASM_NAME("CALL32_%s") ", . - " __ASM_NAME("CALL32_%s") "\n", name, name ); +} + +static void BuildCallTo32CBClientRet( FILE *outfile, BOOL isEx ) +{ + const char *name = isEx? "CBClientEx" : "CBClient"; + + /* '16-bit' return stub */ + + fprintf( outfile, "\n\t.globl " __ASM_NAME("CALL32_%s_Ret") "\n", name ); + fprintf( outfile, __ASM_NAME("CALL32_%s_Ret") ":\n", name ); + + if ( !isEx ) + { + fprintf( outfile, "\tmovzwl %%sp, %%ebx\n" ); + fprintf( outfile, "\tlssl %%ss:-16(%%ebx), %%esp\n" ); + } + else + { + fprintf( outfile, "\tmovzwl %%bp, %%ebx\n" ); + fprintf( outfile, "\tsubw %%bp, %%sp\n" ); + fprintf( outfile, "\tmovzwl %%sp, %%ebp\n" ); + fprintf( outfile, "\tlssl %%ss:-12(%%ebx), %%esp\n" ); + } + fprintf( outfile, "\tlret\n" ); + + fprintf( outfile, ".size " __ASM_NAME("CALL32_%s_Ret") ", . - " __ASM_NAME("CALL32_%s_Ret") "\n", name, name ); + + /* Declare the return address variable */ + + fprintf( outfile, "\n\t.globl " __ASM_NAME("CALL32_%s_RetAddr") "\n", name ); + fprintf( outfile, __ASM_NAME("CALL32_%s_RetAddr") ":\t.long 0\n", name ); +} + + +/******************************************************************* + * BuildCallFrom32Regs + * + * Build a 32-bit-to-Wine call-back function for a 'register' function. + * 'args' is the number of dword arguments. + * + * Stack layout: + * ... + * (ebp+12) first arg + * (ebp+8) ret addr to user code + * (ebp+4) ret addr to relay code + * (ebp+0) saved ebp + * (ebp-128) buffer area to allow stack frame manipulation + * (ebp-332) CONTEXT86 struct + * (ebp-336) CONTEXT86 *argument + * .... other arguments copied from (ebp+12) + * + * The entry point routine is called with a CONTEXT* extra argument, + * following the normal args. In this context structure, EIP_reg + * contains the return address to user code, and ESP_reg the stack + * pointer on return (with the return address and arguments already + * removed). + */ +static void BuildCallFrom32Regs( FILE *outfile ) +{ + static const int STACK_SPACE = 128 + sizeof(CONTEXT86); + + /* Function header */ + + function_header( outfile, "__wine_call_from_32_regs" ); + + /* Allocate some buffer space on the stack */ + + fprintf( outfile, "\tpushl %%ebp\n" ); + fprintf( outfile, "\tmovl %%esp,%%ebp\n "); + fprintf( outfile, "\tleal -%d(%%esp), %%esp\n", STACK_SPACE ); + + /* Build the context structure */ + + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Eax) - STACK_SPACE ); + fprintf( outfile, "\tpushfl\n" ); + fprintf( outfile, "\tpopl %%eax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(EFlags) - STACK_SPACE ); + fprintf( outfile, "\tmovl 0(%%ebp),%%eax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Ebp) - STACK_SPACE ); + fprintf( outfile, "\tmovl %%ebx,%d(%%ebp)\n", CONTEXTOFFSET(Ebx) - STACK_SPACE ); + fprintf( outfile, "\tmovl %%ecx,%d(%%ebp)\n", CONTEXTOFFSET(Ecx) - STACK_SPACE ); + fprintf( outfile, "\tmovl %%edx,%d(%%ebp)\n", CONTEXTOFFSET(Edx) - STACK_SPACE ); + fprintf( outfile, "\tmovl %%esi,%d(%%ebp)\n", CONTEXTOFFSET(Esi) - STACK_SPACE ); + fprintf( outfile, "\tmovl %%edi,%d(%%ebp)\n", CONTEXTOFFSET(Edi) - STACK_SPACE ); + + fprintf( outfile, "\txorl %%eax,%%eax\n" ); + fprintf( outfile, "\tmovw %%cs,%%ax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegCs) - STACK_SPACE ); + fprintf( outfile, "\tmovw %%es,%%ax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegEs) - STACK_SPACE ); + fprintf( outfile, "\tmovw %%fs,%%ax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegFs) - STACK_SPACE ); + fprintf( outfile, "\tmovw %%gs,%%ax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegGs) - STACK_SPACE ); + fprintf( outfile, "\tmovw %%ss,%%ax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegSs) - STACK_SPACE ); + fprintf( outfile, "\tmovw %%ds,%%ax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(SegDs) - STACK_SPACE ); + fprintf( outfile, "\tmovw %%ax,%%es\n" ); /* set %es equal to %ds just in case */ + + fprintf( outfile, "\tmovl $0x%x,%%eax\n", CONTEXT86_FULL ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(ContextFlags) - STACK_SPACE ); + + fprintf( outfile, "\tmovl 8(%%ebp),%%eax\n" ); /* Get %eip at time of call */ + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Eip) - STACK_SPACE ); + + /* Transfer the arguments */ + + fprintf( outfile, "\tmovl 4(%%ebp),%%ebx\n" ); /* get relay code addr */ + fprintf( outfile, "\tpushl %%esp\n" ); /* push ptr to context struct */ + fprintf( outfile, "\tmovzbl 4(%%ebx),%%ecx\n" ); /* fetch number of args to copy */ + fprintf( outfile, "\tjecxz 1f\n" ); + fprintf( outfile, "\tsubl %%ecx,%%esp\n" ); + fprintf( outfile, "\tleal 12(%%ebp),%%esi\n" ); /* get %esp at time of call */ + fprintf( outfile, "\tmovl %%esp,%%edi\n" ); + fprintf( outfile, "\tshrl $2,%%ecx\n" ); + fprintf( outfile, "\tcld\n" ); + fprintf( outfile, "\trep\n\tmovsl\n" ); /* copy args */ + + fprintf( outfile, "1:\tmovzbl 5(%%ebx),%%eax\n" ); /* fetch number of args to remove */ + fprintf( outfile, "\tleal 12(%%ebp,%%eax),%%eax\n" ); + fprintf( outfile, "\tmovl %%eax,%d(%%ebp)\n", CONTEXTOFFSET(Esp) - STACK_SPACE ); + + /* Call the entry point */ + + fprintf( outfile, "\tcall *0(%%ebx)\n" ); + fprintf( outfile, "\tleal -%d(%%ebp),%%ecx\n", STACK_SPACE ); + + /* Restore the context structure */ + + fprintf( outfile, "2:\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegEs) ); + fprintf( outfile, "\tpopl %%es\n" ); + fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegFs) ); + fprintf( outfile, "\tpopl %%fs\n" ); + fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegGs) ); + fprintf( outfile, "\tpopl %%gs\n" ); + + fprintf( outfile, "\tmovl %d(%%ecx),%%edi\n", CONTEXTOFFSET(Edi) ); + fprintf( outfile, "\tmovl %d(%%ecx),%%esi\n", CONTEXTOFFSET(Esi) ); + fprintf( outfile, "\tmovl %d(%%ecx),%%edx\n", CONTEXTOFFSET(Edx) ); + fprintf( outfile, "\tmovl %d(%%ecx),%%ebx\n", CONTEXTOFFSET(Ebx) ); + fprintf( outfile, "\tmovl %d(%%ecx),%%eax\n", CONTEXTOFFSET(Eax) ); + fprintf( outfile, "\tmovl %d(%%ecx),%%ebp\n", CONTEXTOFFSET(Ebp) ); + + fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegSs) ); + fprintf( outfile, "\tpopl %%ss\n" ); + fprintf( outfile, "\tmovl %d(%%ecx),%%esp\n", CONTEXTOFFSET(Esp) ); + + fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(EFlags) ); + fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegCs) ); + fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(Eip) ); + fprintf( outfile, "\tpushl %d(%%ecx)\n", CONTEXTOFFSET(SegDs) ); + fprintf( outfile, "\tmovl %d(%%ecx),%%ecx\n", CONTEXTOFFSET(Ecx) ); + + fprintf( outfile, "\tpopl %%ds\n" ); + fprintf( outfile, "\tiret\n" ); + function_footer( outfile, "__wine_call_from_32_regs" ); + + function_header( outfile, "__wine_call_from_32_restore_regs" ); + fprintf( outfile, "\tleal 4(%%esp),%%ecx\n" ); + fprintf( outfile, "\tjmp 2b\n" ); + function_footer( outfile, "__wine_call_from_32_restore_regs" ); +} + + +/******************************************************************* + * BuildPendingEventCheck + * + * Build a function that checks whether there are any + * pending DPMI events. + * + * Stack layout: + * + * (sp+12) long eflags + * (sp+6) long cs + * (sp+2) long ip + * (sp) word fs + * + * On entry to function, fs register points to a valid TEB. + * On exit from function, stack will be popped. + */ +static void BuildPendingEventCheck( FILE *outfile ) +{ + /* Function header */ + + function_header( outfile, "DPMI_PendingEventCheck" ); + + /* Check for pending events. */ + + fprintf( outfile, "\t.byte 0x64\n\ttestl $0xffffffff,(%d)\n", + STRUCTOFFSET(TEB,vm86_pending) ); + fprintf( outfile, "\tje " __ASM_NAME("DPMI_PendingEventCheck_Cleanup") "\n" ); + + fprintf( outfile, "\t.byte 0x64\n\ttestl $0xffffffff,(%d)\n", + STRUCTOFFSET(TEB,dpmi_vif) ); + + fprintf( outfile, "\tje " __ASM_NAME("DPMI_PendingEventCheck_Cleanup") "\n" ); + + /* Process pending events. */ + + fprintf( outfile, "\tsti\n" ); + + /* Start cleanup. Restore fs register. */ + + fprintf( outfile, ".globl " __ASM_NAME("DPMI_PendingEventCheck_Cleanup") "\n" ); + fprintf( outfile, __ASM_NAME("DPMI_PendingEventCheck_Cleanup") ":\n" ); + fprintf( outfile, "\tpopw %%fs\n" ); + + /* Return from function. */ + + fprintf( outfile, ".globl " __ASM_NAME("DPMI_PendingEventCheck_Return") "\n" ); + fprintf( outfile, __ASM_NAME("DPMI_PendingEventCheck_Return") ":\n" ); + fprintf( outfile, "\tiret\n" ); + + function_footer( outfile, "DPMI_PendingEventCheck" ); +} + + +/******************************************************************* + * BuildRelays16 + * + * Build all the 16-bit relay callbacks + */ +void BuildRelays16( FILE *outfile ) +{ + /* File header */ + + fprintf( outfile, "/* File generated automatically. Do not edit! */\n\n" ); + fprintf( outfile, "\t.text\n" ); + + fprintf( outfile, __ASM_NAME("__wine_spec_thunk_text_16") ":\n\n" ); + + fprintf( outfile, __ASM_NAME("Call16_Start") ":\n" ); + fprintf( outfile, "\t.globl " __ASM_NAME("Call16_Start") "\n" ); + fprintf( outfile, "\t.byte 0\n\n" ); + + /* Standard CallFrom16 routine (WORD return) */ + BuildCallFrom16Core( outfile, FALSE, FALSE, TRUE ); + + /* Standard CallFrom16 routine (DWORD return) */ + BuildCallFrom16Core( outfile, FALSE, FALSE, FALSE ); + + /* Register CallFrom16 routine */ + BuildCallFrom16Core( outfile, TRUE, FALSE, FALSE ); + + /* C16ThkSL CallFrom16 routine */ + BuildCallFrom16Core( outfile, FALSE, TRUE, FALSE ); + + /* Standard CallTo16 routine */ + BuildCallTo16Core( outfile, 0 ); + + /* Register CallTo16 routine */ + BuildCallTo16Core( outfile, 1 ); + + /* CBClientThunkSL routine */ + BuildCallTo32CBClient( outfile, FALSE ); + + /* CBClientThunkSLEx routine */ + BuildCallTo32CBClient( outfile, TRUE ); + + fprintf( outfile, __ASM_NAME("Call16_End") ":\n" ); + fprintf( outfile, "\t.globl " __ASM_NAME("Call16_End") "\n" ); + fprintf( outfile, "\t.size " __ASM_NAME("__wine_spec_thunk_text_16") ",. - " __ASM_NAME("__wine_spec_thunk_text_16") "\n" ); + + /* The whole Call16_Ret segment must lie within the .data section */ + fprintf( outfile, "\n\t.data\n" ); + fprintf( outfile, __ASM_NAME("__wine_spec_thunk_data_16") ":\n\n" ); + fprintf( outfile, "\t.globl " __ASM_NAME("Call16_Ret_Start") "\n" ); + fprintf( outfile, __ASM_NAME("Call16_Ret_Start") ":\n" ); + + /* Standard CallTo16 return stub */ + BuildRet16Func( outfile ); + + /* CBClientThunkSL return stub */ + BuildCallTo32CBClientRet( outfile, FALSE ); + + /* CBClientThunkSLEx return stub */ + BuildCallTo32CBClientRet( outfile, TRUE ); + + /* Pending DPMI events check stub */ + BuildPendingEventCheck( outfile ); + + /* End of Call16_Ret segment */ + fprintf( outfile, "\n\t.globl " __ASM_NAME("Call16_Ret_End") "\n" ); + fprintf( outfile, __ASM_NAME("Call16_Ret_End") ":\n" ); + fprintf( outfile, "\t.size " __ASM_NAME("__wine_spec_thunk_data_16") ",. - " __ASM_NAME("__wine_spec_thunk_data_16") "\n" ); +} + +/******************************************************************* + * BuildRelays32 + * + * Build all the 32-bit relay callbacks + */ +void BuildRelays32( FILE *outfile ) +{ + /* File header */ + + fprintf( outfile, "/* File generated automatically. Do not edit! */\n\n" ); + fprintf( outfile, "\t.text\n" ); + fprintf( outfile, __ASM_NAME("__wine_spec_thunk_text_32") ":\n\n" ); + + /* 32-bit register entry point */ + BuildCallFrom32Regs( outfile ); + + fprintf( outfile, "\t.size " __ASM_NAME("__wine_spec_thunk_text_32") ",. - " __ASM_NAME("__wine_spec_thunk_text_32") "\n" ); +} + +#else /* __i386__ */ + +void BuildRelays16( FILE *outfile ) +{ + fprintf( outfile, "/* File not used with this architecture. Do not edit! */\n\n" ); +} + +void BuildRelays32( FILE *outfile ) +{ + fprintf( outfile, "/* File not used with this architecture. Do not edit! */\n\n" ); +} + +#endif /* __i386__ */ diff --git a/reactos/tools/winebuild/res16.c b/reactos/tools/winebuild/res16.c new file mode 100644 index 00000000000..285e890859f --- /dev/null +++ b/reactos/tools/winebuild/res16.c @@ -0,0 +1,360 @@ +/* + * Builtin dlls resource 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#include +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_SYS_MMAN_H +#include +#endif + +#include "winglue.h" +#include "build.h" + +#define ALIGNMENT 2 /* alignment for resource data */ +#define ALIGN_MASK ((1 << ALIGNMENT) - 1) + +/* Unicode string or integer id */ +struct string_id +{ + char *str; /* ptr to string */ + WORD id; /* integer id if str is NULL */ +}; + +/* descriptor for a resource */ +struct resource +{ + struct string_id type; + struct string_id name; + const void *data; + unsigned int data_size; + WORD memopt; +}; + +/* type level of the resource tree */ +struct res_type +{ + const struct string_id *type; /* type name */ + const struct resource *res; /* first resource of this type */ + unsigned int nb_names; /* total number of names */ +}; + +/* top level of the resource tree */ +struct res_tree +{ + struct res_type *types; /* types array */ + unsigned int nb_types; /* total number of types */ +}; + +static const unsigned char *file_pos; /* current position in resource file */ +static const unsigned char *file_end; /* end of resource file */ +static const char *file_name; /* current resource file name */ + + +inline static struct resource *add_resource( DLLSPEC *spec ) +{ + spec->resources = xrealloc( spec->resources, (spec->nb_resources + 1) * sizeof(*spec->resources) ); + return &spec->resources[spec->nb_resources++]; +} + +static struct res_type *add_type( struct res_tree *tree, const struct resource *res ) +{ + struct res_type *type; + tree->types = xrealloc( tree->types, (tree->nb_types + 1) * sizeof(*tree->types) ); + type = &tree->types[tree->nb_types++]; + type->type = &res->type; + type->res = res; + type->nb_names = 0; + return type; +} + +/* get the next byte from the current resource file */ +static unsigned char get_byte(void) +{ + unsigned char ret = *file_pos++; + if (file_pos > file_end) fatal_error( "%s is a truncated/corrupted file\n", file_name ); + return ret; +} + +/* get the next word from the current resource file */ +static WORD get_word(void) +{ + /* might not be aligned */ +#ifdef WORDS_BIGENDIAN + unsigned char high = get_byte(); + unsigned char low = get_byte(); +#else + unsigned char low = get_byte(); + unsigned char high = get_byte(); +#endif + return low | (high << 8); +} + +/* get the next dword from the current resource file */ +static DWORD get_dword(void) +{ +#ifdef WORDS_BIGENDIAN + WORD high = get_word(); + WORD low = get_word(); +#else + WORD low = get_word(); + WORD high = get_word(); +#endif + return low | (high << 16); +} + +/* get a string from the current resource file */ +static void get_string( struct string_id *str ) +{ + if (*file_pos == 0xff) + { + get_byte(); /* skip the 0xff */ + str->str = NULL; + str->id = get_word(); + } + else + { + char *p = xmalloc( (strlen(file_pos) + 1) ); + str->str = p; + str->id = 0; + while ((*p++ = get_byte())); + } +} + +/* load the next resource from the current file */ +static void load_next_resource( DLLSPEC *spec ) +{ + struct resource *res = add_resource( spec ); + + get_string( &res->type ); + get_string( &res->name ); + res->memopt = get_word(); + res->data_size = get_dword(); + res->data = file_pos; + file_pos += res->data_size; + if (file_pos > file_end) fatal_error( "%s is a truncated/corrupted file\n", file_name ); +} + +/* load a Win16 .res file */ +void load_res16_file( const char *name, DLLSPEC *spec ) +{ + int fd; + void *base; + struct stat st; + + if ((fd = open( name, O_RDONLY )) == -1) fatal_perror( "Cannot open %s", name ); + if ((fstat( fd, &st ) == -1)) fatal_perror( "Cannot stat %s", name ); + if (!st.st_size) fatal_error( "%s is an empty file\n", name ); +#ifdef HAVE_MMAP + if ((base = mmap( NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0 )) == (void*)-1) +#endif /* HAVE_MMAP */ + { + base = xmalloc( st.st_size ); + if (read( fd, base, st.st_size ) != st.st_size) + fatal_error( "Cannot read %s\n", name ); + } + + file_name = name; + file_pos = base; + file_end = file_pos + st.st_size; + while (file_pos < file_end) load_next_resource( spec ); +} + +/* compare two strings/ids */ +static int cmp_string( const struct string_id *str1, const struct string_id *str2 ) +{ + if (!str1->str) + { + if (!str2->str) return str1->id - str2->id; + return 1; /* an id compares larger than a string */ + } + if (!str2->str) return -1; + return strcasecmp( str1->str, str2->str ); +} + +/* compare two resources for sorting the resource directory */ +/* resources are stored first by type, then by name */ +static int cmp_res( const void *ptr1, const void *ptr2 ) +{ + const struct resource *res1 = ptr1; + const struct resource *res2 = ptr2; + int ret; + + if ((ret = cmp_string( &res1->type, &res2->type ))) return ret; + return cmp_string( &res1->name, &res2->name ); +} + +/* build the 2-level (type,name) resource tree */ +static struct res_tree *build_resource_tree( DLLSPEC *spec ) +{ + int i; + struct res_tree *tree; + struct res_type *type = NULL; + + qsort( spec->resources, spec->nb_resources, sizeof(*spec->resources), cmp_res ); + + tree = xmalloc( sizeof(*tree) ); + tree->types = NULL; + tree->nb_types = 0; + + for (i = 0; i < spec->nb_resources; i++) + { + if (!i || cmp_string( &spec->resources[i].type, &spec->resources[i-1].type )) /* new type */ + type = add_type( tree, &spec->resources[i] ); + type->nb_names++; + } + return tree; +} + +/* free the resource tree */ +static void free_resource_tree( struct res_tree *tree ) +{ + free( tree->types ); + free( tree ); +} + +inline static void put_byte( unsigned char **buffer, unsigned char val ) +{ + *(*buffer)++ = val; +} + +inline static void put_word( unsigned char **buffer, WORD val ) +{ +#ifdef WORDS_BIGENDIAN + put_byte( buffer, HIBYTE(val) ); + put_byte( buffer, LOBYTE(val) ); +#else + put_byte( buffer, LOBYTE(val) ); + put_byte( buffer, HIBYTE(val) ); +#endif +} + +/* output a string preceded by its length */ +static void output_string( unsigned char **buffer, const char *str ) +{ + int len = strlen(str); + put_byte( buffer, len ); + while (len--) put_byte( buffer, *str++ ); +} + +/* output the resource data */ +int output_res16_data( FILE *outfile, DLLSPEC *spec ) +{ + const struct resource *res; + unsigned char *buffer, *p; + int i, total; + + if (!spec->nb_resources) return 0; + + for (i = total = 0, res = spec->resources; i < spec->nb_resources; i++, res++) + total += (res->data_size + ALIGN_MASK) & ~ALIGN_MASK; + + buffer = p = xmalloc( total ); + for (i = 0, res = spec->resources; i < spec->nb_resources; i++, res++) + { + memcpy( p, res->data, res->data_size ); + p += res->data_size; + while ((int)p & ALIGN_MASK) *p++ = 0; + } + dump_bytes( outfile, buffer, total, "resource_data", 1 ); + free( buffer ); + return total; +} + +/* output the resource definitions */ +int output_res16_directory( unsigned char *buffer, DLLSPEC *spec ) +{ + int i, offset, res_offset = 0; + unsigned int j; + struct res_tree *tree; + const struct res_type *type; + const struct resource *res; + unsigned char *start = buffer; + + tree = build_resource_tree( spec ); + + offset = 4; /* alignment + terminator */ + offset += tree->nb_types * 8; /* typeinfo structures */ + offset += spec->nb_resources * 12; /* nameinfo structures */ + + put_word( &buffer, ALIGNMENT ); + + /* type and name structures */ + + for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) + { + if (type->type->str) + { + put_word( &buffer, offset ); + offset += strlen(type->type->str) + 1; + } + else + put_word( &buffer, type->type->id | 0x8000 ); + + put_word( &buffer, type->nb_names ); + put_word( &buffer, 0 ); + put_word( &buffer, 0 ); + + for (j = 0, res = type->res; j < type->nb_names; j++, res++) + { + put_word( &buffer, res_offset >> ALIGNMENT ); + put_word( &buffer, (res->data_size + ALIGN_MASK) >> ALIGNMENT ); + put_word( &buffer, res->memopt ); + if (res->name.str) + { + put_word( &buffer, offset ); + offset += strlen(res->name.str) + 1; + } + else + put_word( &buffer, res->name.id | 0x8000 ); + put_word( &buffer, 0 ); + put_word( &buffer, 0 ); + res_offset += (res->data_size + ALIGN_MASK) & ~ALIGN_MASK; + } + } + put_word( &buffer, 0 ); /* terminator */ + + /* name strings */ + + for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) + { + if (type->type->str) output_string( &buffer, type->type->str ); + for (j = 0, res = type->res; j < type->nb_names; j++, res++) + { + if (res->name.str) output_string( &buffer, res->name.str ); + } + } + put_byte( &buffer, 0 ); /* names terminator */ + if ((buffer - start) & 1) put_byte( &buffer, 0 ); /* align on word boundary */ + + free_resource_tree( tree ); + return buffer - start; +} diff --git a/reactos/tools/winebuild/res32.c b/reactos/tools/winebuild/res32.c new file mode 100644 index 00000000000..1e4d28bde84 --- /dev/null +++ b/reactos/tools/winebuild/res32.c @@ -0,0 +1,489 @@ +/* + * Builtin dlls resource 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#include +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_SYS_MMAN_H +#include +#endif + +#include "winglue.h" +#include "build.h" + +/* Unicode string or integer id */ +struct string_id +{ + WCHAR *str; /* ptr to Unicode string */ + WORD id; /* integer id if str is NULL */ +}; + +/* descriptor for a resource */ +struct resource +{ + struct string_id type; + struct string_id name; + const void *data; + unsigned int data_size; + WORD lang; +}; + +/* name level of the resource tree */ +struct res_name +{ + const struct string_id *name; /* name */ + const struct resource *res; /* resource */ + int nb_languages; /* number of languages */ + unsigned int name_offset; /* offset of name in resource dir */ +}; + +/* type level of the resource tree */ +struct res_type +{ + const struct string_id *type; /* type name */ + struct res_name *names; /* names array */ + unsigned int nb_names; /* total number of names */ + unsigned int nb_id_names; /* number of names that have a numeric id */ + unsigned int name_offset; /* offset of type name in resource dir */ +}; + +/* top level of the resource tree */ +struct res_tree +{ + struct res_type *types; /* types array */ + unsigned int nb_types; /* total number of types */ +}; + +static const unsigned char *file_pos; /* current position in resource file */ +static const unsigned char *file_end; /* end of resource file */ +static const char *file_name; /* current resource file name */ + +/* size of a resource directory with n entries */ +#define RESDIR_SIZE(n) ((4 + 2 * (n)) * sizeof(int)) + + +inline static struct resource *add_resource( DLLSPEC *spec ) +{ + spec->resources = xrealloc( spec->resources, (spec->nb_resources + 1) * sizeof(spec->resources[0]) ); + return &spec->resources[spec->nb_resources++]; +} + +static inline unsigned int strlenW( const WCHAR *str ) +{ + const WCHAR *s = str; + while (*s) s++; + return s - str; +} + +static inline int strcmpW( const WCHAR *str1, const WCHAR *str2 ) +{ + while (*str1 && (*str1 == *str2)) { str1++; str2++; } + return *str1 - *str2; +} + +static struct res_name *add_name( struct res_type *type, const struct resource *res ) +{ + struct res_name *name; + type->names = xrealloc( type->names, (type->nb_names + 1) * sizeof(*type->names) ); + name = &type->names[type->nb_names++]; + name->name = &res->name; + name->res = res; + name->nb_languages = 1; + if (!name->name->str) type->nb_id_names++; + return name; +} + +static struct res_type *add_type( struct res_tree *tree, const struct resource *res ) +{ + struct res_type *type; + tree->types = xrealloc( tree->types, (tree->nb_types + 1) * sizeof(*tree->types) ); + type = &tree->types[tree->nb_types++]; + type->type = &res->type; + type->names = NULL; + type->nb_names = 0; + type->nb_id_names = 0; + return type; +} + +/* get the next word from the current resource file */ +static WORD get_word(void) +{ + WORD ret = *(const WORD *)file_pos; + file_pos += sizeof(WORD); + if (file_pos > file_end) fatal_error( "%s is a truncated file\n", file_name ); + return ret; +} + +/* get the next dword from the current resource file */ +static DWORD get_dword(void) +{ + DWORD ret = *(const DWORD *)file_pos; + file_pos += sizeof(DWORD); + if (file_pos > file_end) fatal_error( "%s is a truncated file\n", file_name ); + return ret; +} + +/* get a string from the current resource file */ +static void get_string( struct string_id *str ) +{ + if (*(const WCHAR *)file_pos == 0xffff) + { + get_word(); /* skip the 0xffff */ + str->str = NULL; + str->id = get_word(); + } + else + { + WCHAR *p = xmalloc( (strlenW((const WCHAR*)file_pos) + 1) * sizeof(WCHAR) ); + str->str = p; + str->id = 0; + while ((*p++ = get_word())); + } +} + +/* check the file header */ +/* all values must be zero except header size */ +static int check_header(void) +{ + if (get_dword()) return 0; /* data size */ + if (get_dword() != 32) return 0; /* header size */ + if (get_word() != 0xffff || get_word()) return 0; /* type, must be id 0 */ + if (get_word() != 0xffff || get_word()) return 0; /* name, must be id 0 */ + if (get_dword()) return 0; /* data version */ + if (get_word()) return 0; /* mem options */ + if (get_word()) return 0; /* language */ + if (get_dword()) return 0; /* version */ + if (get_dword()) return 0; /* characteristics */ + return 1; +} + +/* load the next resource from the current file */ +static void load_next_resource( DLLSPEC *spec ) +{ + DWORD hdr_size; + struct resource *res = add_resource( spec ); + + res->data_size = (get_dword() + 3) & ~3; + hdr_size = get_dword(); + if (hdr_size & 3) fatal_error( "%s header size not aligned\n", file_name ); + + res->data = file_pos - 2*sizeof(DWORD) + hdr_size; + get_string( &res->type ); + get_string( &res->name ); + if ((int)file_pos & 2) get_word(); /* align to dword boundary */ + get_dword(); /* skip data version */ + get_word(); /* skip mem options */ + res->lang = get_word(); + get_dword(); /* skip version */ + get_dword(); /* skip characteristics */ + + file_pos = (const char *)res->data + res->data_size; + if (file_pos > file_end) fatal_error( "%s is a truncated file\n", file_name ); +} + +/* load a Win32 .res file */ +int load_res32_file( const char *name, DLLSPEC *spec ) +{ + int fd, ret; + void *base; + struct stat st; + + if ((fd = open( name, O_RDONLY )) == -1) fatal_perror( "Cannot open %s", name ); + if ((fstat( fd, &st ) == -1)) fatal_perror( "Cannot stat %s", name ); + if (!st.st_size) fatal_error( "%s is an empty file\n", name ); +#ifdef HAVE_MMAP + if ((base = mmap( NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0 )) == (void*)-1) +#endif /* HAVE_MMAP */ + { + base = xmalloc( st.st_size ); + if (read( fd, base, st.st_size ) != st.st_size) + fatal_error( "Cannot read %s\n", name ); + } + + file_name = name; + file_pos = base; + file_end = file_pos + st.st_size; + if ((ret = check_header())) + { + while (file_pos < file_end) load_next_resource( spec ); + } + close( fd ); + return ret; +} + +/* compare two unicode strings/ids */ +static int cmp_string( const struct string_id *str1, const struct string_id *str2 ) +{ + if (!str1->str) + { + if (!str2->str) return str1->id - str2->id; + return 1; /* an id compares larger than a string */ + } + if (!str2->str) return -1; + return strcmpW( str1->str, str2->str ); +} + +/* compare two resources for sorting the resource directory */ +/* resources are stored first by type, then by name, then by language */ +static int cmp_res( const void *ptr1, const void *ptr2 ) +{ + const struct resource *res1 = ptr1; + const struct resource *res2 = ptr2; + int ret; + + if ((ret = cmp_string( &res1->type, &res2->type ))) return ret; + if ((ret = cmp_string( &res1->name, &res2->name ))) return ret; + return res1->lang - res2->lang; +} + +/* build the 3-level (type,name,language) resource tree */ +static struct res_tree *build_resource_tree( DLLSPEC *spec ) +{ + int i; + struct res_tree *tree; + struct res_type *type = NULL; + struct res_name *name = NULL; + + qsort( spec->resources, spec->nb_resources, sizeof(*spec->resources), cmp_res ); + + tree = xmalloc( sizeof(*tree) ); + tree->types = NULL; + tree->nb_types = 0; + + for (i = 0; i < spec->nb_resources; i++) + { + if (!i || cmp_string( &spec->resources[i].type, &spec->resources[i-1].type )) /* new type */ + { + type = add_type( tree, &spec->resources[i] ); + name = add_name( type, &spec->resources[i] ); + } + else if (cmp_string( &spec->resources[i].name, &spec->resources[i-1].name )) /* new name */ + { + name = add_name( type, &spec->resources[i] ); + } + else name->nb_languages++; + } + return tree; +} + +/* free the resource tree */ +static void free_resource_tree( struct res_tree *tree ) +{ + int i; + + for (i = 0; i < tree->nb_types; i++) free( tree->types[i].names ); + free( tree->types ); + free( tree ); +} + +/* output a Unicode string */ +static void output_string( FILE *outfile, const WCHAR *name ) +{ + int i, len = strlenW(name); + fprintf( outfile, "0x%04x", len ); + for (i = 0; i < len; i++) fprintf( outfile, ", 0x%04x", name[i] ); + fprintf( outfile, " /* " ); + for (i = 0; i < len; i++) fprintf( outfile, "%c", isprint((char)name[i]) ? (char)name[i] : '?' ); + fprintf( outfile, " */" ); +} + +/* output the resource definitions */ +void output_resources( FILE *outfile, DLLSPEC *spec ) +{ + int i, j, k, nb_id_types; + unsigned int n, offset, data_offset; + struct res_tree *tree; + struct res_type *type; + struct res_name *name; + const struct resource *res; + + if (!spec->nb_resources) return; + + tree = build_resource_tree( spec ); + + /* resource data */ + + for (i = 0, res = spec->resources; i < spec->nb_resources; i++, res++) + { + const unsigned int *p = res->data; + int size = res->data_size / 4; + /* dump data as ints to ensure correct alignment */ + fprintf( outfile, "static const unsigned int res_%d[%d] = {\n ", i, size ); + for (j = 0; j < size - 1; j++, p++) + { + fprintf( outfile, "0x%08x,", *p ); + if ((j % 8) == 7) fprintf( outfile, "\n " ); + } + fprintf( outfile, "0x%08x\n};\n\n", *p ); + } + + /* directory structures */ + + fprintf( outfile, "struct res_dir {\n" ); + fprintf( outfile, " unsigned int Characteristics;\n" ); + fprintf( outfile, " unsigned int TimeDateStamp;\n" ); + fprintf( outfile, " unsigned short MajorVersion, MinorVersion;\n" ); + fprintf( outfile, " unsigned short NumerOfNamedEntries, NumberOfIdEntries;\n};\n\n" ); + fprintf( outfile, "struct res_dir_entry {\n" ); + fprintf( outfile, " unsigned int Name;\n" ); + fprintf( outfile, " unsigned int OffsetToData;\n};\n\n" ); + fprintf( outfile, "struct res_data_entry {\n" ); + fprintf( outfile, " const unsigned int *OffsetToData;\n" ); + fprintf( outfile, " unsigned int Size;\n" ); + fprintf( outfile, " unsigned int CodePage;\n" ); + fprintf( outfile, " unsigned int ResourceHandle;\n};\n\n" ); + + /* resource directory definition */ + + fprintf( outfile, "static struct res_struct{\n" ); + fprintf( outfile, " struct res_dir type_dir;\n" ); + fprintf( outfile, " struct res_dir_entry type_entries[%d];\n", tree->nb_types ); + offset = RESDIR_SIZE( tree->nb_types ); + + for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) + { + offset += RESDIR_SIZE( type->nb_names ); + fprintf( outfile, " struct res_dir name_%d_dir;\n", i ); + fprintf( outfile, " struct res_dir_entry name_%d_entries[%d];\n", i, type->nb_names ); + for (n = 0, name = type->names; n < type->nb_names; n++, name++) + { + offset += RESDIR_SIZE( name->nb_languages ); + fprintf( outfile, " struct res_dir lang_%d_%d_dir;\n", i, n ); + fprintf( outfile, " struct res_dir_entry lang_%d_%d_entries[%d];\n", + i, n, name->nb_languages ); + } + } + + fprintf( outfile, " struct res_data_entry data_entries[%d];\n", spec->nb_resources ); + offset += spec->nb_resources * 4 * sizeof(int); + + for (i = nb_id_types = 0, type = tree->types; i < tree->nb_types; i++, type++) + { + if (type->type->str) + { + type->name_offset = offset | 0x80000000; + offset += (strlenW(type->type->str)+1) * sizeof(unsigned short); + fprintf( outfile, " unsigned short type_%d_name[%d];\n", + i, strlenW(type->type->str)+1 ); + } + else + { + type->name_offset = type->type->id; + nb_id_types++; + } + + for (n = 0, name = type->names; n < type->nb_names; n++, name++) + { + if (name->name->str) + { + name->name_offset = offset | 0x80000000; + offset += (strlenW(name->name->str)+1) * sizeof(unsigned short); + fprintf( outfile, " unsigned short name_%d_%d_name[%d];\n", + i, n, strlenW(name->name->str)+1 ); + } + else name->name_offset = name->name->id; + } + } + + /* resource directory contents */ + + fprintf( outfile, "} resources = {\n" ); + fprintf( outfile, " { 0, 0, 0, 0, %d, %d },\n", tree->nb_types - nb_id_types, nb_id_types ); + + /* dump the type directory */ + offset = RESDIR_SIZE( tree->nb_types ); + fprintf( outfile, " {\n" ); + for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) + { + fprintf( outfile, " { 0x%08x, 0x%08x },\n", type->name_offset, offset | 0x80000000 ); + offset += RESDIR_SIZE( type->nb_names ); + for (n = 0, name = type->names; n < type->nb_names; n++, name++) + offset += RESDIR_SIZE( name->nb_languages ); + } + fprintf( outfile, " },\n" ); + + data_offset = offset; + offset = RESDIR_SIZE( tree->nb_types ); + + /* dump the names and languages directories */ + for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) + { + fprintf( outfile, " { 0, 0, 0, 0, %d, %d }, /* name_%d_dir */\n {\n", + type->nb_names - type->nb_id_names, type->nb_id_names, i ); + offset += RESDIR_SIZE( type->nb_names ); + for (n = 0, name = type->names; n < type->nb_names; n++, name++) + { + fprintf( outfile, " { 0x%08x, 0x%08x },\n", name->name_offset, offset | 0x80000000 ); + offset += RESDIR_SIZE( name->nb_languages ); + } + fprintf( outfile, " },\n" ); + + for (n = 0, name = type->names; n < type->nb_names; n++, name++) + { + fprintf( outfile, " { 0, 0, 0, 0, 0, %d }, /* lang_%d_%d_dir */\n {\n", + name->nb_languages, i, n ); + for (k = 0, res = name->res; k < name->nb_languages; k++, res++) + { + fprintf( outfile, " { 0x%04x, 0x%08x },\n", + res->lang, data_offset + (res - spec->resources) * 4 * sizeof(int) ); + } + fprintf( outfile, " },\n" ); + } + } + + /* dump the resource data entries */ + fprintf( outfile, " {\n" ); + for (i = 0, res = spec->resources; i < spec->nb_resources; i++, res++) + { + fprintf( outfile, " { res_%d, sizeof(res_%d), 0, 0 }, /* %08x */\n", i, i, + data_offset + i * 4 * sizeof(int) ); + } + + /* dump the name strings */ + for (i = 0, type = tree->types; i < tree->nb_types; i++, type++) + { + if (type->type->str) + { + fprintf( outfile, " },\n { " ); + output_string( outfile, type->type->str ); + } + for (n = 0, name = type->names; n < type->nb_names; n++, name++) + { + if (name->name->str) + { + fprintf( outfile, " },\n { " ); + output_string( outfile, name->name->str ); + } + } + } + fprintf( outfile, " }\n};\n\n" ); + free_resource_tree( tree ); +} diff --git a/reactos/tools/winebuild/spec16.c b/reactos/tools/winebuild/spec16.c new file mode 100644 index 00000000000..aae4d8f5b97 --- /dev/null +++ b/reactos/tools/winebuild/spec16.c @@ -0,0 +1,832 @@ +/* + * 16-bit spec files + * + * Copyright 1993 Robert J. Amstadt + * Copyright 1995 Martin von Loewis + * Copyright 1995, 1996, 1997 Alexandre Julliard + * Copyright 1997 Eric Youngdale + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include + +#include "wine/exception.h" +#include "stackframe.h" +#include "builtin16.h" +#include "module.h" + +#include "build.h" + + +/******************************************************************* + * get_cs + */ +#ifdef __i386__ +static inline unsigned short get_cs(void) +{ + unsigned short res; +#ifdef __GNUC__ + __asm__("movw %%cs,%w0" : "=r"(res)); +#elif defined(_MSC_VER) + __asm { mov res, cs } +#else + res = 0; +#endif + return res; +} +#endif /* __i386__ */ + + +/******************************************************************* + * output_file_header + * + * Output a file header with the common declarations we need. + */ +static void output_file_header( FILE *outfile ) +{ + output_standard_file_header( outfile ); + fprintf( outfile, "extern struct\n{\n" ); + fprintf( outfile, " void *base[8192];\n" ); + fprintf( outfile, " unsigned long limit[8192];\n" ); + fprintf( outfile, " unsigned char flags[8192];\n" ); + fprintf( outfile, "} wine_ldt_copy;\n\n" ); +#ifdef __i386__ + fprintf( outfile, "#define __stdcall __attribute__((__stdcall__))\n\n" ); +#else + fprintf( outfile, "#define __stdcall\n\n" ); +#endif +} + + +/******************************************************************* + * StoreVariableCode + * + * Store a list of ints into a byte array. + */ +static int StoreVariableCode( unsigned char *buffer, int size, ORDDEF *odp ) +{ + int i; + + switch(size) + { + case 1: + for (i = 0; i < odp->u.var.n_values; i++) + buffer[i] = odp->u.var.values[i]; + break; + case 2: + for (i = 0; i < odp->u.var.n_values; i++) + ((unsigned short *)buffer)[i] = odp->u.var.values[i]; + break; + case 4: + for (i = 0; i < odp->u.var.n_values; i++) + ((unsigned int *)buffer)[i] = odp->u.var.values[i]; + break; + } + return odp->u.var.n_values * size; +} + + +/******************************************************************* + * BuildModule16 + * + * Build the in-memory representation of a 16-bit NE module, and dump it + * as a byte stream into the assembly code. + */ +static int BuildModule16( FILE *outfile, int max_code_offset, + int max_data_offset, DLLSPEC *spec ) +{ + int i; + char *buffer; + NE_MODULE *pModule; + SEGTABLEENTRY *pSegment; + OFSTRUCT *pFileInfo; + BYTE *pstr; + ET_BUNDLE *bundle = 0; + ET_ENTRY entry; + + /* Module layout: + * NE_MODULE Module + * OFSTRUCT File information + * SEGTABLEENTRY Segment 1 (code) + * SEGTABLEENTRY Segment 2 (data) + * WORD[2] Resource table (empty) + * BYTE[2] Imported names (empty) + * BYTE[n] Resident names table + * BYTE[n] Entry table + */ + + buffer = xmalloc( 0x10000 ); + memset( buffer, 0, 0x10000 ); + + pModule = (NE_MODULE *)buffer; + pModule->magic = IMAGE_OS2_SIGNATURE; + pModule->count = 1; + pModule->next = 0; + pModule->flags = NE_FFLAGS_SINGLEDATA | NE_FFLAGS_BUILTIN | NE_FFLAGS_LIBMODULE; + pModule->dgroup = 2; + pModule->heap_size = spec->heap_size; + pModule->stack_size = 0; + pModule->ip = 0; + pModule->cs = 0; + pModule->sp = 0; + pModule->ss = 0; + pModule->seg_count = 2; + pModule->modref_count = 0; + pModule->nrname_size = 0; + pModule->modref_table = 0; + pModule->nrname_fpos = 0; + pModule->moveable_entries = 0; + pModule->alignment = 0; + pModule->truetype = 0; + pModule->os_flags = NE_OSFLAGS_WINDOWS; + pModule->misc_flags = 0; + pModule->dlls_to_init = 0; + pModule->nrname_handle = 0; + pModule->min_swap_area = 0; + pModule->expected_version = 0; + pModule->module32 = 0; + pModule->self = 0; + pModule->self_loading_sel = 0; + + /* File information */ + + pFileInfo = (OFSTRUCT *)(pModule + 1); + pModule->fileinfo = (int)pFileInfo - (int)pModule; + memset( pFileInfo, 0, sizeof(*pFileInfo) - sizeof(pFileInfo->szPathName) ); + pFileInfo->cBytes = sizeof(*pFileInfo) - sizeof(pFileInfo->szPathName) + + strlen(spec->file_name); + strcpy( pFileInfo->szPathName, spec->file_name ); + pstr = (char *)pFileInfo + pFileInfo->cBytes + 1; + + /* Segment table */ + + pstr = (char *)(((long)pstr + 3) & ~3); + pSegment = (SEGTABLEENTRY *)pstr; + pModule->seg_table = (int)pSegment - (int)pModule; + pSegment->filepos = 0; + pSegment->size = max_code_offset; + pSegment->flags = 0; + pSegment->minsize = max_code_offset; + pSegment->hSeg = 0; + pSegment++; + + pModule->dgroup_entry = (int)pSegment - (int)pModule; + pSegment->filepos = 0; + pSegment->size = max_data_offset; + pSegment->flags = NE_SEGFLAGS_DATA; + pSegment->minsize = max_data_offset; + pSegment->hSeg = 0; + pSegment++; + + /* Resource table */ + + pstr = (char *)pSegment; + pstr = (char *)(((long)pstr + 3) & ~3); + pModule->res_table = (int)pstr - (int)pModule; + pstr += output_res16_directory( pstr, spec ); + + /* Imported names table */ + + pstr = (char *)(((long)pstr + 3) & ~3); + pModule->import_table = (int)pstr - (int)pModule; + *pstr++ = 0; + *pstr++ = 0; + + /* Resident names table */ + + pstr = (char *)(((long)pstr + 3) & ~3); + pModule->name_table = (int)pstr - (int)pModule; + /* First entry is module name */ + *pstr = strlen( spec->dll_name ); + strcpy( pstr + 1, spec->dll_name ); + strupper( pstr + 1 ); + pstr += *pstr + 1; + *pstr++ = 0; + *pstr++ = 0; + /* Store all ordinals */ + for (i = 1; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + WORD ord = i; + if (!odp || !odp->name[0]) continue; + *pstr = strlen( odp->name ); + strcpy( pstr + 1, odp->name ); + strupper( pstr + 1 ); + pstr += *pstr + 1; + memcpy( pstr, &ord, sizeof(WORD) ); + pstr += sizeof(WORD); + } + *pstr++ = 0; + + /* Entry table */ + + pstr = (char *)(((long)pstr + 3) & ~3); + pModule->entry_table = (int)pstr - (int)pModule; + for (i = 1; i <= spec->limit; i++) + { + int selector = 0; + ORDDEF *odp = spec->ordinals[i]; + if (!odp) continue; + + switch (odp->type) + { + case TYPE_CDECL: + case TYPE_PASCAL: + case TYPE_VARARGS: + case TYPE_STUB: + selector = 1; /* Code selector */ + break; + + case TYPE_VARIABLE: + selector = 2; /* Data selector */ + break; + + case TYPE_ABS: + selector = 0xfe; /* Constant selector */ + break; + + default: + selector = 0; /* Invalid selector */ + break; + } + + if ( !selector ) + continue; + + if ( bundle && bundle->last+1 == i ) + bundle->last++; + else + { + pstr = (char *)(((long)pstr + 1) & ~1); + if ( bundle ) + bundle->next = (char *)pstr - (char *)pModule; + + bundle = (ET_BUNDLE *)pstr; + bundle->first = i-1; + bundle->last = i; + bundle->next = 0; + pstr += sizeof(ET_BUNDLE); + } + + /* FIXME: is this really correct ?? */ + entry.type = 0xff; /* movable */ + entry.flags = 3; /* exported & public data */ + entry.segnum = selector; + entry.offs = odp->offset; + memcpy( pstr, &entry, sizeof(ET_ENTRY) ); + pstr += sizeof(ET_ENTRY); + } + *pstr++ = 0; + + /* Dump the module content */ + + pstr = (char *)(((long)pstr + 3) & ~3); + dump_bytes( outfile, (char *)pModule, (int)pstr - (int)pModule, "Module", 0 ); + return (int)pstr - (int)pModule; +} + + +#ifdef __i386__ +/******************************************************************* + * BuildCallFrom16Func + * + * Build a 16-bit-to-Wine callback glue function. + * + * The generated routines are intended to be used as argument conversion + * routines to be called by the CallFrom16... core. Thus, the prototypes of + * the generated routines are (see also CallFrom16): + * + * extern WORD WINAPI PREFIX_CallFrom16_C_word_xxx( FARPROC func, LPBYTE args ); + * extern LONG WINAPI PREFIX_CallFrom16_C_long_xxx( FARPROC func, LPBYTE args ); + * extern void WINAPI PREFIX_CallFrom16_C_regs_xxx( FARPROC func, LPBYTE args, + * CONTEXT86 *context ); + * + * where 'C' is the calling convention ('p' for pascal or 'c' for cdecl), + * and each 'x' is an argument ('w'=word, 's'=signed word, 'l'=long, + * 'p'=linear pointer, 't'=linear pointer to null-terminated string, + * 'T'=segmented pointer to null-terminated string). + * + * The generated routines fetch the arguments from the 16-bit stack (pointed + * to by 'args'); the offsets of the single argument values are computed + * according to the calling convention and the argument types. Then, the + * 32-bit entry point is called with these arguments. + * + * For register functions, the arguments (if present) are converted just + * the same as for normal functions, but in addition the CONTEXT86 pointer + * filled with the current register values is passed to the 32-bit routine. + */ +static void BuildCallFrom16Func( FILE *outfile, const char *profile, const char *prefix ) +{ + int i, pos, argsize = 0; + int short_ret = 0; + int reg_func = 0; + int usecdecl = 0; + int varargs = 0; + const char *args = profile + 7; + const char *ret_type; + + /* Parse function type */ + + if (!strncmp( "c_", profile, 2 )) usecdecl = 1; + else if (!strncmp( "v_", profile, 2 )) varargs = usecdecl = 1; + else if (strncmp( "p_", profile, 2 )) + { + fprintf( stderr, "Invalid function name '%s', ignored\n", profile ); + return; + } + + if (!strncmp( "word_", profile + 2, 5 )) short_ret = 1; + else if (!strncmp( "regs_", profile + 2, 5 )) reg_func = 1; + else if (strncmp( "long_", profile + 2, 5 )) + { + fprintf( stderr, "Invalid function name '%s', ignored\n", profile ); + return; + } + + for ( i = 0; args[i]; i++ ) + switch ( args[i] ) + { + case 'w': /* word */ + case 's': /* s_word */ + argsize += 2; + break; + case 'l': /* long or segmented pointer */ + case 'T': /* segmented pointer to null-terminated string */ + case 'p': /* linear pointer */ + case 't': /* linear pointer to null-terminated string */ + argsize += 4; + break; + } + + ret_type = reg_func? "void" : short_ret ? "unsigned short" : "unsigned int"; + + fprintf( outfile, "typedef %s (%s*proc_%s_t)( ", + ret_type, usecdecl ? "" : "__stdcall ", profile ); + args = profile + 7; + for ( i = 0; args[i]; i++ ) + { + if ( i ) fprintf( outfile, ", " ); + switch (args[i]) + { + case 'w': fprintf( outfile, "unsigned short" ); break; + case 's': fprintf( outfile, "short" ); break; + case 'l': case 'T': fprintf( outfile, "unsigned int" ); break; + case 'p': case 't': fprintf( outfile, "void *" ); break; + } + } + if (reg_func || varargs) + fprintf( outfile, "%svoid *", i? ", " : "" ); + else if ( !i ) + fprintf( outfile, "void" ); + fprintf( outfile, " );\n" ); + + fprintf( outfile, "static %s __stdcall __wine_%s_CallFrom16_%s( proc_%s_t proc, unsigned char *args%s )\n", + ret_type, make_c_identifier(prefix), profile, profile, + reg_func? ", void *context" : "" ); + + fprintf( outfile, "{\n %sproc(\n", reg_func ? "" : "return " ); + args = profile + 7; + pos = !usecdecl? argsize : 0; + for ( i = 0; args[i]; i++ ) + { + if ( i ) fprintf( outfile, ",\n" ); + fprintf( outfile, " " ); + switch (args[i]) + { + case 'w': /* word */ + if ( !usecdecl ) pos -= 2; + fprintf( outfile, "*(unsigned short *)(args+%d)", pos ); + if ( usecdecl ) pos += 2; + break; + + case 's': /* s_word */ + if ( !usecdecl ) pos -= 2; + fprintf( outfile, "*(short *)(args+%d)", pos ); + if ( usecdecl ) pos += 2; + break; + + case 'l': /* long or segmented pointer */ + case 'T': /* segmented pointer to null-terminated string */ + if ( !usecdecl ) pos -= 4; + fprintf( outfile, "*(unsigned int *)(args+%d)", pos ); + if ( usecdecl ) pos += 4; + break; + + case 'p': /* linear pointer */ + case 't': /* linear pointer to null-terminated string */ + if ( !usecdecl ) pos -= 4; + fprintf( outfile, "((char*)wine_ldt_copy.base[*(unsigned short*)(args+%d) >> 3] + *(unsigned short*)(args+%d))", + pos + 2, pos ); + if ( usecdecl ) pos += 4; + break; + + default: + fprintf( stderr, "Unknown arg type '%c'\n", args[i] ); + } + } + if ( reg_func ) + fprintf( outfile, "%s context", i? ",\n" : "" ); + else if (varargs) + fprintf( outfile, "%s args + %d", i? ",\n" : "", argsize ); + fprintf( outfile, " );\n}\n\n" ); +} +#endif + + +/******************************************************************* + * get_function_name + */ +static const char *get_function_name( const ORDDEF *odp ) +{ + static char buffer[80]; + + sprintf( buffer, "%s_%s_%s", + (odp->type == TYPE_PASCAL) ? "p" : + (odp->type == TYPE_VARARGS) ? "v" : "c", + (odp->flags & FLAG_REGISTER) ? "regs" : + (odp->flags & FLAG_RET16) ? "word" : "long", + odp->u.func.arg_types ); + return buffer; +} + + +/******************************************************************* + * Spec16TypeCompare + */ +static int Spec16TypeCompare( const void *e1, const void *e2 ) +{ + const ORDDEF *odp1 = *(const ORDDEF * const *)e1; + const ORDDEF *odp2 = *(const ORDDEF * const *)e2; + int retval; + int type1 = odp1->type; + int type2 = odp2->type; + + if (type1 == TYPE_STUB) type1 = TYPE_CDECL; + if (type2 == TYPE_STUB) type2 = TYPE_CDECL; + + if ((retval = type1 - type2) != 0) return retval; + + type1 = odp1->flags & (FLAG_RET16|FLAG_REGISTER); + type2 = odp2->flags & (FLAG_RET16|FLAG_REGISTER); + + if ((retval = type1 - type2) != 0) return retval; + + return strcmp( odp1->u.func.arg_types, odp2->u.func.arg_types ); +} + + +/******************************************************************* + * output_stub_funcs + * + * Output the functions for stub entry points +*/ +static void output_stub_funcs( FILE *outfile, const DLLSPEC *spec ) +{ + int i; + char *p; + + for (i = 0; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (!odp || odp->type != TYPE_STUB) continue; + fprintf( outfile, "#ifdef __GNUC__\n" ); + fprintf( outfile, "static void __wine_unimplemented( const char *func ) __attribute__((noreturn));\n" ); + fprintf( outfile, "#endif\n" ); + fprintf( outfile, "static void __wine_unimplemented( const char *func )\n{\n" ); + fprintf( outfile, " struct exc_record {\n" ); + fprintf( outfile, " unsigned int code, flags;\n" ); + fprintf( outfile, " void *rec, *addr;\n" ); + fprintf( outfile, " unsigned int params;\n" ); + fprintf( outfile, " const void *info[15];\n" ); + fprintf( outfile, " } rec;\n\n" ); + fprintf( outfile, " extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" ); + fprintf( outfile, " rec.code = 0x%08x;\n", EXCEPTION_WINE_STUB ); + fprintf( outfile, " rec.flags = %d;\n", EH_NONCONTINUABLE ); + fprintf( outfile, " rec.rec = 0;\n" ); + fprintf( outfile, " rec.params = 2;\n" ); + fprintf( outfile, " rec.info[0] = \"%s\";\n", spec->file_name ); + fprintf( outfile, " rec.info[1] = func;\n" ); + fprintf( outfile, "#ifdef __GNUC__\n" ); + fprintf( outfile, " rec.addr = __builtin_return_address(1);\n" ); + fprintf( outfile, "#else\n" ); + fprintf( outfile, " rec.addr = 0;\n" ); + fprintf( outfile, "#endif\n" ); + fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n}\n\n" ); + break; + } + for (i = 0; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (!odp || odp->type != TYPE_STUB) continue; + odp->link_name = xrealloc( odp->link_name, strlen(odp->name) + 13 ); + strcpy( odp->link_name, "__wine_stub_" ); + strcat( odp->link_name, odp->name ); + for (p = odp->link_name; *p; p++) if (!isalnum(*p)) *p = '_'; + fprintf( outfile, "static void %s(void) { __wine_unimplemented(\"%s\"); }\n", + odp->link_name, odp->name ); + } +} + + +/******************************************************************* + * BuildSpec16File + * + * Build a Win16 assembly file from a spec file. + */ +void BuildSpec16File( FILE *outfile, DLLSPEC *spec ) +{ + ORDDEF **type, **typelist; + int i, nFuncs, nTypes; + int code_offset, data_offset, module_size, res_size; + unsigned char *data; + char constructor[100], destructor[100]; +#ifdef __i386__ + unsigned short code_selector = get_cs(); +#endif + + /* File header */ + + output_file_header( outfile ); + fprintf( outfile, "extern unsigned short __wine_call_from_16_word();\n" ); + fprintf( outfile, "extern unsigned int __wine_call_from_16_long();\n" ); + fprintf( outfile, "extern void __wine_call_from_16_regs();\n" ); + fprintf( outfile, "extern void __wine_call_from_16_thunk();\n" ); + + data = (unsigned char *)xmalloc( 0x10000 ); + memset( data, 0, 16 ); + data_offset = 16; + + if (!spec->dll_name) /* set default name from file name */ + { + char *p; + spec->dll_name = xstrdup( spec->file_name ); + if ((p = strrchr( spec->dll_name, '.' ))) *p = 0; + } + + output_stub_funcs( outfile, spec ); + + /* Build sorted list of all argument types, without duplicates */ + + typelist = (ORDDEF **)calloc( spec->limit+1, sizeof(ORDDEF *) ); + + for (i = nFuncs = 0; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (!odp) continue; + switch (odp->type) + { + case TYPE_CDECL: + case TYPE_PASCAL: + case TYPE_VARARGS: + case TYPE_STUB: + typelist[nFuncs++] = odp; + + default: + break; + } + } + + qsort( typelist, nFuncs, sizeof(ORDDEF *), Spec16TypeCompare ); + + i = nTypes = 0; + while ( i < nFuncs ) + { + typelist[nTypes++] = typelist[i++]; + while ( i < nFuncs && Spec16TypeCompare( typelist + i, typelist + nTypes-1 ) == 0 ) + i++; + } + + /* Output CallFrom16 routines needed by this .spec file */ +#ifdef __i386__ + for ( i = 0; i < nTypes; i++ ) + { + char profile[101]; + + strcpy( profile, get_function_name( typelist[i] )); + BuildCallFrom16Func( outfile, profile, spec->file_name ); + } +#endif + + /* Output the DLL functions prototypes */ + + for (i = 0; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (!odp) continue; + switch(odp->type) + { + case TYPE_CDECL: + case TYPE_PASCAL: + case TYPE_VARARGS: + fprintf( outfile, "extern void %s();\n", odp->link_name ); + break; + default: + break; + } + } + + /* Output code segment */ + + fprintf( outfile, "\n#include \"pshpack1.h\"\n" ); + fprintf( outfile, "\nstatic struct code_segment\n{\n" ); + fprintf( outfile, " struct {\n" ); +#ifdef __i386__ + fprintf( outfile, " unsigned char pushl;\n" ); /* pushl $relay */ + fprintf( outfile, " void *relay;\n" ); + fprintf( outfile, " unsigned char lcall;\n" ); /* lcall __FLATCS__:glue */ + fprintf( outfile, " void *glue;\n" ); + fprintf( outfile, " unsigned short flatcs;\n" ); +#endif + fprintf( outfile, " unsigned short lret;\n" ); /* lret $args */ + fprintf( outfile, " unsigned short args;\n" ); + fprintf( outfile, " unsigned int arg_types[2];\n" ); + fprintf( outfile, " } call[%d];\n", nTypes ); + fprintf( outfile, " struct {\n" ); +#ifdef __i386__ + fprintf( outfile, " unsigned short pushw_bp;\n" ); /* pushw %bp */ + fprintf( outfile, " unsigned char pushl;\n" ); /* pushl $target */ +#endif + fprintf( outfile, " void (*target)();\n" ); + fprintf( outfile, " unsigned short call;\n" ); /* call CALLFROM16 */ + fprintf( outfile, " short callfrom16;\n" ); + fprintf( outfile, " } entry[%d];\n", nFuncs ); + fprintf( outfile, "} code_segment =\n{\n {\n" ); + + code_offset = 0; + + for ( i = 0; i < nTypes; i++ ) + { + char profile[101], *arg; + unsigned int arg_types[2]; + int j, argsize = 0; + + strcpy( profile, get_function_name( typelist[i] )); + if ( typelist[i]->type == TYPE_PASCAL ) + for ( arg = typelist[i]->u.func.arg_types; *arg; arg++ ) + switch ( *arg ) + { + case 'w': /* word */ + case 's': /* s_word */ + argsize += 2; + break; + case 'l': /* long or segmented pointer */ + case 'T': /* segmented pointer to null-terminated string */ + case 'p': /* linear pointer */ + case 't': /* linear pointer to null-terminated string */ + argsize += 4; + break; + } + + /* build the arg types bit fields */ + arg_types[0] = arg_types[1] = 0; + for (j = 0; typelist[i]->u.func.arg_types[j]; j++) + { + int type = 0; + switch(typelist[i]->u.func.arg_types[j]) + { + case 'w': type = ARG_WORD; break; + case 's': type = ARG_SWORD; break; + case 'l': type = ARG_LONG; break; + case 'p': type = ARG_PTR; break; + case 't': type = ARG_STR; break; + case 'T': type = ARG_SEGSTR; break; + } + arg_types[j / 10] |= type << (3 * (j % 10)); + } + if (typelist[i]->flags & FLAG_REGISTER) arg_types[0] |= ARG_REGISTER; + if (typelist[i]->flags & FLAG_RET16) arg_types[0] |= ARG_RET16; + +#ifdef __i386__ + fprintf( outfile, " { 0x68, __wine_%s_CallFrom16_%s, 0x9a, __wine_call_from_16_%s,\n", + make_c_identifier(spec->file_name), profile, + (typelist[i]->flags & FLAG_REGISTER) ? "regs": + (typelist[i]->flags & FLAG_RET16) ? "word" : "long" ); + if (argsize) + fprintf( outfile, " 0x%04x, 0xca66, %d, { 0x%08x, 0x%08x } },\n", + code_selector, argsize, arg_types[0], arg_types[1] ); + else + fprintf( outfile, " 0x%04x, 0xcb66, 0x9090, { 0x%08x, 0x%08x } },\n", + code_selector, arg_types[0], arg_types[1] ); +#else + if (argsize) + fprintf( outfile, " { 0xca66, %d, { 0x%08x, 0x%08x } },\n", + argsize, arg_types[0], arg_types[1] ); + else + fprintf( outfile, " { 0xcb66, 0x9090, { 0x%08x, 0x%08x } },\n", + arg_types[0], arg_types[1] ); +#endif + code_offset += sizeof(CALLFROM16); + } + fprintf( outfile, " },\n {\n" ); + + for (i = 0; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (!odp) continue; + switch (odp->type) + { + case TYPE_ABS: + odp->offset = LOWORD(odp->u.abs.value); + break; + + case TYPE_VARIABLE: + odp->offset = data_offset; + data_offset += StoreVariableCode( data + data_offset, 4, odp); + break; + + case TYPE_CDECL: + case TYPE_PASCAL: + case TYPE_VARARGS: + case TYPE_STUB: + type = bsearch( &odp, typelist, nTypes, sizeof(ORDDEF *), Spec16TypeCompare ); + assert( type ); + + fprintf( outfile, " /* %s.%d */ ", spec->dll_name, i ); +#ifdef __i386__ + fprintf( outfile, "{ 0x5566, 0x68, %s, 0xe866, %d /* %s */ },\n", +#else + fprintf( outfile, "{ %s, 0xe866, %d, /* %s */ },\n", +#endif + odp->link_name, + (type-typelist)*sizeof(CALLFROM16) - + (code_offset + sizeof(ENTRYPOINT16)), + get_function_name( odp ) ); + + odp->offset = code_offset; + code_offset += sizeof(ENTRYPOINT16); + break; + + default: + fprintf(stderr,"build: function type %d not available for Win16\n", + odp->type); + exit(1); + } + } + + fprintf( outfile, " }\n};\n" ); + + /* Output data segment */ + + dump_bytes( outfile, data, data_offset, "Data_Segment", 0 ); + + /* Build the module */ + + module_size = BuildModule16( outfile, code_offset, data_offset, spec ); + res_size = output_res16_data( outfile, spec ); + + /* Output the DLL descriptor */ + + fprintf( outfile, "#include \"poppack.h\"\n\n" ); + + fprintf( outfile, "static const struct dll_descriptor\n{\n" ); + fprintf( outfile, " unsigned char *module_start;\n" ); + fprintf( outfile, " int module_size;\n" ); + fprintf( outfile, " struct code_segment *code_start;\n" ); + fprintf( outfile, " unsigned char *data_start;\n" ); + fprintf( outfile, " const char *owner;\n" ); + fprintf( outfile, " const unsigned char *rsrc;\n" ); + fprintf( outfile, "} descriptor =\n{\n" ); + fprintf( outfile, " Module,\n" ); + fprintf( outfile, " sizeof(Module),\n" ); + fprintf( outfile, " &code_segment,\n" ); + fprintf( outfile, " Data_Segment,\n" ); + fprintf( outfile, " \"%s\",\n", spec->owner_name ); + fprintf( outfile, " %s\n", res_size ? "resource_data" : "0" ); + fprintf( outfile, "};\n" ); + + /* Output the DLL constructor */ + + sprintf( constructor, "__wine_spec_%s_init", make_c_identifier(spec->file_name) ); + sprintf( destructor, "__wine_spec_%s_fini", make_c_identifier(spec->file_name) ); + output_dll_init( outfile, constructor, destructor ); + + fprintf( outfile, + "void %s(void)\n" + "{\n" + " extern void __wine_register_dll_16( const struct dll_descriptor *descr );\n" + " __wine_register_dll_16( &descriptor );\n" + "}\n", constructor ); + fprintf( outfile, + "void %s(void)\n" + "{\n" + " extern void __wine_unregister_dll_16( const struct dll_descriptor *descr );\n" + " __wine_unregister_dll_16( &descriptor );\n" + "}\n", destructor ); +} diff --git a/reactos/tools/winebuild/spec32.c b/reactos/tools/winebuild/spec32.c new file mode 100644 index 00000000000..222cdabe500 --- /dev/null +++ b/reactos/tools/winebuild/spec32.c @@ -0,0 +1,1057 @@ +/* + * 32-bit spec files + * + * Copyright 1993 Robert J. Amstadt + * Copyright 1995 Martin von Loewis + * Copyright 1995, 1996, 1997 Alexandre Julliard + * Copyright 1997 Eric Youngdale + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include + +#include "winglue.h" + +#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */ +#define EH_NONCONTINUABLE 0x01 + +#include "build.h" + + +#ifdef __APPLE__ +# define __ASM_SKIP ".space" +#else +# define __ASM_SKIP ".skip" +#endif + +static int string_compare( const void *ptr1, const void *ptr2 ) +{ + const char * const *str1 = ptr1; + const char * const *str2 = ptr2; + return strcmp( *str1, *str2 ); +} + + +/******************************************************************* + * make_internal_name + * + * Generate an internal name for an entry point. Used for stubs etc. + */ +static const char *make_internal_name( const ORDDEF *odp, DLLSPEC *spec, const char *prefix ) +{ + static char buffer[256]; + if (odp->name || odp->export_name) + { + char *p; + sprintf( buffer, "__wine_%s_%s_%s", prefix, spec->file_name, + odp->name ? odp->name : odp->export_name ); + /* make sure name is a legal C identifier */ + for (p = buffer; *p; p++) if (!isalnum(*p) && *p != '_') break; + if (!*p) return buffer; + } + sprintf( buffer, "__wine_%s_%s_%d", prefix, make_c_identifier(spec->file_name), odp->ordinal ); + return buffer; +} + +/******************************************************************* + * declare_weak_function + * + * Output a prototype for a weak function. + */ +static void declare_weak_function( FILE *outfile, const char *ret_type, const char *name, const char *params) +{ + fprintf( outfile, "#ifdef __GNUC__\n" ); + fprintf( outfile, "# ifdef __APPLE__\n" ); + fprintf( outfile, "extern %s %s(%s) __attribute__((weak_import));\n", ret_type, name, params ); + fprintf( outfile, "static %s (*__wine_spec_weak_%s)(%s) = %s;\n", ret_type, name, params, name ); + fprintf( outfile, "#define %s __wine_spec_weak_%s\n", name, name ); + fprintf( outfile, "# else\n" ); + fprintf( outfile, "extern %s %s(%s) __attribute__((weak));\n", ret_type, name, params ); + fprintf( outfile, "# endif\n" ); + fprintf( outfile, "#else\n" ); + fprintf( outfile, "extern %s %s(%s);\n", ret_type, name, params ); + fprintf( outfile, "static void __asm__dummy_%s(void)", name ); + fprintf( outfile, " { asm(\".weak " __ASM_NAME("%s") "\"); }\n", name ); + fprintf( outfile, "#endif\n\n" ); +} + + +/******************************************************************* + * output_debug + * + * Output the debug channels. + */ +static int output_debug( FILE *outfile ) +{ + int i; + + if (!nb_debug_channels) return 0; + qsort( debug_channels, nb_debug_channels, sizeof(debug_channels[0]), string_compare ); + + for (i = 0; i < nb_debug_channels; i++) + fprintf( outfile, "char __wine_dbch_%s[] = \"\\003%s\";\n", + debug_channels[i], debug_channels[i] ); + + fprintf( outfile, "\nstatic char * const debug_channels[%d] =\n{\n", nb_debug_channels ); + for (i = 0; i < nb_debug_channels; i++) + { + fprintf( outfile, " __wine_dbch_%s", debug_channels[i] ); + if (i < nb_debug_channels - 1) fprintf( outfile, ",\n" ); + } + fprintf( outfile, "\n};\n\n" ); + fprintf( outfile, "static void *debug_registration;\n\n" ); + + return nb_debug_channels; +} + + +/******************************************************************* + * output_exports + * + * Output the export table for a Win32 module. + */ +static int output_exports( FILE *outfile, int nr_exports, DLLSPEC *spec ) +{ + int i, fwd_size = 0, total_size = 0; + + if (!nr_exports) return 0; + + fprintf( outfile, "asm(\".data\\n\"\n" ); + fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(4) ); + fprintf( outfile, " \"" __ASM_NAME("__wine_spec_exports") ":\\n\"\n" ); + + /* export directory header */ + + fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* Characteristics */ + fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* TimeDateStamp */ + fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* MajorVersion/MinorVersion */ + fprintf( outfile, " \"\\t.long __wine_spec_exp_names\\n\"\n" ); /* Name */ + fprintf( outfile, " \"\\t.long %d\\n\"\n", spec->base ); /* Base */ + fprintf( outfile, " \"\\t.long %d\\n\"\n", nr_exports ); /* NumberOfFunctions */ + fprintf( outfile, " \"\\t.long %d\\n\"\n", spec->nb_names ); /* NumberOfNames */ + fprintf( outfile, " \"\\t.long __wine_spec_exports_funcs\\n\"\n" ); /* AddressOfFunctions */ + if (spec->nb_names) + { + fprintf( outfile, " \"\\t.long __wine_spec_exp_name_ptrs\\n\"\n" ); /* AddressOfNames */ + fprintf( outfile, " \"\\t.long __wine_spec_exp_ordinals\\n\"\n" ); /* AddressOfNameOrdinals */ + } + else + { + fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* AddressOfNames */ + fprintf( outfile, " \"\\t.long 0\\n\"\n" ); /* AddressOfNameOrdinals */ + } + total_size += 10 * sizeof(int); + + /* output the function pointers */ + + fprintf( outfile, " \"__wine_spec_exports_funcs:\\n\"\n" ); + for (i = spec->base; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (!odp) fprintf( outfile, " \"\\t.long 0\\n\"\n" ); + else switch(odp->type) + { + case TYPE_EXTERN: + case TYPE_STDCALL: + case TYPE_VARARGS: + case TYPE_CDECL: + if (!(odp->flags & FLAG_FORWARD)) + { + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", + (odp->flags & FLAG_REGISTER) ? make_internal_name( odp, spec, "regs" ) + : odp->link_name ); + } + else + { + fprintf( outfile, " \"\\t.long __wine_spec_forwards+%d\\n\"\n", fwd_size ); + fwd_size += strlen(odp->link_name) + 1; + } + break; + case TYPE_STUB: + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", + make_internal_name( odp, spec, "stub" ) ); + break; + default: + assert(0); + } + } + total_size += (spec->limit - spec->base + 1) * sizeof(int); + + if (spec->nb_names) + { + /* output the function name pointers */ + + int namepos = strlen(spec->file_name) + 1; + + fprintf( outfile, " \"__wine_spec_exp_name_ptrs:\\n\"\n" ); + for (i = 0; i < spec->nb_names; i++) + { + fprintf( outfile, " \"\\t.long __wine_spec_exp_names+%d\\n\"\n", namepos ); + namepos += strlen(spec->names[i]->name) + 1; + } + total_size += spec->nb_names * sizeof(int); + } + + /* output the function names */ + + fprintf( outfile, " \"\\t.text\\n\"\n" ); + fprintf( outfile, " \"__wine_spec_exp_names:\\n\"\n" ); + fprintf( outfile, " \"\\t" __ASM_STRING " \\\"%s\\\"\\n\"\n", spec->file_name ); + for (i = 0; i < spec->nb_names; i++) + fprintf( outfile, " \"\\t" __ASM_STRING " \\\"%s\\\"\\n\"\n", spec->names[i]->name ); + fprintf( outfile, " \"\\t.data\\n\"\n" ); + + if (spec->nb_names) + { + /* output the function ordinals */ + + fprintf( outfile, " \"__wine_spec_exp_ordinals:\\n\"\n" ); + for (i = 0; i < spec->nb_names; i++) + { + fprintf( outfile, " \"\\t" __ASM_SHORT " %d\\n\"\n", + spec->names[i]->ordinal - spec->base ); + } + total_size += spec->nb_names * sizeof(short); + if (spec->nb_names % 2) + { + fprintf( outfile, " \"\\t" __ASM_SHORT " 0\\n\"\n" ); + total_size += sizeof(short); + } + } + + /* output forward strings */ + + if (fwd_size) + { + fprintf( outfile, " \"__wine_spec_forwards:\\n\"\n" ); + for (i = spec->base; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + if (odp && (odp->flags & FLAG_FORWARD)) + fprintf( outfile, " \"\\t" __ASM_STRING " \\\"%s\\\"\\n\"\n", odp->link_name ); + } + fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(4) ); + total_size += (fwd_size + 3) & ~3; + } + + /* output relays */ + + if (debugging) + { + for (i = spec->base; i <= spec->limit; i++) + { + ORDDEF *odp = spec->ordinals[i]; + unsigned int j, args, mask = 0; + const char *name; + + /* skip nonexistent entry points */ + if (!odp) goto ignore; + /* skip non-functions */ + if ((odp->type != TYPE_STDCALL) && (odp->type != TYPE_CDECL)) goto ignore; + /* skip norelay and forward entry points */ + if (odp->flags & (FLAG_NORELAY|FLAG_FORWARD)) goto ignore; + + for (j = 0; odp->u.func.arg_types[j]; j++) + { + if (odp->u.func.arg_types[j] == 't') mask |= 1<< (j*2); + if (odp->u.func.arg_types[j] == 'W') mask |= 2<< (j*2); + } + if ((odp->flags & FLAG_RET64) && (j < 16)) mask |= 0x80000000; + + name = odp->link_name; + args = strlen(odp->u.func.arg_types) * sizeof(int); + if (odp->flags & FLAG_REGISTER) name = make_internal_name( odp, spec, "regs" ); + + switch(odp->type) + { + case TYPE_STDCALL: + fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", name ); + fprintf( outfile, " \"\\tret $%d\\n\"\n", args ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", name, mask ); + break; + case TYPE_CDECL: + fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", name ); + fprintf( outfile, " \"\\tret\\n\"\n" ); + fprintf( outfile, " \"\\t" __ASM_SHORT " %d\\n\"\n", args ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", name, mask ); + break; + default: + assert(0); + } + continue; + + ignore: + fprintf( outfile, " \"\\t.long 0,0,0,0\\n\"\n" ); + } + } + + fprintf( outfile, " \"\\t.text\\n\"\n" ); + fprintf( outfile, " \"\\t.align %d\\n\"\n", get_alignment(4) ); + fprintf( outfile, ");\n\n" ); + + return total_size; +} + + +/******************************************************************* + * output_stub_funcs + * + * Output the functions for stub entry points +*/ +static void output_stub_funcs( FILE *outfile, DLLSPEC *spec ) +{ + int i; + + for (i = 0; i < spec->nb_entry_points; i++) + { + ORDDEF *odp = &spec->entry_points[i]; + if (odp->type != TYPE_STUB) continue; + fprintf( outfile, "#ifdef __GNUC__\n" ); + fprintf( outfile, "static void __wine_unimplemented( const char *func ) __attribute__((noreturn));\n" ); + fprintf( outfile, "#endif\n\n" ); + fprintf( outfile, "struct exc_record {\n" ); + fprintf( outfile, " unsigned int code, flags;\n" ); + fprintf( outfile, " void *rec, *addr;\n" ); + fprintf( outfile, " unsigned int params;\n" ); + fprintf( outfile, " const void *info[15];\n" ); + fprintf( outfile, "};\n\n" ); + fprintf( outfile, "extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" ); + fprintf( outfile, "static void __wine_unimplemented( const char *func )\n{\n" ); + fprintf( outfile, " struct exc_record rec;\n" ); + fprintf( outfile, " rec.code = 0x%08x;\n", EXCEPTION_WINE_STUB ); + fprintf( outfile, " rec.flags = %d;\n", EH_NONCONTINUABLE ); + fprintf( outfile, " rec.rec = 0;\n" ); + fprintf( outfile, " rec.params = 2;\n" ); + fprintf( outfile, " rec.info[0] = \"%s\";\n", spec->file_name ); + fprintf( outfile, " rec.info[1] = func;\n" ); + fprintf( outfile, "#ifdef __GNUC__\n" ); + fprintf( outfile, " rec.addr = __builtin_return_address(1);\n" ); + fprintf( outfile, "#else\n" ); + fprintf( outfile, " rec.addr = 0;\n" ); + fprintf( outfile, "#endif\n" ); + fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n}\n\n" ); + break; + } + + for (i = 0; i < spec->nb_entry_points; i++) + { + const ORDDEF *odp = &spec->entry_points[i]; + if (odp->type != TYPE_STUB) continue; + fprintf( outfile, "void %s(void) ", make_internal_name( odp, spec, "stub" ) ); + if (odp->name) + fprintf( outfile, "{ __wine_unimplemented(\"%s\"); }\n", odp->name ); + else if (odp->export_name) + fprintf( outfile, "{ __wine_unimplemented(\"%s\"); }\n", odp->export_name ); + else + fprintf( outfile, "{ __wine_unimplemented(\"%d\"); }\n", odp->ordinal ); + } +} + + +/******************************************************************* + * output_register_funcs + * + * Output the functions for register entry points + */ +static void output_register_funcs( FILE *outfile, DLLSPEC *spec ) +{ + const char *name; + int i; + + for (i = 0; i < spec->nb_entry_points; i++) + { + const ORDDEF *odp = &spec->entry_points[i]; + if (odp->type != TYPE_STDCALL && odp->type != TYPE_CDECL) continue; + if (!(odp->flags & FLAG_REGISTER)) continue; + if (odp->flags & FLAG_FORWARD) continue; + name = make_internal_name( odp, spec, "regs" ); + fprintf( outfile, + "asm(\".align %d\\n\\t\"\n" + " \"" __ASM_FUNC("%s") "\\n\\t\"\n" + " \"" __ASM_NAME("%s") ":\\n\\t\"\n" + " \"call " __ASM_NAME("__wine_call_from_32_regs") "\\n\\t\"\n" + " \".long " __ASM_NAME("%s") "\\n\\t\"\n" + " \".byte %d,%d\");\n", + get_alignment(4), + name, name, odp->link_name, + strlen(odp->u.func.arg_types) * sizeof(int), + (odp->type == TYPE_CDECL) ? 0 : (strlen(odp->u.func.arg_types) * sizeof(int)) ); + } +} + + +/******************************************************************* + * output_dll_init + * + * Output code for calling a dll constructor and destructor. + */ +void output_dll_init( FILE *outfile, const char *constructor, const char *destructor ) +{ + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "static void __asm__dummy_dll_init(void) {\n" ); + fprintf( outfile, "#endif\n" ); + +#if defined(__i386__) + if (constructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", constructor ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } + if (destructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", destructor ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } +#elif defined(__sparc__) + if (constructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", constructor ); + fprintf( outfile, " \"\\tnop\\n\"\n" ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } + if (destructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("%s") "\\n\"\n", destructor ); + fprintf( outfile, " \"\\tnop\\n\"\n" ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } +#elif defined(__powerpc__) +# ifdef __APPLE__ +/* Mach-O doesn't have an init section */ + if (constructor) + { + fprintf( outfile, "asm(\"\\t.mod_init_func\\n\"\n" ); + fprintf( outfile, " \"\\t.align 2\\n\"\n" ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", constructor ); + fprintf( outfile, " \"\\t.text\\n\");\n" ); + } + if (destructor) + { + fprintf( outfile, "asm(\"\\t.mod_term_func\\n\"\n" ); + fprintf( outfile, " \"\\t.align 2\\n\"\n" ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", destructor ); + fprintf( outfile, " \"\\t.text\\n\");\n" ); + } +# else /* __APPLE__ */ + if (constructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tbl " __ASM_NAME("%s") "\\n\"\n", constructor ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } + if (destructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tbl " __ASM_NAME("%s") "\\n\"\n", destructor ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } +# endif /* __APPLE__ */ +#elif defined(__ALPHA__) + if (constructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tjsr $26," __ASM_NAME("%s") "\\n\"\n", constructor ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } + if (destructor) + { + fprintf( outfile, "asm(\"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tjsr $26," __ASM_NAME("%s") "\\n\"\n", destructor ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); + } +#else +#error You need to define the DLL constructor for your architecture +#endif + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "}\n" ); + fprintf( outfile, "#endif\n" ); +} + + +/******************************************************************* + * BuildSpec32File + * + * Build a Win32 C file from a spec file. + */ +void BuildSpec32File( FILE *outfile, DLLSPEC *spec ) +{ + int exports_size = 0; + int nr_exports, nr_imports; + DWORD page_size; + const char *init_func = spec->init_func; + +#ifdef HAVE_GETPAGESIZE + page_size = getpagesize(); +#elif defined(__svr4__) + page_size = sysconf(_SC_PAGESIZE); +#elif defined(_WINDOWS) + { + SYSTEM_INFO si; + GetSystemInfo(&si); + page_size = si.dwPageSize; + } +#else +# error Cannot get the page size on this platform +#endif + + nr_exports = spec->base <= spec->limit ? spec->limit - spec->base + 1 : 0; + resolve_imports( spec ); + output_standard_file_header( outfile ); + + /* Reserve some space for the PE header */ + + fprintf( outfile, "extern char __wine_spec_pe_header[];\n" ); + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "static void __asm__dummy_header(void) {\n" ); + fprintf( outfile, "#endif\n" ); + fprintf( outfile, "asm(\".text\\n\\t\"\n" ); + fprintf( outfile, " \".align %d\\n\"\n", get_alignment(page_size) ); + fprintf( outfile, " \"" __ASM_NAME("__wine_spec_pe_header") ":\\t" __ASM_SKIP " 65536\\n\\t\"\n" ); + fprintf( outfile, " \".data\\n\\t\"\n" ); + fprintf( outfile, " \".align %d\\n\"\n", get_alignment(4) ); + fprintf( outfile, " \"" __ASM_NAME("__wine_spec_data_start") ":\\t.long 1\");\n" ); + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "}\n" ); + fprintf( outfile, "#endif\n" ); + +#ifdef __APPLE__ + fprintf( outfile, "static char _end[4];\n" ); +#else + fprintf( outfile, "extern char _end[];\n" ); +#endif + + fprintf( outfile, "extern int __wine_spec_data_start[], __wine_spec_exports[];\n\n" ); + +#ifdef __i386__ + fprintf( outfile, "#define __stdcall __attribute__((__stdcall__))\n\n" ); +#else + fprintf( outfile, "#define __stdcall\n\n" ); +#endif + + if (nr_exports) + { + /* Output the stub functions */ + + output_stub_funcs( outfile, spec ); + + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "static void __asm__dummy(void) {\n" ); + fprintf( outfile, "#endif /* !defined(__GNUC__) */\n" ); + + /* Output code for all register functions */ + + output_register_funcs( outfile, spec ); + + /* Output the exports and relay entry points */ + + exports_size = output_exports( outfile, nr_exports, spec ); + + fprintf( outfile, "#ifndef __GNUC__\n" ); + fprintf( outfile, "}\n" ); + fprintf( outfile, "#endif /* !defined(__GNUC__) */\n" ); + } + + /* Output the DLL imports */ + + nr_imports = output_imports( outfile, spec ); + + /* Output the resources */ + + output_resources( outfile, spec ); + + /* Output the entry point function */ + + fprintf( outfile, "static int __wine_spec_init_state;\n" ); + fprintf( outfile, "extern int __wine_main_argc;\n" ); + fprintf( outfile, "extern char **__wine_main_argv;\n" ); + fprintf( outfile, "extern char **__wine_main_environ;\n" ); + fprintf( outfile, "extern unsigned short **__wine_main_wargv;\n" ); +#ifdef __APPLE__ + fprintf( outfile, "extern _dyld_func_lookup(char *, void *);" ); + fprintf( outfile, "static void __wine_spec_hidden_init(int argc, char** argv, char** envp)\n" ); + fprintf( outfile, "{\n" ); + fprintf( outfile, " void (*init)(void);\n" ); + fprintf( outfile, " _dyld_func_lookup(\"__dyld_make_delayed_module_initializer_calls\", (unsigned long *)&init);\n" ); + fprintf( outfile, " init();\n" ); + fprintf( outfile, "}\n" ); + fprintf( outfile, "static void __wine_spec_hidden_fini()\n" ); + fprintf( outfile, "{\n" ); + fprintf( outfile, " void (*fini)(void);\n" ); + fprintf( outfile, " _dyld_func_lookup(\"__dyld_mod_term_funcs\", (unsigned long *)&fini);\n" ); + fprintf( outfile, " fini();\n" ); + fprintf( outfile, "}\n" ); + fprintf( outfile, "#define _init __wine_spec_hidden_init\n" ); + fprintf( outfile, "#define _fini __wine_spec_hidden_fini\n" ); +#else + fprintf( outfile, "extern void _init(int, char**, char**);\n" ); + fprintf( outfile, "extern void _fini();\n" ); +#endif + + if (spec->characteristics & IMAGE_FILE_DLL) + { + if (init_func) + fprintf( outfile, "extern int __stdcall %s( void*, unsigned int, void* );\n\n", init_func ); + else + { + declare_weak_function( outfile, "int __stdcall", "DllMain", "void*, unsigned int, void*" ); + init_func = "DllMain"; + } + fprintf( outfile, + "static int __stdcall __wine_dll_main( void *inst, unsigned int reason, void *reserved )\n" + "{\n" + " int ret;\n" + " if (reason == %d && __wine_spec_init_state == 1)\n" + " _init( __wine_main_argc, __wine_main_argv, __wine_main_environ );\n" + " ret = %s ? %s( inst, reason, reserved ) : 1;\n" + " if (reason == %d && __wine_spec_init_state == 1) _fini();\n" + " return ret;\n" + "}\n", + DLL_PROCESS_ATTACH, init_func, init_func, DLL_PROCESS_DETACH ); + init_func = "__wine_dll_main"; + } + else switch(spec->subsystem) + { + case IMAGE_SUBSYSTEM_NATIVE: + if (init_func) + fprintf( outfile, "extern int __stdcall %s( void*, void* );\n\n", init_func ); + else + { + declare_weak_function( outfile, "int __stdcall", "DriverEntry", "void*, void*"); + init_func = "DriverEntry"; + } + fprintf( outfile, + "static int __stdcall __wine_driver_entry( void *obj, void *path )\n" + "{\n" + " int ret;\n" + " if (__wine_spec_init_state == 1)\n" + " _init( __wine_main_argc, __wine_main_argv, __wine_main_environ );\n" + " ret = %s ? %s( obj, path ) : 0;\n" + " if (__wine_spec_init_state == 1) _fini();\n" + " return ret;\n" + "}\n", + init_func, init_func ); + init_func = "__wine_driver_entry"; + break; + case IMAGE_SUBSYSTEM_WINDOWS_GUI: + case IMAGE_SUBSYSTEM_WINDOWS_CUI: + if (init_func) + fprintf( outfile, "extern int %s( int argc, char *argv[] );\n", init_func ); + else + { + declare_weak_function( outfile, "int", "main", "int argc, char *argv[]" ); + declare_weak_function( outfile, "int", "wmain", "int argc, unsigned short *argv[]" ); + declare_weak_function( outfile, "int __stdcall", "WinMain", "void *,void *,char *,int" ); + } + fprintf( outfile, + "\ntypedef struct {\n" + " unsigned int cb;\n" + " char *lpReserved, *lpDesktop, *lpTitle;\n" + " unsigned int dwX, dwY, dwXSize, dwYSize;\n" + " unsigned int dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags;\n" + " unsigned short wShowWindow, cbReserved2;\n" + " char *lpReserved2;\n" + " void *hStdInput, *hStdOutput, *hStdError;\n" + "} STARTUPINFOA;\n" + "extern char * __stdcall GetCommandLineA(void);\n" + "extern void * __stdcall GetModuleHandleA(char *);\n" + "extern void __stdcall GetStartupInfoA(STARTUPINFOA *);\n" + "extern void __stdcall ExitProcess(unsigned int);\n" + "static void __wine_exe_main(void)\n" + "{\n" + " int ret;\n" + " if (__wine_spec_init_state == 1)\n" + " _init( __wine_main_argc, __wine_main_argv, __wine_main_environ );\n" ); + if (init_func) + fprintf( outfile, + " ret = %s( __wine_main_argc, __wine_main_argv );\n", init_func ); + else + fprintf( outfile, + " if (WinMain) {\n" + " STARTUPINFOA info;\n" + " char *cmdline = GetCommandLineA();\n" + " int bcount=0, in_quotes=0;\n" + " while (*cmdline) {\n" + " if ((*cmdline=='\\t' || *cmdline==' ') && !in_quotes) break;\n" + " else if (*cmdline=='\\\\') bcount++;\n" + " else if (*cmdline=='\\\"') {\n" + " if ((bcount & 1)==0) in_quotes=!in_quotes;\n" + " bcount=0;\n" + " }\n" + " else bcount=0;\n" + " cmdline++;\n" + " }\n" + " while (*cmdline=='\\t' || *cmdline==' ') cmdline++;\n" + " GetStartupInfoA( &info );\n" + " if (!(info.dwFlags & 1)) info.wShowWindow = 1;\n" + " ret = WinMain( GetModuleHandleA(0), 0, cmdline, info.wShowWindow );\n" + " }\n" + " else if (wmain) ret = wmain( __wine_main_argc, __wine_main_wargv );\n" + " else ret = main( __wine_main_argc, __wine_main_argv );\n" ); + fprintf( outfile, + " if (__wine_spec_init_state == 1) _fini();\n" + " ExitProcess( ret );\n" + "}\n\n" ); + init_func = "__wine_exe_main"; + break; + } + + /* Output the NT header */ + + /* this is the IMAGE_NT_HEADERS structure, but we cannot include winnt.h here */ + fprintf( outfile, "static const struct image_nt_headers\n{\n" ); + fprintf( outfile, " int Signature;\n" ); + fprintf( outfile, " struct file_header {\n" ); + fprintf( outfile, " short Machine;\n" ); + fprintf( outfile, " short NumberOfSections;\n" ); + fprintf( outfile, " int TimeDateStamp;\n" ); + fprintf( outfile, " void *PointerToSymbolTable;\n" ); + fprintf( outfile, " int NumberOfSymbols;\n" ); + fprintf( outfile, " short SizeOfOptionalHeader;\n" ); + fprintf( outfile, " short Characteristics;\n" ); + fprintf( outfile, " } FileHeader;\n" ); + fprintf( outfile, " struct opt_header {\n" ); + fprintf( outfile, " short Magic;\n" ); + fprintf( outfile, " char MajorLinkerVersion, MinorLinkerVersion;\n" ); + fprintf( outfile, " int SizeOfCode;\n" ); + fprintf( outfile, " int SizeOfInitializedData;\n" ); + fprintf( outfile, " int SizeOfUninitializedData;\n" ); + fprintf( outfile, " void *AddressOfEntryPoint;\n" ); + fprintf( outfile, " void *BaseOfCode;\n" ); + fprintf( outfile, " void *BaseOfData;\n" ); + fprintf( outfile, " void *ImageBase;\n" ); + fprintf( outfile, " int SectionAlignment;\n" ); + fprintf( outfile, " int FileAlignment;\n" ); + fprintf( outfile, " short MajorOperatingSystemVersion;\n" ); + fprintf( outfile, " short MinorOperatingSystemVersion;\n" ); + fprintf( outfile, " short MajorImageVersion;\n" ); + fprintf( outfile, " short MinorImageVersion;\n" ); + fprintf( outfile, " short MajorSubsystemVersion;\n" ); + fprintf( outfile, " short MinorSubsystemVersion;\n" ); + fprintf( outfile, " int Win32VersionValue;\n" ); + fprintf( outfile, " void *SizeOfImage;\n" ); + fprintf( outfile, " int SizeOfHeaders;\n" ); + fprintf( outfile, " int CheckSum;\n" ); + fprintf( outfile, " short Subsystem;\n" ); + fprintf( outfile, " short DllCharacteristics;\n" ); + fprintf( outfile, " int SizeOfStackReserve;\n" ); + fprintf( outfile, " int SizeOfStackCommit;\n" ); + fprintf( outfile, " int SizeOfHeapReserve;\n" ); + fprintf( outfile, " int SizeOfHeapCommit;\n" ); + fprintf( outfile, " int LoaderFlags;\n" ); + fprintf( outfile, " int NumberOfRvaAndSizes;\n" ); + fprintf( outfile, " struct { const void *VirtualAddress; int Size; } DataDirectory[%d];\n", + IMAGE_NUMBEROF_DIRECTORY_ENTRIES ); + fprintf( outfile, " } OptionalHeader;\n" ); + fprintf( outfile, "} nt_header = {\n" ); + fprintf( outfile, " 0x%04x,\n", IMAGE_NT_SIGNATURE ); /* Signature */ +#ifdef __i386__ + fprintf( outfile, " { 0x%04x,\n", IMAGE_FILE_MACHINE_I386 ); /* Machine */ +#elif defined(__powerpc__) + fprintf( outfile, " { 0x%04x,\n", IMAGE_FILE_MACHINE_POWERPC ); /* Machine */ +#elif defined(__ALPHA__) + fprintf( outfile, " { 0x%04x,\n", IMAGE_FILE_MACHINE_ALPHA ); /* Machine */ +#else + fprintf( outfile, " { 0x%04x,\n", IMAGE_FILE_MACHINE_UNKNOWN ); /* Machine */ +#endif + fprintf( outfile, " 0, 0, 0, 0,\n" ); + fprintf( outfile, " sizeof(nt_header.OptionalHeader),\n" ); /* SizeOfOptionalHeader */ + fprintf( outfile, " 0x%04x },\n", spec->characteristics ); /* Characteristics */ + + fprintf( outfile, " { 0x%04x,\n", IMAGE_NT_OPTIONAL_HDR_MAGIC ); /* Magic */ + fprintf( outfile, " 0, 0,\n" ); /* Major/MinorLinkerVersion */ + fprintf( outfile, " 0, 0, 0,\n" ); /* SizeOfCode/Data */ + fprintf( outfile, " %s,\n", init_func ); /* AddressOfEntryPoint */ + fprintf( outfile, " 0, __wine_spec_data_start,\n" ); /* BaseOfCode/Data */ + fprintf( outfile, " __wine_spec_pe_header,\n" ); /* ImageBase */ + fprintf( outfile, " %ld,\n", page_size ); /* SectionAlignment */ + fprintf( outfile, " %ld,\n", page_size ); /* FileAlignment */ + fprintf( outfile, " 1, 0,\n" ); /* Major/MinorOperatingSystemVersion */ + fprintf( outfile, " 0, 0,\n" ); /* Major/MinorImageVersion */ + fprintf( outfile, " %d,\n", spec->subsystem_major ); /* MajorSubsystemVersion */ + fprintf( outfile, " %d,\n", spec->subsystem_minor ); /* MinorSubsystemVersion */ + fprintf( outfile, " 0,\n" ); /* Win32VersionValue */ + fprintf( outfile, " _end,\n" ); /* SizeOfImage */ + fprintf( outfile, " %ld,\n", page_size ); /* SizeOfHeaders */ + fprintf( outfile, " 0,\n" ); /* CheckSum */ + fprintf( outfile, " 0x%04x,\n", spec->subsystem );/* Subsystem */ + fprintf( outfile, " 0,\n" ); /* DllCharacteristics */ + fprintf( outfile, " %d, %ld,\n", /* SizeOfStackReserve/Commit */ + (spec->stack_size ? spec->stack_size : 1024) * 1024, page_size ); + fprintf( outfile, " %d, %ld,\n", /* SizeOfHeapReserve/Commit */ + (spec->heap_size ? spec->heap_size : 1024) * 1024, page_size ); + fprintf( outfile, " 0,\n" ); /* LoaderFlags */ + fprintf( outfile, " %d,\n", IMAGE_NUMBEROF_DIRECTORY_ENTRIES ); /* NumberOfRvaAndSizes */ + fprintf( outfile, " {\n" ); + fprintf( outfile, " { %s, %d },\n", /* IMAGE_DIRECTORY_ENTRY_EXPORT */ + exports_size ? "__wine_spec_exports" : "0", exports_size ); + fprintf( outfile, " { %s, %s },\n", /* IMAGE_DIRECTORY_ENTRY_IMPORT */ + nr_imports ? "&imports" : "0", nr_imports ? "sizeof(imports)" : "0" ); + fprintf( outfile, " { %s, %s },\n", /* IMAGE_DIRECTORY_ENTRY_RESOURCE */ + spec->nb_resources ? "&resources" : "0", + spec->nb_resources ? "sizeof(resources)" : "0" ); + fprintf( outfile, " }\n }\n};\n\n" ); + + /* Output the DLL constructor */ + + fprintf( outfile, + "void __wine_spec_init(void)\n" + "{\n" + " extern void __wine_dll_register( const struct image_nt_headers *, const char * );\n" + " __wine_spec_init_state = 1;\n" + " __wine_dll_register( &nt_header, \"%s\" );\n" + "}\n\n", + spec->file_name ); + + output_dll_init( outfile, "__wine_spec_init_ctor", NULL ); + fprintf( outfile, + "void __wine_spec_init_ctor(void)\n" + "{\n" + " if (__wine_spec_init_state) return;\n" + " __wine_spec_init();\n" + " __wine_spec_init_state = 2;\n" + "}\n" ); +} + + +/******************************************************************* + * BuildDef32File + * + * Build a Win32 def file from a spec file. + */ +void BuildDef32File( FILE *outfile, DLLSPEC *spec ) +{ + const char *name; + int i; + + fprintf(outfile, "; File generated automatically from %s; do not edit!\n\n", + input_file_name ); + + fprintf(outfile, "LIBRARY %s\n\n", spec->file_name); + + fprintf(outfile, "EXPORTS\n"); + + /* Output the exports and relay entry points */ + + for(i = 0; i < spec->nb_entry_points; i++) + { + const ORDDEF *odp = &spec->entry_points[i]; + int is_data = 0; + + if (!odp) continue; + if (odp->name) name = odp->name; + else if (odp->type == TYPE_STUB) name = make_internal_name( odp, spec, "stub" ); + else if (odp->export_name) name = odp->export_name; + else name = make_internal_name( odp, spec, "noname_export" ); + + fprintf(outfile, " %s", name); + + switch(odp->type) + { + case TYPE_EXTERN: + is_data = 1; + /* fall through */ + case TYPE_VARARGS: + case TYPE_CDECL: + /* try to reduce output */ + if(strcmp(name, odp->link_name) || (odp->flags & FLAG_FORWARD)) + fprintf(outfile, "=%s", odp->link_name); + break; + case TYPE_STDCALL: + { + int at_param = strlen(odp->u.func.arg_types) * sizeof(int); + if (!kill_at) fprintf(outfile, "@%d", at_param); + if (odp->flags & FLAG_FORWARD) + { + fprintf(outfile, "=%s", odp->link_name); + } + else if (strcmp(name, odp->link_name)) /* try to reduce output */ + { + fprintf(outfile, "=%s", odp->link_name); + if (!kill_at) fprintf(outfile, "@%d", at_param); + } + break; + } + case TYPE_STUB: + { + if (!kill_at) + { + const char *check = name + strlen(name); + while (name != check && + '0' <= check[-1] && check[-1] <= '9') + { + check--; + } + if (name != check && check != name + strlen(name) && + '@' == check[-1]) + { + fprintf(outfile, "%s", check - 1); + } + } + if (NULL != odp->name) + { + fprintf(outfile, "=%s", make_internal_name( odp, spec, "stub" )); + } + break; + } + default: + assert(0); + } + fprintf( outfile, " @%d", odp->ordinal ); +#if 0 /* MinGW binutils cannot handle this correctly */ + if (!odp->name) fprintf( outfile, " NONAME" ); +#else + if (!odp->name && (odp->type == TYPE_STUB || odp->export_name)) fprintf( outfile, " NONAME" ); +#endif + if (is_data) fprintf( outfile, " DATA" ); +#if 0 + /* MinGW binutils cannot handle this correctly */ + if (odp->flags & FLAG_PRIVATE) fprintf( outfile, " PRIVATE" ); +#endif + fprintf( outfile, "\n" ); + } +} + + +/******************************************************************* + * BuildDebugFile + * + * Build the debugging channels source file. + */ +void BuildDebugFile( FILE *outfile, const char *srcdir, char **argv ) +{ + int nr_debug; + char *prefix, *p; + + while (*argv) + { + if (!parse_debug_channels( srcdir, *argv++ )) exit(1); + } + + output_standard_file_header( outfile ); + nr_debug = output_debug( outfile ); + if (!nr_debug) + { + fprintf( outfile, "/* no debug channels found for this module */\n" ); + return; + } + + if (output_file_name) + { + if ((p = strrchr( output_file_name, '/' ))) p++; + prefix = xstrdup( p ? p : output_file_name ); + if ((p = strchr( prefix, '.' ))) *p = 0; + strcpy( p, make_c_identifier(p) ); + } + else prefix = xstrdup( "_" ); + + /* Output the DLL constructor */ + + fprintf( outfile, + "#ifdef __GNUC__\n" + "void __wine_dbg_%s_init(void) __attribute__((constructor));\n" + "void __wine_dbg_%s_fini(void) __attribute__((destructor));\n" + "#else\n" + "static void __asm__dummy_dll_init(void) {\n", + prefix, prefix ); + +#if defined(__i386__) + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); +#elif defined(__sparc__) + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\tnop\\n\"\n" ); + fprintf( outfile, " \"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tcall " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\tnop\\n\"\n" ); + fprintf( outfile, " \"\\t.section\t\\\".text\\\"\\n\");\n" ); +#elif defined(__powerpc__) +# ifdef __APPLE__ + fprintf( outfile, "asm(\"\\t.mod_init_func\\n\"\n" ); + fprintf( outfile, " \"\\t.align 2\\n\"\n" ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.text\\n\");\n" ); + fprintf( outfile, "asm(\"\\t.mod_term_func\\n\"\n" ); + fprintf( outfile, " \"\\t.align 2\\n\"\n" ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.text\\n\");\n" ); +# else + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tbl " __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tbl " __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.text\\n\");\n" ); +# endif +#elif defined(__ALPHA__) + fprintf( outfile, "asm(\"\\t.section\\t\\\".init\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tjsr $26," __ASM_NAME("__wine_dbg_%s_init") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.section\\t\\\".fini\\\" ,\\\"ax\\\"\\n\"\n" ); + fprintf( outfile, " \"\\tjsr $26," __ASM_NAME("__wine_dbg_%s_fini") "\\n\"\n", prefix ); + fprintf( outfile, " \"\\t.section\\t\\\".text\\\"\\n\");\n" ); +#else +#error You need to define the DLL constructor for your architecture +#endif + fprintf( outfile, "}\n#endif /* defined(__GNUC__) */\n\n" ); + + fprintf( outfile, + "void __wine_dbg_%s_init(void)\n" + "{\n" + " extern void *__wine_dbg_register( char * const *, int );\n" + " if (!debug_registration) debug_registration = __wine_dbg_register( debug_channels, %d );\n" + "}\n\n", prefix, nr_debug ); + fprintf( outfile, + "void __wine_dbg_%s_fini(void)\n" + "{\n" + " extern void __wine_dbg_unregister( void* );\n" + " __wine_dbg_unregister( debug_registration );\n" + "}\n", prefix ); + + free( prefix ); +} + + +/******************************************************************* + * BuildPedllFile + * + * Build a PE DLL C file from a spec file. + */ +void BuildPedllFile( FILE *outfile, DLLSPEC *spec ) +{ + int nr_exports; + + nr_exports = spec->base <= spec->limit ? spec->limit - spec->base + 1 : 0; + output_standard_file_header( outfile ); + + if (nr_exports) + { + /* Output the stub functions */ + + output_stub_funcs( outfile, spec ); + } +} diff --git a/reactos/tools/winebuild/utils.c b/reactos/tools/winebuild/utils.c new file mode 100644 index 00000000000..bf71941ee0d --- /dev/null +++ b/reactos/tools/winebuild/utils.c @@ -0,0 +1,415 @@ +/* + * Small utility functions for winebuild + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#if !defined(WIN32) +#undef strdup +#endif + +#include +#include +#include +#include +#include + +#include "build.h" + +void *xmalloc (size_t size) +{ + void *res; + + res = malloc (size ? size : 1); + if (res == NULL) + { + fprintf (stderr, "Virtual memory exhausted.\n"); + exit (1); + } + return res; +} + +void *xrealloc (void *ptr, size_t size) +{ + void *res = realloc (ptr, size); + if (res == NULL) + { + fprintf (stderr, "Virtual memory exhausted.\n"); + exit (1); + } + return res; +} + +char *xstrdup( const char *str ) +{ + char *res = strdup( str ); + if (!res) + { + fprintf (stderr, "Virtual memory exhausted.\n"); + exit (1); + } + return res; +} + +char *strupper(char *s) +{ + char *p; + for (p = s; *p; p++) *p = toupper(*p); + return s; +} + +void fatal_error( const char *msg, ... ) +{ + va_list valist; + va_start( valist, msg ); + if (input_file_name) + { + fprintf( stderr, "%s:", input_file_name ); + if (current_line) + fprintf( stderr, "%d:", current_line ); + fputc( ' ', stderr ); + } + else fprintf( stderr, "winebuild: " ); + vfprintf( stderr, msg, valist ); + va_end( valist ); + exit(1); +} + +void fatal_perror( const char *msg, ... ) +{ + va_list valist; + va_start( valist, msg ); + if (input_file_name) + { + fprintf( stderr, "%s:", input_file_name ); + if (current_line) + fprintf( stderr, "%d:", current_line ); + fputc( ' ', stderr ); + } + vfprintf( stderr, msg, valist ); + perror( " " ); + va_end( valist ); + exit(1); +} + +void error( const char *msg, ... ) +{ + va_list valist; + va_start( valist, msg ); + if (input_file_name) + { + fprintf( stderr, "%s:", input_file_name ); + if (current_line) + fprintf( stderr, "%d:", current_line ); + fputc( ' ', stderr ); + } + vfprintf( stderr, msg, valist ); + va_end( valist ); + nb_errors++; +} + +void warning( const char *msg, ... ) +{ + va_list valist; + + if (!display_warnings) return; + va_start( valist, msg ); + if (input_file_name) + { + fprintf( stderr, "%s:", input_file_name ); + if (current_line) + fprintf( stderr, "%d:", current_line ); + fputc( ' ', stderr ); + } + fprintf( stderr, "warning: " ); + vfprintf( stderr, msg, valist ); + va_end( valist ); +} + +/* output a standard header for generated files */ +void output_standard_file_header( FILE *outfile ) +{ + if (input_file_name) + fprintf( outfile, "/* File generated automatically from %s; do not edit! */\n", + input_file_name ); + else + fprintf( outfile, "/* File generated automatically; do not edit! */\n" ); + fprintf( outfile, + "/* This file can be copied, modified and distributed without restriction. */\n\n" ); +} + +/* dump a byte stream into the assembly code */ +void dump_bytes( FILE *outfile, const unsigned char *data, int len, + const char *label, int constant ) +{ + int i; + + fprintf( outfile, "\nstatic %sunsigned char %s[%d] = {", + constant ? "const " : "", label, len ); + for (i = 0; i < len; i++) + { + if (!(i & 7)) fprintf( outfile, "\n " ); + fprintf( outfile, "0x%02x", *data++ ); + if (i < len - 1) fprintf( outfile, "," ); + } + fprintf( outfile, "\n};\n" ); +} + + +/******************************************************************* + * open_input_file + * + * Open a file in the given srcdir and set the input_file_name global variable. + */ +FILE *open_input_file( const char *srcdir, const char *name ) +{ + char *fullname; + FILE *file = fopen( name, "r" ); + + if (!file && srcdir) + { + fullname = xmalloc( strlen(srcdir) + strlen(name) + 2 ); + strcpy( fullname, srcdir ); + strcat( fullname, "/" ); + strcat( fullname, name ); + file = fopen( fullname, "r" ); + } + else fullname = xstrdup( name ); + + if (!file) fatal_error( "Cannot open file '%s'\n", fullname ); + input_file_name = fullname; + current_line = 1; + return file; +} + + +/******************************************************************* + * close_input_file + * + * Close the current input file (must have been opened with open_input_file). + */ +void close_input_file( FILE *file ) +{ + fclose( file ); + free( input_file_name ); + input_file_name = NULL; + current_line = 0; +} + + +/******************************************************************* + * remove_stdcall_decoration + * + * Remove a possible @xx suffix from a function name. + * Return the numerical value of the suffix, or -1 if none. + */ +int remove_stdcall_decoration( char *name ) +{ + char *p, *end = strrchr( name, '@' ); + if (!end || !end[1] || end == name) return -1; + /* make sure all the rest is digits */ + for (p = end + 1; *p; p++) if (!isdigit(*p)) return -1; + *end = 0; + return atoi( end + 1 ); +} + + +/******************************************************************* + * alloc_dll_spec + * + * Create a new dll spec file descriptor + */ +DLLSPEC *alloc_dll_spec(void) +{ + DLLSPEC *spec; + + spec = xmalloc( sizeof(*spec) ); + spec->file_name = NULL; + spec->dll_name = NULL; + spec->owner_name = NULL; + spec->init_func = NULL; + spec->type = SPEC_WIN32; + spec->base = MAX_ORDINALS; + spec->limit = 0; + spec->stack_size = 0; + spec->heap_size = 0; + spec->nb_entry_points = 0; + spec->alloc_entry_points = 0; + spec->nb_names = 0; + spec->nb_resources = 0; + spec->characteristics = 0; + spec->subsystem = 0; + spec->subsystem_major = 4; + spec->subsystem_minor = 0; + spec->entry_points = NULL; + spec->names = NULL; + spec->ordinals = NULL; + spec->resources = NULL; + return spec; +} + + +/******************************************************************* + * free_dll_spec + * + * Free dll spec file descriptor + */ +void free_dll_spec( DLLSPEC *spec ) +{ + int i; + + for (i = 0; i < spec->nb_entry_points; i++) + { + ORDDEF *odp = &spec->entry_points[i]; + free( odp->name ); + free( odp->export_name ); + free( odp->link_name ); + } + free( spec->file_name ); + free( spec->dll_name ); + free( spec->owner_name ); + free( spec->init_func ); + free( spec->entry_points ); + free( spec->names ); + free( spec->ordinals ); + free( spec->resources ); + free( spec ); +} + + +/******************************************************************* + * make_c_identifier + * + * Map a string to a valid C identifier. + */ +const char *make_c_identifier( const char *str ) +{ + static char buffer[256]; + char *p; + + for (p = buffer; *str && p < buffer+sizeof(buffer)-1; p++, str++) + { + if (isalnum(*str)) *p = *str; + else *p = '_'; + } + *p = 0; + return buffer; +} + + +/***************************************************************** + * Function: get_alignment + * + * Description: + * According to the info page for gas, the .align directive behaves + * differently on different systems. On some architectures, the + * argument of a .align directive is the number of bytes to pad to, so + * to align on an 8-byte boundary you'd say + * .align 8 + * On other systems, the argument is "the number of low-order zero bits + * that the location counter must have after advancement." So to + * align on an 8-byte boundary you'd say + * .align 3 + * + * The reason gas is written this way is that it's trying to mimick + * native assemblers for the various architectures it runs on. gas + * provides other directives that work consistantly across + * architectures, but of course we want to work on all arches with or + * without gas. Hence this function. + * + * + * Parameters: + * alignBoundary -- the number of bytes to align to. + * If we're on an architecture where + * the assembler requires a 'number + * of low-order zero bits' as a + * .align argument, then this number + * must be a power of 2. + * + */ +int get_alignment(int alignBoundary) +{ +#if defined(__powerpc__) || defined(__ALPHA__) + + int n = 0; + + switch(alignBoundary) + { + case 2: + n = 1; + break; + case 4: + n = 2; + break; + case 8: + n = 3; + break; + case 16: + n = 4; + break; + case 32: + n = 5; + break; + case 64: + n = 6; + break; + case 128: + n = 7; + break; + case 256: + n = 8; + break; + case 512: + n = 9; + break; + case 1024: + n = 10; + break; + case 2048: + n = 11; + break; + case 4096: + n = 12; + break; + case 8192: + n = 13; + break; + case 16384: + n = 14; + break; + case 32768: + n = 15; + break; + case 65536: + n = 16; + break; + default: + fatal_error("Alignment to %d-byte boundary not supported on this architecture.\n", + alignBoundary); + } + return n; + +#elif defined(__i386__) || defined(__sparc__) + + return alignBoundary; + +#else +#error "How does the '.align' assembler directive work on your architecture?" +#endif +} diff --git a/reactos/tools/winebuild/winebuild.man.in b/reactos/tools/winebuild/winebuild.man.in new file mode 100644 index 00000000000..4f47749fc9e --- /dev/null +++ b/reactos/tools/winebuild/winebuild.man.in @@ -0,0 +1,434 @@ +.\" -*- nroff -*- +.TH WINEBUILD 1 "March 2003" "@PACKAGE_STRING@" "Wine dll builder" +.SH NAME +winebuild \- Wine dll builder +.SH SYNOPSIS +.BI winebuild\ [options]\ [input\ files] +.SH DESCRIPTION +.B winebuild +generates the C and assembly files that are necessary to build a Wine +dll, which is basically a Win32 dll encapsulated inside a Unix +library. +.PP +.B winebuild +has different modes, depending on what kind of file it is asked to +generate. The mode is specified by one of the mode options specified +below. In addition to the mode option, various other command-line +option can be specified, as described in the \fBOPTIONS\fR section. +.SH "MODE OPTIONS" +You have to specify exactly one of the following options, depending on +what you want winebuild to generate. +.TP +.BI \--dll= filename +Build a C file from a .spec file (see \fBSPEC FILE SYNTAX\fR for +details), or from a standard Windows .def file. The resulting C file +must be compiled and linked to the other object files to build a +working Wine dll. +.br +In that mode, the +.I input files +should be the list of all object files that will be linked into the +final dll, to allow +.B winebuild +to get the list of all undefined symbols that need to be imported from +other dlls. +.TP +.BI \--exe= name +Build a C file for the named executable. This is basically the same as +the --dll mode except that it doesn't require a .spec file as input, +since an executable doesn't export functions. The resulting C file +must be compiled and linked to the other object files to build a +working Wine executable, and all the other object files must be listed +as +.I input files. +.TP +.BI \--def= file.spec +Build a .def file from a spec file. This is used when building dlls +with a PE (Win32) compiler. +.TP +.B \--debug +Build a C file containing the definitions for debugging channels. In +that mode the +.I input files +should be a list of C files to search for debug channel +definitions. The resulting C file must be compiled and linked with the +dll. +.TP +.B \--relay16 +Generate the assembly code for the 16-bit relay routines. This is for +Wine internal usage only, you should never need to use this option. +.TP +.B \--relay32 +Generate the assembly code for the 32-bit relay routines. This is for +Wine internal usage only, you should never need to use this option. +.SH OPTIONS +.TP +.BI \-C,\ --source-dir= directory +Change to the specified directory before reading source files. Only +meaningful in +.BR \--debug\ mode. +.TP +.BI \-D\ symbol +Ignored for compatibility with the C compiler. +.TP +.BI \-e,\ --entry= function +Specify the module entry point function; if not specified, the default +is +.B DllMain +for dlls, and +.B WinMain +for executables (if +.B WinMain +is not defined, the standard C +.B main +is used instead). This is only valid for Win32 modules. +.TP +.BI \-f\ flags +Ignored for compatibility with the C compiler. +.TP +.BI \-F,\ --filename= filename +Set the file name of the module. The default is to use the base name +of the spec file (without any extension). +.TP +.B \-h, --help +Display a usage message and exit. +.TP +.BI \-H,\ --heap= size +Specify the size of the module local heap in bytes (only valid for +Win16 modules); default is no local heap. +.TP +.BI \-i,\ --ignore= [-]symbol[,[-]symbol] +Specify a list of symbols that should be ignored when resolving +undefined symbols against the imported libraries. This forces these +symbols to be resolved from the Unix C library (or from another Unix +library linked with the application). If a symbol is prefixed by '-' +it is removed from the list instead of being added; a stand-alone '-' +clears the whole list. +.TP +.BI \-I\ directory +Ignored for compatibility with the C compiler. +.TP +.B \-k, --kill-at +Remove the stdcall decorations from the symbol names in the +generated .def file. Only meaningful in \fB--def\fR mode. +.TP +.BI \-K\ flags +Ignored for compatibility with the C compiler. +.TP +.BI \--ld-cmd= ld-command +Specify the command to use to link the object files; the default is +\fBld\fR. +.TP +.BI \--nm-cmd= nm-command +Specify the command to use to get the list of undefined symbols; the +default is \fBnm\fR. +.TP +.BI \-L,\ --library-path= directory +Append the specified directory to the list of directories that are +searched for import libraries. +.TP +.BI \-l,\ --library= name +Import the specified library, looking for a corresponding +\fIlibname.def\fR file in the directories specified with the \fB-L\fR +option. +.TP +.BI \-d,\ --delay-lib= name +Same as the \fB-l\fR option, but import the specified library in +delayed mode (i.e. the library won't be loaded until a function +imported from it is actually called). +.TP +.BI \-M,\ --main-module= module +Specify that we are building a 16-bit dll, that will ultimately be +linked together with the 32-bit dll specified in \fImodule\fR. Only +meaningful in \fB--dll\fR mode. +.TP +.BI \-N,\ --dll-name= dllname +Set the internal name of the module. It is only used in Win16 +modules. The default is to use the base name of the spec file (without +any extension). This is used for KERNEL, since it lives in +KRNL386.EXE. It shouldn't be needed otherwise. +.TP +.BI \-o,\ --output= file +Set the name of the output file (default is standard output). +.TP +.BI \-r,\ --res= rsrc.res +Load resources from the specified binary resource file. The +\fIrsrc.res\fR can be produced from a source resource file with +.BR wrc(1) +(or with a Windows resource compiler). +.br +This option is only necessary for Win16 resource files, the Win32 ones +can simply listed as +.I input files +and will automatically be handled correctly (though the +.B \-r +option will also work for Win32 files). +.TP +.BI --subsystem= subsystem[:major[.minor]] +Set the subsystem of the executable, which can be one of the following: +.br +.B console +for a command line executable, +.br +.B windows +for a graphical executable, +.br +.B native +for a native-mode dll. +.br +The entry point of a command line executable is a normal C \fBmain\fR +function. A \fBwmain\fR function can be used instead if you need the +argument array to use Unicode strings. A graphical executable has a +\fBWinMain\fR entry point. +.br +Optionally a major and minor subsystem version can also be specified; +the default subsystem version is 4.0. +.TP +.B \--version +Display the program version and exit. +.TP +.B \-w, --warnings +Turn on warnings. +.SH "SPEC FILE SYNTAX" +.SS "General syntax" +A spec file should contain a list of ordinal declarations. The general +syntax is the following: +.PP +.I ordinal functype +.RI [ flags ]\ exportname \ \fB(\fR\ [ args... ] \ \fB) \ [ handler ] +.br +.IB ordinal\ variable +.RI [ flags ]\ exportname \ \fB(\fR\ [ data... ] \ \fB) +.br +.IB ordinal\ extern +.RI [ flags ]\ exportname \ [ symbolname ] +.br +.IB ordinal\ stub +.RI [ flags ]\ exportname +.br +.IB ordinal\ equate +.RI [ flags ]\ exportname\ data +.br +.BI #\ comments +.PP +Declarations must fit on a single line, except if the end of line is +escaped using a backslash character. The +.B # +character anywhere in a line causes the rest of the line to be ignored +as a comment. +.PP +.I ordinal +specifies the ordinal number corresponding to the entry point, or '@' +for automatic ordinal allocation (Win32 only). +.PP +.I flags +is a series of optional flags, preceded by a '-' character. The +supported flags are: +.RS +.TP +.B -norelay +The entry point is not displayed in relay debugging traces (Win32 +only). +.TP +.B -noname +The entry point will be imported by ordinal instead of by name. +.TP +.B -ret16 +The function returns a 16-bit value (Win16 only). +.TP +.B -ret64 +The function returns a 64-bit value (Win32 only). +.TP +.B -i386 +The entry point is only available on i386 platforms. +.TP +.B -register +The function uses CPU register to pass arguments. +.TP +.B -private +The function cannot be imported from other dlls, it can only be +accessed through GetProcAddress. +.SS "Function ordinals" +Syntax: +.br +.I ordinal functype +.RI [ flags ]\ exportname \ \fB(\fR\ [ args... ] \ \fB) \ [ handler ] +.br + +This declaration defines a function entry point. The prototype defined by +.IR exportname \ \fB(\fR\ [ args... ] \ \fB) +specifies the name available for dynamic linking and the format of the +arguments. '@' can be used instead of +.I exportname +for ordinal-only exports. +.PP +.I functype +should be one of: +.RS +.TP +.B stdcall +for a normal Win32 function +.TP +.B pascal +for a normal Win16 function +.TP +.B cdecl +for a Win16 or Win32 function using the C calling convention +.TP +.B varargs +for a Win16 or Win32 function using the C calling convention with a +variable number of arguments +.RE +.PP +.I args +should be one or several of: +.RS +.TP +.B word +(16-bit unsigned value) +.TP +.B s_word +(16-bit signed word) +.TP +.B long +(32-bit value) +.TP +.B double +(64-bit value) +.TP +.B ptr +(linear pointer) +.TP +.B str +(linear pointer to a null-terminated ASCII string) +.TP +.B wstr +(linear pointer to a null-terminated Unicode string) +.TP +.B segptr +(segmented pointer) +.TP +.B segstr +(segmented pointer to a null-terminated ASCII string). +.HP +.RB Only\ ptr ,\ str ,\ wstr ,\ long\ and\ double +are valid for Win32 functions. +.RE +.PP +.I handler +is the name of the actual C function that will implement that entry +point in 32-bit mode. The handler can also be specified as +.IB dllname . function +to define a forwarded function (one whose implementation is in another +dll). If +.I handler +is not specified, it is assumed to be identical to +.I exportname. +.PP +This first example defines an entry point for the 32-bit GetFocus() +call: +.IP +@ stdcall GetFocus() GetFocus +.PP +This second example defines an entry point for the 16-bit +CreateWindow() call (the ordinal 100 is just an example); it also +shows how long lines can be split using a backslash: +.IP +100 pascal CreateWindow(ptr ptr long s_word s_word s_word \\ + s_word word word word ptr) WIN_CreateWindow +.PP +To declare a function using a variable number of arguments, specify +the function as +.B varargs +and declare it in the C file with a '...' parameter for a Win32 +function, or with an extra VA_LIST16 argument for a Win16 function. +See the wsprintf* functions in user.exe.spec and user32.spec for an +example. +.SS "Variable ordinals" +Syntax: +.br +.IB ordinal\ variable +.RI [ flags ]\ exportname \ \fB(\fR\ [ data... ] \ \fB) +.PP +This declaration defines data storage as 32-bit words at the ordinal +specified. +.I exportname +will be the name available for dynamic +linking. +.I data +can be a decimal number or a hex number preceeded by "0x". The +following example defines the variable VariableA at ordinal 2 and +containing 4 ints: +.IP +2 variable VariableA(-1 0xff 0 0) +.PP +This declaration only works in Win16 spec files. In Win32 you should +use +.B extern +instead (see below). +.SS "Extern ordinals" +Syntax: +.br +.IB ordinal\ extern +.RI [ flags ]\ exportname \ [ symbolname ] +.PP +This declaration defines an entry that simply maps to a C symbol +(variable or function). It only works in Win32 spec files. +.I exportname +will point to the symbol +.I symbolname +that must be defined in the C code. Alternatively, it can be of the +form +.IB dllname . symbolname +to define a forwarded symbol (one whose implementation is in another +dll). If +.I symbolname +is not specified, it is assumed to be identical to +.I exportname. +.SS "Stub ordinals" +Syntax: +.br +.IB ordinal\ stub +.RI [ flags ]\ exportname +.PP +This declaration defines a stub function. It makes the name and +ordinal available for dynamic linking, but will terminate execution +with an error message if the function is ever called. +.SS "Equate ordinals" +Syntax: +.br +.IB ordinal\ equate +.RI [ flags ]\ exportname\ data +.PP +This declaration defines an ordinal as an absolute value. +.I exportname +will be the name available for dynamic linking. +.I data +can be a decimal number or a hex number preceeded by "0x". +.SH AUTHORS +.B winebuild +has been worked on by many people over the years. The main authors are +Robert J. Amstadt, Alexandre Julliard, Martin von Loewis, Ulrich +Weigand and Eric Youngdale. Many other Wine developers have +contributed, please check the file Changelog in the Wine distribution +for the complete details. +.SH BUGS +It is not yet possible to use a PE-format dll in an import +specification; only Wine dlls can be imported. +.PP +If you find a bug, please submit a bug report at +.UR http://bugs.winehq.org +.B http://bugs.winehq.org. +.UE +.SH AVAILABILITY +.B winebuild +is part of the wine distribution, which is available through WineHQ, +the +.B wine +development headquarters, at +.UR http://www.winehq.org/ +.B http://www.winehq.org/. +.UE +.SH "SEE ALSO" +.BR wine (1), +.BR wrc (1). diff --git a/reactos/tools/winebuild/winglue.h b/reactos/tools/winebuild/winglue.h new file mode 100644 index 00000000000..ecbb4f86588 --- /dev/null +++ b/reactos/tools/winebuild/winglue.h @@ -0,0 +1,31 @@ +#ifndef _WINGLUE_H +#define _WINGLUE_H + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned short WCHAR; + +#define LOBYTE(w) ((BYTE)(w)) +#define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF)) + +#define DLL_PROCESS_ATTACH 1 +#define DLL_PROCESS_DETACH 0 + +#define IMAGE_FILE_DLL 8192 +#define IMAGE_SUBSYSTEM_NATIVE 1 +#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 +#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 +#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 +#define IMAGE_FILE_MACHINE_I386 332 +#define IMAGE_NT_SIGNATURE 0x00004550 +#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b + +#ifndef max +#define max(a,b) ((a)>(b)?(a):(b)) +#endif +#ifndef min +#define min(a,b) ((a)<(b)?(a):(b)) +#endif + +#endif /* _WINGLUE_H */ From f0222daf5d662e58356bf3922ecc7fc98196cae2 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 21:00:05 +0000 Subject: [PATCH 054/248] 1. a few previous mode fixes 2. implemented NtSetDefaultHardErrorPort() with help of pseudo code from windowsitlibrary.com svn path=/trunk/; revision=13576 --- reactos/ntoskrnl/ke/alert.c | 7 ++++-- reactos/ntoskrnl/ke/apc.c | 9 +++++--- reactos/ntoskrnl/ke/error.c | 43 ++++++++++++++++++++++++++++++++++--- 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/reactos/ntoskrnl/ke/alert.c b/reactos/ntoskrnl/ke/alert.c index 6dcc12cec1e..8fa0783baba 100644 --- a/reactos/ntoskrnl/ke/alert.c +++ b/reactos/ntoskrnl/ke/alert.c @@ -107,13 +107,16 @@ NtAlertResumeThread(IN HANDLE ThreadHandle, NTSTATUS STDCALL NtAlertThread (IN HANDLE ThreadHandle) { + KPROCESSOR_MODE PreviousMode; PETHREAD Thread; NTSTATUS Status; + + PreviousMode = ExGetPreviousMode(); Status = ObReferenceObjectByHandle(ThreadHandle, THREAD_SUSPEND_RESUME, PsThreadType, - ExGetPreviousMode(), + PreviousMode, (PVOID*)&Thread, NULL); if (!NT_SUCCESS(Status)) @@ -125,7 +128,7 @@ NtAlertThread (IN HANDLE ThreadHandle) * ZwAlertThread was called? * -Gunnar */ - KeAlertThread((PKTHREAD)Thread, UserMode); + KeAlertThread((PKTHREAD)Thread, PreviousMode); ObDereferenceObject(Thread); return(STATUS_SUCCESS); diff --git a/reactos/ntoskrnl/ke/apc.c b/reactos/ntoskrnl/ke/apc.c index 437de014465..9c7c0bcf08f 100644 --- a/reactos/ntoskrnl/ke/apc.c +++ b/reactos/ntoskrnl/ke/apc.c @@ -1,4 +1,4 @@ -/* $Id:$ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -517,13 +517,16 @@ NtQueueApcThread(HANDLE ThreadHandle, PKAPC Apc; PETHREAD Thread; + KPROCESSOR_MODE PreviousMode; NTSTATUS Status; + + PreviousMode = ExGetPreviousMode(); /* Get ETHREAD from Handle */ Status = ObReferenceObjectByHandle(ThreadHandle, THREAD_SET_CONTEXT, PsThreadType, - KeGetPreviousMode(), + PreviousMode, (PVOID)&Thread, NULL); @@ -552,7 +555,7 @@ NtQueueApcThread(HANDLE ThreadHandle, KiFreeApcRoutine, NULL, ApcRoutine, - UserMode, + PreviousMode, NormalContext); if (!KeInsertQueueApc(Apc, SystemArgument1, SystemArgument2, IO_NO_INCREMENT)) { Status = STATUS_UNSUCCESSFUL; diff --git a/reactos/ntoskrnl/ke/error.c b/reactos/ntoskrnl/ke/error.c index a86185086ee..121c432becc 100644 --- a/reactos/ntoskrnl/ke/error.c +++ b/reactos/ntoskrnl/ke/error.c @@ -1,4 +1,4 @@ -/* $Id:$ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -15,6 +15,10 @@ /* FUNCTIONS ***************************************************************/ +BOOLEAN ExReadyForErrors = FALSE; +PEPORT ExpDefaultErrorPort = NULL; +PEPROCESS ExpDefaultErrorPortProcess = NULL; + /* * @unimplemented */ @@ -54,8 +58,41 @@ NtRaiseHardError(IN NTSTATUS Status, NTSTATUS STDCALL NtSetDefaultHardErrorPort(IN HANDLE PortHandle) { - UNIMPLEMENTED; - return(STATUS_NOT_IMPLEMENTED); + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status; + + PreviousMode = ExGetPreviousMode(); + + if(!SeSinglePrivilegeCheck(SeTcbPrivilege, + PreviousMode)) + { + DPRINT1("NtSetDefaultHardErrorPort: Caller requires the SeTcbPrivilege privilege!\n"); + return STATUS_PRIVILEGE_NOT_HELD; + } + + /* serialization shouldn't be required here as it usually is just called once + during startup */ + + if(!ExReadyForErrors) + { + Status = ObReferenceObjectByHandle(PortHandle, + 0, + LpcPortObjectType, + PreviousMode, + (PVOID*)&ExpDefaultErrorPort, + NULL); + if(NT_SUCCESS(Status)) + { + ExpDefaultErrorPortProcess = PsGetCurrentProcess(); + ExReadyForErrors = TRUE; + } + } + else + { + Status = STATUS_UNSUCCESSFUL; + } + + return Status; } /* EOF */ From 03b34e7857629a9880bb651b41e7015b45186e32 Mon Sep 17 00:00:00 2001 From: Mike Nordell Date: Mon, 14 Feb 2005 21:07:25 +0000 Subject: [PATCH 055/248] Fix broken DEVICE_NO_FLUSH handling for ATAPI devices, with augmentation to check the SupportedFeatures83 of the device. Thanks to tinus_ for finding and fixing. svn path=/trunk/; revision=13577 --- reactos/drivers/storage/atapi/atapi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/storage/atapi/atapi.c b/reactos/drivers/storage/atapi/atapi.c index 26f11ef16e6..16871ea51c4 100644 --- a/reactos/drivers/storage/atapi/atapi.c +++ b/reactos/drivers/storage/atapi/atapi.c @@ -2231,7 +2231,7 @@ AtapiFlushCache(PATAPI_MINIPORT_EXTENSION DeviceExtension, DPRINT("SCSIOP_SYNCRONIZE_CACHE: TargetId: %lu\n", Srb->TargetId); - if (!(DeviceExtension->DeviceFlags[Srb->TargetId] & DEVICE_NO_FLUSH)) + if (DeviceExtension->DeviceFlags[Srb->TargetId] & DEVICE_NO_FLUSH) { /* * NOTE: Don't flush the cache for CD/DVD drives. Although @@ -2240,9 +2240,16 @@ AtapiFlushCache(PATAPI_MINIPORT_EXTENSION DeviceExtension, * it doesn't make sense to flush cache on devices we don't * write to. */ - return STATUS_SUCCESS; + return SRB_STATUS_INVALID_REQUEST; } + if (!(DeviceExtension->DeviceParams[Srb->TargetId].SupportedFeatures83 & 0x1000)) + { + /* The device states it doesn't support the command */ + DPRINT("The drive doesn't support FLUSH_CACHE\n"); + return SRB_STATUS_INVALID_REQUEST; + } + /* Wait for BUSY to clear */ for (Retries = 0; Retries < IDE_MAX_BUSY_RETRIES; Retries++) { From eafae645260b412f2a240ea96af54d9a5285ec89 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 21:41:49 +0000 Subject: [PATCH 056/248] fixed the NtRaiseHardError() prototype svn path=/trunk/; revision=13578 --- reactos/include/ntos/zw.h | 45 +++++++++++++++++++------------------ reactos/ntoskrnl/ke/error.c | 14 ++++++------ 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/reactos/include/ntos/zw.h b/reactos/include/ntos/zw.h index 82c57d3630f..5d898bde765 100755 --- a/reactos/include/ntos/zw.h +++ b/reactos/include/ntos/zw.h @@ -5457,11 +5457,11 @@ NtQueryVirtualMemory( * FUNCTION: Raises a hard error (stops the system) * ARGUMENTS: * Status = Status code of the hard error - * Unknown2 = ?? - * Unknown3 = ?? - * Unknown4 = ?? - * Unknown5 = ?? - * Unknown6 = ?? + * NumberOfParameters = Number of (optional) parameters in Parameters + * UnicodeStringParameterMask = (optional) string parameter, one per error code + * Parameters = An Array of pointers for use in the error message string + * ResponseOption = Specifies the type of the message box + * Response = Specifies the user's response * RETURNS: Status * */ @@ -5469,12 +5469,12 @@ NtQueryVirtualMemory( NTSTATUS STDCALL NtRaiseHardError( - IN NTSTATUS Status, - ULONG Unknown2, - ULONG Unknown3, - ULONG Unknown4, - ULONG Unknown5, - ULONG Unknown6 + IN NTSTATUS ErrorStatus, + IN ULONG NumberOfParameters, + IN PUNICODE_STRING UnicodeStringParameterMask OPTIONAL, + IN PVOID *Parameters, + IN HARDERROR_RESPONSE_OPTION ResponseOption, + OUT PHARDERROR_RESPONSE Response ); /* @@ -6186,23 +6186,24 @@ ZwQueryVirtualMemory( * FUNCTION: Raises a hard error (stops the system) * ARGUMENTS: * Status = Status code of the hard error - * Unknown2 = ?? - * Unknown3 = ?? - * Unknown4 = ?? - * Unknown5 = ?? - * Unknown6 = ?? + * NumberOfParameters = Number of (optional) parameters in Parameters + * UnicodeStringParameterMask = (optional) string parameter, one per error code + * Parameters = An Array of pointers for use in the error message string + * ResponseOption = Specifies the type of the message box + * Response = Specifies the user's response * RETURNS: Status * */ + NTSTATUS STDCALL ZwRaiseHardError( - IN NTSTATUS Status, - ULONG Unknown2, - ULONG Unknown3, - ULONG Unknown4, - ULONG Unknown5, - ULONG Unknown6 + IN NTSTATUS ErrorStatus, + IN ULONG NumberOfParameters, + IN PUNICODE_STRING UnicodeStringParameterMask OPTIONAL, + IN PVOID *Parameters, + IN HARDERROR_RESPONSE_OPTION ResponseOption, + OUT PHARDERROR_RESPONSE Response ); /* diff --git a/reactos/ntoskrnl/ke/error.c b/reactos/ntoskrnl/ke/error.c index 121c432becc..d6172aa1687 100644 --- a/reactos/ntoskrnl/ke/error.c +++ b/reactos/ntoskrnl/ke/error.c @@ -44,14 +44,14 @@ KiUnexpectedInterrupt( } NTSTATUS STDCALL -NtRaiseHardError(IN NTSTATUS Status, - ULONG Unknown2, - ULONG Unknown3, - ULONG Unknown4, - ULONG Unknown5, - ULONG Unknown6) +NtRaiseHardError(IN NTSTATUS ErrorStatus, + IN ULONG NumberOfParameters, + IN PUNICODE_STRING UnicodeStringParameterMask OPTIONAL, + IN PVOID *Parameters, + IN HARDERROR_RESPONSE_OPTION ResponseOption, + OUT PHARDERROR_RESPONSE Response) { - DPRINT1("Hard error %x\n", Status); + DPRINT1("Hard error %x\n", ErrorStatus); return(STATUS_SUCCESS); } From f4c9f962051ea4cd6db910115e19848011a41357 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Mon, 14 Feb 2005 22:50:15 +0000 Subject: [PATCH 057/248] secured access to buffers in NtWaitForSingleObject(), NtWaitForMultipleObjects() and NtSignalAndWaitForSingleObject() svn path=/trunk/; revision=13579 --- reactos/include/ntos/zw.h | 54 ++++----- reactos/ntoskrnl/ke/wait.c | 177 +++++++++++++++++++--------- reactos/w32api/include/ddk/winddk.h | 8 +- 3 files changed, 152 insertions(+), 87 deletions(-) diff --git a/reactos/include/ntos/zw.h b/reactos/include/ntos/zw.h index 5d898bde765..37a143d35cb 100755 --- a/reactos/include/ntos/zw.h +++ b/reactos/include/ntos/zw.h @@ -4423,28 +4423,28 @@ ZwShutdownSystem( /* * FUNCTION: Signals an object and wait for an other one. * ARGUMENTS: - * SignalObject = Handle to the object that should be signaled - * WaitObject = Handle to the object that should be waited for + * ObjectHandleToSignal = Handle to the object that should be signaled + * WaitableObjectHandle = Handle to the object that should be waited for * Alertable = True if the wait is alertable - * Time = The time to wait + * TimeOut = The time to wait * RETURNS: Status */ NTSTATUS STDCALL NtSignalAndWaitForSingleObject( - IN HANDLE SignalObject, - IN HANDLE WaitObject, + IN HANDLE ObjectHandleToSignal, + IN HANDLE WaitableObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time + IN PLARGE_INTEGER TimeOut OPTIONAL ); NTSTATUS STDCALL NtSignalAndWaitForSingleObject( - IN HANDLE SignalObject, - IN HANDLE WaitObject, + IN HANDLE ObjectHandleToSignal, + IN HANDLE WaitableObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time + IN PLARGE_INTEGER TimeOut OPTIONAL ); /* @@ -4651,9 +4651,9 @@ ZwWriteVirtualMemory( /* * FUNCTION: Waits for an object to become signalled. * ARGUMENTS: - * Object = The object handle + * ObjectHandle = The object handle * Alertable = If true the wait is alertable. - * Time = The maximum wait time. + * TimeOut = The maximum wait time. * REMARKS: * This function maps to the win32 WaitForSingleObjectEx. * RETURNS: Status @@ -4661,17 +4661,17 @@ ZwWriteVirtualMemory( NTSTATUS STDCALL NtWaitForSingleObject ( - IN HANDLE Object, + IN HANDLE ObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time + IN PLARGE_INTEGER TimeOut OPTIONAL ); NTSTATUS STDCALL ZwWaitForSingleObject ( - IN HANDLE Object, + IN HANDLE ObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time + IN PLARGE_INTEGER TimeOut OPTIONAL ); /* --- EVENT PAIR OBJECT --- */ @@ -5583,11 +5583,11 @@ NtUnlockVirtualMemory( /* * FUNCTION: Waits for multiple objects to become signalled. * ARGUMENTS: - * Count = The number of objects - * Object = The array of object handles + * ObjectCount = The number of objects + * ObjectsArray = The array of object handles * WaitType = Can be one of the values UserMode or KernelMode * Alertable = If true the wait is alertable. - * Time = The maximum wait time. + * TimeOut = The maximum wait time. * REMARKS: * This function maps to the win32 WaitForMultipleObjectEx. * RETURNS: Status @@ -5595,11 +5595,11 @@ NtUnlockVirtualMemory( NTSTATUS STDCALL NtWaitForMultipleObjects ( - IN ULONG Count, - IN HANDLE Object[], + IN ULONG ObjectCount, + IN PHANDLE ObjectsArray, IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time + IN PLARGE_INTEGER TimeOut OPTIONAL ); @@ -6357,11 +6357,11 @@ ZwUnlockVirtualMemory( /* * FUNCTION: Waits for multiple objects to become signalled. * ARGUMENTS: - * Count = The number of objects - * Object = The array of object handles + * ObjectCount = The number of objects + * ObjectsArray = The array of object handles * WaitType = Can be one of the values UserMode or KernelMode * Alertable = If true the wait is alertable. - * Time = The maximum wait time. + * TimeOut = The maximum wait time. * REMARKS: * This function maps to the win32 WaitForMultipleObjectEx. * RETURNS: Status @@ -6369,11 +6369,11 @@ ZwUnlockVirtualMemory( NTSTATUS STDCALL ZwWaitForMultipleObjects ( - IN ULONG Count, - IN HANDLE Object[], + IN ULONG ObjectCount, + IN PHANDLE ObjectsArray, IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time + IN PLARGE_INTEGER TimeOut OPTIONAL ); /* diff --git a/reactos/ntoskrnl/ke/wait.c b/reactos/ntoskrnl/ke/wait.c index 8e4da0f3ae2..a6575e9bb88 100644 --- a/reactos/ntoskrnl/ke/wait.c +++ b/reactos/ntoskrnl/ke/wait.c @@ -785,45 +785,71 @@ VOID KeInitializeDispatcher(VOID) } NTSTATUS STDCALL -NtWaitForMultipleObjects(IN ULONG Count, - IN HANDLE Object [], +NtWaitForMultipleObjects(IN ULONG ObjectCount, + IN PHANDLE ObjectsArray, IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, - IN PLARGE_INTEGER UnsafeTime) + IN PLARGE_INTEGER TimeOut OPTIONAL) { KWAIT_BLOCK WaitBlockArray[MAXIMUM_WAIT_OBJECTS]; + HANDLE SafeObjectsArray[MAXIMUM_WAIT_OBJECTS]; PVOID ObjectPtrArray[MAXIMUM_WAIT_OBJECTS]; - NTSTATUS Status; ULONG i, j; - KPROCESSOR_MODE WaitMode; - LARGE_INTEGER Time; + KPROCESSOR_MODE PreviousMode; + LARGE_INTEGER SafeTimeOut; + NTSTATUS Status = STATUS_SUCCESS; - DPRINT("NtWaitForMultipleObjects(Count %lu Object[] %x, Alertable %d, " - "Time %x)\n", Count,Object,Alertable,Time); + DPRINT("NtWaitForMultipleObjects(ObjectCount %lu ObjectsArray[] %x, Alertable %d, " + "TimeOut %x)\n", ObjectCount,ObjectsArray,Alertable,TimeOut); - if (Count > MAXIMUM_WAIT_OBJECTS) + PreviousMode = ExGetPreviousMode(); + + if (ObjectCount > MAXIMUM_WAIT_OBJECTS) return STATUS_UNSUCCESSFUL; - if (0 == Count) + if (0 == ObjectCount) return STATUS_INVALID_PARAMETER; - if (UnsafeTime) + if(PreviousMode != KernelMode) + { + _SEH_TRY { - Status = MmCopyFromCaller(&Time, UnsafeTime, sizeof(LARGE_INTEGER)); - if (!NT_SUCCESS(Status)) - { - return(Status); - } + ProbeForRead(ObjectsArray, + ObjectCount * sizeof(ObjectsArray[0]), + sizeof(ULONG)); + /* make a copy so we don't have to guard with SEH later and keep track of + what objects we referenced in case dereferencing pointers suddenly fails */ + RtlCopyMemory(SafeObjectsArray, ObjectsArray, ObjectCount * sizeof(ObjectsArray[0])); + ObjectsArray = SafeObjectsArray; + + if(TimeOut != NULL) + { + ProbeForRead(TimeOut, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + /* make a local copy of the timeout on the stack */ + SafeTimeOut = *TimeOut; + TimeOut = &SafeTimeOut; + } } - - WaitMode = ExGetPreviousMode(); + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } /* reference all objects */ - for (i = 0; i < Count; i++) + for (i = 0; i < ObjectCount; i++) { - Status = ObReferenceObjectByHandle(Object[i], + Status = ObReferenceObjectByHandle(ObjectsArray[i], SYNCHRONIZE, NULL, - WaitMode, + PreviousMode, &ObjectPtrArray[i], NULL); if (!NT_SUCCESS(Status) || !KiIsObjectWaitable(ObjectPtrArray[i])) @@ -845,17 +871,17 @@ NtWaitForMultipleObjects(IN ULONG Count, } } - Status = KeWaitForMultipleObjects(Count, + Status = KeWaitForMultipleObjects(ObjectCount, ObjectPtrArray, WaitType, UserRequest, - WaitMode, + PreviousMode, Alertable, - UnsafeTime ? &Time : NULL, + TimeOut, WaitBlockArray); /* dereference all objects */ - for (i = 0; i < Count; i++) + for (i = 0; i < ObjectCount; i++) { ObDereferenceObject(ObjectPtrArray[i]); } @@ -868,33 +894,47 @@ NtWaitForMultipleObjects(IN ULONG Count, * @implemented */ NTSTATUS STDCALL -NtWaitForSingleObject(IN HANDLE Object, +NtWaitForSingleObject(IN HANDLE ObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER UnsafeTime) + IN PLARGE_INTEGER TimeOut OPTIONAL) { PVOID ObjectPtr; - NTSTATUS Status; - KPROCESSOR_MODE WaitMode; - LARGE_INTEGER Time; + KPROCESSOR_MODE PreviousMode; + LARGE_INTEGER SafeTimeOut; + NTSTATUS Status = STATUS_SUCCESS; - DPRINT("NtWaitForSingleObject(Object %x, Alertable %d, Time %x)\n", - Object,Alertable,Time); + DPRINT("NtWaitForSingleObject(ObjectHandle %x, Alertable %d, TimeOut %x)\n", + ObjectHandle,Alertable,TimeOut); - if (UnsafeTime) + PreviousMode = ExGetPreviousMode(); + + if(TimeOut != NULL && PreviousMode != KernelMode) + { + _SEH_TRY { - Status = MmCopyFromCaller(&Time, UnsafeTime, sizeof(LARGE_INTEGER)); - if (!NT_SUCCESS(Status)) - { - return(Status); - } + ProbeForRead(TimeOut, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + /* make a copy on the stack */ + SafeTimeOut = *TimeOut; + TimeOut = &SafeTimeOut; } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } - WaitMode = ExGetPreviousMode(); - - Status = ObReferenceObjectByHandle(Object, + Status = ObReferenceObjectByHandle(ObjectHandle, SYNCHRONIZE, NULL, - WaitMode, + PreviousMode, &ObjectPtr, NULL); if (!NT_SUCCESS(Status)) @@ -911,9 +951,9 @@ NtWaitForSingleObject(IN HANDLE Object, { Status = KeWaitForSingleObject(ObjectPtr, UserRequest, - WaitMode, + PreviousMode, Alertable, - UnsafeTime ? &Time : NULL); + TimeOut); } ObDereferenceObject(ObjectPtr); @@ -923,22 +963,47 @@ NtWaitForSingleObject(IN HANDLE Object, NTSTATUS STDCALL -NtSignalAndWaitForSingleObject(IN HANDLE SignalObject, - IN HANDLE WaitObject, +NtSignalAndWaitForSingleObject(IN HANDLE ObjectHandleToSignal, + IN HANDLE WaitableObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time) + IN PLARGE_INTEGER TimeOut OPTIONAL) { - KPROCESSOR_MODE WaitMode; + KPROCESSOR_MODE PreviousMode; DISPATCHER_HEADER* hdr; PVOID SignalObj; PVOID WaitObj; - NTSTATUS Status; + LARGE_INTEGER SafeTimeOut; + NTSTATUS Status = STATUS_SUCCESS; - WaitMode = ExGetPreviousMode(); - Status = ObReferenceObjectByHandle(SignalObject, + PreviousMode = ExGetPreviousMode(); + + if(TimeOut != NULL && PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForRead(TimeOut, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + /* make a copy on the stack */ + SafeTimeOut = *TimeOut; + TimeOut = &SafeTimeOut; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } + + Status = ObReferenceObjectByHandle(ObjectHandleToSignal, 0, NULL, - WaitMode, + PreviousMode, &SignalObj, NULL); if (!NT_SUCCESS(Status)) @@ -946,10 +1011,10 @@ NtSignalAndWaitForSingleObject(IN HANDLE SignalObject, return Status; } - Status = ObReferenceObjectByHandle(WaitObject, + Status = ObReferenceObjectByHandle(WaitableObjectHandle, SYNCHRONIZE, NULL, - WaitMode, + PreviousMode, &WaitObj, NULL); if (!NT_SUCCESS(Status)) @@ -988,9 +1053,9 @@ NtSignalAndWaitForSingleObject(IN HANDLE SignalObject, Status = KeWaitForSingleObject(WaitObj, UserRequest, - WaitMode, + PreviousMode, Alertable, - Time); + TimeOut); ObDereferenceObject(SignalObj); ObDereferenceObject(WaitObj); diff --git a/reactos/w32api/include/ddk/winddk.h b/reactos/w32api/include/ddk/winddk.h index 65b707d0dd5..a75c0ccca0f 100644 --- a/reactos/w32api/include/ddk/winddk.h +++ b/reactos/w32api/include/ddk/winddk.h @@ -9131,17 +9131,17 @@ NTOSAPI NTSTATUS DDKAPI NtWaitForSingleObject( - IN HANDLE Object, + IN HANDLE ObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time); + IN PLARGE_INTEGER TimeOut OPTIONAL); NTOSAPI NTSTATUS DDKAPI ZwWaitForSingleObject( - IN HANDLE Object, + IN HANDLE ObjectHandle, IN BOOLEAN Alertable, - IN PLARGE_INTEGER Time); + IN PLARGE_INTEGER TimeOut OPTIONAL); NTOSAPI NTSTATUS From b24437e1aeff8783d71853fc7e864feb349fdb48 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Tue, 15 Feb 2005 11:46:31 +0000 Subject: [PATCH 058/248] NtQueueApcThread always inserts a umode apc svn path=/trunk/; revision=13580 --- reactos/ntoskrnl/ke/apc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/ntoskrnl/ke/apc.c b/reactos/ntoskrnl/ke/apc.c index 9c7c0bcf08f..5b47908713f 100644 --- a/reactos/ntoskrnl/ke/apc.c +++ b/reactos/ntoskrnl/ke/apc.c @@ -548,14 +548,14 @@ NtQueueApcThread(HANDLE ThreadHandle, return(STATUS_NO_MEMORY); } - /* Initialize and Queue */ + /* Initialize and Queue a user mode apc (always!) */ KeInitializeApc(Apc, &Thread->Tcb, OriginalApcEnvironment, KiFreeApcRoutine, NULL, ApcRoutine, - PreviousMode, + UserMode, NormalContext); if (!KeInsertQueueApc(Apc, SystemArgument1, SystemArgument2, IO_NO_INCREMENT)) { Status = STATUS_UNSUCCESSFUL; From 4f0495a525159420812f8222fee36ffd7912c0c2 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Tue, 15 Feb 2005 13:40:10 +0000 Subject: [PATCH 059/248] distinguish kmode and umode alertability svn path=/trunk/; revision=13581 --- reactos/include/ddk/types.h | 2 +- reactos/ntoskrnl/include/internal/ps.h | 2 +- reactos/ntoskrnl/ke/alert.c | 44 ++++++++++++-------------- reactos/w32api/include/ddk/winddk.h | 2 +- 4 files changed, 24 insertions(+), 26 deletions(-) diff --git a/reactos/include/ddk/types.h b/reactos/include/ddk/types.h index cd94f69c9e0..bf024aa92c7 100644 --- a/reactos/include/ddk/types.h +++ b/reactos/include/ddk/types.h @@ -8,7 +8,7 @@ typedef ULONG KAFFINITY, *PKAFFINITY; /* * Various other types (all quite pointless) */ -typedef CCHAR KPROCESSOR_MODE; +typedef UCHAR KPROCESSOR_MODE; typedef UCHAR KIRQL; typedef KIRQL* PKIRQL; typedef ULONG IO_ALLOCATION_ACTION; diff --git a/reactos/ntoskrnl/include/internal/ps.h b/reactos/ntoskrnl/include/internal/ps.h index 28f47535dcf..1be0eeefe19 100644 --- a/reactos/ntoskrnl/include/internal/ps.h +++ b/reactos/ntoskrnl/include/internal/ps.h @@ -73,7 +73,7 @@ typedef struct _KTHREAD /* Thread state (one of THREAD_STATE_xxx constants below) */ UCHAR State; /* 2D */ - UCHAR Alerted[2]; /* 2E */ + BOOLEAN Alerted[2]; /* 2E */ UCHAR Iopl; /* 30 */ UCHAR NpxState; /* 31 */ CHAR Saturation; /* 32 */ diff --git a/reactos/ntoskrnl/ke/alert.c b/reactos/ntoskrnl/ke/alert.c index 8fa0783baba..99084a862e4 100644 --- a/reactos/ntoskrnl/ke/alert.c +++ b/reactos/ntoskrnl/ke/alert.c @@ -37,14 +37,11 @@ KeTestAlertThread(IN KPROCESSOR_MODE AlertMode) OldIrql = KeAcquireDispatcherDatabaseLock(); KiAcquireSpinLock(&Thread->ApcQueueLock); - /* NOTE: Albert Almeida claims Alerted[1] is never used. Two kind of - * alerts _do_ seem useless. -Gunnar - */ - OldState = Thread->Alerted[0]; + OldState = Thread->Alerted[AlertMode]; /* If the Thread is Alerted, Clear it */ if (OldState) { - Thread->Alerted[0] = FALSE; + Thread->Alerted[AlertMode] = FALSE; } else if ((AlertMode == UserMode) && (!IsListEmpty(&Thread->ApcState.ApcListHead[UserMode]))) { /* If the mode is User and the Queue isn't empty, set Pending */ Thread->ApcState.UserApcPending = TRUE; @@ -65,20 +62,19 @@ KeAlertThread(PKTHREAD Thread, KPROCESSOR_MODE AlertMode) oldIrql = KeAcquireDispatcherDatabaseLock(); - /* Return if thread is already alerted. - * NOTE: Albert Almeida claims Alerted[1] is never used. Two kind of - * alerts _do_ seem useless. -Gunnar - */ - if (Thread->Alerted[0] == FALSE) + /* Return if thread is already alerted. */ + if (Thread->Alerted[AlertMode] == FALSE) { - Thread->Alerted[0] = TRUE; - if (Thread->State == THREAD_STATE_BLOCKED && - Thread->WaitMode == AlertMode && + (AlertMode == KernelMode || Thread->WaitMode == AlertMode) && Thread->Alertable) { KiAbortWaitThread(Thread, STATUS_ALERTED); } + else + { + Thread->Alerted[AlertMode] = TRUE; + } } KeReleaseDispatcherDatabaseLock(oldIrql); @@ -124,11 +120,12 @@ NtAlertThread (IN HANDLE ThreadHandle) return(Status); } - /* FIXME: should we always use UserMode here, even if the ntoskrnl exported - * ZwAlertThread was called? - * -Gunnar - */ - KeAlertThread((PKTHREAD)Thread, PreviousMode); + /* do an alert depending on the processor mode. If some kmode code wants to + enforce a umode alert it should call KeAlertThread() directly. If kmode + code wants to do a kmode alert it's sufficient to call it with Zw or just + use KeAlertThread() directly */ + + KeAlertThread(&Thread->Tcb, PreviousMode); ObDereferenceObject(Thread); return(STATUS_SUCCESS); @@ -142,11 +139,12 @@ NTSTATUS STDCALL NtTestAlert(VOID) { + KPROCESSOR_MODE PreviousMode; + + PreviousMode = ExGetPreviousMode(); + /* Check and Alert Thread if needed */ - if (KeTestAlertThread(KeGetPreviousMode())) { - return STATUS_ALERTED; - } else { - return STATUS_SUCCESS; - } + + return KeTestAlertThread(PreviousMode) ? STATUS_ALERTED : STATUS_SUCCESS; } diff --git a/reactos/w32api/include/ddk/winddk.h b/reactos/w32api/include/ddk/winddk.h index a75c0ccca0f..6cc3750d0ee 100644 --- a/reactos/w32api/include/ddk/winddk.h +++ b/reactos/w32api/include/ddk/winddk.h @@ -134,7 +134,7 @@ typedef LONG KPRIORITY; typedef UCHAR KIRQL, *PKIRQL; typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK; typedef ULONG KAFFINITY, *PKAFFINITY; -typedef CCHAR KPROCESSOR_MODE; +typedef UCHAR KPROCESSOR_MODE; typedef enum _MODE { KernelMode, From a2e0ee899379f7cd168447ff55f2387c84af97cc Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Tue, 15 Feb 2005 14:37:53 +0000 Subject: [PATCH 060/248] don't leak the captured file name in NtCreatePagingFile() when probing the other parameters failed svn path=/trunk/; revision=13582 --- reactos/ntoskrnl/mm/pagefile.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reactos/ntoskrnl/mm/pagefile.c b/reactos/ntoskrnl/mm/pagefile.c index c700d2c5251..e5727fe0b9b 100644 --- a/reactos/ntoskrnl/mm/pagefile.c +++ b/reactos/ntoskrnl/mm/pagefile.c @@ -775,6 +775,7 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName, } PreviousMode = ExGetPreviousMode(); + Status = RtlCaptureUnicodeString(&CapturedFileName, PreviousMode, PagedPool, @@ -805,6 +806,9 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName, if (!NT_SUCCESS(Status)) { + RtlReleaseCapturedUnicodeString(&CapturedFileName, + PreviousMode, + FALSE); return Status; } } @@ -834,6 +838,7 @@ NtCreatePagingFile(IN PUNICODE_STRING FileName, CreateFileTypeNone, NULL, SL_OPEN_PAGING_FILE | IO_NO_PARAMETER_CHECKING); + RtlReleaseCapturedUnicodeString(&CapturedFileName, PreviousMode, FALSE); From 382d68525a4727db43f736cc4484cd19573dfbde Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Tue, 15 Feb 2005 15:46:22 +0000 Subject: [PATCH 061/248] secured buffer access in NtCreateSection(), NtOpenSection(), NtMapViewOfSection(), NtQuerySection() and NtExtendSection() svn path=/trunk/; revision=13583 --- reactos/include/ntos/zw.h | 12 +- reactos/ntoskrnl/mm/section.c | 365 ++++++++++++++++++++++++++-------- 2 files changed, 286 insertions(+), 91 deletions(-) diff --git a/reactos/include/ntos/zw.h b/reactos/include/ntos/zw.h index 37a143d35cb..8063bb5e5e0 100755 --- a/reactos/include/ntos/zw.h +++ b/reactos/include/ntos/zw.h @@ -5420,10 +5420,10 @@ NTSTATUS STDCALL NtQuerySection( IN HANDLE SectionHandle, - IN CINT SectionInformationClass, + IN SECTION_INFORMATION_CLASS SectionInformationClass, OUT PVOID SectionInformation, - IN ULONG Length, - OUT PULONG ResultLength + IN ULONG SectionInformationLength, + OUT PULONG ResultLength OPTIONAL ); /* @@ -6451,10 +6451,10 @@ NTSTATUS STDCALL ZwQuerySection( IN HANDLE SectionHandle, - IN CINT SectionInformationClass, + IN SECTION_INFORMATION_CLASS SectionInformationClass, OUT PVOID SectionInformation, - IN ULONG Length, - OUT PULONG ResultLength + IN ULONG SectionInformationLength, + OUT PULONG ResultLength OPTIONAL ); typedef struct _SECTION_IMAGE_INFORMATION diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index ada2a84042c..bce33095d1e 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -50,6 +50,12 @@ static GENERIC_MAPPING MmpSectionMapping = { #define SWAPENTRY_FROM_SSE(E) ((E) >> 1) #define MAKE_SWAP_SSE(S) (((S) << 1) | 0x1) +static const INFORMATION_CLASS_INFO ExSectionInfoClass[] = +{ + ICI_SQ_SAME( sizeof(SECTION_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY ), /* SectionBasicInformation */ + ICI_SQ_SAME( sizeof(SECTION_IMAGE_INFORMATION), sizeof(ULONG), ICIF_QUERY ), /* SectionImageInformation */ +}; + /* FUNCTIONS *****************************************************************/ /* Note: Mmsp prefix denotes "Memory Manager Section Private". */ @@ -3309,9 +3315,36 @@ NtCreateSection (OUT PHANDLE SectionHandle, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL) { + LARGE_INTEGER SafeMaximumSize; PSECTION_OBJECT SectionObject; - NTSTATUS Status; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + PreviousMode = ExGetPreviousMode(); + + if(MaximumSize != NULL && PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForRead(MaximumSize, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + /* make a copy on the stack */ + SafeMaximumSize = *MaximumSize; + MaximumSize = &SafeMaximumSize; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } + /* * Check the protection */ @@ -3367,17 +3400,52 @@ NtOpenSection(PHANDLE SectionHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes) { - NTSTATUS Status; - - *SectionHandle = 0; + HANDLE hSection; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForWrite(SectionHandle, + sizeof(HANDLE), + sizeof(ULONG)); + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } Status = ObOpenObjectByName(ObjectAttributes, MmSectionObjectType, NULL, - UserMode, + PreviousMode, DesiredAccess, NULL, - SectionHandle); + &hSection); + + if(NT_SUCCESS(Status)) + { + _SEH_TRY + { + *SectionHandle = hSection; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + } return(Status); } @@ -3487,26 +3555,77 @@ MmMapViewOfSegment(PEPROCESS Process, * @implemented */ NTSTATUS STDCALL -NtMapViewOfSection(HANDLE SectionHandle, - HANDLE ProcessHandle, - PVOID* BaseAddress, - ULONG ZeroBits, - ULONG CommitSize, - PLARGE_INTEGER SectionOffset, - PULONG ViewSize, - SECTION_INHERIT InheritDisposition, - ULONG AllocationType, - ULONG Protect) +NtMapViewOfSection(IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID* BaseAddress OPTIONAL, + IN ULONG ZeroBits OPTIONAL, + IN ULONG CommitSize, + IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PULONG ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType OPTIONAL, + IN ULONG Protect) { + PVOID SafeBaseAddress; + LARGE_INTEGER SafeSectionOffset; + ULONG SafeViewSize; PSECTION_OBJECT Section; PEPROCESS Process; - NTSTATUS Status; + KPROCESSOR_MODE PreviousMode; PMADDRESS_SPACE AddressSpace; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + SafeBaseAddress = NULL; + SafeSectionOffset.QuadPart = 0; + SafeViewSize = 0; + + _SEH_TRY + { + if(BaseAddress != NULL) + { + ProbeForWrite(BaseAddress, + sizeof(PVOID), + sizeof(ULONG)); + SafeBaseAddress = *BaseAddress; + } + if(SectionOffset != NULL) + { + ProbeForWrite(SectionOffset, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + SafeSectionOffset = *SectionOffset; + } + ProbeForWrite(ViewSize, + sizeof(ULONG), + sizeof(ULONG)); + SafeViewSize = *ViewSize; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } + else + { + SafeBaseAddress = (BaseAddress != NULL ? *BaseAddress : NULL); + SafeSectionOffset.QuadPart = (SectionOffset != NULL ? SectionOffset->QuadPart : 0); + SafeViewSize = (ViewSize != NULL ? *ViewSize : 0); + } Status = ObReferenceObjectByHandle(ProcessHandle, PROCESS_VM_OPERATION, PsProcessType, - UserMode, + PreviousMode, (PVOID*)(PVOID)&Process, NULL); if (!NT_SUCCESS(Status)) @@ -3519,7 +3638,7 @@ NtMapViewOfSection(HANDLE SectionHandle, Status = ObReferenceObjectByHandle(SectionHandle, SECTION_MAP_READ, MmSectionObjectType, - UserMode, + PreviousMode, (PVOID*)(PVOID)&Section, NULL); if (!(NT_SUCCESS(Status))) @@ -3531,17 +3650,42 @@ NtMapViewOfSection(HANDLE SectionHandle, Status = MmMapViewOfSection(Section, Process, - BaseAddress, + (BaseAddress != NULL ? &SafeBaseAddress : NULL), ZeroBits, CommitSize, - SectionOffset, - ViewSize, + (SectionOffset != NULL ? &SafeSectionOffset : NULL), + (ViewSize != NULL ? &SafeViewSize : NULL), InheritDisposition, AllocationType, Protect); ObDereferenceObject(Section); ObDereferenceObject(Process); + + if(NT_SUCCESS(Status)) + { + /* copy parameters back to the caller */ + _SEH_TRY + { + if(BaseAddress != NULL) + { + *BaseAddress = SafeBaseAddress; + } + if(SectionOffset != NULL) + { + *SectionOffset = SafeSectionOffset; + } + if(ViewSize != NULL) + { + *ViewSize = SafeViewSize; + } + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + } return(Status); } @@ -3809,16 +3953,19 @@ NtUnmapViewOfSection (HANDLE ProcessHandle, PVOID BaseAddress) { PEPROCESS Process; + KPROCESSOR_MODE PreviousMode; NTSTATUS Status; DPRINT("NtUnmapViewOfSection(ProcessHandle %x, BaseAddress %x)\n", ProcessHandle, BaseAddress); + PreviousMode = ExGetPreviousMode(); + DPRINT("Referencing process\n"); Status = ObReferenceObjectByHandle(ProcessHandle, PROCESS_VM_OPERATION, PsProcessType, - UserMode, + PreviousMode, (PVOID*)(PVOID)&Process, NULL); if (!NT_SUCCESS(Status)) @@ -3857,98 +4004,120 @@ NtUnmapViewOfSection (HANDLE ProcessHandle, * * @return Status. * - * @todo Guard by SEH. * @implemented */ NTSTATUS STDCALL NtQuerySection(IN HANDLE SectionHandle, - IN CINT SectionInformationClass, + IN SECTION_INFORMATION_CLASS SectionInformationClass, OUT PVOID SectionInformation, - IN ULONG Length, - OUT PULONG ResultLength) + IN ULONG SectionInformationLength, + OUT PULONG ResultLength OPTIONAL) { PSECTION_OBJECT Section; - NTSTATUS Status; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + DefaultQueryInfoBufferCheck(SectionInformationClass, + ExSectionInfoClass, + SectionInformation, + SectionInformationLength, + ResultLength, + PreviousMode, + &Status); + + if(!NT_SUCCESS(Status)) + { + DPRINT1("NtQuerySection() failed, Status: 0x%x\n", Status); + return Status; + } Status = ObReferenceObjectByHandle(SectionHandle, SECTION_QUERY, MmSectionObjectType, - UserMode, + PreviousMode, (PVOID*)(PVOID)&Section, NULL); - if (!(NT_SUCCESS(Status))) + if (NT_SUCCESS(Status)) { - return(Status); - } - - switch (SectionInformationClass) - { - case SectionBasicInformation: + switch (SectionInformationClass) + { + case SectionBasicInformation: { - PSECTION_BASIC_INFORMATION Sbi; + PSECTION_BASIC_INFORMATION Sbi = (PSECTION_BASIC_INFORMATION)SectionInformation; - if (Length != sizeof(SECTION_BASIC_INFORMATION)) + _SEH_TRY { - ObDereferenceObject(Section); - return(STATUS_INFO_LENGTH_MISMATCH); + Sbi->Attributes = Section->AllocationAttributes; + if (Section->AllocationAttributes & SEC_IMAGE) + { + Sbi->BaseAddress = 0; + Sbi->Size.QuadPart = 0; + } + else + { + Sbi->BaseAddress = (PVOID)Section->Segment->VirtualAddress; + Sbi->Size.QuadPart = Section->Segment->Length; + } + + if (ResultLength != NULL) + { + *ResultLength = sizeof(SECTION_BASIC_INFORMATION); + } + Status = STATUS_SUCCESS; } - - Sbi = (PSECTION_BASIC_INFORMATION)SectionInformation; - - Sbi->Attributes = Section->AllocationAttributes; - if (Section->AllocationAttributes & SEC_IMAGE) + _SEH_HANDLE { - Sbi->BaseAddress = 0; - Sbi->Size.QuadPart = 0; + Status = _SEH_GetExceptionCode(); } - else - { - Sbi->BaseAddress = (PVOID)Section->Segment->VirtualAddress; - Sbi->Size.QuadPart = Section->Segment->Length; - } - - *ResultLength = sizeof(SECTION_BASIC_INFORMATION); - Status = STATUS_SUCCESS; + _SEH_END; + break; } - case SectionImageInformation: + case SectionImageInformation: { - PSECTION_IMAGE_INFORMATION Sii; + PSECTION_IMAGE_INFORMATION Sii = (PSECTION_IMAGE_INFORMATION)SectionInformation; - if (Length != sizeof(SECTION_IMAGE_INFORMATION)) + _SEH_TRY { - ObDereferenceObject(Section); - return(STATUS_INFO_LENGTH_MISMATCH); - } + memset(Sii, 0, sizeof(SECTION_IMAGE_INFORMATION)); + if (Section->AllocationAttributes & SEC_IMAGE) + { + PMM_IMAGE_SECTION_OBJECT ImageSectionObject; + ImageSectionObject = Section->ImageSection; - Sii = (PSECTION_IMAGE_INFORMATION)SectionInformation; - memset(Sii, 0, sizeof(SECTION_IMAGE_INFORMATION)); - if (Section->AllocationAttributes & SEC_IMAGE) + Sii->EntryPoint = ImageSectionObject->EntryPoint; + Sii->StackReserve = ImageSectionObject->StackReserve; + Sii->StackCommit = ImageSectionObject->StackCommit; + Sii->Subsystem = ImageSectionObject->Subsystem; + Sii->MinorSubsystemVersion = ImageSectionObject->MinorSubsystemVersion; + Sii->MajorSubsystemVersion = ImageSectionObject->MajorSubsystemVersion; + Sii->Characteristics = ImageSectionObject->ImageCharacteristics; + Sii->ImageNumber = ImageSectionObject->Machine; + Sii->Executable = ImageSectionObject->Executable; + } + + if (ResultLength != NULL) + { + *ResultLength = sizeof(SECTION_IMAGE_INFORMATION); + } + Status = STATUS_SUCCESS; + } + _SEH_HANDLE { - PMM_IMAGE_SECTION_OBJECT ImageSectionObject; - ImageSectionObject = Section->ImageSection; - - Sii->EntryPoint = ImageSectionObject->EntryPoint; - Sii->StackReserve = ImageSectionObject->StackReserve; - Sii->StackCommit = ImageSectionObject->StackCommit; - Sii->Subsystem = ImageSectionObject->Subsystem; - Sii->MinorSubsystemVersion = ImageSectionObject->MinorSubsystemVersion; - Sii->MajorSubsystemVersion = ImageSectionObject->MajorSubsystemVersion; - Sii->Characteristics = ImageSectionObject->ImageCharacteristics; - Sii->ImageNumber = ImageSectionObject->Machine; - Sii->Executable = ImageSectionObject->Executable; + Status = _SEH_GetExceptionCode(); } - *ResultLength = sizeof(SECTION_IMAGE_INFORMATION); - Status = STATUS_SUCCESS; + _SEH_END; + break; } + } - default: - *ResultLength = 0; - Status = STATUS_INVALID_INFO_CLASS; + ObDereferenceObject(Section); } - ObDereferenceObject(Section); + return(Status); } @@ -3964,7 +4133,6 @@ NtQuerySection(IN HANDLE SectionHandle, * * @return Status. * - * @todo Guard by SEH. * @todo Move the actual code to internal function MmExtendSection. * @unimplemented */ @@ -3972,13 +4140,40 @@ NTSTATUS STDCALL NtExtendSection(IN HANDLE SectionHandle, IN PLARGE_INTEGER NewMaximumSize) { + LARGE_INTEGER SafeNewMaximumSize; PSECTION_OBJECT Section; - NTSTATUS Status; + KPROCESSOR_MODE PreviousMode; + NTSTATUS Status = STATUS_SUCCESS; + + PreviousMode = ExGetPreviousMode(); + + if(PreviousMode != KernelMode) + { + _SEH_TRY + { + ProbeForRead(NewMaximumSize, + sizeof(LARGE_INTEGER), + sizeof(ULONG)); + /* make a copy on the stack */ + SafeNewMaximumSize = *NewMaximumSize; + NewMaximumSize = &SafeNewMaximumSize; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(!NT_SUCCESS(Status)) + { + return Status; + } + } Status = ObReferenceObjectByHandle(SectionHandle, SECTION_EXTEND_SIZE, MmSectionObjectType, - UserMode, + PreviousMode, (PVOID*)&Section, NULL); if (!NT_SUCCESS(Status)) From 14f94bc26adf9900c8e681102c675b2ad0a4b403 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Tue, 15 Feb 2005 17:25:01 +0000 Subject: [PATCH 062/248] Fix ROUND_UP when N is a multiple of S. Proposed by unC0Rr. svn path=/trunk/; revision=13584 --- reactos/tools/mkhive/binhive.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/tools/mkhive/binhive.c b/reactos/tools/mkhive/binhive.c index 2ee32ad7995..f28f7131aad 100644 --- a/reactos/tools/mkhive/binhive.c +++ b/reactos/tools/mkhive/binhive.c @@ -49,8 +49,8 @@ #define REG_EXTEND_HASH_TABLE_SIZE 4 #define REG_VALUE_LIST_CELL_MULTIPLE 4 -#define ROUND_UP(N, S) ((N) + (S) - ((N) % (S))) #define ROUND_DOWN(N, S) ((N) - ((N) % (S))) +#define ROUND_UP(N, S) ROUND_DOWN((N) + (S) - 1, (S)) #define ABS_VALUE(V) (((V) < 0) ? -(V) : (V)) From 1217e4a19d796e023259f0e1a61bd7f9b027a2b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Tue, 15 Feb 2005 19:26:13 +0000 Subject: [PATCH 063/248] Use bitwise operators for ROUND_UP/DOWN and rename them to ROUND_UP_POW2/ROUND_DOWN_POW2 svn path=/trunk/; revision=13585 --- reactos/tools/mkhive/binhive.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reactos/tools/mkhive/binhive.c b/reactos/tools/mkhive/binhive.c index f28f7131aad..d9788cc0420 100644 --- a/reactos/tools/mkhive/binhive.c +++ b/reactos/tools/mkhive/binhive.c @@ -49,8 +49,8 @@ #define REG_EXTEND_HASH_TABLE_SIZE 4 #define REG_VALUE_LIST_CELL_MULTIPLE 4 -#define ROUND_DOWN(N, S) ((N) - ((N) % (S))) -#define ROUND_UP(N, S) ROUND_DOWN((N) + (S) - 1, (S)) +#define ROUND_UP_POW2(N,S) (((N) + (S) - 1) & ~((S) - 1)) +#define ROUND_DOWN_POW2(N,S) ((N) & ~((S) - 1)) #define ABS_VALUE(V) (((V) < 0) ? -(V) : (V)) @@ -326,7 +326,7 @@ CmiCreateDefaultRootKeyCell(PKEY_CELL RootKeyCell, PCHAR KeyName) BaseKeyName = strrchr(KeyName, '\\') + 1; NameSize = strlen(BaseKeyName); - CellSize = ROUND_UP(sizeof(KEY_CELL) + NameSize - 1, 16); + CellSize = ROUND_UP_POW2(sizeof(KEY_CELL) + NameSize - 1, 16); memset (RootKeyCell, 0, CellSize); RootKeyCell->CellSize = (ULONG)-(LONG)CellSize; @@ -786,7 +786,7 @@ CmiAllocateCell (PREGISTRY_HIVE RegistryHive, *Block = NULL; /* Round to 16 bytes multiple */ - CellSize = ROUND_UP(CellSize, 16); + CellSize = ROUND_UP_POW2(CellSize, 16); /* first search in free blocks */ NewBlock = NULL; From b670149976d6b8978b420339e2ea66a574f6b6a8 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Tue, 15 Feb 2005 19:43:17 +0000 Subject: [PATCH 064/248] Fix inline assembler register specification (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10153). svn path=/trunk/; revision=13587 --- reactos/hal/halx86/include/hal.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/hal/halx86/include/hal.h b/reactos/hal/halx86/include/hal.h index dbd54385860..d8266191af3 100644 --- a/reactos/hal/halx86/include/hal.h +++ b/reactos/hal/halx86/include/hal.h @@ -417,13 +417,13 @@ HalQueryDisplayOwnership(); static inline BYTE Ki386ReadFsByte(ULONG offset) { BYTE b; - __asm__ __volatile__("movb %%fs:(%1),%0":"=g" (b):"0" (offset)); + __asm__ __volatile__("movb %%fs:(%1),%0":"=q" (b):"0" (offset)); return b; } static inline VOID Ki386WriteFsByte(ULONG offset, BYTE value) { - __asm__ __volatile__("movb %0,%%fs:(%1)"::"r" (value), "r" (offset)); + __asm__ __volatile__("movb %0,%%fs:(%1)"::"q" (value), "r" (offset)); } #elif defined(_MSC_VER) From 65ebf7f9992a6d8a88e31322594841faa268faf8 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Wed, 16 Feb 2005 00:24:12 +0000 Subject: [PATCH 065/248] Update and sync Msiexec with Wine Cvs. svn path=/trunk/; revision=13591 --- reactos/subsys/system/msiexec/Makefile | 11 +- reactos/subsys/system/msiexec/Makefile.in | 2 +- reactos/subsys/system/msiexec/msiexec.c | 619 +++++++++++++++------- 3 files changed, 437 insertions(+), 195 deletions(-) diff --git a/reactos/subsys/system/msiexec/Makefile b/reactos/subsys/system/msiexec/Makefile index a45ee746f4c..889e5c4868f 100644 --- a/reactos/subsys/system/msiexec/Makefile +++ b/reactos/subsys/system/msiexec/Makefile @@ -11,7 +11,16 @@ TARGET_NAME = msiexec TARGET_CFLAGS = -I$(PATH_TO_TOP)/include/wine -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -D__USE_W32API TARGET_OBJECTS = msiexec.o -TARGET_SDKLIBS = msi.a ole32.a ntdll.a user32.a kernel32.a wine.a wine_uuid.a + +TARGET_SDKLIBS = wine.a \ + ntdll.a \ + kernel32.a \ + user32.a \ + advapi32.a \ + ole32.a \ + wine_uuid.a \ + msi.a + TARGET_RC_SRCS = version.rc TARGET_RC_BINSRC = diff --git a/reactos/subsys/system/msiexec/Makefile.in b/reactos/subsys/system/msiexec/Makefile.in index 639ea136b05..8b7cf50f491 100644 --- a/reactos/subsys/system/msiexec/Makefile.in +++ b/reactos/subsys/system/msiexec/Makefile.in @@ -4,7 +4,7 @@ SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = msiexec.exe APPMODE = -mconsole -IMPORTS = msi ole32 user32 kernel32 +IMPORTS = msi ole32 advapi32 user32 kernel32 C_SRCS = \ msiexec.c diff --git a/reactos/subsys/system/msiexec/msiexec.c b/reactos/subsys/system/msiexec/msiexec.c index a9184680637..5c0054ba982 100644 --- a/reactos/subsys/system/msiexec/msiexec.c +++ b/reactos/subsys/system/msiexec/msiexec.c @@ -2,6 +2,7 @@ * msiexec.exe implementation * * Copyright 2004 Vincent Béron + * Copyright 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 @@ -26,9 +27,16 @@ #include "msiexec.h" #include "wine/debug.h" +#include "wine/unicode.h" WINE_DEFAULT_DEBUG_CHANNEL(msiexec); +struct string_list +{ + struct string_list *next; + WCHAR str[1]; +}; + static const char UsageStr[] = "Usage:\n" " Install a product:\n" @@ -58,8 +66,18 @@ static const char UsageStr[] = "\n" "Copyright 2004 Vincent Béron\n"; -static const char ActionAdmin[] = "ACTION=ADMIN "; -static const char RemoveAll[] = "REMOVE=ALL "; +static const WCHAR ActionAdmin[] = { + 'A','C','T','I','O','N','=','A','D','M','I','N',' ',0 }; +static const WCHAR RemoveAll[] = { + 'R','E','M','O','V','E','=','A','L','L',' ',0 }; + +static const WCHAR InstallRunOnce[] = { + 'S','o','f','t','w','a','r','e','\\', + 'M','i','c','r','o','s','o','f','t','\\', + 'W','i','n','d','o','w','s','\\', + 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', + 'I','n','s','t','a','l','l','e','r','\\', + 'R','u','n','O','n','c','e','E','n','t','r','i','e','s',0}; static void ShowUsage(int ExitCode) { @@ -67,77 +85,187 @@ static void ShowUsage(int ExitCode) ExitProcess(ExitCode); } -static BOOL GetProductCode(LPCSTR str, LPCSTR *PackageName, LPGUID *ProductCode) +static BOOL IsProductCode(LPWSTR str) { - BOOL ret = FALSE; - int len = 0; - LPWSTR wstr = NULL; + GUID ProductCode; - if(strlen(str) == 38) - { - len = MultiByteToWideChar(CP_ACP, 0, str, -1, wstr, 0); - wstr = HeapAlloc(GetProcessHeap(), 0, (len+1)*sizeof(WCHAR)); - ret = (CLSIDFromString(wstr, *ProductCode) == NOERROR); - HeapFree(GetProcessHeap(), 0, wstr); - wstr = NULL; - } + if(lstrlenW(str) != 38) + return FALSE; + return ( (CLSIDFromString(str, &ProductCode) == NOERROR) ); - if(!ret) - { - HeapFree(GetProcessHeap(), 0, *ProductCode); - *ProductCode = NULL; - *PackageName = str; - } - - return ret; } -static VOID StringListAppend(LPSTR *StringList, LPCSTR StringAppend) +static VOID StringListAppend(struct string_list **list, LPCWSTR str) { - LPSTR TempStr = HeapReAlloc(GetProcessHeap(), 0, *StringList, HeapSize(GetProcessHeap(), 0, *StringList)+strlen(StringAppend)); - if(!TempStr) + struct string_list *entry; + DWORD size; + + size = sizeof *entry + lstrlenW(str) * sizeof (WCHAR); + entry = HeapAlloc(GetProcessHeap(), 0, size); + if(!entry) { WINE_ERR("Out of memory!\n"); ExitProcess(1); } - *StringList = TempStr; - strcat(*StringList, StringAppend); + lstrcpyW(entry->str, str); + entry->next = NULL; + + /* + * Ignoring o(n^2) time complexity to add n strings for simplicity, + * add the string to the end of the list to preserve the order. + */ + while( *list ) + list = &(*list)->next; + *list = entry; } -static VOID StringCompareRemoveLast(LPSTR String, CHAR character) +static LPWSTR build_properties(struct string_list *property_list) { - int len = strlen(String); - if(len && String[len-1] == character) String[len-1] = 0; + struct string_list *list; + LPWSTR ret, p, value; + DWORD len; + BOOL needs_quote; + + if(!property_list) + return NULL; + + /* count the space we need */ + len = 1; + for(list = property_list; list; list = list->next) + len += lstrlenW(list->str) + 3; + + ret = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); + + /* add a space before each string, and quote the value */ + p = ret; + for(list = property_list; list; list = list->next) + { + value = strchrW(list->str,'='); + if(!value) + continue; + len = value - list->str; + *p++ = ' '; + strncpyW(p, list->str, len); + p += len; + *p++ = '='; + + /* check if the value contains spaces and maybe quote it */ + value++; + needs_quote = strchrW(value,' ') ? 1 : 0; + if(needs_quote) + *p++ = '"'; + len = lstrlenW(value); + strncpyW(p, value, len); + p += len; + if(needs_quote) + *p++ = '"'; + } + *p = 0; + + WINE_TRACE("properties -> %s\n", wine_dbgstr_w(ret) ); + + return ret; } -static INT MSIEXEC_lstrncmpiA(LPCSTR str1, LPCSTR str2, INT size) +static LPWSTR build_transforms(struct string_list *transform_list) { - INT ret; + struct string_list *list; + LPWSTR ret, p; + DWORD len; - if ((str1 == NULL) && (str2 == NULL)) return 0; - if (str1 == NULL) return -1; - if (str2 == NULL) return 1; + /* count the space we need */ + len = 1; + for(list = transform_list; list; list = list->next) + len += lstrlenW(list->str) + 1; - ret = CompareStringA(GetThreadLocale(), NORM_IGNORECASE, str1, size, str2, -1); - if (ret) ret -= 2; + ret = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); - return ret; + /* add all the transforms with a semicolon between each one */ + p = ret; + for(list = transform_list; list; list = list->next) + { + len = lstrlenW(list->str); + lstrcpynW(p, list->str, len ); + p += len; + if(list->next) + *p++ = ';'; + } + *p = 0; + + return ret; } -static VOID *LoadProc(LPCSTR DllName, LPCSTR ProcName, HMODULE* DllHandle) +static DWORD msi_atou(LPCWSTR str) +{ + DWORD ret = 0; + while(*str >= '0' && *str <= '9') + { + ret *= 10; + ret += (*str - '0'); + str++; + } + return 0; +} + +static LPWSTR msi_strdup(LPCWSTR str) +{ + DWORD len = lstrlenW(str)+1; + LPWSTR ret = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*len); + lstrcpyW(ret, str); + return ret; +} + +/* str1 is the same as str2, ignoring case */ +static BOOL msi_strequal(LPCWSTR str1, LPCSTR str2) +{ + DWORD len, ret; + LPWSTR strW; + + len = MultiByteToWideChar( CP_ACP, 0, str2, -1, NULL, 0); + if( !len ) + return TRUE; + if( lstrlenW(str1) != (len-1) ) + return TRUE; + strW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*len); + MultiByteToWideChar( CP_ACP, 0, str2, -1, strW, len); + ret = CompareStringW(GetThreadLocale(), NORM_IGNORECASE, str1, len, strW, len); + HeapFree(GetProcessHeap(), 0, strW); + return (ret != CSTR_EQUAL); +} + +/* str2 is at the beginning of str1, ignoring case */ +static BOOL msi_strprefix(LPCWSTR str1, LPCSTR str2) +{ + DWORD len, ret; + LPWSTR strW; + + len = MultiByteToWideChar( CP_ACP, 0, str2, -1, NULL, 0); + if( !len ) + return TRUE; + if( lstrlenW(str1) < (len-1) ) + return TRUE; + strW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*len); + MultiByteToWideChar( CP_ACP, 0, str2, -1, strW, len); + ret = CompareStringW(GetThreadLocale(), NORM_IGNORECASE, str1, len-1, strW, len-1); + HeapFree(GetProcessHeap(), 0, strW); + return (ret != CSTR_EQUAL); +} + +static VOID *LoadProc(LPCWSTR DllName, LPCSTR ProcName, HMODULE* DllHandle) { VOID* (*proc)(void); - *DllHandle = LoadLibraryExA(DllName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); + *DllHandle = LoadLibraryExW(DllName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); if(!*DllHandle) { - fprintf(stderr, "Unable to load dll %s\n", DllName); + fprintf(stderr, "Unable to load dll %s\n", wine_dbgstr_w(DllName)); ExitProcess(1); } proc = (VOID *) GetProcAddress(*DllHandle, ProcName); if(!proc) { - fprintf(stderr, "Dll %s does not implement function %s\n", DllName, ProcName); + fprintf(stderr, "Dll %s does not implement function %s\n", + wine_dbgstr_w(DllName), ProcName); FreeLibrary(*DllHandle); ExitProcess(1); } @@ -145,7 +273,7 @@ static VOID *LoadProc(LPCSTR DllName, LPCSTR ProcName, HMODULE* DllHandle) return proc; } -static void DllRegisterServer(LPCSTR DllName) +static DWORD DllRegisterServer(LPCWSTR DllName) { HRESULT hr; DLLREGISTERSERVER pfDllRegisterServer = NULL; @@ -156,15 +284,16 @@ static void DllRegisterServer(LPCSTR DllName) hr = pfDllRegisterServer(); if(FAILED(hr)) { - fprintf(stderr, "Failed to register dll %s\n", DllName); - ExitProcess(1); + fprintf(stderr, "Failed to register dll %s\n", wine_dbgstr_w(DllName)); + return 1; } - printf("Successfully registered dll %s\n", DllName); + printf("Successfully registered dll %s\n", wine_dbgstr_w(DllName)); if(DllHandle) FreeLibrary(DllHandle); + return 0; } -static void DllUnregisterServer(LPCSTR DllName) +static DWORD DllUnregisterServer(LPCWSTR DllName) { HRESULT hr; DLLUNREGISTERSERVER pfDllUnregisterServer = NULL; @@ -175,15 +304,133 @@ static void DllUnregisterServer(LPCSTR DllName) hr = pfDllUnregisterServer(); if(FAILED(hr)) { - fprintf(stderr, "Failed to unregister dll %s\n", DllName); - ExitProcess(1); + fprintf(stderr, "Failed to unregister dll %s\n", wine_dbgstr_w(DllName)); + return 1; } - printf("Successfully unregistered dll %s\n", DllName); + printf("Successfully unregistered dll %s\n", wine_dbgstr_w(DllName)); if(DllHandle) FreeLibrary(DllHandle); + return 0; } -int main(int argc, char *argv[]) +/* + * state machine to break up the command line properly + */ + +enum chomp_state +{ + cs_whitespace, + cs_token, + cs_quote +}; + +static int chomp( WCHAR *str ) +{ + enum chomp_state state = cs_whitespace; + WCHAR *p, *out; + int count = 0, ignore; + + for( p = str, out = str; *p; p++ ) + { + ignore = 1; + switch( state ) + { + case cs_whitespace: + switch( *p ) + { + case ' ': + break; + case '"': + state = cs_quote; + count++; + break; + default: + count++; + ignore = 0; + state = cs_token; + } + break; + + case cs_token: + switch( *p ) + { + case '"': + state = cs_quote; + break; + case ' ': + state = cs_whitespace; + *out++ = 0; + break; + default: + ignore = 0; + } + break; + + case cs_quote: + switch( *p ) + { + case '"': + state = cs_token; + break; + default: + ignore = 0; + } + break; + } + if( !ignore ) + *out++ = *p; + } + + *out = 0; + + return count; +} + +void process_args( WCHAR *cmdline, int *pargc, WCHAR ***pargv ) +{ + WCHAR **argv, *p = msi_strdup(cmdline); + int i, n; + + n = chomp( p ); + argv = HeapAlloc(GetProcessHeap(), 0, sizeof (WCHAR*)*(n+1)); + for( i=0; i 2) - argvi += 2; - else { + if(lstrlenW(argvWi) > 2) + argvWi += 2; + else + { i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - argvi = argv[i]; + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + argvWi = argvW[i]; } - GotProductCode = GetProductCode(argvi, &PackageName, &ProductCode); + PackageName = argvWi; } - else if(!lstrcmpiA(argv[i], "/a")) + else if(!msi_strequal(argvW[i], "/a")) { FunctionInstall = TRUE; FunctionInstallAdmin = TRUE; @@ -257,18 +519,18 @@ int main(int argc, char *argv[]) i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - PackageName = argv[i]; - StringListAppend(&Properties, ActionAdmin); + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + PackageName = argvW[i]; + StringListAppend(&property_list, ActionAdmin); } - else if(!MSIEXEC_lstrncmpiA(argv[i], "/f", 2)) + else if(!msi_strprefix(argvW[i], "/f")) { int j; - int len = strlen(argv[i]); + int len = lstrlenW(argvW[i]); FunctionRepair = TRUE; for(j = 2; j < len; j++) { - switch(argv[i][j]) + switch(argvW[i][j]) { case 'P': case 'p': @@ -311,7 +573,7 @@ int main(int argc, char *argv[]) RepairMode |= REINSTALLMODE_PACKAGE; break; default: - fprintf(stderr, "Unknown option \"%c\" in Repair mode\n", argv[i][j]); + fprintf(stderr, "Unknown option \"%c\" in Repair mode\n", argvW[i][j]); break; } } @@ -326,27 +588,27 @@ int main(int argc, char *argv[]) i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - GotProductCode = GetProductCode(argv[i], &PackageName, &ProductCode); + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + PackageName = argvW[i]; } - else if(!lstrcmpiA(argv[i], "/x")) + else if(!msi_strequal(argvW[i], "/x")) { FunctionInstall = TRUE; i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - GotProductCode = GetProductCode(argv[i], &PackageName, &ProductCode); - StringListAppend(&Properties, RemoveAll); + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + PackageName = argvW[i]; + StringListAppend(&property_list, RemoveAll); } - else if(!MSIEXEC_lstrncmpiA(argv[i], "/j", 2)) + else if(!msi_strprefix(argvW[i], "/j")) { int j; - int len = strlen(argv[i]); + int len = lstrlenW(argvW[i]); FunctionAdvertise = TRUE; for(j = 2; j < len; j++) { - switch(argv[i][j]) + switch(argvW[i][j]) { case 'U': case 'u': @@ -357,65 +619,63 @@ int main(int argc, char *argv[]) AdvertiseMode = ADVERTISEFLAGS_MACHINEASSIGN; break; default: - fprintf(stderr, "Unknown option \"%c\" in Advertise mode\n", argv[i][j]); + fprintf(stderr, "Unknown option \"%c\" in Advertise mode\n", argvW[i][j]); break; } } i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - PackageName = argv[i]; + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + PackageName = argvW[i]; } - else if(!lstrcmpiA(argv[i], "u")) + else if(!msi_strequal(argvW[i], "u")) { FunctionAdvertise = TRUE; AdvertiseMode = ADVERTISEFLAGS_USERASSIGN; i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - PackageName = argv[i]; + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + PackageName = argvW[i]; } - else if(!lstrcmpiA(argv[i], "m")) + else if(!msi_strequal(argvW[i], "m")) { FunctionAdvertise = TRUE; AdvertiseMode = ADVERTISEFLAGS_MACHINEASSIGN; i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - PackageName = argv[i]; + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + PackageName = argvW[i]; } - else if(!lstrcmpiA(argv[i], "/t")) + else if(!msi_strequal(argvW[i], "/t")) { i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - StringListAppend(&Transforms, argv[i]); - StringListAppend(&Transforms, ";"); + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + StringListAppend(&transform_list, argvW[i]); } - else if(!MSIEXEC_lstrncmpiA(argv[i], "TRANSFORMS=", 11)) + else if(!msi_strprefix(argvW[i], "TRANSFORMS=")) { - StringListAppend(&Transforms, argv[i]+11); - StringListAppend(&Transforms, ";"); + StringListAppend(&transform_list, argvW[i]+11); } - else if(!lstrcmpiA(argv[i], "/g")) + else if(!msi_strequal(argvW[i], "/g")) { i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - Language = strtol(argv[i], NULL, 0); + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + Language = msi_atou(argvW[i]); } - else if(!MSIEXEC_lstrncmpiA(argv[i], "/l", 2)) + else if(!msi_strprefix(argvW[i], "/l")) { int j; - int len = strlen(argv[i]); + int len = lstrlenW(argvW[i]); for(j = 2; j < len; j++) { - switch(argv[i][j]) + switch(argvW[i][j]) { case 'I': case 'i': @@ -491,174 +751,147 @@ int main(int argc, char *argv[]) i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - LogFileName = argv[i]; - if(MsiEnableLogA(LogMode, LogFileName, LogAttributes) != ERROR_SUCCESS) + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + LogFileName = argvW[i]; + if(MsiEnableLogW(LogMode, LogFileName, LogAttributes) != ERROR_SUCCESS) { - fprintf(stderr, "Logging in %s (0x%08lx, %lu) failed\n", LogFileName, LogMode, LogAttributes); + fprintf(stderr, "Logging in %s (0x%08lx, %lu) failed\n", + wine_dbgstr_w(LogFileName), LogMode, LogAttributes); ExitProcess(1); } } - else if(!lstrcmpiA(argv[i], "/p")) + else if(!msi_strequal(argvW[i], "/p")) { FunctionPatch = TRUE; i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - PatchFileName = argv[i]; + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + PatchFileName = argvW[i]; } - else if(!MSIEXEC_lstrncmpiA(argv[i], "/q", 2)) + else if(!msi_strprefix(argvW[i], "/q")) { - if(strlen(argv[i]) == 2 || !lstrcmpiA(argv[i]+2, "n")) + if(lstrlenW(argvW[i]) == 2 || !msi_strequal(argvW[i]+2, "n")) { InstallUILevel = INSTALLUILEVEL_NONE; } - else if(!lstrcmpiA(argv[i]+2, "b")) + else if(!msi_strequal(argvW[i]+2, "b")) { InstallUILevel = INSTALLUILEVEL_BASIC; } - else if(!lstrcmpiA(argv[i]+2, "r")) + else if(!msi_strequal(argvW[i]+2, "r")) { InstallUILevel = INSTALLUILEVEL_REDUCED; } - else if(!lstrcmpiA(argv[i]+2, "f")) + else if(!msi_strequal(argvW[i]+2, "f")) { InstallUILevel = INSTALLUILEVEL_FULL|INSTALLUILEVEL_ENDDIALOG; } - else if(!lstrcmpiA(argv[i]+2, "n+")) + else if(!msi_strequal(argvW[i]+2, "n+")) { InstallUILevel = INSTALLUILEVEL_NONE|INSTALLUILEVEL_ENDDIALOG; } - else if(!lstrcmpiA(argv[i]+2, "b+")) + else if(!msi_strequal(argvW[i]+2, "b+")) { InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_ENDDIALOG; } - else if(!lstrcmpiA(argv[i]+2, "b-")) + else if(!msi_strequal(argvW[i]+2, "b-")) { InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_PROGRESSONLY; } - else if(!lstrcmpiA(argv[i]+2, "b+!")) - { + else if(!msi_strequal(argvW[i]+2, "b+!")) + { InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_ENDDIALOG; WINE_FIXME("Unknown modifier: !\n"); } else { - fprintf(stderr, "Unknown option \"%s\" for UI level\n", argv[i]+2); - } - retInstallUILevel = MsiSetInternalUI(InstallUILevel, NULL); - if(retInstallUILevel == INSTALLUILEVEL_NOCHANGE) - { - fprintf(stderr, "Setting the UI level to 0x%x failed.\n", InstallUILevel); - ExitProcess(1); + fprintf(stderr, "Unknown option \"%s\" for UI level\n", + wine_dbgstr_w(argvW[i]+2)); } } - else if(!lstrcmpiA(argv[i], "/y")) + else if(!msi_strequal(argvW[i], "/y")) { FunctionDllRegisterServer = TRUE; i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - DllName = argv[i]; + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + DllName = argvW[i]; } - else if(!lstrcmpiA(argv[i], "/z")) + else if(!msi_strequal(argvW[i], "/z")) { FunctionDllUnregisterServer = TRUE; i++; if(i >= argc) ShowUsage(1); - WINE_TRACE("argv[%d] = %s\n", i, argv[i]); - DllName = argv[i]; + WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); + DllName = argvW[i]; } - else if(!lstrcmpiA(argv[i], "/h") || !lstrcmpiA(argv[i], "/?")) + else if(!msi_strequal(argvW[i], "/h") || !msi_strequal(argvW[i], "/?")) { ShowUsage(0); } - else if(!lstrcmpiA(argv[i], "/m")) + else if(!msi_strequal(argvW[i], "/m")) { FunctionUnknown = TRUE; WINE_FIXME("Unknown parameter /m\n"); } - else if(!lstrcmpiA(argv[i], "/D")) + else if(!msi_strequal(argvW[i], "/D")) { FunctionUnknown = TRUE; WINE_FIXME("Unknown parameter /D\n"); } - else if(strchr(argv[i], '=')) + else if(strchrW(argvW[i], '=')) { - StringListAppend(&Properties, argv[i]); - StringListAppend(&Properties, " "); + StringListAppend(&property_list, argvW[i]); } else { FunctionInstall = TRUE; - GotProductCode = GetProductCode(argv[i], &PackageName, &ProductCode); + PackageName = argvW[i]; } } - StringCompareRemoveLast(Properties, ' '); - StringCompareRemoveLast(Transforms, ';'); + /* start the GUI */ + MsiSetInternalUI(InstallUILevel, NULL); + + Properties = build_properties( property_list ); + Transforms = build_transforms( transform_list ); if(FunctionInstallAdmin && FunctionPatch) FunctionInstall = FALSE; + ReturnCode = 1; if(FunctionInstall) { - if(GotProductCode) - { - WINE_FIXME("Product code treatment not implemented yet\n"); - ExitProcess(1); - } + if(IsProductCode(PackageName)) + ReturnCode = MsiConfigureProductExW(PackageName, 0, INSTALLSTATE_DEFAULT, Properties); else - { - if(MsiInstallProductA(PackageName, Properties) != ERROR_SUCCESS) - { - fprintf(stderr, "Installation of %s (%s) failed.\n", PackageName, Properties); - ExitProcess(1); - } - } + ReturnCode = MsiInstallProductW(PackageName, Properties); } else if(FunctionRepair) { - if(GotProductCode) - { + if(IsProductCode(PackageName)) WINE_FIXME("Product code treatment not implemented yet\n"); - ExitProcess(1); - } else - { - if(MsiReinstallProductA(PackageName, RepairMode) != ERROR_SUCCESS) - { - fprintf(stderr, "Repair of %s (0x%08lx) failed.\n", PackageName, RepairMode); - ExitProcess(1); - } - } + ReturnCode = MsiReinstallProductW(PackageName, RepairMode); } else if(FunctionAdvertise) { - if(MsiAdvertiseProductA(PackageName, (LPSTR) AdvertiseMode, Transforms, Language) != ERROR_SUCCESS) - { - fprintf(stderr, "Advertising of %s (%lu, %s, 0x%04x) failed.\n", PackageName, AdvertiseMode, Transforms, Language); - ExitProcess(1); - } + ReturnCode = MsiAdvertiseProductW(PackageName, (LPWSTR) AdvertiseMode, Transforms, Language); } else if(FunctionPatch) { - if(MsiApplyPatchA(PatchFileName, PackageName, InstallType, Properties) != ERROR_SUCCESS) - { - fprintf(stderr, "Patching with %s (%s, %d, %s)\n", PatchFileName, PackageName, InstallType, Properties); - ExitProcess(1); - } + ReturnCode = MsiApplyPatchW(PatchFileName, PackageName, InstallType, Properties); } else if(FunctionDllRegisterServer) { - DllRegisterServer(DllName); + ReturnCode = DllRegisterServer(DllName); } else if(FunctionDllUnregisterServer) { - DllUnregisterServer(DllName); + ReturnCode = DllUnregisterServer(DllName); } else if (FunctionRegServer) { @@ -675,5 +908,5 @@ int main(int argc, char *argv[]) else ShowUsage(1); - return 0; + return ReturnCode; } From e651dfa82d295efdc4361ff84033ab6b95ac8a65 Mon Sep 17 00:00:00 2001 From: Steven Edwards Date: Wed, 16 Feb 2005 03:17:36 +0000 Subject: [PATCH 066/248] Add EOL to make gcc shutup. svn path=/trunk/; revision=13592 --- rosapps/cmdutils/touch/various.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rosapps/cmdutils/touch/various.h b/rosapps/cmdutils/touch/various.h index ea9ed645483..8ad37bd84a1 100644 --- a/rosapps/cmdutils/touch/various.h +++ b/rosapps/cmdutils/touch/various.h @@ -52,4 +52,4 @@ typedef long uid_t; // SunOS 5.5 //}; //#endif -#endif \ No newline at end of file +#endif From 7e682fbbd0608be955654f78a05133a5da29a676 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Wed, 16 Feb 2005 14:01:34 +0000 Subject: [PATCH 067/248] converted libexpat to a static library svn path=/trunk/; revision=13593 --- reactos/bootdata/packages/reactos.dff | 1 - reactos/lib/expat/Makefile | 10 ++++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/reactos/bootdata/packages/reactos.dff b/reactos/bootdata/packages/reactos.dff index fd7b1b87f5c..37753426a44 100755 --- a/reactos/bootdata/packages/reactos.dff +++ b/reactos/bootdata/packages/reactos.dff @@ -74,7 +74,6 @@ lib\dinput\dinput.dll 1 lib\dinput8\dinput8.dll 1 lib\dsound\dsound.dll 1 lib\dxdiagn\dxdiagn.dll 1 -lib\expat\expat.dll 1 lib\fmifs\fmifs.dll 1 lib\freetype\freetype.dll 1 lib\gdi32\gdi32.dll 1 diff --git a/reactos/lib/expat/Makefile b/reactos/lib/expat/Makefile index abe638b3c30..7972187d4c5 100644 --- a/reactos/lib/expat/Makefile +++ b/reactos/lib/expat/Makefile @@ -2,15 +2,13 @@ PATH_TO_TOP = ../.. +include $(PATH_TO_TOP)/config + TARGET_NAME = expat -TARGET_TYPE = dynlink -TARGET_BASE = $(TARGET_BASE_LIB_EXPAT) -TARGET_NORC = yes -TARGET_DEFONLY = yes -TARGET_DEFNAME = lib/libexpat +TARGET_TYPE = library -TARGET_CFLAGS = -D__USE_W32API -DHAVE_EXPAT_CONFIG_H -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions +TARGET_CFLAGS = -D__USE_W32API -DHAVE_EXPAT_CONFIG_H -Wall -Wmissing-prototypes -Wstrict-prototypes -fexceptions TARGET_LFLAGS = -nostartfiles LIB_OBJECTS = \ From 4b76287e185f921ebae890746418ce309841cd44 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 16 Feb 2005 15:27:30 +0000 Subject: [PATCH 068/248] File system drivers should forward the IRP_MJ_SHUTDOWN request to underlying storage drivers. Fixes bug #504. svn path=/trunk/; revision=13594 --- reactos/drivers/fs/vfat/shutdown.c | 51 ++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/reactos/drivers/fs/vfat/shutdown.c b/reactos/drivers/fs/vfat/shutdown.c index 37e95be3da4..9feaeaa97fc 100644 --- a/reactos/drivers/fs/vfat/shutdown.c +++ b/reactos/drivers/fs/vfat/shutdown.c @@ -14,6 +14,34 @@ /* FUNCTIONS ****************************************************************/ +NTSTATUS +VfatDiskShutDown(PVCB Vcb) +{ + PIRP Irp; + KEVENT Event; + NTSTATUS Status; + IO_STATUS_BLOCK IoStatus; + + KeInitializeEvent(&Event, NotificationEvent, FALSE); + Irp = IoBuildSynchronousFsdRequest(IRP_MJ_SHUTDOWN, Vcb->StorageDevice, + NULL, 0, NULL, &Event, &IoStatus); + if (Irp) + { + Status = IoCallDriver(Vcb->StorageDevice, Irp); + if (Status == STATUS_PENDING) + { + KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); + Status = IoStatus.Status; + } + } + else + { + Status = IoStatus.Status; + } + + return Status; +} + NTSTATUS STDCALL VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp) { @@ -37,15 +65,24 @@ VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp) ExAcquireResourceExclusiveLite(&DeviceExt->DirResource, TRUE); Status = VfatFlushVolume(DeviceExt, DeviceExt->VolumeFcb); - ExReleaseResourceLite(&DeviceExt->DirResource); - if (!NT_SUCCESS(Status)) - { + if (NT_SUCCESS(Status)) + { + Status = VfatDiskShutDown(DeviceExt); + if (!NT_SUCCESS(Status)) + DPRINT1("VfatDiskShutDown failed, status = %x\n", Status); + } + else + { DPRINT1("VfatFlushVolume failed, status = %x\n", Status); - Irp->IoStatus.Status = Status; } + ExReleaseResourceLite(&DeviceExt->DirResource); + /* FIXME: Unmount the logical volume */ + + if (!NT_SUCCESS(Status)) + Irp->IoStatus.Status = Status; } - ExReleaseResourceLite(&VfatGlobalData->VolumeListLock); + ExReleaseResourceLite(&VfatGlobalData->VolumeListLock); /* FIXME: Free all global acquired resources */ @@ -53,13 +90,13 @@ VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp) } else { + Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; Status = STATUS_INVALID_DEVICE_REQUEST; } - Irp->IoStatus.Status = Status; Irp->IoStatus.Information = 0; - IoCompleteRequest(Irp, IO_NO_INCREMENT); + return(Status); } From dd88251afc505ce3ae91c4c3669bdd004840587c Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 16 Feb 2005 15:44:34 +0000 Subject: [PATCH 069/248] - Implement CaptureStringArg and CaptureAndConvertAnsiArg. - FileExists: Restore error mode. - Move configuration manager functions to a separate file. - Add cfgmgr32.h. svn path=/trunk/; revision=13595 --- reactos/include/wine/cfgmgr32.h | 50 ++++++++ reactos/lib/setupapi/Makefile.in | 1 + reactos/lib/setupapi/cfgmgr.c | 183 +++++++++++++++++++++++++++++ reactos/lib/setupapi/misc.c | 82 +++++++++++++ reactos/lib/setupapi/setupapi.spec | 22 ++-- reactos/lib/setupapi/stubs.c | 33 ------ 6 files changed, 327 insertions(+), 44 deletions(-) create mode 100644 reactos/include/wine/cfgmgr32.h create mode 100644 reactos/lib/setupapi/cfgmgr.c diff --git a/reactos/include/wine/cfgmgr32.h b/reactos/include/wine/cfgmgr32.h new file mode 100644 index 00000000000..2c3792e8b29 --- /dev/null +++ b/reactos/include/wine/cfgmgr32.h @@ -0,0 +1,50 @@ +/* + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _CFGMGR32_H_ +#define _CFGMGR32_H_ + +typedef DWORD CONFIGRET; +typedef HANDLE HMACHINE; +typedef HMACHINE *PHMACHINE; + +#define CR_SUCCESS 0x00000000 +#define CR_INVALID_DATA 0x0000001F +#define CR_ACCESS_DENIED 0x00000033 + + +CONFIGRET WINAPI CM_Connect_MachineA( PCSTR, PHMACHINE ); +CONFIGRET WINAPI CM_Connect_MachineW( PCWSTR, PHMACHINE ); +#define CM_Connect_Machine WINELIB_NAME_AW(CM_Connect_Machine) + +CONFIGRET WINAPI CM_Disconnect_Machine( HMACHINE ); + +CONFIGRET WINAPI CM_Get_Device_ID_ListA( PCSTR, PCHAR, ULONG, ULONG ); +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) +CONFIGRET WINAPI CM_Get_Device_ID_List_ExA( PCSTR, PCHAR, ULONG, ULONG, HMACHINE ); +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) +CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA( PULONG, PCSTR, ULONG ); +CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW( PULONG, PCWSTR, ULONG ); +#define CM_Get_Device_ID_List_Size WINELIB_NAME_AW(CM_Get_Device_ID_List_Size) +CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA( PULONG, PCSTR, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW( PULONG, PCWSTR, ULONG, HMACHINE ); +#define CM_Get_Device_ID_List_Size_Ex WINELIB_NAME_AW(CM_Get_Device_ID_List_Size_Ex) + +#endif /* _CFGMGR32_H_ */ diff --git a/reactos/lib/setupapi/Makefile.in b/reactos/lib/setupapi/Makefile.in index b3444fbe957..e502e2983ff 100644 --- a/reactos/lib/setupapi/Makefile.in +++ b/reactos/lib/setupapi/Makefile.in @@ -9,6 +9,7 @@ DELAYIMPORTS = shell32 EXTRALIBS = $(LIBUNICODE) C_SRCS = \ + cfgmgr.c \ devinst.c \ dirid.c \ diskspace.c \ diff --git a/reactos/lib/setupapi/cfgmgr.c b/reactos/lib/setupapi/cfgmgr.c new file mode 100644 index 00000000000..91021b5d736 --- /dev/null +++ b/reactos/lib/setupapi/cfgmgr.c @@ -0,0 +1,183 @@ +/* + * Configuration manager functions + * + * Copyright 2000 James Hatheway + * Copyright 2005 Eric Kohl + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winnls.h" +#include "winreg.h" +#include "setupapi.h" +#include "cfgmgr32.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(setupapi); + + +/*********************************************************************** + * CM_Connect_MachineA [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Connect_MachineA(PCSTR UNCServerName, PHMACHINE phMachine) +{ + PWSTR pServerNameW; + CONFIGRET ret; + + TRACE("%s %p\n", UNCServerName, phMachine); + + if (UNCServerName == NULL || *UNCServerName == 0) + { + return CM_Connect_MachineW(NULL, phMachine); + } + + if (CaptureAndConvertAnsiArg(UNCServerName, &pServerNameW)) + { + return CR_INVALID_DATA; + } + + ret = CM_Connect_MachineW(pServerNameW, phMachine); + + MyFree(pServerNameW); + + return ret; +} + + +/*********************************************************************** + * CM_Connect_MachineW [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR UNCServerName, PHMACHINE phMachine) +{ + FIXME("%s %p\n", debugstr_w(UNCServerName), phMachine); + return CR_ACCESS_DENIED; +} + + +/*********************************************************************** + * CM_Disconnect_Machine [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE hMachine) +{ + FIXME("%lx\n", hMachine); + return CR_SUCCESS; +} + + +/*********************************************************************** + * CM_Get_Device_ID_ListA [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_ListA( + PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags ) +{ + FIXME("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags); + memset(Buffer,0,2); + return CR_SUCCESS; +} + + +/*********************************************************************** + * CM_Get_Device_ID_ListW [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_ListW( + PCWSTR pszFilter, PWCHAR Buffer, ULONG BufferLen, ULONG ulFlags ) +{ + TRACE("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags); + return CM_Get_Device_ID_List_ExW(pszFilter, Buffer, BufferLen, + ulFlags, NULL); +} + + +/*********************************************************************** + * CM_Get_Device_ID_List_ExA [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_List_ExA( + PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags, + HMACHINE hMachine ) +{ + FIXME("%p %p %ld %ld %lx\n", + pszFilter, Buffer, BufferLen, ulFlags, hMachine); + memset(Buffer,0,2); + return CR_SUCCESS; +} + + +/*********************************************************************** + * CM_Get_Device_ID_List_ExW [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_List_ExW( + PCWSTR pszFilter, PWCHAR Buffer, ULONG BufferLen, ULONG ulFlags, + HMACHINE hMachine ) +{ + FIXME("%p %p %ld %ld %lx\n", + pszFilter, Buffer, BufferLen, ulFlags, hMachine); + memset(Buffer,0,2); + return CR_SUCCESS; +} + + +/*********************************************************************** + * CM_Get_Device_ID_List_SizeA [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA( + PULONG pulLen, PCSTR pszFilter, ULONG ulFlags) +{ + FIXME("%p %s %ld\n", pulLen, pszFilter, ulFlags); + *pulLen = 2; + return CR_SUCCESS; +} + + +/*********************************************************************** + * CM_Get_Device_ID_List_SizeW [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW( + PULONG pulLen, PCWSTR pszFilter, ULONG ulFlags) +{ + FIXME("%p %s %ld\n", pulLen, debugstr_w(pszFilter), ulFlags); + *pulLen = 2; + return CR_SUCCESS; +} + + +/*********************************************************************** + * CM_Get_Device_ID_List_Size_ExA [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA( + PULONG pulLen, PCSTR pszFilter, ULONG ulFlags, HMACHINE hMachine) +{ + FIXME("%p %s %ld %lx\n", pulLen, pszFilter, ulFlags, hMachine); + *pulLen = 2; + return CR_SUCCESS; +} + + +/*********************************************************************** + * CM_Get_Device_ID_List_Size_ExW [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW( + PULONG pulLen, PCWSTR pszFilter, ULONG ulFlags, HMACHINE hMachine) +{ + FIXME("%p %s %ld %lx\n", pulLen, debugstr_w(pszFilter), ulFlags, hMachine); + *pulLen = 2; + return CR_SUCCESS; +} diff --git a/reactos/lib/setupapi/misc.c b/reactos/lib/setupapi/misc.c index 218da19fd35..89601f0a5d1 100644 --- a/reactos/lib/setupapi/misc.c +++ b/reactos/lib/setupapi/misc.c @@ -463,6 +463,19 @@ BOOL WINAPI EnablePrivilege(LPCWSTR lpPrivilegeName, BOOL bEnable) } +/************************************************************************** + * DelayedMove [SETUPAPI.@] + * + * Moves a file upon the next reboot. + * + * PARAMS + * lpExistingFileName [I] Current file name + * lpNewFileName [I] New file name + * + * RETURNS + * Success: TRUE + * Failure: FALSE + */ BOOL WINAPI DelayedMove(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName) { if (OsVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT) @@ -476,6 +489,19 @@ BOOL WINAPI DelayedMove(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName) } +/************************************************************************** + * FileExists [SETUPAPI.@] + * + * Checks whether a file exists. + * + * PARAMS + * lpFileName [I] Name of the file to check + * lpNewFileName [O] Optional information about the existing file + * + * RETURNS + * Success: TRUE + * Failure: FALSE + */ BOOL WINAPI FileExists(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFileFindData) { WIN32_FIND_DATAW FindData; @@ -499,5 +525,61 @@ BOOL WINAPI FileExists(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFileFindData) if (lpFileFindData) memcpy(lpFileFindData, &FindData, sizeof(WIN32_FIND_DATAW)); + SetErrorMode(uErrorMode); + return TRUE; } + + +/************************************************************************** + * CaptureStringArg [SETUPAPI.@] + * + * Captures a UNICODE string. + * + * PARAMS + * lpSrc [I] UNICODE string to be captured + * lpDst [O] Pointer to the captured UNICODE string + * + * RETURNS + * Success: ERROR_SUCCESS + * Failure: ERROR_INVALID_PARAMETER + * + * NOTE + * Call MyFree to release the captured UNICODE string. + */ +DWORD WINAPI CaptureStringArg(LPCWSTR pSrc, LPWSTR *pDst) +{ + if (pDst == NULL) + return ERROR_INVALID_PARAMETER; + + *pDst = DuplicateString(pSrc); + + return ERROR_SUCCESS; +} + + +/************************************************************************** + * CaptureAndConvertAnsiArg [SETUPAPI.@] + * + * Captures an ANSI string and converts it to a UNICODE string. + * + * PARAMS + * lpSrc [I] ANSI string to be captured + * lpDst [O] Pointer to the captured UNICODE string + * + * RETURNS + * Success: ERROR_SUCCESS + * Failure: ERROR_INVALID_PARAMETER + * + * NOTE + * Call MyFree to release the captured UNICODE string. + */ +DWORD WINAPI CaptureAndConvertAnsiArg(LPCSTR pSrc, LPWSTR *pDst) +{ + if (pDst == NULL) + return ERROR_INVALID_PARAMETER; + + *pDst = MultiByteToUnicode(pSrc, CP_ACP); + + return ERROR_SUCCESS; +} diff --git a/reactos/lib/setupapi/setupapi.spec b/reactos/lib/setupapi/setupapi.spec index 10ed72a4980..262f4573ddd 100644 --- a/reactos/lib/setupapi/setupapi.spec +++ b/reactos/lib/setupapi/setupapi.spec @@ -18,7 +18,7 @@ @ stub CM_Add_Range @ stub CM_Add_Res_Des @ stub CM_Add_Res_Des_Ex -@ stub CM_Connect_MachineA +@ stdcall CM_Connect_MachineA(str ptr) @ stdcall CM_Connect_MachineW(wstr ptr) @ stub CM_Create_DevNodeA @ stub CM_Create_DevNodeW @@ -75,14 +75,14 @@ @ stub CM_Get_Device_IDW @ stub CM_Get_Device_ID_ExA @ stub CM_Get_Device_ID_ExW -@ stdcall CM_Get_Device_ID_ListA(ptr ptr long long) -@ stub CM_Get_Device_ID_ListW -@ stub CM_Get_Device_ID_List_ExA -@ stub CM_Get_Device_ID_List_ExW -@ stub CM_Get_Device_ID_List_SizeA -@ stub CM_Get_Device_ID_List_SizeW -@ stub CM_Get_Device_ID_List_Size_ExA -@ stub CM_Get_Device_ID_List_Size_ExW +@ stdcall CM_Get_Device_ID_ListA(str str long long) +@ stdcall CM_Get_Device_ID_ListW(wstr wstr long long) +@ stdcall CM_Get_Device_ID_List_ExA(str str long long long) +@ stdcall CM_Get_Device_ID_List_ExW(wstr wstr long long long) +@ stdcall CM_Get_Device_ID_List_SizeA(ptr str long) +@ stdcall CM_Get_Device_ID_List_SizeW(ptr wstr long) +@ stdcall CM_Get_Device_ID_List_Size_ExA(ptr str long long) +@ stdcall CM_Get_Device_ID_List_Size_ExW(ptr wstr long long) @ stub CM_Get_Device_ID_Size @ stub CM_Get_Device_ID_Size_Ex @ stub CM_Get_Device_Interface_AliasA @@ -190,8 +190,8 @@ @ stub CM_Unregister_Device_InterfaceW @ stub CM_Unregister_Device_Interface_ExA @ stub CM_Unregister_Device_Interface_ExW -@ stub CaptureAndConvertAnsiArg -@ stub CaptureStringArg +@ stdcall CaptureAndConvertAnsiArg(str ptr) +@ stdcall CaptureStringArg(wstr ptr) @ stub CenterWindowRelativeToParent @ stub ConcatenatePaths @ stdcall DelayedMove(wstr wstr) diff --git a/reactos/lib/setupapi/stubs.c b/reactos/lib/setupapi/stubs.c index f722a0cc20d..f0ab6e22518 100644 --- a/reactos/lib/setupapi/stubs.c +++ b/reactos/lib/setupapi/stubs.c @@ -90,39 +90,6 @@ HDEVINFO WINAPI SetupDiGetClassDevsExW(const GUID *class, PCWSTR filter, HWND pa return FALSE; } -/*********************************************************************** - * CM_Connect_MachineW (SETUPAPI.@) - */ -DWORD WINAPI CM_Connect_MachineW(LPCWSTR name, void * machine) -{ -#define CR_SUCCESS 0x00000000 -#define CR_ACCESS_DENIED 0x00000033 - FIXME("\n"); - return CR_ACCESS_DENIED; -} - -/*********************************************************************** - * CM_Disconnect_Machine (SETUPAPI.@) - */ -DWORD WINAPI CM_Disconnect_Machine(DWORD handle) -{ - FIXME("\n"); - return CR_SUCCESS; - -} - -/*********************************************************************** - * CM_Get_Device_ID_ListA (SETUPAPI.@) - */ - -DWORD WINAPI CM_Get_Device_ID_ListA( - PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags ) -{ - FIXME("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags ); - memset(Buffer,0,2); - return CR_SUCCESS; -} - /*********************************************************************** * SetupCopyOEMInfA (SETUPAPI.@) From 3f7501d7c3b75968f5c6e956d4cc6c2535bc3680 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Wed, 16 Feb 2005 16:44:54 +0000 Subject: [PATCH 070/248] Forward to user32 when appropriate in shlwapi and removed dependencies to libunicode svn path=/trunk/; revision=13596 --- reactos/Makefile | 5 +- reactos/bootdata/packages/reactos.dff | 2 +- reactos/include/wine/unicode.h | 47 +- reactos/lib/comdlg32/Makefile.ros-template | 2 +- reactos/lib/msi/Makefile.ros-template | 2 +- reactos/lib/oleaut32/Makefile.ros-template | 2 +- reactos/lib/riched20/Makefile.ros-template | 2 +- reactos/lib/setupapi/Makefile.ros-template | 42 +- reactos/lib/shlwapi/Makefile.ros-template | 44 +- reactos/lib/shlwapi/ordinal.c | 92 +- reactos/lib/shlwapi/shlwapi.spec | 1678 ++++++++++---------- reactos/lib/winspool/Makefile | 2 +- 12 files changed, 913 insertions(+), 1007 deletions(-) diff --git a/reactos/Makefile b/reactos/Makefile index 9afe433a400..19903d98b52 100644 --- a/reactos/Makefile +++ b/reactos/Makefile @@ -41,6 +41,9 @@ BUS = acpi isapnp pci # vfatlib LIB_FSLIB = vfatlib +# libunicode, must be empty! +LIBUNICODE = + # Static libraries LIB_STATIC = string rosrtl epsapi uuid libwine zlib rtl tgetopt pseh adns dxguid strmiids crt rossym wdmguid @@ -59,7 +62,7 @@ DLLS = acledit aclui advapi32 advpack cabinet cards comctl32 crtdll comdlg32 d3d gdi32 gdiplus glu32 hid imagehlp imm32 iphlpapi kernel32 lzexpand mesa32 midimap mmdrv mpr msacm msafd \ msgina msi msimg32 msvcrt20 msvideo mswsock netapi32 ntdll ole32 oleaut32 oledlg olepro32 opengl32 \ packet psapi riched20 richedit rpcrt4 samlib secur32 setupapi shell32 shlwapi smdll snmpapi syssetup \ - twain unicode user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \ + twain user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \ urlmon shdocvw dinput dinput8 dxdiagn devenum dsound $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT) SUBSYS = smss win32k csrss ntvdm diff --git a/reactos/bootdata/packages/reactos.dff b/reactos/bootdata/packages/reactos.dff index 37753426a44..700e7782400 100755 --- a/reactos/bootdata/packages/reactos.dff +++ b/reactos/bootdata/packages/reactos.dff @@ -74,6 +74,7 @@ lib\dinput\dinput.dll 1 lib\dinput8\dinput8.dll 1 lib\dsound\dsound.dll 1 lib\dxdiagn\dxdiagn.dll 1 +lib\expat\expat.dll 1 lib\fmifs\fmifs.dll 1 lib\freetype\freetype.dll 1 lib\gdi32\gdi32.dll 1 @@ -119,7 +120,6 @@ lib\smdll\smdll.dll 1 lib\syssetup\syssetup.dll 1 lib\twain\twain_32.dll 1 lib\urlmon\urlmon.dll 1 -lib\unicode\wine_unicode.dll 1 lib\user32\user32.dll 1 lib\userenv\userenv.dll 1 lib\version\version.dll 1 diff --git a/reactos/include/wine/unicode.h b/reactos/include/wine/unicode.h index 53296edd3ab..32955f48465 100644 --- a/reactos/include/wine/unicode.h +++ b/reactos/include/wine/unicode.h @@ -7,41 +7,6 @@ #include #include -/* 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_t def_char; /* default char value (can be double-byte) */ - wchar_t def_unicode_char; /* default Unicode char value */ - const char *name; /* code page name */ -}; - -struct sbcs_table -{ - struct cp_info info; - const wchar_t *cp2uni; /* code page -> Unicode map */ - const unsigned char *uni2cp_low; /* Unicode -> code page map */ - const unsigned short *uni2cp_high; -}; - -struct dbcs_table -{ - struct cp_info info; - const wchar_t *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; -}; - #define strlenW(s) wcslen((const wchar_t *)(s)) #define strcpyW(d,s) wcscpy((wchar_t *)(d),(const wchar_t *)(s)) #define strcatW(d,s) wcscat((wchar_t *)(d),(const wchar_t *)(s)) @@ -54,6 +19,7 @@ union cptable #define strcmpW(s1,s2) wcscmp((const wchar_t *)(s1),(const wchar_t *)(s2)) #define strcmpiW(s1,s2) _wcsicmp((const wchar_t *)(s1),(const wchar_t *)(s2)) #define strncmpiW(s1,s2,n) _wcsnicmp((const wchar_t *)(s1),(const wchar_t *)(s2),(n)) +#define strtoulW(s1,s2,b) wcstoul((const wchar_t *)(s1),(wchar_t **)(s2),(b)) #define tolowerW(n) towlower((n)) #define toupperW(n) towupper((n)) #define islowerW(n) iswlower((n)) @@ -67,21 +33,14 @@ union cptable #define atolW(s) _wtol((const wchar_t *)(s)) #define strlwrW(s) _wcslwr((wchar_t *)(s)) #define struprW(s) _wcsupr((wchar_t *)(s)) -#define sprintfW wsprintfW +#define sprintfW swprintf #define snprintfW _snwprintf +#define vsnprintfW vsnwprintf #ifndef WINE_UNICODE_API #define WINE_UNICODE_API __attribute__((dllimport)) #endif -/* the character type contains the C1_* flags in the low 12 bits */ -/* and the C2_* type in the high 4 bits */ -static inline unsigned short get_char_typeW( wchar_t ch ) -{ - extern WINE_UNICODE_API const unsigned short wine_wctype_table[]; - return wine_wctype_table[wine_wctype_table[ch >> 8] + (ch & 0xff)]; -} - static inline WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept ) { for ( ; *str; str++) if (strchrW( accept, *str )) return (WCHAR *)str; diff --git a/reactos/lib/comdlg32/Makefile.ros-template b/reactos/lib/comdlg32/Makefile.ros-template index e7a03a72715..9e7bcbb5409 100644 --- a/reactos/lib/comdlg32/Makefile.ros-template +++ b/reactos/lib/comdlg32/Makefile.ros-template @@ -5,7 +5,7 @@ TARGET_OBJECTS = @C_SRCS@ TARGET_CFLAGS = -D__REACTOS__ @EXTRADEFS@ -TARGET_SDKLIBS = @IMPORTS@ wine.a wine_unicode.a wine_uuid.a ntdll.a winspool.a +TARGET_SDKLIBS = @IMPORTS@ wine.a wine_uuid.a ntdll.a winspool.a TARGET_BASE = $(TARGET_BASE_LIB_COMDLG32) diff --git a/reactos/lib/msi/Makefile.ros-template b/reactos/lib/msi/Makefile.ros-template index b54c29ed29d..b6b0bc5db3f 100644 --- a/reactos/lib/msi/Makefile.ros-template +++ b/reactos/lib/msi/Makefile.ros-template @@ -6,7 +6,7 @@ TARGET_OBJECTS = @C_SRCS@ @EXTRA_OBJS@ TARGET_CFLAGS = @EXTRADEFS@ -D__REACTOS__ -TARGET_SDKLIBS = @IMPORTS@ winmm.a wine.a wine_uuid.a wine_unicode.a ntdll.a +TARGET_SDKLIBS = @IMPORTS@ winmm.a wine.a wine_uuid.a ntdll.a TARGET_BASE = $(TARGET_BASE_LIB_WINMM) diff --git a/reactos/lib/oleaut32/Makefile.ros-template b/reactos/lib/oleaut32/Makefile.ros-template index 2e4659a9191..c885233629c 100644 --- a/reactos/lib/oleaut32/Makefile.ros-template +++ b/reactos/lib/oleaut32/Makefile.ros-template @@ -6,7 +6,7 @@ TARGET_OBJECTS = @C_SRCS@ TARGET_CFLAGS = @EXTRADEFS@ -D__REACTOS__ -TARGET_SDKLIBS = @IMPORTS@ winmm.a wine.a wine_uuid.a wine_unicode.a ntdll.a +TARGET_SDKLIBS = @IMPORTS@ winmm.a wine.a wine_uuid.a ntdll.a TARGET_BASE = $(TARGET_BASE_LIB_OLEAUT32) diff --git a/reactos/lib/riched20/Makefile.ros-template b/reactos/lib/riched20/Makefile.ros-template index 2e215df5ad4..f9a8b916bdf 100644 --- a/reactos/lib/riched20/Makefile.ros-template +++ b/reactos/lib/riched20/Makefile.ros-template @@ -6,7 +6,7 @@ TARGET_OBJECTS = @C_SRCS@ TARGET_CFLAGS = @EXTRADEFS@ -D__REACTOS__ -D__WINESRC__ -TARGET_SDKLIBS = @IMPORTS@ wine.a ntdll.a wine_unicode.a +TARGET_SDKLIBS = @IMPORTS@ wine.a ntdll.a TARGET_BASE = $(TARGET_BASE_LIB_SETUPAPI) diff --git a/reactos/lib/setupapi/Makefile.ros-template b/reactos/lib/setupapi/Makefile.ros-template index 47cbad73413..2e72b185706 100644 --- a/reactos/lib/setupapi/Makefile.ros-template +++ b/reactos/lib/setupapi/Makefile.ros-template @@ -1,21 +1,21 @@ -# $Id: Makefile.ros-template 12852 2005-01-06 13:58:04Z mf $ - -TARGET_NAME = setupapi - -TARGET_OBJECTS = @C_SRCS@ - -TARGET_CFLAGS = @EXTRADEFS@ -D__REACTOS__ -D__WINESRC__ - -TARGET_SDKLIBS = @IMPORTS@ wine.a ntdll.a wine_unicode.a - -TARGET_BASE = $(TARGET_BASE_LIB_SETUPAPI) - -TARGET_RC_SRCS = @RC_SRCS@ -TARGET_RC_BINSRC = @RC_BINSRC@ -TARGET_RC_BINARIES = @RC_BINARIES@ - -default: all - -DEP_OBJECTS = $(TARGET_OBJECTS) - -include $(TOOLS_PATH)/depend.mk +# $Id: Makefile.ros-template 12852 2005-01-06 13:58:04Z mf $ + +TARGET_NAME = setupapi + +TARGET_OBJECTS = @C_SRCS@ + +TARGET_CFLAGS = @EXTRADEFS@ -D__REACTOS__ -D__WINESRC__ + +TARGET_SDKLIBS = @IMPORTS@ wine.a ntdll.a + +TARGET_BASE = $(TARGET_BASE_LIB_SETUPAPI) + +TARGET_RC_SRCS = @RC_SRCS@ +TARGET_RC_BINSRC = @RC_BINSRC@ +TARGET_RC_BINARIES = @RC_BINARIES@ + +default: all + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(TOOLS_PATH)/depend.mk diff --git a/reactos/lib/shlwapi/Makefile.ros-template b/reactos/lib/shlwapi/Makefile.ros-template index cba8f74177e..0a4ab774bf4 100644 --- a/reactos/lib/shlwapi/Makefile.ros-template +++ b/reactos/lib/shlwapi/Makefile.ros-template @@ -1,22 +1,22 @@ -# $Id: Makefile.ros-template 11910 2004-12-03 23:37:44Z blight $ - -TARGET_NAME = shlwapi - -TARGET_OBJECTS = @C_SRCS@ - -TARGET_CFLAGS = -DWINSHLWAPI= -D__REACTOS__ @EXTRADEFS@ - -# FIXME: we don't do delayed imports yet so oleaut32.a is listed explicitly -# NOTE: msvcrt.a must be listed before ntdll.a, because sprintf that is -# exported from ntdll doesn't support printing of float types (%f) -TARGET_SDKLIBS = msvcrt.a @IMPORTS@ oleaut32.a wine.a wine_uuid.a wine_unicode.a msvcrt.a ntdll.a - -TARGET_NORC = yes - -TARGET_BASE = $(TARGET_BASE_LIB_SHLWAPI) - -default: all - -DEP_OBJECTS = $(TARGET_OBJECTS) - -include $(TOOLS_PATH)/depend.mk +# $Id: Makefile.ros-template 11910 2004-12-03 23:37:44Z blight $ + +TARGET_NAME = shlwapi + +TARGET_OBJECTS = @C_SRCS@ + +TARGET_CFLAGS = -DWINSHLWAPI= -D__REACTOS__ @EXTRADEFS@ + +# FIXME: we don't do delayed imports yet so oleaut32.a is listed explicitly +# NOTE: msvcrt.a must be listed before ntdll.a, because sprintf that is +# exported from ntdll doesn't support printing of float types (%f) +TARGET_SDKLIBS = msvcrt.a @IMPORTS@ oleaut32.a wine.a wine_uuid.a msvcrt.a ntdll.a + +TARGET_NORC = yes + +TARGET_BASE = $(TARGET_BASE_LIB_SHLWAPI) + +default: all + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(TOOLS_PATH)/depend.mk diff --git a/reactos/lib/shlwapi/ordinal.c b/reactos/lib/shlwapi/ordinal.c index 86dedb543db..616d1ba9d3f 100644 --- a/reactos/lib/shlwapi/ordinal.c +++ b/reactos/lib/shlwapi/ordinal.c @@ -680,74 +680,6 @@ INT WINAPI SHStringFromGUIDW(REFGUID guid, LPWSTR lpszDest, INT cchMax) return iLen; } -/************************************************************************* - * @ [SHLWAPI.25] - * - * Determine if a Unicode character is alphabetic. - * - * PARAMS - * wc [I] Character to check. - * - * RETURNS - * TRUE, if wc is alphabetic, - * FALSE otherwise. - */ -BOOL WINAPI IsCharAlphaWrapW(WCHAR wc) -{ - return (get_char_typeW(wc) & C1_ALPHA) != 0; -} - -/************************************************************************* - * @ [SHLWAPI.26] - * - * Determine if a Unicode character is upper-case. - * - * PARAMS - * wc [I] Character to check. - * - * RETURNS - * TRUE, if wc is upper-case, - * FALSE otherwise. - */ -BOOL WINAPI IsCharUpperWrapW(WCHAR wc) -{ - return (get_char_typeW(wc) & C1_UPPER) != 0; -} - -/************************************************************************* - * @ [SHLWAPI.27] - * - * Determine if a Unicode character is lower-case. - * - * PARAMS - * wc [I] Character to check. - * - * RETURNS - * TRUE, if wc is lower-case, - * FALSE otherwise. - */ -BOOL WINAPI IsCharLowerWrapW(WCHAR wc) -{ - return (get_char_typeW(wc) & C1_LOWER) != 0; -} - -/************************************************************************* - * @ [SHLWAPI.28] - * - * Determine if a Unicode character is alphabetic or a digit. - * - * PARAMS - * wc [I] Character to check. - * - * RETURNS - * TRUE, if wc is alphabetic or a digit, - * FALSE otherwise. - */ -BOOL WINAPI IsCharAlphaNumericWrapW(WCHAR wc) -{ - return (get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT)) != 0; -} - /************************************************************************* * @ [SHLWAPI.29] * @@ -762,7 +694,9 @@ BOOL WINAPI IsCharAlphaNumericWrapW(WCHAR wc) */ BOOL WINAPI IsCharSpaceW(WCHAR wc) { - return (get_char_typeW(wc) & C1_SPACE) != 0; + WORD CharType; + + return GetStringTypeW(CT_CTYPE1, &wc, 1, &CharType) && (CharType & C1_SPACE); } /************************************************************************* @@ -780,7 +714,9 @@ BOOL WINAPI IsCharSpaceW(WCHAR wc) */ BOOL WINAPI IsCharBlankW(WCHAR wc) { - return (get_char_typeW(wc) & C1_BLANK) != 0; + WORD CharType; + + return GetStringTypeW(CT_CTYPE1, &wc, 1, &CharType) && (CharType & C1_BLANK); } /************************************************************************* @@ -797,7 +733,9 @@ BOOL WINAPI IsCharBlankW(WCHAR wc) */ BOOL WINAPI IsCharPunctW(WCHAR wc) { - return (get_char_typeW(wc) & C1_PUNCT) != 0; + WORD CharType; + + return GetStringTypeW(CT_CTYPE1, &wc, 1, &CharType) && (CharType & C1_PUNCT); } /************************************************************************* @@ -814,7 +752,9 @@ BOOL WINAPI IsCharPunctW(WCHAR wc) */ BOOL WINAPI IsCharCntrlW(WCHAR wc) { - return (get_char_typeW(wc) & C1_CNTRL) != 0; + WORD CharType; + + return GetStringTypeW(CT_CTYPE1, &wc, 1, &CharType) && (CharType & C1_CNTRL); } /************************************************************************* @@ -831,7 +771,9 @@ BOOL WINAPI IsCharCntrlW(WCHAR wc) */ BOOL WINAPI IsCharDigitW(WCHAR wc) { - return (get_char_typeW(wc) & C1_DIGIT) != 0; + WORD CharType; + + return GetStringTypeW(CT_CTYPE1, &wc, 1, &CharType) && (CharType & C1_DIGIT); } /************************************************************************* @@ -848,7 +790,9 @@ BOOL WINAPI IsCharDigitW(WCHAR wc) */ BOOL WINAPI IsCharXDigitW(WCHAR wc) { - return (get_char_typeW(wc) & C1_XDIGIT) != 0; + WORD CharType; + + return GetStringTypeW(CT_CTYPE1, &wc, 1, &CharType) && (CharType & C1_XDIGIT); } /************************************************************************* diff --git a/reactos/lib/shlwapi/shlwapi.spec b/reactos/lib/shlwapi/shlwapi.spec index 140de9fda58..63e501b3a65 100644 --- a/reactos/lib/shlwapi/shlwapi.spec +++ b/reactos/lib/shlwapi/shlwapi.spec @@ -1,839 +1,839 @@ -1 stdcall -noname ParseURLA(str ptr) -2 stdcall -noname ParseURLW(wstr ptr) -3 stdcall -noname PathFileExistsDefExtA(str long) -4 stdcall -noname PathFileExistsDefExtW(wstr long) -5 stdcall -noname PathFindOnPathExA(str ptr long) -6 stdcall -noname PathFindOnPathExW(wstr ptr long) -7 stdcall -noname SHAllocShared(ptr long long) -8 stdcall -noname SHLockShared(long long) -9 stdcall -noname SHUnlockShared(ptr) -10 stdcall -noname SHFreeShared(long long) -11 stdcall -noname SHMapHandle(long long long long long) -12 stdcall -noname SHCreateMemStream(ptr long) -13 stdcall -noname RegisterDefaultAcceptHeaders(ptr ptr) -14 stdcall -noname GetAcceptLanguagesA(ptr ptr) -15 stdcall -noname GetAcceptLanguagesW(ptr ptr) -16 stdcall SHCreateThread(ptr ptr long ptr) -17 stdcall -noname SHWriteDataBlockList(ptr ptr) -18 stdcall -noname SHReadDataBlockList(ptr ptr) -19 stdcall -noname SHFreeDataBlockList(ptr) -20 stdcall -noname SHAddDataBlock(ptr ptr) -21 stdcall -noname SHRemoveDataBlock(ptr long) -22 stdcall -noname SHFindDataBlock(ptr long) -23 stdcall -noname SHStringFromGUIDA(ptr ptr long) -24 stdcall -noname SHStringFromGUIDW(ptr ptr long) -25 stdcall -noname IsCharAlphaWrapW(long) -26 stdcall -noname IsCharUpperWrapW(long) -27 stdcall -noname IsCharLowerWrapW(long) -28 stdcall -noname IsCharAlphaNumericWrapW(long) -29 stdcall -noname IsCharSpaceW(long) -30 stdcall -noname IsCharBlankW(long) -31 stdcall -noname IsCharPunctW(long) -32 stdcall -noname IsCharCntrlW(ptr) -33 stdcall -noname IsCharDigitW(long) -34 stdcall -noname IsCharXDigitW(long) -35 stdcall -noname GetStringType3ExW(ptr long ptr) -36 stdcall -noname AppendMenuWrapW(long long long wstr) -37 stdcall @(ptr long long long long) user32.CallWindowProcW -38 stdcall @(wstr) user32.CharLowerW -39 stdcall @(wstr long) user32.CharLowerBuffW -40 stdcall @(wstr) user32.CharNextW -41 stdcall @(wstr wstr) user32.CharPrevW -42 stdcall @(wstr) user32.CharToOemW -43 stdcall @(wstr) user32.CharUpperW -44 stdcall @(wstr long) user32.CharUpperBuffW -45 stdcall @(long long wstr long wstr long) kernel32.CompareStringW -46 stdcall @(long ptr long) user32.CopyAcceleratorTableW -47 stdcall @(ptr long) user32.CreateAcceleratorTableW -48 stdcall @(wstr wstr wstr ptr) gdi32.CreateDCW -49 stdcall @(long ptr long ptr long) user32.CreateDialogParamA -50 stdcall @(wstr ptr) kernel32.CreateDirectoryW -51 stdcall @(ptr long long wstr) kernel32.CreateEventW -52 stdcall @(wstr long long ptr long long long) kernel32.CreateFileW -53 stdcall @(ptr) gdi32.CreateFontIndirectW -54 stdcall @(wstr wstr wstr ptr) gdi32.CreateICW -55 stdcall @(long wstr wstr long long long long long long long long ptr) user32.CreateWindowExW -56 stdcall @(long long long long) user32.DefWindowProcW -57 stdcall @(wstr) kernel32.DeleteFileW -58 stdcall @(long ptr long ptr long) user32.DialogBoxIndirectParamW -59 stdcall @(long wstr long ptr long) user32.DialogBoxParamW -60 stdcall @(ptr) user32.DispatchMessageW -61 stdcall @(long wstr long ptr long) user32.DrawTextW -62 stdcall @(long wstr ptr long) gdi32.EnumFontFamiliesW -63 stdcall @(long ptr ptr long long) gdi32.EnumFontFamiliesExW -64 stdcall @(long wstr ptr long) kernel32.EnumResourceNamesW -65 stdcall @(wstr ptr) kernel32.FindFirstFileW -66 stdcall @(long wstr wstr) kernel32.FindResourceW -67 stdcall @(wstr wstr) user32.FindWindowW -68 stdcall @(long ptr long long ptr long ptr) kernel32.FormatMessageW -69 stdcall @(long wstr ptr) user32.GetClassInfoW -70 stdcall @(long long) user32.GetClassLongW -71 stdcall @(long ptr long) user32.GetClassNameW -72 stdcall @(long ptr long) user32.GetClipboardFormatNameW -73 stdcall @(long ptr) kernel32.GetCurrentDirectoryW -74 stdcall -noname GetDlgItemTextWrapW(long long wstr long) -75 stdcall @(wstr) kernel32.GetFileAttributesW -76 stdcall @(wstr long ptr ptr) kernel32.GetFullPathNameW -77 stdcall @(long long ptr long) kernel32.GetLocaleInfoW -78 stdcall @(long long ptr long long) user32.GetMenuStringW -79 stdcall @(ptr long long long) user32.GetMessageW -80 stdcall @(long ptr long) kernel32.GetModuleFileNameW -81 stdcall @(ptr long) kernel32.GetSystemDirectoryW -82 stdcall @(wstr wstr wstr long ptr ptr) kernel32.SearchPathW -83 stdcall @(wstr) kernel32.GetModuleHandleW -84 stdcall @(long long ptr) gdi32.GetObjectW -85 stdcall @(wstr wstr long wstr) kernel32.GetPrivateProfileIntW -86 stdcall @(wstr wstr wstr ptr long) kernel32.GetProfileStringW -87 stdcall @(long wstr) user32.GetPropW -88 stdcall @(long long wstr long ptr) kernel32.GetStringTypeExW -89 stdcall @(wstr wstr long ptr) kernel32.GetTempFileNameW -90 stdcall @(long ptr) kernel32.GetTempPathW -91 stdcall @(long wstr long ptr) gdi32.GetTextExtentPoint32W -92 stdcall @(long long ptr) gdi32.GetTextFaceW -93 stdcall @(long ptr) gdi32.GetTextMetricsW -94 stdcall @(long long) user32.GetWindowLongW -95 stdcall @(long ptr long) user32.GetWindowTextW -96 stdcall @(long) user32.GetWindowTextLengthW -97 stdcall @(ptr long) kernel32.GetWindowsDirectoryW -98 stdcall @(long long long long ptr) user32.InsertMenuW -99 stdcall @(long ptr) user32.IsDialogMessageW -100 stdcall @(long wstr) user32.LoadAcceleratorsW -101 stdcall @(long wstr) user32.LoadBitmapW -102 stdcall @(long wstr) user32.LoadCursorW -103 stdcall @(long wstr) user32.LoadIconW -104 stdcall @(long wstr long long long long) user32.LoadImageW -105 stdcall @(wstr long long) kernel32.LoadLibraryExW -106 stdcall @(long wstr) user32.LoadMenuW -107 stdcall @(long long ptr long) user32.LoadStringW -108 stdcall @(ptr) user32.MessageBoxIndirectW -109 stdcall @(long long long long ptr) user32.ModifyMenuW -110 stdcall @(long long long long) gdi32.GetCharWidth32W -111 stdcall @(long wstr long long ptr long) gdi32.GetCharacterPlacementW -112 stdcall @(wstr wstr long) kernel32.CopyFileW -113 stdcall @(wstr wstr) kernel32.MoveFileW -114 stdcall @(ptr ptr) user32.OemToCharW -115 stdcall @(wstr) kernel32.OutputDebugStringW -116 stdcall @(ptr long long long long) user32.PeekMessageW -117 stdcall @(long long long long) user32.PostMessageW -118 stdcall @(long long long long) user32.PostThreadMessageW -119 stdcall @(long wstr ptr) advapi32.RegCreateKeyW -120 stdcall @(long wstr long ptr long long ptr ptr ptr) advapi32.RegCreateKeyExW -121 stdcall @(long wstr) advapi32.RegDeleteKeyW -122 stdcall @(long long ptr long) advapi32.RegEnumKeyW -123 stdcall @(long long ptr ptr ptr ptr ptr ptr) advapi32.RegEnumKeyExW -124 stdcall @(long wstr ptr) advapi32.RegOpenKeyW -125 stdcall @(long wstr long long ptr) advapi32.RegOpenKeyExW -126 stdcall @(long ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) advapi32.RegQueryInfoKeyW -127 stdcall @(long wstr ptr ptr) advapi32.RegQueryValueW -128 stdcall @(long wstr ptr ptr ptr ptr) advapi32.RegQueryValueExW -129 stdcall @(long wstr long ptr long) advapi32.RegSetValueW -130 stdcall @(long wstr long long ptr long) advapi32.RegSetValueExW -131 stdcall @(ptr) user32.RegisterClassW -132 stdcall @(wstr) user32.RegisterClipboardFormatW -133 stdcall @(wstr) user32.RegisterWindowMessageW -134 stdcall @(long wstr) user32.RemovePropW -135 stdcall @(long long long long long) user32.SendDlgItemMessageW -136 stdcall @(long long long long) user32.SendMessageW -137 stdcall @(wstr) kernel32.SetCurrentDirectoryW -138 stdcall -noname SetDlgItemTextWrapW(long long wstr) -139 stdcall @(long long long ptr) user32.SetMenuItemInfoW -140 stdcall @(long wstr long) user32.SetPropW -141 stdcall @(long long long) user32.SetWindowLongW -142 stdcall @(long long long long) user32.SetWindowsHookExW -143 stdcall @(long wstr) user32.SetWindowTextW -144 stdcall @(long ptr) gdi32.StartDocW -145 stdcall @(long long ptr long) user32.SystemParametersInfoW -146 stdcall @(long long ptr) user32.TranslateAcceleratorW -147 stdcall @(wstr long) user32.UnregisterClassW -148 stdcall @(long) user32.VkKeyScanW -149 stdcall @(long wstr long long) user32.WinHelpW -150 stdcall @(ptr wstr ptr) user32.wvsprintfW -151 stdcall -noname StrCmpNCA(str ptr long) -152 stdcall -noname StrCmpNCW(wstr wstr long) -153 stdcall -noname StrCmpNICA(long long long) -154 stdcall -noname StrCmpNICW(wstr wstr long) -155 stdcall -noname StrCmpCA(str str) -156 stdcall -noname StrCmpCW(wstr wstr) -157 stdcall -noname StrCmpICA(str str) -158 stdcall -noname StrCmpICW(wstr wstr) -159 stdcall @(long long wstr long wstr long) kernel32.CompareStringW -160 stdcall -noname SHAboutInfoA(ptr long) -161 stdcall -noname SHAboutInfoW(ptr long) -162 stdcall -noname SHTruncateString(str long) -163 stdcall -noname IUnknown_QueryStatus(ptr ptr long ptr ptr) -164 stdcall -noname IUnknown_Exec(ptr ptr long long ptr ptr) -165 stdcall -noname SHSetWindowBits(long long long long) -166 stdcall -noname SHIsEmptyStream(ptr) -167 stdcall -noname SHSetParentHwnd(long ptr) -168 stdcall -noname ConnectToConnectionPoint(ptr ptr long ptr ptr ptr) -169 stdcall -noname IUnknown_AtomicRelease(long) -170 stdcall -noname PathSkipLeadingSlashesA(str) -171 stdcall -noname SHIsSameObject(ptr ptr) -172 stdcall -noname IUnknown_GetWindow(ptr ptr) -173 stdcall -noname IUnknown_SetOwner(ptr ptr) -174 stdcall -noname IUnknown_SetSite(ptr ptr) -175 stdcall -noname IUnknown_GetClassID(ptr ptr) -176 stdcall -noname IUnknown_QueryService(ptr ptr ptr ptr) -177 stdcall -noname SHLoadMenuPopup(ptr wstr) -178 stdcall -noname SHPropagateMessage(ptr long long long long) -179 stdcall -noname SHMenuIndexFromID(long long) -180 stdcall -noname SHRemoveAllSubMenus(long) -181 stdcall -noname SHEnableMenuItem(long long long) -182 stdcall -noname SHCheckMenuItem(long long long) -183 stdcall -noname SHRegisterClassA(ptr) -184 stdcall @(ptr ptr long) SHLWAPI_184 -185 stdcall -noname SHMessageBoxCheckA(ptr str str long long str) -186 stdcall -noname SHSimulateDrop(ptr ptr long ptr ptr) -187 stdcall -noname SHLoadFromPropertyBag(ptr ptr) -188 stub -noname IUnknown_TranslateAcceleratorOCS -189 stdcall -noname IUnknown_OnFocusOCS(ptr ptr) -190 stub -noname IUnknown_HandleIRestrict -191 stdcall -noname SHMessageBoxCheckW(ptr wstr wstr long long wstr) -192 stdcall -noname SHGetMenuFromID(ptr long) -193 stdcall -noname SHGetCurColorRes() -194 stdcall -noname SHWaitForSendMessageThread(ptr long) -195 stub -noname SHIsExpandableFolder -196 stub -noname DnsRecordSetCompare -197 stdcall -noname SHFillRectClr(long ptr long) -198 stdcall -noname SHSearchMapInt(ptr ptr long long) -199 stdcall -noname IUnknown_Set(ptr ptr) -200 stub -noname MayQSForward -201 stdcall -noname MayExecForward(ptr long ptr long long ptr ptr) -202 stdcall -noname IsQSForward(ptr long ptr) -203 stdcall -noname SHStripMneumonicA(str) -204 stdcall -noname SHIsChildOrSelf(long long) -205 stdcall -noname SHGetValueGoodBootA(long str str ptr ptr ptr) -206 stdcall -noname SHGetValueGoodBootW(long wstr wstr ptr ptr ptr) -207 stub -noname IContextMenu_Invoke -208 stdcall -noname FDSA_Initialize(long long ptr ptr long) -209 stdcall -noname FDSA_Destroy(ptr) -210 stdcall -noname FDSA_InsertItem(ptr long ptr) -211 stdcall -noname FDSA_DeleteItem(ptr long) -212 stdcall @(ptr ptr long) SHLWAPI_212 -213 stdcall -noname IStream_Reset(ptr) -214 stdcall -noname IStream_Size(ptr ptr) -215 stdcall -noname SHAnsiToUnicode(str ptr long) -216 stdcall -noname SHAnsiToUnicodeCP(long str ptr long) -217 stdcall -noname SHUnicodeToAnsi(wstr ptr ptr) -218 stdcall -noname SHUnicodeToAnsiCP(long wstr ptr ptr) -219 stdcall -noname QISearch(long long long long) -220 stub -noname SHSetDefaultDialogFont -221 stdcall -noname SHRemoveDefaultDialogFont(ptr) -222 stdcall -noname _SHGlobalCounterCreate(long) -223 stdcall -noname _SHGlobalCounterGetValue(long) -224 stdcall -noname _SHGlobalCounterIncrement(long) -225 stdcall -noname SHStripMneumonicW(wstr) -226 stub -noname ZoneCheckPathA -227 stub -noname ZoneCheckPathW -228 stub -noname ZoneCheckUrlA -229 stub -noname ZoneCheckUrlW -230 stub -noname ZoneCheckUrlExA -231 stub -noname ZoneCheckUrlExW -232 stub -noname ZoneCheckUrlExCacheA -233 stub -noname ZoneCheckUrlExCacheW -234 stub -noname ZoneCheckHost -235 stub -noname ZoneCheckHostEx -236 stdcall -noname SHPinDllOfCLSID(ptr) -237 stdcall -noname SHRegisterClassW(ptr) -238 stdcall -noname SHUnregisterClassesA(ptr ptr long) -239 stdcall -noname SHUnregisterClassesW(ptr ptr long) -240 stdcall -noname SHDefWindowProc(long long long long) -241 stdcall -noname StopWatchMode() -242 stdcall -noname StopWatchFlush() -243 stdcall -noname StopWatchA(long str long long long) -244 stdcall -noname StopWatchW(long wstr long long long) -245 stdcall -noname StopWatch_TimerHandler(ptr ptr long ptr) -246 stub -noname StopWatch_CheckMsg -247 stdcall -noname StopWatch_MarkFrameStart(str) -248 stub -noname StopWatch_MarkSameFrameStart -249 stdcall -noname StopWatch_MarkJavaStop(wstr ptr long) -250 stdcall -noname GetPerfTime() -251 stub -noname StopWatch_DispatchTime -252 stdcall -noname StopWatch_SetMsgLastLocation(long) -253 stub -noname StopWatchExA -254 stub -noname StopWatchExW -255 stub -noname EventTraceHandler -256 stub -noname IUnknown_GetSite -257 stdcall -noname SHCreateWorkerWindowA(long ptr long long ptr long) -258 stub -noname SHRegisterWaitForSingleObject -259 stub -noname SHUnregisterWait -260 stdcall -noname SHQueueUserWorkItem(long long long long long long long) -261 stub -noname SHCreateTimerQueue -262 stub -noname SHDeleteTimerQueue -263 stub -noname SHSetTimerQueueTimer -264 stub -noname SHChangeTimerQueueTimer -265 stub -noname SHCancelTimerQueueTimer -266 stdcall -noname SHRestrictionLookup(long wstr ptr ptr) -267 stdcall -noname SHWeakQueryInterface(long long long long) -268 stdcall -noname SHWeakReleaseInterface(long long) -269 stdcall -noname GUIDFromStringA(str ptr) -270 stdcall -noname GUIDFromStringW(wstr ptr) -271 stdcall -noname SHGetRestriction(wstr wstr wstr) -272 stub -noname SHSetThreadPoolLimits -273 stub -noname SHTerminateThreadPool -274 stub -noname RegisterGlobalHotkeyW -275 stub -noname RegisterGlobalHotkeyA -276 stdcall -noname WhichPlatform() -277 stub -noname SHDialogBox -278 stdcall -noname SHCreateWorkerWindowW(long long long long long long) -279 stdcall -noname SHInvokeDefaultCommand(ptr ptr ptr) -280 stdcall -noname SHRegGetIntW(ptr wstr long) -281 stdcall -noname SHPackDispParamsV(ptr ptr ptr ptr) -282 stdcall -noname SHPackDispParams(ptr ptr ptr ptr) -283 stub -noname IConnectionPoint_InvokeWithCancel -284 stdcall -noname IConnectionPoint_SimpleInvoke(ptr ptr ptr) -285 stdcall -noname IConnectionPoint_OnChanged(ptr long) -286 stub -noname IUnknown_CPContainerInvokeParam -287 stdcall -noname IUnknown_CPContainerOnChanged(ptr long) -288 stub -noname IUnknown_CPContainerInvokeIndirect -289 stdcall -noname PlaySoundWrapW(wstr long long) -290 stub -noname SHMirrorIcon -291 stdcall -noname SHMessageBoxCheckExA(ptr ptr ptr ptr ptr long str) -292 stdcall -noname SHMessageBoxCheckExW(ptr ptr ptr ptr ptr long wstr) -293 stub -noname SHCancelUserWorkItems -294 stdcall -noname SHGetIniStringW(long long long long long) -295 stdcall -noname SHSetIniStringW(wstr ptr wstr wstr) -296 stub -noname CreateURLFileContentsW -297 stub -noname CreateURLFileContentsA -298 stdcall @(wstr wstr wstr wstr) kernel32.WritePrivateProfileStringW -299 stdcall -noname ExtTextOutWrapW(long long long long ptr wstr long ptr) -300 stdcall @(long long long long long long long long long long long long long wstr) gdi32.CreateFontW -301 stdcall @(long wstr long ptr long ptr) user32.DrawTextExW -302 stdcall @(long long long ptr) user32.GetMenuItemInfoW -303 stdcall @(long long long ptr) user32.InsertMenuItemW -304 stdcall @(wstr) gdi32.CreateMetaFileW -305 stdcall @(ptr long wstr) kernel32.CreateMutexW -306 stdcall @(wstr ptr long) kernel32.ExpandEnvironmentStringsW -307 stdcall @(ptr long long wstr) kernel32.CreateSemaphoreW -308 stdcall @(ptr long) kernel32.IsBadStringPtrW -309 stdcall @(wstr) kernel32.LoadLibraryW -310 stdcall @(long long ptr wstr ptr long) kernel32.GetTimeFormatW -311 stdcall @(long long ptr wstr ptr long) kernel32.GetDateFormatW -312 stdcall @(wstr wstr wstr ptr long wstr) kernel32.GetPrivateProfileStringW -313 stdcall -noname SHGetFileInfoWrapW(ptr long ptr long long) -314 stdcall @(ptr) user32.RegisterClassExW -315 stdcall @(long wstr ptr) user32.GetClassInfoExW -316 stub -noname IShellFolder_GetDisplayNameOf -317 stub -noname IShellFolder_ParseDisplayName -318 stdcall -noname DragQueryFileWrapW(long long wstr long) -319 stdcall @(long long wstr wstr) user32.FindWindowExW -320 stdcall -noname RegisterMIMETypeForExtensionA(str str) -321 stdcall -noname RegisterMIMETypeForExtensionW(wstr wstr) -322 stdcall -noname UnregisterMIMETypeForExtensionA(str) -323 stdcall -noname UnregisterMIMETypeForExtensionW(wstr) -324 stdcall -noname RegisterExtensionForMIMETypeA(str str) -325 stdcall -noname RegisterExtensionForMIMETypeW(wstr wstr) -326 stdcall -noname UnregisterExtensionForMIMETypeA(str) -327 stdcall -noname UnregisterExtensionForMIMETypeW(wstr) -328 stdcall -noname GetMIMETypeSubKeyA(str ptr long) -329 stdcall -noname GetMIMETypeSubKeyW(wstr ptr long) -330 stdcall -noname MIME_GetExtensionA(str ptr long) -331 stdcall -noname MIME_GetExtensionW(wstr ptr long) -332 stdcall @(ptr long) user32.CallMsgFilterW -333 stdcall -noname SHBrowseForFolderWrapW(ptr) -334 stdcall -noname SHGetPathFromIDListWrapW(ptr ptr) -335 stdcall -noname ShellExecuteExWrapW(ptr) -336 stdcall -noname SHFileOperationWrapW(ptr) -337 stdcall -noname ExtractIconExWrapW(wstr long ptr ptr long) -338 stdcall @(wstr long) kernel32.SetFileAttributesW -339 stdcall @(long long wstr ptr ptr long) kernel32.GetNumberFormatW -340 stdcall @(long wstr wstr long) user32.MessageBoxW -341 stdcall @(long ptr) kernel32.FindNextFileW -342 stdcall -noname SHInterlockedCompareExchange(ptr long long) -343 stdcall -noname SHRegGetCLSIDKeyA(ptr str long long ptr) -344 stdcall -noname SHRegGetCLSIDKeyW(ptr wstr long long ptr) -345 stdcall -noname SHAnsiToAnsi(str ptr long) -346 stdcall -noname SHUnicodeToUnicode(wstr ptr long) -347 stdcall @(long wstr) advapi32.RegDeleteValueW -348 stub -noname SHGetFileDescriptionW -349 stub -noname SHGetFileDescriptionA -350 stdcall -noname GetFileVersionInfoSizeWrapW(wstr ptr) -351 stdcall -noname GetFileVersionInfoWrapW(wstr ptr long ptr) -352 stdcall -noname VerQueryValueWrapW(ptr wstr ptr ptr) -353 stub -noname SHFormatDateTimeA -354 stub -noname SHFormatDateTimeW -355 stdcall -noname IUnknown_EnableModeless(ptr long) -356 stdcall -noname _CreateAllAccessSecurityAttributes(ptr ptr) -357 stdcall -noname SHGetNewLinkInfoWrapW(wstr wstr wstr long long) -358 stdcall -noname SHDefExtractIconWrapW(wstr long long ptr ptr long) -359 stdcall @(long long wstr) kernel32.OpenEventW -360 stdcall @(wstr) kernel32.RemoveDirectoryW -361 stdcall @(wstr ptr long) kernel32.GetShortPathNameW -362 stdcall @(ptr ptr) advapi32.GetUserNameW -363 stdcall -noname SHInvokeCommand(ptr ptr ptr long) -364 stdcall -noname DoesStringRoundTripA(str ptr long) -365 stdcall -noname DoesStringRoundTripW(wstr ptr long) -366 stdcall @(long long ptr ptr ptr ptr ptr ptr) advapi32.RegEnumValueW -367 stdcall @(wstr wstr ptr long wstr) kernel32.WritePrivateProfileStructW -368 stdcall @(wstr wstr ptr long wstr) kernel32.GetPrivateProfileStructW -369 stdcall @(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW -370 stdcall -noname ExtractIconWrapW(long wstr long) -371 stdcall DdeInitializeWrapW(ptr ptr long long) user32.DdeInitializeW -372 stdcall DdeCreateStringHandleWrapW(long ptr long) user32.DdeCreateStringHandleW -373 stdcall DdeQueryStringWrapW(long ptr wstr long long) user32.DdeQueryStringW -374 stub -noname SHCheckDiskForMediaA -375 stub -noname SHCheckDiskForMediaW -376 stdcall -noname MLGetUILanguage() # kernel32.GetUserDefaultUILanguage -377 stdcall MLLoadLibraryA(str long long) -378 stdcall MLLoadLibraryW(wstr long long) -379 stub -noname Shell_GetCachedImageIndexWrapW -380 stub -noname Shell_GetCachedImageIndexWrapA -381 stub -noname AssocCopyVerbs -382 stub -noname ZoneComputePaneSize -383 stub -noname ZoneConfigureW -384 stub -noname SHRestrictedMessageBox -385 stub -noname SHLoadRawAccelerators -386 stub -noname SHQueryRawAccelerator -387 stub -noname SHQueryRawAcceleratorMsg -388 stub -noname ShellMessageBoxWrapW -389 stdcall -noname GetSaveFileNameWrapW(ptr) -390 stdcall -noname WNetRestoreConnectionWrapW(long wstr) -391 stdcall -noname WNetGetLastErrorWrapW(ptr ptr long ptr long) -392 stdcall EndDialogWrap(ptr ptr) user32.EndDialog -393 stdcall @(long ptr long ptr long) user32.CreateDialogIndirectParamW -394 stdcall @(long ptr long ptr long) user32.CreateDialogIndirectParamA -395 stub -noname MLWinHelpA -396 stub -noname MLHtmlHelpA -397 stub -noname MLWinHelpW -398 stub -noname MLHtmlHelpW -399 stdcall -noname StrCpyNXA(str str long) -400 stdcall -noname StrCpyNXW(wstr wstr long) -401 stdcall -noname PageSetupDlgWrapW(ptr) -402 stdcall -noname PrintDlgWrapW(ptr) -403 stdcall -noname GetOpenFileNameWrapW(ptr) -404 stub -noname IShellFolder_EnumObjects -405 stdcall -noname MLBuildResURLA(str ptr long str ptr long) -406 stdcall -noname MLBuildResURLW(wstr ptr long wstr ptr long) -407 stub -noname AssocMakeProgid -408 stub -noname AssocMakeShell -409 stub -noname AssocMakeApplicationByKeyW -410 stub -noname AssocMakeApplicationByKeyA -411 stub -noname AssocMakeFileExtsToApplicationW -412 stub -noname AssocMakeFileExtsToApplicationA -413 stdcall -noname SHGetMachineInfo(long) -414 stub -noname SHHtmlHelpOnDemandW -415 stub -noname SHHtmlHelpOnDemandA -416 stub -noname SHWinHelpOnDemandW -417 stub -noname SHWinHelpOnDemandA -418 stdcall -noname MLFreeLibrary(long) -419 stdcall -noname SHFlushSFCacheWrap() -420 stub @ # CMemStream::Commit -421 stub -noname SHLoadPersistedDataObject -422 stdcall -noname _SHGlobalCounterCreateNamedA(str long) -423 stdcall -noname _SHGlobalCounterCreateNamedW(wstr long) -424 stdcall -noname _SHGlobalCounterDecrement(long) -425 stub -noname DeleteMenuWrap -426 stub -noname DestroyMenuWrap -427 stub -noname TrackPopupMenuWrap -428 stdcall @(long long long long long ptr) user32.TrackPopupMenuEx -429 stdcall -noname MLIsMLHInstance(long) -430 stdcall -noname MLSetMLHInstance(long long) -431 stdcall -noname MLClearMLHInstance(long) -432 stub -noname SHSendMessageBroadcastA -433 stub -noname SHSendMessageBroadcastW -434 stdcall @(long long long long long long ptr) user32.SendMessageTimeoutW -435 stub -noname CLSIDFromProgIDWrap -436 stdcall -noname CLSIDFromStringWrap(wstr ptr) -437 stdcall -noname IsOS(long) -438 stub -noname SHLoadRegUIStringA -439 stub -noname SHLoadRegUIStringW -440 stdcall -noname SHGetWebFolderFilePathA(str ptr long) -441 stdcall -noname SHGetWebFolderFilePathW(wstr ptr long) -442 stdcall @(wstr ptr long) kernel32.GetEnvironmentVariableW -443 stdcall @(ptr long) kernel32.GetSystemWindowsDirectoryA -444 stdcall @(ptr long) kernel32.GetSystemWindowsDirectoryW -445 stdcall -noname PathFileExistsAndAttributesA(str ptr) -446 stdcall -noname PathFileExistsAndAttributesW(wstr ptr) -447 stub -noname FixSlashesAndColonA -448 stdcall -noname FixSlashesAndColonW(wstr) -449 stub -noname NextPathA -450 stub -noname NextPathW -451 stub -noname CharUpperNoDBCSA -452 stub -noname CharUpperNoDBCSW -453 stub -noname CharLowerNoDBCSA -454 stub -noname CharLowerNoDBCSW -455 stdcall -noname PathIsValidCharA(long long) -456 stdcall -noname PathIsValidCharW(long long) -457 stub -noname GetLongPathNameWrapW -458 stub -noname GetLongPathNameWrapA -459 stdcall SHExpandEnvironmentStringsA(str ptr long) kernel32.ExpandEnvironmentStringsA -460 stdcall SHExpandEnvironmentStringsW(wstr ptr long) kernel32.ExpandEnvironmentStringsW -461 stdcall -noname SHGetAppCompatFlags(long) -462 stub -noname UrlFixupW -463 stub -noname SHExpandEnvironmentStringsForUserA -464 stub -noname SHExpandEnvironmentStringsForUserW -465 stub -noname PathUnExpandEnvStringsForUserA -466 stub -noname PathUnExpandEnvStringsForUserW -467 stub -noname SHRunIndirectRegClientCommand -468 stub -noname RunIndirectRegCommand -469 stub -noname RunRegCommand -470 stub -noname IUnknown_ProfferServiceOld -471 stub -noname SHCreatePropertyBagOnRegKey -472 stub -noname SHCreatePropertyBagOnProfileSelections -473 stub -noname SHGetIniStringUTF7W -474 stub -noname SHSetIniStringUTF7W -475 stub -noname GetShellSecurityDescriptor -476 stub -noname SHGetObjectCompatFlags -477 stub -noname SHCreatePropertyBagOnMemory -478 stub -noname IUnknown_TranslateAcceleratorIO -479 stub -noname IUnknown_UIActivateIO -480 stub -noname UrlCrackW -481 stub -noname IUnknown_HasFocusIO -482 stub -noname SHMessageBoxHelpA -483 stub -noname SHMessageBoxHelpW -484 stub -noname IUnknown_QueryServiceExec -485 stub -noname MapWin32ErrorToSTG -486 stub -noname ModeToCreateFileFlags - -488 stub -noname SHConvertGraphicsFile -489 stub -noname GlobalAddAtomWrapW -490 stub -noname GlobalFindAtomWrapW -491 stdcall -noname SHGetShellKey(long long long) -492 stub -noname PrettifyFileDescriptionW -493 stub -noname SHPropertyBag_ReadType -494 stub -noname SHPropertyBag_ReadStr -495 stub -noname SHPropertyBag_WriteStr -496 stub -noname SHPropertyBag_ReadInt -497 stub -noname SHPropertyBag_WriteInt -498 stub -noname SHPropertyBag_ReadBOOLOld -499 stub -noname SHPropertyBag_WriteBOOL - -505 stub -noname SHPropertyBag_ReadGUID -506 stub -noname SHPropertyBag_WriteGUID -507 stub -noname SHPropertyBag_ReadDWORD -508 stub -noname SHPropertyBag_WriteDWORD -509 stdcall -noname IUnknown_OnFocusChangeIS(ptr ptr long) -510 stub -noname SHLockSharedEx -511 stub -noname PathFileExistsDefExtAndAttributesW -512 stub -noname IStream_ReadPidl -513 stub -noname IStream_WritePidl -514 stub -noname IUnknown_ProfferService - -516 stdcall -noname SKGetValueW(long wstr wstr long long long) -517 stub -noname SKSetValueW -518 stub -noname SKDeleteValueW -519 stub -noname SKAllocValueW -520 stub -noname SHPropertyBag_ReadBSTR -521 stub -noname SHPropertyBag_ReadPOINTL -522 stub -noname SHPropertyBag_WritePOINTL -523 stub -noname SHPropertyBag_ReadRECTL -524 stub -noname SHPropertyBag_WriteRECTL -525 stub -noname SHPropertyBag_ReadPOINTS -526 stub -noname SHPropertyBag_WritePOINTS -527 stub -noname SHPropertyBag_ReadSHORT -528 stub -noname SHPropertyBag_WriteSHORT -529 stub -noname SHPropertyBag_ReadInt -530 stub -noname SHPropertyBag_WriteInt -531 stub -noname SHPropertyBag_ReadStream -532 stub -noname SHPropertyBag_WriteStream -533 stub -noname SHGetPerScreenResName -534 stub -noname SHPropertyBag_ReadBOOL -535 stub -noname SHPropertyBag_Delete -536 stub -noname IUnknown_QueryServicePropertyBag -537 stub -noname SHBoolSystemParametersInfo -538 stub -noname IUnknown_QueryServicePropertyBag -539 stub -noname IUnknown_ShowBrowserBar -540 stub -noname SHInvokeCommandOnContextMenu -541 stub -noname SHInvokeCommandsOnContextMen -542 stdcall -noname GetUIVersion() -543 stub -noname CreateColorSpaceWrapW -544 stub -noname QuerySourceCreateFromKey -545 stub -noname SHForwardContextMenuMsg -546 stub -noname IUnknown_DoContextMenuPopup - -548 stub -noname SHAreIconsEqual -549 stdcall -noname SHCoCreateInstanceAC(ptr ptr long ptr ptr) -550 stub -noname GetTemplateInfoFroHandle -551 stub -noname IShellFolder_CompareIDs - -@ stdcall AssocCreate(long long long long ptr ptr) -@ stdcall AssocQueryKeyA(long long str ptr ptr) -@ stdcall AssocQueryKeyW(long long wstr ptr ptr) -@ stdcall AssocQueryStringA(long long ptr ptr str ptr) -@ stdcall AssocQueryStringByKeyA(long long ptr ptr str ptr) -@ stdcall AssocQueryStringByKeyW(long long ptr ptr wstr ptr) -@ stdcall AssocQueryStringW(long long ptr ptr wstr ptr) -@ stdcall ChrCmpIA(long long) -@ stdcall ChrCmpIW(long long) -@ stdcall ColorAdjustLuma(long long long) -@ stdcall ColorHLSToRGB(long long long) -@ stdcall ColorRGBToHLS(long ptr ptr ptr) -@ stdcall DllGetVersion (ptr) SHLWAPI_DllGetVersion -@ stdcall GetMenuPosFromID(ptr long) -@ stdcall HashData (ptr long ptr long) -@ stdcall IntlStrEqWorkerA(long str str long) StrIsIntlEqualA -@ stdcall IntlStrEqWorkerW(long wstr wstr long) StrIsIntlEqualW -@ stdcall PathAddBackslashA (str) -@ stdcall PathAddBackslashW (wstr) -@ stdcall PathAddExtensionA (str str) -@ stdcall PathAddExtensionW (wstr wstr) -@ stdcall PathAppendA (str str) -@ stdcall PathAppendW (wstr wstr) -@ stdcall PathBuildRootA (ptr long) -@ stdcall PathBuildRootW (ptr long) -@ stdcall PathCanonicalizeA (ptr str) -@ stdcall PathCanonicalizeW (ptr wstr) -@ stdcall PathCombineA (ptr ptr ptr) -@ stdcall PathCombineW (ptr ptr ptr) -@ stdcall PathCommonPrefixA(str str ptr) -@ stdcall PathCommonPrefixW(wstr wstr ptr) -@ stdcall PathCompactPathA(long str long) -@ stdcall PathCompactPathExA(ptr str long long) -@ stdcall PathCompactPathExW(ptr wstr long long) -@ stdcall PathCompactPathW(long wstr long) -@ stdcall PathCreateFromUrlA(str ptr ptr long) -@ stdcall PathCreateFromUrlW(wstr ptr ptr long) -@ stdcall PathFileExistsA (str) -@ stdcall PathFileExistsW (wstr) -@ stdcall PathFindExtensionA (str) -@ stdcall PathFindExtensionW (wstr) -@ stdcall PathFindFileNameA (str) -@ stdcall PathFindFileNameW (wstr) -@ stdcall PathFindNextComponentA (str) -@ stdcall PathFindNextComponentW (wstr) -@ stdcall PathFindOnPathA (str ptr) -@ stdcall PathFindOnPathW (wstr ptr) -@ stdcall PathGetArgsA (str) -@ stdcall PathGetArgsW (wstr) -@ stdcall PathGetCharTypeA(long) -@ stdcall PathGetCharTypeW(long) -@ stdcall PathGetDriveNumberA (str) -@ stdcall PathGetDriveNumberW (wstr) -@ stdcall PathIsContentTypeA(str str) -@ stdcall PathIsContentTypeW(wstr wstr) -@ stdcall PathIsDirectoryA(str) -@ stdcall PathIsDirectoryW(wstr) -@ stdcall PathIsFileSpecA(str) -@ stdcall PathIsFileSpecW(wstr) -@ stdcall PathIsPrefixA(str str) -@ stdcall PathIsPrefixW(wstr wstr) -@ stdcall PathIsRelativeA (str) -@ stdcall PathIsRelativeW (wstr) -@ stdcall PathIsRootA(str) -@ stdcall PathIsRootW(wstr) -@ stdcall PathIsSameRootA(str str) -@ stdcall PathIsSameRootW(wstr wstr) -@ stdcall PathIsSystemFolderA(str long) -@ stdcall PathIsSystemFolderW(wstr long) -@ stdcall PathIsUNCA (str) -@ stdcall PathIsUNCServerA(str) -@ stdcall PathIsUNCServerShareA(str) -@ stdcall PathIsUNCServerShareW(wstr) -@ stdcall PathIsUNCServerW(wstr) -@ stdcall PathIsUNCW(wstr) -@ stdcall PathIsURLA(str) -@ stdcall PathIsURLW(wstr) -@ stdcall PathMakePrettyA(str) -@ stdcall PathMakePrettyW(wstr) -@ stdcall PathMakeSystemFolderA(str) -@ stdcall PathMakeSystemFolderW(wstr) -@ stdcall PathMatchSpecA (str str) -@ stdcall PathMatchSpecW (wstr wstr) -@ stdcall PathParseIconLocationA (str) -@ stdcall PathParseIconLocationW (wstr) -@ stdcall PathQuoteSpacesA (str) -@ stdcall PathQuoteSpacesW (wstr) -@ stdcall PathRelativePathToA(ptr str long str long) -@ stdcall PathRelativePathToW(ptr str long str long) -@ stdcall PathRemoveArgsA(str) -@ stdcall PathRemoveArgsW(wstr) -@ stdcall PathRemoveBackslashA (str) -@ stdcall PathRemoveBackslashW (wstr) -@ stdcall PathRemoveBlanksA(str) -@ stdcall PathRemoveBlanksW(wstr) -@ stdcall PathRemoveExtensionA(str) -@ stdcall PathRemoveExtensionW(wstr) -@ stdcall PathRemoveFileSpecA (str) -@ stdcall PathRemoveFileSpecW (wstr) -@ stdcall PathRenameExtensionA(str str) -@ stdcall PathRenameExtensionW(wstr wstr) -@ stdcall PathSearchAndQualifyA(str ptr long) -@ stdcall PathSearchAndQualifyW(wstr ptr long) -@ stdcall PathSetDlgItemPathA (long long ptr) -@ stdcall PathSetDlgItemPathW (long long ptr) -@ stdcall PathSkipRootA(str) -@ stdcall PathSkipRootW(wstr) -@ stdcall PathStripPathA(str) -@ stdcall PathStripPathW(wstr) -@ stdcall PathStripToRootA(str) -@ stdcall PathStripToRootW(wstr) -@ stdcall PathUnmakeSystemFolderA(str) -@ stdcall PathUnmakeSystemFolderW(wstr) -@ stdcall PathUnquoteSpacesA (str) -@ stdcall PathUnquoteSpacesW (wstr) -@ stdcall SHCreateShellPalette(long) -@ stdcall SHDeleteEmptyKeyA(long ptr) -@ stdcall SHDeleteEmptyKeyW(long ptr) -@ stdcall SHDeleteKeyA(long str) -@ stdcall SHDeleteKeyW(long wstr) -@ stdcall SHDeleteOrphanKeyA(long str) -@ stdcall SHDeleteOrphanKeyW(long wstr) -@ stdcall SHDeleteValueA(long str str) -@ stdcall SHDeleteValueW(long wstr wstr) -@ stdcall SHEnumKeyExA(long long str ptr) -@ stdcall SHEnumKeyExW(long long wstr ptr) -@ stdcall SHEnumValueA(long long str ptr ptr ptr ptr) -@ stdcall SHEnumValueW(long long wstr ptr ptr ptr ptr) -@ stdcall SHGetInverseCMAP ( ptr long ) -@ stdcall SHGetValueA ( long str str ptr ptr ptr ) -@ stdcall SHGetValueW ( long wstr wstr ptr ptr ptr ) -@ stdcall SHIsLowMemoryMachine(long) -@ stdcall SHOpenRegStreamA(long str str long) -@ stdcall SHOpenRegStreamW(long wstr str long) -@ stdcall SHOpenRegStream2A(long str str long) -@ stdcall SHOpenRegStream2W(long wstr str long) -@ stdcall SHQueryInfoKeyA(long ptr ptr ptr ptr) -@ stdcall SHQueryInfoKeyW(long ptr ptr ptr ptr) -@ stdcall SHQueryValueExA(long str ptr ptr ptr ptr) -@ stdcall SHQueryValueExW(long wstr ptr ptr ptr ptr) -@ stdcall SHRegCloseUSKey(ptr) -@ stdcall SHRegCreateUSKeyA(str long long ptr long) -@ stdcall SHRegCreateUSKeyW(wstr long long ptr long) -@ stdcall SHRegDeleteEmptyUSKeyA(long str long) -@ stdcall SHRegDeleteEmptyUSKeyW(long wstr long) -@ stdcall SHRegDeleteUSValueA(long str long) -@ stdcall SHRegDeleteUSValueW(long wstr long) -@ stdcall SHRegEnumUSKeyA(long long str ptr long) -@ stdcall SHRegEnumUSKeyW(long long wstr ptr long) -@ stdcall SHRegEnumUSValueA(long long ptr ptr ptr ptr ptr long) -@ stdcall SHRegEnumUSValueW(long long ptr ptr ptr ptr ptr long) -@ stdcall SHRegGetBoolUSValueA(str str long long) -@ stdcall SHRegGetBoolUSValueW(wstr wstr long long) -@ stdcall SHRegGetUSValueA ( str str ptr ptr ptr long ptr long ) -@ stdcall SHRegGetUSValueW ( wstr wstr ptr ptr ptr long ptr long ) -@ stdcall SHRegOpenUSKeyA ( str long long long long ) -@ stdcall SHRegOpenUSKeyW ( wstr long long long long ) -@ stdcall SHRegQueryInfoUSKeyA ( long ptr ptr ptr ptr long ) -@ stdcall SHRegQueryInfoUSKeyW ( long ptr ptr ptr ptr long ) -@ stdcall SHRegQueryUSValueA ( long str ptr ptr ptr long ptr long ) -@ stdcall SHRegQueryUSValueW ( long wstr ptr ptr ptr long ptr long ) -@ stdcall SHRegSetUSValueA ( str str long ptr long long) -@ stdcall SHRegSetUSValueW ( wstr wstr long ptr long long) -@ stdcall SHRegWriteUSValueA (long str long ptr long long) -@ stdcall SHRegWriteUSValueW (long str long ptr long long) -@ stdcall SHSetValueA (long str str long ptr long) -@ stdcall SHSetValueW (long wstr wstr long ptr long) -@ stdcall StrCSpnA (str str) -@ stdcall StrCSpnIA (str str) -@ stdcall StrCSpnIW (wstr wstr) -@ stdcall StrCSpnW (wstr wstr) -@ stdcall StrCatBuffA (str str long) -@ stdcall StrCatBuffW (wstr wstr long) -@ stdcall StrCatW (ptr wstr) -@ stdcall StrChrA (str long) -@ stdcall StrChrIA (str long) -@ stdcall StrChrIW (wstr long) -@ stdcall StrChrW (wstr long) -@ stdcall StrCmpIW (wstr wstr) -@ stdcall StrCmpNA (str str long) -@ stdcall StrCmpNIA (str str long) -@ stdcall StrCmpNIW (wstr wstr long) -@ stdcall StrCmpNW (wstr wstr long) -@ stdcall StrCmpW (wstr wstr) -@ stdcall StrCpyNW (wstr wstr long) -@ stdcall StrCpyW (ptr wstr) -@ stdcall StrDupA (str) -@ stdcall StrDupW (wstr) -@ stdcall StrFormatByteSizeA(long ptr long) -@ stdcall StrFormatByteSizeW(long long ptr long) -@ stdcall StrFromTimeIntervalA(ptr long long long) -@ stdcall StrFromTimeIntervalW(ptr long long long) -@ stdcall StrIsIntlEqualA(long str str long) -@ stdcall StrIsIntlEqualW(long wstr wstr long) -@ stdcall StrNCatA(str str long) -@ stdcall StrNCatW(wstr wstr long) -@ stdcall StrPBrkA(str str) -@ stdcall StrPBrkW(wstr wstr) -@ stdcall StrRChrA (str str long) -@ stdcall StrRChrIA (str str long) -@ stdcall StrRChrIW (str str long) -@ stdcall StrRChrW (wstr wstr long) -@ stdcall StrRStrIA (str str str) -@ stdcall StrRStrIW (wstr wstr wstr) -@ stdcall StrSpnA (str str) -@ stdcall StrSpnW (wstr wstr) -@ stdcall StrStrA(str str) -@ stdcall StrStrIA(str str) -@ stdcall StrStrIW(wstr wstr) -@ stdcall StrStrW(wstr wstr) -@ stdcall StrToIntA(str) -@ stdcall StrToIntExA(str long ptr) -@ stdcall StrToIntExW(wstr long ptr) -@ stdcall StrToIntW(wstr) -@ stdcall StrTrimA(str str) -@ stdcall StrTrimW(wstr wstr) -@ stdcall UrlApplySchemeA(str ptr ptr long) -@ stdcall UrlApplySchemeW(wstr ptr ptr long) -@ stdcall UrlCanonicalizeA(str ptr ptr long) -@ stdcall UrlCanonicalizeW(wstr ptr ptr long) -@ stdcall UrlCombineA(str str str ptr long) -@ stdcall UrlCombineW(wstr wstr wstr ptr long) -@ stdcall UrlCompareA(str str long) -@ stdcall UrlCompareW(wstr wstr long) -@ stdcall UrlCreateFromPathA(str ptr ptr long) -@ stdcall UrlCreateFromPathW(wstr ptr ptr long) -@ stdcall UrlEscapeA(str ptr ptr long) -@ stdcall UrlEscapeW(wstr ptr ptr long) -@ stdcall UrlGetLocationA(str) -@ stdcall UrlGetLocationW(wstr) -@ stdcall UrlGetPartA(str ptr ptr long long) -@ stdcall UrlGetPartW(wstr ptr ptr long long) -@ stdcall UrlHashA(str ptr long) -@ stdcall UrlHashW(wstr ptr long) -@ stdcall UrlIsA(str long) -@ stdcall UrlIsNoHistoryA(str) -@ stdcall UrlIsNoHistoryW(wstr) -@ stdcall UrlIsOpaqueA(str) -@ stdcall UrlIsOpaqueW(wstr) -@ stdcall UrlIsW(wstr long) -@ stdcall UrlUnescapeA(str ptr ptr long) -@ stdcall UrlUnescapeW(wstr ptr ptr long) -@ varargs wnsprintfA(ptr long str) -@ varargs wnsprintfW(ptr long wstr) -@ stdcall wvnsprintfA(ptr long str ptr) -@ stdcall wvnsprintfW(ptr long wstr ptr) - - -# exported in later versions -@ stdcall AssocIsDangerous(long) -@ stdcall StrRetToBufA(ptr ptr ptr long) -@ stdcall StrRetToBufW(ptr ptr ptr long) -@ stdcall StrRetToBSTR(ptr ptr ptr) -@ stdcall StrRetToStrA(ptr ptr ptr) -@ stdcall StrRetToStrW(ptr ptr ptr) -@ stdcall SHRegGetPathA(long str str ptr long) -@ stdcall SHRegGetPathW(long wstr wstr ptr long) -@ stdcall PathIsDirectoryEmptyA(str) -@ stdcall PathIsDirectoryEmptyW(wstr) -@ stdcall PathIsNetworkPathA(str) -@ stdcall PathIsNetworkPathW(wstr) -@ stdcall PathIsLFNFileSpecA(str) -@ stdcall PathIsLFNFileSpecW(wstr) -@ stdcall PathFindSuffixArrayA(str ptr long) -@ stdcall PathFindSuffixArrayW(wstr ptr long) -@ stdcall _SHGetInstanceExplorer(ptr) -@ stdcall PathUndecorateA(str) -@ stdcall PathUndecorateW(wstr) -@ stdcall PathUnExpandEnvStringsA(str ptr long) -@ stdcall PathUnExpandEnvStringsW(wstr ptr long) -@ stdcall SHCopyKeyA(long str long long) -@ stdcall SHCopyKeyW(long wstr long long) -@ stdcall SHAutoComplete(ptr long) -@ stdcall SHCreateStreamOnFileA(str long ptr) -@ stdcall SHCreateStreamOnFileW(wstr long ptr) -@ stdcall SHCreateStreamOnFileEx(wstr long long long ptr ptr) -@ stdcall SHCreateStreamWrapper(ptr ptr long ptr) -@ stdcall SHGetThreadRef (ptr) -@ stdcall SHRegDuplicateHKey (long) -@ stdcall SHRegSetPathA(long str str str long) -@ stdcall SHRegSetPathW(long wstr wstr wstr long) -@ stdcall SHRegisterValidateTemplate(wstr long) -@ stdcall SHSetThreadRef (ptr) -@ stdcall SHReleaseThreadRef() -@ stdcall SHSkipJunction(ptr ptr) -@ stdcall SHStrDupA (str ptr) -@ stdcall SHStrDupW (wstr ptr) -@ stdcall StrFormatByteSize64A(long long ptr long) -@ stdcall StrFormatKBSizeA(long long str long) -@ stdcall StrFormatKBSizeW(long long wstr long) -@ stdcall StrCmpLogicalW(wstr wstr) +1 stdcall -noname ParseURLA(str ptr) +2 stdcall -noname ParseURLW(wstr ptr) +3 stdcall -noname PathFileExistsDefExtA(str long) +4 stdcall -noname PathFileExistsDefExtW(wstr long) +5 stdcall -noname PathFindOnPathExA(str ptr long) +6 stdcall -noname PathFindOnPathExW(wstr ptr long) +7 stdcall -noname SHAllocShared(ptr long long) +8 stdcall -noname SHLockShared(long long) +9 stdcall -noname SHUnlockShared(ptr) +10 stdcall -noname SHFreeShared(long long) +11 stdcall -noname SHMapHandle(long long long long long) +12 stdcall -noname SHCreateMemStream(ptr long) +13 stdcall -noname RegisterDefaultAcceptHeaders(ptr ptr) +14 stdcall -noname GetAcceptLanguagesA(ptr ptr) +15 stdcall -noname GetAcceptLanguagesW(ptr ptr) +16 stdcall SHCreateThread(ptr ptr long ptr) +17 stdcall -noname SHWriteDataBlockList(ptr ptr) +18 stdcall -noname SHReadDataBlockList(ptr ptr) +19 stdcall -noname SHFreeDataBlockList(ptr) +20 stdcall -noname SHAddDataBlock(ptr ptr) +21 stdcall -noname SHRemoveDataBlock(ptr long) +22 stdcall -noname SHFindDataBlock(ptr long) +23 stdcall -noname SHStringFromGUIDA(ptr ptr long) +24 stdcall -noname SHStringFromGUIDW(ptr ptr long) +25 stdcall -noname IsCharAlphaWrapW(long) user32.IsCharAlphaW +26 stdcall -noname IsCharUpperWrapW(long) user32.IsCharUpperW +27 stdcall -noname IsCharLowerWrapW(long) user32.IsCharLowerW +28 stdcall -noname IsCharAlphaNumericWrapW(long) user32.IsCharAlphaNumericW +29 stdcall -noname IsCharSpaceW(long) +30 stdcall -noname IsCharBlankW(long) +31 stdcall -noname IsCharPunctW(long) +32 stdcall -noname IsCharCntrlW(ptr) +33 stdcall -noname IsCharDigitW(long) +34 stdcall -noname IsCharXDigitW(long) +35 stdcall -noname GetStringType3ExW(ptr long ptr) +36 stdcall -noname AppendMenuWrapW(long long long wstr) +37 stdcall @(ptr long long long long) user32.CallWindowProcW +38 stdcall @(wstr) user32.CharLowerW +39 stdcall @(wstr long) user32.CharLowerBuffW +40 stdcall @(wstr) user32.CharNextW +41 stdcall @(wstr wstr) user32.CharPrevW +42 stdcall @(wstr) user32.CharToOemW +43 stdcall @(wstr) user32.CharUpperW +44 stdcall @(wstr long) user32.CharUpperBuffW +45 stdcall @(long long wstr long wstr long) kernel32.CompareStringW +46 stdcall @(long ptr long) user32.CopyAcceleratorTableW +47 stdcall @(ptr long) user32.CreateAcceleratorTableW +48 stdcall @(wstr wstr wstr ptr) gdi32.CreateDCW +49 stdcall @(long ptr long ptr long) user32.CreateDialogParamA +50 stdcall @(wstr ptr) kernel32.CreateDirectoryW +51 stdcall @(ptr long long wstr) kernel32.CreateEventW +52 stdcall @(wstr long long ptr long long long) kernel32.CreateFileW +53 stdcall @(ptr) gdi32.CreateFontIndirectW +54 stdcall @(wstr wstr wstr ptr) gdi32.CreateICW +55 stdcall @(long wstr wstr long long long long long long long long ptr) user32.CreateWindowExW +56 stdcall @(long long long long) user32.DefWindowProcW +57 stdcall @(wstr) kernel32.DeleteFileW +58 stdcall @(long ptr long ptr long) user32.DialogBoxIndirectParamW +59 stdcall @(long wstr long ptr long) user32.DialogBoxParamW +60 stdcall @(ptr) user32.DispatchMessageW +61 stdcall @(long wstr long ptr long) user32.DrawTextW +62 stdcall @(long wstr ptr long) gdi32.EnumFontFamiliesW +63 stdcall @(long ptr ptr long long) gdi32.EnumFontFamiliesExW +64 stdcall @(long wstr ptr long) kernel32.EnumResourceNamesW +65 stdcall @(wstr ptr) kernel32.FindFirstFileW +66 stdcall @(long wstr wstr) kernel32.FindResourceW +67 stdcall @(wstr wstr) user32.FindWindowW +68 stdcall @(long ptr long long ptr long ptr) kernel32.FormatMessageW +69 stdcall @(long wstr ptr) user32.GetClassInfoW +70 stdcall @(long long) user32.GetClassLongW +71 stdcall @(long ptr long) user32.GetClassNameW +72 stdcall @(long ptr long) user32.GetClipboardFormatNameW +73 stdcall @(long ptr) kernel32.GetCurrentDirectoryW +74 stdcall -noname GetDlgItemTextWrapW(long long wstr long) +75 stdcall @(wstr) kernel32.GetFileAttributesW +76 stdcall @(wstr long ptr ptr) kernel32.GetFullPathNameW +77 stdcall @(long long ptr long) kernel32.GetLocaleInfoW +78 stdcall @(long long ptr long long) user32.GetMenuStringW +79 stdcall @(ptr long long long) user32.GetMessageW +80 stdcall @(long ptr long) kernel32.GetModuleFileNameW +81 stdcall @(ptr long) kernel32.GetSystemDirectoryW +82 stdcall @(wstr wstr wstr long ptr ptr) kernel32.SearchPathW +83 stdcall @(wstr) kernel32.GetModuleHandleW +84 stdcall @(long long ptr) gdi32.GetObjectW +85 stdcall @(wstr wstr long wstr) kernel32.GetPrivateProfileIntW +86 stdcall @(wstr wstr wstr ptr long) kernel32.GetProfileStringW +87 stdcall @(long wstr) user32.GetPropW +88 stdcall @(long long wstr long ptr) kernel32.GetStringTypeExW +89 stdcall @(wstr wstr long ptr) kernel32.GetTempFileNameW +90 stdcall @(long ptr) kernel32.GetTempPathW +91 stdcall @(long wstr long ptr) gdi32.GetTextExtentPoint32W +92 stdcall @(long long ptr) gdi32.GetTextFaceW +93 stdcall @(long ptr) gdi32.GetTextMetricsW +94 stdcall @(long long) user32.GetWindowLongW +95 stdcall @(long ptr long) user32.GetWindowTextW +96 stdcall @(long) user32.GetWindowTextLengthW +97 stdcall @(ptr long) kernel32.GetWindowsDirectoryW +98 stdcall @(long long long long ptr) user32.InsertMenuW +99 stdcall @(long ptr) user32.IsDialogMessageW +100 stdcall @(long wstr) user32.LoadAcceleratorsW +101 stdcall @(long wstr) user32.LoadBitmapW +102 stdcall @(long wstr) user32.LoadCursorW +103 stdcall @(long wstr) user32.LoadIconW +104 stdcall @(long wstr long long long long) user32.LoadImageW +105 stdcall @(wstr long long) kernel32.LoadLibraryExW +106 stdcall @(long wstr) user32.LoadMenuW +107 stdcall @(long long ptr long) user32.LoadStringW +108 stdcall @(ptr) user32.MessageBoxIndirectW +109 stdcall @(long long long long ptr) user32.ModifyMenuW +110 stdcall @(long long long long) gdi32.GetCharWidth32W +111 stdcall @(long wstr long long ptr long) gdi32.GetCharacterPlacementW +112 stdcall @(wstr wstr long) kernel32.CopyFileW +113 stdcall @(wstr wstr) kernel32.MoveFileW +114 stdcall @(ptr ptr) user32.OemToCharW +115 stdcall @(wstr) kernel32.OutputDebugStringW +116 stdcall @(ptr long long long long) user32.PeekMessageW +117 stdcall @(long long long long) user32.PostMessageW +118 stdcall @(long long long long) user32.PostThreadMessageW +119 stdcall @(long wstr ptr) advapi32.RegCreateKeyW +120 stdcall @(long wstr long ptr long long ptr ptr ptr) advapi32.RegCreateKeyExW +121 stdcall @(long wstr) advapi32.RegDeleteKeyW +122 stdcall @(long long ptr long) advapi32.RegEnumKeyW +123 stdcall @(long long ptr ptr ptr ptr ptr ptr) advapi32.RegEnumKeyExW +124 stdcall @(long wstr ptr) advapi32.RegOpenKeyW +125 stdcall @(long wstr long long ptr) advapi32.RegOpenKeyExW +126 stdcall @(long ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) advapi32.RegQueryInfoKeyW +127 stdcall @(long wstr ptr ptr) advapi32.RegQueryValueW +128 stdcall @(long wstr ptr ptr ptr ptr) advapi32.RegQueryValueExW +129 stdcall @(long wstr long ptr long) advapi32.RegSetValueW +130 stdcall @(long wstr long long ptr long) advapi32.RegSetValueExW +131 stdcall @(ptr) user32.RegisterClassW +132 stdcall @(wstr) user32.RegisterClipboardFormatW +133 stdcall @(wstr) user32.RegisterWindowMessageW +134 stdcall @(long wstr) user32.RemovePropW +135 stdcall @(long long long long long) user32.SendDlgItemMessageW +136 stdcall @(long long long long) user32.SendMessageW +137 stdcall @(wstr) kernel32.SetCurrentDirectoryW +138 stdcall -noname SetDlgItemTextWrapW(long long wstr) +139 stdcall @(long long long ptr) user32.SetMenuItemInfoW +140 stdcall @(long wstr long) user32.SetPropW +141 stdcall @(long long long) user32.SetWindowLongW +142 stdcall @(long long long long) user32.SetWindowsHookExW +143 stdcall @(long wstr) user32.SetWindowTextW +144 stdcall @(long ptr) gdi32.StartDocW +145 stdcall @(long long ptr long) user32.SystemParametersInfoW +146 stdcall @(long long ptr) user32.TranslateAcceleratorW +147 stdcall @(wstr long) user32.UnregisterClassW +148 stdcall @(long) user32.VkKeyScanW +149 stdcall @(long wstr long long) user32.WinHelpW +150 stdcall @(ptr wstr ptr) user32.wvsprintfW +151 stdcall -noname StrCmpNCA(str ptr long) +152 stdcall -noname StrCmpNCW(wstr wstr long) +153 stdcall -noname StrCmpNICA(long long long) +154 stdcall -noname StrCmpNICW(wstr wstr long) +155 stdcall -noname StrCmpCA(str str) +156 stdcall -noname StrCmpCW(wstr wstr) +157 stdcall -noname StrCmpICA(str str) +158 stdcall -noname StrCmpICW(wstr wstr) +159 stdcall @(long long wstr long wstr long) kernel32.CompareStringW +160 stdcall -noname SHAboutInfoA(ptr long) +161 stdcall -noname SHAboutInfoW(ptr long) +162 stdcall -noname SHTruncateString(str long) +163 stdcall -noname IUnknown_QueryStatus(ptr ptr long ptr ptr) +164 stdcall -noname IUnknown_Exec(ptr ptr long long ptr ptr) +165 stdcall -noname SHSetWindowBits(long long long long) +166 stdcall -noname SHIsEmptyStream(ptr) +167 stdcall -noname SHSetParentHwnd(long ptr) +168 stdcall -noname ConnectToConnectionPoint(ptr ptr long ptr ptr ptr) +169 stdcall -noname IUnknown_AtomicRelease(long) +170 stdcall -noname PathSkipLeadingSlashesA(str) +171 stdcall -noname SHIsSameObject(ptr ptr) +172 stdcall -noname IUnknown_GetWindow(ptr ptr) +173 stdcall -noname IUnknown_SetOwner(ptr ptr) +174 stdcall -noname IUnknown_SetSite(ptr ptr) +175 stdcall -noname IUnknown_GetClassID(ptr ptr) +176 stdcall -noname IUnknown_QueryService(ptr ptr ptr ptr) +177 stdcall -noname SHLoadMenuPopup(ptr wstr) +178 stdcall -noname SHPropagateMessage(ptr long long long long) +179 stdcall -noname SHMenuIndexFromID(long long) +180 stdcall -noname SHRemoveAllSubMenus(long) +181 stdcall -noname SHEnableMenuItem(long long long) +182 stdcall -noname SHCheckMenuItem(long long long) +183 stdcall -noname SHRegisterClassA(ptr) +184 stdcall @(ptr ptr long) SHLWAPI_184 +185 stdcall -noname SHMessageBoxCheckA(ptr str str long long str) +186 stdcall -noname SHSimulateDrop(ptr ptr long ptr ptr) +187 stdcall -noname SHLoadFromPropertyBag(ptr ptr) +188 stub -noname IUnknown_TranslateAcceleratorOCS +189 stdcall -noname IUnknown_OnFocusOCS(ptr ptr) +190 stub -noname IUnknown_HandleIRestrict +191 stdcall -noname SHMessageBoxCheckW(ptr wstr wstr long long wstr) +192 stdcall -noname SHGetMenuFromID(ptr long) +193 stdcall -noname SHGetCurColorRes() +194 stdcall -noname SHWaitForSendMessageThread(ptr long) +195 stub -noname SHIsExpandableFolder +196 stub -noname DnsRecordSetCompare +197 stdcall -noname SHFillRectClr(long ptr long) +198 stdcall -noname SHSearchMapInt(ptr ptr long long) +199 stdcall -noname IUnknown_Set(ptr ptr) +200 stub -noname MayQSForward +201 stdcall -noname MayExecForward(ptr long ptr long long ptr ptr) +202 stdcall -noname IsQSForward(ptr long ptr) +203 stdcall -noname SHStripMneumonicA(str) +204 stdcall -noname SHIsChildOrSelf(long long) +205 stdcall -noname SHGetValueGoodBootA(long str str ptr ptr ptr) +206 stdcall -noname SHGetValueGoodBootW(long wstr wstr ptr ptr ptr) +207 stub -noname IContextMenu_Invoke +208 stdcall -noname FDSA_Initialize(long long ptr ptr long) +209 stdcall -noname FDSA_Destroy(ptr) +210 stdcall -noname FDSA_InsertItem(ptr long ptr) +211 stdcall -noname FDSA_DeleteItem(ptr long) +212 stdcall @(ptr ptr long) SHLWAPI_212 +213 stdcall -noname IStream_Reset(ptr) +214 stdcall -noname IStream_Size(ptr ptr) +215 stdcall -noname SHAnsiToUnicode(str ptr long) +216 stdcall -noname SHAnsiToUnicodeCP(long str ptr long) +217 stdcall -noname SHUnicodeToAnsi(wstr ptr ptr) +218 stdcall -noname SHUnicodeToAnsiCP(long wstr ptr ptr) +219 stdcall -noname QISearch(long long long long) +220 stub -noname SHSetDefaultDialogFont +221 stdcall -noname SHRemoveDefaultDialogFont(ptr) +222 stdcall -noname _SHGlobalCounterCreate(long) +223 stdcall -noname _SHGlobalCounterGetValue(long) +224 stdcall -noname _SHGlobalCounterIncrement(long) +225 stdcall -noname SHStripMneumonicW(wstr) +226 stub -noname ZoneCheckPathA +227 stub -noname ZoneCheckPathW +228 stub -noname ZoneCheckUrlA +229 stub -noname ZoneCheckUrlW +230 stub -noname ZoneCheckUrlExA +231 stub -noname ZoneCheckUrlExW +232 stub -noname ZoneCheckUrlExCacheA +233 stub -noname ZoneCheckUrlExCacheW +234 stub -noname ZoneCheckHost +235 stub -noname ZoneCheckHostEx +236 stdcall -noname SHPinDllOfCLSID(ptr) +237 stdcall -noname SHRegisterClassW(ptr) +238 stdcall -noname SHUnregisterClassesA(ptr ptr long) +239 stdcall -noname SHUnregisterClassesW(ptr ptr long) +240 stdcall -noname SHDefWindowProc(long long long long) +241 stdcall -noname StopWatchMode() +242 stdcall -noname StopWatchFlush() +243 stdcall -noname StopWatchA(long str long long long) +244 stdcall -noname StopWatchW(long wstr long long long) +245 stdcall -noname StopWatch_TimerHandler(ptr ptr long ptr) +246 stub -noname StopWatch_CheckMsg +247 stdcall -noname StopWatch_MarkFrameStart(str) +248 stub -noname StopWatch_MarkSameFrameStart +249 stdcall -noname StopWatch_MarkJavaStop(wstr ptr long) +250 stdcall -noname GetPerfTime() +251 stub -noname StopWatch_DispatchTime +252 stdcall -noname StopWatch_SetMsgLastLocation(long) +253 stub -noname StopWatchExA +254 stub -noname StopWatchExW +255 stub -noname EventTraceHandler +256 stub -noname IUnknown_GetSite +257 stdcall -noname SHCreateWorkerWindowA(long ptr long long ptr long) +258 stub -noname SHRegisterWaitForSingleObject +259 stub -noname SHUnregisterWait +260 stdcall -noname SHQueueUserWorkItem(long long long long long long long) +261 stub -noname SHCreateTimerQueue +262 stub -noname SHDeleteTimerQueue +263 stub -noname SHSetTimerQueueTimer +264 stub -noname SHChangeTimerQueueTimer +265 stub -noname SHCancelTimerQueueTimer +266 stdcall -noname SHRestrictionLookup(long wstr ptr ptr) +267 stdcall -noname SHWeakQueryInterface(long long long long) +268 stdcall -noname SHWeakReleaseInterface(long long) +269 stdcall -noname GUIDFromStringA(str ptr) +270 stdcall -noname GUIDFromStringW(wstr ptr) +271 stdcall -noname SHGetRestriction(wstr wstr wstr) +272 stub -noname SHSetThreadPoolLimits +273 stub -noname SHTerminateThreadPool +274 stub -noname RegisterGlobalHotkeyW +275 stub -noname RegisterGlobalHotkeyA +276 stdcall -noname WhichPlatform() +277 stub -noname SHDialogBox +278 stdcall -noname SHCreateWorkerWindowW(long long long long long long) +279 stdcall -noname SHInvokeDefaultCommand(ptr ptr ptr) +280 stdcall -noname SHRegGetIntW(ptr wstr long) +281 stdcall -noname SHPackDispParamsV(ptr ptr ptr ptr) +282 stdcall -noname SHPackDispParams(ptr ptr ptr ptr) +283 stub -noname IConnectionPoint_InvokeWithCancel +284 stdcall -noname IConnectionPoint_SimpleInvoke(ptr ptr ptr) +285 stdcall -noname IConnectionPoint_OnChanged(ptr long) +286 stub -noname IUnknown_CPContainerInvokeParam +287 stdcall -noname IUnknown_CPContainerOnChanged(ptr long) +288 stub -noname IUnknown_CPContainerInvokeIndirect +289 stdcall -noname PlaySoundWrapW(wstr long long) +290 stub -noname SHMirrorIcon +291 stdcall -noname SHMessageBoxCheckExA(ptr ptr ptr ptr ptr long str) +292 stdcall -noname SHMessageBoxCheckExW(ptr ptr ptr ptr ptr long wstr) +293 stub -noname SHCancelUserWorkItems +294 stdcall -noname SHGetIniStringW(long long long long long) +295 stdcall -noname SHSetIniStringW(wstr ptr wstr wstr) +296 stub -noname CreateURLFileContentsW +297 stub -noname CreateURLFileContentsA +298 stdcall @(wstr wstr wstr wstr) kernel32.WritePrivateProfileStringW +299 stdcall -noname ExtTextOutWrapW(long long long long ptr wstr long ptr) +300 stdcall @(long long long long long long long long long long long long long wstr) gdi32.CreateFontW +301 stdcall @(long wstr long ptr long ptr) user32.DrawTextExW +302 stdcall @(long long long ptr) user32.GetMenuItemInfoW +303 stdcall @(long long long ptr) user32.InsertMenuItemW +304 stdcall @(wstr) gdi32.CreateMetaFileW +305 stdcall @(ptr long wstr) kernel32.CreateMutexW +306 stdcall @(wstr ptr long) kernel32.ExpandEnvironmentStringsW +307 stdcall @(ptr long long wstr) kernel32.CreateSemaphoreW +308 stdcall @(ptr long) kernel32.IsBadStringPtrW +309 stdcall @(wstr) kernel32.LoadLibraryW +310 stdcall @(long long ptr wstr ptr long) kernel32.GetTimeFormatW +311 stdcall @(long long ptr wstr ptr long) kernel32.GetDateFormatW +312 stdcall @(wstr wstr wstr ptr long wstr) kernel32.GetPrivateProfileStringW +313 stdcall -noname SHGetFileInfoWrapW(ptr long ptr long long) +314 stdcall @(ptr) user32.RegisterClassExW +315 stdcall @(long wstr ptr) user32.GetClassInfoExW +316 stub -noname IShellFolder_GetDisplayNameOf +317 stub -noname IShellFolder_ParseDisplayName +318 stdcall -noname DragQueryFileWrapW(long long wstr long) +319 stdcall @(long long wstr wstr) user32.FindWindowExW +320 stdcall -noname RegisterMIMETypeForExtensionA(str str) +321 stdcall -noname RegisterMIMETypeForExtensionW(wstr wstr) +322 stdcall -noname UnregisterMIMETypeForExtensionA(str) +323 stdcall -noname UnregisterMIMETypeForExtensionW(wstr) +324 stdcall -noname RegisterExtensionForMIMETypeA(str str) +325 stdcall -noname RegisterExtensionForMIMETypeW(wstr wstr) +326 stdcall -noname UnregisterExtensionForMIMETypeA(str) +327 stdcall -noname UnregisterExtensionForMIMETypeW(wstr) +328 stdcall -noname GetMIMETypeSubKeyA(str ptr long) +329 stdcall -noname GetMIMETypeSubKeyW(wstr ptr long) +330 stdcall -noname MIME_GetExtensionA(str ptr long) +331 stdcall -noname MIME_GetExtensionW(wstr ptr long) +332 stdcall @(ptr long) user32.CallMsgFilterW +333 stdcall -noname SHBrowseForFolderWrapW(ptr) +334 stdcall -noname SHGetPathFromIDListWrapW(ptr ptr) +335 stdcall -noname ShellExecuteExWrapW(ptr) +336 stdcall -noname SHFileOperationWrapW(ptr) +337 stdcall -noname ExtractIconExWrapW(wstr long ptr ptr long) +338 stdcall @(wstr long) kernel32.SetFileAttributesW +339 stdcall @(long long wstr ptr ptr long) kernel32.GetNumberFormatW +340 stdcall @(long wstr wstr long) user32.MessageBoxW +341 stdcall @(long ptr) kernel32.FindNextFileW +342 stdcall -noname SHInterlockedCompareExchange(ptr long long) +343 stdcall -noname SHRegGetCLSIDKeyA(ptr str long long ptr) +344 stdcall -noname SHRegGetCLSIDKeyW(ptr wstr long long ptr) +345 stdcall -noname SHAnsiToAnsi(str ptr long) +346 stdcall -noname SHUnicodeToUnicode(wstr ptr long) +347 stdcall @(long wstr) advapi32.RegDeleteValueW +348 stub -noname SHGetFileDescriptionW +349 stub -noname SHGetFileDescriptionA +350 stdcall -noname GetFileVersionInfoSizeWrapW(wstr ptr) +351 stdcall -noname GetFileVersionInfoWrapW(wstr ptr long ptr) +352 stdcall -noname VerQueryValueWrapW(ptr wstr ptr ptr) +353 stub -noname SHFormatDateTimeA +354 stub -noname SHFormatDateTimeW +355 stdcall -noname IUnknown_EnableModeless(ptr long) +356 stdcall -noname _CreateAllAccessSecurityAttributes(ptr ptr) +357 stdcall -noname SHGetNewLinkInfoWrapW(wstr wstr wstr long long) +358 stdcall -noname SHDefExtractIconWrapW(wstr long long ptr ptr long) +359 stdcall @(long long wstr) kernel32.OpenEventW +360 stdcall @(wstr) kernel32.RemoveDirectoryW +361 stdcall @(wstr ptr long) kernel32.GetShortPathNameW +362 stdcall @(ptr ptr) advapi32.GetUserNameW +363 stdcall -noname SHInvokeCommand(ptr ptr ptr long) +364 stdcall -noname DoesStringRoundTripA(str ptr long) +365 stdcall -noname DoesStringRoundTripW(wstr ptr long) +366 stdcall @(long long ptr ptr ptr ptr ptr ptr) advapi32.RegEnumValueW +367 stdcall @(wstr wstr ptr long wstr) kernel32.WritePrivateProfileStructW +368 stdcall @(wstr wstr ptr long wstr) kernel32.GetPrivateProfileStructW +369 stdcall @(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW +370 stdcall -noname ExtractIconWrapW(long wstr long) +371 stdcall DdeInitializeWrapW(ptr ptr long long) user32.DdeInitializeW +372 stdcall DdeCreateStringHandleWrapW(long ptr long) user32.DdeCreateStringHandleW +373 stdcall DdeQueryStringWrapW(long ptr wstr long long) user32.DdeQueryStringW +374 stub -noname SHCheckDiskForMediaA +375 stub -noname SHCheckDiskForMediaW +376 stdcall -noname MLGetUILanguage() # kernel32.GetUserDefaultUILanguage +377 stdcall MLLoadLibraryA(str long long) +378 stdcall MLLoadLibraryW(wstr long long) +379 stub -noname Shell_GetCachedImageIndexWrapW +380 stub -noname Shell_GetCachedImageIndexWrapA +381 stub -noname AssocCopyVerbs +382 stub -noname ZoneComputePaneSize +383 stub -noname ZoneConfigureW +384 stub -noname SHRestrictedMessageBox +385 stub -noname SHLoadRawAccelerators +386 stub -noname SHQueryRawAccelerator +387 stub -noname SHQueryRawAcceleratorMsg +388 stub -noname ShellMessageBoxWrapW +389 stdcall -noname GetSaveFileNameWrapW(ptr) +390 stdcall -noname WNetRestoreConnectionWrapW(long wstr) +391 stdcall -noname WNetGetLastErrorWrapW(ptr ptr long ptr long) +392 stdcall EndDialogWrap(ptr ptr) user32.EndDialog +393 stdcall @(long ptr long ptr long) user32.CreateDialogIndirectParamW +394 stdcall @(long ptr long ptr long) user32.CreateDialogIndirectParamA +395 stub -noname MLWinHelpA +396 stub -noname MLHtmlHelpA +397 stub -noname MLWinHelpW +398 stub -noname MLHtmlHelpW +399 stdcall -noname StrCpyNXA(str str long) +400 stdcall -noname StrCpyNXW(wstr wstr long) +401 stdcall -noname PageSetupDlgWrapW(ptr) +402 stdcall -noname PrintDlgWrapW(ptr) +403 stdcall -noname GetOpenFileNameWrapW(ptr) +404 stub -noname IShellFolder_EnumObjects +405 stdcall -noname MLBuildResURLA(str ptr long str ptr long) +406 stdcall -noname MLBuildResURLW(wstr ptr long wstr ptr long) +407 stub -noname AssocMakeProgid +408 stub -noname AssocMakeShell +409 stub -noname AssocMakeApplicationByKeyW +410 stub -noname AssocMakeApplicationByKeyA +411 stub -noname AssocMakeFileExtsToApplicationW +412 stub -noname AssocMakeFileExtsToApplicationA +413 stdcall -noname SHGetMachineInfo(long) +414 stub -noname SHHtmlHelpOnDemandW +415 stub -noname SHHtmlHelpOnDemandA +416 stub -noname SHWinHelpOnDemandW +417 stub -noname SHWinHelpOnDemandA +418 stdcall -noname MLFreeLibrary(long) +419 stdcall -noname SHFlushSFCacheWrap() +420 stub @ # CMemStream::Commit +421 stub -noname SHLoadPersistedDataObject +422 stdcall -noname _SHGlobalCounterCreateNamedA(str long) +423 stdcall -noname _SHGlobalCounterCreateNamedW(wstr long) +424 stdcall -noname _SHGlobalCounterDecrement(long) +425 stub -noname DeleteMenuWrap +426 stub -noname DestroyMenuWrap +427 stub -noname TrackPopupMenuWrap +428 stdcall @(long long long long long ptr) user32.TrackPopupMenuEx +429 stdcall -noname MLIsMLHInstance(long) +430 stdcall -noname MLSetMLHInstance(long long) +431 stdcall -noname MLClearMLHInstance(long) +432 stub -noname SHSendMessageBroadcastA +433 stub -noname SHSendMessageBroadcastW +434 stdcall @(long long long long long long ptr) user32.SendMessageTimeoutW +435 stub -noname CLSIDFromProgIDWrap +436 stdcall -noname CLSIDFromStringWrap(wstr ptr) +437 stdcall -noname IsOS(long) +438 stub -noname SHLoadRegUIStringA +439 stub -noname SHLoadRegUIStringW +440 stdcall -noname SHGetWebFolderFilePathA(str ptr long) +441 stdcall -noname SHGetWebFolderFilePathW(wstr ptr long) +442 stdcall @(wstr ptr long) kernel32.GetEnvironmentVariableW +443 stdcall @(ptr long) kernel32.GetSystemWindowsDirectoryA +444 stdcall @(ptr long) kernel32.GetSystemWindowsDirectoryW +445 stdcall -noname PathFileExistsAndAttributesA(str ptr) +446 stdcall -noname PathFileExistsAndAttributesW(wstr ptr) +447 stub -noname FixSlashesAndColonA +448 stdcall -noname FixSlashesAndColonW(wstr) +449 stub -noname NextPathA +450 stub -noname NextPathW +451 stub -noname CharUpperNoDBCSA +452 stub -noname CharUpperNoDBCSW +453 stub -noname CharLowerNoDBCSA +454 stub -noname CharLowerNoDBCSW +455 stdcall -noname PathIsValidCharA(long long) +456 stdcall -noname PathIsValidCharW(long long) +457 stub -noname GetLongPathNameWrapW +458 stub -noname GetLongPathNameWrapA +459 stdcall SHExpandEnvironmentStringsA(str ptr long) kernel32.ExpandEnvironmentStringsA +460 stdcall SHExpandEnvironmentStringsW(wstr ptr long) kernel32.ExpandEnvironmentStringsW +461 stdcall -noname SHGetAppCompatFlags(long) +462 stub -noname UrlFixupW +463 stub -noname SHExpandEnvironmentStringsForUserA +464 stub -noname SHExpandEnvironmentStringsForUserW +465 stub -noname PathUnExpandEnvStringsForUserA +466 stub -noname PathUnExpandEnvStringsForUserW +467 stub -noname SHRunIndirectRegClientCommand +468 stub -noname RunIndirectRegCommand +469 stub -noname RunRegCommand +470 stub -noname IUnknown_ProfferServiceOld +471 stub -noname SHCreatePropertyBagOnRegKey +472 stub -noname SHCreatePropertyBagOnProfileSelections +473 stub -noname SHGetIniStringUTF7W +474 stub -noname SHSetIniStringUTF7W +475 stub -noname GetShellSecurityDescriptor +476 stub -noname SHGetObjectCompatFlags +477 stub -noname SHCreatePropertyBagOnMemory +478 stub -noname IUnknown_TranslateAcceleratorIO +479 stub -noname IUnknown_UIActivateIO +480 stub -noname UrlCrackW +481 stub -noname IUnknown_HasFocusIO +482 stub -noname SHMessageBoxHelpA +483 stub -noname SHMessageBoxHelpW +484 stub -noname IUnknown_QueryServiceExec +485 stub -noname MapWin32ErrorToSTG +486 stub -noname ModeToCreateFileFlags + +488 stub -noname SHConvertGraphicsFile +489 stub -noname GlobalAddAtomWrapW +490 stub -noname GlobalFindAtomWrapW +491 stdcall -noname SHGetShellKey(long long long) +492 stub -noname PrettifyFileDescriptionW +493 stub -noname SHPropertyBag_ReadType +494 stub -noname SHPropertyBag_ReadStr +495 stub -noname SHPropertyBag_WriteStr +496 stub -noname SHPropertyBag_ReadInt +497 stub -noname SHPropertyBag_WriteInt +498 stub -noname SHPropertyBag_ReadBOOLOld +499 stub -noname SHPropertyBag_WriteBOOL + +505 stub -noname SHPropertyBag_ReadGUID +506 stub -noname SHPropertyBag_WriteGUID +507 stub -noname SHPropertyBag_ReadDWORD +508 stub -noname SHPropertyBag_WriteDWORD +509 stdcall -noname IUnknown_OnFocusChangeIS(ptr ptr long) +510 stub -noname SHLockSharedEx +511 stub -noname PathFileExistsDefExtAndAttributesW +512 stub -noname IStream_ReadPidl +513 stub -noname IStream_WritePidl +514 stub -noname IUnknown_ProfferService + +516 stdcall -noname SKGetValueW(long wstr wstr long long long) +517 stub -noname SKSetValueW +518 stub -noname SKDeleteValueW +519 stub -noname SKAllocValueW +520 stub -noname SHPropertyBag_ReadBSTR +521 stub -noname SHPropertyBag_ReadPOINTL +522 stub -noname SHPropertyBag_WritePOINTL +523 stub -noname SHPropertyBag_ReadRECTL +524 stub -noname SHPropertyBag_WriteRECTL +525 stub -noname SHPropertyBag_ReadPOINTS +526 stub -noname SHPropertyBag_WritePOINTS +527 stub -noname SHPropertyBag_ReadSHORT +528 stub -noname SHPropertyBag_WriteSHORT +529 stub -noname SHPropertyBag_ReadInt +530 stub -noname SHPropertyBag_WriteInt +531 stub -noname SHPropertyBag_ReadStream +532 stub -noname SHPropertyBag_WriteStream +533 stub -noname SHGetPerScreenResName +534 stub -noname SHPropertyBag_ReadBOOL +535 stub -noname SHPropertyBag_Delete +536 stub -noname IUnknown_QueryServicePropertyBag +537 stub -noname SHBoolSystemParametersInfo +538 stub -noname IUnknown_QueryServicePropertyBag +539 stub -noname IUnknown_ShowBrowserBar +540 stub -noname SHInvokeCommandOnContextMenu +541 stub -noname SHInvokeCommandsOnContextMen +542 stdcall -noname GetUIVersion() +543 stub -noname CreateColorSpaceWrapW +544 stub -noname QuerySourceCreateFromKey +545 stub -noname SHForwardContextMenuMsg +546 stub -noname IUnknown_DoContextMenuPopup + +548 stub -noname SHAreIconsEqual +549 stdcall -noname SHCoCreateInstanceAC(ptr ptr long ptr ptr) +550 stub -noname GetTemplateInfoFroHandle +551 stub -noname IShellFolder_CompareIDs + +@ stdcall AssocCreate(long long long long ptr ptr) +@ stdcall AssocQueryKeyA(long long str ptr ptr) +@ stdcall AssocQueryKeyW(long long wstr ptr ptr) +@ stdcall AssocQueryStringA(long long ptr ptr str ptr) +@ stdcall AssocQueryStringByKeyA(long long ptr ptr str ptr) +@ stdcall AssocQueryStringByKeyW(long long ptr ptr wstr ptr) +@ stdcall AssocQueryStringW(long long ptr ptr wstr ptr) +@ stdcall ChrCmpIA(long long) +@ stdcall ChrCmpIW(long long) +@ stdcall ColorAdjustLuma(long long long) +@ stdcall ColorHLSToRGB(long long long) +@ stdcall ColorRGBToHLS(long ptr ptr ptr) +@ stdcall DllGetVersion (ptr) SHLWAPI_DllGetVersion +@ stdcall GetMenuPosFromID(ptr long) +@ stdcall HashData (ptr long ptr long) +@ stdcall IntlStrEqWorkerA(long str str long) StrIsIntlEqualA +@ stdcall IntlStrEqWorkerW(long wstr wstr long) StrIsIntlEqualW +@ stdcall PathAddBackslashA (str) +@ stdcall PathAddBackslashW (wstr) +@ stdcall PathAddExtensionA (str str) +@ stdcall PathAddExtensionW (wstr wstr) +@ stdcall PathAppendA (str str) +@ stdcall PathAppendW (wstr wstr) +@ stdcall PathBuildRootA (ptr long) +@ stdcall PathBuildRootW (ptr long) +@ stdcall PathCanonicalizeA (ptr str) +@ stdcall PathCanonicalizeW (ptr wstr) +@ stdcall PathCombineA (ptr ptr ptr) +@ stdcall PathCombineW (ptr ptr ptr) +@ stdcall PathCommonPrefixA(str str ptr) +@ stdcall PathCommonPrefixW(wstr wstr ptr) +@ stdcall PathCompactPathA(long str long) +@ stdcall PathCompactPathExA(ptr str long long) +@ stdcall PathCompactPathExW(ptr wstr long long) +@ stdcall PathCompactPathW(long wstr long) +@ stdcall PathCreateFromUrlA(str ptr ptr long) +@ stdcall PathCreateFromUrlW(wstr ptr ptr long) +@ stdcall PathFileExistsA (str) +@ stdcall PathFileExistsW (wstr) +@ stdcall PathFindExtensionA (str) +@ stdcall PathFindExtensionW (wstr) +@ stdcall PathFindFileNameA (str) +@ stdcall PathFindFileNameW (wstr) +@ stdcall PathFindNextComponentA (str) +@ stdcall PathFindNextComponentW (wstr) +@ stdcall PathFindOnPathA (str ptr) +@ stdcall PathFindOnPathW (wstr ptr) +@ stdcall PathGetArgsA (str) +@ stdcall PathGetArgsW (wstr) +@ stdcall PathGetCharTypeA(long) +@ stdcall PathGetCharTypeW(long) +@ stdcall PathGetDriveNumberA (str) +@ stdcall PathGetDriveNumberW (wstr) +@ stdcall PathIsContentTypeA(str str) +@ stdcall PathIsContentTypeW(wstr wstr) +@ stdcall PathIsDirectoryA(str) +@ stdcall PathIsDirectoryW(wstr) +@ stdcall PathIsFileSpecA(str) +@ stdcall PathIsFileSpecW(wstr) +@ stdcall PathIsPrefixA(str str) +@ stdcall PathIsPrefixW(wstr wstr) +@ stdcall PathIsRelativeA (str) +@ stdcall PathIsRelativeW (wstr) +@ stdcall PathIsRootA(str) +@ stdcall PathIsRootW(wstr) +@ stdcall PathIsSameRootA(str str) +@ stdcall PathIsSameRootW(wstr wstr) +@ stdcall PathIsSystemFolderA(str long) +@ stdcall PathIsSystemFolderW(wstr long) +@ stdcall PathIsUNCA (str) +@ stdcall PathIsUNCServerA(str) +@ stdcall PathIsUNCServerShareA(str) +@ stdcall PathIsUNCServerShareW(wstr) +@ stdcall PathIsUNCServerW(wstr) +@ stdcall PathIsUNCW(wstr) +@ stdcall PathIsURLA(str) +@ stdcall PathIsURLW(wstr) +@ stdcall PathMakePrettyA(str) +@ stdcall PathMakePrettyW(wstr) +@ stdcall PathMakeSystemFolderA(str) +@ stdcall PathMakeSystemFolderW(wstr) +@ stdcall PathMatchSpecA (str str) +@ stdcall PathMatchSpecW (wstr wstr) +@ stdcall PathParseIconLocationA (str) +@ stdcall PathParseIconLocationW (wstr) +@ stdcall PathQuoteSpacesA (str) +@ stdcall PathQuoteSpacesW (wstr) +@ stdcall PathRelativePathToA(ptr str long str long) +@ stdcall PathRelativePathToW(ptr str long str long) +@ stdcall PathRemoveArgsA(str) +@ stdcall PathRemoveArgsW(wstr) +@ stdcall PathRemoveBackslashA (str) +@ stdcall PathRemoveBackslashW (wstr) +@ stdcall PathRemoveBlanksA(str) +@ stdcall PathRemoveBlanksW(wstr) +@ stdcall PathRemoveExtensionA(str) +@ stdcall PathRemoveExtensionW(wstr) +@ stdcall PathRemoveFileSpecA (str) +@ stdcall PathRemoveFileSpecW (wstr) +@ stdcall PathRenameExtensionA(str str) +@ stdcall PathRenameExtensionW(wstr wstr) +@ stdcall PathSearchAndQualifyA(str ptr long) +@ stdcall PathSearchAndQualifyW(wstr ptr long) +@ stdcall PathSetDlgItemPathA (long long ptr) +@ stdcall PathSetDlgItemPathW (long long ptr) +@ stdcall PathSkipRootA(str) +@ stdcall PathSkipRootW(wstr) +@ stdcall PathStripPathA(str) +@ stdcall PathStripPathW(wstr) +@ stdcall PathStripToRootA(str) +@ stdcall PathStripToRootW(wstr) +@ stdcall PathUnmakeSystemFolderA(str) +@ stdcall PathUnmakeSystemFolderW(wstr) +@ stdcall PathUnquoteSpacesA (str) +@ stdcall PathUnquoteSpacesW (wstr) +@ stdcall SHCreateShellPalette(long) +@ stdcall SHDeleteEmptyKeyA(long ptr) +@ stdcall SHDeleteEmptyKeyW(long ptr) +@ stdcall SHDeleteKeyA(long str) +@ stdcall SHDeleteKeyW(long wstr) +@ stdcall SHDeleteOrphanKeyA(long str) +@ stdcall SHDeleteOrphanKeyW(long wstr) +@ stdcall SHDeleteValueA(long str str) +@ stdcall SHDeleteValueW(long wstr wstr) +@ stdcall SHEnumKeyExA(long long str ptr) +@ stdcall SHEnumKeyExW(long long wstr ptr) +@ stdcall SHEnumValueA(long long str ptr ptr ptr ptr) +@ stdcall SHEnumValueW(long long wstr ptr ptr ptr ptr) +@ stdcall SHGetInverseCMAP ( ptr long ) +@ stdcall SHGetValueA ( long str str ptr ptr ptr ) +@ stdcall SHGetValueW ( long wstr wstr ptr ptr ptr ) +@ stdcall SHIsLowMemoryMachine(long) +@ stdcall SHOpenRegStreamA(long str str long) +@ stdcall SHOpenRegStreamW(long wstr str long) +@ stdcall SHOpenRegStream2A(long str str long) +@ stdcall SHOpenRegStream2W(long wstr str long) +@ stdcall SHQueryInfoKeyA(long ptr ptr ptr ptr) +@ stdcall SHQueryInfoKeyW(long ptr ptr ptr ptr) +@ stdcall SHQueryValueExA(long str ptr ptr ptr ptr) +@ stdcall SHQueryValueExW(long wstr ptr ptr ptr ptr) +@ stdcall SHRegCloseUSKey(ptr) +@ stdcall SHRegCreateUSKeyA(str long long ptr long) +@ stdcall SHRegCreateUSKeyW(wstr long long ptr long) +@ stdcall SHRegDeleteEmptyUSKeyA(long str long) +@ stdcall SHRegDeleteEmptyUSKeyW(long wstr long) +@ stdcall SHRegDeleteUSValueA(long str long) +@ stdcall SHRegDeleteUSValueW(long wstr long) +@ stdcall SHRegEnumUSKeyA(long long str ptr long) +@ stdcall SHRegEnumUSKeyW(long long wstr ptr long) +@ stdcall SHRegEnumUSValueA(long long ptr ptr ptr ptr ptr long) +@ stdcall SHRegEnumUSValueW(long long ptr ptr ptr ptr ptr long) +@ stdcall SHRegGetBoolUSValueA(str str long long) +@ stdcall SHRegGetBoolUSValueW(wstr wstr long long) +@ stdcall SHRegGetUSValueA ( str str ptr ptr ptr long ptr long ) +@ stdcall SHRegGetUSValueW ( wstr wstr ptr ptr ptr long ptr long ) +@ stdcall SHRegOpenUSKeyA ( str long long long long ) +@ stdcall SHRegOpenUSKeyW ( wstr long long long long ) +@ stdcall SHRegQueryInfoUSKeyA ( long ptr ptr ptr ptr long ) +@ stdcall SHRegQueryInfoUSKeyW ( long ptr ptr ptr ptr long ) +@ stdcall SHRegQueryUSValueA ( long str ptr ptr ptr long ptr long ) +@ stdcall SHRegQueryUSValueW ( long wstr ptr ptr ptr long ptr long ) +@ stdcall SHRegSetUSValueA ( str str long ptr long long) +@ stdcall SHRegSetUSValueW ( wstr wstr long ptr long long) +@ stdcall SHRegWriteUSValueA (long str long ptr long long) +@ stdcall SHRegWriteUSValueW (long str long ptr long long) +@ stdcall SHSetValueA (long str str long ptr long) +@ stdcall SHSetValueW (long wstr wstr long ptr long) +@ stdcall StrCSpnA (str str) +@ stdcall StrCSpnIA (str str) +@ stdcall StrCSpnIW (wstr wstr) +@ stdcall StrCSpnW (wstr wstr) +@ stdcall StrCatBuffA (str str long) +@ stdcall StrCatBuffW (wstr wstr long) +@ stdcall StrCatW (ptr wstr) +@ stdcall StrChrA (str long) +@ stdcall StrChrIA (str long) +@ stdcall StrChrIW (wstr long) +@ stdcall StrChrW (wstr long) +@ stdcall StrCmpIW (wstr wstr) +@ stdcall StrCmpNA (str str long) +@ stdcall StrCmpNIA (str str long) +@ stdcall StrCmpNIW (wstr wstr long) +@ stdcall StrCmpNW (wstr wstr long) +@ stdcall StrCmpW (wstr wstr) +@ stdcall StrCpyNW (wstr wstr long) +@ stdcall StrCpyW (ptr wstr) +@ stdcall StrDupA (str) +@ stdcall StrDupW (wstr) +@ stdcall StrFormatByteSizeA(long ptr long) +@ stdcall StrFormatByteSizeW(long long ptr long) +@ stdcall StrFromTimeIntervalA(ptr long long long) +@ stdcall StrFromTimeIntervalW(ptr long long long) +@ stdcall StrIsIntlEqualA(long str str long) +@ stdcall StrIsIntlEqualW(long wstr wstr long) +@ stdcall StrNCatA(str str long) +@ stdcall StrNCatW(wstr wstr long) +@ stdcall StrPBrkA(str str) +@ stdcall StrPBrkW(wstr wstr) +@ stdcall StrRChrA (str str long) +@ stdcall StrRChrIA (str str long) +@ stdcall StrRChrIW (str str long) +@ stdcall StrRChrW (wstr wstr long) +@ stdcall StrRStrIA (str str str) +@ stdcall StrRStrIW (wstr wstr wstr) +@ stdcall StrSpnA (str str) +@ stdcall StrSpnW (wstr wstr) +@ stdcall StrStrA(str str) +@ stdcall StrStrIA(str str) +@ stdcall StrStrIW(wstr wstr) +@ stdcall StrStrW(wstr wstr) +@ stdcall StrToIntA(str) +@ stdcall StrToIntExA(str long ptr) +@ stdcall StrToIntExW(wstr long ptr) +@ stdcall StrToIntW(wstr) +@ stdcall StrTrimA(str str) +@ stdcall StrTrimW(wstr wstr) +@ stdcall UrlApplySchemeA(str ptr ptr long) +@ stdcall UrlApplySchemeW(wstr ptr ptr long) +@ stdcall UrlCanonicalizeA(str ptr ptr long) +@ stdcall UrlCanonicalizeW(wstr ptr ptr long) +@ stdcall UrlCombineA(str str str ptr long) +@ stdcall UrlCombineW(wstr wstr wstr ptr long) +@ stdcall UrlCompareA(str str long) +@ stdcall UrlCompareW(wstr wstr long) +@ stdcall UrlCreateFromPathA(str ptr ptr long) +@ stdcall UrlCreateFromPathW(wstr ptr ptr long) +@ stdcall UrlEscapeA(str ptr ptr long) +@ stdcall UrlEscapeW(wstr ptr ptr long) +@ stdcall UrlGetLocationA(str) +@ stdcall UrlGetLocationW(wstr) +@ stdcall UrlGetPartA(str ptr ptr long long) +@ stdcall UrlGetPartW(wstr ptr ptr long long) +@ stdcall UrlHashA(str ptr long) +@ stdcall UrlHashW(wstr ptr long) +@ stdcall UrlIsA(str long) +@ stdcall UrlIsNoHistoryA(str) +@ stdcall UrlIsNoHistoryW(wstr) +@ stdcall UrlIsOpaqueA(str) +@ stdcall UrlIsOpaqueW(wstr) +@ stdcall UrlIsW(wstr long) +@ stdcall UrlUnescapeA(str ptr ptr long) +@ stdcall UrlUnescapeW(wstr ptr ptr long) +@ varargs wnsprintfA(ptr long str) +@ varargs wnsprintfW(ptr long wstr) +@ stdcall wvnsprintfA(ptr long str ptr) +@ stdcall wvnsprintfW(ptr long wstr ptr) + + +# exported in later versions +@ stdcall AssocIsDangerous(long) +@ stdcall StrRetToBufA(ptr ptr ptr long) +@ stdcall StrRetToBufW(ptr ptr ptr long) +@ stdcall StrRetToBSTR(ptr ptr ptr) +@ stdcall StrRetToStrA(ptr ptr ptr) +@ stdcall StrRetToStrW(ptr ptr ptr) +@ stdcall SHRegGetPathA(long str str ptr long) +@ stdcall SHRegGetPathW(long wstr wstr ptr long) +@ stdcall PathIsDirectoryEmptyA(str) +@ stdcall PathIsDirectoryEmptyW(wstr) +@ stdcall PathIsNetworkPathA(str) +@ stdcall PathIsNetworkPathW(wstr) +@ stdcall PathIsLFNFileSpecA(str) +@ stdcall PathIsLFNFileSpecW(wstr) +@ stdcall PathFindSuffixArrayA(str ptr long) +@ stdcall PathFindSuffixArrayW(wstr ptr long) +@ stdcall _SHGetInstanceExplorer(ptr) +@ stdcall PathUndecorateA(str) +@ stdcall PathUndecorateW(wstr) +@ stdcall PathUnExpandEnvStringsA(str ptr long) +@ stdcall PathUnExpandEnvStringsW(wstr ptr long) +@ stdcall SHCopyKeyA(long str long long) +@ stdcall SHCopyKeyW(long wstr long long) +@ stdcall SHAutoComplete(ptr long) +@ stdcall SHCreateStreamOnFileA(str long ptr) +@ stdcall SHCreateStreamOnFileW(wstr long ptr) +@ stdcall SHCreateStreamOnFileEx(wstr long long long ptr ptr) +@ stdcall SHCreateStreamWrapper(ptr ptr long ptr) +@ stdcall SHGetThreadRef (ptr) +@ stdcall SHRegDuplicateHKey (long) +@ stdcall SHRegSetPathA(long str str str long) +@ stdcall SHRegSetPathW(long wstr wstr wstr long) +@ stdcall SHRegisterValidateTemplate(wstr long) +@ stdcall SHSetThreadRef (ptr) +@ stdcall SHReleaseThreadRef() +@ stdcall SHSkipJunction(ptr ptr) +@ stdcall SHStrDupA (str ptr) +@ stdcall SHStrDupW (wstr ptr) +@ stdcall StrFormatByteSize64A(long long ptr long) +@ stdcall StrFormatKBSizeA(long long str long) +@ stdcall StrFormatKBSizeW(long long wstr long) +@ stdcall StrCmpLogicalW(wstr wstr) diff --git a/reactos/lib/winspool/Makefile b/reactos/lib/winspool/Makefile index 2b72c9d06cd..feca988d18e 100644 --- a/reactos/lib/winspool/Makefile +++ b/reactos/lib/winspool/Makefile @@ -27,7 +27,7 @@ TARGET_CFLAGS += -D_DISABLE_TIDENTS TARGET_LFLAGS = -nostartfiles -nostdlib -TARGET_SDKLIBS = wine.a wine_unicode.a ntdll.a kernel32.a +TARGET_SDKLIBS = wine.a ntdll.a kernel32.a TARGET_OBJECTS = info.o stubs.o From ca22e241e0065edeeaf710fa2c9b2e072ddaf6eb Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Wed, 16 Feb 2005 16:45:51 +0000 Subject: [PATCH 071/248] get rid of libunicode svn path=/trunk/; revision=13597 --- reactos/lib/unicode/Makefile.in | 88 - reactos/lib/unicode/Makefile.ros-template | 36 - reactos/lib/unicode/c_037.c | 683 -- reactos/lib/unicode/c_10000.c | 683 -- reactos/lib/unicode/c_10006.c | 683 -- reactos/lib/unicode/c_10007.c | 716 -- reactos/lib/unicode/c_10029.c | 683 -- reactos/lib/unicode/c_1006.c | 716 -- reactos/lib/unicode/c_10079.c | 683 -- reactos/lib/unicode/c_10081.c | 683 -- reactos/lib/unicode/c_1026.c | 683 -- reactos/lib/unicode/c_1250.c | 683 -- reactos/lib/unicode/c_1251.c | 716 -- reactos/lib/unicode/c_1252.c | 683 -- reactos/lib/unicode/c_1253.c | 683 -- reactos/lib/unicode/c_1254.c | 683 -- reactos/lib/unicode/c_1255.c | 716 -- reactos/lib/unicode/c_1256.c | 716 -- reactos/lib/unicode/c_1257.c | 683 -- reactos/lib/unicode/c_1258.c | 683 -- reactos/lib/unicode/c_20866.c | 716 -- reactos/lib/unicode/c_20932.c | 6298 -------------- reactos/lib/unicode/c_21866.c | 716 -- reactos/lib/unicode/c_28591.c | 683 -- reactos/lib/unicode/c_28592.c | 683 -- reactos/lib/unicode/c_28593.c | 683 -- reactos/lib/unicode/c_28594.c | 683 -- reactos/lib/unicode/c_28595.c | 716 -- reactos/lib/unicode/c_28596.c | 716 -- reactos/lib/unicode/c_28597.c | 683 -- reactos/lib/unicode/c_28598.c | 716 -- reactos/lib/unicode/c_28599.c | 683 -- reactos/lib/unicode/c_28600.c | 683 -- reactos/lib/unicode/c_28603.c | 683 -- reactos/lib/unicode/c_28604.c | 683 -- reactos/lib/unicode/c_28605.c | 683 -- reactos/lib/unicode/c_28606.c | 683 -- reactos/lib/unicode/c_424.c | 716 -- reactos/lib/unicode/c_437.c | 683 -- reactos/lib/unicode/c_500.c | 683 -- reactos/lib/unicode/c_737.c | 683 -- reactos/lib/unicode/c_775.c | 683 -- reactos/lib/unicode/c_850.c | 683 -- reactos/lib/unicode/c_852.c | 683 -- reactos/lib/unicode/c_855.c | 716 -- reactos/lib/unicode/c_856.c | 716 -- reactos/lib/unicode/c_857.c | 683 -- reactos/lib/unicode/c_860.c | 683 -- reactos/lib/unicode/c_861.c | 683 -- reactos/lib/unicode/c_862.c | 716 -- reactos/lib/unicode/c_863.c | 683 -- reactos/lib/unicode/c_864.c | 716 -- reactos/lib/unicode/c_865.c | 683 -- reactos/lib/unicode/c_866.c | 716 -- reactos/lib/unicode/c_869.c | 683 -- reactos/lib/unicode/c_874.c | 716 -- reactos/lib/unicode/c_875.c | 683 -- reactos/lib/unicode/c_878.c | 716 -- reactos/lib/unicode/c_932.c | 5242 ------------ reactos/lib/unicode/c_936.c | 7882 ----------------- reactos/lib/unicode/c_949.c | 9301 --------------------- reactos/lib/unicode/c_950.c | 6595 --------------- reactos/lib/unicode/casemap.c | 1530 ---- reactos/lib/unicode/collation.c | 1657 ---- reactos/lib/unicode/compose.c | 1098 --- reactos/lib/unicode/cpmap.pl | 1211 --- reactos/lib/unicode/cptable.c | 179 - reactos/lib/unicode/defaults | 202 - reactos/lib/unicode/fold.c | 198 - reactos/lib/unicode/makefile | 9 - reactos/lib/unicode/mbtowc.c | 298 - reactos/lib/unicode/sortkey.c | 351 - reactos/lib/unicode/string.c | 472 -- reactos/lib/unicode/utf8.c | 200 - reactos/lib/unicode/wctomb.c | 477 -- reactos/lib/unicode/wctype.c | 1802 ---- reactos/lib/unicode/wine_unicode.def | 27 - 77 files changed, 83312 deletions(-) delete mode 100644 reactos/lib/unicode/Makefile.in delete mode 100644 reactos/lib/unicode/Makefile.ros-template delete mode 100644 reactos/lib/unicode/c_037.c delete mode 100644 reactos/lib/unicode/c_10000.c delete mode 100644 reactos/lib/unicode/c_10006.c delete mode 100644 reactos/lib/unicode/c_10007.c delete mode 100644 reactos/lib/unicode/c_10029.c delete mode 100644 reactos/lib/unicode/c_1006.c delete mode 100644 reactos/lib/unicode/c_10079.c delete mode 100644 reactos/lib/unicode/c_10081.c delete mode 100644 reactos/lib/unicode/c_1026.c delete mode 100644 reactos/lib/unicode/c_1250.c delete mode 100644 reactos/lib/unicode/c_1251.c delete mode 100644 reactos/lib/unicode/c_1252.c delete mode 100644 reactos/lib/unicode/c_1253.c delete mode 100644 reactos/lib/unicode/c_1254.c delete mode 100644 reactos/lib/unicode/c_1255.c delete mode 100644 reactos/lib/unicode/c_1256.c delete mode 100644 reactos/lib/unicode/c_1257.c delete mode 100644 reactos/lib/unicode/c_1258.c delete mode 100644 reactos/lib/unicode/c_20866.c delete mode 100644 reactos/lib/unicode/c_20932.c delete mode 100644 reactos/lib/unicode/c_21866.c delete mode 100644 reactos/lib/unicode/c_28591.c delete mode 100644 reactos/lib/unicode/c_28592.c delete mode 100644 reactos/lib/unicode/c_28593.c delete mode 100644 reactos/lib/unicode/c_28594.c delete mode 100644 reactos/lib/unicode/c_28595.c delete mode 100644 reactos/lib/unicode/c_28596.c delete mode 100644 reactos/lib/unicode/c_28597.c delete mode 100644 reactos/lib/unicode/c_28598.c delete mode 100644 reactos/lib/unicode/c_28599.c delete mode 100644 reactos/lib/unicode/c_28600.c delete mode 100644 reactos/lib/unicode/c_28603.c delete mode 100644 reactos/lib/unicode/c_28604.c delete mode 100644 reactos/lib/unicode/c_28605.c delete mode 100644 reactos/lib/unicode/c_28606.c delete mode 100644 reactos/lib/unicode/c_424.c delete mode 100644 reactos/lib/unicode/c_437.c delete mode 100644 reactos/lib/unicode/c_500.c delete mode 100644 reactos/lib/unicode/c_737.c delete mode 100644 reactos/lib/unicode/c_775.c delete mode 100644 reactos/lib/unicode/c_850.c delete mode 100644 reactos/lib/unicode/c_852.c delete mode 100644 reactos/lib/unicode/c_855.c delete mode 100644 reactos/lib/unicode/c_856.c delete mode 100644 reactos/lib/unicode/c_857.c delete mode 100644 reactos/lib/unicode/c_860.c delete mode 100644 reactos/lib/unicode/c_861.c delete mode 100644 reactos/lib/unicode/c_862.c delete mode 100644 reactos/lib/unicode/c_863.c delete mode 100644 reactos/lib/unicode/c_864.c delete mode 100644 reactos/lib/unicode/c_865.c delete mode 100644 reactos/lib/unicode/c_866.c delete mode 100644 reactos/lib/unicode/c_869.c delete mode 100644 reactos/lib/unicode/c_874.c delete mode 100644 reactos/lib/unicode/c_875.c delete mode 100644 reactos/lib/unicode/c_878.c delete mode 100644 reactos/lib/unicode/c_932.c delete mode 100644 reactos/lib/unicode/c_936.c delete mode 100644 reactos/lib/unicode/c_949.c delete mode 100644 reactos/lib/unicode/c_950.c delete mode 100644 reactos/lib/unicode/casemap.c delete mode 100644 reactos/lib/unicode/collation.c delete mode 100644 reactos/lib/unicode/compose.c delete mode 100644 reactos/lib/unicode/cpmap.pl delete mode 100644 reactos/lib/unicode/cptable.c delete mode 100644 reactos/lib/unicode/defaults delete mode 100644 reactos/lib/unicode/fold.c delete mode 100644 reactos/lib/unicode/makefile delete mode 100644 reactos/lib/unicode/mbtowc.c delete mode 100644 reactos/lib/unicode/sortkey.c delete mode 100644 reactos/lib/unicode/string.c delete mode 100644 reactos/lib/unicode/utf8.c delete mode 100644 reactos/lib/unicode/wctomb.c delete mode 100644 reactos/lib/unicode/wctype.c delete mode 100644 reactos/lib/unicode/wine_unicode.def diff --git a/reactos/lib/unicode/Makefile.in b/reactos/lib/unicode/Makefile.in deleted file mode 100644 index 2b05383a7a0..00000000000 --- a/reactos/lib/unicode/Makefile.in +++ /dev/null @@ -1,88 +0,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -LIBRARY = wine_unicode -SOVERSION = 1 -VERSCRIPT = $(SRCDIR)/wine_unicode.map -EXTRADEFS = -D__WINESRC__ -DNO_LIBWINE_PORT -DWINE_UNICODE_API="" - -CODEPAGES = \ - 037 \ - 424 \ - 437 \ - 500 \ - 737 \ - 775 \ - 850 \ - 852 \ - 855 \ - 856 \ - 857 \ - 860 \ - 861 \ - 862 \ - 863 \ - 864 \ - 865 \ - 866 \ - 869 \ - 874 \ - 875 \ - 878 \ - 932 \ - 936 \ - 949 \ - 950 \ - 1006 \ - 1026 \ - 1250 \ - 1251 \ - 1252 \ - 1253 \ - 1254 \ - 1255 \ - 1256 \ - 1257 \ - 1258 \ - 10000 \ - 10006 \ - 10007 \ - 10029 \ - 10079 \ - 10081 \ - 20866 \ - 20932 \ - 21866 \ - 28591 \ - 28592 \ - 28593 \ - 28594 \ - 28595 \ - 28596 \ - 28597 \ - 28598 \ - 28599 \ - 28600 \ - 28603 \ - 28604 \ - 28605 \ - 28606 - -C_SRCS = \ - casemap.c \ - collation.c \ - compose.c \ - cptable.c \ - fold.c \ - mbtowc.c \ - sortkey.c \ - string.c \ - utf8.c \ - wctomb.c \ - wctype.c \ - $(CODEPAGES:%=c_%.c) - -@MAKE_LIB_RULES@ - -### Dependencies: diff --git a/reactos/lib/unicode/Makefile.ros-template b/reactos/lib/unicode/Makefile.ros-template deleted file mode 100644 index f56fcd2c3d6..00000000000 --- a/reactos/lib/unicode/Makefile.ros-template +++ /dev/null @@ -1,36 +0,0 @@ -# $Id: Makefile.ros-template 11910 2004-12-03 23:37:44Z blight $ - -TARGET_NAME = wine_unicode - -CODEPAGES = @CODEPAGES@ - -TARGET_OBJECTS = casemap.o \ - collation.o \ - compose.o \ - cptable.o \ - fold.o \ - mbtowc.o \ - sortkey.o \ - string.o \ - utf8.o \ - wctomb.o \ - wctype.o \ - $(CODEPAGES:%=c_%.o) - -TARGET_CFLAGS = @EXTRADEFS@ -DWCHAR=wchar_t - -TARGET_SDKLIBS = @IMPORTS@ - -TARGET_NORC = yes - -TARGET_BASE = $(TARGET_BASE_LIB_UNICODE) - -TARGET_DEFNAME = wine_unicode - -TARGET_STUBS = no - -default: all - -DEP_OBJECTS = $(TARGET_OBJECTS) - -include $(TOOLS_PATH)/depend.mk diff --git a/reactos/lib/unicode/c_037.c b/reactos/lib/unicode/c_037.c deleted file mode 100644 index bc9bed85e3d..00000000000 --- a/reactos/lib/unicode/c_037.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_10000.c b/reactos/lib/unicode/c_10000.c deleted file mode 100644 index 54958150b87..00000000000 --- a/reactos/lib/unicode/c_10000.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 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, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_10006.c b/reactos/lib/unicode/c_10006.c deleted file mode 100644 index 8c11fdc42f2..00000000000 --- a/reactos/lib/unicode/c_10006.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_10007.c b/reactos/lib/unicode/c_10007.c deleted file mode 100644 index 2e200ed172d..00000000000 --- a/reactos/lib/unicode/c_10007.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_10029.c b/reactos/lib/unicode/c_10029.c deleted file mode 100644 index da7809dfae6..00000000000 --- a/reactos/lib/unicode/c_10029.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1006.c b/reactos/lib/unicode/c_1006.c deleted file mode 100644 index e4e97236a29..00000000000 --- a/reactos/lib/unicode/c_1006.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_10079.c b/reactos/lib/unicode/c_10079.c deleted file mode 100644 index cf4fcd3a18a..00000000000 --- a/reactos/lib/unicode/c_10079.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 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, - 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_10081.c b/reactos/lib/unicode/c_10081.c deleted file mode 100644 index 5183b3450c9..00000000000 --- a/reactos/lib/unicode/c_10081.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 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, - 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1026.c b/reactos/lib/unicode/c_1026.c deleted file mode 100644 index 9b7db85fa07..00000000000 --- a/reactos/lib/unicode/c_1026.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1250.c b/reactos/lib/unicode/c_1250.c deleted file mode 100644 index 12738e1ff2a..00000000000 --- a/reactos/lib/unicode/c_1250.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1251.c b/reactos/lib/unicode/c_1251.c deleted file mode 100644 index 345c11d3cf0..00000000000 --- a/reactos/lib/unicode/c_1251.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1252.c b/reactos/lib/unicode/c_1252.c deleted file mode 100644 index b78ddd367b2..00000000000 --- a/reactos/lib/unicode/c_1252.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1253.c b/reactos/lib/unicode/c_1253.c deleted file mode 100644 index acc5640083a..00000000000 --- a/reactos/lib/unicode/c_1253.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1254.c b/reactos/lib/unicode/c_1254.c deleted file mode 100644 index 93304ef2c88..00000000000 --- a/reactos/lib/unicode/c_1254.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1255.c b/reactos/lib/unicode/c_1255.c deleted file mode 100644 index 2bf552629b3..00000000000 --- a/reactos/lib/unicode/c_1255.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1256.c b/reactos/lib/unicode/c_1256.c deleted file mode 100644 index 1a546314c63..00000000000 --- a/reactos/lib/unicode/c_1256.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1257.c b/reactos/lib/unicode/c_1257.c deleted file mode 100644 index 721171abf95..00000000000 --- a/reactos/lib/unicode/c_1257.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_1258.c b/reactos/lib/unicode/c_1258.c deleted file mode 100644 index 5780c6605bf..00000000000 --- a/reactos/lib/unicode/c_1258.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_20866.c b/reactos/lib/unicode/c_20866.c deleted file mode 100644 index 1612506dcb8..00000000000 --- a/reactos/lib/unicode/c_20866.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_20932.c b/reactos/lib/unicode/c_20932.c deleted file mode 100644 index 38c10d3e8ef..00000000000 --- a/reactos/lib/unicode/c_20932.c +++ /dev/null @@ -1,6298 +0,0 @@ -/* 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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, - 0x003f, 0x003f, 0x003f, 0x003f, 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, 0x003f, 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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 } -}; diff --git a/reactos/lib/unicode/c_21866.c b/reactos/lib/unicode/c_21866.c deleted file mode 100644 index c79376f776d..00000000000 --- a/reactos/lib/unicode/c_21866.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28591.c b/reactos/lib/unicode/c_28591.c deleted file mode 100644 index 19de762fa52..00000000000 --- a/reactos/lib/unicode/c_28591.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28592.c b/reactos/lib/unicode/c_28592.c deleted file mode 100644 index 27e5e750903..00000000000 --- a/reactos/lib/unicode/c_28592.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28593.c b/reactos/lib/unicode/c_28593.c deleted file mode 100644 index 0e3344cb650..00000000000 --- a/reactos/lib/unicode/c_28593.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28594.c b/reactos/lib/unicode/c_28594.c deleted file mode 100644 index 3bcf20a02ee..00000000000 --- a/reactos/lib/unicode/c_28594.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28595.c b/reactos/lib/unicode/c_28595.c deleted file mode 100644 index 36bd0854582..00000000000 --- a/reactos/lib/unicode/c_28595.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28596.c b/reactos/lib/unicode/c_28596.c deleted file mode 100644 index 1165a0d3c22..00000000000 --- a/reactos/lib/unicode/c_28596.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28597.c b/reactos/lib/unicode/c_28597.c deleted file mode 100644 index 7eba5b44596..00000000000 --- a/reactos/lib/unicode/c_28597.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x00a4, 0x003f, 0x00a6, 0x00a7, - 0x00a8, 0x00a9, 0x003f, 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, 0xa4, 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, 0x3f, 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0xd9, 0x3f, - 0x5a, 0x3f, 0x4b, 0x41, 0x42, 0x43, 0x65, 0x65, - 0x45, 0x46, 0x3f, 0x4d, 0x6f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x69, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28598.c b/reactos/lib/unicode/c_28598.c deleted file mode 100644 index 281e39c76b4..00000000000 --- a/reactos/lib/unicode/c_28598.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28599.c b/reactos/lib/unicode/c_28599.c deleted file mode 100644 index 606a3cb7a38..00000000000 --- a/reactos/lib/unicode/c_28599.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28600.c b/reactos/lib/unicode/c_28600.c deleted file mode 100644 index 033af29c9b7..00000000000 --- a/reactos/lib/unicode/c_28600.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28603.c b/reactos/lib/unicode/c_28603.c deleted file mode 100644 index 5e100dbb851..00000000000 --- a/reactos/lib/unicode/c_28603.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28604.c b/reactos/lib/unicode/c_28604.c deleted file mode 100644 index 07a1a9d335c..00000000000 --- a/reactos/lib/unicode/c_28604.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28605.c b/reactos/lib/unicode/c_28605.c deleted file mode 100644 index 13cbeb7ec7a..00000000000 --- a/reactos/lib/unicode/c_28605.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_28606.c b/reactos/lib/unicode/c_28606.c deleted file mode 100644 index 385cab23400..00000000000 --- a/reactos/lib/unicode/c_28606.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_424.c b/reactos/lib/unicode/c_424.c deleted file mode 100644 index 99726a171ec..00000000000 --- a/reactos/lib/unicode/c_424.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_437.c b/reactos/lib/unicode/c_437.c deleted file mode 100644 index b84da79e17e..00000000000 --- a/reactos/lib/unicode/c_437.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_500.c b/reactos/lib/unicode/c_500.c deleted file mode 100644 index e1fc1f2d49c..00000000000 --- a/reactos/lib/unicode/c_500.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_737.c b/reactos/lib/unicode/c_737.c deleted file mode 100644 index 9888242fd0b..00000000000 --- a/reactos/lib/unicode/c_737.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_775.c b/reactos/lib/unicode/c_775.c deleted file mode 100644 index be82255e966..00000000000 --- a/reactos/lib/unicode/c_775.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_850.c b/reactos/lib/unicode/c_850.c deleted file mode 100644 index c546b984a58..00000000000 --- a/reactos/lib/unicode/c_850.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_852.c b/reactos/lib/unicode/c_852.c deleted file mode 100644 index 156d3359b1a..00000000000 --- a/reactos/lib/unicode/c_852.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_855.c b/reactos/lib/unicode/c_855.c deleted file mode 100644 index f6d48a8889a..00000000000 --- a/reactos/lib/unicode/c_855.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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[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, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_856.c b/reactos/lib/unicode/c_856.c deleted file mode 100644 index e9da6e73d3c..00000000000 --- a/reactos/lib/unicode/c_856.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_857.c b/reactos/lib/unicode/c_857.c deleted file mode 100644 index 902b5c0c863..00000000000 --- a/reactos/lib/unicode/c_857.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_860.c b/reactos/lib/unicode/c_860.c deleted file mode 100644 index 40e4b6d16f3..00000000000 --- a/reactos/lib/unicode/c_860.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_861.c b/reactos/lib/unicode/c_861.c deleted file mode 100644 index 20d68fd3e34..00000000000 --- a/reactos/lib/unicode/c_861.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_862.c b/reactos/lib/unicode/c_862.c deleted file mode 100644 index 2b5f1c3317b..00000000000 --- a/reactos/lib/unicode/c_862.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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[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, 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_863.c b/reactos/lib/unicode/c_863.c deleted file mode 100644 index 698106abac4..00000000000 --- a/reactos/lib/unicode/c_863.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_864.c b/reactos/lib/unicode/c_864.c deleted file mode 100644 index aa8f36ef2fe..00000000000 --- a/reactos/lib/unicode/c_864.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_865.c b/reactos/lib/unicode/c_865.c deleted file mode 100644 index e81cfc14822..00000000000 --- a/reactos/lib/unicode/c_865.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, - 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_866.c b/reactos/lib/unicode/c_866.c deleted file mode 100644 index 369f3914886..00000000000 --- a/reactos/lib/unicode/c_866.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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[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, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_869.c b/reactos/lib/unicode/c_869.c deleted file mode 100644 index d9bae4a9c93..00000000000 --- a/reactos/lib/unicode/c_869.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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[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, 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_874.c b/reactos/lib/unicode/c_874.c deleted file mode 100644 index 775609af2b9..00000000000 --- a/reactos/lib/unicode/c_874.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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[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, 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_875.c b/reactos/lib/unicode/c_875.c deleted file mode 100644 index 1d02205a0c6..00000000000 --- a/reactos/lib/unicode/c_875.c +++ /dev/null @@ -1,683 +0,0 @@ -/* 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, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_878.c b/reactos/lib/unicode/c_878.c deleted file mode 100644 index 035c5095985..00000000000 --- a/reactos/lib/unicode/c_878.c +++ /dev/null @@ -1,716 +0,0 @@ -/* 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, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, - 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, - 0x3f, 0x3f, 0x3f, 0x3f, 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, - uni2cp_low, - uni2cp_high -}; diff --git a/reactos/lib/unicode/c_932.c b/reactos/lib/unicode/c_932.c deleted file mode 100644 index fc3ae497fb7..00000000000 --- a/reactos/lib/unicode/c_932.c +++ /dev/null @@ -1,5242 +0,0 @@ -/* 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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, - 0x003f, 0x003f, 0x003f, 0x003f, 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, 0x003f, 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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 } -}; diff --git a/reactos/lib/unicode/c_936.c b/reactos/lib/unicode/c_936.c deleted file mode 100644 index 66fcb331dc2..00000000000 --- a/reactos/lib/unicode/c_936.c +++ /dev/null @@ -1,7882 +0,0 @@ -/* 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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, - 0x003f, 0x003f, 0x003f, 0x003f, 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, 0x003f, 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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 } -}; diff --git a/reactos/lib/unicode/c_949.c b/reactos/lib/unicode/c_949.c deleted file mode 100644 index 5711c8b4bed..00000000000 --- a/reactos/lib/unicode/c_949.c +++ /dev/null @@ -1,9301 +0,0 @@ -/* 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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, - 0x003f, 0x003f, 0x003f, 0x003f, 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, 0x003f, 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, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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 } -}; diff --git a/reactos/lib/unicode/c_950.c b/reactos/lib/unicode/c_950.c deleted file mode 100644 index bb0927e9570..00000000000 --- a/reactos/lib/unicode/c_950.c +++ /dev/null @@ -1,6595 +0,0 @@ -/* 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, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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, - 0x003f, 0x003f, 0x003f, 0x003f, 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, 0x003f, 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, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 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 } -}; diff --git a/reactos/lib/unicode/casemap.c b/reactos/lib/unicode/casemap.c deleted file mode 100644 index 9da8c2e1f95..00000000000 --- a/reactos/lib/unicode/casemap.c +++ /dev/null @@ -1,1530 +0,0 @@ -/* Unicode case mappings */ -/* Automatically generated; DO NOT EDIT!! */ - -#include "wine/unicode.h" - -const WCHAR wine_casemap_lower[2942] = -{ - /* index */ - 0x01bf, 0x02bf, 0x03bf, 0x0439, 0x0539, 0x0639, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0739, 0x0832, - 0x0100, 0x092f, 0x0100, 0x0100, 0x099f, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0a7e, - /* 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 0x0000, - 0x0000, 0x0000, - /* 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, - 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, 0x0000, 0x0000, - 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 0x0500 .. 0x05ff */ - 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, 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, - /* 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, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 0x2490 .. 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, 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, - /* 0xff21 .. 0xffff */ - 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[2994] = -{ - /* index */ - 0x019f, 0x029f, 0x039f, 0x045a, 0x0556, 0x0655, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0754, 0x0854, - 0x0100, 0x0948, 0x0100, 0x0100, 0x09c8, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0ab2, - /* 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, - 0x0000, 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, 0x0000, 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, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 0x0000, 0x0000, 0x0000, 0x0000, 0xff2d, - 0x0000, 0x0000, 0xff2b, 0x0000, 0x0000, 0xff2a, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xff26, 0x0000, 0x0000, 0xff26, 0x0000, 0x0000, 0x0000, 0x0000, - 0xff26, 0x0000, 0xff27, 0xff27, 0x0000, 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, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 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, 0x0000, 0x0000, 0xffff, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - /* 0x0501 .. 0x05ff */ - 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, 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, - /* 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, - /* 0x2480 .. 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, - 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, - /* 0xff16 .. 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, 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[4199] = -{ - /* index */ - 0x01d0, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x028a, 0x0100, - 0x0100, 0x0384, 0x0474, 0x0564, 0x0654, 0x0744, 0x07f4, 0x08d4, - 0x0994, 0x0100, 0x0100, 0x0a2b, 0x0100, 0x0100, 0x0100, 0x0a9d, - 0x0b8d, 0x0c47, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0cd7, 0x0100, 0x0100, 0x0100, 0x0d77, 0x0100, 0x0100, 0x0e77, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0f67, - /* 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, - /* 0x0906 .. 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 0x0000, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 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[1487] = -{ - /* 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, 0x03d0, 0x04cf, - /* 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 0xfe30 .. 0xfeff */ - 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 -}; diff --git a/reactos/lib/unicode/collation.c b/reactos/lib/unicode/collation.c deleted file mode 100644 index 3f4c0effa8c..00000000000 --- a/reactos/lib/unicode/collation.c +++ /dev/null @@ -1,1657 +0,0 @@ -/* 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 -}; diff --git a/reactos/lib/unicode/compose.c b/reactos/lib/unicode/compose.c deleted file mode 100644 index 43dcebd2f55..00000000000 --- a/reactos/lib/unicode/compose.c +++ /dev/null @@ -1,1098 +0,0 @@ -/* Unicode char composition */ -/* Automatically generated; DO NOT EDIT!! */ - -#include "wine/unicode.h" - -const WCHAR unicode_compose_table[0x846] = -{ - /* second chars + offsets */ - 0x0300, 0x0046, 0x0301, 0x009a, 0x0302, 0x0110, 0x0303, 0x0130, - 0x0304, 0x014c, 0x0306, 0x0178, 0x0307, 0x0198, 0x0308, 0x01c6, - 0x0309, 0x01fc, 0x030a, 0x0214, 0x030b, 0x021a, 0x030c, 0x0220, - 0x030f, 0x0245, 0x0311, 0x0253, 0x0313, 0x025f, 0x0314, 0x026d, - 0x031b, 0x027d, 0x0323, 0x0281, 0x0324, 0x02ab, 0x0325, 0x02ad, - 0x0326, 0x02af, 0x0327, 0x02b3, 0x0328, 0x02c9, 0x032d, 0x02d3, - 0x032e, 0x02df, 0x0330, 0x02e1, 0x0331, 0x02e7, 0x0338, 0x02f8, - 0x0342, 0x0325, 0x0345, 0x0342, 0x05b4, 0x0381, 0x05b7, 0x0382, - 0x05b8, 0x0384, 0x05b9, 0x0385, 0x05bc, 0x0386, 0x05bf, 0x039c, - 0x05c1, 0x039f, 0x05c2, 0x03a1, 0x0653, 0x03a3, 0x0654, 0x03a4, - 0x0655, 0x03aa, 0x093c, 0x03ab, 0x09bc, 0x03b6, 0x09be, 0x03b9, - 0x09d7, 0x03ba, 0x0a3c, 0x03bb, 0x0b3c, 0x03c1, 0x0b3e, 0x03c3, - 0x0b56, 0x03c4, 0x0b57, 0x03c5, 0x0bbe, 0x03c6, 0x0bd7, 0x03c8, - 0x0c56, 0x03ca, 0x0cc2, 0x03cb, 0x0cd5, 0x03cc, 0x0cd6, 0x03cf, - 0x0d3e, 0x03d0, 0x0d57, 0x03d2, 0x0dca, 0x03d3, 0x0dcf, 0x03d5, - 0x0ddf, 0x03d6, 0x0f72, 0x03d7, 0x0f74, 0x03d8, 0x0f80, 0x03d9, - 0x0fb5, 0x03dc, 0x0fb7, 0x03de, 0x102e, 0x03e8, 0x3099, 0x03e9, - 0x309a, 0x0419, 0x0000, 0x0423, - /* 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, - /* 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 = 69; - -const WCHAR unicode_decompose_table[4560] = -{ - /* 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, 0x0100, 0x0100, 0x0100, 0x01e0, 0x01f0, - 0x0100, 0x0200, 0x0210, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0220, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0230, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0240, 0x0100, 0x0100, 0x0100, 0x0100, - /* null sub-index */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - /* sub-index 00 */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0270, 0x0290, 0x02b0, 0x02d0, - /* sub-index 01 */ - 0x02f0, 0x0310, 0x0330, 0x0350, 0x0370, 0x0390, 0x03b0, 0x03d0, - 0x0250, 0x0250, 0x03f0, 0x0410, 0x0430, 0x0450, 0x0470, 0x0490, - /* sub-index 02 */ - 0x04b0, 0x04d0, 0x04f0, 0x0510, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - /* sub-index 03 */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0530, 0x0250, 0x0250, 0x0250, - 0x0550, 0x0570, 0x0590, 0x05b0, 0x05d0, 0x05f0, 0x0250, 0x0250, - /* sub-index 04 */ - 0x0610, 0x0630, 0x0250, 0x0650, 0x0250, 0x0670, 0x0250, 0x0690, - 0x0250, 0x0250, 0x0250, 0x0250, 0x06b0, 0x06d0, 0x06f0, 0x0710, - /* sub-index 06 */ - 0x0250, 0x0250, 0x0730, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0750, 0x0770, 0x0250, 0x0250, - /* sub-index 09 */ - 0x0250, 0x0250, 0x0790, 0x07b0, 0x0250, 0x07d0, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x07f0, 0x0810, 0x0250, 0x0250, - /* sub-index 0a */ - 0x0250, 0x0250, 0x0250, 0x0830, 0x0250, 0x0850, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - /* sub-index 0b */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0870, 0x0890, 0x0250, 0x0250, - 0x0250, 0x08b0, 0x0250, 0x0250, 0x08d0, 0x0250, 0x0250, 0x0250, - /* sub-index 0c */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x08f0, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0910, 0x0250, 0x0250, 0x0250, - /* sub-index 0d */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0930, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0950, 0x0250, 0x0250, - /* sub-index 0f */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0970, 0x0990, 0x09b0, 0x09d0, - 0x09f0, 0x0a10, 0x0a30, 0x0a50, 0x0250, 0x0250, 0x0250, 0x0250, - /* sub-index 10 */ - 0x0250, 0x0250, 0x0a70, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - /* sub-index 1e */ - 0x0a90, 0x0ab0, 0x0ad0, 0x0af0, 0x0b10, 0x0b30, 0x0b50, 0x0b70, - 0x0b90, 0x0bb0, 0x0bd0, 0x0bf0, 0x0c10, 0x0c30, 0x0c50, 0x0c70, - /* sub-index 1f */ - 0x0c90, 0x0cb0, 0x0cd0, 0x0cf0, 0x0d10, 0x0d30, 0x0d50, 0x0d70, - 0x0d90, 0x0db0, 0x0dd0, 0x0df0, 0x0e10, 0x0e30, 0x0e50, 0x0e70, - /* sub-index 21 */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0e90, 0x0eb0, 0x0250, 0x0ed0, 0x0250, 0x0250, 0x0250, - /* sub-index 22 */ - 0x0ef0, 0x0250, 0x0f10, 0x0250, 0x0f30, 0x0250, 0x0f50, 0x0f70, - 0x0f90, 0x0250, 0x0fb0, 0x0250, 0x0250, 0x0250, 0x0fd0, 0x0250, - /* sub-index 2a */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0ff0, 0x0250, 0x0250, - /* sub-index 30 */ - 0x0250, 0x0250, 0x0250, 0x0250, 0x1010, 0x1030, 0x1050, 0x1070, - 0x0250, 0x1090, 0x10b0, 0x10d0, 0x10f0, 0x1110, 0x0250, 0x1130, - /* sub-index fb */ - 0x0250, 0x1150, 0x1170, 0x1190, 0x11b0, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - /* 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, - /* 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 -}; diff --git a/reactos/lib/unicode/cpmap.pl b/reactos/lib/unicode/cpmap.pl deleted file mode 100644 index deea544973e..00000000000 --- a/reactos/lib/unicode/cpmap.pl +++ /dev/null @@ -1,1211 +0,0 @@ -#!/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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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", "IBM EBCDIC US Canada" ], - [ 424, "VENDORS/MISC/CP424.TXT", "IBM EBCDIC Hebrew" ], - [ 437, "VENDORS/MICSFT/PC/CP437.TXT", "OEM United States" ], - [ 500, "VENDORS/MICSFT/EBCDIC/CP500.TXT", "IBM EBCDIC International" ], - [ 737, "VENDORS/MICSFT/PC/CP737.TXT", "OEM Greek 437G" ], - [ 775, "VENDORS/MICSFT/PC/CP775.TXT", "OEM Baltic" ], - [ 850, "VENDORS/MICSFT/PC/CP850.TXT", "OEM Multilingual Latin 1" ], - [ 852, "VENDORS/MICSFT/PC/CP852.TXT", "OEM Slovak Latin 2" ], - [ 855, "VENDORS/MICSFT/PC/CP855.TXT", "OEM Cyrillic" ], - [ 856, "VENDORS/MISC/CP856.TXT", "Hebrew PC" ], - [ 857, "VENDORS/MICSFT/PC/CP857.TXT", "OEM Turkish" ], - [ 860, "VENDORS/MICSFT/PC/CP860.TXT", "OEM Portuguese" ], - [ 861, "VENDORS/MICSFT/PC/CP861.TXT", "OEM Icelandic" ], - [ 862, "VENDORS/MICSFT/PC/CP862.TXT", "OEM Hebrew" ], - [ 863, "VENDORS/MICSFT/PC/CP863.TXT", "OEM Canadian French" ], - [ 864, "VENDORS/MICSFT/PC/CP864.TXT", "OEM Arabic" ], - [ 865, "VENDORS/MICSFT/PC/CP865.TXT", "OEM Nordic" ], - [ 866, "VENDORS/MICSFT/PC/CP866.TXT", "OEM Russian" ], - [ 869, "VENDORS/MICSFT/PC/CP869.TXT", "OEM Greek" ], - [ 874, "VENDORS/MICSFT/PC/CP874.TXT", "ANSI/OEM Thai" ], - [ 875, "VENDORS/MICSFT/EBCDIC/CP875.TXT", "IBM EBCDIC Greek" ], - [ 878, "VENDORS/MISC/KOI8-R.TXT", "Russian KOI8" ], - [ 932, "VENDORS/MICSFT/WINDOWS/CP932.TXT", "ANSI/OEM Japanese Shift-JIS" ], - [ 936, "VENDORS/MICSFT/WINDOWS/CP936.TXT", "ANSI/OEM Simplified Chinese GBK" ], - [ 949, "VENDORS/MICSFT/WINDOWS/CP949.TXT", "ANSI/OEM Korean Unified Hangul" ], - [ 950, "VENDORS/MICSFT/WINDOWS/CP950.TXT", "ANSI/OEM Traditional Chinese Big5" ], - [ 1006, "VENDORS/MISC/CP1006.TXT", "IBM Arabic" ], - [ 1026, "VENDORS/MICSFT/EBCDIC/CP1026.TXT", "IBM EBCDIC Latin 5 Turkish" ], - [ 1250, "VENDORS/MICSFT/WINDOWS/CP1250.TXT", "ANSI Eastern Europe" ], - [ 1251, "VENDORS/MICSFT/WINDOWS/CP1251.TXT", "ANSI Cyrillic" ], - [ 1252, "VENDORS/MICSFT/WINDOWS/CP1252.TXT", "ANSI Latin 1" ], - [ 1253, "VENDORS/MICSFT/WINDOWS/CP1253.TXT", "ANSI Greek" ], - [ 1254, "VENDORS/MICSFT/WINDOWS/CP1254.TXT", "ANSI Turkish" ], - [ 1255, "VENDORS/MICSFT/WINDOWS/CP1255.TXT", "ANSI Hebrew" ], - [ 1256, "VENDORS/MICSFT/WINDOWS/CP1256.TXT", "ANSI Arabic" ], - [ 1257, "VENDORS/MICSFT/WINDOWS/CP1257.TXT", "ANSI Baltic" ], - [ 1258, "VENDORS/MICSFT/WINDOWS/CP1258.TXT", "ANSI/OEM Viet Nam" ], - [ 10000, "VENDORS/MICSFT/MAC/ROMAN.TXT", "Mac Roman" ], - [ 10006, "VENDORS/MICSFT/MAC/GREEK.TXT", "Mac Greek" ], - [ 10007, "VENDORS/MICSFT/MAC/CYRILLIC.TXT", "Mac Cyrillic" ], - [ 10029, "VENDORS/MICSFT/MAC/LATIN2.TXT", "Mac Latin 2" ], - [ 10079, "VENDORS/MICSFT/MAC/ICELAND.TXT", "Mac Icelandic" ], - [ 10081, "VENDORS/MICSFT/MAC/TURKISH.TXT", "Mac Turkish" ], - [ 20866, "VENDORS/MISC/KOI8-R.TXT", "Russian KOI8" ], - [ 20932, "OBSOLETE/EASTASIA/JIS/JIS0208.TXT", "EUC-JP" ], - [ 21866, "VENDORS/MISC/KOI8-U.TXT", "Ukrainian KOI8" ], - [ 28591, "ISO8859/8859-1.TXT", "ISO 8859-1 Latin 1" ], - [ 28592, "ISO8859/8859-2.TXT", "ISO 8859-2 Latin 2 (East European)" ], - [ 28593, "ISO8859/8859-3.TXT", "ISO 8859-3 Latin 3 (South European)" ], - [ 28594, "ISO8859/8859-4.TXT", "ISO 8859-4 Latin 4 (Baltic old)" ], - [ 28595, "ISO8859/8859-5.TXT", "ISO 8859-5 Cyrillic" ], - [ 28596, "ISO8859/8859-6.TXT", "ISO 8859-6 Arabic" ], - [ 28597, "ISO8859/8859-7.TXT", "ISO 8859-7 Greek" ], - [ 28598, "ISO8859/8859-8.TXT", "ISO 8859-8 Hebrew" ], - [ 28599, "ISO8859/8859-9.TXT", "ISO 8859-9 Latin 5 (Turkish)" ], - [ 28600, "ISO8859/8859-10.TXT", "ISO 8859-10 Latin 6 (Nordic)" ], - [ 28603, "ISO8859/8859-13.TXT", "ISO 8859-13 Latin 7 (Baltic)" ], - [ 28604, "ISO8859/8859-14.TXT", "ISO 8859-14 Latin 8 (Celtic)" ], - [ 28605, "ISO8859/8859-15.TXT", "ISO 8859-15 Latin 9 (Euro)" ], - [ 28606, "ISO8859/8859-16.TXT", "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" => 0, # Separator, Line - "Zp" => 0, # 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, 0xfeff ], - "blank" => [ 0x09, 0x20, 0xa0, 0xfeff ] -); - -%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 () - { - 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 () - { - # 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 " 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 =~ /^\s+0020\s+([0-9a-fA-F]+)/) - { - # decomposition " 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"; - @cp2uni = (); - @lead_bytes = (); - @uni2cp = (); - - while () - { - 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]); - next; - } - die "$name: Unrecognized line $_\n"; - } -} - - -################################################################ -# 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; - @cp2uni = (); - @lead_bytes = (); - @uni2cp = (); - - # 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 () - { - 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 () - { - 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" 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, (-1) 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", -1, @keys[($i<<8) .. ($i<<8)+255] ); - } - printf OUTPUT "\n};\n"; - close OUTPUT; -} - - -################################################################ -# 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, $name) = @_; - my $i; - - # output the ascii->unicode table - - 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"; - 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" 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; -} - - -################################################################ -# 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" 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; -} - - -################################################################ -# dump the char composition tables -sub DUMP_COMPOSE_TABLES -{ - open OUTPUT,">compose.c" 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; -} - - -################################################################ -# read an input file and generate the corresponding .c file -sub HANDLE_FILE -{ - my ($codepage,$filename,$comment) = @_; - - # symbol codepage file is special - if ($codepage == 20932) { READ_JIS0208_FILE($MAPPREFIX . $filename); } - 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" or die "Cannot create $output"; - - printf "Building %s from %s (%s)\n", $output, $filename, $comment; - - # dump all tables - - printf OUTPUT "/* code page %03d (%s) */\n", $codepage, $comment; - printf OUTPUT "/* generated from %s */\n", $MAPPREFIX . $filename; - printf OUTPUT "/* DO NOT EDIT!! */\n\n"; - printf OUTPUT "#include \"wine/unicode.h\"\n\n"; - - if ($#lead_bytes == -1) { DUMP_SBCS_TABLE( $codepage, $comment ); } - else { DUMP_DBCS_TABLE( $codepage, $comment ); } - close OUTPUT; -} - - -################################################################ -# 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 () - { - push @lines, $_; - last if /\#\#\# cpmap begin \#\#\#/; - } - push @lines, @data; - while () - { - if (/\#\#\# cpmap end \#\#\#/) { push @lines, "\n", $_; last; } - } - push @lines, ; - open(FILE,">$name") or die "Can't modify $name"; - print FILE @lines; - close(FILE); -} diff --git a/reactos/lib/unicode/cptable.c b/reactos/lib/unicode/cptable.c deleted file mode 100644 index 8fcc910784b..00000000000 --- a/reactos/lib/unicode/cptable.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#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_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_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[60] = -{ - &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_10000, - &cptable_10006, - &cptable_10007, - &cptable_10029, - &cptable_10079, - &cptable_10081, - &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 (unsigned int)codepage - (*(const union cptable **)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( (void *)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]; -} diff --git a/reactos/lib/unicode/defaults b/reactos/lib/unicode/defaults deleted file mode 100644 index c37643ae537..00000000000 --- a/reactos/lib/unicode/defaults +++ /dev/null @@ -1,202 +0,0 @@ -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 diff --git a/reactos/lib/unicode/fold.c b/reactos/lib/unicode/fold.c deleted file mode 100644 index e9839aa4549..00000000000 --- a/reactos/lib/unicode/fold.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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; -} diff --git a/reactos/lib/unicode/makefile b/reactos/lib/unicode/makefile deleted file mode 100644 index 263de228b36..00000000000 --- a/reactos/lib/unicode/makefile +++ /dev/null @@ -1,9 +0,0 @@ -# $Id: makefile 7409 2004-01-02 19:49:47Z gvg $ - -PATH_TO_TOP = ../.. - -TARGET_TYPE = winedll - -include $(PATH_TO_TOP)/rules.mak - -include $(TOOLS_PATH)/helper.mk diff --git a/reactos/lib/unicode/mbtowc.c b/reactos/lib/unicode/mbtowc.c deleted file mode 100644 index 26245e09662..00000000000 --- a/reactos/lib/unicode/mbtowc.c +++ /dev/null @@ -1,298 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include "wine/unicode.h" - -/* get the decomposition of a Unicode char */ -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, - const unsigned char *src, unsigned int srclen ) -{ - const WCHAR * const cp2uni = 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, - const unsigned char *src, unsigned int srclen, - WCHAR *dst, unsigned int dstlen ) -{ - const WCHAR * const cp2uni = 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, - const unsigned char *src, unsigned int srclen, - WCHAR *dst, unsigned int dstlen ) -{ - const WCHAR * const cp2uni = 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 *src, int srclen, - WCHAR *dst, int dstlen ) -{ - if (table->info.char_size == 1) - { - if (flags & MB_ERR_INVALID_CHARS) - { - if (check_invalid_chars_sbcs( &table->sbcs, src, srclen )) return -2; - } - if (!(flags & MB_COMPOSITE)) - { - if (!dstlen) return srclen; - return mbstowcs_sbcs( &table->sbcs, src, srclen, dst, dstlen ); - } - return mbstowcs_sbcs_decompose( &table->sbcs, 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; -} diff --git a/reactos/lib/unicode/sortkey.c b/reactos/lib/unicode/sortkey.c deleted file mode 100644 index e3fac6ddf34..00000000000 --- a/reactos/lib/unicode/sortkey.c +++ /dev/null @@ -1,351 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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) -{ - int real_len = 0; - while (len-- && *str++) real_len++; - return real_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; -} diff --git a/reactos/lib/unicode/string.c b/reactos/lib/unicode/string.c deleted file mode 100644 index 2c3a501d812..00000000000 --- a/reactos/lib/unicode/string.c +++ /dev/null @@ -1,472 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include -#include - -#include "wine/unicode.h" - -#undef strlenW -#undef strcpyW -#undef strcatW -#undef strstrW -#undef strtolW -#undef strchrW -#undef strrchrW -#undef strncmpW -#undef strncpyW -#undef strcmpW -#undef strcmpiW -#undef strncmpiW -#undef sprintfW -#undef snprintfW - -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; -} diff --git a/reactos/lib/unicode/utf8.c b/reactos/lib/unicode/utf8.c deleted file mode 100644 index 39bd54bf3b2..00000000000 --- a/reactos/lib/unicode/utf8.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include "wine/unicode.h" - -/* 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 */ - 1,1,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,3,3,3,4,4,4,4,5,5,0,0 /* 0xf0-0xff */ -}; - -/* first byte mask depending on UTF-8 sequence length */ -static const unsigned char utf8_mask[6] = { 0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01 }; - -/* minimum Unicode value depending on UTF-8 sequence length */ -static const unsigned int utf8_minval[6] = { 0x0, 0x80, 0x800, 0x10000, 0x200000, 0x4000000 }; - - -/* query necessary dst length for src string */ -inline static int get_length_wcs_utf8( const WCHAR *src, unsigned int srclen ) -{ - int len; - for (len = 0; srclen; srclen--, src++, len++) - { - if (*src >= 0x80) - { - len++; - if (*src >= 0x800) len++; - } - } - return len; -} - -/* wide char to UTF-8 string conversion */ -/* return -1 on dst buffer overflow */ -int wine_utf8_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen ) -{ - int len; - - if (!dstlen) return get_length_wcs_utf8( src, srclen ); - - for (len = dstlen; srclen; srclen--, src++) - { - WCHAR ch = *src; - - 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; - } - - /* 0x800-0xffff: 3 bytes */ - - if ((len -= 3) < 0) return -1; /* overflow */ - dst[2] = 0x80 | (ch & 0x3f); - ch >>= 6; - dst[1] = 0x80 | (ch & 0x3f); - ch >>= 6; - dst[0] = 0xe0 | ch; - dst += 3; - } - return dstlen - len; -} - -/* query necessary dst length for src string */ -inline static int get_length_mbs_utf8( const unsigned char *src, int srclen ) -{ - int ret; - const unsigned char *srcend = src + srclen; - - for (ret = 0; src < srcend; ret++) - { - unsigned char ch = *src++; - if (ch < 0xc0) continue; - - switch(utf8_length[ch-0x80]) - { - case 5: - if (src >= srcend) return ret; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) continue; - src++; - case 4: - if (src >= srcend) return ret; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) continue; - src++; - case 3: - if (src >= srcend) return ret; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) continue; - src++; - case 2: - if (src >= srcend) return ret; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) continue; - src++; - case 1: - if (src >= srcend) return ret; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) continue; - src++; - } - } - 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 ) -{ - int len, count; - unsigned int res; - const char *srcend = src + srclen; - - if (!dstlen) return get_length_mbs_utf8( (const unsigned char*)src, srclen ); - - for (count = dstlen; count && (src < srcend); count--, dst++) - { - unsigned char ch = *src++; - if (ch < 0x80) /* special fast case for 7-bit ASCII */ - { - *dst = ch; - continue; - } - len = utf8_length[ch-0x80]; - res = ch & utf8_mask[len]; - - switch(len) - { - case 5: - if (src >= srcend) goto done; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) goto bad; - res = (res << 6) | ch; - src++; - case 4: - if (src >= srcend) goto done; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) goto bad; - res = (res << 6) | ch; - src++; - case 3: - if (src >= srcend) goto done; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) goto bad; - res = (res << 6) | ch; - src++; - case 2: - if (src >= srcend) goto done; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) goto bad; - res = (res << 6) | ch; - src++; - case 1: - if (src >= srcend) goto done; /* ignore partial char */ - if ((ch = *src ^ 0x80) >= 0x40) goto bad; - res = (res << 6) | ch; - src++; - if (res < utf8_minval[len]) goto bad; - if (res >= 0x10000) goto bad; /* FIXME: maybe we should do surrogates here */ - *dst = res; - continue; - } - bad: - if (flags & MB_ERR_INVALID_CHARS) return -2; /* bad char */ - *dst = (WCHAR)'?'; - } - if (src < srcend) return -1; /* overflow */ -done: - return dstlen - count; -} diff --git a/reactos/lib/unicode/wctomb.c b/reactos/lib/unicode/wctomb.c deleted file mode 100644 index 60e4bba9f73..00000000000 --- a/reactos/lib/unicode/wctomb.c +++ /dev/null @@ -1,477 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#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 */ -static 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; - } - - if (dst <= (const char *)src && dst + 16 > (const char *)src) - { - /* overlapping buffers, do it char by char */ - while (srclen--) - { - *dst++ = uni2cp_low[uni2cp_high[*src >> 8] + (*src & 0xff)]; - src++; - } - return ret; - } - - for (;;) - { - switch(srclen) - { - default: - case 16: dst[15] = uni2cp_low[uni2cp_high[src[15] >> 8] + (src[15] & 0xff)]; - case 15: dst[14] = uni2cp_low[uni2cp_high[src[14] >> 8] + (src[14] & 0xff)]; - case 14: dst[13] = uni2cp_low[uni2cp_high[src[13] >> 8] + (src[13] & 0xff)]; - case 13: dst[12] = uni2cp_low[uni2cp_high[src[12] >> 8] + (src[12] & 0xff)]; - case 12: dst[11] = uni2cp_low[uni2cp_high[src[11] >> 8] + (src[11] & 0xff)]; - case 11: dst[10] = uni2cp_low[uni2cp_high[src[10] >> 8] + (src[10] & 0xff)]; - case 10: dst[9] = uni2cp_low[uni2cp_high[src[9] >> 8] + (src[9] & 0xff)]; - case 9: dst[8] = uni2cp_low[uni2cp_high[src[8] >> 8] + (src[8] & 0xff)]; - case 8: dst[7] = uni2cp_low[uni2cp_high[src[7] >> 8] + (src[7] & 0xff)]; - case 7: dst[6] = uni2cp_low[uni2cp_high[src[6] >> 8] + (src[6] & 0xff)]; - case 6: dst[5] = uni2cp_low[uni2cp_high[src[5] >> 8] + (src[5] & 0xff)]; - case 5: dst[4] = uni2cp_low[uni2cp_high[src[4] >> 8] + (src[4] & 0xff)]; - case 4: dst[3] = uni2cp_low[uni2cp_high[src[3] >> 8] + (src[3] & 0xff)]; - case 3: dst[2] = uni2cp_low[uni2cp_high[src[2] >> 8] + (src[2] & 0xff)]; - case 2: dst[1] = uni2cp_low[uni2cp_high[src[1] >> 8] + (src[1] & 0xff)]; - case 1: dst[0] = uni2cp_low[uni2cp_high[src[0] >> 8] + (src[0] & 0xff)]; - case 0: break; - } - if (srclen < 16) return ret; - dst += 16; - src += 16; - srclen -= 16; - } -} - -/* 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; - const unsigned char table_default = table->info.def_char & 0xff; - unsigned int len; - int tmp; - WCHAR composed; - - if (!defchar) defchar = &table_default; - 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 = *defchar; - *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 = *defchar; - *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; -} diff --git a/reactos/lib/unicode/wctype.c b/reactos/lib/unicode/wctype.c deleted file mode 100644 index 626baab4048..00000000000 --- a/reactos/lib/unicode/wctype.c +++ /dev/null @@ -1,1802 +0,0 @@ -/* Unicode ctype tables */ -/* Automatically generated; DO NOT EDIT!! */ - -#include "wine/unicode.h" - -const unsigned short wine_wctype_table[14336] = -{ - /* 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, 0x0900, 0x0900, 0x0900, 0x1b00, 0x1c00, 0x1d00, - 0x1e00, 0x1f00, 0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, - 0x2300, 0x2300, 0x2300, 0x2600, 0x0900, 0x0900, 0x2700, 0x2800, - 0x2900, 0x2a00, 0x2b00, 0x2c00, 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, 0x2d00, 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, 0x2e00, - 0x1600, 0x1600, 0x1600, 0x1600, 0x2f00, 0x0900, 0x0900, 0x0900, - 0x0900, 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, 0x3000, - 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, - 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, - 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, - 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, 0x3100, - 0x3100, 0x1600, 0x3200, 0x3300, 0x3400, 0x3500, 0x3600, 0x3700, - /* 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, 0x5010, 0x7010, 0x5010, 0x7010, 0x4010, - 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, 0x8020, 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, 0xb000, 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, 0x0000, - 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, 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, - 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000, 0x0000, 0x0000, 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, 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, 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, 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, 0x0000, 0x0000, - 0x1101, 0x1102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 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, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0000, 0x0010, 0x0010, 0x0010, 0x2010, 0x0010, - 0x2010, 0x0010, 0x0010, 0x2010, 0x0010, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x2100, 0x2100, 0x2100, 0x2010, 0x2010, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x2000, 0x2000, 0x2000, 0x2000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x7010, 0x2010, 0xb010, 0xb010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x2010, 0x0000, 0x0000, 0x0000, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x2000, 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, 0x0000, - 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 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, 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, 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, 0x0000, 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, 0x0000, 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, 0x0000, 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, 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, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 0x0000, 0x0000, 0x1010, 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, 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, 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, 0x0000, - 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, 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, 0x0000, - 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, 0x0000, - 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, 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, 0x0000, - 0x1100, 0x0000, 0x1100, 0x1100, 0x1100, 0x1100, 0x0000, 0x0000, - 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, 0x0000, - 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, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, - 0x1004, 0x1004, 0x1010, 0x1010, 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, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 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, 0x0010, 0x0010, 0x0010, 0xa008, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, - 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, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 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, 0x0008, 0x0000, 0x0000, 0x1000, 0x2000, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xa000, 0x8000, 0xb000, 0xb000, 0xb000, 0xb000, 0xb000, 0xa008, - 0x5010, 0x5010, 0x5010, 0x5010, 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, 0x0000, 0x0000, 0xb010, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3010, 0x1102, 0x0000, 0x0000, 0x3010, 0x3010, 0x3010, 0x3010, - 0x3010, 0x3010, 0x5010, 0x5010, 0xb010, 0xb010, 0xb010, 0x1102, - 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, - 0x3010, 0x3010, 0x5010, 0x5010, 0xb010, 0xb010, 0xb010, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 0xb010, 0x1101, 0x1102, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1102, 0xb010, 0xb010, 0x0000, 0x1102, 0x1101, 0x1101, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0x1101, 0x1102, 0x1102, - 0x1102, 0x1102, 0xb010, 0xb010, 0x0000, 0x0000, 0x0000, 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, 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, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0x5010, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, - 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, - 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, - 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, - 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, - 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, 0x3010, - 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, 0x3010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, - 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, 0xb010, 0xb010, 0xb010, 0xb010, 0xb010, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 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, 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, - 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, 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, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, - 0xa008, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 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, 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, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 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, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, - 0x1100, 0x1100, 0x1100, 0x1100, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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, 0x5010, 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, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 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, 0x5010, 0x5010, 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, 0x0048, - 0x0000, 0xb010, 0xb010, 0x5010, 0x5010, 0x5010, 0xb010, 0xb010, - 0xb010, 0xb010, 0xb010, 0x5010, 0x7010, 0x5010, 0x7010, 0x4010, - 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, 0x0000, 0x0000, 0x0000, 0xb010, 0xb010, 0x0000, 0x0000 -}; diff --git a/reactos/lib/unicode/wine_unicode.def b/reactos/lib/unicode/wine_unicode.def deleted file mode 100644 index 634ac40c632..00000000000 --- a/reactos/lib/unicode/wine_unicode.def +++ /dev/null @@ -1,27 +0,0 @@ -LIBRARY wine_unicode.dll - -EXPORTS - memicmpW - snprintfW - sprintfW - strcmpiW - strncmpiW - strstrW - strtolW - strtoulW - vsnprintfW - vsprintfW - 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_fold_string - wine_get_sortkey - wine_utf8_mbstowcs - wine_utf8_wcstombs - wine_wctype_table From ed90f1d041b7246f92702c985feb5139fdcde756 Mon Sep 17 00:00:00 2001 From: Art Yerkes Date: Wed, 16 Feb 2005 16:52:51 +0000 Subject: [PATCH 072/248] Fix compilation with -O3 and fix bugs 484 and 505. win32k patches by Tinus. svn path=/trunk/; revision=13598 --- reactos/hal/hal/hal.c | 8 ++++++++ reactos/hal/halx86/generic/timer.c | 2 +- reactos/ntoskrnl/cc/cacheman.c | 4 +++- reactos/ntoskrnl/ex/time.c | 2 ++ reactos/subsys/win32k/eng/mouse.c | 6 ++++-- reactos/subsys/win32k/ntuser/winsta.c | 3 +++ reactos/subsys/win32k/objects/dc.c | 5 +++++ 7 files changed, 26 insertions(+), 4 deletions(-) diff --git a/reactos/hal/hal/hal.c b/reactos/hal/hal/hal.c index 16aa80f5d4e..c35c577eae5 100644 --- a/reactos/hal/hal/hal.c +++ b/reactos/hal/hal/hal.c @@ -384,6 +384,8 @@ HalReadDmaCounter( PADAPTER_OBJECT AdapterObject) { UNIMPLEMENTED; + + return 0; } @@ -682,6 +684,8 @@ STDCALL KdPortDisableInterrupts() { UNIMPLEMENTED; + + return FALSE; } @@ -690,6 +694,8 @@ STDCALL KdPortEnableInterrupts() { UNIMPLEMENTED; + + return FALSE; } @@ -709,6 +715,8 @@ KeAcquireSpinLockRaiseToSynch( PKSPIN_LOCK SpinLock) { UNIMPLEMENTED; + + return 0; } diff --git a/reactos/hal/halx86/generic/timer.c b/reactos/hal/halx86/generic/timer.c index da3741a736b..78a2a3d6554 100644 --- a/reactos/hal/halx86/generic/timer.c +++ b/reactos/hal/halx86/generic/timer.c @@ -99,7 +99,7 @@ static BOOLEAN UdelayCalibrated = FALSE; * For supported compilers we use inline assembler. For the others, * portable plain C. */ -VOID STDCALL +VOID STDCALL __attribute__((noinline)) __KeStallExecutionProcessor(ULONG Loops) { if (!Loops) diff --git a/reactos/ntoskrnl/cc/cacheman.c b/reactos/ntoskrnl/cc/cacheman.c index b95459f979f..945d0e03921 100644 --- a/reactos/ntoskrnl/cc/cacheman.c +++ b/reactos/ntoskrnl/cc/cacheman.c @@ -1,4 +1,4 @@ -/* $Id:$ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -49,6 +49,8 @@ CcRemapBcb ( ) { UNIMPLEMENTED; + + return 0; } /* diff --git a/reactos/ntoskrnl/ex/time.c b/reactos/ntoskrnl/ex/time.c index 9e5965893a4..93cc43f5124 100644 --- a/reactos/ntoskrnl/ex/time.c +++ b/reactos/ntoskrnl/ex/time.c @@ -290,6 +290,8 @@ ExSetTimerResolution ( ) { UNIMPLEMENTED; + + return 0; } diff --git a/reactos/subsys/win32k/eng/mouse.c b/reactos/subsys/win32k/eng/mouse.c index 57c7c7d1801..6d540c5ca04 100644 --- a/reactos/subsys/win32k/eng/mouse.c +++ b/reactos/subsys/win32k/eng/mouse.c @@ -243,7 +243,7 @@ IntShowMousePointer(GDIDEVICE *ppdev, SURFOBJ *DestSurface) RECTL DestRect; POINTL SrcPoint; SURFOBJ *ColorSurf; - SURFOBJ *MaskSurf; + SURFOBJ *MaskSurf = NULL; DestRect.left = max(pt.x, 0); DestRect.top = max(pt.y, 0); @@ -257,7 +257,9 @@ IntShowMousePointer(GDIDEVICE *ppdev, SURFOBJ *DestSurface) SrcPoint.x = max(-pt.x, 0); SrcPoint.y = max(-pt.y, 0); - MaskSurf = EngLockSurface(pgp->MaskSurface); + if (pgp->MaskSurface) + MaskSurf = EngLockSurface(pgp->MaskSurface); + if (MaskSurf != NULL) { if (pgp->ColorSurface != NULL) diff --git a/reactos/subsys/win32k/ntuser/winsta.c b/reactos/subsys/win32k/ntuser/winsta.c index 76755d5ff30..d55f6275e36 100644 --- a/reactos/subsys/win32k/ntuser/winsta.c +++ b/reactos/subsys/win32k/ntuser/winsta.c @@ -199,6 +199,9 @@ IntInitializeDesktopGraphics(VOID) NtUserAcquireOrReleaseInputOwnership(FALSE); + /* Setup the cursor */ + IntLoadDefaultCursors(); + return TRUE; } diff --git a/reactos/subsys/win32k/objects/dc.c b/reactos/subsys/win32k/objects/dc.c index ad19cee6efd..5ef2813bf1e 100644 --- a/reactos/subsys/win32k/objects/dc.c +++ b/reactos/subsys/win32k/objects/dc.c @@ -664,6 +664,11 @@ IntCreatePrimarySurface() SurfaceRect.bottom = SurfObj->sizlBitmap.cy; /* FIXME - why does EngEraseSurface() sometimes crash? EngEraseSurface(SurfObj, &SurfaceRect, 0); */ + + /* Put the pointer in the center of the screen */ + GDIDEV(SurfObj)->Pointer.Pos.x = (SurfaceRect.right - SurfaceRect.left) / 2; + GDIDEV(SurfObj)->Pointer.Pos.y = (SurfaceRect.bottom - SurfaceRect.top) / 2; + EngUnlockSurface(SurfObj); IntShowDesktop(IntGetActiveDesktop(), SurfSize.cx, SurfSize.cy); break; From 95a579734f02b053665f14174a8cfe3446546875 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 16 Feb 2005 18:02:50 +0000 Subject: [PATCH 073/248] Minor formatting change. svn path=/trunk/; revision=13599 --- reactos/include/ddk/csq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/include/ddk/csq.h b/reactos/include/ddk/csq.h index d3d2d3ecb76..62f2d524d20 100644 --- a/reactos/include/ddk/csq.h +++ b/reactos/include/ddk/csq.h @@ -34,8 +34,8 @@ * * USAGE * - * This library follows exactly the same interface as the Microsoft Cancel-Safe Queue - * routines (IoCsqXxx()). As such, the authoritative reference is the + * This library follows exactly the same interface as the Microsoft Cancel-Safe + * Queue routines (IoCsqXxx()). As such, the authoritative reference is the * current DDK. There is also a DDK sample called "cancel" that has an * example of how to use this code. I have also provided a sample driver * that makes use of this queue. Finally, please do read the header and the From 85d110c02b60e37235cb112b177be0ccfd794a79 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 16 Feb 2005 18:10:12 +0000 Subject: [PATCH 074/248] Fix definition of MIDL_SERVER_INFO structure. svn path=/trunk/; revision=13600 --- reactos/w32api/include/rpcndr.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/reactos/w32api/include/rpcndr.h b/reactos/w32api/include/rpcndr.h index c95df95b129..d777e862548 100644 --- a/reactos/w32api/include/rpcndr.h +++ b/reactos/w32api/include/rpcndr.h @@ -316,6 +316,17 @@ typedef struct _MIDL_FORMAT_STRING { short Pad; unsigned char Format[1]; } 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)(void); typedef struct _MIDL_SERVER_INFO_ { @@ -324,6 +335,9 @@ typedef struct _MIDL_SERVER_INFO_ { 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; From e757e556cfce01a5ea381252e6dbc6877b358161 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 16 Feb 2005 18:12:15 +0000 Subject: [PATCH 075/248] Fix a typo. svn path=/trunk/; revision=13601 --- reactos/doc/README.WINE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/doc/README.WINE b/reactos/doc/README.WINE index e1009d7acb4..693fc6734a1 100644 --- a/reactos/doc/README.WINE +++ b/reactos/doc/README.WINE @@ -80,7 +80,7 @@ reactos/lib/imm32 # reactos/lib/uuid # advapi32 - - reactos/lib/advapi32/crypyto/*.c # Synced to Wine-20041201 + reactos/lib/advapi32/crypto/*.c # Synced to Wine-20041201 gdi32 - reactos/lib/gdi32/objects/linedda.c # Out of sync From bc6becf4da20c29ec5ae0b5f1f0a58720005cc6a Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 16 Feb 2005 18:19:54 +0000 Subject: [PATCH 076/248] Fix email address. svn path=/trunk/; revision=13602 --- reactos/ntoskrnl/se/access.c | 2 +- reactos/ntoskrnl/se/audit.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/ntoskrnl/se/access.c b/reactos/ntoskrnl/se/access.c index 422ec1e301b..a50a318e5ad 100644 --- a/reactos/ntoskrnl/se/access.c +++ b/reactos/ntoskrnl/se/access.c @@ -5,7 +5,7 @@ * FILE: ntoskrnl/se/access.c * PURPOSE: Access rights handling functions * - * PROGRAMMERS: Eric Kohl + * PROGRAMMERS: Eric Kohl */ /* INCLUDES *****************************************************************/ diff --git a/reactos/ntoskrnl/se/audit.c b/reactos/ntoskrnl/se/audit.c index d65b6958b40..710d635b850 100644 --- a/reactos/ntoskrnl/se/audit.c +++ b/reactos/ntoskrnl/se/audit.c @@ -5,7 +5,7 @@ * FILE: ntoskrnl/se/audit.c * PURPOSE: Audit functions * - * PROGRAMMERS: Eric Kohl (ekohl@rz-online.de) + * PROGRAMMERS: Eric Kohl */ /* INCLUDES *****************************************************************/ From 653694723917d31efbefafd962b93d53b86e0a11 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Wed, 16 Feb 2005 18:21:21 +0000 Subject: [PATCH 077/248] Cast pointers to ULONG_PTR instead of ULONG. svn path=/trunk/; revision=13603 --- reactos/ntoskrnl/mm/i386/pfault.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/reactos/ntoskrnl/mm/i386/pfault.c b/reactos/ntoskrnl/mm/i386/pfault.c index fedd6fbfb9c..cdf35a63f8c 100644 --- a/reactos/ntoskrnl/mm/i386/pfault.c +++ b/reactos/ntoskrnl/mm/i386/pfault.c @@ -1,4 +1,4 @@ -/* $Id:$ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -75,18 +75,18 @@ NTSTATUS MmPageFault(ULONG Cs, KeLowerIrql(oldIrql); } if (!NT_SUCCESS(Status) && (Mode == KernelMode) && - ((*Eip) >= (ULONG)MmSafeCopyFromUserUnsafeStart) && - ((*Eip) <= (ULONG)MmSafeCopyFromUserRestart)) + ((*Eip) >= (ULONG_PTR)MmSafeCopyFromUserUnsafeStart) && + ((*Eip) <= (ULONG_PTR)MmSafeCopyFromUserRestart)) { - (*Eip) = (ULONG)MmSafeCopyFromUserRestart; + (*Eip) = (ULONG_PTR)MmSafeCopyFromUserRestart; (*Eax) = STATUS_ACCESS_VIOLATION; return(STATUS_SUCCESS); } if (!NT_SUCCESS(Status) && (Mode == KernelMode) && - ((*Eip) >= (ULONG)MmSafeCopyToUserUnsafeStart) && - ((*Eip) <= (ULONG)MmSafeCopyToUserRestart)) + ((*Eip) >= (ULONG_PTR)MmSafeCopyToUserUnsafeStart) && + ((*Eip) <= (ULONG_PTR)MmSafeCopyToUserRestart)) { - (*Eip) = (ULONG)MmSafeCopyToUserRestart; + (*Eip) = (ULONG_PTR)MmSafeCopyToUserRestart; (*Eax) = STATUS_ACCESS_VIOLATION; return(STATUS_SUCCESS); } From 70350430a51317542a1a8c709bc974e94a441c49 Mon Sep 17 00:00:00 2001 From: Casper Hornstrup Date: Wed, 16 Feb 2005 21:07:55 +0000 Subject: [PATCH 078/248] Support multiple channels svn path=/trunk/; revision=13604 --- irc/TechBot/TechBot.Console/App.config | 2 +- irc/TechBot/TechBot.Console/Main.cs | 12 +- irc/TechBot/TechBot.Library/ApiCommand.cs | 118 +++++++++++------- irc/TechBot/TechBot.Library/HelpCommand.cs | 11 +- irc/TechBot/TechBot.Library/HresultCommand.cs | 15 ++- irc/TechBot/TechBot.Library/ICommand.cs | 3 +- irc/TechBot/TechBot.Library/IrcService.cs | 107 +++++++++++++--- irc/TechBot/TechBot.Library/MessageContext.cs | 23 ++++ .../TechBot.Library/NtStatusCommand.cs | 15 ++- irc/TechBot/TechBot.Library/ServiceOutput.cs | 3 +- irc/TechBot/TechBot.Library/SvnCommand.cs | 6 +- irc/TechBot/TechBot.Library/TechBotService.cs | 22 ++-- .../TechBot.Library/WinerrorCommand.cs | 15 ++- irc/TechBot/TechBot/App.config | 2 +- irc/TechBot/TechBot/ServiceThread.cs | 6 +- 15 files changed, 251 insertions(+), 109 deletions(-) create mode 100644 irc/TechBot/TechBot.Library/MessageContext.cs diff --git a/irc/TechBot/TechBot.Console/App.config b/irc/TechBot/TechBot.Console/App.config index bdb4e734fac..f7fa9ac9905 100644 --- a/irc/TechBot/TechBot.Console/App.config +++ b/irc/TechBot/TechBot.Console/App.config @@ -3,7 +3,7 @@ - + diff --git a/irc/TechBot/TechBot.Console/Main.cs b/irc/TechBot/TechBot.Console/Main.cs index 9705e678925..f658ec38cde 100644 --- a/irc/TechBot/TechBot.Console/Main.cs +++ b/irc/TechBot/TechBot.Console/Main.cs @@ -6,7 +6,8 @@ namespace TechBot.Console { public class ConsoleServiceOutput : IServiceOutput { - public void WriteLine(string message) + public void WriteLine(MessageContext context, + string message) { System.Console.WriteLine(message); } @@ -49,11 +50,11 @@ namespace TechBot.Console } } - private static string IRCChannelName + private static string IRCChannelNames { get { - string optionName = "IRCChannelName"; + string optionName = "IRCChannelNames"; string s = ConfigurationSettings.AppSettings[optionName]; VerifyRequiredOption(optionName, s); @@ -149,7 +150,7 @@ namespace TechBot.Console { IrcService ircService = new IrcService(IRCServerHostName, IRCServerHostPort, - IRCChannelName, + IRCChannelNames, IRCBotName, ChmPath, MainChm, @@ -180,7 +181,8 @@ namespace TechBot.Console while (true) { string s = System.Console.ReadLine(); - service.InjectMessage(s); + service.InjectMessage(null, + s); } } } diff --git a/irc/TechBot/TechBot.Library/ApiCommand.cs b/irc/TechBot/TechBot.Library/ApiCommand.cs index 767a3b2f1eb..b6aab953f09 100644 --- a/irc/TechBot/TechBot.Library/ApiCommand.cs +++ b/irc/TechBot/TechBot.Library/ApiCommand.cs @@ -26,10 +26,12 @@ namespace TechBot.Library Run(); } - private void WriteIfVerbose(string message) + private void WriteIfVerbose(MessageContext context, + string message) { if (IsVerbose) - serviceOutput.WriteLine(message); + serviceOutput.WriteLine(context, + message); } private void Run() @@ -70,13 +72,15 @@ namespace TechBot.Library new string[] { "api" }); } - public void Handle(string commandName, + public void Handle(MessageContext context, + string commandName, string parameters) { if (parameters.Trim().Equals(String.Empty)) - DisplayNoKeyword(); + DisplayNoKeyword(context); else - Search(parameters); + Search(context, + parameters); } public string Help() @@ -84,7 +88,8 @@ namespace TechBot.Library return "!api "; } - private bool SearchIndex(string keyword) + private bool SearchIndex(MessageContext context, + string keyword) { if (chm.HasIndex) { @@ -92,14 +97,18 @@ namespace TechBot.Library IndexType.KeywordLinks); if (item != null && item.Topics.Count > 0) { - WriteIfVerbose(String.Format("Keyword {0} found in index", + WriteIfVerbose(context, + String.Format("Keyword {0} found in index", item.KeyWord)); IndexTopic indexTopic = item.Topics[0] as IndexTopic; - return DisplayResult(keyword, indexTopic); + return DisplayResult(context, + keyword, + indexTopic); } else { - WriteIfVerbose(String.Format("Keyword {0} not found in index", + WriteIfVerbose(context, + String.Format("Keyword {0} not found in index", keyword)); return false; } @@ -108,14 +117,12 @@ namespace TechBot.Library return false; } - private void SearchFullText(string keyword) + private void SearchFullText(MessageContext context, + string keyword) { string sort = "Rating ASC"; -/* - sort = "Location ASC"); - sort = "Title ASC"); -*/ - WriteIfVerbose(String.Format("Searching fulltext database for {0}", + WriteIfVerbose(context, + String.Format("Searching fulltext database for {0}", keyword)); bool partialMatches = false; @@ -125,47 +132,58 @@ namespace TechBot.Library maxResults, partialMatches, titlesOnly); - WriteIfVerbose(String.Format("results.Rows.Count = {0}", + WriteIfVerbose(context, + String.Format("results.Rows.Count = {0}", results != null ? results.Rows.Count.ToString() : "(none)")); if (results != null && results.Rows.Count > 0) { results.DefaultView.Sort = sort; - if (!DisplayResult(keyword, results)) + if (!DisplayResult(context, + keyword, + results)) { - DisplayNoResult(keyword); + DisplayNoResult(context, + keyword); } } else { - DisplayNoResult(keyword); + DisplayNoResult(context, + keyword); } } - private void Search(string keyword) + private void Search(MessageContext context, + string keyword) { - if (!SearchIndex(keyword)) - { - SearchFullText(keyword); - } + if (!SearchIndex(context, + keyword)) + SearchFullText(context, + keyword); } - private bool DisplayResult(string keyword, + private bool DisplayResult(MessageContext context, + string keyword, IndexTopic indexTopic) { keyword = keyword.Trim().ToLower(); string url = indexTopic.URL; - WriteIfVerbose(String.Format("URL from index search {0}", + WriteIfVerbose(context, + String.Format("URL from index search {0}", url)); - string prototype = ExtractPrototype(url); + string prototype = ExtractPrototype(context, + url); if (prototype == null || prototype.Trim().Equals(String.Empty)) return false; string formattedPrototype = FormatPrototype(prototype); - serviceOutput.WriteLine(formattedPrototype); + serviceOutput.WriteLine(context, + formattedPrototype); return true; } - private bool DisplayResult(string keyword, + private bool DisplayResult(MessageContext context, + string keyword, DataTable results) { keyword = keyword.Trim().ToLower(); @@ -173,31 +191,38 @@ namespace TechBot.Library { DataRowView row = results.DefaultView[i]; string title = row["Title"].ToString(); - WriteIfVerbose(String.Format("Examining {0}", title)); + WriteIfVerbose(context, + String.Format("Examining {0}", title)); if (title.Trim().ToLower().Equals(keyword)) { string location = row["Location"].ToString(); string rating = row["Rating"].ToString(); string url = row["Url"].ToString(); - string prototype = ExtractPrototype(url); + string prototype = ExtractPrototype(context, + url); if (prototype == null || prototype.Trim().Equals(String.Empty)) continue; string formattedPrototype = FormatPrototype(prototype); - serviceOutput.WriteLine(formattedPrototype); + serviceOutput.WriteLine(context, + formattedPrototype); return true; } } return false; } - private void DisplayNoResult(string keyword) + private void DisplayNoResult(MessageContext context, + string keyword) { - serviceOutput.WriteLine(String.Format("I don't know about keyword {0}", keyword)); + serviceOutput.WriteLine(context, + String.Format("I don't know about keyword {0}", + keyword)); } - private void DisplayNoKeyword() + private void DisplayNoKeyword(MessageContext context) { - serviceOutput.WriteLine("Please give me a keyword."); + serviceOutput.WriteLine(context, + "Please give me a keyword."); } private string ReplaceComments(string s) @@ -241,9 +266,11 @@ namespace TechBot.Library return s; } - private string ExtractPrototype(string url) + private string ExtractPrototype(MessageContext context, + string url) { - string page = GetPage(url); + string page = GetPage(context, + url); Match match = Regex.Match(page, "
(.+)
", RegexOptions.Multiline | @@ -273,7 +300,8 @@ namespace TechBot.Library return Regex.Replace(html, @"<(.|\n)*?>", String.Empty); } - private string GetPage(string url) + private string GetPage(MessageContext context, + string url) { string CHMFileName = ""; string topicName = ""; @@ -288,7 +316,8 @@ namespace TechBot.Library } else { - baseStream = GetBaseStreamFromCHMFileName(CHMFileName); + baseStream = GetBaseStreamFromCHMFileName(context, + CHMFileName); } if ((topicName == "") || (CHMFileName == "") || (baseStream == null)) @@ -299,11 +328,13 @@ namespace TechBot.Library return baseStream.ExtractTextFile(topicName); } - private CHMStream.CHMStream GetBaseStreamFromCHMFileName(string CHMFileName) + private CHMStream.CHMStream GetBaseStreamFromCHMFileName(MessageContext context, + string CHMFileName) { foreach (CHMFile file in chm.FileList) { - WriteIfVerbose(String.Format("Compare: {0} <> {1}", + WriteIfVerbose(context, + String.Format("Compare: {0} <> {1}", file.ChmFilePath, CHMFileName)); if (file.ChmFilePath.ToLower().Equals(CHMFileName.ToLower())) @@ -311,7 +342,8 @@ namespace TechBot.Library return file.BaseStream; } } - WriteIfVerbose(String.Format("Could not find loaded CHM file in list: {0}", + WriteIfVerbose(context, + String.Format("Could not find loaded CHM file in list: {0}", CHMFileName)); return null; } diff --git a/irc/TechBot/TechBot.Library/HelpCommand.cs b/irc/TechBot/TechBot.Library/HelpCommand.cs index b38cffb9268..4e5ce731fb2 100644 --- a/irc/TechBot/TechBot.Library/HelpCommand.cs +++ b/irc/TechBot/TechBot.Library/HelpCommand.cs @@ -21,12 +21,17 @@ namespace TechBot.Library new string[] { "help" }); } - public void Handle(string commandName, + public void Handle(MessageContext context, + string commandName, string parameters) { - serviceOutput.WriteLine("I support the following commands:"); + serviceOutput.WriteLine(context, + "I support the following commands:"); foreach (ICommand command in commands) - serviceOutput.WriteLine(command.Help()); + { + serviceOutput.WriteLine(context, + command.Help()); + } } public string Help() diff --git a/irc/TechBot/TechBot.Library/HresultCommand.cs b/irc/TechBot/TechBot.Library/HresultCommand.cs index a81567e5e50..df9ef4ead76 100644 --- a/irc/TechBot/TechBot.Library/HresultCommand.cs +++ b/irc/TechBot/TechBot.Library/HresultCommand.cs @@ -24,13 +24,15 @@ namespace TechBot.Library new string[] { "hresult" }); } - public void Handle(string commandName, + public void Handle(MessageContext context, + string commandName, string parameters) { string hresultText = parameters; if (hresultText.Equals(String.Empty)) { - serviceOutput.WriteLine("Please provide a valid HRESULT value."); + serviceOutput.WriteLine(context, + "Please provide a valid HRESULT value."); return; } @@ -38,7 +40,8 @@ namespace TechBot.Library long hresult = np.Parse(hresultText); if (np.Error) { - serviceOutput.WriteLine(String.Format("{0} is not a valid HRESULT value.", + serviceOutput.WriteLine(context, + String.Format("{0} is not a valid HRESULT value.", hresultText)); return; } @@ -46,13 +49,15 @@ namespace TechBot.Library string description = GetHresultDescription(hresult); if (description != null) { - serviceOutput.WriteLine(String.Format("{0} is {1}.", + serviceOutput.WriteLine(context, + String.Format("{0} is {1}.", hresultText, description)); } else { - serviceOutput.WriteLine(String.Format("I don't know about HRESULT {0}.", + serviceOutput.WriteLine(context, + String.Format("I don't know about HRESULT {0}.", hresultText)); } } diff --git a/irc/TechBot/TechBot.Library/ICommand.cs b/irc/TechBot/TechBot.Library/ICommand.cs index 3c9edea0694..b88c911e70a 100644 --- a/irc/TechBot/TechBot.Library/ICommand.cs +++ b/irc/TechBot/TechBot.Library/ICommand.cs @@ -5,7 +5,8 @@ namespace TechBot.Library public interface ICommand { bool CanHandle(string commandName); - void Handle(string commandName, + void Handle(MessageContext context, + string commandName, string parameters); string Help(); } diff --git a/irc/TechBot/TechBot.Library/IrcService.cs b/irc/TechBot/TechBot.Library/IrcService.cs index 42abdec94b8..efb9d60b01c 100644 --- a/irc/TechBot/TechBot.Library/IrcService.cs +++ b/irc/TechBot/TechBot.Library/IrcService.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Threading; using TechBot.IRCLibrary; @@ -8,7 +9,7 @@ namespace TechBot.Library { private string hostname; private int port; - private string channelname; + private string channelnames; private string botname; private string chmPath; private string mainChm; @@ -17,13 +18,13 @@ namespace TechBot.Library private string hresultXml; private string svnCommand; private IrcClient client; - private IrcChannel channel1; + private ArrayList channels = new ArrayList(); /* IrcChannel */ private TechBotService service; private bool isStopped = false; public IrcService(string hostname, int port, - string channelname, + string channelnames, string botname, string chmPath, string mainChm, @@ -34,7 +35,7 @@ namespace TechBot.Library { this.hostname = hostname; this.port = port; - this.channelname = channelname; + this.channelnames = channelnames; this.botname = botname; this.chmPath = chmPath; this.mainChm = mainChm; @@ -65,28 +66,51 @@ namespace TechBot.Library System.Console.WriteLine("Connected..."); client.Register(botname, null); System.Console.WriteLine(String.Format("Registered as {0}...", botname)); - channel1 = client.JoinChannel(channelname); - System.Console.WriteLine(String.Format("Joined channel {0}...", channelname)); + JoinChannels(); while (!isStopped) { Thread.Sleep(1000); } - client.PartChannel(channel1, "Caught in the bitstream..."); + PartChannels(); client.Diconnect(); System.Console.WriteLine("Disconnected..."); } - + public void Stop() { isStopped = true; } - - public void WriteLine(string message) + + private void JoinChannels() { - Console.WriteLine(String.Format("Sending: {0}", message)); - channel1.Talk(message); + foreach (string channelname in channelnames.Split(new char[] { ';' })) + { + IrcChannel channel = client.JoinChannel(channelname); + channels.Add(channel); + System.Console.WriteLine(String.Format("Joined channel #{0}...", + channel.Name)); + } + } + + private void PartChannels() + { + foreach (IrcChannel channel in channels) + { + client.PartChannel(channel, "Caught in the bitstream..."); + System.Console.WriteLine(String.Format("Parted channel #{0}...", + channel.Name)); + } + } + + public void WriteLine(MessageContext context, + string message) + { + Console.WriteLine(String.Format("Sending: {0} to #{1}", + message, + context.Channel != null ? context.Channel.Name : "(null)")); + context.Channel.Talk(message); } private void ExtractMessage(string parameters, @@ -102,22 +126,65 @@ namespace TechBot.Library message = parameters; } } - + + private bool GetChannelName(IrcMessage message, + out string channelName) + { + if (message.Parameters == null || !message.Parameters.StartsWith("#")) + { + channelName = null; + return false; + } + + int index = message.Parameters.IndexOf(' '); + if (index == -1) + index = message.Parameters.Length; + channelName = message.Parameters.Substring(1, index - 1); + return true; + } + + private bool ShouldAcceptMessage(IrcMessage message, + out MessageContext context) + { + if (message.Command.ToUpper().Equals("PRIVMSG")) + { + string channelName; + if (GetChannelName(message, + out channelName)) + { + foreach (IrcChannel channel in channels) + { + if (String.Compare(channel.Name, channelName, true) == 0) + { + context = new MessageContext(channel); + return true; + } + } + } + } + context = null; + return false; + } + private void client_MessageReceived(IrcMessage message) { try { - if (channel1 != null && - channel1.Name != null && + if (message.Command != null && message.Parameters != null) { string injectMessage; - ExtractMessage(message.Parameters, out injectMessage); - if ((message.Command.ToUpper().Equals("PRIVMSG")) && - (message.Parameters.ToLower().StartsWith("#" + channel1.Name.ToLower() + " "))) + ExtractMessage(message.Parameters, + out injectMessage); + MessageContext context; + if (ShouldAcceptMessage(message, + out context)) { - Console.WriteLine("Injecting: " + injectMessage); - service.InjectMessage(injectMessage); + Console.WriteLine(String.Format("Injecting: {0} from #{1}", + injectMessage, + context.Channel.Name)); + service.InjectMessage(context, + injectMessage); } else { diff --git a/irc/TechBot/TechBot.Library/MessageContext.cs b/irc/TechBot/TechBot.Library/MessageContext.cs new file mode 100644 index 00000000000..dca3925fdad --- /dev/null +++ b/irc/TechBot/TechBot.Library/MessageContext.cs @@ -0,0 +1,23 @@ +using System; +using TechBot.IRCLibrary; + +namespace TechBot.Library +{ + public class MessageContext + { + private IrcChannel channel; + + public IrcChannel Channel + { + get + { + return channel; + } + } + + public MessageContext(IrcChannel channel) + { + this.channel = channel; + } + } +} diff --git a/irc/TechBot/TechBot.Library/NtStatusCommand.cs b/irc/TechBot/TechBot.Library/NtStatusCommand.cs index 081d60a841a..6841156f1e5 100644 --- a/irc/TechBot/TechBot.Library/NtStatusCommand.cs +++ b/irc/TechBot/TechBot.Library/NtStatusCommand.cs @@ -24,13 +24,15 @@ namespace TechBot.Library new string[] { "ntstatus" }); } - public void Handle(string commandName, + public void Handle(MessageContext context, + string commandName, string parameters) { string ntstatusText = parameters; if (ntstatusText.Equals(String.Empty)) { - serviceOutput.WriteLine("Please provide a valid NTSTATUS value."); + serviceOutput.WriteLine(context, + "Please provide a valid NTSTATUS value."); return; } @@ -38,7 +40,8 @@ namespace TechBot.Library long ntstatus = np.Parse(ntstatusText); if (np.Error) { - serviceOutput.WriteLine(String.Format("{0} is not a valid NTSTATUS value.", + serviceOutput.WriteLine(context, + String.Format("{0} is not a valid NTSTATUS value.", ntstatusText)); return; } @@ -46,13 +49,15 @@ namespace TechBot.Library string description = GetNtstatusDescription(ntstatus); if (description != null) { - serviceOutput.WriteLine(String.Format("{0} is {1}.", + serviceOutput.WriteLine(context, + String.Format("{0} is {1}.", ntstatusText, description)); } else { - serviceOutput.WriteLine(String.Format("I don't know about NTSTATUS {0}.", + serviceOutput.WriteLine(context, + String.Format("I don't know about NTSTATUS {0}.", ntstatusText)); } } diff --git a/irc/TechBot/TechBot.Library/ServiceOutput.cs b/irc/TechBot/TechBot.Library/ServiceOutput.cs index c0d4474f1ae..809cc930819 100644 --- a/irc/TechBot/TechBot.Library/ServiceOutput.cs +++ b/irc/TechBot/TechBot.Library/ServiceOutput.cs @@ -4,6 +4,7 @@ namespace TechBot.Library { public interface IServiceOutput { - void WriteLine(string message); + void WriteLine(MessageContext context, + string message); } } diff --git a/irc/TechBot/TechBot.Library/SvnCommand.cs b/irc/TechBot/TechBot.Library/SvnCommand.cs index 32c77cc380d..7b2fce56cee 100644 --- a/irc/TechBot/TechBot.Library/SvnCommand.cs +++ b/irc/TechBot/TechBot.Library/SvnCommand.cs @@ -20,10 +20,12 @@ namespace TechBot.Library new string[] { "svn" }); } - public void Handle(string commandName, + public void Handle(MessageContext context, + string commandName, string parameters) { - serviceOutput.WriteLine(svnCommand); + serviceOutput.WriteLine(context, + svnCommand); } public string Help() diff --git a/irc/TechBot/TechBot.Library/TechBotService.cs b/irc/TechBot/TechBot.Library/TechBotService.cs index 32a8ec360f6..aede24db4fe 100644 --- a/irc/TechBot/TechBot.Library/TechBotService.cs +++ b/irc/TechBot/TechBot.Library/TechBotService.cs @@ -9,8 +9,6 @@ namespace TechBot.Library { public class TechBotService { - private const bool IsVerbose = false; - private IServiceOutput serviceOutput; private string chmPath; private string mainChm; @@ -37,12 +35,6 @@ namespace TechBot.Library this.svnCommand = svnCommand; } - private void WriteIfVerbose(string message) - { - if (IsVerbose) - serviceOutput.WriteLine(message); - } - public void Run() { commands.Add(new HelpCommand(serviceOutput, @@ -60,12 +52,12 @@ namespace TechBot.Library svnCommand)); } - public void InjectMessage(string message) + public void InjectMessage(MessageContext context, + string message) { if (message.StartsWith("!")) - { - ParseCommandMessage(message); - } + ParseCommandMessage(context, + message); } private bool IsCommandMessage(string message) @@ -73,7 +65,8 @@ namespace TechBot.Library return message.StartsWith("!"); } - public void ParseCommandMessage(string message) + public void ParseCommandMessage(MessageContext context, + string message) { if (!IsCommandMessage(message)) return; @@ -94,7 +87,8 @@ namespace TechBot.Library { if (command.CanHandle(commandName)) { - command.Handle(commandName, parameters); + command.Handle(context, + commandName, parameters); return; } } diff --git a/irc/TechBot/TechBot.Library/WinerrorCommand.cs b/irc/TechBot/TechBot.Library/WinerrorCommand.cs index 5e92b818cf6..ad01acaec14 100644 --- a/irc/TechBot/TechBot.Library/WinerrorCommand.cs +++ b/irc/TechBot/TechBot.Library/WinerrorCommand.cs @@ -24,13 +24,15 @@ namespace TechBot.Library new string[] { "winerror" }); } - public void Handle(string commandName, + public void Handle(MessageContext context, + string commandName, string parameters) { string winerrorText = parameters; if (winerrorText.Equals(String.Empty)) { - serviceOutput.WriteLine("Please provide a valid System Error Code value."); + serviceOutput.WriteLine(context, + "Please provide a valid System Error Code value."); return; } @@ -38,7 +40,8 @@ namespace TechBot.Library long winerror = np.Parse(winerrorText); if (np.Error) { - serviceOutput.WriteLine(String.Format("{0} is not a valid System Error Code value.", + serviceOutput.WriteLine(context, + String.Format("{0} is not a valid System Error Code value.", winerrorText)); return; } @@ -46,13 +49,15 @@ namespace TechBot.Library string description = GetWinerrorDescription(winerror); if (description != null) { - serviceOutput.WriteLine(String.Format("{0} is {1}.", + serviceOutput.WriteLine(context, + String.Format("{0} is {1}.", winerrorText, description)); } else { - serviceOutput.WriteLine(String.Format("I don't know about System Error Code {0}.", + serviceOutput.WriteLine(context, + String.Format("I don't know about System Error Code {0}.", winerrorText)); } } diff --git a/irc/TechBot/TechBot/App.config b/irc/TechBot/TechBot/App.config index bdb4e734fac..f7fa9ac9905 100644 --- a/irc/TechBot/TechBot/App.config +++ b/irc/TechBot/TechBot/App.config @@ -3,7 +3,7 @@ - + diff --git a/irc/TechBot/TechBot/ServiceThread.cs b/irc/TechBot/TechBot/ServiceThread.cs index 0fd814562ba..728eb959688 100644 --- a/irc/TechBot/TechBot/ServiceThread.cs +++ b/irc/TechBot/TechBot/ServiceThread.cs @@ -9,7 +9,7 @@ namespace TechBot { private string IRCServerHostName; private int IRCServerHostPort; - private string IRCChannelName; + private string IRCChannelNames; private string IRCBotName; private string ChmPath; private string MainChm; @@ -28,7 +28,7 @@ namespace TechBot { IRCServerHostName = ConfigurationSettings.AppSettings["IRCServerHostName"]; IRCServerHostPort = Int32.Parse(ConfigurationSettings.AppSettings["IRCServerHostPort"]); - IRCChannelName = ConfigurationSettings.AppSettings["IRCChannelName"]; + IRCChannelNames = ConfigurationSettings.AppSettings["IRCChannelNames"]; IRCBotName = ConfigurationSettings.AppSettings["IRCBotName"]; ChmPath = ConfigurationSettings.AppSettings["ChmPath"]; MainChm = ConfigurationSettings.AppSettings["MainChm"]; @@ -45,7 +45,7 @@ namespace TechBot IrcService ircService = new IrcService(IRCServerHostName, IRCServerHostPort, - IRCChannelName, + IRCChannelNames, IRCBotName, ChmPath, MainChm, From 159e5dbdb60fd928df8b3d06390e9cf2ddf6f4ab Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 16 Feb 2005 21:59:00 +0000 Subject: [PATCH 079/248] Add lsasrv.dll stub. svn path=/trunk/; revision=13605 --- reactos/Makefile | 2 +- reactos/include/lsass/lsasrv.h | 8 ++ reactos/lib/lsasrv/lsaport.c | 178 +++++++++++++++++++++++++++++++++ reactos/lib/lsasrv/lsasrv.c | 24 +++++ reactos/lib/lsasrv/lsasrv.def | 68 +++++++++++++ reactos/lib/lsasrv/lsasrv.rc | 5 + reactos/lib/lsasrv/makefile | 28 ++++++ 7 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 reactos/include/lsass/lsasrv.h create mode 100644 reactos/lib/lsasrv/lsaport.c create mode 100644 reactos/lib/lsasrv/lsasrv.c create mode 100644 reactos/lib/lsasrv/lsasrv.def create mode 100644 reactos/lib/lsasrv/lsasrv.rc create mode 100644 reactos/lib/lsasrv/makefile diff --git a/reactos/Makefile b/reactos/Makefile index 19903d98b52..0fb12fe33df 100644 --- a/reactos/Makefile +++ b/reactos/Makefile @@ -63,7 +63,7 @@ DLLS = acledit aclui advapi32 advpack cabinet cards comctl32 crtdll comdlg32 d3d msgina msi msimg32 msvcrt20 msvideo mswsock netapi32 ntdll ole32 oleaut32 oledlg olepro32 opengl32 \ packet psapi riched20 richedit rpcrt4 samlib secur32 setupapi shell32 shlwapi smdll snmpapi syssetup \ twain user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \ - urlmon shdocvw dinput dinput8 dxdiagn devenum dsound $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT) + urlmon shdocvw dinput dinput8 dxdiagn devenum dsound lsasrv $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT) SUBSYS = smss win32k csrss ntvdm diff --git a/reactos/include/lsass/lsasrv.h b/reactos/include/lsass/lsasrv.h new file mode 100644 index 00000000000..aaf12e14db7 --- /dev/null +++ b/reactos/include/lsass/lsasrv.h @@ -0,0 +1,8 @@ + +#ifndef __LSASRV_H +#define __LSASRV_H + +NTSTATUS STDCALL +LsapInitLsa(VOID); + +#endif /* __LSASRV_H */ diff --git a/reactos/lib/lsasrv/lsaport.c b/reactos/lib/lsasrv/lsaport.c new file mode 100644 index 00000000000..139e2f3dcd6 --- /dev/null +++ b/reactos/lib/lsasrv/lsaport.c @@ -0,0 +1,178 @@ +/* + */ + +#define NTOS_MODE_USER +#include +#include + +//#define NDEBUG +#include + + +HANDLE PortThreadHandle = NULL; +HANDLE ConnectPortHandle = NULL; +HANDLE MessagePortHandle = NULL; + + +static NTSTATUS +InitializeLsaPort(VOID) +{ + OBJECT_ATTRIBUTES ObjectAttributes; + UNICODE_STRING PortName; + LPC_MAX_MESSAGE Request; + NTSTATUS Status; + + ConnectPortHandle = NULL; + MessagePortHandle = NULL; + + RtlInitUnicodeString(&PortName, + L"\\SeLsaCommandPort"); + + InitializeObjectAttributes(&ObjectAttributes, + &PortName, + 0, + NULL, + NULL); + + Status = NtCreatePort(&ConnectPortHandle, + &ObjectAttributes, + 0, + 0x100, + 0x2000); + if (!NT_SUCCESS(Status)) + { + DPRINT1("NtCreatePort() failed (Status %lx)\n", Status); + goto ByeBye; + } + + Status = NtListenPort(ConnectPortHandle, + &Request.Header); + if (!NT_SUCCESS(Status)) + { + DPRINT1("NtListenPort() failed (Status %lx)\n", Status); + goto ByeBye; + } + + Status = NtAcceptConnectPort(&MessagePortHandle, + ConnectPortHandle, + NULL, + TRUE, + NULL, + NULL); + if (!NT_SUCCESS (Status)) + { + DPRINT1("NtAcceptConnectPort() failed (Status %lx)\n", Status); + goto ByeBye; + } + + Status = NtCompleteConnectPort (MessagePortHandle); + if (!NT_SUCCESS (Status)) + { + DPRINT1("NtCompleteConnectPort() failed (Status %lx)\n", Status); + goto ByeBye; + } + +ByeBye: + if (!NT_SUCCESS (Status)) + { + if (ConnectPortHandle != NULL) + NtClose (ConnectPortHandle); + + if (MessagePortHandle != NULL) + NtClose (MessagePortHandle); + } + + return Status; +} + + +static NTSTATUS +ProcessPortMessage(VOID) +{ + LPC_MAX_MESSAGE Request; +// LPC_MAX_MESSAGE Reply; + NTSTATUS Status; + + + DPRINT1("ProcessPortMessage() called\n"); + + Status = STATUS_SUCCESS; + + for (;;) + { + Status = NtReplyWaitReceivePort(MessagePortHandle, + 0, + NULL, + &Request.Header); + if (!NT_SUCCESS(Status)) + { + DPRINT1("NtReplyWaitReceivePort() failed (Status %lx)\n", Status); + break; + } + + DPRINT("Received message\n"); + + if (Request.Header.MessageType == LPC_PORT_CLOSED) + { + DPRINT("Port closed\n"); + +// return STATUS_UNSUCCESSFUL; + } + if (Request.Header.MessageType == LPC_REQUEST) + { + DPRINT("Received request\n"); + + } + else if (Request.Header.MessageType == LPC_DATAGRAM) + { + DPRINT("Received datagram\n"); + +// Message = (PIO_ERROR_LOG_MESSAGE)&Request.Data; + + } + } + + return Status; +} + + +static NTSTATUS STDCALL +PortThreadRoutine(PVOID Param) +{ + NTSTATUS Status = STATUS_SUCCESS; + + Status = InitializeLsaPort(); + if (!NT_SUCCESS(Status)) + return Status; + + while (NT_SUCCESS(Status)) + { + Status = ProcessPortMessage(); + } + + if (ConnectPortHandle != NULL) + NtClose (ConnectPortHandle); + + if (MessagePortHandle != NULL) + NtClose (MessagePortHandle); + + return Status; +} + + +BOOLEAN +StartLsaPortThread(VOID) +{ + DWORD ThreadId; + + PortThreadHandle = CreateThread(NULL, + 0x1000, + (LPTHREAD_START_ROUTINE)PortThreadRoutine, + NULL, + 0, + &ThreadId); + + return (PortThreadHandle != NULL); +} + +/* EOF */ diff --git a/reactos/lib/lsasrv/lsasrv.c b/reactos/lib/lsasrv/lsasrv.c new file mode 100644 index 00000000000..bc56ca27a8f --- /dev/null +++ b/reactos/lib/lsasrv/lsasrv.c @@ -0,0 +1,24 @@ + +#define NTOS_MODE_USER +#include +#include + +#include + +#define NDEBUG +#include + +VOID StartLsaPortThread(VOID); + + +NTSTATUS STDCALL +LsapInitLsa(VOID) +{ + DPRINT1("LsapInitLsa() called\n"); + + StartLsaPortThread(); + + return STATUS_SUCCESS; +} + +/* EOF */ diff --git a/reactos/lib/lsasrv/lsasrv.def b/reactos/lib/lsasrv/lsasrv.def new file mode 100644 index 00000000000..fc6f4a39a60 --- /dev/null +++ b/reactos/lib/lsasrv/lsasrv.def @@ -0,0 +1,68 @@ +; $Id: lsasrv.def 12852 2005-01-06 13:58:04Z mf $ +LIBRARY lsasrv +EXPORTS +;LsaIAuditNotifyPackageLoad +;LsaIAuditSamEvent +;LsaIEnumerateSecrets +;LsaIFree_LSAI_PRIVATE_DATA +;LsaIFree_LSAI_SECRET_ENUM_BUFFER +;LsaIFree_LSAPR_ACCOUNT_ENUM_BUFFER +;LsaIFree_LSAPR_CR_CIPHER_VALUE +;LsaIFree_LSAPR_POLICY_INFORMATION +;LsaIFree_LSAPR_PRIVILEGE_ENUM_BUFFER +;LsaIFree_LSAPR_PRIVILEGE_SET +;LsaIFree_LSAPR_REFERENCED_DOMAIN_LIST +;LsaIFree_LSAPR_SR_SECURITY_DESCRIPTOR +;LsaIFree_LSAPR_TRANSLATED_NAMES +;LsaIFree_LSAPR_TRANSLATED_SIDS +;LsaIFree_LSAPR_TRUSTED_DOMAIN_INFO +;LsaIFree_LSAPR_TRUSTED_ENUM_BUFFER +;LsaIFree_LSAPR_TRUST_INFORMATION +;LsaIFree_LSAPR_UNICODE_STRING +;LsaIGetPrivateData +;LsaIGetSerialNumberPolicy +;LsaIGetSerialNumberPolicy2 +;LsaIHealthCheck +;LsaIInitializeWellKnownSids +;LsaIOpenPolicyTrusted +;LsaIQueryInformationPolicyTrusted +;LsaISetPrivateData +;LsaISetSerialNumberPolicy +;LsaISetTimesSecret +;LsaISetupWasRun +;LsapAuOpenSam +LsapInitLsa@0 +;LsarAddPrivilegesToAccount +;LsarClose +;LsarCreateAccount +;LsarCreateSecret +;LsarCreateTrustedDomain +;LsarDelete +;LsarEnumerateAccounts +;LsarEnumeratePrivileges +;LsarEnumeratePrivilegesAccount +;LsarEnumerateTrustedDomains +;LsarGetQuotasForAccount +;LsarGetSystemAccessAccount +;LsarLookupNames +;LsarLookupPrivilegeDisplayName +;LsarLookupPrivilegeName +;LsarLookupPrivilegeValue +;LsarLookupSids +;LsarOpenAccount +;LsarOpenPolicy +;LsarOpenSecret +;LsarOpenTrustedDomain +;LsarQueryInfoTrustedDomain +;LsarQueryInformationPolicy +;LsarQuerySecret +;LsarQuerySecurityObject +;LsarRemovePrivilegesFromAccount +;LsarSetInformationPolicy +;LsarSetInformationTrustedDomain +;LsarSetQuotasForAccount +;LsarSetSecret +;LsarSetSecurityObject +;LsarSetSystemAccessAccount +;ServiceInit +; EOF \ No newline at end of file diff --git a/reactos/lib/lsasrv/lsasrv.rc b/reactos/lib/lsasrv/lsasrv.rc new file mode 100644 index 00000000000..cdf5ee6077d --- /dev/null +++ b/reactos/lib/lsasrv/lsasrv.rc @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "LSA server DLL\0" +#define REACTOS_STR_INTERNAL_NAME "lsasrv\0" +#define REACTOS_STR_ORIGINAL_FILENAME "lsasrv.dll\0" +#include diff --git a/reactos/lib/lsasrv/makefile b/reactos/lib/lsasrv/makefile new file mode 100644 index 00000000000..fae393e0e1e --- /dev/null +++ b/reactos/lib/lsasrv/makefile @@ -0,0 +1,28 @@ +# $Id$ + +PATH_TO_TOP = ../.. + +TARGET_TYPE = dynlink + +TARGET_NAME = lsasrv + +TARGET_BASE = $(TARGET_BASE_LIB_LSASRV) + +TARGET_ENTRY = 0x0 + +TARGET_CFLAGS += -Wall -Werror + +TARGET_LFLAGS = -nostartfiles -nostdlib + +TARGET_SDKLIBS = ntdll.a kernel32.a + +TARGET_OBJECTS = lsasrv.o lsaport.o + +DEP_OBJECTS = $(TARGET_OBJECTS) + + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +include $(TOOLS_PATH)/depend.mk From 66c87c27887f602fdf8e3af11b3dd9e8b32d735c Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Wed, 16 Feb 2005 22:22:42 +0000 Subject: [PATCH 080/248] crt: -use native mingw headers and not private copies of them tchar.h: -added lotsa missin stuff svn path=/trunk/; revision=13606 --- reactos/include/msvcrt/alloc.h | 86 --- reactos/include/msvcrt/assert.h | 69 --- reactos/include/msvcrt/conio.h | 63 --- reactos/include/msvcrt/ctype.h | 146 ----- reactos/include/msvcrt/dir.h | 149 ----- reactos/include/msvcrt/direct.h | 81 --- reactos/include/msvcrt/errno.h | 120 ---- reactos/include/msvcrt/fcntl.h | 130 ----- reactos/include/msvcrt/float.h | 214 ------- reactos/include/msvcrt/internal/atexit.h | 33 -- reactos/include/msvcrt/internal/console.h | 12 - reactos/include/msvcrt/internal/file.h | 79 --- reactos/include/msvcrt/internal/ieee.h | 25 - reactos/include/msvcrt/internal/mtdll.h | 72 --- reactos/include/msvcrt/internal/rterror.h | 31 - reactos/include/msvcrt/internal/stdio.h | 12 - reactos/include/msvcrt/internal/tls.h | 42 -- reactos/include/msvcrt/io.h | 168 ------ reactos/include/msvcrt/locale.h | 87 --- reactos/include/msvcrt/malloc.h | 53 -- reactos/include/msvcrt/math.h | 183 ------ reactos/include/msvcrt/mbctype.h | 78 --- reactos/include/msvcrt/mbstring.h | 114 ---- reactos/include/msvcrt/msvcrtdbg.h | 64 --- reactos/include/msvcrt/process.h | 160 ------ reactos/include/msvcrt/search.h | 39 -- reactos/include/msvcrt/share.h | 44 -- reactos/include/msvcrt/signal.h | 113 ---- reactos/include/msvcrt/stdarg.h | 115 ---- reactos/include/msvcrt/stddef.h | 178 ------ reactos/include/msvcrt/stdio.h | 375 ------------ reactos/include/msvcrt/stdlib.h | 248 -------- reactos/include/msvcrt/string.h | 193 ------- reactos/include/msvcrt/sys/fcntl.h | 8 - reactos/include/msvcrt/sys/file.h | 9 - reactos/include/msvcrt/sys/locking.h | 49 -- reactos/include/msvcrt/sys/stat.h | 144 ----- reactos/include/msvcrt/sys/time.h | 3 - reactos/include/msvcrt/sys/timeb.h | 61 -- reactos/include/msvcrt/sys/types.h | 68 --- reactos/include/msvcrt/sys/unistd.h | 9 - reactos/include/msvcrt/sys/utime.h | 80 --- reactos/include/msvcrt/time.h | 125 ---- reactos/include/msvcrt/wchar.h | 41 -- reactos/include/msvcrt/wine/cppexcept.h | 124 ---- reactos/include/msvcrt/wine/eh.h | 53 -- reactos/include/msvcrt/wine/msvcrt.h | 128 ----- reactos/include/tchar.h | 658 +++++++++++++--------- 48 files changed, 400 insertions(+), 4736 deletions(-) delete mode 100644 reactos/include/msvcrt/alloc.h delete mode 100644 reactos/include/msvcrt/assert.h delete mode 100644 reactos/include/msvcrt/conio.h delete mode 100644 reactos/include/msvcrt/ctype.h delete mode 100644 reactos/include/msvcrt/dir.h delete mode 100644 reactos/include/msvcrt/direct.h delete mode 100644 reactos/include/msvcrt/errno.h delete mode 100644 reactos/include/msvcrt/fcntl.h delete mode 100644 reactos/include/msvcrt/float.h delete mode 100644 reactos/include/msvcrt/internal/atexit.h delete mode 100644 reactos/include/msvcrt/internal/console.h delete mode 100644 reactos/include/msvcrt/internal/file.h delete mode 100644 reactos/include/msvcrt/internal/ieee.h delete mode 100644 reactos/include/msvcrt/internal/mtdll.h delete mode 100644 reactos/include/msvcrt/internal/rterror.h delete mode 100644 reactos/include/msvcrt/internal/stdio.h delete mode 100644 reactos/include/msvcrt/internal/tls.h delete mode 100644 reactos/include/msvcrt/io.h delete mode 100644 reactos/include/msvcrt/locale.h delete mode 100644 reactos/include/msvcrt/malloc.h delete mode 100644 reactos/include/msvcrt/math.h delete mode 100644 reactos/include/msvcrt/mbctype.h delete mode 100644 reactos/include/msvcrt/mbstring.h delete mode 100644 reactos/include/msvcrt/msvcrtdbg.h delete mode 100644 reactos/include/msvcrt/process.h delete mode 100644 reactos/include/msvcrt/search.h delete mode 100644 reactos/include/msvcrt/share.h delete mode 100644 reactos/include/msvcrt/signal.h delete mode 100644 reactos/include/msvcrt/stdarg.h delete mode 100644 reactos/include/msvcrt/stddef.h delete mode 100644 reactos/include/msvcrt/stdio.h delete mode 100644 reactos/include/msvcrt/stdlib.h delete mode 100644 reactos/include/msvcrt/string.h delete mode 100644 reactos/include/msvcrt/sys/fcntl.h delete mode 100644 reactos/include/msvcrt/sys/file.h delete mode 100644 reactos/include/msvcrt/sys/locking.h delete mode 100644 reactos/include/msvcrt/sys/stat.h delete mode 100644 reactos/include/msvcrt/sys/time.h delete mode 100644 reactos/include/msvcrt/sys/timeb.h delete mode 100644 reactos/include/msvcrt/sys/types.h delete mode 100644 reactos/include/msvcrt/sys/unistd.h delete mode 100644 reactos/include/msvcrt/sys/utime.h delete mode 100644 reactos/include/msvcrt/time.h delete mode 100644 reactos/include/msvcrt/wchar.h delete mode 100644 reactos/include/msvcrt/wine/cppexcept.h delete mode 100644 reactos/include/msvcrt/wine/eh.h delete mode 100644 reactos/include/msvcrt/wine/msvcrt.h diff --git a/reactos/include/msvcrt/alloc.h b/reactos/include/msvcrt/alloc.h deleted file mode 100644 index c4ba00eb2ca..00000000000 --- a/reactos/include/msvcrt/alloc.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * alloc.h - * - * Memory management functions. Because most of these functions are - * actually declared in stdlib.h I have decided to simply include that - * header file. This file is included by malloc.h. My head hurts... - * - * NOTE: In the version of the Standard C++ Library from Cygnus there - * is also an alloc.h which needs to be on your include path. Most of - * the time I think the most sensible option would be to get rid of - * this file. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.5 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _ALLOC_H_ -#define _ALLOC_H_ - -#include - -#ifndef RC_INVOKED - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The structure used to walk through the heap with _heapwalk. - * TODO: This is a guess at the internals of this structure. - */ -typedef struct _heapinfo -{ - void* ptr; - unsigned int size; - int in_use; -} _HEAPINFO; - -int _heapwalk(_HEAPINFO* pHeapinfo); - -#ifdef __GNUC__ -#ifdef USE_C_ALLOCA -void* C_alloca(size_t size); -#define _alloca(x) C_alloca(x) -#else /* USE_C_ALLOCA */ -#define _alloca(x) __builtin_alloca(x) -#endif /* USE_C_ALLOCA */ -#else /* __GNUC__ */ -void* _alloca(size_t size); -#endif /* __GNUC__ */ - - -#ifndef _NO_OLDNAMES -#define heapwalk(x) _heapwalk(x) -#define alloca(s) _alloca(s) -#endif /* Not _NO_OLDNAMES */ - -#ifdef __cplusplus -} -#endif - -#endif /* Not RC_INVOKED */ - -#endif /* Not _ALLOC_H_ */ - -#endif /* Not __STRICT_ANSI__ */ - diff --git a/reactos/include/msvcrt/assert.h b/reactos/include/msvcrt/assert.h deleted file mode 100644 index d3bad6857e2..00000000000 --- a/reactos/include/msvcrt/assert.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * assert.h - * - * Define the assert macro for debug output. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _ASSERT_H_ -#define _ASSERT_H_ - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef NDEBUG - -/* - * If not debugging, assert does nothing. - */ -#define assert(x) ((void)0) - -#else /* debugging enabled */ - -/* - * CRTDLL nicely supplies a function which does the actual output and - * call to abort. - */ -#ifndef __ATTRIB_NORETURN -#ifdef __GNUC__ -#define _ATTRIB_NORETURN __attribute__ ((noreturn)) -#else /* Not __GNUC__ */ -#define _ATTRIB_NORETURN -#endif /* __GNUC__ */ -#endif - -void _assert(const char* szExpression, const char* szFileName, int nLine) _ATTRIB_NORETURN; - -/* - * Definition of the assert macro. - */ -#define assert(x) if(!(x)) _assert( #x , __FILE__, __LINE__); -#endif /* NDEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* Not _ASSERT_H_ */ - diff --git a/reactos/include/msvcrt/conio.h b/reactos/include/msvcrt/conio.h deleted file mode 100644 index 847cad56ccb..00000000000 --- a/reactos/include/msvcrt/conio.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * conio.h - * - * Low level console I/O functions. Pretty please try to use the ANSI - * standard ones if you are writing new code. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _CONIO_H_ -#define _CONIO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - -char* _cgets(char*); -int _cprintf(const char*, ...); -int _cputs(const char*); -int _cscanf(char*, ...); -int _getch(void); -int _getche(void); -int _kbhit(void); -int _putch(int); -int _ungetch(int); - -#ifndef _NO_OLDNAMES -#define getch _getch -#define getche _getche -#define kbhit _kbhit -#define putch(cPut) _putch(cPut) -#define ungetch(cUnget) _ungetch(cUnget) -#endif /* Not _NO_OLDNAMES */ - - -#ifdef __cplusplus -} -#endif - -#endif /* Not _CONIO_H_ */ - -#endif /* Not __STRICT_ANSI__ */ diff --git a/reactos/include/msvcrt/ctype.h b/reactos/include/msvcrt/ctype.h deleted file mode 100644 index f34aa479261..00000000000 --- a/reactos/include/msvcrt/ctype.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * ctype.h - * - * Functions for testing character types and converting characters. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.10 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _CTYPE_H_ -#define _CTYPE_H_ - -#define __need_wchar_t -#define __need_wint_t -#include - - -/* - * The following flags are used to tell iswctype and _isctype what character - * types you are looking for. - */ -#define _UPPER 0x0001 -#define _LOWER 0x0002 -#define _DIGIT 0x0004 -#define _SPACE 0x0008 /* HT LF VT FF CR SP */ -#define _PUNCT 0x0010 -#define _CONTROL 0x0020 -#define _BLANK 0x0040 /* this is SP only, not SP and HT as in C99 */ -#define _HEX 0x0080 -#define _LEADBYTE 0x8000 - -#define _ALPHA 0x0103 - - -#ifdef __cplusplus -extern "C" { -#endif - -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); - -#ifndef __STRICT_ANSI__ -int _isctype (unsigned int, int); -#endif - -/* These are the ANSI versions, with correct checking of argument */ -int tolower(int); -int toupper(int); - -/* - * NOTE: The above are not old name type wrappers, but functions exported - * explicitly by MSVCRT/CRTDLL. However, underscored versions are also - * exported. - */ -#ifndef __STRICT_ANSI__ -/* - * These are the cheap non-std versions: The return values are undefined - * if the argument is not ASCII char or is not of appropriate case - */ -int _tolower(int); -int _toupper(int); -#endif - -/* - * TODO: MB_CUR_MAX should be defined here (if not already defined, since - * it should also be defined in stdlib.h). It is supposed to be the - * maximum number of bytes in a multi-byte character in the current - * locale. Perhaps accessible through the __mb_curr_max_dll entry point, - * but I think (again) that that is a variable pointer, which leads to - * problems under the current Cygwin compiler distribution. - */ - -typedef int wctype_t; - - -/* Wide character equivalents */ -#ifndef WEOF -#define WEOF (wchar_t)(0xFFFF) -#endif - -int iswalnum(wint_t); -int iswalpha(wint_t); -int iswascii(wint_t); -int iswcntrl(wint_t); -int iswctype(wint_t, wctype_t); -int is_wctype(wint_t, wctype_t); /* Obsolete! */ -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); - -int isleadbyte(int); - -#ifndef __STRICT_ANSI__ -int __isascii(int); -int __toascii(int); -int __iscsymf(int); /* Valid first character in C symbol */ -int __iscsym(int); /* Valid character in C symbol (after first) */ - -#ifndef _NO_OLDNAMES -#define isascii(c) __isascii(c) -#define toascii(c) _toascii(c) -#define iscsymf(c) __iscsymf(c) -#define iscsym(c) __iscsym(c) -#endif /* Not _NO_OLDNAMES */ - -#endif /* Not __STRICT_ANSI__ */ - -#ifdef __cplusplus -} -#endif - -#endif /* Not _CTYPE_H_ */ diff --git a/reactos/include/msvcrt/dir.h b/reactos/include/msvcrt/dir.h deleted file mode 100644 index f976bab5bcc..00000000000 --- a/reactos/include/msvcrt/dir.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * dir.h - * - * Functions for working with directories and path names. - * This file OBSOLESCENT and only provided for backward compatibility. - * Please use io.h instead. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.6 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _DIR_H_ -#define _DIR_H_ - -#include /* To get FILENAME_MAX... ugly. */ -#include /* To get time_t. */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Attributes of files as returned by _findfirst et al. - */ -#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 _FSIZE_T_DEFINED -typedef unsigned long _fsize_t; -#define _FSIZE_T_DEFINED -#endif - -/* - * The following structures are filled in by _findfirst or _findnext when - * they succeed in finding a match. - */ -struct _finddata_t -{ - unsigned attrib; /* Attributes, see constants above. */ - time_t time_create; - time_t time_access; /* always midnight local time */ - time_t time_write; - _fsize_t size; - char name[FILENAME_MAX]; /* may include spaces. */ -}; - -struct _finddatai64_t -{ - unsigned attrib; /* Attributes, see constants above. */ - time_t time_create; - time_t time_access; /* always midnight local time */ - time_t time_write; - __int64 size; - char name[FILENAME_MAX]; /* may include spaces. */ -}; - -struct _wfinddata_t -{ - unsigned attrib; /* Attributes, see constants above. */ - time_t time_create; - time_t time_access; /* always midnight local time */ - time_t time_write; - _fsize_t size; - wchar_t name[FILENAME_MAX]; /* may include spaces. */ -}; - -struct _wfinddatai64_t -{ - unsigned attrib; /* Attributes, see constants above. */ - time_t time_create; - time_t time_access; /* always midnight local time */ - time_t time_write; - __int64 size; - wchar_t name[FILENAME_MAX]; /* may include spaces. */ -}; - -/* - * Functions for searching for files. _findfirst returns -1 if no match - * is found. Otherwise it returns a handle to be used in _findnext and - * _findclose calls. _findnext also returns -1 if no match could be found, - * and 0 if a match was found. Call _findclose when you are finished. - */ -int _findclose(int nHandle); -int _findfirst(const char* szFilespec, struct _finddata_t* find); -int _findnext(int nHandle, struct _finddata_t* find); -int _findfirsti64(const char* szFilespec, struct _finddatai64_t* find); -int _findnexti64(int nHandle, struct _finddatai64_t* find); -/* Wide character versions */ -int _wfindfirst(const wchar_t *_name, struct _wfinddata_t *result); -int _wfindfirsti64(const wchar_t *_name, struct _wfinddatai64_t *result); -int _wfindnext(int handle, struct _wfinddata_t *result); -int _wfindnexti64(int handle, struct _wfinddatai64_t *result); - -int _chdir(const char* szPath); -char* _getcwd(char* caBuffer, int nBufferSize); -int _mkdir(const char* szPath); -char* _mktemp(char* szTemplate); -int _rmdir(const char* szPath); - -/* Wide character versions */ -int _wchdir(const wchar_t *szPath); -wchar_t* _wgetcwd(wchar_t *buffer, int maxlen); -int _wmkdir(const wchar_t *_path); -wchar_t* _wmktemp(wchar_t *_template); -int _wrmdir(const wchar_t *_path); - - -#ifndef _NO_OLDNAMES - -int chdir(const char* szPath); -char* getcwd(char* caBuffer, int nBufferSize); -int mkdir(const char* szPath); -char* mktemp(char* szTemplate); -int rmdir(const char* szPath); - -#endif /* Not _NO_OLDNAMES */ - - -#ifdef __cplusplus -} -#endif - -#endif /* Not _DIR_H_ */ - -#endif /* Not __STRICT_ANSI__ */ diff --git a/reactos/include/msvcrt/direct.h b/reactos/include/msvcrt/direct.h deleted file mode 100644 index 4c487241268..00000000000 --- a/reactos/include/msvcrt/direct.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * direct.h - * - * Functions for manipulating paths and directories (included from io.h) - * plus functions for setting the current drive. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _DIRECT_H_ -#define _DIRECT_H_ - -#ifndef _WCHAR_T_ -typedef unsigned short wchar_t; -#define _WCHAR_T_ -#endif - -#ifndef _SIZE_T_ -typedef unsigned int size_t; -#define _SIZE_T_ -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -struct _diskfree_t { - unsigned short total_clusters; - unsigned short avail_clusters; - unsigned short sectors_per_cluster; - unsigned short bytes_per_sector; -}; - -int _getdrive(void); -int _chdrive(int); -char* _getcwd(char*, int); - -unsigned int _getdiskfree(unsigned int, struct _diskfree_t*); - -int _chdir(const char*); -int _mkdir(const char*); -int _rmdir(const char*); - -#define chdir _chdir -#define getcwd _getcwd -#define mkdir _mkdir -#define rmdir _rmdir - -char* _getdcwd(int nDrive, char* caBuffer, int nBufLen); - -wchar_t* _wgetcwd(wchar_t *buffer, int maxlen); -wchar_t* _wgetdcwd(int nDrive, wchar_t* caBuffer, int nBufLen); - -int _wchdir(const wchar_t* _path); -int _wmkdir(const wchar_t* _path); -int _wrmdir(const wchar_t* _path); - -#ifdef __cplusplus -} -#endif - -#endif /* Not _DIRECT_H_ */ - diff --git a/reactos/include/msvcrt/errno.h b/reactos/include/msvcrt/errno.h deleted file mode 100644 index bff44828e04..00000000000 --- a/reactos/include/msvcrt/errno.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * errno.h - * - * Error numbers and access to error reporting. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.7 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _ERRNO_H_ -#define _ERRNO_H_ - -/* - * Error numbers. - * TODO: Can't be sure of some of these assignments, I guessed from the - * names given by strerror and the defines in the Cygnus errno.h. A lot - * of the names from the Cygnus errno.h are not represented, and a few - * of the descriptions returned by strerror do not obviously match - * their error naming. - */ -#define EPERM 1 /* Operation not permitted */ -#define ENOFILE 2 /* No such file or directory */ -#define ENOENT 2 -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted function call */ -#define EIO 5 /* Input/output error */ -#define ENXIO 6 /* No such device or address */ -#define E2BIG 7 /* Arg list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file descriptor */ -#define ECHILD 10 /* No child processes */ -#define EAGAIN 11 /* Resource temporarily unavailable */ -#define ENOMEM 12 /* Not enough space */ -#define EACCES 13 /* Permission denied */ -#define EFAULT 14 /* Bad address */ -/* 15 - Unknown Error */ -#define EBUSY 16 /* strerror reports "Resource device" */ -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Improper link (cross-device link?) */ -#define ENODEV 19 /* No such device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* Too many open files in system */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Inappropriate I/O control operation */ -/* 26 - Unknown Error */ -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Invalid seek (seek on a pipe?) */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ -#define EDOM 33 /* Domain error (math functions) */ -#define ERANGE 34 /* Result too large (possibly too small) */ -/* 35 - Unknown Error */ -#define EDEADLOCK 36 /* Resource deadlock avoided (non-Cyg) */ -#define EDEADLK 36 -/* 37 - Unknown Error */ -#define ENAMETOOLONG 38 /* Filename too long (91 in Cyg?) */ -#define ENOLCK 39 /* No locks available (46 in Cyg?) */ -#define ENOSYS 40 /* Function not implemented (88 in Cyg?) */ -#define ENOTEMPTY 41 /* Directory not empty (90 in Cyg?) */ -#define EILSEQ 42 /* Illegal byte sequence */ - -/* - * NOTE: ENAMETOOLONG and ENOTEMPTY conflict with definitions in the - * sockets.h header provided with windows32api-0.1.2. - * You should go and put an #if 0 ... #endif around the whole block - * of errors (look at the comment above them). - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Definitions of macros for the 'variables' errno, _doserrno, sys_nerr and - * sys_errlist. - */ -int* _errno(void); -#define errno (*_errno()) - -int* __doserrno(void); -#define _doserrno (*__doserrno()) - -/* One of the MSVCRTxx libraries */ - -extern int* __imp__sys_nerr; -#ifndef sys_nerr -#define sys_nerr (*__imp__sys_nerr) -#endif - -extern char** __imp__sys_errlist; -#ifndef sys_errlist -#define sys_errlist (__imp__sys_errlist) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* Not _ERRNO_H_ */ diff --git a/reactos/include/msvcrt/fcntl.h b/reactos/include/msvcrt/fcntl.h deleted file mode 100644 index 8c6baef632c..00000000000 --- a/reactos/include/msvcrt/fcntl.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * fcntl.h - * - * Access constants for _open. Note that the permissions constants are - * in sys/stat.h (ick). - * - * This code is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.6 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ -/* added _O_RANDOM_O_SEQUENTIAL _O_SHORT_LIVED*/ -/* changed fmode_dll */ - -#ifndef _FCNTL_H_ -#define _FCNTL_H_ - -/* - * It appears that fcntl.h should include io.h for compatibility... - */ -#include - -/* - * This variable determines the default file mode. - * TODO: Which flags work? - */ -#if 0 -#ifdef __MSVCRT__ // || _MSVCRT_LIB_ -extern unsigned int* __imp__fmode; -#define _fmode (*__imp__fmode) -#else -/* CRTDLL */ -extern unsigned int* _fmode_dll; -#define _fmode (*_fmode_dll) -#endif -#endif /* 0 */ - -/* - * NOTE: This is the correct definition to build crtdll. - * It is NOT valid outside of crtdll. - */ -extern unsigned int* _fmode_dll; -#ifndef __USE_W32API -extern unsigned int _fmode; -#endif - -/* Specifiy one of these flags to define the access mode. */ -#define _O_RDONLY 0 -#define _O_WRONLY 1 -#define _O_RDWR 2 - -/* Mask for access mode bits in the _open flags. */ -#define _O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) - -#define _O_APPEND 0x0008 /* Writes will add to the end of the file. */ -#define _O_RANDOM 0x0010 -#define _O_SEQUENTIAL _O_RANDOM -#define _O_TEMPORARY 0x0040 /* Make the file dissappear after closing. - * WARNING: Even if not created by _open! */ -#define _O_NOINHERIT 0x0080 - -#define _O_CREAT 0x0100 /* Create the file if it does not exist. */ -#define _O_TRUNC 0x0200 /* Truncate the file if it does exist. */ -#define _O_EXCL 0x0400 /* Open only if the file does not exist. */ - -#define _O_SHORT_LIVED 0x1000 - -/* NOTE: Text is the default even if the given _O_TEXT bit is not on. */ -#define _O_TEXT 0x4000 /* CR-LF in file becomes LF in memory. */ -#define _O_BINARY 0x8000 /* Input and output is not translated. */ -#define _O_RAW _O_BINARY - - -#ifndef __STRICT_ANSI__ -#ifndef _NO_OLDNAMES - -/* POSIX/Non-ANSI names for increased portability */ -#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_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_TEMPORARY _O_TEMPORARY -#define O_NOINHERIT _O_NOINHERIT - -#define O_RANDOM _O_RANDOM -#define O_SEQUENTIAL _O_RANDOM -#define O_SHORT_LIVED _O_SHORT_LIVED - -#endif /* Not _NO_OLDNAMES */ - -#ifdef __cplusplus -extern "C" { -#endif - -int _setmode (int, int); - -#ifndef _NO_OLDNAMES -int setmode (int, int); -#endif /* Not _NO_OLDNAMES */ - -#ifdef __cplusplus -} -#endif - -#endif /* Not __STRICT_ANSI__ */ - -#endif /* Not _FCNTL_H_ */ - diff --git a/reactos/include/msvcrt/float.h b/reactos/include/msvcrt/float.h deleted file mode 100644 index 22371f5e968..00000000000 --- a/reactos/include/msvcrt/float.h +++ /dev/null @@ -1,214 +0,0 @@ -/* - * float.h - * - * Constants related to floating point arithmetic. - * - * Also included here are some non-ANSI bits for accessing the floating - * point controller. - * - * NOTE: GCC provides float.h, and it is probably more accurate than this, - * but it doesn't include the non-standard stuff for accessing the - * fp controller. (TODO: Move those bits elsewhere?) Thus it is - * probably not a good idea to use the GCC supplied version instead - * of this header. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.5 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _FLOAT_H_ -#define _FLOAT_H_ - - -#define FLT_ROUNDS 1 -#define FLT_GUARD 1 -#define FLT_NORMALIZE 1 - -/* - * The characteristics of float. - */ - -/* The radix for floating point representation. */ -#define FLT_RADIX 2 - -/* Decimal digits of precision. */ -#define FLT_DIG 6 - -/* Smallest number such that 1+x != 1 */ -#define FLT_EPSILON 1.19209290e-07F - -/* The number of base FLT_RADIX digits in the mantissa. */ -#define FLT_MANT_DIG 24 - -/* The maximum floating point number. */ -#define FLT_MAX 3.40282347e+38F - -/* Maximum n such that FLT_RADIX^n - 1 is representable. */ -#define FLT_MAX_EXP 128 - -/* Maximum n such that 10^n is representable. */ -#define FLT_MAX_10_EXP 38 - -/* Minimum normalized floating-point number. */ -#define FLT_MIN 1.17549435e-38F - -/* Minimum n such that FLT_RADIX^n is a normalized number. */ -#define FLT_MIN_EXP (-125) - -/* Minimum n such that 10^n is a normalized number. */ -#define FLT_MIN_10_EXP (-37) - - -/* - * The characteristics of double. - */ -#define DBL_DIG 15 -#define DBL_EPSILON 1.1102230246251568e-16 -#define DBL_MANT_DIG 53 -#define DBL_MAX 1.7976931348623157e+308 -#define DBL_MAX_EXP 1024 -#define DBL_MAX_10_EXP 308 -#define DBL_MIN 2.2250738585072014e-308 -#define DBL_MIN_EXP (-1021) -#define DBL_MIN_10_EXP (-307) - - -/* - * The characteristics of long double. - * NOTE: long double is the same as double. - */ -#define LDBL_DIG 15 -#define LDBL_EPSILON 1.1102230246251568e-16L -#define LDBL_MANT_DIG 53 -#define LDBL_MAX 1.7976931348623157e+308L -#define LDBL_MAX_EXP 1024 -#define LDBL_MAX_10_EXP 308 -#define LDBL_MIN 2.2250738585072014e-308L -#define LDBL_MIN_EXP (-1021) -#define LDBL_MIN_10_EXP (-307) - - -/* - * Functions and definitions for controlling the FPU. - */ -#ifndef __STRICT_ANSI__ - -/* TODO: These constants are only valid for x86 machines */ - -/* 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 - -/* Return values for fpclass. */ -#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 */ - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Set the FPU control word as cw = (cw & ~unMask) | (unNew & unMask), - * i.e. change the bits in unMask to have the values they have in unNew, - * leaving other bits unchanged. */ -unsigned int _controlfp(unsigned int unNew, unsigned int unMask); -unsigned int _control87(unsigned int unNew, unsigned int unMask); - - -unsigned int _clearfp(void); /* Clear the FPU status word */ -unsigned int _statusfp(void); /* Report the FPU status word */ -#define _clear87 _clearfp -#define _status87 _statusfp - - -/* - MSVCRT.dll _fpreset initializes the control register to 0x27f, - the status register to zero and the tag word to 0FFFFh. - This differs from asm instruction finit/fninit which set control - word to 0x37f (64 bit mantissa precison rather than 53 bit). - By default, the mingw version of _fpreset sets fp control as - per fninit. To use the MSVCRT.dll _fpreset, include CRT_fp8.o when - building your application. -*/ -void _fpreset(void); /* Reset the FPU */ - -/* Global 'variable' for the current floating point error code. */ -int* __fpecode(void); -#define _fpecode (*(__fpecode())) - -/* - * IEEE recommended functions. MS puts them in float.h - * but they really belong in math.h. - */ - -double _chgsign (double); -double _copysign (double, double); -double _logb (double); -double _nextafter (double, double); -double _scalb (double, long); - -int _finite (double); -int _fpclass (double); -int _isnan (double); - -int _isinf (double); /* not exported */ -int _isnanl (long double); /* not exported */ -int _isinfl (long double); /* not exported */ - -#define isnan(x) _isnan(x) -#define isinf(x) _isinf(x) - - -#ifdef __cplusplus -} -#endif - -#endif /* Not __STRICT_ANSI__ */ - -#endif /* _FLOAT_H_ */ - diff --git a/reactos/include/msvcrt/internal/atexit.h b/reactos/include/msvcrt/internal/atexit.h deleted file mode 100644 index f2a1fccae24..00000000000 --- a/reactos/include/msvcrt/internal/atexit.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#ifndef __dj_include_libc_atexit_h__ -#define __dj_include_libc_dosexec_h__ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __dj_ENFORCE_ANSI_FREESTANDING - -#ifndef __STRICT_ANSI__ - -#ifndef _POSIX_SOURCE - -struct __atexit { - struct __atexit* __next; - void (*__function)(void); -}; - -extern struct __atexit* __atexit_ptr; - -#endif /* !_POSIX_SOURCE */ -#endif /* !__STRICT_ANSI__ */ -#endif /* !__dj_ENFORCE_ANSI_FREESTANDING */ - -#ifndef __dj_ENFORCE_FUNCTION_CALLS -#endif /* !__dj_ENFORCE_FUNCTION_CALLS */ - -#ifdef __cplusplus -} -#endif - -#endif /* __dj_include_libc_dosexec_h__ */ diff --git a/reactos/include/msvcrt/internal/console.h b/reactos/include/msvcrt/internal/console.h deleted file mode 100644 index 6855779a9e9..00000000000 --- a/reactos/include/msvcrt/internal/console.h +++ /dev/null @@ -1,12 +0,0 @@ -/* console.h */ - -#ifndef __MSVCRT_INTERNAL_CONSOLE_H -#define __MSVCRT_INTERNAL_CONSOLE_H - -extern int char_avail; -extern int ungot_char; - -#endif /* __MSVCRT_INTERNAL_CONSOLE_H */ - -/* EOF */ - diff --git a/reactos/include/msvcrt/internal/file.h b/reactos/include/msvcrt/internal/file.h deleted file mode 100644 index 6630ffa66d3..00000000000 --- a/reactos/include/msvcrt/internal/file.h +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ - -#ifndef __dj_include_libc_file_h__ -#define __dj_include_libc_file_h__ - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __dj_ENFORCE_ANSI_FREESTANDING -#ifndef __STRICT_ANSI__ -#ifndef _POSIX_SOURCE - -#ifndef _IORMONCL -#define _IORMONCL 004000 /* remove on close, for temp files */ -#endif -/* if _flag & _IORMONCL, ._name_to_remove needs freeing */ - -#ifndef _IOUNGETC -#define _IOUNGETC 010000 /* there is an ungetc'ed character in the buffer */ -#endif - -/* might need check for IO_APPEND aswell */ -#define OPEN4WRITING(f) ((((f)->_flag & _IOWRT) == _IOWRT)) -#define OPEN4READING(f) ((((f)->_flag & _IOREAD) == _IOREAD)) - -/* might need check for IO_APPEND aswell */ -#define WRITE_STREAM(f) ((((f)->_flag & _IOWRT) == _IOWRT)) -#define READ_STREAM(f) ((((f)->_flag & _IOREAD) == _IOREAD)) - -char __validfp(FILE*); -int __set_errno(int err); -int __set_doserrno(int error); -void* filehnd(int fn); -char __is_text_file(FILE*); -int __fileno_alloc(void* hFile, int mode); -int _doprnt(const char* fmt, va_list args, FILE *); -int _doscan(FILE* iop, const char* fmt, va_list argp); -int __fileno_dup2(int handle1, int handle2); -int __fileno_getmode(int _fd); -int __fileno_setmode(int _fd, int _newmode); -int __fileno_close(int _fd); -void sigabort_handler(int sig); - -#include - -void UnixTimeToFileTime(time_t unix_time, FILETIME* filetime, DWORD remainder); -time_t FileTimeToUnixTime(const FILETIME* filetime, DWORD *remainder); - -#endif /* !_POSIX_SOURCE */ -#endif /* !__STRICT_ANSI__ */ -#endif /* !__dj_ENFORCE_ANSI_FREESTANDING */ - -#ifndef __dj_ENFORCE_FUNCTION_CALLS -#endif /* !__dj_ENFORCE_FUNCTION_CALLS */ - -#define __FILE_REC_MAX 20 -typedef struct __file_rec -{ - struct __file_rec* next; - int count; - FILE* files[__FILE_REC_MAX]; -} __file_rec; - -extern __file_rec* __file_rec_list; - -void _dosmaperr(unsigned long oserrcode); - -extern int __fmode; - -#ifdef __cplusplus -} -#endif - -#endif /* __dj_include_libc_file_h__ */ diff --git a/reactos/include/msvcrt/internal/ieee.h b/reactos/include/msvcrt/internal/ieee.h deleted file mode 100644 index e6188c23fe0..00000000000 --- a/reactos/include/msvcrt/internal/ieee.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _IEEE_H -#define _IEEE_H - -typedef struct { - unsigned int mantissa:23; - unsigned int exponent:8; - unsigned int sign:1; -} float_t; - -typedef struct { - unsigned int mantissal:32; - unsigned int mantissah:20; - unsigned int exponent:11; - unsigned int sign:1; -} double_t; - -typedef struct { - unsigned int mantissal:32; - unsigned int mantissah:32; - unsigned int exponent:15; - unsigned int sign:1; - unsigned int empty:16; -} long_double_t; - -#endif diff --git a/reactos/include/msvcrt/internal/mtdll.h b/reactos/include/msvcrt/internal/mtdll.h deleted file mode 100644 index 420e6944b45..00000000000 --- a/reactos/include/msvcrt/internal/mtdll.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2002, TransGaming Technologies Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef WINE_MTDLL_H -#define WINE_MTDLL_H - -#if defined(_MT) - -#define _mlock(locknum) _lock(locknum) -#define _munlock(locknum) _unlock(locknum) - -void _unlock( int locknum ); -void _lock( int locknum ); - -#else - -#define _mlock(locknum) do {} while(0) -#define _munlock(locknum) do {} while(0) - -#endif - - -#define _SIGNAL_LOCK 1 -#define _IOB_SCAN_LOCK 2 -#define _TMPNAM_LOCK 3 -#define _INPUT_LOCK 4 -#define _OUTPUT_LOCK 5 -#define _CSCANF_LOCK 6 -#define _CPRINTF_LOCK 7 -#define _CONIO_LOCK 8 -#define _HEAP_LOCK 9 -#define _BHEAP_LOCK 10 /* No longer used? */ -#define _TIME_LOCK 11 -#define _ENV_LOCK 12 -#define _EXIT_LOCK1 13 -#define _EXIT_LOCK2 14 -#define _THREADDATA_LOCK 15 /* No longer used? */ -#define _POPEN_LOCK 16 -#define _LOCKTAB_LOCK 17 -#define _OSFHND_LOCK 18 -#define _SETLOCALE_LOCK 19 -#define _LC_COLLATE_LOCK 20 /* No longer used? */ -#define _LC_CTYPE_LOCK 21 /* No longer used? */ -#define _LC_MONETARY_LOCK 22 /* No longer used? */ -#define _LC_NUMERIC_LOCK 23 /* No longer used? */ -#define _LC_TIME_LOCK 24 /* No longer used? */ -#define _MB_CP_LOCK 25 -#define _NLG_LOCK 26 -#define _TYPEINFO_LOCK 27 -#define _STREAM_LOCKS 28 - -/* Must match definition in msvcrt/stdio.h */ -#define _IOB_ENTRIES 20 -#define _LAST_STREAM_LOCK (_STREAM_LOCKS+_IOB_ENTRIES-1) -#define _TOTAL_LOCKS (_LAST_STREAM_LOCK+1) - -#endif /* WINE_MTDLL_H */ diff --git a/reactos/include/msvcrt/internal/rterror.h b/reactos/include/msvcrt/internal/rterror.h deleted file mode 100644 index b32bc7faae8..00000000000 --- a/reactos/include/msvcrt/internal/rterror.h +++ /dev/null @@ -1,31 +0,0 @@ -/* rterror.h */ - -#ifndef __MSVCRT_INTERNAL_RTERROR_H -#define __MSVCRT_INTERNAL_RTERROR_H - - -#define _RT_STACK 0 /* stack overflow */ -#define _RT_NULLPTR 1 /* null pointer assignment */ -#define _RT_FLOAT 2 /* floating point not loaded */ -#define _RT_INTDIV 3 /* integer divide by 0 */ -#define _RT_SPACEARG 4 /* not enough space for arguments */ -#define _RT_SPACEENV 5 /* not enough space for environment */ -#define _RT_ABORT 6 /* abnormal program termination */ -#define _RT_THREAD 7 /* not enough space for thread data */ -#define _RT_LOCK 8 /* unexpected multi-thread lock error */ -#define _RT_HEAP 9 /* unexpected heap error */ -#define _RT_OPENCON 10 /* unable to open console device */ -#define _RT_NONCONT 11 /* non-continuable exception */ -#define _RT_INVALDISP 12 /* invalid disposition of exception */ -#define _RT_ONEXIT 13 /* insufficient heap to allocate - * initial table of function pointers - * used by _onexit()/atexit(). */ -#define _RT_PUREVIRT 14 /* pure virtual function call attempted - * (C++ error) */ -#define _RT_STDIOINIT 15 /* not enough space for stdio initialization */ -#define _RT_LOWIOINIT 16 /* not enough space for lowio initialization */ - -void _amsg_exit (int errnum); - - -#endif /* __MSVCRT_INTERNAL_RTERROR_H */ diff --git a/reactos/include/msvcrt/internal/stdio.h b/reactos/include/msvcrt/internal/stdio.h deleted file mode 100644 index 8b84ced4934..00000000000 --- a/reactos/include/msvcrt/internal/stdio.h +++ /dev/null @@ -1,12 +0,0 @@ -/* stdio.h */ - -#ifndef __MSVCRT_INTERNAL_STDIO_H -#define __MSVCRT_INTERNAL_STDIO_H - -int __vfscanf(FILE* s, const char* format, va_list argptr); -int __vscanf(const char* format, va_list arg); -int __vsscanf(const char* s,const char* format, va_list arg); - -#endif /* __MSVCRT_INTERNAL_STDIO_H */ - -/* EOF */ diff --git a/reactos/include/msvcrt/internal/tls.h b/reactos/include/msvcrt/internal/tls.h deleted file mode 100644 index 5a4a33c8f82..00000000000 --- a/reactos/include/msvcrt/internal/tls.h +++ /dev/null @@ -1,42 +0,0 @@ -/* tls.h */ - -#ifndef __MSVCRT_INTERNAL_TLS_H -#define __MSVCRT_INTERNAL_TLS_H - -#include -#include -#include - -typedef struct _ThreadData -{ - int terrno; /* *nix error code */ - unsigned long tdoserrno; /* Win32 error code (for I/O only) */ - unsigned LONGLONG tnext; /* used by rand/srand */ - - char *lasttoken; /* used by strtok */ - wchar_t *wlasttoken; /* used by wcstok */ - - - int fpecode; /* fp exception code */ - - /* qsort variables */ - int (*qcmp)(const void *, const void *); /* the comparison routine */ - int qsz; /* size of each record */ - int thresh; /* THRESHold in chars */ - int mthresh; /* MTHRESHold in chars */ - - EXCEPTION_RECORD *exc_record; /* Head of exception record list */ - -} THREADDATA, *PTHREADDATA; - - -int CreateThreadData(void); -void DestroyThreadData(void); - -void FreeThreadData(PTHREADDATA ptd); -PTHREADDATA GetThreadData(void); - -#endif /* __MSVCRT_INTERNAL_TLS_H */ - -/* EOF */ - diff --git a/reactos/include/msvcrt/io.h b/reactos/include/msvcrt/io.h deleted file mode 100644 index f8bb1d1aa4d..00000000000 --- a/reactos/include/msvcrt/io.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * io.h - * - * System level I/O functions and types. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.5 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ -/* added D_OK */ -/* changed get_osfhandle and open_osfhandle */ -/* added fileno as macro */ - -#ifndef __STRICT_ANSI__ - -#ifndef _IO_H_ -#define _IO_H_ - -#include - -#include - - -/* We need the definition of FILE anyway... */ -#include - -/* MSVC's io.h contains the stuff from dir.h, so I will too. - * NOTE: This also defines off_t, the file offset type, through - * and inclusion of sys/types.h */ -#include - -/* TODO: Maximum number of open handles has not been tested, I just set - * it the same as FOPEN_MAX. */ -#define HANDLE_MAX FOPEN_MAX - - -/* Some defines for _access nAccessMode (MS doesn't define them, but - * it doesn't seem to hurt to add them). */ -#define F_OK 0 /* Check for file existence */ -#define W_OK 2 /* Check for write permission */ -#define R_OK 4 /* Check for read permission */ -/* TODO: Is this safe? X_OK not supported directly... */ -#define X_OK R_OK /* Check for execute permission */ -#define D_OK 0x10 - - - -#ifdef __cplusplus -extern "C" { -#endif - -int _access (const char*, int); -int _chsize (int, long); -int _close (int); -int _commit(int); - -/* NOTE: The only significant bit in unPermissions appears to be bit 7 (0x80), - * the "owner write permission" bit (on FAT). */ -int _creat (const char*, int); -int _dup (int); -int _dup2 (int, int); -long _filelength (int); -int _fileno (FILE*); -void* _get_osfhandle (int); -int _isatty (int); - -int _chmod (const char* szPath, int nMode); -__int64 _filelengthi64(int nHandle); - -/* In a very odd turn of events this function is excluded from those - * files which define _STREAM_COMPAT. This is required in order to - * build GNU libio because of a conflict with _eof in streambuf.h - * line 107. Actually I might just be able to change the name of - * the enum member in streambuf.h... we'll see. TODO */ -#ifndef _STREAM_COMPAT -int _eof (int); -#endif - -/* LK_... locking commands defined in sys/locking.h. */ -int _locking (int, int, long); - -off_t _lseek(int, off_t, int); - -/* Optional third argument is unsigned unPermissions. */ -int _open (const char*, int, ...); - -int _open_osfhandle (void*, int); -int _pipe (int*, unsigned int, int); -size_t _read(int, void*, size_t); - -/* SH_... flags for nShFlags defined in share.h - * Optional fourth argument is unsigned unPermissions */ -int _sopen (char*, int, int, int); - -long _tell(int); -/* Should umask be in sys/stat.h and/or sys/types.h instead? */ -unsigned _umask(unsigned); -int _unlink(const char*); -size_t _write(int, const void*, size_t); - -__int64 _lseeki64(int _fildes, __int64 _offset, int _whence); -__int64 _telli64(int nHandle); - -/* Wide character versions. Also declared in wchar.h. */ -/* Not in crtdll.dll */ -int _waccess(const wchar_t*, int); -int _wchmod(const wchar_t*, int); -int _wcreat(const wchar_t*, int); - -int _wunlink(const wchar_t*); -int _wopen(const wchar_t*, int, ...); -int _wsopen(wchar_t*, int, int, int); - - -#ifndef _NO_OLDNAMES -/* - * Non-underscored versions of non-ANSI functions to improve portability. - * These functions live in libmoldname.a. - */ - -#define access _access -#define chmod _chmod -#define chsize _chsize -#define close _close -#define creat _creat -#define dup _dup -#define dup2 _dup2 -#define eof _eof -#define filelength _filelength -#define fileno(f) ((f)->_file) -#define isatty _isatty -#define lseek _lseek -#define open _open -#define read _read -#define sopen(path,access,shflag,mode) _open((path), (access)|(shflag), (mode)) -#define tell(file) _lseek(_file, 0, SEEK_CUR) -#define umask _umask -#define unlink _unlink -#define write _write - - -#endif /* Not _NO_OLDNAMES */ - -#ifdef __cplusplus -} -#endif - -#endif /* _IO_H_ not defined */ - -#endif /* Not strict ANSI */ - diff --git a/reactos/include/msvcrt/locale.h b/reactos/include/msvcrt/locale.h deleted file mode 100644 index 8c6a4b6ffc6..00000000000 --- a/reactos/include/msvcrt/locale.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * locale.h - * - * Functions and types for localization (ie. changing the appearance of - * output based on the standards of a certain country). - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _LOCALE_H_ -#define _LOCALE_H_ - - -/* - * NOTE: I have tried to test this, but I am limited by my knowledge of - * locale issues. The structure does not bomb if you look at the - * values, and 'decimal_point' even seems to be correct. But the - * rest of the values are, by default, not particularly useful - * (read meaningless and not related to the international settings - * of the system). - */ - -#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 - -/* - * The structure returned by 'localeconv'. - */ -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; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -char* setlocale(int, const char*); -struct lconv* localeconv(void); - -#ifdef __cplusplus -} -#endif - -#endif /* Not _LOCALE_H_ */ - diff --git a/reactos/include/msvcrt/malloc.h b/reactos/include/msvcrt/malloc.h deleted file mode 100644 index 14ce7eb7f4d..00000000000 --- a/reactos/include/msvcrt/malloc.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * malloc.h - * - * Support for programs which want to use malloc.h to get memory management - * functions. Unless you absolutely need some of these functions and they are - * not in the ANSI headers you should use the ANSI standard header files - * instead. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _MALLOC_H_ -#define _MALLOC_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -int _heapchk(void); /* Verify heap integrety. */ -int _heapmin(void); /* Return unused heap to the OS. */ -int _heapset(unsigned int); -size_t _msize(void*); -void* _expand(void*, size_t); - -#ifdef __cplusplus -} -#endif - -#endif /* Not _MALLOC_H_ */ - -#endif /* Not __STRICT_ANSI__ */ diff --git a/reactos/include/msvcrt/math.h b/reactos/include/msvcrt/math.h deleted file mode 100644 index a818f406254..00000000000 --- a/reactos/include/msvcrt/math.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * math.h - * - * Mathematical functions. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.6 $ - * $Author$ - * $Date$ - * - */ -/* added modfl */ - -#ifndef _MATH_H_ -#define _MATH_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * HUGE_VAL is returned by strtod when the value would overflow the - * representation of 'double'. There are other uses as well. - * - * __imp__HUGE is a pointer to the actual variable _HUGE in - * MSVCRT.DLL. If we used _HUGE directly we would get a pointer - * to a thunk function. - * - * NOTE: The CRTDLL version uses _HUGE_dll instead. - */ -#ifdef _MSVCRT_LIB_ -extern double* __imp__HUGE; -#define HUGE_VAL (*__imp__HUGE) -#else -/* CRTDLL */ -extern double* _HUGE_dll; -#define HUGE_VAL (*_HUGE_dll) -#endif - - -struct _exception -{ - int type; - char *name; - double arg1; - double arg2; - double retval; -}; - -/* - * Types for the above _exception structure. - */ - -#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 */ - -/* - * Exception types with non-ANSI names for compatibility. - */ - -#ifndef __STRICT_ANSI__ -#ifndef _NO_OLDNAMES - -#define DOMAIN _DOMAIN -#define SING _SING -#define OVERFLOW _OVERFLOW -#define UNDERFLOW _UNDERFLOW -#define TLOSS _TLOSS -#define PLOSS _PLOSS - -#endif /* Not _NO_OLDNAMES */ -#endif /* Not __STRICT_ANSI__ */ - - -double sin (double x); -double cos (double x); -double tan (double x); -double sinh (double x); -double cosh (double x); -double tanh (double x); -double asin (double x); -double acos (double x); -double atan (double x); -double atan2 (double y, double x); -double exp (double x); -double log (double x); -double log10 (double x); -double pow (double x, double y); -long double powl (long double x,long double y); -double sqrt (double x); -double ceil (double x); -double floor (double x); -double fabs (double x); -double ldexp (double x, int n); -double frexp (double x, int* exp); -double modf (double x, double* ip); -long double modfl (long double x,long double* ip); -double fmod (double x, double y); - - -#ifndef __STRICT_ANSI__ - -/* Complex number (for cabs) */ -struct _complex -{ - double x; /* Real part */ - double y; /* Imaginary part */ -}; - -double _cabs (struct _complex x); -double _hypot (double x, double y); -double _j0 (double x); -double _j1 (double x); -double _jn (int n, double x); -double _y0 (double x); -double _y1 (double x); -double _yn (int n, double x); - -#endif /* Not __STRICT_ANSI__ */ - -#ifdef __cplusplus -} -#endif - - -#ifdef __MSVCRT__ -double linkme_sin(double x); -double linkme_cos(double x); -double linkme_tan(double x); -double linkme_sinh(double x); -double linkme_cosh(double x); -double linkme_tanh(double x); -double linkme_asin(double x); -double linkme_acos(double x); -double linkme_atan(double x); -double linkme_atan2(double y, double x); -double linkme_exp(double x); -double linkme_log(double x); -double linkme_log10(double x); -double linkme_pow(double x, double y); -long double linkme_powl(long double x,long double y); -double linkme_sqrt(double x); -double linkme_ceil(double x); -double linkme_floor(double x); -double linkme_fabs(double x); -double linkme_ldexp(double x, int n); -double linkme_frexp(double x, int* exp); -double linkme_modf(double x, double* ip); -long double linkme_modfl(long double x,long double* ip); -double linkme_fmod(double x, double y); - -/* - * linkme_log2 - * linkme_floor - * linkme_ldexp - * linkme_pow - */ - -#endif - - -#endif /* Not _MATH_H_ */ - diff --git a/reactos/include/msvcrt/mbctype.h b/reactos/include/msvcrt/mbctype.h deleted file mode 100644 index dd3f68c1421..00000000000 --- a/reactos/include/msvcrt/mbctype.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * mbctype.h - * - * Functions for testing multibyte character types and converting characters. - * - * This file is part of the Mingw32 package. - * - * - * 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 _MBCTYPE_H_ -#define _MBCTYPE_H_ - - -/* return values for _mbsbtype and _mbbtype in mbstring.h */ -#define _MBC_SINGLE 0 -#define _MBC_LEAD 1 -#define _MBC_TRAIL 2 -#define _MBC_ILLEGAL (-1) - -/* args for setmbcp (in lieu of actual codepage) */ -#define _MB_CP_SBCS 0 -#define _MB_CP_OEM (-2) -#define _MB_CP_ANSI (-3) -#define _MB_CP_LOCALE (-4) - -/* TODO: bit masks */ -/* - *#define _MS 0x01 - *#define _MP 0x02 - *#define _M1 0x04 - *#define _M2 0x08 -#define _SBUP -#define _SBLOW -*/ - -#define _KNJ_M ((char)0x01) /* Non-punctuation of Kana-set */ -#define _KNJ_P ((char)0x02) /* Punctuation of Kana-set */ -#define _KNJ_1 ((char)0x04) /* Legal 1st byte of double byte stream */ -#define _KNJ_2 ((char)0x08) /* Legal 2nd btye of double byte stream */ - - -#define ___ 0 -#define _1_ _KNJ_1 /* Legal 1st byte of double byte code */ -#define __2 _KNJ_2 /* Legal 2nd byte of double byte code */ -#define _M_ _KNJ_M /* Non-puntuation in Kana-set */ -#define _P_ _KNJ_P /* Punctuation of Kana-set */ -#define _12 (_1_|__2) -#define _M2 (_M_|__2) -#define _P2 (_P_|__2) - -#ifdef __cplusplus -extern "C" { -#endif - -extern char _jctype[257]; - - -int _ismbbkana(unsigned char); -int _ismbbkalnum(unsigned int); - - -#ifdef __cplusplus -} -#endif - -#endif /* Not _MCTYPE_H_ */ - diff --git a/reactos/include/msvcrt/mbstring.h b/reactos/include/msvcrt/mbstring.h deleted file mode 100644 index e331606f70d..00000000000 --- a/reactos/include/msvcrt/mbstring.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * mbstring.h - * - * Protototypes for string functions supporting multibyte characters. - * - * This file is part of the Mingw32 package. - * - * - * 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 _MBSTRING_H_ -#define _MBSTRING_H_ - -#include - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* character routines */ -int _ismbcalnum(unsigned int); -int _ismbcalpha(unsigned int); -int _ismbcdigit(unsigned int); -int _ismbcgraph(unsigned int); -int _ismbcprint(unsigned int); -int _ismbcpunct(unsigned int); -int _ismbcspace(unsigned int); -int _ismbclower(unsigned int); -int _ismbcupper(unsigned int); -int _ismbclegal(unsigned int); - -int _ismbblead(unsigned int); -int _ismbbtrail(unsigned int); -int _ismbslead(const unsigned char*, const unsigned char*); -int _ismbstrail(const unsigned char*, const unsigned char*); - -unsigned int _mbctolower(unsigned int); -unsigned int _mbctoupper(unsigned int); - -void _mbccpy(unsigned char*, const unsigned char*); -size_t _mbclen(const unsigned char*); - -unsigned int _mbbtombc(unsigned int); -unsigned int _mbctombb(unsigned int); - -/* Return value constants for these are defined in mbctype.h. */ -int _mbbtype(unsigned char, int); -int _mbsbtype(const unsigned char*, size_t); - -unsigned char* _mbscpy(unsigned char*, const unsigned char*); -unsigned char* _mbsncpy(unsigned char*, const unsigned char*, size_t); -unsigned char* _mbsnbcpy(unsigned char*, const unsigned char*, size_t); -unsigned char* _mbsset(unsigned char*, unsigned int); -unsigned char* _mbsnset(unsigned char*, unsigned int, size_t); -unsigned char* _mbsnbset(unsigned char*, unsigned int, size_t); - -unsigned char* _mbsdup(const unsigned char*); -unsigned char* _mbsrev(unsigned char*); -unsigned char* _mbscat(unsigned char*, const unsigned char*); -unsigned char* _mbsncat(unsigned char*, const unsigned char*, size_t); -unsigned char* _mbsnbcat(unsigned char*, const unsigned char*, size_t); -size_t _mbslen(const unsigned char*); -size_t _mbsnbcnt(const unsigned char*, size_t); -size_t _mbsnccnt(const unsigned char*, size_t); -unsigned char* _mbschr(unsigned char*, unsigned char*); -unsigned char* _mbsrchr(const unsigned char*, unsigned int); -size_t _mbsspn(const unsigned char*, const unsigned char*); -size_t _mbscspn(const unsigned char*, const unsigned char*); -unsigned char* _mbsspnp(const unsigned char*, const unsigned char*); -unsigned char* _mbspbrk(const unsigned char*, const unsigned char*); -int _mbscmp(const unsigned char*, const unsigned char*); -int _mbsicmp(const unsigned char*, const unsigned char*); -int _mbsncmp(const unsigned char*, const unsigned char*, size_t); -int _mbsnicmp(const unsigned char*, const unsigned char*, size_t); -int _mbsnbcmp(const unsigned char*, const unsigned char*, size_t); -int _mbsnbicmp(const unsigned char*, const unsigned char*, size_t); -int _mbscoll(const unsigned char*, const unsigned char*); -int _mbsicoll(const unsigned char*, const unsigned char*); -int _mbsncoll(const unsigned char*, const unsigned char*, size_t); -int _mbsnicoll(const unsigned char*, const unsigned char*, size_t); -int _mbsnbcoll(const unsigned char*, const unsigned char*, size_t); - -int _mbsnbicoll(const unsigned char*, const unsigned char*, size_t); - -unsigned char* _mbsinc(const unsigned char*); -unsigned char* _mbsninc(const unsigned char*, size_t); -unsigned char* _mbsdec(const unsigned char*, const unsigned char*); -unsigned int _mbsnextc (const unsigned char*); -unsigned char* _mbslwr(unsigned char*); -unsigned char* _mbsupr(unsigned char*); -unsigned char* _mbstok(unsigned char*, unsigned char*); - -unsigned char* _mbsstr(const unsigned char*, const unsigned char*); -size_t _mbstrlen(const char*str); - - -#ifdef __cplusplus -} -#endif - -#endif /* Not _MBSTRING_H_ */ - diff --git a/reactos/include/msvcrt/msvcrtdbg.h b/reactos/include/msvcrt/msvcrtdbg.h deleted file mode 100644 index f35e869f8ea..00000000000 --- a/reactos/include/msvcrt/msvcrtdbg.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: include/msvcrt/msvcrtdbg.h - * PURPOSE: Useful debugging macros - * PROGRAMMER: - * UPDATE HISTORY: - * - */ - -/* - * NOTE: Define NDEBUG before including this header to disable debugging - * macros - */ - -#ifndef __MSVCRT_DEBUG -#define __MSVCRT_DEBUG - -#include -#include - -#if 0 -#ifdef NDEBUG -#undef NDEBUG -#endif -#endif - -#ifdef DBG -#define DPRINT1(args...) do { DbgPrint("(MSVCRT:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0); -#define CHECKPOINT1 do { DbgPrint("MSVCRT:%s:%d\n",__FILE__,__LINE__); } while(0); -#else -#ifdef __GNUC__ -#define DPRINT1(args...) -#else -#define DPRINT DbgPrint -#endif -#define CHECKPOINT1 -#endif - -#if !defined(NDEBUG) && defined(DBG) -#define DPRINT(args...) do { DbgPrint("(MSVCRT:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0); -#define CHECKPOINT do { DbgPrint("MSVCRT:%s:%d\n",__FILE__,__LINE__); } while(0); -#else -#ifdef __GNUC__ -#define DPRINT(args...) -#else -#define DPRINT DbgPrint -#endif -#define CHECKPOINT -#endif /* NDEBUG */ - -/* ULONG CDECL DbgPrint(PCH Format, ...); */ -ULONG DbgPrint(PCH Format,...); -/* unsigned long DbgPrint(const char* Format, ...); */ - - - -/* #define TRACE 0 ? (void)0 : Trace */ - -/* void Trace(TCHAR* lpszFormat, ...); */ - - - -#endif /* __MSVCRT_DEBUG */ diff --git a/reactos/include/msvcrt/process.h b/reactos/include/msvcrt/process.h deleted file mode 100644 index 1dc2d4751a3..00000000000 --- a/reactos/include/msvcrt/process.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * process.h - * - * Function calls for spawning child processes. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ -/* changed second argument of cwait from nPID to hProc */ - -#ifndef __STRICT_ANSI__ - -#ifndef _PROCESS_H_ -#define _PROCESS_H_ - -/* - * Constants for cwait actions. - * Obsolete for Win32. - */ -#define _WAIT_CHILD 0 -#define _WAIT_GRANDCHILD 1 - -#ifndef _NO_OLDNAMES -#define WAIT_CHILD _WAIT_CHILD -#define WAIT_GRANDCHILD _WAIT_GRANDCHILD -#endif /* Not _NO_OLDNAMES */ - -/* - * Mode constants for spawn functions. - */ -#define _P_WAIT 0 -#define _P_NOWAIT 1 -#define _P_OVERLAY 2 -#define _OLD_P_OVERLAY _P_OVERLAY -#define _P_NOWAITO 3 -#define _P_DETACH 4 - -#ifndef _NO_OLDNAMES -#define P_WAIT _P_WAIT -#define P_NOWAIT _P_NOWAIT -#define P_OVERLAY _P_OVERLAY -#define OLD_P_OVERLAY _OLD_P_OVERLAY -#define P_NOWAITO _P_NOWAITO -#define P_DETACH _P_DETACH -#endif /* Not _NO_OLDNAMES */ - - -#ifdef __cplusplus -extern "C" { -#endif - -void _cexit(void); -void _c_exit(void); - -int _cwait (int* pnStatus, int hProc, int nAction); - -int _getpid(void); - -int _execl (const char* szPath, const char* szArgv0, ...); -int _execle (const char* szPath, const char* szArgv0, ...); -int _execlp (const char* szPath, const char* szArgv0, ...); -int _execlpe (const char* szPath, const char* szArgv0, ...); -int _execv (const char* szPath, char* const* szaArgv); -int _execve (const char* szPath, char* const* szaArgv, char* const* szaEnv); -int _execvp (const char* szPath, char* const* szaArgv); -int _execvpe (const char* szPath, char* const* szaArgv, char* const* szaEnv); - -int _spawnl (int nMode, const char* szPath, const char* szArgv0, ...); -int _spawnle (int nMode, const char* szPath, const char* szArgv0,...); -int _spawnlp (int nMode, const char* szPath, const char* szArgv0,...); -int _spawnlpe (int nMode, const char* szPath, const char* szArgv0,...); -int _spawnv (int nMode, const char* szPath, char* const* szaArgv); -int _spawnve (int nMode, const char* szPath, char* const* szaArgv, char* const* szaEnv); -int _spawnvp (int nMode, const char* szPath, char* const* szaArgv); -int _spawnvpe (int nMode, const char* szPath, char* const* szaArgv, char* const* szaEnv); -/* - * The functions _beginthreadex and _endthreadex are not provided by CRTDLL. - * They are provided by MSVCRT. - * - * NOTE: Apparently _endthread calls CloseHandle on the handle of the thread, - * making for race conditions if you are not careful. Basically you have to - * make sure that no-one is going to do *anything* with the thread handle - * after the thread calls _endthread or returns from the thread function. - * - * NOTE: No old names for these functions. Use the underscore. - */ -unsigned long - _beginthread(void (__cdecl *pfuncStart)(void*), - unsigned unStackSize, void* pArgList); -void _endthread (void); - -#ifdef __MSVCRT__ -unsigned long - _beginthreadex(void* pSecurity, unsigned unStackSize, - unsigned (__stdcall *pfuncStart)(void*), void* pArgList, - unsigned unInitFlags, unsigned* pThreadAddr); -void _endthreadex(unsigned unExitCode); -#endif - - -void* _loaddll(char* name); -int _unloaddll(void* handle); - -unsigned long __threadid(void); -#define _threadid __threadid() -void* __threadhandle(void); - - -#ifndef _NO_OLDNAMES - -#define cwait _cwait -#define getpid _getpid -#define execl _execl -#define execle _execle -#define execlp _execlp -#define execlpe _execlpe - -#define execv _execv -#define execve _execve -#define execvp _execvp -#define execvpe _execvpe - -#define spawnl _spawnl -#define spawnle _spawnle -#define spawnlp _spawnlp -#define spawnlpe _spawnlpe - -#define spawnv _spawnv -#define spawnve _spawnve -#define spawnvp _spawnvp -#define spawnvpe _spawnvpe - -#endif /* Not _NO_OLDNAMES */ - -#ifdef __cplusplus -} -#endif - -#endif /* _PROCESS_H_ not defined */ - -#endif /* Not __STRICT_ANSI__ */ - diff --git a/reactos/include/msvcrt/search.h b/reactos/include/msvcrt/search.h deleted file mode 100644 index 054f8648a32..00000000000 --- a/reactos/include/msvcrt/search.h +++ /dev/null @@ -1,39 +0,0 @@ - -#ifndef _SEARCH_H_ -#define _SEARCH_H_ - -/* - *char *key - *void *data - *enum { FIND, ENTER } ACTION; - *enum { preorder, postorder, endorder, leaf } VISIT; - */ - -#include -#include - - -/* The Single UNIX ® Specification, Version 2 Copyright © 1997 The Open Group */ - -/* - *int hcreate(size_t); - *void hdestroy(void); - *ENTRY *hsearch(ENTRY, ACTION); - *void insque(void *, void *); - */ -void *_lfind(const void *, const void *, size_t *, - size_t, int (*)(const void *, const void *)); -void *_lsearch(const void *, void *, size_t *, - size_t, int (*)(const void *, const void *)); -/* - *void remque(void *); - *void *tdelete(const void *, void **, - * int(*)(const void *, const void *)); - *void *tfind(const void *, void *const *, - * int(*)(const void *, const void *)); - *void *tsearch(const void *, void **, - * int(*)(const void *, const void *)); - *void twalk(const void *, - * void (*)(const void *, VISIT, int )); -*/ -#endif diff --git a/reactos/include/msvcrt/share.h b/reactos/include/msvcrt/share.h deleted file mode 100644 index ded54f26be6..00000000000 --- a/reactos/include/msvcrt/share.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * share.h - * - * Constants for file sharing functions. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _SHARE_H_ -#define _SHARE_H_ - - -#define SH_COMPAT 0x0000 -#define SH_DENYRW 0x0010 -#define SH_DENYWR 0x0020 -#define SH_DENYRD 0x0030 -#define SH_DENYNO 0x0040 - -#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 /* Not _SHARE_H_ */ diff --git a/reactos/include/msvcrt/signal.h b/reactos/include/msvcrt/signal.h deleted file mode 100644 index b18655f3ebd..00000000000 --- a/reactos/include/msvcrt/signal.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * signal.h - * - * A way to set handlers for exceptional conditions (also known as signals). - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ -/* added some extra signal constants */ -#ifndef _SIGNAL_H_ -#define _SIGNAL_H_ - - -/* - * The actual signal values. Using other values with signal - * produces a SIG_ERR return value. - * - * NOTE: SIGINT is produced when the user presses Ctrl-C. - * SIGILL has not been tested. - * SIGFPE doesn't seem to work? - * SIGSEGV does not catch writing to a NULL pointer (that shuts down - * your app; can you say "segmentation violation core dump"?). - * SIGTERM comes from what kind of termination request exactly? - * SIGBREAK is indeed produced by pressing Ctrl-Break. - * SIGABRT is produced by calling abort. - * TODO: The above results may be related to not installing an appropriate - * structured exception handling frame. Results may be better if I ever - * manage to get the SEH stuff down. - */ -#define SIGINT 2 /* Interactive attention */ -#define SIGILL 4 /* Illegal instruction */ -#define SIGFPE 8 /* Floating point error */ -#define SIGSEGV 11 /* Segmentation violation */ -#define SIGTERM 15 /* Termination request */ -#define SIGBREAK 21 /* Control-break */ -#define SIGABRT 22 /* Abnormal termination (abort) */ - -#define SIGALRM 293 -#define SIGHUP 294 -/* SIGINT is ansi */ -#define SIGKILL 296 -#define SIGPIPE 297 -#define SIGQUIT 298 -#define SIGUSR1 299 -#define SIGUSR2 300 - -#define SIGNOFP 301 -#define SIGTRAP 302 -#define SIGTIMR 303 /* Internal for setitimer (SIGALRM, SIGPROF) */ -#define SIGPROF 304 -#define SIGMAX 320 - -/* - * The prototypes (below) are the easy part. The hard part is figuring - * out what signals are available and what numbers they are assigned - * along with appropriate values of SIG_DFL and SIG_IGN. - */ - -/* - * A pointer to a signal handler function. A signal handler takes a - * single int, which is the signal it handles. - */ -typedef void (*_p_sig_fn_t)(int); - -/* - * These are special values of signal handler pointers which are - * used to send a signal to the default handler (SIG_DFL), ignore - * the signal (SIG_IGN), or indicate an error return (SIG_ERR). - */ -#define SIG_DFL ((_p_sig_fn_t) 0) -#define SIG_IGN ((_p_sig_fn_t) 1) -#define SIG_ERR ((_p_sig_fn_t) -1) - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - * Call signal to set the signal handler for signal sig to the - * function pointed to by handler. Returns a pointer to the - * previous handler, or SIG_ERR if an error occurs. Initially - * unhandled signals defined above will return SIG_DFL. - */ -_p_sig_fn_t signal(int sig, _p_sig_fn_t func); - -/* - * Raise the signal indicated by sig. Returns non-zero on success. - */ -int raise(int); - -#ifdef __cplusplus -} -#endif - -#endif /* Not _SIGNAL_H_ */ diff --git a/reactos/include/msvcrt/stdarg.h b/reactos/include/msvcrt/stdarg.h deleted file mode 100644 index a3615ab3c83..00000000000 --- a/reactos/include/msvcrt/stdarg.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * stdarg.h - * - * Provides facilities for stepping through a list of function arguments of - * an unknown number and type. - * - * NOTE: Gcc should provide stdarg.h, and I believe their version will work - * with crtdll. If necessary I think you can replace this with the GCC - * stdarg.h (or is it vararg.h). - * - * Note that the type used in va_arg is supposed to match the actual type - * *after default promotions*. Thus, va_arg (..., short) is not valid. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.5 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ - -#ifndef _STDARG_H_ -#define _STDARG_H_ - -/* - * Don't do any of this stuff for the resource compiler. - */ -#ifndef RC_INVOKED - -/* - * I was told that Win NT likes this. - */ -#ifndef _VA_LIST_DEFINED -#define _VA_LIST_DEFINED -#endif - -#ifndef _VA_LIST -#define _VA_LIST -typedef char* va_list; -#endif - - -/* - * Amount of space required in an argument list (ie. the stack) for an - * argument of type t. - */ -#define __va_argsiz(t) \ - (((sizeof(t) + sizeof(int) - 1) / sizeof(int)) * sizeof(int)) - - -/* - * Start variable argument list processing by setting AP to point to the - * argument after pN. - */ -#ifdef __GNUC__ -/* - * In GNU the stack is not necessarily arranged very neatly in order to - * pack shorts and such into a smaller argument list. Fortunately a - * neatly arranged version is available through the use of __builtin_next_arg. - */ -#ifndef va_start -#define va_start(ap, pN) \ - ((ap) = ((va_list) __builtin_next_arg(pN))) -#endif -#else -/* - * For a simple minded compiler this should work (it works in GNU too for - * vararg lists that don't follow shorts and such). - */ -#ifndef va_start -#define va_start(ap, pN) \ - ((ap) = ((va_list) (&pN) + __va_argsiz(pN))) -#endif -#endif - - -/* - * End processing of variable argument list. In this case we do nothing. - */ -#ifndef va_end -#define va_end(ap) ((void)0) -#endif - - -/* - * Increment ap to the next argument in the list while returing a - * pointer to what ap pointed to first, which is of type t. - * - * We cast to void* and then to t* because this avoids a warning about - * increasing the alignment requirement. - */ - -#ifndef va_arg -#define va_arg(ap, t) \ - (((ap) = (ap) + __va_argsiz(t)), \ - *((t*) (void*) ((ap) - __va_argsiz(t)))) -#endif - -#endif /* Not RC_INVOKED */ - -#endif /* not _STDARG_H_ */ diff --git a/reactos/include/msvcrt/stddef.h b/reactos/include/msvcrt/stddef.h deleted file mode 100644 index 6a3e3df7c73..00000000000 --- a/reactos/include/msvcrt/stddef.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * stddef.h - * - * Standard type definitions provided by the C library. - * - * NOTE: Actually supplied by the compiler (correct?). As such, GCC - * supplies a version of this header file. Unfortunately, GCC's - * version is all tied up with the way other headers for the - * GNU C library are implemented (or vice-versa), in a similar - * way to how the other Mingw32 headers are dependent on - * certain internals of this file. It is not clear to me whether - * you can safely use the GCC version in place of this version. - * TODO: Line up usage in other header files to work with GCC - * stddef.h. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.7 $ - * $Author$ - * $Date$ - * - */ - - -#ifndef __MSVCRT_STDDEF_H_ - -/* - * Any one of these symbols __need_* means that a standard header file - * wants us just to define one data type. So don't define - * the symbols that indicate this file's entire job has been done. - */ -#if (!defined(__need_wchar_t) && !defined(__need_wint_t) \ - && !defined(__need_size_t) && !defined(__need_ptrdiff_t) \ - && !defined(__need_NULL)) -#define __MSVCRT_STDDEF_H_ -#endif - -/* - * NOTE: The following typedefs are done using __xxx_TYPE__ defines followed - * by typedefs using those defines. I have chosen to do it this way because - * GCC supplies definitions for __xxx_TYPE__ macros and if, for example, your - * size_t is typedef'ed differently from what GCC expects it will give you - * warnings when you prototype functions like memcmp and memcpy. The values - * for __xxx_TYPE__ in this header file are the same as those given by GCC. - * Those values appear to work with the MSVCRT functions. - */ - -/* - * Signed type of difference of two pointers. - */ - -/* Define this type if we are doing the whole job, or if we want this type - * in particular. */ -#if defined (__MSVCRT_STDDEF_H_) || defined (__need_ptrdiff_t) - -#ifndef _PTRDIFF_T_ -#define _PTRDIFF_T_ -#ifndef __PTRDIFF_TYPE__ -#define __PTRDIFF_TYPE__ int -#endif -typedef __PTRDIFF_TYPE__ ptrdiff_t; -#endif - -/* If this symbol has done its job, get rid of it. */ -#undef __need_ptrdiff_t - -#endif /* __MSVCRT_STDDEF_H_ or __need_ptrdiff_t. */ - -/* - * Unsigned type of `sizeof' something. - */ - - -/* Define this type if we are doing the whole job, - * or if we want this type in particular. */ -#if defined (__MSVCRT_STDDEF_H_) || defined (__need_size_t) - -#ifndef _SIZE_T_ -#define _SIZE_T_ -#define SIZE_T_DEFINED -#define _SIZE_T -#ifndef __SIZE_TYPE__ -#define __SIZE_TYPE__ unsigned int -#endif -typedef __SIZE_TYPE__ size_t; -#endif - -#undef __need_size_t - -#endif /* __MSVCRT_STDDEF_H_ or __need_size_t. */ - -/* Wide character type. - Locale-writers should change this as necessary to - be big enough to hold unique values not between 0 and 127, - and not (wchar_t) -1, for each defined multibyte character. */ - -/* Define this type if we are doing the whole job, - or if we want this type in particular. */ -#if defined (__MSVCRT_STDDEF_H_) || defined (__need_wchar_t) - -#ifndef _WCHAR_T_ -#define _WCHAR_T_ -#define _WCHAR_T -#define _WCHAR_T_DEFINED -#ifndef __WCHAR_TYPE__ -#define __WCHAR_TYPE__ short unsigned int -#endif -#ifndef __cplusplus -typedef __WCHAR_TYPE__ wchar_t; -#endif /* C++ */ -#endif /* wchar_t not already defined */ - -#undef __need_wchar_t - -#endif /* __MSVCRT_STDDEF_H_ or __need_wchar_t. */ - -/* - * wint_t, the equivalent of int in wchar ctype functions. - */ -#if defined (__MSVCRT_STDDEF_H_) || defined (__need_wint_t) - -#if ! defined(_WINT_T_) && ! defined(_WINT_T) -#define _WINT_T_ -#define _WINT_T /* To satisfy libstdc++ */ -#ifndef __WINT_TYPE__ -#define __WINT_TYPE__ short int -#endif /* Not defined __WINT_TYPE__ */ - -typedef __WINT_TYPE__ wint_t; -#endif /* Not defined _WINT_T_ */ - -#undef __need_wint_t - -#endif /* __MSVCRT_STDDEF_H_ or __need_wint_t. */ - - -/* - * A null pointer constant. - */ - -#if defined (__MSVCRT_STDDEF_H_) || defined (__need_NULL) - -#undef NULL -#ifdef __cplusplus -#define NULL (0) -#else -#define NULL ((void *)0) -#endif -#endif /* __MSVCRT_STDDEF_H_ or __need_NULL */ - -#undef __need_NULL - - -/* - * Offsetof, a macro for finding the offset of a member in a structure. - * Works by returning the 'address' of the MEMBER of a TYPE struct at address - * zero. - */ - -#if defined (__MSVCRT_STDDEF_H_) -#define offsetof(TYPE, MEMBER) ((size_t) &( ((TYPE *) 0)->MEMBER )) -#endif /* __MSVCRT_STDDEF_H_ */ - - -#endif /* not __MSVCRT_STDDEF_H_ */ diff --git a/reactos/include/msvcrt/stdio.h b/reactos/include/msvcrt/stdio.h deleted file mode 100644 index 83d10ce5de2..00000000000 --- a/reactos/include/msvcrt/stdio.h +++ /dev/null @@ -1,375 +0,0 @@ -/* - * stdio.h - * - * Definitions of types and prototypes of functions for standard input and - * output. - * - * NOTE: The file manipulation functions provided by Microsoft seem to - * work with either slash (/) or backslash (\) as the path separator. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.8 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ -/* implemented clearerr feof ferror perror as macros */ -/* added _IOCOMMIT */ -/* added filbuf and flsbuf and fwalk */ - -#ifndef _STDIO_H_ -#define _STDIO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define __need_size_t -#define __need_NULL -#define __need_wchar_t -#define __need_wint_t -#include - - -#define _IOREAD 0x0001 -#define _IOWRT 0x0002 -#define _IOMYBUF 0x0008 /* stdio malloc()'d buffer */ -#define _IOEOF 0x0010 /* EOF reached on read */ -#define _IOERR 0x0020 /* I/O error from system */ -#define _IOSTRG 0x0040 /* Strange or no file descriptor */ - -#define _IOBINARY 0x040000 -#define _IOTEXT 0x000000 - -#define _IOCOMMIT 0x100000 - -#define _IODIRTY 0x010000 -#define _IOAHEAD 0x020000 - - - - -/* - * I used to include stdarg.h at this point, in order to allow for the - * functions later on in the file which use va_list. That conflicts with - * using stdio.h and varargs.h in the same file, so I do the typedef myself. - */ -/* - *#ifndef _VA_LIST - *#define _VA_LIST - *typedef char* va_list; - *#endif - */ -#include - -/* - * FILE should be used as a pointer to an opaque data type. Do not rely on - * anything else, especially the size or contents of this structure! - */ -#ifndef _FILE_DEFINED -typedef struct { - char* _ptr; - int _cnt; - char* _base; - int _flag; - int _file; - int _ungotchar; - int _bufsiz; - char* _name_to_remove; -} FILE; -#define _FILE_DEFINED -#endif - -//#define _fillsize _bufsiz - -/* - * The three standard file pointers provided by the run time library. - * NOTE: These will go to the bit-bucket silently in GUI applications! - */ -extern FILE _iob[]; /* an array of FILE */ -#define stdin (&_iob[0]) -#define stdout (&_iob[1]) -#define stderr (&_iob[2]) -#define stdaux (&_iob[3]) -#define stdprn (&_iob[4]) - -/* Returned by various functions on end of file condition or error. */ -#define EOF (-1) - -/* - * The maximum length of a file name. You should use GetVolumeInformation - * instead of this constant. But hey, this works. - * - * NOTE: This is used in the structure _finddata_t (see dir.h) so changing it - * is probably not a good idea. - */ -#define FILENAME_MAX (260) - -/* - * The maximum number of files that may be open at once. I have set this to - * a conservative number. The actual value may be higher. - */ -#define FOPEN_MAX (20) - -/* - * File Operations - */ -FILE* fopen(const char* szFileName, const char* szMode); -FILE* freopen(const char* szNewFileName, const char* szNewMode, FILE* fileChangeAssociation); -int fflush(FILE* fileFlush); -int fclose(FILE* fileClose); -#define fcloseall _fcloseall -int remove(const char* szFileName); -int rename(const char* szOldFileName, const char* szNewFileName); -FILE* tmpfile(void); - -FILE* _fdopen(int handle, char *mode); -FILE* _wfdopen(int handle, wchar_t *mode); -FILE* _wfopen(const wchar_t *file, const wchar_t *mode); -FILE* _wfreopen(const wchar_t *file, const wchar_t *mode, FILE *f); -FILE* _fsopen(const char *file, const char *mode, int shflag); -FILE* _wfsopen(const wchar_t *file, const wchar_t *mode, int shflag); -int _wremove(const wchar_t* szFileName); -int _wrename(const wchar_t *oldName, const wchar_t *newName); - -int _filbuf(FILE* f); -int _flsbuf(int c, FILE* f); -void _fwalk(void (*func)(FILE*)); // not exported -int _fcloseall(void); - -/* - * The maximum size of name (including NUL) that will be put in the user - * supplied buffer caName. - * NOTE: This has not been determined by experiment, but based on the - * maximum file name length above it is probably reasonable. I could be - * wrong... - */ -#define L_tmpnam (260) - -char* tmpnam(char caName[]); -char* _tempnam(const char *szDir, const char *szPfx); - -wchar_t* _wtmpnam(wchar_t *s); -wchar_t *_wtempnam(const wchar_t *dir,const wchar_t *prefix); - -#ifndef _NO_OLDNAMES -#define tempnam _tempnam -#endif /* Not _NO_OLDNAMES */ - -/* - * The three possible buffering mode (nMode) values for setvbuf. - * NOTE: _IOFBF works, but _IOLBF seems to work like unbuffered... - * maybe I'm testing it wrong? - */ -#define _IOFBF 0x0000 /* full buffered */ -#define _IOLBF 0x0040 /* line buffered */ -#define _IONBF 0x0004 /* not buffered */ - -#define _IO_LBF 0x80000 /* this value is used insteat of _IOLBF within the - structure FILE as value for _flags, - because _IOLBF has the same value as _IOSTRG */ - -int setvbuf(FILE* fileSetBuffer, char* caBuffer, int nMode, size_t sizeBuffer); - -/* - * The buffer size as used by setbuf such that it is equivalent to - * (void) setvbuf(fileSetBuffer, caBuffer, _IOFBF, BUFSIZ). - */ -#define BUFSIZ 512 - -void setbuf(FILE* fileSetBuffer, char* caBuffer); - -/* - * Pipe Operations - */ - -int _pclose(FILE* pipeClose); -FILE* _popen(const char* szPipeName, const char* szMode); -FILE* _wpopen(const wchar_t *cm, const wchar_t *md); - -#define popen _popen -#define pclose _pclose - -/* Wide character version */ -FILE* _wpopen(const wchar_t* szPipeName, const wchar_t* szMode); - -/* - * Formatted Output - */ - -int fprintf(FILE* filePrintTo, const char* szFormat, ...); -int printf(const char* szFormat, ...); -int sprintf(char* caBuffer, const char* szFormat, ...); -int _snprintf(char*, size_t, const char*, ...); -int vfprintf(FILE* filePrintTo, const char* szFormat, va_list varg); -int vprintf(const char* szFormat, va_list varg); -int vsprintf(char* caBuffer, const char* szFormat, va_list varg); -int _vsnprintf(char* caBuffer, size_t cnt, const char* szFormat, va_list varg); -int _vsnwprintf (wchar_t*, size_t, const wchar_t*, va_list); - -/* Wide character versions */ -int fwprintf(FILE* filePrintTo, const wchar_t* wsFormat, ...); -int wprintf(const wchar_t* wsFormat, ...); -int swprintf(wchar_t* wcaBuffer, const wchar_t* wsFormat, ...); -int vfwprintf(FILE* filePrintTo, const wchar_t* wsFormat, va_list varg); -int vwprintf(const wchar_t* wsFormat, va_list varg); -int vswprintf(wchar_t* wcaBuffer, const wchar_t* wsFormat, va_list varg); - -/* - * Formatted Input - */ - -int fscanf(FILE* fileReadFrom, const char* szFormat, ...); -int scanf(const char* szFormat, ...); -int sscanf(const char* szReadFrom, const char* szFormat, ...); - -/* Wide character versions */ -int fwscanf(FILE* fileReadFrom, const wchar_t* wsFormat, ...); -int wscanf(const wchar_t* wsFormat, ...); -int swscanf(const wchar_t* wsReadFrom, const wchar_t* wsFormat, ...); - -/* - * Character Input and Output Functions - */ - -int fgetc(FILE* fileRead); -char* fgets(char* caBuffer, int nBufferSize, FILE* fileRead); -int fputc(int c, FILE* fileWrite); -int fputs(const char* szOutput, FILE* fileWrite); -int getc(FILE* fileRead); -int getchar(void); -char* gets(char* caBuffer); /* Unsafe: how does gets know how long the buffer is? */ -int putc(int c, FILE* fileWrite); -int putchar(int c); -int puts(const char* szOutput); -int ungetc(int c, FILE* fileWasRead); - -/* Wide character versions */ -wint_t fgetwc(FILE* fileRead); -wint_t fputwc(wchar_t wc, FILE* fileWrite); -wint_t getwc(FILE *fileRead); // not exported from crtdll - -/* TODO: check type wint_t, why doesn't compare to WEOF correctly ??? */ -/* wint_t putwc(wint_t wc, FILE* fileWrite); */ -int putwc(wint_t wc, FILE* fileWrite); - -wint_t putwchar(wint_t c); -int _putws(const wchar_t* ws); - -wint_t ungetwc(wchar_t wc, FILE* fileWasRead); - -wint_t _filwbuf(FILE *f); -wint_t _flswbuf(wchar_t c, FILE *f); - -/* - * Not exported by CRTDLL.DLL included for reference purposes. - */ -#if 0 -wchar_t* fgetws(wchar_t* wcaBuffer, int nBufferSize, FILE* fileRead); -int fputws(const wchar_t* wsOutput, FILE* fileWrite); -int getwc(FILE* fileRead); -int getwchar(); -wchar_t* getws(wchar_t* wcaBuffer); -#endif /* 0 */ - -/* NOTE: putchar has no wide char equivalent even in tchar.h */ - -/* - * Direct Input and Output Functions - */ - -size_t fread(void* pBuffer, size_t sizeObject, size_t sizeObjCount, FILE* fileRead); -size_t fwrite(const void* pObjArray, size_t sizeObject, size_t sizeObjCount, FILE* fileWrite); - -/* - * File Positioning Functions - */ - -/* Constants for nOrigin indicating the position relative to which fseek - * sets the file position. Enclosed in ifdefs because io.h could also - * define them. (Though not anymore since io.h includes this file now.) */ -#ifndef SEEK_SET -#define SEEK_SET (0) -#endif - -#ifndef SEEK_CUR -#define SEEK_CUR (1) -#endif - -#ifndef SEEK_END -#define SEEK_END (2) -#endif - -int fseek(FILE* fileSetPosition, long lnOffset, int nOrigin); -long ftell(FILE* fileGetPosition); -void rewind(FILE* fileRewind); - -/* - * An opaque data type used for storing file positions... The contents of - * this type are unknown, but we (the compiler) need to know the size - * because the programmer using fgetpos and fsetpos will be setting aside - * storage for fpos_t structres. Actually I tested using a byte array and - * it is fairly evident that the fpos_t type is a long (in CRTDLL.DLL). - * Perhaps an unsigned long? TODO? It's definitely a 64-bit number in - * MSVCRT however, and for now `long long' will do. - */ -typedef long long fpos_t; - -int fgetpos(FILE* fileGetPosition, fpos_t* pfpos); -int fsetpos(FILE* fileSetPosition, const fpos_t* pfpos); - -/* - * Error Functions - */ -#if 0 -void clearerr(FILE* fileClearErrors); -int feof(FILE* fileIsAtEnd); -int ferror(FILE* fileIsError); -void perror(const char* szErrorMessage); -#endif - -void _wperror(const wchar_t *s); - -#define clearerr(f) (((f)->_flag) &= ~(_IOERR|_IOEOF)) -#define feof(f) (((f)->_flag&_IOEOF)!=0) -/* #define ferror(f) (((f)->_flag&_IOERR)!=0) */ -int ferror(FILE* fileIsError); -#define perror(s) (fprintf(stderr, "%s: %s\n", (s), _strerror(NULL))) - -/* - * Non ANSI functions - */ - -#ifndef __STRICT_ANSI__ -int _fgetchar(void); -int _fputchar(int c); -FILE* _fdopen(int nHandle, char* szMode); - -#ifndef _NO_OLDNAMES -#define fgetchar _fgetchar -#define fputchar _fputchar -#define fdopen _fdopen -#endif /* Not _NO_OLDNAMES */ - -#endif /* Not __STRICT_ANSI__ */ - -#ifdef __cplusplus -} -#endif - -#endif /* _STDIO_H_ */ diff --git a/reactos/include/msvcrt/stdlib.h b/reactos/include/msvcrt/stdlib.h deleted file mode 100644 index 0afcf7a4a3f..00000000000 --- a/reactos/include/msvcrt/stdlib.h +++ /dev/null @@ -1,248 +0,0 @@ -/* - * stdlib.h - * - * Definitions for common types, variables, and functions. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.7 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ -/* added splitpath */ -/* changed definition of environ and argc */ -/* moved prototype for swab from string.h to stdlib.h */ -#ifndef _STDLIB_H_ -#define _STDLIB_H_ - -#define __need_size_t -#define __need_wchar_t -#define __need_NULL -#include - -/* - * RAND_MAX is the maximum value that may be returned by rand. - * The minimum is zero. - */ -#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 - -/* - * These values may be used as exit status codes. - */ -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE -1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This seems like a convenient place to declare these variables, which - * give programs using WinMain (or main for that matter) access to main-ish - * argc and argv. environ is a pointer to a table of environment variables. - * NOTE: Strings in _argv and environ are ANSI strings. - */ -extern int* __argc_dll; -extern char*** __argv_dll; -extern char*** _environ_dll; - -#define __argc (*__argc_dll) -#define __argv (*__argv_dll) -#define _environ (*_environ_dll) - - -#include - -#ifndef __ATTRIB_NORETURN -#ifdef __GNUC__ -#define _ATTRIB_NORETURN __attribute__ ((noreturn)) -#ifndef __int64 -#define __int64 long long -#endif /* Not __int64 */ -#else /* Not __GNUC__ */ -#define _ATTRIB_NORETURN -#endif /* __GNUC__ */ -#endif - -double atof(const char* szNumber); -int atoi(const char* szNumber); -long atol(const char* szNumber); - -double strtod(const char* szNumber, char** pszAfterNumber); -double wcstod(const wchar_t* wsNumber, wchar_t** pwsAfterNumber); -long strtol(const char* szNumber, char** pszAfterNumber, int nBase); -long wcstol(const wchar_t* wsNumber, wchar_t** pwsAfterNumber, int nBase); - -unsigned long strtoul(const char* szNumber, char** pszAfterNumber, int nBase); -unsigned long wcstoul(const wchar_t* wsNumber, wchar_t** pwsAfterNumber, int nBase); - -size_t wcstombs(char* mbsDest, const wchar_t* wsConvert, size_t size); -int wctomb(char* mbDest, wchar_t wc); -int mblen(const char* mbs, size_t sizeString); -size_t mbstowcs(wchar_t* wcaDest, const char* mbsConvert, size_t size); -int mbtowc(wchar_t* wcDest, const char* mbConvert, size_t size); - -int rand(void); -void srand(unsigned int nSeed); - -void* calloc(size_t sizeObjCnt, size_t sizeObject); -void* malloc(size_t sizeObject); -void* realloc(void* pObject, size_t sizeNew); -void free(void* pObject); - -void abort(void) _ATTRIB_NORETURN; -void exit(int nStatus) _ATTRIB_NORETURN; -int atexit(void (*pfuncExitProcessing)(void)); - -int system(const char* szCommand); // impl in process -char* getenv(const char* szVarName); // impl in stdio ??? -wchar_t* _wgetenv(const wchar_t* szVarName); - -typedef int (*_pfunccmp_t)(const void*, const void*); - -void* bsearch(const void* pKey, const void* pBase, size_t cntObjects, size_t sizeObject, _pfunccmp_t pfuncCmp); -void qsort(const void* pBase, size_t cntObjects, size_t sizeObject, _pfunccmp_t pfuncCmp); - -int abs(int n); -long labs(long n); - -/* - * div_t and ldiv_t are structures used to return the results of div and - * ldiv. - * - * NOTE: div and ldiv appear not to work correctly unless - * -fno-pcc-struct-return is specified. This is included in the - * mingw32 specs file. - */ -typedef struct { int quot, rem; } div_t; -typedef struct { long quot, rem; } ldiv_t; - -#ifdef __GNUC__ // robd -typedef struct { long long quot, rem; } lldiv_t; -#else -typedef struct { double quot, rem; } lldiv_t; -#endif - -div_t div(int nNumerator, int nDenominator); -ldiv_t ldiv(long lNumerator, long lDenominator); - -#ifdef __GNUC__ // robd -lldiv_t lldiv(long long lNumerator, long long lDenominator); -#else -lldiv_t lldiv(double lNumerator, double lDenominator); -#endif - - -#ifndef __STRICT_ANSI__ - -/* - * NOTE: Officially the three following functions are obsolete. The Win32 API - * functions SetErrorMode, Beep and Sleep are their replacements. - */ -void _beep(unsigned int, unsigned int); -void _seterrormode(int nMode); -void _sleep(unsigned long ulTime); - -void _exit(int nStatus) _ATTRIB_NORETURN; - -int _putenv(const char *val); -void _searchenv(const char *file, const char *var, char *path); -void _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext); -void _wsplitpath(const wchar_t* path, wchar_t* drive, wchar_t* dir, wchar_t* fname, wchar_t* ext); - -char* _itoa(int nValue, char* sz, int nRadix); -char* _ltoa(long lnValue, char* sz, int nRadix); - -int _wputenv(const wchar_t *val); -void _wsearchenv(const wchar_t *file, const wchar_t *var, wchar_t *path); -void _makepath(char *path, const char *drive, const char *dir, const char *fname, const char *ext); -void _wmakepath(wchar_t *path, const wchar_t *drive, const wchar_t *dir, const wchar_t *fname, const wchar_t *ext); -wchar_t* _wfullpath(wchar_t *absPath, const wchar_t *relPath, size_t maxLength); -char* _i64toa(__int64 value, char *string, int radix); -char* _ultoa(unsigned long value, char *string, int radix); -char* _ui64toa(unsigned __int64 value, char *string, int radix); - -wchar_t* _itow(int nValue, wchar_t* sz, int nRadix); -wchar_t* _i64tow(__int64 value, wchar_t *string, int radix); -wchar_t* _ltow(long lnValue, wchar_t* sz, int nRadix); -wchar_t* _ultow(unsigned long value, wchar_t *string, int radix); -wchar_t* _ui64tow(unsigned __int64 value, wchar_t *string, int radix); -__int64 _atoi64(const char *szNumber); -int _wtoi(const wchar_t *str); -__int64 _wtoi64(const wchar_t *str); -long _wtol(const wchar_t *str); - -char* _ecvt(double dValue, int nDig, int* pnDec, int* pnSign); -char* _fcvt(double dValue, int nDig, int* pnDec, int* pnSign); -char* _gcvt(double dValue, int nDec, char* caBuf); -char* _fullpath(char* caBuf, const char* szPath, size_t sizeMax); -void _swab(const char* caFrom, char* caTo, size_t sizeToCopy); - -unsigned int _rotl(unsigned int value, int shift); -unsigned int _rotr(unsigned int value, int shift); -unsigned long _lrotl(unsigned long value, int shift); -unsigned long _lrotr(unsigned long value, int shift); - - -#ifndef _NO_OLDNAMES -#define beep _beep -#define seterrormode _seterrormode -#define sleep _sleep -#define putenv _putenv -#define searchenv _searchenv -#define splitpath _splitpath -#define itoa _itoa -#define ltoa _ltoa -#define ecvt _ecvt -#define fcvt _fcvt -#define gcvt _gcvt -#define swab _swab -#endif /* Not _NO_OLDNAMES */ - - -#endif /* Not __STRICT_ANSI__ */ - -/* - * Undefine the no return attribute used in some function definitions - */ -#undef _ATTRIB_NORETURN - -#ifndef _DISABLE_TIDENTS -#ifdef UNICODE -#define _tsplitpath _wsplitpath -#define _tmakepath _wmakepath -#else -#define _tsplitpath _splitpath -#define _tmakepath _makepath -#endif -#endif /* _DISABLE_TIDENTS */ - -#ifdef __cplusplus -} -#endif - -#endif /* Not _STDLIB_H_ */ - diff --git a/reactos/include/msvcrt/string.h b/reactos/include/msvcrt/string.h deleted file mode 100644 index 86d43599e59..00000000000 --- a/reactos/include/msvcrt/string.h +++ /dev/null @@ -1,193 +0,0 @@ -/* - * string.h - * - * Definitions for memory and string functions. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.7 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ -/* changed prototype for _strerror */ -/* moved prototype for swab from string.h to stdlib.h */ - - -#ifndef _STRING_H_ -#define _STRING_H_ - - -/* - * Define size_t, wchar_t and NULL - */ -#define __need_size_t -#define __need_wchar_t -#define __need_NULL -#include -#include <_mingw.h> - -#ifdef __cplusplus -extern "C" { -#endif - -char * ___strtok; /* removed extern specifier 02-06-98, BD */ - -/* - * Prototypes of the ANSI Standard C library string functions. - */ -void* memchr(const void* p, int cSearchFor, size_t sizeSearch); -int memcmp(const void* p1, const void* p2, size_t sizeSearch); -void* memcpy(void* pCopyTo, const void* pSource, size_t sizeSource); -void* memmove(void* pMoveTo, const void* pSource, size_t sizeSource); -void* memset(void* p, int cFill, size_t sizeRepeatCount); -char* strcat(char* szAddTo, const char* szAdd); -char* strchr(const char* szSearch, int cFor); -int strcmp(const char* sz1, const char* sz2); -int strcoll(const char* sz1, const char* sz2); /* Compare using locale */ -char* strcpy(char* szCopyTo, const char* szSource); -size_t strcspn(const char* szGetPrefix, const char* szNotIncluding); -char* strerror(int nError); /* NOTE: NOT an old name wrapper. */ -char * _strerror(const char *s); -size_t strlen(const char* sz); -size_t strnlen(const char* sz, size_t count); /* not exported */ -char* strncat(char* szAddTo, const char* szAdd, size_t sizeMaxAdd); -int strncmp(const char* sz1, const char* sz2, size_t sizeMaxCompare); -char* strncpy(char* szCopyTo, const char* szSource, size_t sizeMaxCopy); -char* strpbrk(const char* szSearch, const char* szAnyOf); -char* strrchr(const char* szSearch, int cFor); -size_t strspn(const char* szGetPrefix, const char *szIncluding); -char* strstr(const char* szSearch, const char *szFor); -char* strtok(char* szTokenize, const char* szDelimiters); -size_t strxfrm(char* szTransformed, const char *szSource, size_t sizeTransform); - -#ifndef __STRICT_ANSI__ -/* - * Extra non-ANSI functions provided by the CRTDLL library - */ -void* _memccpy(void* pCopyTo, const void* pSource, int cTerminator, size_t sizeMaxCopy); -int _memicmp(const void* p1, const void* p2, size_t sizeSearch); -char* _strdup(const char *szDuplicate); -int _strcmpi(const char* sz1, const char* sz2); -int _stricmp(const char* sz1, const char* sz2); -int _stricoll(const char* sz1, const char* sz2); -char* _strlwr(char* szToConvert); -int _strnicmp(const char* sz1, const char* sz2, size_t sizeMaxCompare); -char* _strnset(char* szToFill, int cFill, size_t sizeMaxFill); -char* _strrev(char* szToReverse); -char* _strset(char* szToFill, int cFill); -char* _strupr(char* szToConvert); - -#endif /* Not __STRICT_ANSI__ */ - - -/* - * Unicode versions of the standard calls. - */ -wchar_t* wcscat(wchar_t* wsAddTo, const wchar_t* wsAdd); -wchar_t* wcschr(const wchar_t* wsSearch, wchar_t wcFor); -int wcscmp(const wchar_t* ws1, const wchar_t* ws2); -int wcscoll(const wchar_t* ws1, const wchar_t* ws2); -wchar_t* wcscpy(wchar_t* wsCopyTo, const wchar_t* wsSource); -size_t wcscspn(const wchar_t* wsGetPrefix, const wchar_t* wsNotIncluding); -/* Note: No wcserror in CRTDLL. */ -size_t wcslen(const wchar_t* ws); -wchar_t* wcsncat(wchar_t* wsAddTo, const wchar_t* wsAdd, size_t sizeMaxAdd); -int wcsncmp(const wchar_t* ws1, const wchar_t* ws2, size_t sizeMaxCompare); -wchar_t* wcsncpy(wchar_t* wsCopyTo, const wchar_t* wsSource, size_t sizeMaxCopy); -wchar_t* wcspbrk(const wchar_t* wsSearch, const wchar_t* wsAnyOf); -wchar_t* wcsrchr(const wchar_t* wsSearch, wchar_t wcFor); -size_t wcsspn(const wchar_t* wsGetPrefix, const wchar_t* wsIncluding); -wchar_t* wcsstr(const wchar_t* wsSearch, const wchar_t* wsFor); -wchar_t* wcstok(wchar_t* wsTokenize, const wchar_t* wsDelimiters); -size_t wcsxfrm(wchar_t* wsTransformed, const wchar_t *wsSource, size_t sizeTransform); - - -#ifndef __STRICT_ANSI__ -/* - * Unicode versions of non-ANSI functions provided by CRTDLL. - */ - -/* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */ -#define _wcscmpi _wcsicmp - -wchar_t* _wcsdup(const wchar_t* wsToDuplicate); -int _wcsicmp(const wchar_t* ws1, const wchar_t* ws2); -int _wcsicoll(const wchar_t* ws1, const wchar_t* ws2); -int _wcsncoll(const wchar_t *s1, const wchar_t *s2, size_t c); -int _wcsnicoll(const wchar_t *s1, const wchar_t *s2, size_t c); -wchar_t* _wcslwr(wchar_t* wsToConvert); -int _wcsnicmp(const wchar_t* ws1, const wchar_t* ws2, size_t sizeMaxCompare); -wchar_t* _wcsnset(wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill); -wchar_t* _wcsrev(wchar_t* wsToReverse); -wchar_t* _wcsset(wchar_t* wsToFill, wchar_t wcToFill); -wchar_t* _wcsupr(wchar_t* wsToConvert); - -#endif /* Not __STRICT_ANSI__ */ - - -#ifndef __STRICT_ANSI__ -#ifndef _NO_OLDNAMES - -/* - * Non-underscored versions of non-ANSI functions. They live in liboldnames.a - * and provide a little extra portability. Also a few extra UNIX-isms like - * strcasecmp. - */ - -void* memccpy(void* pCopyTo, const void* pSource, int cTerminator, size_t sizeMaxCopy); -int memicmp(const void* p1, const void* p2, size_t sizeSearch); -#define strdup(szDuplicate) _strdup(szDuplicate) -int strcmpi(const char* sz1, const char* sz2); -int stricmp(const char* sz1, const char* sz2); -int strcasecmp(const char* sz1, const char* sz2); -int stricoll(const char* sz1, const char* sz2); -char* strlwr(char* szToConvert); -int strnicmp(const char* sz1, const char* sz2, size_t sizeMaxCompare); -int strncasecmp(const char* sz1, const char* sz2, size_t sizeMaxCompare); -char* strnset(char* szToFill, int cFill, size_t sizeMaxFill); -char* strrev(char* szToReverse); -char* strset(char* szToFill, int cFill); -char* strupr(char* szToConvert); - - -/* NOTE: There is no _wcscmpi, but this is for compatibility. */ -int wcscmpi(const wchar_t* ws1, const wchar_t* ws2); -#if __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION == 5 -wchar_t* wcsdup(wchar_t* wsToDuplicate); -#else -wchar_t* wcsdup(const wchar_t* wsToDuplicate); -#endif -int wcsicmp(const wchar_t* ws1, const wchar_t* ws2); -int wcsicoll(const wchar_t* ws1, const wchar_t* ws2); -wchar_t* wcslwr(wchar_t* wsToConvert); -int wcsnicmp(const wchar_t* ws1, const wchar_t* ws2, size_t sizeMaxCompare); -wchar_t* wcsnset(wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill); -wchar_t* wcsrev(wchar_t* wsToReverse); -wchar_t* wcsset(wchar_t* wsToFill, wchar_t wcToFill); -wchar_t* wcsupr(wchar_t* wsToConvert); - -#endif /* Not _NO_OLDNAMES */ -#endif /* Not strict ANSI */ - - -#ifdef __cplusplus -} -#endif - -#endif /* Not _STRING_H_ */ - diff --git a/reactos/include/msvcrt/sys/fcntl.h b/reactos/include/msvcrt/sys/fcntl.h deleted file mode 100644 index 19a67bc4b9e..00000000000 --- a/reactos/include/msvcrt/sys/fcntl.h +++ /dev/null @@ -1,8 +0,0 @@ -/* - * This file is part of the Mingw32 package. - * - * This fcntl.h maps to the root fcntl.h - */ -#ifndef __STRICT_ANSI__ -#include -#endif diff --git a/reactos/include/msvcrt/sys/file.h b/reactos/include/msvcrt/sys/file.h deleted file mode 100644 index 9b8cc980572..00000000000 --- a/reactos/include/msvcrt/sys/file.h +++ /dev/null @@ -1,9 +0,0 @@ -/* - * This file is part of the Mingw32 package. - * - * This file.h maps to the root fcntl.h - * TODO? - */ -#ifndef __STRICT_ANSI__ -#include -#endif diff --git a/reactos/include/msvcrt/sys/locking.h b/reactos/include/msvcrt/sys/locking.h deleted file mode 100644 index 31bc4ebd9f5..00000000000 --- a/reactos/include/msvcrt/sys/locking.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * locking.h - * - * Constants for the mode parameter of the locking function. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _LOCKING_H_ -#define _LOCKING_H_ - - -#define _LK_UNLCK 0 /* Unlock */ -#define _LK_LOCK 1 /* Lock */ -#define _LK_NBLCK 2 /* Non-blocking lock */ -#define _LK_RLCK 3 /* Lock for read only */ -#define _LK_NBRLCK 4 /* Non-blocking lock for read only */ - -#ifndef NO_OLDNAMES -#define LK_UNLCK _LK_UNLCK -#define LK_LOCK _LK_LOCK -#define LK_NBLCK _LK_NBLCK -#define LK_RLCK _LK_RLCK -#define LK_NBRLCK _LK_NBRLCK -#endif /* Not NO_OLDNAMES */ - -#endif /* Not _LOCKING_H_ */ - -#endif /* Not __STRICT_ANSI__ */ diff --git a/reactos/include/msvcrt/sys/stat.h b/reactos/include/msvcrt/sys/stat.h deleted file mode 100644 index 904a83622d5..00000000000 --- a/reactos/include/msvcrt/sys/stat.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * stat.h - * - * Symbolic constants for opening and creating files, also stat, fstat and - * chmod functions. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.7 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _STAT_H_ -#define _STAT_H_ - -#include - - -#ifndef _WCHAR_T_ -#define _WCHAR_T_ -#define _WCHAR_T -#define _WCHAR_T_DEFINED -#ifndef __WCHAR_TYPE__ -#define __WCHAR_TYPE__ short unsigned int -#endif -#ifndef __cplusplus -typedef __WCHAR_TYPE__ wchar_t; -#endif /* C++ */ -#endif /* wchar_t not already defined */ - - -/* - * Constants for the stat st_mode member. - */ -#define S_IFIFO 0x1000 /* FIFO */ -#define S_IFCHR 0x2000 /* Character */ -#define S_IFBLK 0x3000 /* Block */ -#define S_IFDIR 0x4000 /* Directory */ -#define S_IFREG 0x8000 /* Regular */ - -#define S_IFMT 0xF000 /* File type mask */ - -#define S_IEXEC 0x0040 -#define S_IWRITE 0x0080 -#define S_IREAD 0x0100 - -#define S_ISDIR(m) ((m) & S_IFDIR) -#define S_ISFIFO(m) ((m) & S_IFIFO) -#define S_ISCHR(m) ((m) & S_IFCHR) -#define S_ISBLK(m) ((m) & S_IFBLK) -#define S_ISREG(m) ((m) & S_IFREG) - -#define S_IRWXU (S_IREAD | S_IWRITE | S_IEXEC) -#define S_IXUSR S_IEXEC -#define S_IWUSR S_IWRITE -#define S_IRUSR S_IREAD - -#define _S_IEXEC S_IEXEC -#define _S_IREAD S_IREAD -#define _S_IWRITE S_IWRITE - -/* - * The structure manipulated and returned by stat and fstat. - * - * NOTE: If called on a directory the values in the time fields are not only - * invalid, they will cause localtime et. al. to return NULL. And calling - * asctime with a NULL pointer causes an Invalid Page Fault. So watch it! - */ -struct stat -{ - unsigned st_dev; /* Equivalent to drive number 0=A 1=B ... */ - short st_ino; /* Always zero ? */ - short st_mode; /* See above constants */ - short st_nlink; /* Number of links. */ - short st_uid; /* User: Maybe significant on NT ? */ - short st_gid; /* Group: Ditto */ - unsigned st_rdev; /* Seems useless (not even filled in) */ - long st_size; /* File size in bytes */ - time_t st_atime; /* Accessed date (always 00:00 hrs local on FAT) */ - time_t st_mtime; /* Modified time */ - time_t st_ctime; /* Creation time */ -}; - - -struct _stati64 -{ - unsigned st_dev; /* Equivalent to drive number 0=A 1=B ... */ - short st_ino; /* Always zero ? */ - short st_mode; /* See above constants */ - short st_nlink; /* Number of links. */ - short st_uid; /* User: Maybe significant on NT ? */ - short st_gid; /* Group: Ditto */ - unsigned st_rdev; /* Seems useless (not even filled in) */ - __int64 st_size; /* File size in bytes */ - time_t st_atime; /* Accessed date (always 00:00 hrs local on FAT) */ - time_t st_mtime; /* Modified time */ - time_t st_ctime; /* Creation time */ -}; - -#ifdef __cplusplus -extern "C" { -#endif - -int _fstat(int, struct stat*); -int _stat(const char*, struct stat*); - -__int64 _fstati64(int nFileNo, struct _stati64* pstat); -__int64 _stati64(const char* szPath, struct _stati64* pstat); -int _wstat(const wchar_t* szPath, struct stat* pstat); -__int64 _wstati64(const wchar_t* szPath, struct _stati64* pstat); - - -#ifndef _NO_OLDNAMES - -#define fstat(nFileNo, pstat) _fstat(nFileNo, pstat) -#define stat(szPath,pstat) _stat(szPath,pstat) - -#endif /* Not _NO_OLDNAMES */ - - -#ifdef __cplusplus -} -#endif - -#endif /* Not _STAT_H_ */ - -#endif /* Not __STRICT_ANSI__ */ diff --git a/reactos/include/msvcrt/sys/time.h b/reactos/include/msvcrt/sys/time.h deleted file mode 100644 index 27d64df0d18..00000000000 --- a/reactos/include/msvcrt/sys/time.h +++ /dev/null @@ -1,3 +0,0 @@ - -#include - diff --git a/reactos/include/msvcrt/sys/timeb.h b/reactos/include/msvcrt/sys/timeb.h deleted file mode 100644 index fc0ac3e5167..00000000000 --- a/reactos/include/msvcrt/sys/timeb.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * timeb.h - * - * Support for the UNIX System V ftime system call. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _TIMEB_H_ -#define _TIMEB_H_ - - -/* - * TODO: Structure not tested. - */ -struct timeb -{ - long time; - short millitm; - short _timezone; - short dstflag; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -/* TODO: Not tested. */ -void _ftime(struct timeb*); - -#ifndef _NO_OLDNAMES -void ftime(struct timeb*); -#endif /* Not _NO_OLDNAMES */ - -#ifdef __cplusplus -} -#endif - -#endif /* Not _TIMEB_H_ */ - -#endif /* Not __STRICT_ANSI__ */ diff --git a/reactos/include/msvcrt/sys/types.h b/reactos/include/msvcrt/sys/types.h deleted file mode 100644 index 6f24e5defcb..00000000000 --- a/reactos/include/msvcrt/sys/types.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * types.h - * - * The definition of constants, data types and global variables. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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 WARRENTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warrenties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * $Revision: 1.5 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _TYPES_H_ -#define _TYPES_H_ - -#ifdef __GNUC__ -#undef __int64 -#define __int64 long long -#endif - -#ifndef _TIME_T_ -#define _TIME_T_ -typedef long time_t; -#endif - -#ifndef __STRICT_ANSI__ - -#ifndef _OFF_T_DEFINED -typedef long _off_t; -#ifndef _NO_OLDNAMES -#define off_t _off_t -#endif -#define _OFF_T_DEFINED -#endif /* Not _OFF_T_DEFINED */ - -#ifndef _DEV_T_DEFINED -typedef short _dev_t; -#ifndef _NO_OLDNAMES -#define dev_t _dev_t -#endif -#define _DEV_T_DEFINED -#endif /* Not _DEV_T_DEFINED */ - -#ifndef _INO_T_DEFINED -typedef short _ino_t; -#ifndef _NO_OLDNAMES -#define ino_t _ino_t -#endif -#define _INO_T_DEFINED -#endif /* Not _INO_T_DEFINED */ - -#endif /* Not __STRICT_ANSI__ */ - -#endif /* Not _TYPES_H_ */ diff --git a/reactos/include/msvcrt/sys/unistd.h b/reactos/include/msvcrt/sys/unistd.h deleted file mode 100644 index 21f6fd14151..00000000000 --- a/reactos/include/msvcrt/sys/unistd.h +++ /dev/null @@ -1,9 +0,0 @@ -/* - * This file is part of the Mingw32 package. - * - * unistd.h maps (roughly) to io.h - */ -#ifndef __STRICT_ANSI__ -#include -#endif - diff --git a/reactos/include/msvcrt/sys/utime.h b/reactos/include/msvcrt/sys/utime.h deleted file mode 100644 index 0f0028f5417..00000000000 --- a/reactos/include/msvcrt/sys/utime.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * utime.h - * - * Support for the utime function. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.5 $ - * $Author$ - * $Date$ - * - */ - -#ifndef __STRICT_ANSI__ - -#ifndef _UTIME_H_ -#define _UTIME_H_ - -#define __need_wchar_t -#define __need_size_t -#include -#include - - -/* - * Structure used by _utime function. - */ -struct _utimbuf -{ - time_t actime; /* Access time */ - time_t modtime; /* Modification time */ -}; - - -#ifndef _NO_OLDNAMES - -/* NOTE: Must be the same as _utimbuf above. */ -struct utimbuf -{ - time_t actime; - time_t modtime; -}; -#endif /* Not _NO_OLDNAMES */ - - -#ifdef __cplusplus -extern "C" { -#endif - -int _utime(const char*, struct _utimbuf*); -int _futime(int, struct _utimbuf*); - -/* The wide character version, only available for MSVCRT versions of the - * C runtime library. */ -int _wutime(const wchar_t*, struct _utimbuf*); - -#ifndef _NO_OLDNAMES -int utime(const char*, struct utimbuf*); -#endif /* Not _NO_OLDNAMES */ - - -#ifdef __cplusplus -} -#endif - -#endif /* Not _UTIME_H_ */ -#endif /* Not __STRICT_ANSI__ */ diff --git a/reactos/include/msvcrt/time.h b/reactos/include/msvcrt/time.h deleted file mode 100644 index 68daa49d78c..00000000000 --- a/reactos/include/msvcrt/time.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * time.h - * - * Date and time functions and types. - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.6 $ - * $Author$ - * $Date$ - * - */ -/* Appropriated for Reactos Crtdll by Ariadne */ -#ifndef _TIME_H_ -#define _TIME_H_ - -#define __need_wchar_t -#define __need_size_t -#include - - -/* - * Number of clock ticks per second. A clock tick is the unit by which - * processor time is measured and is returned by 'clock'. - */ -#define CLOCKS_PER_SEC 1000.0 -#define CLK_TICK CLOCKS_PER_SEC - - -/* - * Need a definition of time_t. - */ -#include - -/* - * A type for storing the current time and date. This is the number of - * seconds since midnight Jan 1, 1970. - * NOTE: Normally this is defined by the above include of sys/types.h - */ -#ifndef _TIME_T_ -typedef long time_t; -#define _TIME_T_ -#endif - -/* - * A type for measuring processor time (in clock ticks). - */ -#ifndef _CLOCK_T_ -typedef long clock_t; -#define _CLOCK_T_ -#endif - -/* - * A structure for storing all kinds of useful information about the - * current (or another) time. - */ -struct tm -{ - int tm_sec; /* Seconds: 0-59 (K&R says 0-61?) */ - int tm_min; /* Minutes: 0-59 */ - int tm_hour; /* Hours since midnight: 0-23 */ - int tm_mday; /* Day of the month: 1-31 */ - int tm_mon; /* Months *since* january: 0-11 */ - int tm_year; /* Years since 1900 */ - int tm_wday; /* Days since Sunday (0-6) */ - int tm_yday; /* Days since Jan. 1: 0-365 */ - int tm_isdst; /* +1 Daylight Savings Time, 0 No DST, - * -1 don't know */ - char *tm_zone; - int tm_gmtoff; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -clock_t clock(void); -time_t time(time_t*); -double difftime(time_t, time_t); -time_t mktime(struct tm*); - -/* - * These functions write to and return pointers to static buffers that may - * be overwritten by other function calls. Yikes! - * - * NOTE: localtime, and perhaps the others of the four functions grouped - * below may return NULL if their argument is not 'acceptable'. Also note - * that calling asctime with a NULL pointer will produce an Invalid Page - * Fault and crap out your program. Guess how I know. Hint: stat called on - * a directory gives 'invalid' times in st_atime etc... - */ -char* asctime(const struct tm*); -char* ctime(const time_t*); -struct tm* gmtime(const time_t*); -struct tm* localtime(const time_t*); - -size_t strftime(char*, size_t, const char*, const struct tm*); -size_t wcsftime(wchar_t*, size_t, const wchar_t*, const struct tm*); - -wchar_t* _wasctime(const struct tm *timeptr); -wchar_t* _wctime(const time_t * const timep); -char* _strdate(const char *datestr); -wchar_t* _wstrdate(const wchar_t *datestr); -char* _strtime(char* buf); -wchar_t* _wstrtime(wchar_t* buf); - -#ifdef __cplusplus -} -#endif - -#endif /* Not _TIME_H_ */ - diff --git a/reactos/include/msvcrt/wchar.h b/reactos/include/msvcrt/wchar.h deleted file mode 100644 index 9fc76f07b65..00000000000 --- a/reactos/include/msvcrt/wchar.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * wchar.h - * - * Defines of all functions for supporting wide characters. Actually it - * just includes all those headers, which is not a good thing to do from a - * processing time point of view, but it does mean that everything will be - * in sync. - * - * This file is part of the Mingw32 package. - * - * 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. - * - * $Revision: 1.5 $ - * $Author$ - * $Date$ - * - */ - -#ifndef _WCHAR_H_ -#define _WCHAR_H_ - -#define WCHAR_MIN 0 -#define WCHAR_MAX ((wchar_t)-1) - -#include -#include -#include -#include -#include - - -#endif /* not _WCHAR_H_ */ - diff --git a/reactos/include/msvcrt/wine/cppexcept.h b/reactos/include/msvcrt/wine/cppexcept.h deleted file mode 100644 index 3a822ed9ec0..00000000000 --- a/reactos/include/msvcrt/wine/cppexcept.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * msvcrt C++ exception handling - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef __MSVCRT_CPPEXCEPT_H -#define __MSVCRT_CPPEXCEPT_H - -#define CXX_FRAME_MAGIC 0x19930520 -#define CXX_EXCEPTION 0xe06d7363 - -typedef void (*vtable_ptr)(); - -/* type_info object, see cpp.c for inplementation */ -typedef struct __type_info -{ - vtable_ptr *vtable; - char *name; /* Unmangled name, allocated lazily */ - char mangled[32]; /* Variable length, but we declare it large enough for static RTTI */ -} type_info; - -/* the exception frame used by CxxFrameHandler */ -typedef struct __cxx_exception_frame -{ - EXCEPTION_REGISTRATION_RECORD frame; /* the standard exception frame */ - int trylevel; - DWORD ebp; -} cxx_exception_frame; - -/* info about a single catch {} block */ -typedef struct __catchblock_info -{ - UINT flags; /* flags (see below) */ - type_info *type_info; /* C++ type caught by this block */ - int offset; /* stack offset to copy exception object to */ - void (*handler)(); /* catch block handler code */ -} catchblock_info; -#define TYPE_FLAG_CONST 1 -#define TYPE_FLAG_VOLATILE 2 -#define TYPE_FLAG_REFERENCE 8 - -/* info about a single try {} block */ -typedef struct __tryblock_info -{ - int start_level; /* start trylevel of that block */ - int end_level; /* end trylevel of that block */ - int catch_level; /* initial trylevel of the catch block */ - int catchblock_count; /* count of catch blocks in array */ - catchblock_info *catchblock; /* array of catch blocks */ -} tryblock_info; - -/* info about the unwind handler for a given trylevel */ -typedef struct __unwind_info -{ - int prev; /* prev trylevel unwind handler, to run after this one */ - void (*handler)(); /* unwind handler */ -} unwind_info; - -/* descriptor of all try blocks of a given function */ -typedef struct __cxx_function_descr -{ - UINT magic; /* must be CXX_FRAME_MAGIC */ - UINT unwind_count; /* number of unwind handlers */ - unwind_info *unwind_table; /* array of unwind handlers */ - UINT tryblock_count; /* number of try blocks */ - tryblock_info *tryblock; /* array of try blocks */ - UINT unknown[3]; -} cxx_function_descr; - -typedef void (*cxx_copy_ctor)(void); - -/* complete information about a C++ type */ -typedef struct __cxx_type_info -{ - UINT flags; /* flags (see CLASS_* flags below) */ - type_info *type_info; /* C++ type info */ - int this_offset; /* offset of base class this pointer from start of object */ - int vbase_descr; /* offset of virtual base class descriptor */ - int vbase_offset; /* offset of this pointer offset in virtual base class descriptor */ - size_t size; /* object size */ - cxx_copy_ctor copy_ctor; /* copy constructor */ -} cxx_type_info; -#define CLASS_IS_SIMPLE_TYPE 1 -#define CLASS_HAS_VIRTUAL_BASE_CLASS 4 - -/* table of C++ types that apply for a given object */ -typedef struct __cxx_type_info_table -{ - UINT count; /* number of types */ - const cxx_type_info *info[3]; /* variable length, we declare it large enough for static RTTI */ -} cxx_type_info_table; - -typedef DWORD (*cxx_exc_custom_handler)( PEXCEPTION_RECORD, cxx_exception_frame*, - PCONTEXT, EXCEPTION_REGISTRATION_RECORD**, - cxx_function_descr*, int nested_trylevel, - EXCEPTION_REGISTRATION_RECORD *nested_frame, DWORD unknown3 ); - -/* type information for an exception object */ -typedef struct __cxx_exception_type -{ - UINT flags; /* TYPE_FLAG flags */ - void (*destructor)(); /* exception object destructor */ - cxx_exc_custom_handler custom_handler; /* custom handler for this exception */ - const cxx_type_info_table *type_info_table; /* list of types for this exception object */ -} cxx_exception_type; - -void _CxxThrowException(void*,const cxx_exception_type*); - -#endif /* __MSVCRT_CPPEXCEPT_H */ diff --git a/reactos/include/msvcrt/wine/eh.h b/reactos/include/msvcrt/wine/eh.h deleted file mode 100644 index 14201fb0676..00000000000 --- a/reactos/include/msvcrt/wine/eh.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef __WINE_EH_H -#define __WINE_EH_H -#ifndef __WINE_USE_MSVCRT -#define __WINE_USE_MSVCRT -#endif - -#if !defined(__cplusplus) && !defined(USE_MSVCRT_PREFIX) -#error "eh.h is meant only for C++ applications" -#endif - -#ifndef MSVCRT -# ifdef USE_MSVCRT_PREFIX -# define MSVCRT(x) MSVCRT_##x -# else -# define MSVCRT(x) x -# endif -#endif - -struct _EXCEPTION_POINTERS; - -typedef void (*terminate_handler)(); -typedef void (*terminate_function)(); -typedef void (*unexpected_handler)(); -typedef void (*unexpected_function)(); -typedef void (*_se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info); - -terminate_function MSVCRT(set_terminate)(terminate_function func); -unexpected_function MSVCRT(set_unexpected)(unexpected_function func); -_se_translator_function MSVCRT(_set_se_translator)(_se_translator_function func); - -void MSVCRT(terminate)(); -void MSVCRT(unexpected)(); - -#endif /* __WINE_EH_H */ diff --git a/reactos/include/msvcrt/wine/msvcrt.h b/reactos/include/msvcrt/wine/msvcrt.h deleted file mode 100644 index d6ae272a5d9..00000000000 --- a/reactos/include/msvcrt/wine/msvcrt.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef __WINE_MSVCRT_H -#define __WINE_MSVCRT_H - -#include -#include -#include - -#include "windef.h" -#include "winbase.h" -#include "winerror.h" -#include "winnls.h" - -#include "msvcrt/string.h" -#include "eh.h" - -/* TLS data */ -extern DWORD MSVCRT_tls_index; - -typedef struct __MSVCRT_thread_data -{ - int _errno; // ros - unsigned long doserrno; - char *mbstok_next; /* next ptr for mbstok() */ - char *efcvt_buffer; /* buffer for ecvt/fcvt */ - terminate_function terminate_handler; - unexpected_function unexpected_handler; - _se_translator_function se_translator; - EXCEPTION_RECORD *exc_record; -} MSVCRT_thread_data; - -extern MSVCRT_thread_data *msvcrt_get_thread_data(void); - -extern int MSVCRT_current_lc_all_cp; - -void _purecall(void); -void MSVCRT__set_errno(int); -char* msvcrt_strndup(const char*,unsigned int); -#ifndef __REACTOS__ -MSVCRT_wchar_t *msvcrt_wstrndup(const MSVCRT_wchar_t*, unsigned int); -#endif -void MSVCRT__amsg_exit(int errnum); - -extern char **MSVCRT__environ; -#ifndef __REACTOS__ -extern MSVCRT_wchar_t **MSVCRT__wenviron; -extern char ** msvcrt_SnapshotOfEnvironmentA(char **); -extern MSVCRT_wchar_t ** msvcrt_SnapshotOfEnvironmentW(MSVCRT_wchar_t **); -#endif - -/* FIXME: This should be declared in new.h but it's not an extern "C" so - * it would not be much use anyway. Even for Winelib applications. - */ -int MSVCRT__set_new_mode(int mode); - -void* MSVCRT_operator_new(unsigned long size); -void MSVCRT_operator_delete(void*); -#ifndef __REACTOS__ -typedef void* (*MSVCRT_malloc_func)(MSVCRT_size_t); -#endif -typedef void (*MSVCRT_free_func)(void*); -#ifndef __REACTOS__ -extern char* MSVCRT___unDName(int,const char*,int,MSVCRT_malloc_func,MSVCRT_free_func,unsigned int); -#endif - -/* Setup and teardown multi threaded locks */ -extern void msvcrt_init_mt_locks(void); -extern void msvcrt_free_mt_locks(void); - -extern void msvcrt_init_io(void); -extern void msvcrt_free_io(void); -extern void msvcrt_init_console(void); -extern void msvcrt_free_console(void); -extern void msvcrt_init_args(void); -extern void msvcrt_free_args(void); - -/* run-time error codes */ -#define _RT_STACK 0 -#define _RT_NULLPTR 1 -#define _RT_FLOAT 2 -#define _RT_INTDIV 3 -#define _RT_EXECMEM 5 -#define _RT_EXECFORM 6 -#define _RT_EXECENV 7 -#define _RT_SPACEARG 8 -#define _RT_SPACEENV 9 -#define _RT_ABORT 10 -#define _RT_NPTR 12 -#define _RT_FPTR 13 -#define _RT_BREAK 14 -#define _RT_INT 15 -#define _RT_THREAD 16 -#define _RT_LOCK 17 -#define _RT_HEAP 18 -#define _RT_OPENCON 19 -#define _RT_QWIN 20 -#define _RT_NOMAIN 21 -#define _RT_NONCONT 22 -#define _RT_INVALDISP 23 -#define _RT_ONEXIT 24 -#define _RT_PUREVIRT 25 -#define _RT_STDIOINIT 26 -#define _RT_LOWIOINIT 27 -#define _RT_HEAPINIT 28 -#define _RT_DOMAIN 120 -#define _RT_SING 121 -#define _RT_TLOSS 122 -#define _RT_CRNL 252 -#define _RT_BANNER 255 - -#endif /* __WINE_MSVCRT_H */ diff --git a/reactos/include/tchar.h b/reactos/include/tchar.h index cf296e3b4f6..9225bf2babd 100644 --- a/reactos/include/tchar.h +++ b/reactos/include/tchar.h @@ -1,268 +1,410 @@ -/* - * tchar.h - * - * Unicode mapping layer for the standard C library. By including this - * file and using the 't' names for string functions - * (eg. _tprintf) you can make code which can be easily adapted to both - * Unicode and non-unicode environments. In a unicode enabled compile define - * _UNICODE before including tchar.h, otherwise the standard non-unicode - * library functions will be used. - * - * Note that you still need to include string.h or stdlib.h etc. to define - * the appropriate functions. Also note that there are several defines - * included for non-ANSI functions which are commonly available (but using - * the convention of prepending an underscore to non-ANSI library function - * names). - * - * This file is part of the Mingw32 package. - * - * Contributors: - * Created by Colin Peters - * - * 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. - * - * $Revision: 1.14 $ - * $Author$ - * $Date$ - * - */ -#ifndef _ROS_TCHAR_H_ -#define _ROS_TCHAR_H_ +#ifndef _TCHAR_H_ +#define _TCHAR_H_ -#include +#include -/* - * NOTE: This tests _UNICODE, which is different from the UNICODE define - * used to differentiate Win32 API calls. - */ -#ifdef _UNICODE +#ifdef _UNICODE + #define __TEXT(q) L##q + + #ifndef _TCHAR_DEFINED + #ifndef RC_INVOKED + typedef wchar_t TCHAR; + typedef wchar_t _TCHAR; + #endif /* Not RC_INVOKED */ + #define _TCHAR_DEFINED + #endif + + #define _TINT wint_t + #define _TSCHAR wchar_t + #define _TUCHAR wchar_t + #define _TXCHAR wchar_t + #define _TEOF WEOF + #define _tenviron _wenviron + #define _tfinddata_t _wfinddata_t + + /* dirent structures and functions */ + #define _tdirent _wdirent + #define _TDIR _WDIR + #define _topendir _wopendir + #define _tclosedir _wclosedir + #define _treaddir _wreaddir + #define _trewinddir _wrewinddir + #define _ttelldir _wtelldir + #define _tseekdir _wseekdir + + #define _ttoi64 _wtoi64 + #define _i64tot _i64tow + #define _ui64tot _ui64tow + #define _tcsnccoll _wstrncoll + #define _tcsncoll _wstrncoll + #define _tcsncicoll _wstrnicoll + #define _tfindfirsti64 _wfindfirsti64 + #define _tfindnexti64 _wfindnexti64 + #define _tfinddatai64_t _wfinddatai64_t + + #define _tunlink _wunlink + #define _tgetdcwd _wgetdcwd -/* - * Use TCHAR instead of char or wchar_t. It will be appropriately translated - * if _UNICODE is correctly defined (or not). - */ -#ifndef _TCHAR_DEFINED -#ifndef RC_INVOKED -typedef wchar_t _TCHAR; -typedef wchar_t _TSCHAR; -typedef wchar_t _TUCHAR; -typedef wchar_t _TXCHAR; -/* #if !__STDC__ */ -typedef wchar_t TCHAR; -/* #endif */ -#endif /* Not RC_INVOKED */ -#define _TCHAR_DEFINED + #define _fgettc fgetwc + #define _fgettchar _fgetwchar + #define _fgetts fgetws + #define _fputtc fputwc + #define _fputtchar _fputwchar + #define _fputts fputws + #define _ftprintf fwprintf + #define _ftscanf fwscanf + #define _gettc getwc + #define _gettchar getwchar + #define _getts getws + #define _istalnum iswalnum + #define _istalpha iswalpha + #define _istascii iswascii + #define _istcntrl iswcntrl + #define _istdigit iswdigit + #define _istgraph iswgraph + #define _istlead(c) 0 + #define _istleadbyte(c) 0 + #define _istlegal(c) 1 + #define _istlower iswlower + #define _istprint iswprint + #define _istpunct iswpunct + #define _istspace iswspace + #define _istupper iswupper + #define _istxdigit iswxdigit + #define _itot _itow + #define _ltot _ltow + #define _puttc putwc + #define _puttchar putwchar + #define _putts putws + #define _tmain wmain + #define _sntprintf _snwprintf + #define _stprintf swprintf + #define _stscanf swscanf + #define _taccess _waccess + #define _tasctime _wasctime + #define _tccpy(d,s) (*(d)=*(s)) + #define _tchdir _wchdir + #define _tclen(c) 2 + #define _tchmod _wchmod + #define _tcreat _wcreat + #define _tcscat wcscat + #define _tcschr wcschr + #define _tcsclen wcslen + #define _tcscmp wcscmp + #define _tcscoll wcscoll + #define _tcscpy wcscpy + #define _tcscspn wcscspn + #define _tcsdec _wcsdec + #define _tcsdup _wcsdup + #define _tcsftime wcsftime + #define _tcsicmp _wcsicmp + #define _tcsicoll _wcsicoll + #define _tcsinc _wcsinc + #define _tcslen wcslen + #define _tcslwr _wcslwr + #define _tcsnbcnt _wcnscnt + #define _tcsncat wcsncat + #define _tcsnccat wcsncat + #define _tcsncmp wcsncmp + #define _tcsnccmp wcsncmp + #define _tcsnccnt _wcsncnt + #define _tcsnccpy wcsncpy + #define _tcsncicmp _wcsnicmp + #define _tcsncpy wcsncpy + #define _tcsncset _wcsnset + #define _tcsnextc _wcsnextc + #define _tcsnicmp _wcsnicmp + #define _tcsnicoll _wcsnicoll + #define _tcsninc _wcsninc + #define _tcsnccnt _wcsncnt + #define _tcsnset _wcsnset + #define _tcspbrk wcspbrk + #define _tcsspnp _wcsspnp + #define _tcsrchr wcsrchr + #define _tcsrev _wcsrev + #define _tcsset _wcsset + #define _tcsspn wcsspn + #define _tcsstr wcsstr + #define _tcstod wcstod + #define _tcstok wcstok + #define _tcstol wcstol + #define _tcstoul wcstoul + #define _tcsupr _wcsupr + #define _tcsxfrm wcsxfrm + #define _tctime _wctime + #define _texecl _wexecl + #define _texecle _wexecle + #define _texeclp _wexeclp + #define _texeclpe _wexeclpe + #define _texecv _wexecv + #define _texecve _wexecve + #define _texecvp _wexecvp + #define _texecvpe _wexecvpe + #define _tfdopen _wfdopen + #define _tfindfirst _wfindfirst + #define _tfindnext _wfindnext + #define _tfopen _wfopen + #define _tfreopen _wfreopen + #define _tfsopen _wfsopen + #define _tfullpath _wfullpath + #define _tgetcwd _wgetcwd + #define _tgetenv _wgetenv + #define _tmain wmain + #define _tmakepath _wmakepath + #define _tmkdir _wmkdir + #define _tmktemp _wmktemp + #define _tperror _wperror + #define _topen _wopen + #define _totlower towlower + #define _totupper towupper + #define _tpopen _wpopen + #define _tprintf wprintf + #define _tremove _wremove + #define _trename _wrename + #define _trmdir _wrmdir + #define _tsearchenv _wsearchenv + #define _tscanf wscanf + #define _tsetlocale _wsetlocale + #define _tsopen _wsopen + #define _tspawnl _wspawnl + #define _tspawnle _wspawnle + #define _tspawnlp _wspawnlp + #define _tspawnlpe _wspawnlpe + #define _tspawnv _wspawnv + #define _tspawnve _wspawnve + #define _tspawnvp _wspawnvp + #define _tspawnvpe _wspawnvpe + #define _tsplitpath _wsplitpath + #define _tstat _wstat + #define _tstrdate _wstrdate + #define _tstrtime _wstrtime + #define _tsystem _wsystem + #define _ttempnam _wtempnam + #define _ttmpnam _wtmpnam + #define _ttoi _wtoi + #define _ttol _wtol + #define _tutime _wutime + #define _tWinMain wWinMain + #define _ultot _ultow + #define _ungettc ungetwc + #define _vftprintf vfwprintf + #define _vsntprintf _vsnwprintf + #define _vstprintf vswprintf + #define _vtprintf vwprintf + + #define _wcsdec(_wcs1, _wcs2) ((_wcs1)>=(_wcs2) ? NULL : (_wcs2)-1) + #define _wcsinc(_wcs) ((_wcs)+1) + #define _wcsnextc(_wcs) ((unsigned int) *(_wcs)) + #define _wcsninc(_wcs, _inc) (((_wcs)+(_inc))) + #define _wcsncnt(_wcs, _cnt) ((wcslen(_wcs)>_cnt) ? _count : wcslen(_wcs)) + #define _wcsspnp(_wcs1, _wcs2) ((*((_wcs1)+wcsspn(_wcs1,_wcs2))) ? ((_wcs1)+wcsspn(_wcs1,_wcs2)) : NULL) + +#else + + #define __TEXT(q) q + + #ifndef _TCHAR_DEFINED + #ifndef RC_INVOKED + typedef char TCHAR; + typedef char _TCHAR; + #endif + #define _TCHAR_DEFINED + #endif + + #define _TINT int + #define _TSCHAR signed char + #define _TUCHAR unsigned char + #define _TXCHAR char + #define _TEOF EOF + #define _tenviron _environ + #define _tfinddata_t _finddata_t + + /* dirent structures and functions */ + #define _tdirent dirent + #define _TDIR DIR + #define _topendir opendir + #define _tclosedir closedir + #define _treaddir readdir + #define _trewinddir rewinddir + #define _ttelldir telldir + #define _tseekdir seekdir + + #define _ttoi64 _atoi64 + #define _i64tot _i64toa + #define _ui64tot _ui64toa + #define _tcsnccoll _strncoll + #define _tcsncoll _strncoll + #define _tcsncicoll _strnicoll + #define _tfindfirsti64 _findfirsti64 + #define _tfindnexti64 _findnexti64 + #define _tfinddatai64_t _finddatai64_t + + #define _tunlink _unlink + #define _tgetdcwd _getdcwd + + #define _fgettc fgetc + #define _fgettchar fgetchar + #define _fgetts fgets + #define _fputtc fputc + #define _fputtchar fputchar + #define _fputts fputs + #define _ftprintf fprintf + #define _ftscanf fscanf + #define _gettc getc + #define _gettchar getchar + #define _getts gets + #define _istalnum isalnum + #define _istalpha isalpha + #define _istascii __isascii + #define _istcntrl iscntrl + #define _istdigit isdigit + #define _istgraph isgraph + #define _istlead(c) 0 + #define _istleadbyte(c) 0 + #define _istlegal(c) 1 + #define _istlower islower + #define _istprint isprint + #define _istpunct ispunct + #define _istspace isspace + #define _istupper isupper + #define _istxdigit isxdigit + #define _itot _itoa + #define _ltot _ltoa + #define _puttc putc + #define _puttchar putchar + #define _putts puts + #define _tmain main + #define _sntprintf _snprintf + #define _stprintf sprintf + #define _stscanf sscanf + #define _taccess _access + #define _tasctime asctime + #define _tccpy(d,s) (*(d)=*(s)) + #define _tchdir _chdir + #define _tclen(c) 1 + #define _tchmod _chmod + #define _tcreat _creat + #define _tcscat strcat + #define _tcschr strchr + #define _tcsclen strlen + #define _tcscmp strcmp + #define _tcscoll strcoll + #define _tcscpy strcpy + #define _tcscspn strcspn + #define _tcsdec _strdec + #define _tcsdup _strdup + #define _tcsftime strftime + #define _tcsicmp _stricmp + #define _tcsicoll _stricoll + #define _tcsinc _strinc + #define _tcslen strlen + #define _tcslwr _strlwr + #define _tcsnbcnt _strncnt + #define _tcsncat strncat + #define _tcsnccat strncat + #define _tcsncmp strncmp + #define _tcsnccmp strncmp + #define _tcsnccnt _strncnt + #define _tcsnccpy strncpy + #define _tcsncicmp _strnicmp + #define _tcsncpy strncpy + #define _tcsncset _strnset + #define _tcsnextc _strnextc + #define _tcsnicmp _strnicmp + #define _tcsnicoll _strnicoll + #define _tcsninc _strninc + #define _tcsnccnt _strncnt + #define _tcsnset _strnset + #define _tcspbrk strpbrk + #define _tcsspnp _strspnp + #define _tcsrchr strrchr + #define _tcsrev _strrev + #define _tcsset _strset + #define _tcsspn strspn + #define _tcsstr strstr + #define _tcstod strtod + #define _tcstok strtok + #define _tcstol strtol + #define _tcstoul strtoul + #define _tcsupr _strupr + #define _tcsxfrm strxfrm + #define _tctime ctime + #define _texecl _execl + #define _texecle _execle + #define _texeclp _execlp + #define _texeclpe _execlpe + #define _texecv _execv + #define _texecve _execve + #define _texecvp _execvp + #define _texecvpe _execvpe + #define _tfdopen _fdopen + #define _tfindfirst _findfirst + #define _tfindnext _findnext + #define _tfopen fopen + #define _tfreopen freopen + #define _tfsopen _fsopen + #define _tfullpath _fullpath + #define _tgetcwd _getcwd + #define _tgetenv getenv + #define _tmain main + #define _tmakepath _makepath + #define _tmkdir _mkdir + #define _tmktemp _mktemp + #define _tperror perror + #define _topen _open + #define _totlower tolower + #define _totupper toupper + #define _tpopen _popen + #define _tprintf printf + #define _tremove remove + #define _trename rename + #define _trmdir _rmdir + #define _tsearchenv _searchenv + #define _tscanf scanf + #define _tsetlocale setlocale + #define _tsopen _sopen + #define _tspawnl _spawnl + #define _tspawnle _spawnle + #define _tspawnlp _spawnlp + #define _tspawnlpe _spawnlpe + #define _tspawnv _spawnv + #define _tspawnve _spawnve + #define _tspawnvp _spawnvp + #define _tspawnvpe _spawnvpe + #define _tsplitpath _splitpath + #define _tstat _stat + #define _tstrdate _strdate + #define _tstrtime _strtime + #define _tsystem system + #define _ttempnam _tempnam + #define _ttmpnam tmpnam + #define _ttoi atoi + #define _ttol atol + #define _tutime _utime + #define _tWinMain WinMain + #define _ultot _ultoa + #define _ungettc ungetc + #define _vftprintf vfprintf + #define _vsntprintf _vsnprintf + #define _vstprintf vsprintf + #define _vtprintf vprintf + + #define _strdec(_str1, _str2) ((_str1)>=(_str2) ? NULL : (_str2)-1) + #define _strinc(_str) ((_str)+1) + #define _strnextc(_str) ((unsigned int) *(_str)) + #define _strninc(_str, _inc) (((_str)+(_inc))) + #define _strncnt(_str, _cnt) ((strlen(_str)>_cnt) ? _count : strlen(_str)) + #define _strspnp(_str1, _str2) ((*((_str1)+strspn(_str1,_str2))) ? ((_str1)+strspn(_str1,_str2)) : NULL) + #endif + + -/* - * Enclose constant strings and literal characters in the _TEXT and _T macro to make - * them unicode constant strings when _UNICODE is defined. - */ -#ifndef _TEXT -#define _TEXT(x) L ## x -#endif -#ifndef _T -#define _T(x) L ## x -#endif +#define _TEXT(x) __TEXT(x) +#define _T(x) __TEXT(x) -/* - * Unicode functions - */ +#endif /* _TCHAR_H_ */ -#define _tmain _wmain - -#define _tprintf wprintf -#define _ftprintf fwprintf -#define _stprintf swprintf -#define _sntprintf _snwprintf -#define _vtprintf vwprintf -#define _vftprintf vfwprintf -#define _vstprintf vswprintf -#define _vsntprintf _vsnwprintf -#define _tscanf wscanf -#define _ftscanf fwscanf -#define _stscanf swscanf -#define _fgettc fgetwc -#define _fgettchar _fgetwchar -#define _fgetts fgetws -#define _fputtc fputwc -#define _fputtchar _fputwchar -#define _fputts fputws -#define _gettc getwc -#define _getts getws -#define _puttc putwc -#define _putts putws -#define _ungettc ungetwc -#define _tcstod wcstod -#define _tcstol wcstol -#define _tcstoul wcstoul -#define _tcscat wcscat -#define _tcschr wcschr -#define _tcscmp wcscmp -#define _tcscpy wcscpy -#define _tcscspn wcscspn -#define _tcslen wcslen -#define _tcsncat wcsncat -#define _tcsncmp wcsncmp -#define _tcsncpy wcsncpy -#define _tcsnlen wcsnlen -#define _tcspbrk wcspbrk -#define _tcsrchr wcsrchr -#define _tcsspn wcsspn -#define _tcsstr wcsstr -#define _tcstok wcstok -#define _tcsdup _wcsdup -#define _tcsicmp _wcsicmp -#define _tcsnicmp _wcsnicmp -#define _tcsnset _wcsnset -#define _tcsrev _wcsrev -#define _tcsset _wcsset -#define _tcslwr _wcslwr -#define _tcsupr _wcsupr -#define _tcsxfrm wcsxfrm -#define _tcscoll wcscoll -#define _tcsicoll _wcsicoll -#define _istalpha iswalpha -#define _istupper iswupper -#define _istlower iswlower -#define _istdigit iswdigit -#define _istxdigit iswxdigit -#define _istspace iswspace -#define _istpunct iswpunct -#define _istalnum iswalnum -#define _istprint iswprint -#define _istgraph iswgraph -#define _istcntrl iswcntrl -#define _istascii iswascii -#define _totupper towupper -#define _totlower towlower -#define _ttoi _wtoi -#define _ttoi64 _wtoi64 -#define _tcsftime wcsftime -#define _tsplitpath _wsplitpath -#define _tmakepath _wmakepath -#define _tfopen _wfopen - -#else /* Not _UNICODE */ - -/* - * TCHAR, the type you should use instead of char. - */ -#ifndef _TCHAR_DEFINED -#ifndef RC_INVOKED -typedef char _TCHAR; -typedef signed char _TSCHAR; -typedef unsigned char _TUCHAR; -typedef char _TXCHAR; - -/*#if !__STDC__*/ -typedef char TCHAR; -/*#endif*/ - -#endif -#define _TCHAR_DEFINED -#endif - -/* - * Enclose constant strings and characters in the _TEXT and _T macro. - */ -#ifndef _TEXT -#define _TEXT(x) x -#endif -#ifndef _T -#define _T(x) x -#endif - - -/* - * Non-unicode (standard) functions - */ - -#define _tmain main - -#define _tprintf printf -#define _ftprintf fprintf -#define _stprintf sprintf -#define _sntprintf _snprintf -#define _vtprintf vprintf -#define _vftprintf vfprintf -#define _vstprintf vsprintf -#define _vsntprintf _vsnprintf -#define _tscanf scanf -#define _ftscanf fscanf -#define _stscanf sscanf -#define _fgettc fgetc -#define _fgettchar _fgetchar -#define _fgetts fgets -#define _fputtc fputc -#define _fputtchar _fputchar -#define _fputts fputs -#define _gettc getc -#define _getts gets -#define _puttc putc -#define _putts puts -#define _ungettc ungetc -#define _tcstod strtod -#define _tcstol strtol -#define _tcstoul strtoul -#define _tcscat strcat -#define _tcschr strchr -#define _tcscmp strcmp -#define _tcscpy strcpy -#define _tcscspn strcspn -#define _tcslen strlen -#define _tcsncat strncat -#define _tcsncmp strncmp -#define _tcsncpy strncpy -#define _tcsnlen strnlen -#define _tcspbrk strpbrk -#define _tcsrchr strrchr -#define _tcsspn strspn -#define _tcsstr strstr -#define _tcstok strtok -#define _tcsdup _strdup -#define _tcsicmp _stricmp -#define _tcsnicmp _strnicmp -#define _tcsnset _strnset -#define _tcsrev _strrev -#define _tcsset _strset -#define _tcslwr _strlwr -#define _tcsupr _strupr -#define _tcsxfrm strxfrm -#define _tcscoll strcoll -#define _tcsicoll _stricoll -#define _istalpha isalpha -#define _istupper isupper -#define _istlower islower -#define _istdigit isdigit -#define _istxdigit isxdigit -#define _istspace isspace -#define _istpunct ispunct -#define _istalnum isalnum -#define _istprint isprint -#define _istgraph isgraph -#define _istcntrl iscntrl -#define _istascii isascii -#define _totupper toupper -#define _totlower tolower -#define _ttoi atoi -#define _ttoi64 _atoi64 -#define _tcsftime strftime -#define _tsplitpath _splitpath -#define _tmakepath _makepath -#define _tfopen fopen - -#endif /* Not _UNICODE */ - -#endif /* Not _TCHAR_H_ */ From 0645d3e0558c4af157a1e385c3c9390ca9d56cae Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Wed, 16 Feb 2005 22:29:16 +0000 Subject: [PATCH 081/248] ntdll: -critical.c: catch (more) invalid use -impl. sscanf (stolen from wine) crt: -use native mingw headers and not private copies of them -converted some routines to using tchar == impl. many missing unicode routines -impl. sscanf and friends correctly (stolen from wine) tchar.h: -added lotsa missin stuff svn path=/trunk/; revision=13607 --- reactos/lib/crt/include/internal/atexit.h | 14 ++ reactos/lib/crt/include/internal/console.h | 12 ++ reactos/lib/crt/include/internal/file.h | 190 ++++++++++++++++++ reactos/lib/crt/include/internal/ieee.h | 25 +++ reactos/lib/crt/include/internal/math.h | 10 + reactos/lib/crt/include/internal/mbstring.h | 20 ++ reactos/lib/crt/include/internal/msvcrtdbg.h | 90 +++++++++ reactos/lib/crt/include/internal/mtdll.h | 72 +++++++ reactos/lib/crt/include/internal/rterror.h | 31 +++ reactos/lib/crt/include/internal/tls.h | 42 ++++ .../lib/crt/include/internal/wine/cppexcept.h | 124 ++++++++++++ reactos/lib/crt/include/internal/wine/eh.h | 53 +++++ .../lib/crt/include/internal/wine/msvcrt.h | 128 ++++++++++++ 13 files changed, 811 insertions(+) create mode 100644 reactos/lib/crt/include/internal/atexit.h create mode 100644 reactos/lib/crt/include/internal/console.h create mode 100644 reactos/lib/crt/include/internal/file.h create mode 100644 reactos/lib/crt/include/internal/ieee.h create mode 100644 reactos/lib/crt/include/internal/math.h create mode 100644 reactos/lib/crt/include/internal/mbstring.h create mode 100644 reactos/lib/crt/include/internal/msvcrtdbg.h create mode 100644 reactos/lib/crt/include/internal/mtdll.h create mode 100644 reactos/lib/crt/include/internal/rterror.h create mode 100644 reactos/lib/crt/include/internal/tls.h create mode 100644 reactos/lib/crt/include/internal/wine/cppexcept.h create mode 100644 reactos/lib/crt/include/internal/wine/eh.h create mode 100644 reactos/lib/crt/include/internal/wine/msvcrt.h diff --git a/reactos/lib/crt/include/internal/atexit.h b/reactos/lib/crt/include/internal/atexit.h new file mode 100644 index 00000000000..ab036e60710 --- /dev/null +++ b/reactos/lib/crt/include/internal/atexit.h @@ -0,0 +1,14 @@ +/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ +#ifndef __CRT_INTERNAL_ATEXIT_H +#define __CRT_INTERNAL_ATEXIT_H + + +struct __atexit { + struct __atexit* __next; + void (*__function)(void); +}; + +extern struct __atexit* __atexit_ptr; + + +#endif diff --git a/reactos/lib/crt/include/internal/console.h b/reactos/lib/crt/include/internal/console.h new file mode 100644 index 00000000000..c478c21aa68 --- /dev/null +++ b/reactos/lib/crt/include/internal/console.h @@ -0,0 +1,12 @@ +/* console.h */ + +#ifndef __CRT_INTERNAL_CONSOLE_H +#define __CRT_INTERNAL_CONSOLE_H + +extern int char_avail; +extern int ungot_char; + +#endif + +/* EOF */ + diff --git a/reactos/lib/crt/include/internal/file.h b/reactos/lib/crt/include/internal/file.h new file mode 100644 index 00000000000..4c781aa491a --- /dev/null +++ b/reactos/lib/crt/include/internal/file.h @@ -0,0 +1,190 @@ +/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ +/* + * Some stuff taken from active perl: perl\win32.c (ioinfo stuff) + * + * (c) 1995 Microsoft Corporation. All rights reserved. + * Developed by hip communications inc., http://info.hip.com/info/ + * Portions (c) 1993 Intergraph Corporation. All rights reserved. + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + */ + +#ifndef __CRT_INTERNAL_FILE_H +#define __CRT_INTERNAL_FILE_H + +#include +#include +#include + + +#ifndef _IORMONCL +#define _IORMONCL 004000 /* remove on close, for temp files */ +#endif +/* if _flag & _IORMONCL, ._name_to_remove needs freeing */ + +#ifndef _IOUNGETC +#define _IOUNGETC 010000 /* there is an ungetc'ed character in the buffer */ +#endif + +/* might need check for IO_APPEND aswell */ +#define OPEN4WRITING(f) ((((f)->_flag & _IOWRT) == _IOWRT)) +#define OPEN4READING(f) ((((f)->_flag & _IOREAD) == _IOREAD)) + +/* might need check for IO_APPEND aswell */ +#define WRITE_STREAM(f) ((((f)->_flag & _IOWRT) == _IOWRT)) +#define READ_STREAM(f) ((((f)->_flag & _IOREAD) == _IOREAD)) + +char __validfp(FILE*); +int __set_errno(int err); +int __set_doserrno(int error); +void* filehnd(int fn); +char __is_text_file(FILE*); +int alloc_fd(void* hFile, char mode); +int _doprnt(const char* fmt, va_list args, FILE *); +int _doscan(FILE* iop, const char* fmt, va_list argp); +int __fileno_dup2(int handle1, int handle2); +char __fileno_getmode(int _fd); +int __fileno_setmode(int _fd, int _newmode); +void free_fd(int _fd); +void sigabort_handler(int sig); +char split_oflags(int oflags); + + +#include + +unsigned create_io_inherit_block(STARTUPINFOA* si); +void UnixTimeToFileTime(time_t unix_time, FILETIME* filetime, DWORD remainder); +time_t FileTimeToUnixTime(const FILETIME* filetime, DWORD *remainder); + + +#define __FILE_REC_MAX 20 +typedef struct __file_rec +{ + struct __file_rec* next; + int count; + FILE* files[__FILE_REC_MAX]; +} __file_rec; + +extern __file_rec* __file_rec_list; + + +typedef struct _FDINFO +{ + HANDLE hFile; + char fdflags; + char pipechar; /* one char buffer for handles opened on pipes */ + int lockinitflag; + CRITICAL_SECTION lock; +} FDINFO; + +#define FDINFO_ENTRIES_PER_BUCKET_SHIFT 5 /* log2(32) = 5 */ +#define FDINFO_BUCKETS 64 +#define FDINFO_ENTRIES_PER_BUCKET 32 +#define FDINFO_ENTRIES (FDINFO_BUCKETS * FDINFO_ENTRIES_PER_BUCKET) + +/* pipech */ +#define LF 10 /* line feed */ +#define CR 13 /* carriage return */ +#define CTRLZ 26 /* ctrl-z means eof for text */ + +/* mode */ +#define FOPEN 0x01 /* file handle open */ +#define FEOFLAG 0x02 /* end of file has been encountered */ +#define FCRLF 0x04 /* CR-LF across read buffer (in text mode) */ +#define FPIPE 0x08 /* file refers to a pipe */ +#define FNOINHERIT 0x10 /* file handle opened _O_NOINHERIT */ +#define FAPPEND 0x20 /* file opened O_APPEND */ +#define FDEV 0x40 /* file refers to device */ +#define FTEXT 0x80 /* file is in text mode (absence = binary) */ + +/* get bucket index (0-63) from an fd */ +#define fdinfo_bucket_idx(i) ((i) >> FDINFO_ENTRIES_PER_BUCKET_SHIFT) +/* get position inside a bucket (0-31) from an fd */ +#define fdinfo_bucket_entry_idx(i) ((i) & (FDINFO_ENTRIES_PER_BUCKET - 1)) +/* get bucket ptr. (ptr. to fist fdinfo inside a bucket) from an fd */ +#define fdinfo_bucket(i) ( __pioinfo[fdinfo_bucket_idx(i)]) +/* get fdinfo ptr. from an fd */ +#define fdinfo(i) (fdinfo_bucket(i) + fdinfo_bucket_entry_idx(i)) + +extern FDINFO* __pioinfo[]; + + +void _dosmaperr(unsigned long oserrcode); + + + +FILE* __alloc_file(void); + + + +int access_dirA(const char *_path); +int access_dirW(const wchar_t *_path); + +#ifdef _UNICODE + #define access_dirT access_dirW +#else + #define access_dirT access_dirA +#endif + + + +void _fwalk(void (*func)(FILE*)); // not exported + + + +#undef MB_CUR_MAX +#define MB_CUR_MAX __mb_cur_max + + +int _isnanl(double x); +int _isinfl(double x); +int _isnan(double x); +int _isinf(double x); + + + +/* Flags for the iobuf structure (for reference) */ +#if 0 +#define _IOREAD 1 /* currently reading */ +#define _IOWRT 2 /* currently writing */ +#define _IORW 0x0080 /* opened as "r+w" */ +#endif + +/* internal FILE->_flag flags */ + +#define _IOMYBUF 0x0008 /* stdio malloc()'d buffer */ +#define _IOEOF 0x0010 /* EOF reached on read */ +#define _IOERR 0x0020 /* I/O error from system */ +#define _IOSTRG 0x0040 /* Strange or no file descriptor */ + +#define _IOBINARY 0x040000 +#define _IOTEXT 0x000000 + +#define _IOCOMMIT 0x100000 + +#define _IODIRTY 0x010000 +#define _IOAHEAD 0x020000 + + + + +/* + * The three possible buffering mode (nMode) values for setvbuf. + * NOTE: _IOFBF works, but _IOLBF seems to work like unbuffered... + * maybe I'm testing it wrong? + */ +#define _IOFBF 0x0000 /* full buffered */ +#define _IOLBF 0x0040 /* line buffered */ +#define _IONBF 0x0004 /* not buffered */ + +#define _IO_LBF 0x80000 /* this value is used insteat of _IOLBF within the + structure FILE as value for _flags, + because _IOLBF has the same value as _IOSTRG */ + + +wint_t _filwbuf(FILE *f); + + + +#endif /* __dj_include_libc_file_h__ */ diff --git a/reactos/lib/crt/include/internal/ieee.h b/reactos/lib/crt/include/internal/ieee.h new file mode 100644 index 00000000000..f397723feae --- /dev/null +++ b/reactos/lib/crt/include/internal/ieee.h @@ -0,0 +1,25 @@ +#ifndef __CRT_INTERNAL_IEEE_H +#define __CRT_INTERNAL_IEEE_H + +typedef struct { + unsigned int mantissa:23; + unsigned int exponent:8; + unsigned int sign:1; +} float_t; + +typedef struct { + unsigned int mantissal:32; + unsigned int mantissah:20; + unsigned int exponent:11; + unsigned int sign:1; +} double_t; + +typedef struct { + unsigned int mantissal:32; + unsigned int mantissah:32; + unsigned int exponent:15; + unsigned int sign:1; + unsigned int empty:16; +} long_double_t; + +#endif diff --git a/reactos/lib/crt/include/internal/math.h b/reactos/lib/crt/include/internal/math.h new file mode 100644 index 00000000000..1102524059a --- /dev/null +++ b/reactos/lib/crt/include/internal/math.h @@ -0,0 +1,10 @@ + +#ifndef __CRT_INTERNAL_MATH_H +#define __CRT_INTERNAL_MATH_H + + +int _isinf (double); /* not exported */ +int _isnanl (long double); /* not exported */ +int _isinfl (long double); /* not exported */ + +#endif diff --git a/reactos/lib/crt/include/internal/mbstring.h b/reactos/lib/crt/include/internal/mbstring.h new file mode 100644 index 00000000000..f5f167d639e --- /dev/null +++ b/reactos/lib/crt/include/internal/mbstring.h @@ -0,0 +1,20 @@ +#ifndef __CRT_INTERNAL_MBSTRING_H +#define __CRT_INTERNAL_MBSTRING_H + +#define _KNJ_M ((char)0x01) /* Non-punctuation of Kana-set */ +#define _KNJ_P ((char)0x02) /* Punctuation of Kana-set */ +#define _KNJ_1 ((char)0x04) /* Legal 1st byte of double byte stream */ +#define _KNJ_2 ((char)0x08) /* Legal 2nd btye of double byte stream */ + + +#define ___ 0 +#define _1_ _KNJ_1 /* Legal 1st byte of double byte code */ +#define __2 _KNJ_2 /* Legal 2nd byte of double byte code */ +#define _M_ _KNJ_M /* Non-puntuation in Kana-set */ +#define _P_ _KNJ_P /* Punctuation of Kana-set */ +#define _12 (_1_|__2) +#define _M2 (_M_|__2) +#define _P2 (_P_|__2) + + +#endif diff --git a/reactos/lib/crt/include/internal/msvcrtdbg.h b/reactos/lib/crt/include/internal/msvcrtdbg.h new file mode 100644 index 00000000000..a2b730f02c7 --- /dev/null +++ b/reactos/lib/crt/include/internal/msvcrtdbg.h @@ -0,0 +1,90 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: include/msvcrt/msvcrtdbg.h + * PURPOSE: Useful debugging macros + * PROGRAMMER: + * UPDATE HISTORY: + * + */ + +/* + * NOTE: Define NDEBUG before including this header to disable debugging + * macros + */ + +#ifndef __MSVCRT_DEBUG +#define __MSVCRT_DEBUG + +#include +#include + + +#define MK_STR(s) #s + +#ifdef _UNICODE + #define sT "S" +#else + #define sT "s" +#endif + + + +#define TRACE(...) + + +#ifdef DBG + #define DPRINT1(args...) do { DbgPrint("(MSVCRT:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0); + #define CHECKPOINT1 do { DbgPrint("MSVCRT:%s:%d\n",__FILE__,__LINE__); } while(0); +#else + #ifdef __GNUC__ + #define DPRINT1(args...) + #else + #define DPRINT DbgPrint + #endif + #define CHECKPOINT1 +#endif + +#if !defined(NDEBUG) && defined(DBG) + #define DPRINT(args...) do { DbgPrint("(MSVCRT:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } while(0); + #define CHECKPOINT do { DbgPrint("MSVCRT:%s:%d\n",__FILE__,__LINE__); } while(0); +#else + #ifdef __GNUC__ + #define DPRINT(args...) + #else + #define DPRINT DbgPrint + #endif + #define CHECKPOINT +#endif /* NDEBUG */ + + +#if 0 + + #define TRACE_RETURN(format_str, ret_type) \ + ret_type __return_value__; \ + static char* __return_format_str__ = "%s ret: "format_str"\n" + + #define FUNCTION(func) \ + static char* __func_name__ = #func + + #define TRACE(a,b...) DPRINT1(a"\n", b) + + #define RETURN(a) \ + do{ __return_value__ = (a); DPRINT1(__return_format_str__ ,__func_name__,__return_value__); return __return_value__ ; }while(0) + +#endif + + +/* ULONG CDECL DbgPrint(PCH Format, ...); */ +ULONG DbgPrint(PCH Format,...); +/* unsigned long DbgPrint(const char* Format, ...); */ + + + +/* #define TRACE 0 ? (void)0 : Trace */ + +/* void Trace(TCHAR* lpszFormat, ...); */ + + + +#endif /* __MSVCRT_DEBUG */ diff --git a/reactos/lib/crt/include/internal/mtdll.h b/reactos/lib/crt/include/internal/mtdll.h new file mode 100644 index 00000000000..40dbdae96b3 --- /dev/null +++ b/reactos/lib/crt/include/internal/mtdll.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2002, TransGaming Technologies Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __CRT_INTERNAL_WINE_MTDLL_H +#define __CRT_INTERNAL_WINE_MTDLL_H + +#if defined(_MT) + +#define _mlock(locknum) _lock(locknum) +#define _munlock(locknum) _unlock(locknum) + +void _unlock( int locknum ); +void _lock( int locknum ); + +#else + +#define _mlock(locknum) do {} while(0) +#define _munlock(locknum) do {} while(0) + +#endif + + +#define _SIGNAL_LOCK 1 +#define _IOB_SCAN_LOCK 2 +#define _TMPNAM_LOCK 3 +#define _INPUT_LOCK 4 +#define _OUTPUT_LOCK 5 +#define _CSCANF_LOCK 6 +#define _CPRINTF_LOCK 7 +#define _CONIO_LOCK 8 +#define _HEAP_LOCK 9 +#define _BHEAP_LOCK 10 /* No longer used? */ +#define _TIME_LOCK 11 +#define _ENV_LOCK 12 +#define _EXIT_LOCK1 13 +#define _EXIT_LOCK2 14 +#define _THREADDATA_LOCK 15 /* No longer used? */ +#define _POPEN_LOCK 16 +#define _LOCKTAB_LOCK 17 +#define _OSFHND_LOCK 18 +#define _SETLOCALE_LOCK 19 +#define _LC_COLLATE_LOCK 20 /* No longer used? */ +#define _LC_CTYPE_LOCK 21 /* No longer used? */ +#define _LC_MONETARY_LOCK 22 /* No longer used? */ +#define _LC_NUMERIC_LOCK 23 /* No longer used? */ +#define _LC_TIME_LOCK 24 /* No longer used? */ +#define _MB_CP_LOCK 25 +#define _NLG_LOCK 26 +#define _TYPEINFO_LOCK 27 +#define _STREAM_LOCKS 28 + +/* Must match definition in msvcrt/stdio.h */ +#define _IOB_ENTRIES 20 +#define _LAST_STREAM_LOCK (_STREAM_LOCKS+_IOB_ENTRIES-1) +#define _TOTAL_LOCKS (_LAST_STREAM_LOCK+1) + +#endif /* WINE_MTDLL_H */ diff --git a/reactos/lib/crt/include/internal/rterror.h b/reactos/lib/crt/include/internal/rterror.h new file mode 100644 index 00000000000..b76698b78c5 --- /dev/null +++ b/reactos/lib/crt/include/internal/rterror.h @@ -0,0 +1,31 @@ +/* rterror.h */ + +#ifndef __CRT_INTERNAL_RTERROR_H +#define __CRT_INTERNAL_RTERROR_H + + +#define _RT_STACK 0 /* stack overflow */ +#define _RT_NULLPTR 1 /* null pointer assignment */ +#define _RT_FLOAT 2 /* floating point not loaded */ +#define _RT_INTDIV 3 /* integer divide by 0 */ +#define _RT_SPACEARG 4 /* not enough space for arguments */ +#define _RT_SPACEENV 5 /* not enough space for environment */ +#define _RT_ABORT 6 /* abnormal program termination */ +#define _RT_THREAD 7 /* not enough space for thread data */ +#define _RT_LOCK 8 /* unexpected multi-thread lock error */ +#define _RT_HEAP 9 /* unexpected heap error */ +#define _RT_OPENCON 10 /* unable to open console device */ +#define _RT_NONCONT 11 /* non-continuable exception */ +#define _RT_INVALDISP 12 /* invalid disposition of exception */ +#define _RT_ONEXIT 13 /* insufficient heap to allocate + * initial table of function pointers + * used by _onexit()/atexit(). */ +#define _RT_PUREVIRT 14 /* pure virtual function call attempted + * (C++ error) */ +#define _RT_STDIOINIT 15 /* not enough space for stdio initialization */ +#define _RT_LOWIOINIT 16 /* not enough space for lowio initialization */ + +void _amsg_exit (int errnum); + + +#endif /* __MSVCRT_INTERNAL_RTERROR_H */ diff --git a/reactos/lib/crt/include/internal/tls.h b/reactos/lib/crt/include/internal/tls.h new file mode 100644 index 00000000000..1bb029c72ed --- /dev/null +++ b/reactos/lib/crt/include/internal/tls.h @@ -0,0 +1,42 @@ +/* tls.h */ + +#ifndef __CRT_INTERNAL_TLS_H +#define __CRT_INTERNAL_TLS_H + +#include +#include +#include + +typedef struct _ThreadData +{ + int terrno; /* *nix error code */ + unsigned long tdoserrno; /* Win32 error code (for I/O only) */ + unsigned LONGLONG tnext; /* used by rand/srand */ + + char *lasttoken; /* used by strtok */ + wchar_t *wlasttoken; /* used by wcstok */ + + + int fpecode; /* fp exception code */ + + /* qsort variables */ + int (*qcmp)(const void *, const void *); /* the comparison routine */ + int qsz; /* size of each record */ + int thresh; /* THRESHold in chars */ + int mthresh; /* MTHRESHold in chars */ + + EXCEPTION_RECORD *exc_record; /* Head of exception record list */ + +} THREADDATA, *PTHREADDATA; + + +int CreateThreadData(void); +void DestroyThreadData(void); + +void FreeThreadData(PTHREADDATA ptd); +PTHREADDATA GetThreadData(void); + +#endif /* __MSVCRT_INTERNAL_TLS_H */ + +/* EOF */ + diff --git a/reactos/lib/crt/include/internal/wine/cppexcept.h b/reactos/lib/crt/include/internal/wine/cppexcept.h new file mode 100644 index 00000000000..3a822ed9ec0 --- /dev/null +++ b/reactos/lib/crt/include/internal/wine/cppexcept.h @@ -0,0 +1,124 @@ +/* + * msvcrt C++ exception handling + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __MSVCRT_CPPEXCEPT_H +#define __MSVCRT_CPPEXCEPT_H + +#define CXX_FRAME_MAGIC 0x19930520 +#define CXX_EXCEPTION 0xe06d7363 + +typedef void (*vtable_ptr)(); + +/* type_info object, see cpp.c for inplementation */ +typedef struct __type_info +{ + vtable_ptr *vtable; + char *name; /* Unmangled name, allocated lazily */ + char mangled[32]; /* Variable length, but we declare it large enough for static RTTI */ +} type_info; + +/* the exception frame used by CxxFrameHandler */ +typedef struct __cxx_exception_frame +{ + EXCEPTION_REGISTRATION_RECORD frame; /* the standard exception frame */ + int trylevel; + DWORD ebp; +} cxx_exception_frame; + +/* info about a single catch {} block */ +typedef struct __catchblock_info +{ + UINT flags; /* flags (see below) */ + type_info *type_info; /* C++ type caught by this block */ + int offset; /* stack offset to copy exception object to */ + void (*handler)(); /* catch block handler code */ +} catchblock_info; +#define TYPE_FLAG_CONST 1 +#define TYPE_FLAG_VOLATILE 2 +#define TYPE_FLAG_REFERENCE 8 + +/* info about a single try {} block */ +typedef struct __tryblock_info +{ + int start_level; /* start trylevel of that block */ + int end_level; /* end trylevel of that block */ + int catch_level; /* initial trylevel of the catch block */ + int catchblock_count; /* count of catch blocks in array */ + catchblock_info *catchblock; /* array of catch blocks */ +} tryblock_info; + +/* info about the unwind handler for a given trylevel */ +typedef struct __unwind_info +{ + int prev; /* prev trylevel unwind handler, to run after this one */ + void (*handler)(); /* unwind handler */ +} unwind_info; + +/* descriptor of all try blocks of a given function */ +typedef struct __cxx_function_descr +{ + UINT magic; /* must be CXX_FRAME_MAGIC */ + UINT unwind_count; /* number of unwind handlers */ + unwind_info *unwind_table; /* array of unwind handlers */ + UINT tryblock_count; /* number of try blocks */ + tryblock_info *tryblock; /* array of try blocks */ + UINT unknown[3]; +} cxx_function_descr; + +typedef void (*cxx_copy_ctor)(void); + +/* complete information about a C++ type */ +typedef struct __cxx_type_info +{ + UINT flags; /* flags (see CLASS_* flags below) */ + type_info *type_info; /* C++ type info */ + int this_offset; /* offset of base class this pointer from start of object */ + int vbase_descr; /* offset of virtual base class descriptor */ + int vbase_offset; /* offset of this pointer offset in virtual base class descriptor */ + size_t size; /* object size */ + cxx_copy_ctor copy_ctor; /* copy constructor */ +} cxx_type_info; +#define CLASS_IS_SIMPLE_TYPE 1 +#define CLASS_HAS_VIRTUAL_BASE_CLASS 4 + +/* table of C++ types that apply for a given object */ +typedef struct __cxx_type_info_table +{ + UINT count; /* number of types */ + const cxx_type_info *info[3]; /* variable length, we declare it large enough for static RTTI */ +} cxx_type_info_table; + +typedef DWORD (*cxx_exc_custom_handler)( PEXCEPTION_RECORD, cxx_exception_frame*, + PCONTEXT, EXCEPTION_REGISTRATION_RECORD**, + cxx_function_descr*, int nested_trylevel, + EXCEPTION_REGISTRATION_RECORD *nested_frame, DWORD unknown3 ); + +/* type information for an exception object */ +typedef struct __cxx_exception_type +{ + UINT flags; /* TYPE_FLAG flags */ + void (*destructor)(); /* exception object destructor */ + cxx_exc_custom_handler custom_handler; /* custom handler for this exception */ + const cxx_type_info_table *type_info_table; /* list of types for this exception object */ +} cxx_exception_type; + +void _CxxThrowException(void*,const cxx_exception_type*); + +#endif /* __MSVCRT_CPPEXCEPT_H */ diff --git a/reactos/lib/crt/include/internal/wine/eh.h b/reactos/lib/crt/include/internal/wine/eh.h new file mode 100644 index 00000000000..14201fb0676 --- /dev/null +++ b/reactos/lib/crt/include/internal/wine/eh.h @@ -0,0 +1,53 @@ +/* + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __WINE_EH_H +#define __WINE_EH_H +#ifndef __WINE_USE_MSVCRT +#define __WINE_USE_MSVCRT +#endif + +#if !defined(__cplusplus) && !defined(USE_MSVCRT_PREFIX) +#error "eh.h is meant only for C++ applications" +#endif + +#ifndef MSVCRT +# ifdef USE_MSVCRT_PREFIX +# define MSVCRT(x) MSVCRT_##x +# else +# define MSVCRT(x) x +# endif +#endif + +struct _EXCEPTION_POINTERS; + +typedef void (*terminate_handler)(); +typedef void (*terminate_function)(); +typedef void (*unexpected_handler)(); +typedef void (*unexpected_function)(); +typedef void (*_se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info); + +terminate_function MSVCRT(set_terminate)(terminate_function func); +unexpected_function MSVCRT(set_unexpected)(unexpected_function func); +_se_translator_function MSVCRT(_set_se_translator)(_se_translator_function func); + +void MSVCRT(terminate)(); +void MSVCRT(unexpected)(); + +#endif /* __WINE_EH_H */ diff --git a/reactos/lib/crt/include/internal/wine/msvcrt.h b/reactos/lib/crt/include/internal/wine/msvcrt.h new file mode 100644 index 00000000000..915dccbfabd --- /dev/null +++ b/reactos/lib/crt/include/internal/wine/msvcrt.h @@ -0,0 +1,128 @@ +/* + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WINE_MSVCRT_H +#define __WINE_MSVCRT_H + +#include +#include +#include + +#include "windef.h" +#include "winbase.h" +#include "winerror.h" +#include "winnls.h" + +//#include "msvcrt/string.h" +#include "eh.h" + +/* TLS data */ +extern DWORD MSVCRT_tls_index; + +typedef struct __MSVCRT_thread_data +{ + int _errno; // ros + unsigned long doserrno; + char *mbstok_next; /* next ptr for mbstok() */ + char *efcvt_buffer; /* buffer for ecvt/fcvt */ + terminate_function terminate_handler; + unexpected_function unexpected_handler; + _se_translator_function se_translator; + EXCEPTION_RECORD *exc_record; +} MSVCRT_thread_data; + +extern MSVCRT_thread_data *msvcrt_get_thread_data(void); + +extern int MSVCRT_current_lc_all_cp; + +void _purecall(void); +void MSVCRT__set_errno(int); +char* msvcrt_strndup(const char*,unsigned int); +#ifndef __REACTOS__ +MSVCRT_wchar_t *msvcrt_wstrndup(const MSVCRT_wchar_t*, unsigned int); +#endif +void MSVCRT__amsg_exit(int errnum); + +extern char **MSVCRT__environ; +#ifndef __REACTOS__ +extern MSVCRT_wchar_t **MSVCRT__wenviron; +extern char ** msvcrt_SnapshotOfEnvironmentA(char **); +extern MSVCRT_wchar_t ** msvcrt_SnapshotOfEnvironmentW(MSVCRT_wchar_t **); +#endif + +/* FIXME: This should be declared in new.h but it's not an extern "C" so + * it would not be much use anyway. Even for Winelib applications. + */ +int MSVCRT__set_new_mode(int mode); + +void* MSVCRT_operator_new(unsigned long size); +void MSVCRT_operator_delete(void*); +#ifndef __REACTOS__ +typedef void* (*MSVCRT_malloc_func)(MSVCRT_size_t); +#endif +typedef void (*MSVCRT_free_func)(void*); +#ifndef __REACTOS__ +extern char* MSVCRT___unDName(int,const char*,int,MSVCRT_malloc_func,MSVCRT_free_func,unsigned int); +#endif + +/* Setup and teardown multi threaded locks */ +extern void msvcrt_init_mt_locks(void); +extern void msvcrt_free_mt_locks(void); + +extern void msvcrt_init_io(void); +extern void msvcrt_free_io(void); +extern void msvcrt_init_console(void); +extern void msvcrt_free_console(void); +extern void msvcrt_init_args(void); +extern void msvcrt_free_args(void); + +/* run-time error codes */ +#define _RT_STACK 0 +#define _RT_NULLPTR 1 +#define _RT_FLOAT 2 +#define _RT_INTDIV 3 +#define _RT_EXECMEM 5 +#define _RT_EXECFORM 6 +#define _RT_EXECENV 7 +#define _RT_SPACEARG 8 +#define _RT_SPACEENV 9 +#define _RT_ABORT 10 +#define _RT_NPTR 12 +#define _RT_FPTR 13 +#define _RT_BREAK 14 +#define _RT_INT 15 +#define _RT_THREAD 16 +#define _RT_LOCK 17 +#define _RT_HEAP 18 +#define _RT_OPENCON 19 +#define _RT_QWIN 20 +#define _RT_NOMAIN 21 +#define _RT_NONCONT 22 +#define _RT_INVALDISP 23 +#define _RT_ONEXIT 24 +#define _RT_PUREVIRT 25 +#define _RT_STDIOINIT 26 +#define _RT_LOWIOINIT 27 +#define _RT_HEAPINIT 28 +#define _RT_DOMAIN 120 +#define _RT_SING 121 +#define _RT_TLOSS 122 +#define _RT_CRNL 252 +#define _RT_BANNER 255 + +#endif /* __WINE_MSVCRT_H */ From 55fb40a502b35274c46bd1ab5f23d95d6945a204 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Wed, 16 Feb 2005 22:29:48 +0000 Subject: [PATCH 082/248] ntdll: -critical.c: catch (more) invalid use -impl. sscanf (stolen from wine) crt: -use native mingw headers and not private copies of them -converted some routines to using tchar == impl. many missing unicode routines -impl. sscanf and friends correctly (stolen from wine) tchar.h: -added lotsa missin stuff svn path=/trunk/; revision=13608 --- reactos/lib/crt/conio/cgets.c | 4 +- reactos/lib/crt/conio/cprintf.c | 5 +- reactos/lib/crt/conio/cputs.c | 10 +- reactos/lib/crt/conio/cscanf.c | 29 - reactos/lib/crt/conio/getch.c | 10 +- reactos/lib/crt/conio/getche.c | 10 +- reactos/lib/crt/conio/kbhit.c | 4 +- reactos/lib/crt/conio/putch.c | 2 +- reactos/lib/crt/conio/ungetch.c | 4 +- reactos/lib/crt/ctype/ctype.c | 2 +- reactos/lib/crt/ctype/isalnum.c | 2 +- reactos/lib/crt/ctype/isalpha.c | 2 +- reactos/lib/crt/ctype/isascii.c | 2 +- reactos/lib/crt/ctype/iscntrl.c | 2 +- reactos/lib/crt/ctype/iscsym.c | 2 +- reactos/lib/crt/ctype/isctype.c | 4 +- reactos/lib/crt/ctype/isdigit.c | 2 +- reactos/lib/crt/ctype/isgraph.c | 2 +- reactos/lib/crt/ctype/islower.c | 2 +- reactos/lib/crt/ctype/isprint.c | 2 +- reactos/lib/crt/ctype/ispunct.c | 2 +- reactos/lib/crt/ctype/isspace.c | 2 +- reactos/lib/crt/ctype/isupper.c | 2 +- reactos/lib/crt/ctype/isxdigit.c | 2 +- reactos/lib/crt/ctype/toascii.c | 2 +- reactos/lib/crt/ctype/tolower.c | 2 +- reactos/lib/crt/ctype/toupper.c | 2 +- reactos/lib/crt/direct/chdir.c | 6 +- reactos/lib/crt/direct/chdrive.c | 10 +- reactos/lib/crt/direct/getcwd.c | 8 +- reactos/lib/crt/direct/getdcwd.c | 4 +- reactos/lib/crt/direct/getdfree.c | 4 +- reactos/lib/crt/direct/getdrive.c | 4 +- reactos/lib/crt/direct/mkdir.c | 4 +- reactos/lib/crt/direct/rmdir.c | 4 +- reactos/lib/crt/direct/wchdir.c | 7 +- reactos/lib/crt/direct/wgetcwd.c | 8 +- reactos/lib/crt/direct/wgetdcwd.c | 4 +- reactos/lib/crt/direct/wmkdir.c | 4 +- reactos/lib/crt/direct/wrmdir.c | 4 +- reactos/lib/crt/float/chgsign.c | 4 +- reactos/lib/crt/float/clearfp.c | 2 +- reactos/lib/crt/float/cntrlfp.c | 2 +- reactos/lib/crt/float/copysign.c | 4 +- reactos/lib/crt/float/fpclass.c | 6 +- reactos/lib/crt/float/fpecode.c | 4 +- reactos/lib/crt/float/fpreset.c | 2 +- reactos/lib/crt/float/isnan.c | 6 +- reactos/lib/crt/float/logb.c | 2 +- reactos/lib/crt/float/nafter.c | 4 +- reactos/lib/crt/float/scalb.c | 4 +- reactos/lib/crt/float/statfp.c | 2 +- reactos/lib/crt/io/access.c | 53 +- reactos/lib/crt/io/chmod.c | 18 +- reactos/lib/crt/io/chsize.c | 6 +- reactos/lib/crt/io/close.c | 21 +- reactos/lib/crt/io/commit.c | 8 +- reactos/lib/crt/io/create.c | 6 +- reactos/lib/crt/io/dup.c | 10 +- reactos/lib/crt/io/dup2.c | 4 +- reactos/lib/crt/io/eof.c | 3 +- reactos/lib/crt/io/filelen.c | 6 +- reactos/lib/crt/io/fileleni.c | 6 +- reactos/lib/crt/io/find.c | 248 ++++-- reactos/lib/crt/io/fmode.c | 8 +- reactos/lib/crt/io/isatty.c | 8 +- reactos/lib/crt/io/locking.c | 6 +- reactos/lib/crt/io/lseek.c | 6 +- reactos/lib/crt/io/lseeki64.c | 8 +- reactos/lib/crt/io/mktemp.c | 8 +- reactos/lib/crt/io/open.c | 704 ++++++++++----- reactos/lib/crt/io/pipe.c | 25 +- reactos/lib/crt/io/read.c | 10 +- reactos/lib/crt/io/setmode.c | 16 +- reactos/lib/crt/io/sopen.c | 7 +- reactos/lib/crt/io/tell.c | 5 +- reactos/lib/crt/io/telli64.c | 5 +- reactos/lib/crt/io/umask.c | 2 +- reactos/lib/crt/io/unlink.c | 5 +- reactos/lib/crt/io/utime.c | 10 +- reactos/lib/crt/io/waccess.c | 34 +- reactos/lib/crt/io/wchmod.c | 49 +- reactos/lib/crt/io/wcreate.c | 6 +- reactos/lib/crt/io/wfind.c | 227 +---- reactos/lib/crt/io/wmktemp.c | 8 +- reactos/lib/crt/io/wopen.c | 27 +- reactos/lib/crt/io/write.c | 20 +- reactos/lib/crt/io/wunlink.c | 6 +- reactos/lib/crt/io/wutime.c | 10 +- reactos/lib/crt/locale/locale.c | 12 +- reactos/lib/crt/makefile | 28 +- reactos/lib/crt/math/acos.c | 2 +- reactos/lib/crt/math/asin.c | 2 +- reactos/lib/crt/math/atan.c | 2 +- reactos/lib/crt/math/atan2.c | 2 +- reactos/lib/crt/math/cabs.c | 2 +- reactos/lib/crt/math/ceil.c | 2 +- reactos/lib/crt/math/cos.c | 2 +- reactos/lib/crt/math/cosh.c | 2 +- reactos/lib/crt/math/exp.c | 2 +- reactos/lib/crt/math/fabs.c | 2 +- reactos/lib/crt/math/floor.c | 2 +- reactos/lib/crt/math/fmod.c | 2 +- reactos/lib/crt/math/frexp.c | 6 +- reactos/lib/crt/math/huge_val.c | 2 +- reactos/lib/crt/math/hypot.c | 6 +- reactos/lib/crt/math/j0_y0.c | 2 +- reactos/lib/crt/math/j1_y1.c | 2 +- reactos/lib/crt/math/jn_yn.c | 2 +- reactos/lib/crt/math/ldexp.c | 2 +- reactos/lib/crt/math/log.c | 2 +- reactos/lib/crt/math/log10.c | 2 +- reactos/lib/crt/math/math.c | 2 +- reactos/lib/crt/math/modf.c | 8 +- reactos/lib/crt/math/pow.c | 2 +- reactos/lib/crt/math/sin.c | 2 +- reactos/lib/crt/math/sinh.c | 2 +- reactos/lib/crt/math/sqrt.c | 2 +- reactos/lib/crt/math/stubs.c | 2 +- reactos/lib/crt/math/tan.c | 2 +- reactos/lib/crt/math/tanh.c | 2 +- reactos/lib/crt/mbstring/hanzen.c | 2 +- reactos/lib/crt/mbstring/ischira.c | 4 +- reactos/lib/crt/mbstring/iskana.c | 9 +- reactos/lib/crt/mbstring/iskmoji.c | 2 +- reactos/lib/crt/mbstring/iskpun.c | 6 +- reactos/lib/crt/mbstring/islead.c | 2 +- reactos/lib/crt/mbstring/islwr.c | 4 +- reactos/lib/crt/mbstring/ismbal.c | 6 +- reactos/lib/crt/mbstring/ismbaln.c | 6 +- reactos/lib/crt/mbstring/ismbc.c | 2 +- reactos/lib/crt/mbstring/ismbgra.c | 8 +- reactos/lib/crt/mbstring/ismbkaln.c | 8 +- reactos/lib/crt/mbstring/ismblead.c | 13 +- reactos/lib/crt/mbstring/ismbpri.c | 8 +- reactos/lib/crt/mbstring/ismbpun.c | 8 +- reactos/lib/crt/mbstring/ismbtrl.c | 7 +- reactos/lib/crt/mbstring/isuppr.c | 4 +- reactos/lib/crt/mbstring/jistojms.c | 4 +- reactos/lib/crt/mbstring/jmstojis.c | 4 +- reactos/lib/crt/mbstring/mbbtype.c | 5 +- reactos/lib/crt/mbstring/mbccpy.c | 4 +- reactos/lib/crt/mbstring/mbclen.c | 4 +- reactos/lib/crt/mbstring/mbscat.c | 2 +- reactos/lib/crt/mbstring/mbschr.c | 2 +- reactos/lib/crt/mbstring/mbscmp.c | 4 +- reactos/lib/crt/mbstring/mbscoll.c | 2 +- reactos/lib/crt/mbstring/mbscpy.c | 4 +- reactos/lib/crt/mbstring/mbscspn.c | 2 +- reactos/lib/crt/mbstring/mbsdec.c | 3 +- reactos/lib/crt/mbstring/mbsdup.c | 4 +- reactos/lib/crt/mbstring/mbsicmp.c | 6 +- reactos/lib/crt/mbstring/mbsicoll.c | 6 +- reactos/lib/crt/mbstring/mbsinc.c | 2 +- reactos/lib/crt/mbstring/mbslen.c | 2 +- reactos/lib/crt/mbstring/mbslwr.c | 4 +- reactos/lib/crt/mbstring/mbsncat.c | 4 +- reactos/lib/crt/mbstring/mbsnccnt.c | 2 +- reactos/lib/crt/mbstring/mbsncmp.c | 2 +- reactos/lib/crt/mbstring/mbsncoll.c | 2 +- reactos/lib/crt/mbstring/mbsncpy.c | 2 +- reactos/lib/crt/mbstring/mbsnextc.c | 3 +- reactos/lib/crt/mbstring/mbsnicmp.c | 2 +- reactos/lib/crt/mbstring/mbsnicoll.c | 2 +- reactos/lib/crt/mbstring/mbsninc.c | 2 +- reactos/lib/crt/mbstring/mbsnset.c | 2 +- reactos/lib/crt/mbstring/mbspbrk.c | 3 +- reactos/lib/crt/mbstring/mbsrchr.c | 4 +- reactos/lib/crt/mbstring/mbsrev.c | 2 +- reactos/lib/crt/mbstring/mbsset.c | 2 +- reactos/lib/crt/mbstring/mbsspn.c | 2 +- reactos/lib/crt/mbstring/mbsspnp.c | 2 +- reactos/lib/crt/mbstring/mbsstr.c | 4 +- reactos/lib/crt/mbstring/mbstok.c | 5 +- reactos/lib/crt/mbstring/mbstrlen.c | 4 +- reactos/lib/crt/mbstring/mbsupr.c | 4 +- reactos/lib/crt/misc/amsg.c | 4 +- reactos/lib/crt/misc/assert.c | 8 +- reactos/lib/crt/misc/crtmain.c | 2 +- reactos/lib/crt/misc/environ.c | 9 +- reactos/lib/crt/misc/getargs.c | 13 +- reactos/lib/crt/misc/initterm.c | 2 +- reactos/lib/crt/misc/lock.c | 4 +- reactos/lib/crt/misc/purecall.c | 2 +- reactos/lib/crt/misc/stubs.c | 33 +- reactos/lib/crt/misc/tls.c | 6 +- reactos/lib/crt/process/_cwait.c | 6 +- reactos/lib/crt/process/_system.c | 10 +- reactos/lib/crt/process/dll.c | 2 +- reactos/lib/crt/process/process.c | 944 ++++++++++---------- reactos/lib/crt/process/procid.c | 2 +- reactos/lib/crt/process/thread.c | 6 +- reactos/lib/crt/process/threadid.c | 2 +- reactos/lib/crt/process/threadx.c | 6 +- reactos/lib/crt/process/wprocess.c | 4 + reactos/lib/crt/search/lfind.c | 4 +- reactos/lib/crt/search/lsearch.c | 6 +- reactos/lib/crt/signal/signal.c | 191 ++-- reactos/lib/crt/signal/xcptinfo.c | 2 +- reactos/lib/crt/stdio/allocfil.c | 9 +- reactos/lib/crt/stdio/clearerr.c | 7 +- reactos/lib/crt/stdio/fclose.c | 26 +- reactos/lib/crt/stdio/fdopen.c | 25 +- reactos/lib/crt/stdio/feof.c | 6 +- reactos/lib/crt/stdio/ferror.c | 4 +- reactos/lib/crt/stdio/fflush.c | 21 +- reactos/lib/crt/stdio/fgetc.c | 4 +- reactos/lib/crt/stdio/fgetchar.c | 4 +- reactos/lib/crt/stdio/fgetpos.c | 4 +- reactos/lib/crt/stdio/fgets.c | 4 +- reactos/lib/crt/stdio/fgetws.c | 4 +- reactos/lib/crt/stdio/filbuf.c | 20 +- reactos/lib/crt/stdio/fileno.c | 11 +- reactos/lib/crt/stdio/flsbuf.c | 23 +- reactos/lib/crt/stdio/fopen.c | 25 +- reactos/lib/crt/stdio/fprintf.c | 6 +- reactos/lib/crt/stdio/fputc.c | 6 +- reactos/lib/crt/stdio/fputchar.c | 4 +- reactos/lib/crt/stdio/fputs.c | 49 +- reactos/lib/crt/stdio/fputws.c | 5 + reactos/lib/crt/stdio/fread.c | 12 +- reactos/lib/crt/stdio/freopen.c | 80 +- reactos/lib/crt/stdio/fscanf.c | 65 -- reactos/lib/crt/stdio/fseek.c | 14 +- reactos/lib/crt/stdio/fsetpos.c | 6 +- reactos/lib/crt/stdio/fsopen.c | 105 +-- reactos/lib/crt/stdio/ftell.c | 12 +- reactos/lib/crt/stdio/fwalk.c | 4 +- reactos/lib/crt/stdio/fwrite.c | 34 +- reactos/lib/crt/stdio/getc.c | 8 +- reactos/lib/crt/stdio/getchar.c | 4 +- reactos/lib/crt/stdio/gets.c | 2 +- reactos/lib/crt/stdio/getw.c | 2 +- reactos/lib/crt/stdio/perror.c | 6 +- reactos/lib/crt/stdio/popen.c | 170 +--- reactos/lib/crt/stdio/printf.c | 26 +- reactos/lib/crt/stdio/putc.c | 10 +- reactos/lib/crt/stdio/putchar.c | 18 +- reactos/lib/crt/stdio/puts.c | 6 +- reactos/lib/crt/stdio/putw.c | 2 +- reactos/lib/crt/stdio/putwchar.c | 4 + reactos/lib/crt/stdio/remove.c | 23 +- reactos/lib/crt/stdio/rename.c | 10 +- reactos/lib/crt/stdio/rewind.c | 8 +- reactos/lib/crt/stdio/rmtmp.c | 29 +- reactos/lib/crt/stdio/scanf.c | 64 -- reactos/lib/crt/stdio/setbuf.c | 6 +- reactos/lib/crt/stdio/setvbuf.c | 10 +- reactos/lib/crt/stdio/sprintf.c | 48 +- reactos/lib/crt/stdio/sscanf.c | 71 -- reactos/lib/crt/stdio/stdhnd.c | 18 +- reactos/lib/crt/stdio/swprintf.c | 4 + reactos/lib/crt/stdio/tempnam.c | 20 +- reactos/lib/crt/stdio/tmpfile.c | 22 +- reactos/lib/crt/stdio/tmpnam.c | 18 +- reactos/lib/crt/stdio/ungetc.c | 71 +- reactos/lib/crt/stdio/ungetwc.c | 4 + reactos/lib/crt/stdio/vfprintf.c | 32 +- reactos/lib/crt/stdio/vfscanf.c | 1229 -------------------------- reactos/lib/crt/stdio/vfwprint.c | 28 +- reactos/lib/crt/stdio/vprintf.c | 40 +- reactos/lib/crt/stdio/vscanf.c | 34 - reactos/lib/crt/stdio/vsprintf.c | 62 +- reactos/lib/crt/stdio/vsscanf.c | 50 -- reactos/lib/crt/stdio/vswprintf.c | 4 + reactos/lib/crt/stdio/vwprintf.c | 5 + reactos/lib/crt/stdio/wfdopen.c | 56 +- reactos/lib/crt/stdio/wfreopen.c | 6 + reactos/lib/crt/stdio/wfsopen.c | 5 + reactos/lib/crt/stdio/wpopen.c | 5 + reactos/lib/crt/stdio/wprintf.c | 5 + reactos/lib/crt/stdio/wremove.c | 4 + reactos/lib/crt/stdio/wrename.c | 18 +- reactos/lib/crt/stdio/wtempnam.c | 25 +- reactos/lib/crt/stdio/wtmpnam.c | 20 +- reactos/lib/crt/stdlib/_exit.c | 8 +- reactos/lib/crt/stdlib/abort.c | 10 +- reactos/lib/crt/stdlib/abs.c | 3 +- reactos/lib/crt/stdlib/atexit.c | 4 +- reactos/lib/crt/stdlib/atof.c | 2 +- reactos/lib/crt/stdlib/atoi.c | 7 +- reactos/lib/crt/stdlib/atoi64.c | 4 +- reactos/lib/crt/stdlib/atol.c | 7 +- reactos/lib/crt/stdlib/atold.c | 2 +- reactos/lib/crt/stdlib/bsearch.c | 2 +- reactos/lib/crt/stdlib/div.c | 2 +- reactos/lib/crt/stdlib/ecvt.c | 4 +- reactos/lib/crt/stdlib/ecvtbuf.c | 12 +- reactos/lib/crt/stdlib/errno.c | 6 +- reactos/lib/crt/stdlib/fcvt.c | 4 +- reactos/lib/crt/stdlib/fcvtbuf.c | 12 +- reactos/lib/crt/stdlib/fullpath.c | 9 +- reactos/lib/crt/stdlib/gcvt.c | 6 +- reactos/lib/crt/stdlib/getenv.c | 4 +- reactos/lib/crt/stdlib/itoa.c | 6 +- reactos/lib/crt/stdlib/itow.c | 6 +- reactos/lib/crt/stdlib/labs.c | 3 +- reactos/lib/crt/stdlib/ldiv.c | 2 +- reactos/lib/crt/stdlib/makepath.c | 4 +- reactos/lib/crt/stdlib/malloc.c | 4 +- reactos/lib/crt/stdlib/mbstowcs.c | 6 +- reactos/lib/crt/stdlib/mbtowc.c | 4 +- reactos/lib/crt/stdlib/obsol.c | 2 +- reactos/lib/crt/stdlib/putenv.c | 6 +- reactos/lib/crt/stdlib/qsort.c | 7 +- reactos/lib/crt/stdlib/rand.c | 4 +- reactos/lib/crt/stdlib/rot.c | 3 +- reactos/lib/crt/stdlib/senv.c | 27 +- reactos/lib/crt/stdlib/splitp.c | 33 +- reactos/lib/crt/stdlib/strtod.c | 2 +- reactos/lib/crt/stdlib/strtol.c | 8 +- reactos/lib/crt/stdlib/strtold.c | 2 +- reactos/lib/crt/stdlib/strtoll.c | 84 -- reactos/lib/crt/stdlib/strtoul.c | 8 +- reactos/lib/crt/stdlib/strtoull.c | 6 +- reactos/lib/crt/stdlib/swab.c | 2 +- reactos/lib/crt/stdlib/wcstod.c | 2 +- reactos/lib/crt/stdlib/wcstol.c | 4 +- reactos/lib/crt/stdlib/wcstom.c | 2 +- reactos/lib/crt/stdlib/wcstomb.c | 10 +- reactos/lib/crt/stdlib/wcstombs.c | 9 +- reactos/lib/crt/stdlib/wcstoul.c | 8 +- reactos/lib/crt/stdlib/wctomb.c | 10 +- reactos/lib/crt/stdlib/wfulpath.c | 27 +- reactos/lib/crt/stdlib/witoa.c | 6 +- reactos/lib/crt/stdlib/witow.c | 6 +- reactos/lib/crt/stdlib/wmakpath.c | 4 +- reactos/lib/crt/stdlib/wputenv.c | 6 +- reactos/lib/crt/stdlib/wsenv.c | 36 +- reactos/lib/crt/stdlib/wsplitp.c | 70 +- reactos/lib/crt/stdlib/wtoi.c | 19 +- reactos/lib/crt/stdlib/wtoi64.c | 4 +- reactos/lib/crt/stdlib/wtol.c | 6 + reactos/lib/crt/string/lasttok.c | 4 +- reactos/lib/crt/string/memicmp.c | 4 +- reactos/lib/crt/string/strcoll.c | 2 +- reactos/lib/crt/string/strdup.c | 4 +- reactos/lib/crt/string/strerror.c | 14 +- reactos/lib/crt/string/stricmp.c | 4 +- reactos/lib/crt/string/strlwr.c | 4 +- reactos/lib/crt/string/strncoll.c | 2 +- reactos/lib/crt/string/strnicmp.c | 4 +- reactos/lib/crt/string/strpbrk.c | 2 +- reactos/lib/crt/string/strrev.c | 2 +- reactos/lib/crt/string/strset.c | 6 +- reactos/lib/crt/string/strstr.c | 2 +- reactos/lib/crt/string/strtok.c | 4 +- reactos/lib/crt/string/strupr.c | 4 +- reactos/lib/crt/string/strxfrm.c | 2 +- reactos/lib/crt/sys_stat/fstat.c | 16 +- reactos/lib/crt/sys_stat/fstati64.c | 16 +- reactos/lib/crt/sys_stat/futime.c | 18 +- reactos/lib/crt/sys_stat/stat.c | 18 +- reactos/lib/crt/sys_stat/systime.c | 2 +- reactos/lib/crt/sys_stat/wstat.c | 18 +- reactos/lib/crt/time/clock.c | 4 +- reactos/lib/crt/time/ctime.c | 29 +- reactos/lib/crt/time/difftime.c | 2 +- reactos/lib/crt/time/ftime.c | 8 +- reactos/lib/crt/time/strdate.c | 10 +- reactos/lib/crt/time/strftime.c | 11 +- reactos/lib/crt/time/strtime.c | 8 +- reactos/lib/crt/time/time.c | 4 +- reactos/lib/crt/time/tz_vars.c | 20 +- reactos/lib/crt/time/wctime.c | 5 +- reactos/lib/crt/time/wstrdate.c | 10 +- reactos/lib/crt/time/wstrtime.c | 8 +- reactos/lib/crt/wine/cpp.c | 10 +- reactos/lib/crt/wine/cppexcept.c | 4 +- reactos/lib/crt/wine/heap.c | 8 +- reactos/lib/crt/wine/scanf.c | 222 +++++ reactos/lib/crt/wine/scanf.h | 537 +++++++++++ reactos/lib/crt/wine/thread.c | 6 +- reactos/lib/crt/wstring/wcscoll.c | 2 +- reactos/lib/crt/wstring/wcscspn.c | 2 +- reactos/lib/crt/wstring/wcsdup.c | 8 +- reactos/lib/crt/wstring/wcsicmp.c | 4 +- reactos/lib/crt/wstring/wcslwr.c | 2 +- reactos/lib/crt/wstring/wcsnicmp.c | 2 +- reactos/lib/crt/wstring/wcspbrk.c | 2 +- reactos/lib/crt/wstring/wcsrev.c | 2 +- reactos/lib/crt/wstring/wcsset.c | 2 +- reactos/lib/crt/wstring/wcsspn.c | 2 +- reactos/lib/crt/wstring/wcsstr.c | 2 +- reactos/lib/crt/wstring/wcstok.c | 4 +- reactos/lib/crt/wstring/wcsupr.c | 4 +- reactos/lib/crt/wstring/wcsxfrm.c | 2 +- reactos/lib/crt/wstring/wlasttok.c | 4 +- 388 files changed, 3422 insertions(+), 4595 deletions(-) delete mode 100644 reactos/lib/crt/conio/cscanf.c create mode 100644 reactos/lib/crt/process/wprocess.c create mode 100644 reactos/lib/crt/stdio/fputws.c delete mode 100644 reactos/lib/crt/stdio/fscanf.c create mode 100644 reactos/lib/crt/stdio/putwchar.c delete mode 100644 reactos/lib/crt/stdio/scanf.c delete mode 100644 reactos/lib/crt/stdio/sscanf.c create mode 100644 reactos/lib/crt/stdio/swprintf.c create mode 100644 reactos/lib/crt/stdio/ungetwc.c delete mode 100644 reactos/lib/crt/stdio/vfscanf.c delete mode 100644 reactos/lib/crt/stdio/vscanf.c delete mode 100644 reactos/lib/crt/stdio/vsscanf.c create mode 100644 reactos/lib/crt/stdio/vswprintf.c create mode 100644 reactos/lib/crt/stdio/vwprintf.c create mode 100644 reactos/lib/crt/stdio/wfreopen.c create mode 100644 reactos/lib/crt/stdio/wfsopen.c create mode 100644 reactos/lib/crt/stdio/wpopen.c create mode 100644 reactos/lib/crt/stdio/wprintf.c create mode 100644 reactos/lib/crt/stdio/wremove.c delete mode 100644 reactos/lib/crt/stdlib/strtoll.c create mode 100644 reactos/lib/crt/stdlib/wtol.c create mode 100644 reactos/lib/crt/wine/scanf.c create mode 100644 reactos/lib/crt/wine/scanf.h diff --git a/reactos/lib/crt/conio/cgets.c b/reactos/lib/crt/conio/cgets.c index dfdb99bf1b0..b4e67166b5a 100644 --- a/reactos/lib/crt/conio/cgets.c +++ b/reactos/lib/crt/conio/cgets.c @@ -6,8 +6,8 @@ * PROGRAMMER: Eric Kohl (Imported from DJGPP) */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/conio/cprintf.c b/reactos/lib/crt/conio/cprintf.c index b8e487edca3..42f527ad0eb 100644 --- a/reactos/lib/crt/conio/cprintf.c +++ b/reactos/lib/crt/conio/cprintf.c @@ -6,8 +6,9 @@ * PROGRAMMER: Eric Kohl (Imported from DJGPP) */ -#include -#include +#include +#include +#include /* * @unimplemented diff --git a/reactos/lib/crt/conio/cputs.c b/reactos/lib/crt/conio/cputs.c index 008afd39781..705afe7c6ad 100644 --- a/reactos/lib/crt/conio/cputs.c +++ b/reactos/lib/crt/conio/cputs.c @@ -9,10 +9,10 @@ */ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include +#include /* @@ -22,7 +22,7 @@ int _cputs(const char *_str) { int len = strlen(_str); DWORD written = 0; - if (!WriteFile(filehnd(stdout->_file),_str,len,&written,NULL)) + if (!WriteFile( fdinfo(stdout->_file)->hFile ,_str,len,&written,NULL)) return -1; return 0; } diff --git a/reactos/lib/crt/conio/cscanf.c b/reactos/lib/crt/conio/cscanf.c deleted file mode 100644 index f508c18d212..00000000000 --- a/reactos/lib/crt/conio/cscanf.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: msvcrt/conio/cscanf.c - * PURPOSE: C Runtime - * PROGRAMMER: Eric Kohl (Imported from DJGPP) - */ - -#include -#include -#include -#include - -/* - * @unimplemented - */ -int _cscanf(char *fmt, ...) -{ - int cnt; - - va_list ap; - - //fixme cscanf should scan the console's keyboard - va_start(ap, fmt); - cnt = __vscanf(fmt, ap); - va_end(ap); - - return cnt; -} diff --git a/reactos/lib/crt/conio/getch.c b/reactos/lib/crt/conio/getch.c index bcbe825f5c2..d51c4ac0290 100644 --- a/reactos/lib/crt/conio/getch.c +++ b/reactos/lib/crt/conio/getch.c @@ -9,10 +9,10 @@ */ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include +#include /* @@ -26,7 +26,7 @@ int _getch(void) c = ungot_char; char_avail = 0; } else { - ReadConsoleA(_get_osfhandle(stdin->_file), + ReadConsoleA((HANDLE)_get_osfhandle(stdin->_file), &c, 1, &NumberOfCharsRead, diff --git a/reactos/lib/crt/conio/getche.c b/reactos/lib/crt/conio/getche.c index b9fb42a8094..4f78db94027 100644 --- a/reactos/lib/crt/conio/getche.c +++ b/reactos/lib/crt/conio/getche.c @@ -10,11 +10,11 @@ * 28/12/98: Created */ -#include -#include +#include +#include -int getche(void) +int _getche(void) { if (char_avail) /* @@ -26,6 +26,6 @@ int getche(void) * hasn't been got by a conio function. * We don't echo again. */ - return(getch()); - return (_putch(getch())); + return(_getch()); + return (_putch(_getch())); } diff --git a/reactos/lib/crt/conio/kbhit.c b/reactos/lib/crt/conio/kbhit.c index b61000d3e25..6f0c0add57c 100644 --- a/reactos/lib/crt/conio/kbhit.c +++ b/reactos/lib/crt/conio/kbhit.c @@ -9,8 +9,8 @@ */ #include "precomp.h" -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/conio/putch.c b/reactos/lib/crt/conio/putch.c index dc95ffedb6c..d6a91a609d4 100644 --- a/reactos/lib/crt/conio/putch.c +++ b/reactos/lib/crt/conio/putch.c @@ -9,7 +9,7 @@ */ #include "precomp.h" -#include +#include /* * @implemented diff --git a/reactos/lib/crt/conio/ungetch.c b/reactos/lib/crt/conio/ungetch.c index e767b6efa4f..31829a1ec97 100644 --- a/reactos/lib/crt/conio/ungetch.c +++ b/reactos/lib/crt/conio/ungetch.c @@ -10,8 +10,8 @@ * 28/12/98: Created */ -#include -#include +#include +#include #define EOF -1 diff --git a/reactos/lib/crt/ctype/ctype.c b/reactos/lib/crt/ctype/ctype.c index 3c88c06e704..f98fab7d6c3 100644 --- a/reactos/lib/crt/ctype/ctype.c +++ b/reactos/lib/crt/ctype/ctype.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include unsigned short _ctype[] = { 0, /* , 0xFFFF */ diff --git a/reactos/lib/crt/ctype/isalnum.c b/reactos/lib/crt/ctype/isalnum.c index 4aa76701247..a9a484ea1b6 100644 --- a/reactos/lib/crt/ctype/isalnum.c +++ b/reactos/lib/crt/ctype/isalnum.c @@ -7,7 +7,7 @@ * UPDATE HISTORY: * 28/12/98: Created */ -#include +#include #undef isalnum diff --git a/reactos/lib/crt/ctype/isalpha.c b/reactos/lib/crt/ctype/isalpha.c index 9fc0cb0093f..daa1878964d 100644 --- a/reactos/lib/crt/ctype/isalpha.c +++ b/reactos/lib/crt/ctype/isalpha.c @@ -8,7 +8,7 @@ * 28/12/98: Created */ -#include +#include #undef isalpha diff --git a/reactos/lib/crt/ctype/isascii.c b/reactos/lib/crt/ctype/isascii.c index 742d39dbbc5..9c98a603339 100644 --- a/reactos/lib/crt/ctype/isascii.c +++ b/reactos/lib/crt/ctype/isascii.c @@ -8,7 +8,7 @@ * 28/12/98: Created */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/ctype/iscntrl.c b/reactos/lib/crt/ctype/iscntrl.c index c7e64b861d9..8d128a29c55 100644 --- a/reactos/lib/crt/ctype/iscntrl.c +++ b/reactos/lib/crt/ctype/iscntrl.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef iscntrl /* diff --git a/reactos/lib/crt/ctype/iscsym.c b/reactos/lib/crt/ctype/iscsym.c index 8608062b8e8..bd108b4347e 100644 --- a/reactos/lib/crt/ctype/iscsym.c +++ b/reactos/lib/crt/ctype/iscsym.c @@ -7,7 +7,7 @@ * UPDATE HISTORY: * 28/12/98: Created */ -#include +#include /* diff --git a/reactos/lib/crt/ctype/isctype.c b/reactos/lib/crt/ctype/isctype.c index 7542a609d00..a1a4d3242fe 100644 --- a/reactos/lib/crt/ctype/isctype.c +++ b/reactos/lib/crt/ctype/isctype.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include extern unsigned short _ctype[]; @@ -34,7 +34,7 @@ unsigned short **__p__pwctype(void) /* * @implemented */ -int _isctype(unsigned int c, int ctypeFlags) +int _isctype(int c, int ctypeFlags) { return (_pctype[(unsigned char)(c & 0xFF)] & ctypeFlags); } diff --git a/reactos/lib/crt/ctype/isdigit.c b/reactos/lib/crt/ctype/isdigit.c index 36783d43587..16219bc876f 100644 --- a/reactos/lib/crt/ctype/isdigit.c +++ b/reactos/lib/crt/ctype/isdigit.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef isdigit diff --git a/reactos/lib/crt/ctype/isgraph.c b/reactos/lib/crt/ctype/isgraph.c index 9b614805a0f..8db6f627ca8 100644 --- a/reactos/lib/crt/ctype/isgraph.c +++ b/reactos/lib/crt/ctype/isgraph.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef isgraph /* diff --git a/reactos/lib/crt/ctype/islower.c b/reactos/lib/crt/ctype/islower.c index c91e5dde091..a804c05f9a9 100644 --- a/reactos/lib/crt/ctype/islower.c +++ b/reactos/lib/crt/ctype/islower.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef islower diff --git a/reactos/lib/crt/ctype/isprint.c b/reactos/lib/crt/ctype/isprint.c index 1f234240254..c98cecbcd52 100644 --- a/reactos/lib/crt/ctype/isprint.c +++ b/reactos/lib/crt/ctype/isprint.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef isprint /* diff --git a/reactos/lib/crt/ctype/ispunct.c b/reactos/lib/crt/ctype/ispunct.c index 51fe12e3693..b0197aa7cf5 100644 --- a/reactos/lib/crt/ctype/ispunct.c +++ b/reactos/lib/crt/ctype/ispunct.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef ispunct /* diff --git a/reactos/lib/crt/ctype/isspace.c b/reactos/lib/crt/ctype/isspace.c index 6f74756b1ed..57e01b2cb2d 100644 --- a/reactos/lib/crt/ctype/isspace.c +++ b/reactos/lib/crt/ctype/isspace.c @@ -8,7 +8,7 @@ * 28/12/98: Created */ -#include +#include #undef isspace diff --git a/reactos/lib/crt/ctype/isupper.c b/reactos/lib/crt/ctype/isupper.c index 6e090255de9..fe19dc4cec9 100644 --- a/reactos/lib/crt/ctype/isupper.c +++ b/reactos/lib/crt/ctype/isupper.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef isupper /* diff --git a/reactos/lib/crt/ctype/isxdigit.c b/reactos/lib/crt/ctype/isxdigit.c index 3490c07924f..04be96ec81a 100644 --- a/reactos/lib/crt/ctype/isxdigit.c +++ b/reactos/lib/crt/ctype/isxdigit.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef isxdigit /* diff --git a/reactos/lib/crt/ctype/toascii.c b/reactos/lib/crt/ctype/toascii.c index 8ad09e23c83..81e3c02e8df 100644 --- a/reactos/lib/crt/ctype/toascii.c +++ b/reactos/lib/crt/ctype/toascii.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/ctype/tolower.c b/reactos/lib/crt/ctype/tolower.c index 48c8788020f..324d0f16eab 100644 --- a/reactos/lib/crt/ctype/tolower.c +++ b/reactos/lib/crt/ctype/tolower.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef tolower /* diff --git a/reactos/lib/crt/ctype/toupper.c b/reactos/lib/crt/ctype/toupper.c index 7e21e65e226..df93d23e677 100644 --- a/reactos/lib/crt/ctype/toupper.c +++ b/reactos/lib/crt/ctype/toupper.c @@ -6,7 +6,7 @@ * PROGRAMMER: Copyright (C) 1995 DJ Delorie */ -#include +#include #undef toupper /* diff --git a/reactos/lib/crt/direct/chdir.c b/reactos/lib/crt/direct/chdir.c index 2a48e5cad53..a2d412a8e92 100644 --- a/reactos/lib/crt/direct/chdir.c +++ b/reactos/lib/crt/direct/chdir.c @@ -1,7 +1,7 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/direct/chdrive.c b/reactos/lib/crt/direct/chdrive.c index 250aace5d2c..b65f5218d3e 100644 --- a/reactos/lib/crt/direct/chdrive.c +++ b/reactos/lib/crt/direct/chdrive.c @@ -1,9 +1,9 @@ #include "precomp.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include int cur_drive = 0; diff --git a/reactos/lib/crt/direct/getcwd.c b/reactos/lib/crt/direct/getcwd.c index a9801b6e8eb..6d820e395a4 100644 --- a/reactos/lib/crt/direct/getcwd.c +++ b/reactos/lib/crt/direct/getcwd.c @@ -1,8 +1,8 @@ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/direct/getdcwd.c b/reactos/lib/crt/direct/getdcwd.c index 3dab6d665b5..cc6b5f6a467 100644 --- a/reactos/lib/crt/direct/getdcwd.c +++ b/reactos/lib/crt/direct/getdcwd.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/direct/getdfree.c b/reactos/lib/crt/direct/getdfree.c index 84601c43eeb..fa6e83110bc 100644 --- a/reactos/lib/crt/direct/getdfree.c +++ b/reactos/lib/crt/direct/getdfree.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/direct/getdrive.c b/reactos/lib/crt/direct/getdrive.c index 4074bafbd18..006f9e4e95f 100644 --- a/reactos/lib/crt/direct/getdrive.c +++ b/reactos/lib/crt/direct/getdrive.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include extern int cur_drive; diff --git a/reactos/lib/crt/direct/mkdir.c b/reactos/lib/crt/direct/mkdir.c index bb160d45c68..5aea15fac0b 100644 --- a/reactos/lib/crt/direct/mkdir.c +++ b/reactos/lib/crt/direct/mkdir.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/direct/rmdir.c b/reactos/lib/crt/direct/rmdir.c index 5f89e80ad5e..bdf84d74551 100644 --- a/reactos/lib/crt/direct/rmdir.c +++ b/reactos/lib/crt/direct/rmdir.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/direct/wchdir.c b/reactos/lib/crt/direct/wchdir.c index 1c92c20f22f..3e49d1f851f 100644 --- a/reactos/lib/crt/direct/wchdir.c +++ b/reactos/lib/crt/direct/wchdir.c @@ -1,8 +1,7 @@ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/direct/wgetcwd.c b/reactos/lib/crt/direct/wgetcwd.c index f1e62f4ea70..07454dbf46e 100644 --- a/reactos/lib/crt/direct/wgetcwd.c +++ b/reactos/lib/crt/direct/wgetcwd.c @@ -1,8 +1,8 @@ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/direct/wgetdcwd.c b/reactos/lib/crt/direct/wgetdcwd.c index 4de0744cf2e..ea8d5ed81d9 100644 --- a/reactos/lib/crt/direct/wgetdcwd.c +++ b/reactos/lib/crt/direct/wgetdcwd.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/direct/wmkdir.c b/reactos/lib/crt/direct/wmkdir.c index 21faa789bd9..f6693626cc7 100644 --- a/reactos/lib/crt/direct/wmkdir.c +++ b/reactos/lib/crt/direct/wmkdir.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/direct/wrmdir.c b/reactos/lib/crt/direct/wrmdir.c index 97e7d4b2065..5033e7e75fb 100644 --- a/reactos/lib/crt/direct/wrmdir.c +++ b/reactos/lib/crt/direct/wrmdir.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/float/chgsign.c b/reactos/lib/crt/float/chgsign.c index e2a0c806309..2b0ec60ce8a 100644 --- a/reactos/lib/crt/float/chgsign.c +++ b/reactos/lib/crt/float/chgsign.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/float/clearfp.c b/reactos/lib/crt/float/clearfp.c index 8832b3b447e..bace5d2dde1 100644 --- a/reactos/lib/crt/float/clearfp.c +++ b/reactos/lib/crt/float/clearfp.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/float/cntrlfp.c b/reactos/lib/crt/float/cntrlfp.c index c093d827e64..659eaa8b6e1 100644 --- a/reactos/lib/crt/float/cntrlfp.c +++ b/reactos/lib/crt/float/cntrlfp.c @@ -1,6 +1,6 @@ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include +#include #define X87_CW_IM (1<<0) /* Invalid operation mask */ #define X87_CW_DM (1<<1) /* Denormal operand mask */ diff --git a/reactos/lib/crt/float/copysign.c b/reactos/lib/crt/float/copysign.c index 17bb869ab5c..9a5fe173ca7 100644 --- a/reactos/lib/crt/float/copysign.c +++ b/reactos/lib/crt/float/copysign.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/float/fpclass.c b/reactos/lib/crt/float/fpclass.c index 5dac73d020e..e14a4d72418 100644 --- a/reactos/lib/crt/float/fpclass.c +++ b/reactos/lib/crt/float/fpclass.c @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include #define _FPCLASS_SNAN 0x0001 /* signaling NaN */ diff --git a/reactos/lib/crt/float/fpecode.c b/reactos/lib/crt/float/fpecode.c index bcf5339e7dc..523c02c64a9 100644 --- a/reactos/lib/crt/float/fpecode.c +++ b/reactos/lib/crt/float/fpecode.c @@ -2,8 +2,8 @@ #undef __USE_W32API #endif -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/float/fpreset.c b/reactos/lib/crt/float/fpreset.c index 7322097d958..776438d1f51 100644 --- a/reactos/lib/crt/float/fpreset.c +++ b/reactos/lib/crt/float/fpreset.c @@ -1,4 +1,4 @@ -#include +#include /* diff --git a/reactos/lib/crt/float/isnan.c b/reactos/lib/crt/float/isnan.c index e522fcb97ce..4054f069ad8 100644 --- a/reactos/lib/crt/float/isnan.c +++ b/reactos/lib/crt/float/isnan.c @@ -16,9 +16,9 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/float/logb.c b/reactos/lib/crt/float/logb.c index d71c654ee77..55e65f90b55 100644 --- a/reactos/lib/crt/float/logb.c +++ b/reactos/lib/crt/float/logb.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double _logb (double __x) { diff --git a/reactos/lib/crt/float/nafter.c b/reactos/lib/crt/float/nafter.c index 9b5ddd7cef2..4311b3d2430 100644 --- a/reactos/lib/crt/float/nafter.c +++ b/reactos/lib/crt/float/nafter.c @@ -1,4 +1,4 @@ -#include +#include /* @@ -9,7 +9,7 @@ double _nextafter( double x, double y ) if ( x == y) return x; - if ( isnan(x) || isnan(y) ) + if ( _isnan(x) || _isnan(y) ) return x; return x; diff --git a/reactos/lib/crt/float/scalb.c b/reactos/lib/crt/float/scalb.c index cf2e673f2f0..583b5293fd8 100644 --- a/reactos/lib/crt/float/scalb.c +++ b/reactos/lib/crt/float/scalb.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/float/statfp.c b/reactos/lib/crt/float/statfp.c index e2d2112afb6..73ab3b72410 100644 --- a/reactos/lib/crt/float/statfp.c +++ b/reactos/lib/crt/float/statfp.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/access.c b/reactos/lib/crt/io/access.c index 4a3698a1fec..cbfc7ef3b91 100644 --- a/reactos/lib/crt/io/access.c +++ b/reactos/lib/crt/io/access.c @@ -1,17 +1,26 @@ #include "precomp.h" -#include -#include +#include +#include +#include +#include + #define NDEBUG -#include +#include + +#ifdef _UNICODE + #define _TS S +#else + #define _TS s +#endif /* * @implemented */ -int _access( const char *_path, int _amode ) +int _taccess( const _TCHAR *_path, int _amode ) { - DWORD Attributes = GetFileAttributesA(_path); - DPRINT("_access('%s', %x)\n", _path, _amode); + DWORD Attributes = GetFileAttributes(_path); + DPRINT(MK_STR(_taccess)"('%"_TS"', %x)\n", _path, _amode); if (Attributes == -1) { _dosmaperr(GetLastError()); @@ -23,11 +32,31 @@ int _access( const char *_path, int _amode ) return -1; } } - if ((_amode & D_OK) == D_OK) { - if ((Attributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY) { - __set_errno(EACCES); - return -1; - } - } + return 0; } + + + +/* + * INTERNAL + */ +int access_dirT(const _TCHAR *_path) +{ + DWORD Attributes = GetFileAttributes(_path); + DPRINT(MK_STR(is_dirT)"('%"_TS"')\n", _path); + + if (Attributes == -1) { + _dosmaperr(GetLastError()); + return -1; + } + + if ((Attributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY) + { + __set_errno(EACCES); + return -1; + } + + return 0; +} + diff --git a/reactos/lib/crt/io/chmod.c b/reactos/lib/crt/io/chmod.c index 65f912d3ee3..a9aa73aae5d 100644 --- a/reactos/lib/crt/io/chmod.c +++ b/reactos/lib/crt/io/chmod.c @@ -1,9 +1,13 @@ + #include "precomp.h" -#include -#include +#include +#include +#include +#include #define NDEBUG -#include +#include + #define mode_t int @@ -11,14 +15,14 @@ /* * @implemented */ -int _chmod(const char* filename, mode_t mode) +int _tchmod(const _TCHAR* filename, mode_t mode) { DWORD FileAttributes = 0; BOOLEAN Set = FALSE; - DPRINT("_chmod('%s', %x)\n", filename, mode); + DPRINT(#_tchmod"('%"sT"', %x)\n", filename, mode); - FileAttributes = GetFileAttributesA(filename); + FileAttributes = GetFileAttributes(filename); if ( FileAttributes == -1 ) { _dosmaperr(GetLastError()); return -1; @@ -38,7 +42,7 @@ int _chmod(const char* filename, mode_t mode) Set = TRUE; } } - if (Set && SetFileAttributesA(filename, FileAttributes) == FALSE) { + if (Set && SetFileAttributes(filename, FileAttributes) == FALSE) { _dosmaperr(GetLastError()); return -1; } diff --git a/reactos/lib/crt/io/chsize.c b/reactos/lib/crt/io/chsize.c index 678c0f5e24e..7826a48d3d1 100644 --- a/reactos/lib/crt/io/chsize.c +++ b/reactos/lib/crt/io/chsize.c @@ -1,8 +1,8 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ -#include +#include #define NDEBUG -#include +#include /* * @implemented @@ -10,7 +10,7 @@ int _chsize(int _fd, long size) { DPRINT("_chsize(fd %d, size %d)\n", _fd, size); - if (lseek(_fd, size, 0) == -1) + if (_lseek(_fd, size, 0) == -1) return -1; if (_write(_fd, 0, 0) < 0) return -1; diff --git a/reactos/lib/crt/io/close.c b/reactos/lib/crt/io/close.c index 9388877e866..862a7ea418c 100644 --- a/reactos/lib/crt/io/close.c +++ b/reactos/lib/crt/io/close.c @@ -1,19 +1,22 @@ #include "precomp.h" -#include -#include +#include +#include #define NDEBUG -#include +#include /* * @implemented */ int _close(int _fd) { - DPRINT("_close(fd %d)\n", _fd); - if (_fd == -1) - return -1; - if (CloseHandle(_get_osfhandle(_fd)) == FALSE) - return -1; - return __fileno_close(_fd); + TRACE("_close(%i)", _fd); + + if (_fd == -1) + return(-1); + if (CloseHandle((HANDLE)_get_osfhandle(_fd)) == FALSE) + return(-1); + //return + free_fd(_fd); + return(0); } diff --git a/reactos/lib/crt/io/commit.c b/reactos/lib/crt/io/commit.c index 3eaa4b4e585..1444d4f50b2 100644 --- a/reactos/lib/crt/io/commit.c +++ b/reactos/lib/crt/io/commit.c @@ -1,7 +1,7 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include /* @@ -9,7 +9,7 @@ */ int _commit(int _fd) { - if (! FlushFileBuffers(_get_osfhandle(_fd)) ) { + if (! FlushFileBuffers((HANDLE)_get_osfhandle(_fd)) ) { __set_errno(EBADF); return -1; } diff --git a/reactos/lib/crt/io/create.c b/reactos/lib/crt/io/create.c index b8e0bd0c8c1..cb306855ea0 100644 --- a/reactos/lib/crt/io/create.c +++ b/reactos/lib/crt/io/create.c @@ -1,8 +1,8 @@ -#include -#include +#include +#include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/dup.c b/reactos/lib/crt/io/dup.c index bd9a55e4f6b..c1359631b8d 100644 --- a/reactos/lib/crt/io/dup.c +++ b/reactos/lib/crt/io/dup.c @@ -1,7 +1,7 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include /* @@ -14,7 +14,7 @@ int _dup(int handle) BOOL result; int fd; - hFile = _get_osfhandle(handle); + hFile = (HANDLE)_get_osfhandle(handle); if (hFile == INVALID_HANDLE_VALUE) { __set_errno(EBADF); return -1; @@ -31,7 +31,7 @@ int _dup(int handle) return -1; } - fd = __fileno_alloc(hFile, __fileno_getmode(handle)); + fd = alloc_fd(hFile, __fileno_getmode(handle)); if (fd < 0) { CloseHandle(hFile); diff --git a/reactos/lib/crt/io/dup2.c b/reactos/lib/crt/io/dup2.c index 1571b54543d..9d09e8886ef 100644 --- a/reactos/lib/crt/io/dup2.c +++ b/reactos/lib/crt/io/dup2.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/eof.c b/reactos/lib/crt/io/eof.c index 827df20bf71..bae829e2943 100644 --- a/reactos/lib/crt/io/eof.c +++ b/reactos/lib/crt/io/eof.c @@ -1,4 +1,5 @@ -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/filelen.c b/reactos/lib/crt/io/filelen.c index d54547ad93c..dbc17e4ba7c 100644 --- a/reactos/lib/crt/io/filelen.c +++ b/reactos/lib/crt/io/filelen.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* @@ -8,7 +8,7 @@ */ long _filelength(int _fd) { - DWORD len = GetFileSize(_get_osfhandle(_fd), NULL); + DWORD len = GetFileSize((HANDLE)_get_osfhandle(_fd), NULL); if (len == INVALID_FILE_SIZE) { DWORD oserror = GetLastError(); if (oserror != 0) { diff --git a/reactos/lib/crt/io/fileleni.c b/reactos/lib/crt/io/fileleni.c index 5012eca585b..3b68824c13f 100644 --- a/reactos/lib/crt/io/fileleni.c +++ b/reactos/lib/crt/io/fileleni.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* @@ -10,7 +10,7 @@ __int64 _filelengthi64(int _fd) { DWORD lo_length, hi_length; - lo_length = GetFileSize(_get_osfhandle(_fd), &hi_length); + lo_length = GetFileSize((HANDLE)_get_osfhandle(_fd), &hi_length); if (lo_length == INVALID_FILE_SIZE) { DWORD oserror = GetLastError(); if (oserror != 0) { diff --git a/reactos/lib/crt/io/find.c b/reactos/lib/crt/io/find.c index ba06105fc0b..73b4b4fd6f5 100644 --- a/reactos/lib/crt/io/find.c +++ b/reactos/lib/crt/io/find.c @@ -1,9 +1,178 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include +#include +/* + * @implemented + */ +#ifdef _UNICODE +long +#else +int +#endif +_tfindfirst(const _TCHAR* _name, struct _tfinddata_t* result) +{ + WIN32_FIND_DATA FindFileData; + _TCHAR dir[MAX_PATH]; + long hFindFile; + int len = 0; + + if (_name == NULL || _name[0] == 0) { + len = GetCurrentDirectory(MAX_PATH-4,dir); + if (dir[len-1] != '\\') { + dir[len] = '\\'; + dir[len+1] = 0; + } + _tcscat(dir,_T("*.*")); + } else { + _tcscpy(dir,_name); + } + + hFindFile = (long)FindFirstFile(dir, &FindFileData); + if (hFindFile == -1) { + memset(result,0,sizeof(struct _tfinddata_t)); + _dosmaperr(GetLastError()); + return -1; + } + + result->attrib = FindFileData.dwFileAttributes; + result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); + result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); + result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); + result->size = FindFileData.nFileSizeLow; + _tcsncpy(result->name,FindFileData.cFileName,MAX_PATH); + + // if no wildcard the find file handle can be closed right away + // a return value of 0 can flag this. + + if (!_tcschr(dir,'*') && !_tcschr(dir,'?')) { + _findclose(hFindFile); + return 0; + } + + return hFindFile; +} + +/* + * @implemented + */ +int _tfindnext( +#ifdef _UNICODE + long handle, +#else + int handle, +#endif + struct _tfinddata_t* result) +{ + WIN32_FIND_DATA FindFileData; + + // check no wildcards or invalid handle + if (handle == 0 || handle == -1) + return 0; + + if (!FindNextFile((void*)handle, &FindFileData)) { + _dosmaperr(GetLastError()); + return -1; + } + + result->attrib = FindFileData.dwFileAttributes; + result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); + result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); + result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); + result->size = FindFileData.nFileSizeLow; + _tcsncpy(result->name,FindFileData.cFileName, MAX_PATH); + + return 0; +} + + +/* + * @implemented + */ +long _tfindfirsti64(const _TCHAR *_name, struct _tfinddatai64_t *result) +{ + WIN32_FIND_DATA FindFileData; + _TCHAR dir[MAX_PATH]; + long hFindFile; + int len = 0; + + if ( _name == NULL || _name[0] == 0 ) + { + len = GetCurrentDirectory(MAX_PATH-4,dir); + if (dir[len-1] != '\\') + { + dir[len] = '\\'; + dir[len+1] = 0; + } + _tcscat(dir, _T("*.*")); + } + else + _tcscpy(dir, _name); + + hFindFile = (long)FindFirstFile(dir, &FindFileData); + if (hFindFile == -1) + { + memset(result,0,sizeof(struct _tfinddatai64_t)); + _dosmaperr(GetLastError()); + return -1; + } + + result->attrib = FindFileData.dwFileAttributes; + result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); + result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); + result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); + result->size = + (((__int64)FindFileData.nFileSizeLow)<<32) + FindFileData.nFileSizeLow; + _tcsncpy(result->name,FindFileData.cFileName,MAX_PATH); + + // if no wildcard the find file handle can be closed right away + // a return value of 0 can flag this. + + if (!_tcschr(dir,'*') && !_tcschr(dir,'?')) { + _findclose(hFindFile); + return 0; + } + return hFindFile; +} + +//_CRTIMP long __cdecl _findfirsti64(const char*, struct _finddatai64_t*); +//_CRTIMP int __cdecl _findnexti64(long, struct _finddatai64_t*); + + +/* + * @implemented + */ +int _tfindnexti64(long handle, struct _tfinddatai64_t *result) +{ + WIN32_FIND_DATA FindFileData; + + // check no wildcards or invalid handle + if (handle == 0 || handle == -1) + return 0; + + if (!FindNextFile((HANDLE)handle, &FindFileData)) { + _dosmaperr(GetLastError()); + return -1; + } + + result->attrib = FindFileData.dwFileAttributes; + result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); + result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); + result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); + result->size = + (((__int64)FindFileData.nFileSizeLow)<<32) + FindFileData.nFileSizeLow; + _tcsncpy(result->name,FindFileData.cFileName,MAX_PATH); + + return 0; +} + + + +#ifndef _UNICODE + /* * @implemented */ @@ -15,75 +184,4 @@ int _findclose(int handle) return FindClose((void*)handle); } -/* - * @implemented - */ -int _findfirst(const char* _name, struct _finddata_t* result) -{ - WIN32_FIND_DATAA FindFileData; - char dir[MAX_PATH]; - long hFindFile; - int len = 0; - - if (_name == NULL || _name[0] == 0) { - len = GetCurrentDirectoryA(MAX_PATH-4,dir); - if (dir[len-1] != '\\') { - dir[len] = '\\'; - dir[len+1] = 0; - } - strcat(dir,"*.*"); - } else { - strcpy(dir,_name); - } - - hFindFile = (long)FindFirstFileA(dir, &FindFileData); - if (hFindFile == -1) { - memset(result,0,sizeof(struct _finddata_t)); - _dosmaperr(GetLastError()); - return -1; - } - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = FindFileData.nFileSizeLow; - strncpy(result->name,FindFileData.cFileName,MAX_PATH); - - // if no wildcard the find file handle can be closed right away - // a return value of 0 can flag this. - - if (!strchr(dir,'*') && !strchr(dir,'?')) { - _findclose(hFindFile); - return 0; - } - - return hFindFile; -} - -/* - * @implemented - */ -int _findnext(int handle, struct _finddata_t* result) -{ - WIN32_FIND_DATAA FindFileData; - - // check no wildcards or invalid handle - if (handle == 0 || handle == -1) - return 0; - - if (!FindNextFileA((void*)handle, &FindFileData)) { - _dosmaperr(GetLastError()); - return -1; - } - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = FindFileData.nFileSizeLow; - strncpy(result->name,FindFileData.cFileName, MAX_PATH); - - return 0; -} - +#endif diff --git a/reactos/lib/crt/io/fmode.c b/reactos/lib/crt/io/fmode.c index 2306d60a40f..378be8025d5 100644 --- a/reactos/lib/crt/io/fmode.c +++ b/reactos/lib/crt/io/fmode.c @@ -1,14 +1,14 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include -int __fmode = O_TEXT; +int _fmode = O_TEXT; /* * @implemented */ int *__p__fmode(void) { - return &__fmode; + return &_fmode; } diff --git a/reactos/lib/crt/io/isatty.c b/reactos/lib/crt/io/isatty.c index a1d67b85289..9dae86c800c 100644 --- a/reactos/lib/crt/io/isatty.c +++ b/reactos/lib/crt/io/isatty.c @@ -1,15 +1,15 @@ -#include -#include +#include +#include #define NDEBUG -#include +#include /* * @implemented */ int _isatty( int fd ) { - struct stat buf; + struct _stat buf; DPRINT("_isatty(fd %d)\n", fd); if (_fstat (fd, &buf) < 0) return 0; diff --git a/reactos/lib/crt/io/locking.c b/reactos/lib/crt/io/locking.c index 6d82811ef21..9ea0f3530b1 100644 --- a/reactos/lib/crt/io/locking.c +++ b/reactos/lib/crt/io/locking.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* @@ -11,7 +11,7 @@ int _locking(int _fd, int mode, long nbytes) long offset = _lseek(_fd, 0L, 1); if (offset == -1L) return -1; - if (!LockFile(_get_osfhandle(_fd),offset,0,nbytes,0)) { + if (!LockFile((HANDLE)_get_osfhandle(_fd),offset,0,nbytes,0)) { _dosmaperr(GetLastError()); return -1; } diff --git a/reactos/lib/crt/io/lseek.c b/reactos/lib/crt/io/lseek.c index 2cd2599ea44..68c995fb287 100644 --- a/reactos/lib/crt/io/lseek.c +++ b/reactos/lib/crt/io/lseek.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include /* @@ -8,7 +8,7 @@ */ long _lseek(int _fildes, long _offset, int _whence) { - DWORD newpos = SetFilePointer((HANDLE)filehnd(_fildes), _offset, NULL, _whence); + DWORD newpos = SetFilePointer((HANDLE)fdinfo(_fildes)->hFile, _offset, NULL, _whence); if (newpos == INVALID_SET_FILE_POINTER) { DWORD oserror = GetLastError(); if (oserror != 0) { diff --git a/reactos/lib/crt/io/lseeki64.c b/reactos/lib/crt/io/lseeki64.c index 78bfa0507d9..c5fbb3bdaff 100644 --- a/reactos/lib/crt/io/lseeki64.c +++ b/reactos/lib/crt/io/lseeki64.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include //#define SETFILEPOINTEREX_AVAILABLE @@ -19,7 +19,7 @@ __int64 _lseeki64(int _fildes, __int64 _offset, int _whence) // __set_errno ( EBADF ); // return -1L; // } - if (SetFilePointerEx((HANDLE)filehnd(_fildes), offset, &new_pos, _whence)) { + if (SetFilePointerEx((HANDLE)fdinfo(_fildes)->hFile, offset, &new_pos, _whence)) { } else { _dosmaperr(error); return -1L; @@ -34,7 +34,7 @@ __int64 _lseeki64(int _fildes, __int64 _offset, int _whence) LARGE_INTEGER offset; offset.QuadPart = _offset; - offset.u.LowPart = SetFilePointer((HANDLE)filehnd(_fildes), + offset.u.LowPart = SetFilePointer((HANDLE)fdinfo(_fildes)->hFile, offset.u.LowPart, &offset.u.HighPart, _whence); return ((((__int64)offset.u.HighPart) << 32) + offset.u.LowPart); diff --git a/reactos/lib/crt/io/mktemp.c b/reactos/lib/crt/io/mktemp.c index b895fa0655a..e54d95fb331 100644 --- a/reactos/lib/crt/io/mktemp.c +++ b/reactos/lib/crt/io/mktemp.c @@ -13,12 +13,12 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/open.c b/reactos/lib/crt/io/open.c index 1921fa4ef06..79bb40bd957 100644 --- a/reactos/lib/crt/io/open.c +++ b/reactos/lib/crt/io/open.c @@ -8,87 +8,139 @@ * UPDATE HISTORY: * 28/12/98: Created */ - +/* + * Some stuff taken from active perl: perl\win32.c (ioinfo stuff) + * + * (c) 1995 Microsoft Corporation. All rights reserved. + * Developed by hip communications inc., http://info.hip.com/info/ + * Portions (c) 1993 Intergraph Corporation. All rights reserved. + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + */ +/* + * Some functions taken from/based on wine\dlls\msvcrt\file.c: + * split_oflags + * _open_osfhandle + * many more... + * + * Copyright 1996,1998 Marcus Meissner + * Copyright 1996 Jukka Iivonen + * Copyright 1997,2000 Uwe Bonnes + * Copyright 2000 Jon Griffiths + * Copyright 2004 Eric Pouech + * Copyright 2004 Juan Lang + */ + // rember to interlock the allocation of fileno when making this thread safe // possibly store extra information at the handle #include "precomp.h" + #if !defined(NDEBUG) && defined(DBG) -#include +#include #endif -#include -#include -#include -#include -#include -#include -#include -#include + +#include +#include +#include +#include +#include +#include +#include +#include #define NDEBUG -#include +#include -//#define _OLD_BUILD_ -#define STD_AUX_HANDLE 3 -#define STD_PRINTER_HANDLE 4 +FDINFO first_bucket[FDINFO_ENTRIES_PER_BUCKET]; +FDINFO* __pioinfo[FDINFO_BUCKETS] = {first_bucket}; + + +/* This critical section protects the tables MSVCRT_fdesc and MSVCRT_fstreams, + * and their related indexes, MSVCRT_fdstart, MSVCRT_fdend, + * and MSVCRT_stream_idx, from race conditions. + * It doesn't protect against race conditions manipulating the underlying files + * or flags; doing so would probably be better accomplished with per-file + * protection, rather than locking the whole table for every change. + */ +static CRITICAL_SECTION g_file_cs; +#define LOCK_FILES() do { EnterCriticalSection(&g_file_cs); } while (0) +#define UNLOCK_FILES() do { LeaveCriticalSection(&g_file_cs); } while (0) ///////////////////////////////////////// -#if 0 // from perl sources -#ifndef _INTPTR_T_DEFINED -typedef int intptr_t; -#define _INTPTR_T_DEFINED -#endif - -#ifndef _UINTPTR_T_DEFINED -typedef unsigned int uintptr_t; -#define _UINTPTR_T_DEFINED -#endif +static int g_fdstart = 3; /* first unallocated fd */ +static int g_fdend = 3; /* highest allocated fd */ /* - * Control structure for lowio file handles + * INTERNAL */ -typedef struct { - intptr_t osfhnd;/* underlying OS file HANDLE */ - char osfile; /* attributes of file (e.g., open in text mode?) */ - char pipech; /* one char buffer for handles opened on pipes */ - int lockinitflag; - //CRITICAL_SECTION lock; -} ioinfo; - -/* - * Array of arrays of control structures for lowio files. - */ -//ioinfo* __pioinfo[]; -//ioinfo* __pioinfo[] = { NULL }; - -#endif -///////////////////////////////////////// - -typedef struct _fileno_modes_type + /* +static inline FD_INFO* fdinfo(int fd) { - HANDLE hFile; - int mode; - char pipech; /* one char buffer for handles opened on pipes */ - int lockinitflag; - /*CRITICAL_SECTION*/int lock; - int fd; -} fileno_modes_type; + FD_INFO* bucket = __pioinfo[fd >> FDINFO_ENTRIES_PER_BUCKET_SHIFT]; + if (!bucket){ + bucket = alloc_init_bucket(fd); + } + return bucket + (fd & (FDINFO_ENTRIES_PER_BUCKET - 1)); +} +*/ -//static fileno_modes_type* fileno_modes = NULL; -fileno_modes_type* __pioinfo = NULL; -///////////////////////////////////////// -int maxfno = 0; +/* + * INTERNAL + */ +inline BOOL is_valid_fd(int fd) +{ + BOOL b = (fd >= 0 && fd < g_fdend && (fdinfo(fd)->fdflags & FOPEN)); + + if (!b){ + DPRINT1("not valid fd %i, g_fdend %i, fdinfo %x, bucket %x, fdflags %x\n", + fd,g_fdend,fdinfo(fd),fdinfo_bucket(fd),fdinfo(fd)->fdflags); + + } + + return b; +} +/* + * INTERNAL + */ +char split_oflags(int oflags) +{ + char fdflags = 0; + + if (oflags & _O_APPEND) fdflags |= FAPPEND; + + if (oflags & _O_BINARY) ; + else if (oflags & _O_TEXT) fdflags |= FTEXT; + else if (_fmode& _O_BINARY) ; + else fdflags |= FTEXT; /* default to TEXT*/ + + if (oflags & _O_NOINHERIT) fdflags |= FNOINHERIT; + + if (oflags & ~(_O_BINARY|_O_TEXT|_O_APPEND|_O_TRUNC| + _O_EXCL|_O_CREAT|_O_RDWR|_O_WRONLY| + _O_TEMPORARY|_O_NOINHERIT)) + DPRINT1(":unsupported oflags 0x%04x\n",oflags); + + return fdflags; +} + + + +/* + * INTERNAL + */ char __is_text_file(FILE* p) { - if ( p == NULL || __pioinfo == NULL ) + if ( p == NULL || fdinfo_bucket((p)->_file) == NULL ) return FALSE; - return (!((p)->_flag&_IOSTRG) && (__pioinfo[(p)->_file].mode&O_TEXT)); + return (!((p)->_flag&_IOSTRG) && (fdinfo((p)->_file)->fdflags & FTEXT)); } /* @@ -112,7 +164,9 @@ int _open(const char* _path, int _oflag,...) pmode = va_arg(arg, int); #endif -// DPRINT("_open('%s', %x, (%x))\n", _path, _oflag, pmode); + + TRACE("_open('%s', %x, (%x))\n", _path, _oflag); + if ((_oflag & S_IREAD ) == S_IREAD) dwShareMode = FILE_SHARE_READ; @@ -188,155 +242,304 @@ int _open(const char* _path, int _oflag,...) NULL); if (hFile == (HANDLE)-1) { _dosmaperr(GetLastError()); - return -1; + return( -1); } DPRINT("OK\n"); if (!(_oflag & (_O_TEXT|_O_BINARY))) { - _oflag |= __fmode; + _oflag |= _fmode; } - return __fileno_alloc(hFile,_oflag); + return(alloc_fd(hFile, split_oflags(_oflag))); } -int __fileno_alloc(HANDLE hFile, int mode) + +/* + * INTERNAL + */ +static void init_bucket(FDINFO* entry) { - int i; - /* Check for bogus values */ - if (hFile < 0) - return -1; - - for (i = 5; i < maxfno; i++) { - if (__pioinfo[i].fd == -1 ) { - __pioinfo[i].fd = i; - __pioinfo[i].mode = mode; - __pioinfo[i].hFile = hFile; - return i; - } - } - - /* See if we need to expand the tables. Check this BEFORE it might fail, - so that when we hit the count'th request, we've already up'd it. */ - if (i == maxfno) { - int oldcount = maxfno; - fileno_modes_type* old_fileno_modes = __pioinfo; - maxfno += 255; - __pioinfo = (fileno_modes_type*)malloc(maxfno * sizeof(fileno_modes_type)); - if (old_fileno_modes != NULL) { - memcpy(__pioinfo, old_fileno_modes, oldcount * sizeof(fileno_modes_type)); - free(old_fileno_modes); - } - memset(__pioinfo + oldcount, -1, (maxfno-oldcount)*sizeof(fileno_modes_type)); - } - - /* Fill in the value */ - __pioinfo[i].fd = i; - __pioinfo[i].mode = mode; - __pioinfo[i].hFile = hFile; - return i; + int i; + + for(i=0; + i < FDINFO_ENTRIES_PER_BUCKET; + i++, entry++) + { + entry->hFile = INVALID_HANDLE_VALUE; + entry->fdflags = 0; + entry->pipechar = LF; + entry->lockinitflag = 0; + } } -void* filehnd(int fileno) +/* + * INTERNAL + */ +static BOOL alloc_init_bucket(int fd) { - if (fileno < 0 || fileno >= maxfno || __pioinfo[fileno].fd == -1) { - return (void*)-1; - } - return __pioinfo[fileno].hFile; + fdinfo_bucket(fd) = malloc(FDINFO_ENTRIES_PER_BUCKET * sizeof(FDINFO)); + if (!fdinfo_bucket(fd)) return FALSE; + + init_bucket(fdinfo_bucket(fd)); + + return TRUE; } -int __fileno_setmode(int _fd, int _newmode) + + + +/* + * INTERNAL + * Allocate an fd slot from a Win32 HANDLE, starting from fd + * caller must hold the files lock + */ +static int alloc_fd_from(HANDLE hand, char flag, int fd) { - int m; - if (_fd < 0 || _fd >= maxfno) { + + if (fd >= FDINFO_ENTRIES) + { + DPRINT1("files exhausted!\n"); + return -1; + } + + if (!fdinfo_bucket(fd)) + { + if (!alloc_init_bucket(fd)){ + //errno = ENOMEM + return -1; + } + } + + fdinfo(fd)->hFile = hand; + fdinfo(fd)->fdflags = FOPEN | (flag & (FNOINHERIT | FAPPEND | FTEXT)); + fdinfo(fd)->pipechar = LF; + fdinfo(fd)->lockinitflag = 0; + //fdinfo(fd)->lock + + /* locate next free slot */ + if (fd == g_fdstart && fd == g_fdend) + { + g_fdstart = g_fdend + 1; + } + else + { +#if 0 /* alternate (untested) impl. maybe a tiny bit faster? -Gunnar */ + int i, bidx; + + for (bidx = fdinfo_bucket_idx(g_fdstart); bidx < FDINFO_BUCKETS && __pioinfo[bidx]; bidx++) + { + for (i = fdinfo_bucket_entry_idx(g_fdstart); + g_fdstart < g_fdend && fdinfo(g_fdstart)->fdflags & FOPEN && i < FDINFO_BUCKET_ENTRIES; + i++) + { + g_fdstart++; + } + } +#else + + while (g_fdstart < g_fdend && + fdinfo_bucket(g_fdstart) && + (fdinfo(g_fdstart)->fdflags & FOPEN)) + { + g_fdstart++; + } +#endif + } + + /* update last fd in use */ + if (fd >= g_fdend) + g_fdend = fd + 1; + + /* alloc more fdinfo buckets by demand. + * FIXME: should we dealloc buckets when they become unused also? */ + if (!fdinfo_bucket(g_fdstart) && g_fdstart < FDINFO_ENTRIES) + { + alloc_init_bucket(g_fdstart); + } + + DPRINT("fdstart is %d, fdend is %d\n", g_fdstart, g_fdend); + + switch (fd) + { + case 0: SetStdHandle(STD_INPUT_HANDLE, hand); break; + case 1: SetStdHandle(STD_OUTPUT_HANDLE, hand); break; + case 2: SetStdHandle(STD_ERROR_HANDLE, hand); break; + } + + return fd; +} + + +/* + * INTERNAL: Allocate an fd slot from a Win32 HANDLE + */ +int alloc_fd(HANDLE hand, char flag) +{ + int ret; + + LOCK_FILES(); + +// TRACE(":handle (%p) allocating fd (%d)\n",hand,MSVCRT_fdstart); + ret = alloc_fd_from(hand, flag, g_fdstart); + + UNLOCK_FILES(); + return ret; +} + + + +/* + * INTERNAL + */ +char __fileno_getmode(int fd) +{ + if (!is_valid_fd(fd)) { __set_errno(EBADF); return -1; } - m = __pioinfo[_fd].mode; - __pioinfo[_fd].mode = _newmode; - return m; -} - -int __fileno_getmode(int _fd) -{ - if (_fd < 0 || _fd >= maxfno) { - __set_errno(EBADF); - return -1; - } - return __pioinfo[_fd].mode; + return fdinfo(fd)->fdflags; } -int __fileno_close(int _fd) +/* + * INTERNAL + */ +void free_fd(int fd) { - if (_fd < 0 || _fd >= maxfno) { - __set_errno(EBADF); - return -1; - } - __pioinfo[_fd].fd = -1; - __pioinfo[_fd].hFile = (HANDLE)-1; - return 0; + LOCK_FILES(); + + + fdinfo(fd)->hFile = INVALID_HANDLE_VALUE; + fdinfo(fd)->fdflags = 0; + + if (fd < 3) /* don't use 0,1,2 for user files */ + { + switch (fd) + { + case 0: SetStdHandle(STD_INPUT_HANDLE, NULL); break; + case 1: SetStdHandle(STD_OUTPUT_HANDLE, NULL); break; + case 2: SetStdHandle(STD_ERROR_HANDLE, NULL); break; + } + } + else + { + if (fd == g_fdend - 1) + g_fdend--; + + if (fd < g_fdstart) + g_fdstart = fd; + } + + + UNLOCK_FILES(); } /* * @implemented */ -int _open_osfhandle(void* osfhandle, int flags) +int _open_osfhandle(long osfhandle, int oflags) { - return __fileno_alloc((HANDLE)osfhandle, flags); + /* + PREV: + The _open_osfhandle() function in MSVCRT is expected to take the absence + of either _O_TEXT or _O_BINARY to mean _O_BINARY. Currently it defaults to + _O_TEXT. + + An example of this is MFC's CStdioFile::Open in binary mode - it passes flags + of 0 when it wants to write a binary file - under WINE we do text mode conversions! + + The attached patch ensures that _O_BINARY is set if neither is set in the passed-in +flags. + + + * file, so set the write flag. It also only sets _O_TEXT if it wants + * text - it never sets _O_BINARY. + */ + /* FIXME: handle more flags */ +/* + flags |= MSVCRT__IOREAD|MSVCRT__IOWRT; + if ( !( flags & _O_TEXT ) ) flags |= _O_BINARY; + + fd = msvcrt_alloc_fd((HANDLE)hand,flags); + TRACE(":handle (%ld) fd (%d) flags 0x%08x\n",hand,fd, flags); +*/ + /* MSVCRT__O_RDONLY (0) always matches, so set the read flag + * MFC's CStdioFile clears O_RDONLY (0)! if it wants to write to the + * file, so set the write flag. It also only sets MSVCRT__O_TEXT if it wants + * text - it never sets MSVCRT__O_BINARY. + */ + /* FIXME: handle more flags */ + /* + LAG TEST SOM TESTER UT ALT DETTE flag tingern + */ + if (!(oflags & (_O_BINARY | _O_TEXT)) && (_fmode & _O_BINARY)) + oflags |= _O_BINARY; + else + oflags |= _O_TEXT; + + return alloc_fd((HANDLE)osfhandle, split_oflags(oflags)); } /* * @implemented */ -void* _get_osfhandle( int fileno ) +long _get_osfhandle(int fd) { - return filehnd(fileno); + TRACE("_get_osfhandle(%i)",fd); + + if (!is_valid_fd(fd)) { + return( -1 ); + } + return( (long)fdinfo(fd)->hFile ); } + + +/* + * INTERNAL + */ int __fileno_dup2(int handle1, int handle2) { HANDLE hProcess; BOOL result; - if (handle1 >= maxfno || handle1 < 0 || handle2 >= maxfno || handle2 < 0) { + + if (handle1 >= FDINFO_ENTRIES || handle1 < 0 || handle2 >= FDINFO_ENTRIES || handle2 < 0) { __set_errno(EBADF); return -1; } - if (__pioinfo[handle1].fd == -1) { +// if (_pioinfo[handle1]->fd == -1) { + if (fdinfo(handle1)->hFile == INVALID_HANDLE_VALUE) { __set_errno(EBADF); return -1; } if (handle1 == handle2) return handle1; - if (__pioinfo[handle2].fd != -1) { +// if (_pioinfo[handle2]->fd != -1) { + if (fdinfo(handle2)->hFile != INVALID_HANDLE_VALUE) { _close(handle2); } hProcess = GetCurrentProcess(); result = DuplicateHandle(hProcess, - __pioinfo[handle1].hFile, + fdinfo(handle1)->hFile, hProcess, - &__pioinfo[handle2].hFile, + &fdinfo(handle2)->hFile, 0, TRUE, DUPLICATE_SAME_ACCESS); if (result) { - __pioinfo[handle2].fd = handle2; - __pioinfo[handle2].mode = __pioinfo[handle1].mode; +// _pioinfo[handle2]->fd = handle2; + fdinfo(handle2)->fdflags = fdinfo(handle1)->fdflags; switch (handle2) { case 0: - SetStdHandle(STD_INPUT_HANDLE, __pioinfo[handle2].hFile); + SetStdHandle(STD_INPUT_HANDLE, fdinfo(handle2)->hFile); break; case 1: - SetStdHandle(STD_OUTPUT_HANDLE, __pioinfo[handle2].hFile); + SetStdHandle(STD_OUTPUT_HANDLE, fdinfo(handle2)->hFile); break; case 2: - SetStdHandle(STD_ERROR_HANDLE, __pioinfo[handle2].hFile); - break; - case 3: - SetStdHandle(STD_AUX_HANDLE, __pioinfo[handle2].hFile); - break; - case 4: - SetStdHandle(STD_AUX_HANDLE, __pioinfo[handle2].hFile); + SetStdHandle(STD_ERROR_HANDLE, fdinfo(handle2)->hFile); break; } + return handle1; } else { __set_errno(EMFILE); // Is this the correct error no.? @@ -347,77 +550,172 @@ int __fileno_dup2(int handle1, int handle2) void* malloc(size_t sizeObject); + + +/* + * INTERNAL + */ BOOL __fileno_init(void) { - ULONG count = 0, i; - HANDLE* pFile; - char* pmode; - STARTUPINFOA StInfo; + STARTUPINFOA si; + int i; - GetStartupInfoA(&StInfo); - if (StInfo.lpReserved2 && StInfo.cbReserved2 >= sizeof(ULONG)) { - count = *(ULONG*)StInfo.lpReserved2; -/* - if (sizeof(ULONG) + count * (sizeof(HANDLE) + sizeof(char)) != StInfo.cbReserved2) - { - count = 0; - } -*/ - } - maxfno = 255; - while(count >= maxfno) - maxfno += 255; + init_bucket(first_bucket); + GetStartupInfoA(&si); + + if (si.cbReserved2 != 0 && si.lpReserved2 != NULL) { -#ifdef _OLD_BUILD_ - // why was this here ???? - robd. - int result; - result = malloc(50); -#endif - } - //__pioinfo = (fileno_modes_type*)malloc(sizeof(fileno_modes_type) * maxfno); - __pioinfo = malloc(sizeof(fileno_modes_type) * maxfno); - if (__pioinfo == NULL) { - return FALSE; - } - memset(__pioinfo, -1, sizeof(fileno_modes_type) * maxfno); - if (count) { - pFile = (HANDLE*)(StInfo.lpReserved2 + sizeof(ULONG) + count * sizeof(char)); - pmode = (char*)(StInfo.lpReserved2 + sizeof(ULONG)); - for (i = 0; i < count; i++) { - if (*pFile != INVALID_HANDLE_VALUE) { - __pioinfo[i].fd = i; - __pioinfo[i].mode = ((*pmode << 8) & (_O_TEXT|_O_BINARY)) | (*pmode & _O_ACCMODE); - __pioinfo[i].hFile = *pFile; - } - pFile++; - pmode++; + char* fdflags_ptr; + HANDLE* handle_ptr; + + g_fdend = *(unsigned*)si.lpReserved2; + + fdflags_ptr= (char*)(si.lpReserved2 + sizeof(unsigned)); + handle_ptr = (HANDLE*)(fdflags_ptr + g_fdend * sizeof(char)); + + g_fdend = min(g_fdend, FDINFO_ENTRIES); + for (i = 0; i < g_fdend; i++) + { + if (!fdinfo_bucket(i)) + { + if (!alloc_init_bucket(i)){ + /* FIXME: free other buckets? */ + return FALSE; + } } + + if ((*fdflags_ptr & FOPEN) && *handle_ptr != INVALID_HANDLE_VALUE) + { + fdinfo(i)->fdflags = *fdflags_ptr; + fdinfo(i)->hFile = *handle_ptr; + } +/* + else + { + fdinfo(i)->fdflags = 0; + fdinfo(i)->hFile = INVALID_HANDLE_VALUE; + } +*/ + fdflags_ptr++; handle_ptr++; + } + for (g_fdstart = 3; g_fdstart < g_fdend; g_fdstart++) + if (fdinfo(g_fdstart)->hFile == INVALID_HANDLE_VALUE) break; } - if (__pioinfo[0].fd == -1) { - __pioinfo[0].fd = 0; - __pioinfo[0].hFile = GetStdHandle(STD_INPUT_HANDLE); - __pioinfo[0].mode = _O_RDONLY|_O_TEXT; + + InitializeCriticalSection(&g_file_cs); + + + if (fdinfo(0)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(0)->fdflags & FOPEN)) { + fdinfo(0)->hFile = GetStdHandle(STD_INPUT_HANDLE); + fdinfo(0)->fdflags = FOPEN|FTEXT; } - if (__pioinfo[1].fd == -1) { - __pioinfo[1].fd = 1; - __pioinfo[1].hFile = GetStdHandle(STD_OUTPUT_HANDLE); - __pioinfo[1].mode = _O_WRONLY|_O_TEXT; + if (fdinfo(1)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(1)->fdflags & FOPEN)) { + fdinfo(1)->hFile = GetStdHandle(STD_OUTPUT_HANDLE); + fdinfo(1)->fdflags = FOPEN|FTEXT; } - if (__pioinfo[2].fd == -1) { - __pioinfo[2].fd = 2; - __pioinfo[2].hFile = GetStdHandle(STD_ERROR_HANDLE); - __pioinfo[2].mode = _O_WRONLY|_O_TEXT; + if (fdinfo(2)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(2)->fdflags & FOPEN)) { + fdinfo(2)->hFile = GetStdHandle(STD_ERROR_HANDLE); + fdinfo(2)->fdflags = FOPEN|FTEXT; } - if (__pioinfo[3].fd == -1) { - __pioinfo[3].fd = 3; - __pioinfo[3].hFile = GetStdHandle(STD_AUX_HANDLE); - __pioinfo[3].mode = _O_WRONLY|_O_TEXT; - } - if (__pioinfo[4].fd == -1) { - __pioinfo[4].fd = 4; - __pioinfo[4].hFile = GetStdHandle(STD_PRINTER_HANDLE); - __pioinfo[4].mode = _O_WRONLY|_O_TEXT; + + + + + for (i = 0; i < 3; i++) + { + /* FILE structs for stdin/out/err are static and never deleted */ +// MSVCRT_fstreams[i] = &MSVCRT__iob[i]; } +// MSVCRT_stream_idx = 3; + return TRUE; } + + + +/* INTERNAL: Create an inheritance data block (for spawned process) + * The inheritance block is made of: + * 00 int nb of file descriptor (NBFD) + * 04 char file flags (wxflag): repeated for each fd + * 4+NBFD HANDLE file handle: repeated for each fd + */ +unsigned create_io_inherit_block(STARTUPINFOA* si) +{ + int fd; + char* fdflags_ptr; + HANDLE* handle_ptr; + + TRACE("create_io_inherit_block(%x)",si); + + si->cbReserved2 = sizeof(unsigned) + (sizeof(char) + sizeof(HANDLE)) * g_fdend; + si->lpReserved2 = calloc(si->cbReserved2, 1); + if (!si->lpReserved2) + { + si->cbReserved2 = 0; + return( FALSE ); + } + fdflags_ptr = (char*)si->lpReserved2 + sizeof(unsigned); + handle_ptr = (HANDLE*)(fdflags_ptr + g_fdend * sizeof(char)); + + *(unsigned*)si->lpReserved2 = g_fdend; + for (fd = 0; fd < g_fdend; fd++) + { + /* to be inherited, we need it to be open, and that DONTINHERIT isn't set */ + if ((fdinfo(fd)->fdflags & (FOPEN | FNOINHERIT)) == FOPEN) + { + *fdflags_ptr = fdinfo(fd)->fdflags; + *handle_ptr = fdinfo(fd)->hFile; + } + else + { + *fdflags_ptr = 0; + *handle_ptr = INVALID_HANDLE_VALUE; + } + fdflags_ptr++; handle_ptr++; + } + return( TRUE ); +} + + + + +/* + * @implemented + */ +int _setmode(int fd, int newmode) +{ + int prevmode; + + TRACE("_setmode(%d, %d)", fd, newmode); + + if (!is_valid_fd(fd)) + { + DPRINT1("_setmode: inval fd (%d)\n",fd); + //errno = EBADF; + return(-1); + } + + if (newmode & ~(_O_TEXT|_O_BINARY)) + { + DPRINT1("_setmode: fd (%d) mode (0x%08x) unknown\n",fd,newmode); + /* FIXME: Should we fail with EINVAL here? */ + } + + prevmode = fdinfo(fd)->fdflags & FTEXT ? _O_TEXT : _O_BINARY; + + if ((newmode & _O_TEXT) == _O_TEXT) + { + fdinfo(fd)->fdflags |= FTEXT; + } + else + { + /* FIXME: If both _O_TEXT and _O_BINARY are set, we get here. + * Should we fail with EINVAL instead? -Gunnar + */ + fdinfo(fd)->fdflags &= ~FTEXT; + } + + return(prevmode); +} + diff --git a/reactos/lib/crt/io/pipe.c b/reactos/lib/crt/io/pipe.c index d0fdb0247a7..fec88f74bf2 100644 --- a/reactos/lib/crt/io/pipe.c +++ b/reactos/lib/crt/io/pipe.c @@ -10,9 +10,12 @@ */ #include "precomp.h" -#include -#include -#include +#include +#include +#include + +#define NDEBUG +#include /* @@ -23,29 +26,31 @@ int _pipe(int _fildes[2], unsigned int size, int mode ) HANDLE hReadPipe, hWritePipe; SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE}; + TRACE("_pipe((%i,%i), %ui, %i)", _fildes[0], _fildes[1], size, mode); + if (mode & O_NOINHERIT) sa.bInheritHandle = FALSE; if (!CreatePipe(&hReadPipe,&hWritePipe,&sa,size)) { _dosmaperr(GetLastError()); - return -1; + return( -1); } - if ((_fildes[0] = __fileno_alloc(hReadPipe, mode)) < 0) + if ((_fildes[0] = alloc_fd(hReadPipe, split_oflags(mode))) < 0) { CloseHandle(hReadPipe); CloseHandle(hWritePipe); __set_errno(EMFILE); - return -1; + return(-1); } - if ((_fildes[1] = __fileno_alloc(hWritePipe, mode)) < 0) + if ((_fildes[1] = alloc_fd(hWritePipe, split_oflags(mode))) < 0) { - __fileno_close(_fildes[0]); + free_fd(_fildes[0]); CloseHandle(hReadPipe); CloseHandle(hWritePipe); __set_errno(EMFILE); - return -1; + return(-1); } - return 0; + return(0); } diff --git a/reactos/lib/crt/io/read.c b/reactos/lib/crt/io/read.c index 6e9229df1e8..a89275bf08a 100644 --- a/reactos/lib/crt/io/read.c +++ b/reactos/lib/crt/io/read.c @@ -13,16 +13,16 @@ */ #include -#include -#include +#include +#include #define NDEBUG -#include +#include /* * @implemented */ -size_t _read(int _fd, void *_buf, size_t _nbyte) +int _read(int _fd, void *_buf, unsigned int _nbyte) { DWORD _rbyte = 0, nbyte = _nbyte; char *bufp = (char*)_buf; @@ -35,7 +35,7 @@ size_t _read(int _fd, void *_buf, size_t _nbyte) if(_nbyte == 0) return 0; - hfile = _get_osfhandle(_fd); + hfile = (HANDLE)_get_osfhandle(_fd); istext = __fileno_getmode(_fd) & O_TEXT; /* read data */ diff --git a/reactos/lib/crt/io/setmode.c b/reactos/lib/crt/io/setmode.c index a64c9394fc7..b774018e606 100644 --- a/reactos/lib/crt/io/setmode.c +++ b/reactos/lib/crt/io/setmode.c @@ -9,19 +9,11 @@ * 28/12/98: Created */ -#include -#include -#include +#include +#include +#include #define NDEBUG -#include +#include -/* - * @implemented - */ -int _setmode(int _fd, int _newmode) -{ - DPRINT("_setmod(fd %d, newmode %x)\n", _fd, _newmode); - return __fileno_setmode(_fd, _newmode); -} diff --git a/reactos/lib/crt/io/sopen.c b/reactos/lib/crt/io/sopen.c index a28f374c256..d454f08a165 100644 --- a/reactos/lib/crt/io/sopen.c +++ b/reactos/lib/crt/io/sopen.c @@ -1,10 +1,11 @@ -#include +#include /* * @implemented */ -int _sopen(char *path, int access, int shflag, int mode) +int _sopen(const char *path, int access, int shflag, ... /*mode, permissin*/) { - return _open((path), (access)|(shflag), (mode)); + //FIXME: vararg + return _open((path), (access)|(shflag));//, (mode)); } diff --git a/reactos/lib/crt/io/tell.c b/reactos/lib/crt/io/tell.c index b21c29b4fb9..e12150c487b 100644 --- a/reactos/lib/crt/io/tell.c +++ b/reactos/lib/crt/io/tell.c @@ -1,6 +1,7 @@ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/io/telli64.c b/reactos/lib/crt/io/telli64.c index 9f584d8931d..1982ed167af 100644 --- a/reactos/lib/crt/io/telli64.c +++ b/reactos/lib/crt/io/telli64.c @@ -1,5 +1,6 @@ -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/io/umask.c b/reactos/lib/crt/io/umask.c index 58bc2f12db8..28a498ff1eb 100644 --- a/reactos/lib/crt/io/umask.c +++ b/reactos/lib/crt/io/umask.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include unsigned _unMode_dll = 022; diff --git a/reactos/lib/crt/io/unlink.c b/reactos/lib/crt/io/unlink.c index 48e777f233a..947b27256c7 100644 --- a/reactos/lib/crt/io/unlink.c +++ b/reactos/lib/crt/io/unlink.c @@ -9,10 +9,11 @@ */ #include "precomp.h" -#include +#include +#include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/utime.c b/reactos/lib/crt/io/utime.c index 326e1fdae1e..e43aef42b94 100644 --- a/reactos/lib/crt/io/utime.c +++ b/reactos/lib/crt/io/utime.c @@ -1,8 +1,8 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/io/waccess.c b/reactos/lib/crt/io/waccess.c index eb673ba14db..0ad50babfe8 100644 --- a/reactos/lib/crt/io/waccess.c +++ b/reactos/lib/crt/io/waccess.c @@ -1,32 +1,4 @@ -#include "precomp.h" -#include -#include -#define NDEBUG -#include +#define UNICODE +#define _UNICODE - -/* - * @implemented - */ -int _waccess(const wchar_t *_path, int _amode) -{ - DWORD Attributes = GetFileAttributesW(_path); - - if (Attributes == -1) { - _dosmaperr(GetLastError()); - return -1; - } - if ((_amode & W_OK) == W_OK) { - if ((Attributes & FILE_ATTRIBUTE_READONLY) == FILE_ATTRIBUTE_READONLY) { - __set_errno(EACCES); - return -1; - } - } - if ((_amode & D_OK) == D_OK) { - if ((Attributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY) { - __set_errno(EACCES); - return -1; - } - } - return 0; -} +#include "access.c" diff --git a/reactos/lib/crt/io/wchmod.c b/reactos/lib/crt/io/wchmod.c index a4df3ed67c0..1a81c9e2a41 100644 --- a/reactos/lib/crt/io/wchmod.c +++ b/reactos/lib/crt/io/wchmod.c @@ -1,47 +1,4 @@ -#include "precomp.h" -#include +#define _UNICODE +#define UNICODE -#define NDEBUG -#include - -#define mode_t int - - -/* - * @implemented - */ -int _wchmod(const wchar_t* filename, mode_t mode) -{ - DWORD FileAttributes = 0; - BOOLEAN Set = FALSE; - - DPRINT("_wchmod('%S', %x)\n", filename, mode); - - FileAttributes = GetFileAttributesW(filename); - if ( FileAttributes == -1 ) { - _dosmaperr(GetLastError()); - return -1; - } - - if ( mode == 0 ) - return -1; - - if (mode & _S_IWRITE) { - if (FileAttributes & FILE_ATTRIBUTE_READONLY) { - FileAttributes &= ~FILE_ATTRIBUTE_READONLY; - Set = TRUE; - } - } else { - if (!(FileAttributes & FILE_ATTRIBUTE_READONLY)) { - FileAttributes |= FILE_ATTRIBUTE_READONLY; - Set = TRUE; - } - } - - if (Set && SetFileAttributesW(filename, FileAttributes) == FALSE) { - _dosmaperr(GetLastError()); - return -1; - } - - return 0; -} +#include "chmod.c" diff --git a/reactos/lib/crt/io/wcreate.c b/reactos/lib/crt/io/wcreate.c index b61d88f9e36..305d836c23d 100644 --- a/reactos/lib/crt/io/wcreate.c +++ b/reactos/lib/crt/io/wcreate.c @@ -1,8 +1,8 @@ -#include -#include +#include +#include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/wfind.c b/reactos/lib/crt/io/wfind.c index 4ade252ae3f..76c568f6c0e 100644 --- a/reactos/lib/crt/io/wfind.c +++ b/reactos/lib/crt/io/wfind.c @@ -1,226 +1,5 @@ -#include "precomp.h" -#include -#include -#include +#define UNICODE +#define _UNICODE -/* - * @implemented - */ -int _wfindfirst(const wchar_t* _name, struct _wfinddata_t* result) -{ - WIN32_FIND_DATAW FindFileData; - wchar_t dir[MAX_PATH]; - long hFindFile; - int len = 0; - - if ( _name == NULL || _name[0] == 0 ) { - len = GetCurrentDirectoryW(MAX_PATH-4, dir); - if (dir[len-1] != L'\\') { - dir[len] = L'\\'; - dir[len+1] = 0; - } - wcscat(dir, L"*.*"); - } else { - wcscpy(dir, _name); - } - - hFindFile = (long)FindFirstFileW(dir, &FindFileData); - if (hFindFile == -1) { - memset(result,0,sizeof(struct _wfinddata_t)); - _dosmaperr(GetLastError()); - return -1; - } - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = FindFileData.nFileSizeLow; - wcsncpy(result->name,FindFileData.cFileName,MAX_PATH); - - // if no wildcard the find file handle can be closed right away - // a return value of 0 can flag this. - if (!wcschr(dir, L'*') && !wcschr(dir, L'?')) { - _findclose(hFindFile); - return 0; - } - - return hFindFile; -} - -/* - * @implemented - */ -int _findfirsti64(const char *_name, struct _finddatai64_t *result) -{ - WIN32_FIND_DATAA FindFileData; - char dir[MAX_PATH]; - long hFindFile; - int len = 0; - - if ( _name == NULL || _name[0] == 0 ) - { - len = GetCurrentDirectoryA(MAX_PATH-4,dir); - if (dir[len-1] != '\\') - { - dir[len] = '\\'; - dir[len+1] = 0; - } - strcat(dir, "*.*"); - } - else - strcpy(dir, _name); - - hFindFile = (long)FindFirstFileA(dir, &FindFileData); - if (hFindFile == -1) - { - memset(result,0,sizeof(struct _finddatai64_t)); - _dosmaperr(GetLastError()); - return -1; - } - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = - (((__int64)FindFileData.nFileSizeLow)<<32) + FindFileData.nFileSizeLow; - strncpy(result->name,FindFileData.cFileName,MAX_PATH); - - // if no wildcard the find file handle can be closed right away - // a return value of 0 can flag this. - - if (!strchr(dir,'*') && !strchr(dir,'?')) { - _findclose(hFindFile); - return 0; - } - return hFindFile; -} - -/* - * @implemented - */ -int _findnexti64(int handle, struct _finddatai64_t *result) -{ - WIN32_FIND_DATAA FindFileData; - - // check no wildcards or invalid handle - if (handle == 0 || handle == -1) - return 0; - - if (!FindNextFileA((void *)handle, &FindFileData)) { - _dosmaperr(GetLastError()); - return -1; - } - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = - (((__int64)FindFileData.nFileSizeLow)<<32) + FindFileData.nFileSizeLow; - strncpy(result->name,FindFileData.cFileName,MAX_PATH); - - return 0; -} - -/* - * @implemented - */ -int _wfindfirsti64(const wchar_t *_name, struct _wfinddatai64_t *result) -{ - WIN32_FIND_DATAW FindFileData; - wchar_t dir[MAX_PATH]; - long hFindFile; - int len = 0; - - if (_name == NULL || _name[0] == 0) - { - len = GetCurrentDirectoryW(MAX_PATH-4,dir); - if (dir[len-1] != L'\\') - { - dir[len] = L'\\'; - dir[len+1] = 0; - } - wcscat(dir, L"*.*"); - } - else - wcscpy(dir, _name); - - hFindFile = (long)FindFirstFileW(dir, &FindFileData); - if (hFindFile == -1) - { - memset(result,0,sizeof(struct _wfinddatai64_t)); - _dosmaperr(GetLastError()); - return -1; - } - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = - (((__int64)FindFileData.nFileSizeLow)<<32) + FindFileData.nFileSizeLow; - wcsncpy(result->name,FindFileData.cFileName,MAX_PATH); - - // if no wildcard the find file handle can be closed right away - // a return value of 0 can flag this. - - if (!wcschr(dir,L'*') && !wcschr(dir,L'?')) - { - _findclose(hFindFile); - return 0; - } - - return hFindFile; -} - -/* - * @implemented - */ -int _wfindnext(int handle, struct _wfinddata_t *result) -{ - WIN32_FIND_DATAW FindFileData; - - // check no wildcards or invalid handle - if (handle == 0 || handle == -1) - return 0; - - if (!FindNextFileW((void *)handle, &FindFileData)) - return -1; - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = FindFileData.nFileSizeLow; - wcsncpy(result->name,FindFileData.cFileName, MAX_PATH); - - return 0; -} - -/* - * @implemented - */ -int _wfindnexti64(int handle, struct _wfinddatai64_t *result) -{ - WIN32_FIND_DATAW FindFileData; - - // check no wildcards or invalid handle - if (handle == 0 || handle == -1) - return 0; - - if (!FindNextFileW((void *)handle, &FindFileData)) - return -1; - - result->attrib = FindFileData.dwFileAttributes; - result->time_create = FileTimeToUnixTime(&FindFileData.ftCreationTime,NULL); - result->time_access = FileTimeToUnixTime(&FindFileData.ftLastAccessTime,NULL); - result->time_write = FileTimeToUnixTime(&FindFileData.ftLastWriteTime,NULL); - result->size = - (((__int64)FindFileData.nFileSizeLow)<<32) + FindFileData.nFileSizeLow; - wcsncpy(result->name,FindFileData.cFileName,MAX_PATH); - - return 0; -} +#include "find.c" diff --git a/reactos/lib/crt/io/wmktemp.c b/reactos/lib/crt/io/wmktemp.c index 75edf72bbe9..9978878861e 100644 --- a/reactos/lib/crt/io/wmktemp.c +++ b/reactos/lib/crt/io/wmktemp.c @@ -13,12 +13,12 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/wopen.c b/reactos/lib/crt/io/wopen.c index f5c2fa398da..c804539fd44 100644 --- a/reactos/lib/crt/io/wopen.c +++ b/reactos/lib/crt/io/wopen.c @@ -14,19 +14,19 @@ #include "precomp.h" #if !defined(NDEBUG) && defined(DBG) -#include +#include #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #define NDEBUG -#include +#include /* @@ -136,13 +136,14 @@ int _wopen(const wchar_t* _path, int _oflag, ...) _dosmaperr(GetLastError()); return -1; } - return __fileno_alloc(hFile,_oflag); + return alloc_fd(hFile,split_oflags(_oflag)); } /* * @implemented */ -int _wsopen(wchar_t* path, int access, int shflag, int mode) +int _wsopen(const wchar_t* path, int access, int shflag,.../* int mode*/) { - return _wopen((path), (access)|(shflag), (mode)); + //FIXME: vararg + return _wopen((path), (access)|(shflag));//, (mode)); } diff --git a/reactos/lib/crt/io/write.c b/reactos/lib/crt/io/write.c index f17924ee955..0387fbde214 100644 --- a/reactos/lib/crt/io/write.c +++ b/reactos/lib/crt/io/write.c @@ -9,14 +9,14 @@ */ #include "precomp.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #define NDEBUG -#include +#include #define BUFSIZE 4096 /* @@ -38,7 +38,7 @@ void ReportLastError(void) /* * @implemented */ -size_t _write(int _fd, const void* _buf, size_t _nbyte) +int _write(int _fd, const void* _buf, unsigned int _nbyte) { char *tmp, *in, *out; int result; @@ -61,7 +61,7 @@ size_t _write(int _fd, const void* _buf, size_t _nbyte) *out++ = 0x0d; count--; if (count == 0) { - if (!WriteFile(_get_osfhandle(_fd), tmp, BUFSIZE, &wbyte, NULL)) { + if (!WriteFile((HANDLE)_get_osfhandle(_fd), tmp, BUFSIZE, &wbyte, NULL)) { //ReportLastError(); _dosmaperr(GetLastError()); result = -1; @@ -78,7 +78,7 @@ size_t _write(int _fd, const void* _buf, size_t _nbyte) *out++ = *in++; count--; if (count == 0 || _nbyte == 0) { - if (!WriteFile(_get_osfhandle(_fd), tmp, BUFSIZE - count, &wbyte, NULL)) { + if (!WriteFile((HANDLE)_get_osfhandle(_fd), tmp, BUFSIZE - count, &wbyte, NULL)) { _dosmaperr(GetLastError()); result = -1; break; @@ -94,7 +94,7 @@ size_t _write(int _fd, const void* _buf, size_t _nbyte) free(tmp); return result; } else { - if(!WriteFile(_get_osfhandle(_fd), _buf, _nbyte, &wbyte, NULL)) { + if(!WriteFile((HANDLE)_get_osfhandle(_fd), _buf, _nbyte, &wbyte, NULL)) { _dosmaperr(GetLastError()); return -1; } diff --git a/reactos/lib/crt/io/wunlink.c b/reactos/lib/crt/io/wunlink.c index c59186ddc58..00420a5b9a2 100644 --- a/reactos/lib/crt/io/wunlink.c +++ b/reactos/lib/crt/io/wunlink.c @@ -9,11 +9,11 @@ */ #include "precomp.h" -#include +#include +#include #define NDEBUG -#include -#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/wutime.c b/reactos/lib/crt/io/wutime.c index 452769b884a..ef229923e97 100644 --- a/reactos/lib/crt/io/wutime.c +++ b/reactos/lib/crt/io/wutime.c @@ -1,8 +1,8 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/locale/locale.c b/reactos/lib/crt/locale/locale.c index 3486b70eb98..c3b21ddd6c0 100644 --- a/reactos/lib/crt/locale/locale.c +++ b/reactos/lib/crt/locale/locale.c @@ -5,15 +5,15 @@ */ #include "precomp.h" -#include -#include -#include +#include +#include +#include #include -#include -#include +#include +#include #define NDEBUG -#include +#include unsigned int __setlc_active; unsigned int __unguarded_readlc_active; diff --git a/reactos/lib/crt/makefile b/reactos/lib/crt/makefile index 053fc66731a..cd743ddcd9b 100644 --- a/reactos/lib/crt/makefile +++ b/reactos/lib/crt/makefile @@ -10,11 +10,14 @@ TARGET_NAME = crt TARGET_PCH = precomp.h -TARGET_CFLAGS = -D_MSVCRT_LIB_ -Wall -Werror +TARGET_CFLAGS = -D_MSVCRT_LIB_ -D__MSVCRT__ -Wall -Werror -I./include + +#-nostdinc # require os code to explicitly request A/W version of structs/functions TARGET_CFLAGS += \ -D_DISABLE_TIDENTS \ + -D__MINGW_IMPORT=extern \ -D__USE_W32API \ -D__REACTOS__ \ -D_WIN32_IE=0x600 \ @@ -26,7 +29,6 @@ CONIO_OBJECTS = \ conio/cgets.o \ conio/cprintf.o \ conio/cputs.o \ - conio/cscanf.o \ conio/getch.o \ conio/getche.o \ conio/kbhit.o \ @@ -238,6 +240,7 @@ PROCESS_OBJECTS = \ process/_system.o \ process/dll.o \ process/process.o \ + process/wprocess.o \ process/procid.o \ process/thread.o \ process/threadid.o \ @@ -275,12 +278,14 @@ STDIO_OBJECTS = \ stdio/fputc.o \ stdio/fputchar.o \ stdio/fputs.o \ + stdio/fputws.o \ stdio/fread.o \ stdio/freopen.o \ - stdio/fscanf.o \ + stdio/wfreopen.o \ stdio/fseek.o \ stdio/fsetpos.o \ stdio/fsopen.o \ + stdio/wfsopen.o \ stdio/ftell.o \ stdio/fwalk.o \ stdio/fwrite.o \ @@ -290,32 +295,35 @@ STDIO_OBJECTS = \ stdio/getw.o \ stdio/perror.o \ stdio/popen.o \ + stdio/wpopen.o \ stdio/printf.o \ + stdio/wprintf.o \ stdio/putc.o \ stdio/putchar.o \ + stdio/putwchar.o \ stdio/puts.o \ stdio/putw.o \ stdio/remove.o \ + stdio/wremove.o \ stdio/rename.o \ stdio/rewind.o \ stdio/rmtmp.o \ - stdio/scanf.o \ stdio/setbuf.o \ stdio/setvbuf.o \ stdio/sprintf.o \ - stdio/sscanf.o \ + stdio/swprintf.o \ stdio/stdhnd.o \ stdio/tempnam.o \ stdio/tmpfile.o \ stdio/tmpnam.o \ stdio/ungetc.o \ + stdio/ungetwc.o \ stdio/vfprintf.o \ - stdio/vfscanf.o \ stdio/vfwprint.o \ stdio/vprintf.o \ - stdio/vscanf.o \ + stdio/vwprintf.o \ stdio/vsprintf.o \ - stdio/vsscanf.o \ + stdio/vswprintf.o \ stdio/wfdopen.o \ stdio/wrename.o \ stdio/wtempnam.o \ @@ -330,6 +338,7 @@ STDLIB_OBJECTS = \ stdlib/atoi.o \ stdlib/atoi64.o \ stdlib/atol.o \ + stdlib/wtol.o \ stdlib/bsearch.o \ stdlib/div.o \ stdlib/ecvt.o \ @@ -437,7 +446,8 @@ WINE_OBJECTS = \ wine/cpp.o \ wine/cppexcept.o \ wine/heap.o \ - wine/thread.o + wine/thread.o \ + wine/scanf.o TARGET_OBJECTS = \ $(CONIO_OBJECTS) \ diff --git a/reactos/lib/crt/math/acos.c b/reactos/lib/crt/math/acos.c index 23376a6116c..ea25c1cabec 100644 --- a/reactos/lib/crt/math/acos.c +++ b/reactos/lib/crt/math/acos.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double acos(double __x) diff --git a/reactos/lib/crt/math/asin.c b/reactos/lib/crt/math/asin.c index fa57df2850c..5a64723ba38 100644 --- a/reactos/lib/crt/math/asin.c +++ b/reactos/lib/crt/math/asin.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double asin(double __x) diff --git a/reactos/lib/crt/math/atan.c b/reactos/lib/crt/math/atan.c index af0e219e728..7c5adcf3466 100644 --- a/reactos/lib/crt/math/atan.c +++ b/reactos/lib/crt/math/atan.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double atan (double __x); diff --git a/reactos/lib/crt/math/atan2.c b/reactos/lib/crt/math/atan2.c index 8ce57f1e433..8a24a3fadae 100644 --- a/reactos/lib/crt/math/atan2.c +++ b/reactos/lib/crt/math/atan2.c @@ -1,5 +1,5 @@ -#include +#include double atan2 (double __y, double __x); diff --git a/reactos/lib/crt/math/cabs.c b/reactos/lib/crt/math/cabs.c index ca9e8426c73..04a0bc578bc 100644 --- a/reactos/lib/crt/math/cabs.c +++ b/reactos/lib/crt/math/cabs.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/math/ceil.c b/reactos/lib/crt/math/ceil.c index 5a1b1113910..43dd120bad8 100644 --- a/reactos/lib/crt/math/ceil.c +++ b/reactos/lib/crt/math/ceil.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/math/cos.c b/reactos/lib/crt/math/cos.c index 131fa2dbdb0..95657c6e884 100644 --- a/reactos/lib/crt/math/cos.c +++ b/reactos/lib/crt/math/cos.c @@ -1,4 +1,4 @@ -#include +#include double cos (double __x); diff --git a/reactos/lib/crt/math/cosh.c b/reactos/lib/crt/math/cosh.c index a21e717cadc..e81fde563f8 100644 --- a/reactos/lib/crt/math/cosh.c +++ b/reactos/lib/crt/math/cosh.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* diff --git a/reactos/lib/crt/math/exp.c b/reactos/lib/crt/math/exp.c index 2707cf8ca3a..3a58be07ad8 100644 --- a/reactos/lib/crt/math/exp.c +++ b/reactos/lib/crt/math/exp.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double exp (double __x); diff --git a/reactos/lib/crt/math/fabs.c b/reactos/lib/crt/math/fabs.c index 5db505ad11b..3c61ab1ad17 100644 --- a/reactos/lib/crt/math/fabs.c +++ b/reactos/lib/crt/math/fabs.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double fabs (double __x); diff --git a/reactos/lib/crt/math/floor.c b/reactos/lib/crt/math/floor.c index 4635ad86b3f..684b7163c82 100644 --- a/reactos/lib/crt/math/floor.c +++ b/reactos/lib/crt/math/floor.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double floor (double __x); diff --git a/reactos/lib/crt/math/fmod.c b/reactos/lib/crt/math/fmod.c index 263d6878829..f1d6cb31dd5 100644 --- a/reactos/lib/crt/math/fmod.c +++ b/reactos/lib/crt/math/fmod.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double fmod (double __x, double __y); diff --git a/reactos/lib/crt/math/frexp.c b/reactos/lib/crt/math/frexp.c index 47e1800c98d..0b753e15969 100644 --- a/reactos/lib/crt/math/frexp.c +++ b/reactos/lib/crt/math/frexp.c @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/math/huge_val.c b/reactos/lib/crt/math/huge_val.c index aaa50d0e81e..66b5716bf80 100644 --- a/reactos/lib/crt/math/huge_val.c +++ b/reactos/lib/crt/math/huge_val.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include #undef _HUGE double_t _HUGE = { 0x00000, 0x00000, 0x7ff, 0x0 }; diff --git a/reactos/lib/crt/math/hypot.c b/reactos/lib/crt/math/hypot.c index de078a140e8..18aefb51ea6 100644 --- a/reactos/lib/crt/math/hypot.c +++ b/reactos/lib/crt/math/hypot.c @@ -16,9 +16,9 @@ * */ -#include -#include -#include +#include +#include +#include /* Approximate square roots of DBL_MAX and DBL_MIN. Numbers between these two shouldn't neither overflow nor underflow diff --git a/reactos/lib/crt/math/j0_y0.c b/reactos/lib/crt/math/j0_y0.c index 01143ef3dcc..fd0923291aa 100644 --- a/reactos/lib/crt/math/j0_y0.c +++ b/reactos/lib/crt/math/j0_y0.c @@ -1,4 +1,4 @@ -#include +#include /* diff --git a/reactos/lib/crt/math/j1_y1.c b/reactos/lib/crt/math/j1_y1.c index 3c899886491..46c8d28567f 100644 --- a/reactos/lib/crt/math/j1_y1.c +++ b/reactos/lib/crt/math/j1_y1.c @@ -1,4 +1,4 @@ -#include +#include /* diff --git a/reactos/lib/crt/math/jn_yn.c b/reactos/lib/crt/math/jn_yn.c index a9304720a2e..89fbbdc66ff 100644 --- a/reactos/lib/crt/math/jn_yn.c +++ b/reactos/lib/crt/math/jn_yn.c @@ -1,4 +1,4 @@ -#include +#include /* diff --git a/reactos/lib/crt/math/ldexp.c b/reactos/lib/crt/math/ldexp.c index 9c603445509..ee2182161de 100644 --- a/reactos/lib/crt/math/ldexp.c +++ b/reactos/lib/crt/math/ldexp.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double ldexp (double __x, int __y); diff --git a/reactos/lib/crt/math/log.c b/reactos/lib/crt/math/log.c index 014c78a2304..bb1e524f520 100644 --- a/reactos/lib/crt/math/log.c +++ b/reactos/lib/crt/math/log.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double log (double __x); diff --git a/reactos/lib/crt/math/log10.c b/reactos/lib/crt/math/log10.c index 58e8cd6ebc9..5ed37f2a894 100644 --- a/reactos/lib/crt/math/log10.c +++ b/reactos/lib/crt/math/log10.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double log10 (double __x); diff --git a/reactos/lib/crt/math/math.c b/reactos/lib/crt/math/math.c index 157b72fd9b8..ff1d0e266f9 100644 --- a/reactos/lib/crt/math/math.c +++ b/reactos/lib/crt/math/math.c @@ -1,4 +1,4 @@ -#include +#include #pragma function(fmod,sqrt) #pragma function(log,log10,pow,exp) diff --git a/reactos/lib/crt/math/modf.c b/reactos/lib/crt/math/modf.c index fe1d80f4d02..2b7102657e2 100644 --- a/reactos/lib/crt/math/modf.c +++ b/reactos/lib/crt/math/modf.c @@ -10,10 +10,10 @@ * ==================================================== */ -#include -#include -#include - +#include +#include +#include +#include //static const double one = 1.0; diff --git a/reactos/lib/crt/math/pow.c b/reactos/lib/crt/math/pow.c index 91e07216944..d098efe9225 100644 --- a/reactos/lib/crt/math/pow.c +++ b/reactos/lib/crt/math/pow.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double pow (double __x, double __y); diff --git a/reactos/lib/crt/math/sin.c b/reactos/lib/crt/math/sin.c index db070a31d17..576a4dc3fd8 100644 --- a/reactos/lib/crt/math/sin.c +++ b/reactos/lib/crt/math/sin.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double sin (double __x); diff --git a/reactos/lib/crt/math/sinh.c b/reactos/lib/crt/math/sinh.c index f977a6acfa5..fa9e5f7586d 100644 --- a/reactos/lib/crt/math/sinh.c +++ b/reactos/lib/crt/math/sinh.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/math/sqrt.c b/reactos/lib/crt/math/sqrt.c index d414fcdbc2e..fbae29c9ce2 100644 --- a/reactos/lib/crt/math/sqrt.c +++ b/reactos/lib/crt/math/sqrt.c @@ -17,7 +17,7 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double sqrt (double __x); diff --git a/reactos/lib/crt/math/stubs.c b/reactos/lib/crt/math/stubs.c index 82fe881ebc0..c0fd78da106 100644 --- a/reactos/lib/crt/math/stubs.c +++ b/reactos/lib/crt/math/stubs.c @@ -1,4 +1,4 @@ -#include +#include double _CIsin(double x); diff --git a/reactos/lib/crt/math/tan.c b/reactos/lib/crt/math/tan.c index 1acc03619f9..1200eea6459 100644 --- a/reactos/lib/crt/math/tan.c +++ b/reactos/lib/crt/math/tan.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include double tan (double __x); diff --git a/reactos/lib/crt/math/tanh.c b/reactos/lib/crt/math/tanh.c index 88b9acca5ae..8c231c12c3a 100644 --- a/reactos/lib/crt/math/tanh.c +++ b/reactos/lib/crt/math/tanh.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/hanzen.c b/reactos/lib/crt/mbstring/hanzen.c index bbf22611f23..e3b3ac5b0eb 100644 --- a/reactos/lib/crt/mbstring/hanzen.c +++ b/reactos/lib/crt/mbstring/hanzen.c @@ -9,7 +9,7 @@ * 12/04/99: Created */ -#include +#include static unsigned short han_to_zen_ascii_table[0x5f] = { 0x8140, 0x8149, 0x8168, 0x8194, 0x8190, 0x8193, 0x8195, 0x8166, diff --git a/reactos/lib/crt/mbstring/ischira.c b/reactos/lib/crt/mbstring/ischira.c index 7ea5d269bcb..7bc938f1963 100644 --- a/reactos/lib/crt/mbstring/ischira.c +++ b/reactos/lib/crt/mbstring/ischira.c @@ -8,8 +8,8 @@ * 12/04/99: Created */ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/mbstring/iskana.c b/reactos/lib/crt/mbstring/iskana.c index 0bdb7848554..a89aa25c44c 100644 --- a/reactos/lib/crt/mbstring/iskana.c +++ b/reactos/lib/crt/mbstring/iskana.c @@ -8,13 +8,14 @@ Modified from Taiji Yamada japanese code system utilities * 12/04/99: Created */ -#include -#include +#include +#include +#include /* * @implemented */ -int _ismbbkana(unsigned char c) +int _ismbbkana(unsigned int c) { - return ((_jctype+1)[(unsigned char)(c)] & (_KNJ_M|_KNJ_P)); + return ((_mbctype+1)[(unsigned char)(c)] & (_KNJ_M|_KNJ_P)); } diff --git a/reactos/lib/crt/mbstring/iskmoji.c b/reactos/lib/crt/mbstring/iskmoji.c index c47d5badec1..a9c01ec0447 100644 --- a/reactos/lib/crt/mbstring/iskmoji.c +++ b/reactos/lib/crt/mbstring/iskmoji.c @@ -1,4 +1,4 @@ -#include +#include int _ismbbkalpha(unsigned char c) { diff --git a/reactos/lib/crt/mbstring/iskpun.c b/reactos/lib/crt/mbstring/iskpun.c index f3a12bbaf1a..bfa0cf2cfb3 100644 --- a/reactos/lib/crt/mbstring/iskpun.c +++ b/reactos/lib/crt/mbstring/iskpun.c @@ -7,12 +7,12 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include - +#include +#include /* * @implemented */ int _ismbbkpunct( unsigned int c ) { - return ((_jctype+1)[(unsigned char)(c)] & (_KNJ_P)); + return ((_mbctype+1)[(unsigned char)(c)] & (_KNJ_P)); } diff --git a/reactos/lib/crt/mbstring/islead.c b/reactos/lib/crt/mbstring/islead.c index f6c9e5bd0e1..98c4a0af28c 100644 --- a/reactos/lib/crt/mbstring/islead.c +++ b/reactos/lib/crt/mbstring/islead.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include /* * @unimplemented diff --git a/reactos/lib/crt/mbstring/islwr.c b/reactos/lib/crt/mbstring/islwr.c index e63c6aa1e3d..84785cb5bd0 100644 --- a/reactos/lib/crt/mbstring/islwr.c +++ b/reactos/lib/crt/mbstring/islwr.c @@ -8,8 +8,8 @@ * 12/04/99: Created */ -#include -#include +#include +#include /* * code page 952 only diff --git a/reactos/lib/crt/mbstring/ismbal.c b/reactos/lib/crt/mbstring/ismbal.c index f1bbd3bbbf6..0a3dc6d0645 100644 --- a/reactos/lib/crt/mbstring/ismbal.c +++ b/reactos/lib/crt/mbstring/ismbal.c @@ -7,13 +7,13 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include -#include +#include +#include /* * @implemented */ -int _ismbbalpha(unsigned char c) +int _ismbbalpha(unsigned int c) { return (isalpha(c) || _ismbbkalnum(c)); } diff --git a/reactos/lib/crt/mbstring/ismbaln.c b/reactos/lib/crt/mbstring/ismbaln.c index 71d263de87d..ac8948ef3a8 100644 --- a/reactos/lib/crt/mbstring/ismbaln.c +++ b/reactos/lib/crt/mbstring/ismbaln.c @@ -1,11 +1,11 @@ -#include -#include +#include +#include /* * @implemented */ -int _ismbbalnum(unsigned char c) +int _ismbbalnum(unsigned int c) { return (isalnum(c) || _ismbbkalnum(c)); } diff --git a/reactos/lib/crt/mbstring/ismbc.c b/reactos/lib/crt/mbstring/ismbc.c index 4035ff5580d..c19f9441cdb 100644 --- a/reactos/lib/crt/mbstring/ismbc.c +++ b/reactos/lib/crt/mbstring/ismbc.c @@ -1,4 +1,4 @@ -#include +#include int _ismbbalpha(unsigned char c); int _ismbbalnum(unsigned char c); diff --git a/reactos/lib/crt/mbstring/ismbgra.c b/reactos/lib/crt/mbstring/ismbgra.c index 8de506a2007..76afacaa85e 100644 --- a/reactos/lib/crt/mbstring/ismbgra.c +++ b/reactos/lib/crt/mbstring/ismbgra.c @@ -1,11 +1,11 @@ -#include -#include -#include +#include +#include +#include /* * @implemented */ -int _ismbbgraph(unsigned char c) +int _ismbbgraph(unsigned int c) { return (isgraph(c) || _ismbbkana(c)); } diff --git a/reactos/lib/crt/mbstring/ismbkaln.c b/reactos/lib/crt/mbstring/ismbkaln.c index 6840f59a33c..e8b0102f1ca 100644 --- a/reactos/lib/crt/mbstring/ismbkaln.c +++ b/reactos/lib/crt/mbstring/ismbkaln.c @@ -7,13 +7,13 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include -#include - +#include +#include +#include /* * @implemented */ int _ismbbkalnum( unsigned int c ) { - return ((_jctype+1)[(unsigned char)(c)] & (_KNJ_P)); + return ((_mbctype+1)[(unsigned char)(c)] & (_KNJ_P)); } diff --git a/reactos/lib/crt/mbstring/ismblead.c b/reactos/lib/crt/mbstring/ismblead.c index ca6da76883c..e441f0e0798 100644 --- a/reactos/lib/crt/mbstring/ismblead.c +++ b/reactos/lib/crt/mbstring/ismblead.c @@ -9,13 +9,14 @@ * 12/04/99: Created */ -#include -#include -#include +#include +#include +#include +#include size_t _mbclen2(const unsigned int s); -char _jctype[257] = { +unsigned char _mbctype[257] = { /*-1*/ ___, /*0x*/ ___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,___, /*1x*/ ___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,___, @@ -35,13 +36,13 @@ char _jctype[257] = { /*Fx*/ _12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,___,___,___ }; -char *_mbctype = _jctype; +//unsigned char _mbctype = _jctype; /* * @implemented */ int _ismbblead(unsigned int c) { - return ((_jctype+1)[(unsigned char)(c)] & _KNJ_1); + return ((_mbctype+1)[(unsigned char)(c)] & _KNJ_1); } //int _ismbblead(unsigned int byte) //{ diff --git a/reactos/lib/crt/mbstring/ismbpri.c b/reactos/lib/crt/mbstring/ismbpri.c index 637372086b6..b66063bab7c 100644 --- a/reactos/lib/crt/mbstring/ismbpri.c +++ b/reactos/lib/crt/mbstring/ismbpri.c @@ -1,11 +1,11 @@ -#include -#include -#include +#include +#include +#include /* * @implemented */ -int _ismbbprint(unsigned char c) +int _ismbbprint(unsigned int c) { return (isprint(c) || _ismbbkana(c)); } diff --git a/reactos/lib/crt/mbstring/ismbpun.c b/reactos/lib/crt/mbstring/ismbpun.c index f66eb4ea4ec..0c901ff1c5e 100644 --- a/reactos/lib/crt/mbstring/ismbpun.c +++ b/reactos/lib/crt/mbstring/ismbpun.c @@ -1,13 +1,13 @@ -#include -#include -#include +#include +#include +#include /* * @implemented */ -int _ismbbpunct(unsigned char c) +int _ismbbpunct(unsigned int c) { // (0xA1 <= c <= 0xA6) return (ispunct(c) || _ismbbkana(c)); diff --git a/reactos/lib/crt/mbstring/ismbtrl.c b/reactos/lib/crt/mbstring/ismbtrl.c index 865fd4de1b8..3d0cc1de87f 100644 --- a/reactos/lib/crt/mbstring/ismbtrl.c +++ b/reactos/lib/crt/mbstring/ismbtrl.c @@ -8,8 +8,9 @@ * 12/04/99: Created */ -#include -#include +#include +#include +#include size_t _mbclen2(const unsigned int s); @@ -20,7 +21,7 @@ size_t _mbclen2(const unsigned int s); */ int _ismbbtrail(unsigned int c) { - return ((_jctype+1)[(unsigned char)(c)] & _KNJ_2); + return ((_mbctype+1)[(unsigned char)(c)] & _KNJ_2); } //int _ismbbtrail( unsigned int b) diff --git a/reactos/lib/crt/mbstring/isuppr.c b/reactos/lib/crt/mbstring/isuppr.c index d68acc603db..3a9824a2696 100644 --- a/reactos/lib/crt/mbstring/isuppr.c +++ b/reactos/lib/crt/mbstring/isuppr.c @@ -8,8 +8,8 @@ * 12/04/99: Created */ -#include -#include +#include +#include /* * code page 952 only diff --git a/reactos/lib/crt/mbstring/jistojms.c b/reactos/lib/crt/mbstring/jistojms.c index c47b223a58a..bddb6caef00 100644 --- a/reactos/lib/crt/mbstring/jistojms.c +++ b/reactos/lib/crt/mbstring/jistojms.c @@ -1,9 +1,9 @@ -#include +#include /* * @implemented */ -unsigned short _mbcjistojms(unsigned short c) +unsigned int _mbcjistojms(unsigned int c) { int c1, c2; diff --git a/reactos/lib/crt/mbstring/jmstojis.c b/reactos/lib/crt/mbstring/jmstojis.c index cf349f673db..8e634c3e67d 100644 --- a/reactos/lib/crt/mbstring/jmstojis.c +++ b/reactos/lib/crt/mbstring/jmstojis.c @@ -1,9 +1,9 @@ -#include +#include /* * @implemented */ -unsigned short _mbcjmstojis(unsigned short c) +unsigned int _mbcjmstojis(unsigned int c) { int c1, c2; diff --git a/reactos/lib/crt/mbstring/mbbtype.c b/reactos/lib/crt/mbstring/mbbtype.c index e4e02b96546..876c0b284c5 100644 --- a/reactos/lib/crt/mbstring/mbbtype.c +++ b/reactos/lib/crt/mbstring/mbbtype.c @@ -8,8 +8,9 @@ * 12/04/99: Created */ -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbccpy.c b/reactos/lib/crt/mbstring/mbccpy.c index 1db6243c0ae..b48e1261485 100644 --- a/reactos/lib/crt/mbstring/mbccpy.c +++ b/reactos/lib/crt/mbstring/mbccpy.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include size_t _mbclen2(const unsigned int s); diff --git a/reactos/lib/crt/mbstring/mbclen.c b/reactos/lib/crt/mbstring/mbclen.c index d1e4c82ffa6..414852d04b4 100644 --- a/reactos/lib/crt/mbstring/mbclen.c +++ b/reactos/lib/crt/mbstring/mbclen.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/mbstring/mbscat.c b/reactos/lib/crt/mbstring/mbscat.c index 85c6aab86bd..65b481b7f55 100644 --- a/reactos/lib/crt/mbstring/mbscat.c +++ b/reactos/lib/crt/mbstring/mbscat.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbschr.c b/reactos/lib/crt/mbstring/mbschr.c index 5b359bbcb0c..e635e3f1ff7 100644 --- a/reactos/lib/crt/mbstring/mbschr.c +++ b/reactos/lib/crt/mbstring/mbschr.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbscmp.c b/reactos/lib/crt/mbstring/mbscmp.c index 8f5d0b3e4de..611d086cc45 100644 --- a/reactos/lib/crt/mbstring/mbscmp.c +++ b/reactos/lib/crt/mbstring/mbscmp.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbscoll.c b/reactos/lib/crt/mbstring/mbscoll.c index 86265316d94..6ef9f6689ce 100644 --- a/reactos/lib/crt/mbstring/mbscoll.c +++ b/reactos/lib/crt/mbstring/mbscoll.c @@ -8,7 +8,7 @@ * 12/04/99: Created */ -#include +#include int colldif(unsigned short c1, unsigned short c2); diff --git a/reactos/lib/crt/mbstring/mbscpy.c b/reactos/lib/crt/mbstring/mbscpy.c index 89007c27ffc..76abf442c73 100644 --- a/reactos/lib/crt/mbstring/mbscpy.c +++ b/reactos/lib/crt/mbstring/mbscpy.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbscspn.c b/reactos/lib/crt/mbstring/mbscspn.c index da27e5e9960..59936778fc6 100644 --- a/reactos/lib/crt/mbstring/mbscspn.c +++ b/reactos/lib/crt/mbstring/mbscspn.c @@ -1,4 +1,4 @@ -#include +#include /* * FIXME not correct diff --git a/reactos/lib/crt/mbstring/mbsdec.c b/reactos/lib/crt/mbstring/mbsdec.c index 14c228c81c5..e3a72b468d8 100644 --- a/reactos/lib/crt/mbstring/mbsdec.c +++ b/reactos/lib/crt/mbstring/mbsdec.c @@ -1,4 +1,5 @@ -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsdup.c b/reactos/lib/crt/mbstring/mbsdup.c index db251c1c342..2c3617b5ae8 100644 --- a/reactos/lib/crt/mbstring/mbsdup.c +++ b/reactos/lib/crt/mbstring/mbsdup.c @@ -9,8 +9,8 @@ * 12/04/99: Created */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsicmp.c b/reactos/lib/crt/mbstring/mbsicmp.c index 563b2a75dc0..607c794175d 100644 --- a/reactos/lib/crt/mbstring/mbsicmp.c +++ b/reactos/lib/crt/mbstring/mbsicmp.c @@ -7,9 +7,9 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsicoll.c b/reactos/lib/crt/mbstring/mbsicoll.c index d07f4a6afe6..206fae5750e 100644 --- a/reactos/lib/crt/mbstring/mbsicoll.c +++ b/reactos/lib/crt/mbstring/mbsicoll.c @@ -7,9 +7,9 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include -#include -#include +#include +#include +#include int colldif(unsigned short c1, unsigned short c2); /* diff --git a/reactos/lib/crt/mbstring/mbsinc.c b/reactos/lib/crt/mbstring/mbsinc.c index 98a5fb5dbd9..c1db061e241 100644 --- a/reactos/lib/crt/mbstring/mbsinc.c +++ b/reactos/lib/crt/mbstring/mbsinc.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbslen.c b/reactos/lib/crt/mbstring/mbslen.c index 8529fbf27f5..f73656fad3e 100644 --- a/reactos/lib/crt/mbstring/mbslen.c +++ b/reactos/lib/crt/mbstring/mbslen.c @@ -1,4 +1,4 @@ -#include +#include size_t _mbclen2(const unsigned int s); diff --git a/reactos/lib/crt/mbstring/mbslwr.c b/reactos/lib/crt/mbstring/mbslwr.c index 071a7659ca1..c5d24cb361f 100644 --- a/reactos/lib/crt/mbstring/mbslwr.c +++ b/reactos/lib/crt/mbstring/mbslwr.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include unsigned int _mbbtolower(unsigned int c) { diff --git a/reactos/lib/crt/mbstring/mbsncat.c b/reactos/lib/crt/mbstring/mbsncat.c index 4eb97b2349b..78a23e49af0 100644 --- a/reactos/lib/crt/mbstring/mbsncat.c +++ b/reactos/lib/crt/mbstring/mbsncat.c @@ -8,8 +8,8 @@ * 12/04/99: Created */ -#include -#include +#include +#include size_t _mbclen2(const unsigned int s); diff --git a/reactos/lib/crt/mbstring/mbsnccnt.c b/reactos/lib/crt/mbstring/mbsnccnt.c index af739200fd0..b66a3171fb9 100644 --- a/reactos/lib/crt/mbstring/mbsnccnt.c +++ b/reactos/lib/crt/mbstring/mbsnccnt.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsncmp.c b/reactos/lib/crt/mbstring/mbsncmp.c index d108898a438..3f8dfa8200d 100644 --- a/reactos/lib/crt/mbstring/mbsncmp.c +++ b/reactos/lib/crt/mbstring/mbsncmp.c @@ -8,7 +8,7 @@ * 12/04/99: Created */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsncoll.c b/reactos/lib/crt/mbstring/mbsncoll.c index f9af6ebce83..10b08e193d8 100644 --- a/reactos/lib/crt/mbstring/mbsncoll.c +++ b/reactos/lib/crt/mbstring/mbsncoll.c @@ -7,7 +7,7 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include +#include int colldif(unsigned short c1, unsigned short c2); diff --git a/reactos/lib/crt/mbstring/mbsncpy.c b/reactos/lib/crt/mbstring/mbsncpy.c index 5b4a2c9238d..3f236f598ae 100644 --- a/reactos/lib/crt/mbstring/mbsncpy.c +++ b/reactos/lib/crt/mbstring/mbsncpy.c @@ -8,7 +8,7 @@ * 12/04/99: Created */ -#include +#include /* diff --git a/reactos/lib/crt/mbstring/mbsnextc.c b/reactos/lib/crt/mbstring/mbsnextc.c index 4e163daabc3..ee75c6f915c 100644 --- a/reactos/lib/crt/mbstring/mbsnextc.c +++ b/reactos/lib/crt/mbstring/mbsnextc.c @@ -1,4 +1,5 @@ -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsnicmp.c b/reactos/lib/crt/mbstring/mbsnicmp.c index 0ece47523f9..0a554b2176c 100644 --- a/reactos/lib/crt/mbstring/mbsnicmp.c +++ b/reactos/lib/crt/mbstring/mbsnicmp.c @@ -1,4 +1,4 @@ -#include +#include size_t _mbclen2(const unsigned int s); diff --git a/reactos/lib/crt/mbstring/mbsnicoll.c b/reactos/lib/crt/mbstring/mbsnicoll.c index df778069f92..bfc67e5e1df 100644 --- a/reactos/lib/crt/mbstring/mbsnicoll.c +++ b/reactos/lib/crt/mbstring/mbsnicoll.c @@ -1,4 +1,4 @@ -#include +#include /* * @unimplemented diff --git a/reactos/lib/crt/mbstring/mbsninc.c b/reactos/lib/crt/mbstring/mbsninc.c index bf8a50caf5b..67f2fac2c87 100644 --- a/reactos/lib/crt/mbstring/mbsninc.c +++ b/reactos/lib/crt/mbstring/mbsninc.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsnset.c b/reactos/lib/crt/mbstring/mbsnset.c index 37be2754ffc..ae6a4603fa8 100644 --- a/reactos/lib/crt/mbstring/mbsnset.c +++ b/reactos/lib/crt/mbstring/mbsnset.c @@ -7,7 +7,7 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include +#include size_t _mbclen2(const unsigned int s); diff --git a/reactos/lib/crt/mbstring/mbspbrk.c b/reactos/lib/crt/mbstring/mbspbrk.c index ed0b9d4b6de..83b5b1085be 100644 --- a/reactos/lib/crt/mbstring/mbspbrk.c +++ b/reactos/lib/crt/mbstring/mbspbrk.c @@ -1,4 +1,5 @@ -#include +#include +#include int isleadbyte(int byte); diff --git a/reactos/lib/crt/mbstring/mbsrchr.c b/reactos/lib/crt/mbstring/mbsrchr.c index c0f66f36376..dfab3cdd7ea 100644 --- a/reactos/lib/crt/mbstring/mbsrchr.c +++ b/reactos/lib/crt/mbstring/mbsrchr.c @@ -7,8 +7,8 @@ * UPDATE HISTORY: * 12/04/99: Created */ - -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsrev.c b/reactos/lib/crt/mbstring/mbsrev.c index f30cb10cd04..bde5bdc11e4 100644 --- a/reactos/lib/crt/mbstring/mbsrev.c +++ b/reactos/lib/crt/mbstring/mbsrev.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsset.c b/reactos/lib/crt/mbstring/mbsset.c index d2af4d13264..ae09717fc5c 100644 --- a/reactos/lib/crt/mbstring/mbsset.c +++ b/reactos/lib/crt/mbstring/mbsset.c @@ -8,7 +8,7 @@ * 12/04/99: Created */ -#include +#include size_t _mbclen2(const unsigned int s); diff --git a/reactos/lib/crt/mbstring/mbsspn.c b/reactos/lib/crt/mbstring/mbsspn.c index 0eb8ec0238d..3d654feb0a7 100644 --- a/reactos/lib/crt/mbstring/mbsspn.c +++ b/reactos/lib/crt/mbstring/mbsspn.c @@ -1,4 +1,4 @@ -#include +#include /* * FIXME not correct diff --git a/reactos/lib/crt/mbstring/mbsspnp.c b/reactos/lib/crt/mbstring/mbsspnp.c index c82fcf8b9ca..07a698ae443 100644 --- a/reactos/lib/crt/mbstring/mbsspnp.c +++ b/reactos/lib/crt/mbstring/mbsspnp.c @@ -1,4 +1,4 @@ -#include +#include /* * FIXME not correct diff --git a/reactos/lib/crt/mbstring/mbsstr.c b/reactos/lib/crt/mbstring/mbsstr.c index cbf9f396925..318de319c70 100644 --- a/reactos/lib/crt/mbstring/mbsstr.c +++ b/reactos/lib/crt/mbstring/mbsstr.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbstok.c b/reactos/lib/crt/mbstring/mbstok.c index 79015a8b787..d575e73f3f5 100644 --- a/reactos/lib/crt/mbstring/mbstok.c +++ b/reactos/lib/crt/mbstring/mbstok.c @@ -1,9 +1,10 @@ -#include +#include +#include /* * @implemented */ -unsigned char * _mbstok(unsigned char *s, unsigned char *delim) +unsigned char * _mbstok(unsigned char *s, const unsigned char *delim) { const unsigned char *spanp; int c, sc; diff --git a/reactos/lib/crt/mbstring/mbstrlen.c b/reactos/lib/crt/mbstring/mbstrlen.c index b8c64cce6f1..e4411f1f708 100644 --- a/reactos/lib/crt/mbstring/mbstrlen.c +++ b/reactos/lib/crt/mbstring/mbstrlen.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/mbstring/mbsupr.c b/reactos/lib/crt/mbstring/mbsupr.c index 1899b7fcc3c..6cb5059010c 100644 --- a/reactos/lib/crt/mbstring/mbsupr.c +++ b/reactos/lib/crt/mbstring/mbsupr.c @@ -7,8 +7,8 @@ * UPDATE HISTORY: * 12/04/99: Created */ -#include -#include +#include +#include unsigned int _mbbtoupper(unsigned int c) { diff --git a/reactos/lib/crt/misc/amsg.c b/reactos/lib/crt/misc/amsg.c index b8b288afa23..a65b6675bef 100644 --- a/reactos/lib/crt/misc/amsg.c +++ b/reactos/lib/crt/misc/amsg.c @@ -8,8 +8,8 @@ * 28/12/98: Created */ -#include -#include +#include +#include static char *__rt_err_msg[] = diff --git a/reactos/lib/crt/misc/assert.c b/reactos/lib/crt/misc/assert.c index 0e416a894c7..f656976da1d 100644 --- a/reactos/lib/crt/misc/assert.c +++ b/reactos/lib/crt/misc/assert.c @@ -1,8 +1,8 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/misc/crtmain.c b/reactos/lib/crt/misc/crtmain.c index 61f66686c1b..5387202824b 100644 --- a/reactos/lib/crt/misc/crtmain.c +++ b/reactos/lib/crt/misc/crtmain.c @@ -6,7 +6,7 @@ #include "precomp.h" #define NDEBUG -#include +#include #ifndef __GNUC__ diff --git a/reactos/lib/crt/misc/environ.c b/reactos/lib/crt/misc/environ.c index 7847d2aa3bf..d99b3695657 100644 --- a/reactos/lib/crt/misc/environ.c +++ b/reactos/lib/crt/misc/environ.c @@ -6,12 +6,13 @@ */ #include "precomp.h" -#include -#include -#include +#include +#include +#include +#include #define NDEBUG -#include +#include unsigned int _osver = 0; diff --git a/reactos/lib/crt/misc/getargs.c b/reactos/lib/crt/misc/getargs.c index b68db68d6dc..4a8fa53de4c 100644 --- a/reactos/lib/crt/misc/getargs.c +++ b/reactos/lib/crt/misc/getargs.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include extern char*_acmdln; @@ -168,6 +168,15 @@ char*** __p___argv(void) return &__argv; } +/* + * @implemented + */ +wchar_t*** __p___wargv(void) +{ + return &__wargv; +} + + #if 0 int _chkstk(void) { diff --git a/reactos/lib/crt/misc/initterm.c b/reactos/lib/crt/misc/initterm.c index 26f66a1c924..54963ad9add 100644 --- a/reactos/lib/crt/misc/initterm.c +++ b/reactos/lib/crt/misc/initterm.c @@ -1,4 +1,4 @@ -#include +#include /* diff --git a/reactos/lib/crt/misc/lock.c b/reactos/lib/crt/misc/lock.c index 100cef02d54..775f9190486 100644 --- a/reactos/lib/crt/misc/lock.c +++ b/reactos/lib/crt/misc/lock.c @@ -19,8 +19,8 @@ #include "precomp.h" #define NDEBUG -#include -#include +#include +#include typedef struct { diff --git a/reactos/lib/crt/misc/purecall.c b/reactos/lib/crt/misc/purecall.c index 4b50cbfd528..28612a9aaf5 100644 --- a/reactos/lib/crt/misc/purecall.c +++ b/reactos/lib/crt/misc/purecall.c @@ -1,5 +1,5 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/misc/stubs.c b/reactos/lib/crt/misc/stubs.c index e2e40baa841..2e7dc702780 100644 --- a/reactos/lib/crt/misc/stubs.c +++ b/reactos/lib/crt/misc/stubs.c @@ -1,7 +1,7 @@ #include "precomp.h" #define NDEBUG -#include +#include /********************************************************************* * $I10_OUTPUT (MSVCRT.@) @@ -111,3 +111,34 @@ void _adj_fpatan(void) { DPRINT1("_adj_fpatan stub\n"); } + + +void __crtCompareStringA(void) +{ + DPRINT1("__crtCompareStringA stub\n"); +} + +void __crtGetLocaleInfoW(void) +{ + DPRINT1("__crtGetLocaleInfoW stub\n"); +} + +void __p__amblksiz(void) +{ + DPRINT1("__p__amblksiz stub\n"); +} + +void __p__dstbias(void) +{ + DPRINT1("__p__dstbias stub\n"); +} + +void __fileinfo(void) +{ + DPRINT1("__fileinfo stub\n"); +} + +void stub(void) +{ + DPRINT1("stub\n"); +} diff --git a/reactos/lib/crt/misc/tls.c b/reactos/lib/crt/misc/tls.c index 84938534acc..18ecade199e 100644 --- a/reactos/lib/crt/misc/tls.c +++ b/reactos/lib/crt/misc/tls.c @@ -1,7 +1,7 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include static unsigned long TlsIndex = (unsigned long)-1; diff --git a/reactos/lib/crt/process/_cwait.c b/reactos/lib/crt/process/_cwait.c index aa940452e21..f52dc44a36d 100644 --- a/reactos/lib/crt/process/_cwait.c +++ b/reactos/lib/crt/process/_cwait.c @@ -9,9 +9,9 @@ */ #include "precomp.h" -#include -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/process/_system.c b/reactos/lib/crt/process/_system.c index 9041e41bfc6..15c89d4241b 100644 --- a/reactos/lib/crt/process/_system.c +++ b/reactos/lib/crt/process/_system.c @@ -10,11 +10,11 @@ */ #include "precomp.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/process/dll.c b/reactos/lib/crt/process/dll.c index 5e3db761f6a..c9f3a53a6af 100644 --- a/reactos/lib/crt/process/dll.c +++ b/reactos/lib/crt/process/dll.c @@ -9,7 +9,7 @@ */ #include "precomp.h" -#include +#include /* diff --git a/reactos/lib/crt/process/process.c b/reactos/lib/crt/process/process.c index 8a375430aa3..6c7f06efb1e 100644 --- a/reactos/lib/crt/process/process.c +++ b/reactos/lib/crt/process/process.c @@ -1,622 +1,654 @@ #include "precomp.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #define NDEBUG -#include +#include -extern int maxfno; +#ifdef _UNICODE + #define find_execT find_execW + #define argvtosT argvtosW + #define do_spawnT do_spawnW + #define valisttosT valisttosW + #define extT extW +#else + #define find_execT find_execA + #define argvtosT argvtosA + #define do_spawnT do_spawnA + #define valisttosT valisttosA + #define extT extA +#endif -char const* ext[] = + +_TCHAR const* extT[] = + { + _T(""), + _T(".bat"), + _T(".cmd"), + _T(".com"), + _T(".exe") + }; + +const _TCHAR* find_execT(const _TCHAR* path, _TCHAR* rpath) { - "", - ".bat", - ".cmd", - ".com", - ".exe" -}; + _TCHAR *rp; + const _TCHAR *rd; + int i, found = 0; -const char* find_exec(const char* path, char* rpath) -{ - char *rp; - const char *rd; - int i, found = 0; + DPRINT(MK_STR(find_execT)"('%"sT"', %x)\n", path, rpath); - DPRINT("find_exec('%s', %x)\n", path, rpath); + if (path == NULL) + { + return NULL; + } + if (_tcslen(path) > FILENAME_MAX - 1) + { + return path; + } + /* copy path in rpath */ + for (rd = path, rp = rpath; *rd; *rp++ = *rd++) + ; + *rp = 0; + /* try first with the name as is */ + for (i = 0; i < sizeof(extT) / sizeof(*extT); i++) + { + _tcscpy(rp, extT[i]); - if (path == NULL) - { - return NULL; - } - if (strlen(path) > FILENAME_MAX - 1) - { - return path; - } - /* copy path in rpath */ - for (rd = path, rp = rpath; *rd; *rp++ = *rd++); - *rp = 0; - /* try first with the name as is */ - for (i = 0; i < sizeof(ext) / sizeof(*ext); i++) - { - strcpy(rp, ext[i]); + DPRINT("trying '%"sT"'\n", rpath); - DPRINT("trying '%s'\n", rpath); + if (_taccess(rpath, F_OK) == 0 && access_dirT(rpath) != 0) + { + found = 1; + break; + } + } + if (!found) + { + _TCHAR* env = _tgetenv(_T("PATH")); + if (env) + { + _TCHAR* ep = env; + while (*ep && !found) + { + if (*ep == ';') + ep++; + rp=rpath; + for (; *ep && (*ep != ';'); *rp++ = *ep++) + ; + if (rp > rpath) + { + rp--; + if (*rp != '/' && *rp != '\\') + { + *++rp = '\\'; + } + rp++; + } + for (rd=path; *rd; *rp++ = *rd++) + ; + for (i = 0; i < sizeof(extT) / sizeof(*extT); i++) + { + _tcscpy(rp, extT[i]); - if (_access(rpath, F_OK) == 0 && _access(rpath, D_OK) != 0) - { - found = 1; - break; - } - } - if (!found) - { - char* env = getenv("PATH"); - if (env) - { - char* ep = env; - while (*ep && !found) - { - if (*ep == ';') ep++; - rp=rpath; - for (; *ep && (*ep != ';'); *rp++ = *ep++); - if (rp > rpath) - { - rp--; - if (*rp != '/' && *rp != '\\') - { - *++rp = '\\'; - } - rp++; - } - for (rd=path; *rd; *rp++ = *rd++); - for (i = 0; i < sizeof(ext) / sizeof(*ext); i++) - { - strcpy(rp, ext[i]); + DPRINT("trying '%"sT"'\n", rpath); - DPRINT("trying '%s'\n", rpath); + if (_taccess(rpath, F_OK) == 0 && access_dirT(rpath) != 0) + { + found = 1; + break; + } + } + } + } + } - if (_access(rpath, F_OK) == 0 && _access(rpath, D_OK) != 0) - { - found = 1; - break; - } - } - } - } - } - - return found ? rpath : path; + return found ? rpath : path; } -static char* -argvtos(char* const* argv, char delim) +static _TCHAR* +argvtosT(const _TCHAR* const* argv, _TCHAR delim) { - int i, len; - char *ptr, *str; + int i, len; + _TCHAR *ptr, *str; - if (argv == NULL) - return NULL; + if (argv == NULL) + return NULL; - for (i = 0, len = 0; argv[i]; i++) - { - len += strlen(argv[i]) + 1; - } + for (i = 0, len = 0; argv[i]; i++) + { + len += _tcslen(argv[i]) + 1; + } - str = ptr = (char*) malloc(len + 1); - if (str == NULL) - return NULL; + str = ptr = (_TCHAR*) malloc(len + 1); + if (str == NULL) + return NULL; - for(i = 0; argv[i]; i++) - { - len = strlen(argv[i]); - memcpy(ptr, argv[i], len); - ptr += len; - *ptr++ = delim; - } - *ptr = 0; + for(i = 0; argv[i]; i++) + { + len = _tcslen(argv[i]); + memcpy(ptr, argv[i], len); + ptr += len; + *ptr++ = delim; + } + *ptr = 0; - return str; + return str; } -static char* -valisttos(const char* arg0, va_list alist, char delim) +static _TCHAR* +valisttosT(const _TCHAR* arg0, va_list alist, _TCHAR delim) { - va_list alist2 = alist; - char *ptr, *str; - int len; + va_list alist2 = alist; + _TCHAR *ptr, *str; + int len; - if (arg0 == NULL) - return NULL; + if (arg0 == NULL) + return NULL; - ptr = (char*)arg0; - len = 0; - do - { - len += strlen(ptr) + 1; - ptr = va_arg(alist, char*); - } - while(ptr != NULL); + ptr = (_TCHAR*)arg0; + len = 0; + do + { + len += _tcslen(ptr) + 1; + ptr = va_arg(alist, _TCHAR*); + } + while(ptr != NULL); - str = (char*) malloc(len + 1); - if (str == NULL) - return NULL; + str = (_TCHAR*) malloc(len + 1); + if (str == NULL) + return NULL; - ptr = str; - do - { - len = strlen(arg0); - memcpy(ptr, arg0, len); - ptr += len; - *ptr++ = delim; - arg0 = va_arg(alist2, char*); - } - while(arg0 != NULL); - *ptr = 0; + ptr = str; + do + { + len = _tcslen(arg0); + memcpy(ptr, arg0, len); + ptr += len; + *ptr++ = delim; + arg0 = va_arg(alist2, _TCHAR*); + } + while(arg0 != NULL); + *ptr = 0; - return str; + return str; } static int -do_spawn(int mode, const char* cmdname, const char* args, const char* envp) +do_spawnT(int mode, const _TCHAR* cmdname, const _TCHAR* args, const _TCHAR* envp) { - STARTUPINFOA StartupInfo; - PROCESS_INFORMATION ProcessInformation; - char* fmode; - HANDLE* hFile; - int i, last; - BOOL bResult; - DWORD dwExitCode; - DWORD dwError; + STARTUPINFO StartupInfo = {0}; + PROCESS_INFORMATION ProcessInformation; +// char* fmode; +// HANDLE* hFile; +// int i, last; + BOOL bResult; + DWORD dwExitCode; + DWORD dwError; - DPRINT("do_spawn('%s')\n", cmdname); + TRACE(MK_STR(do_spawnT)"(%i,'%"sT"','%"sT"','%"sT"')",mode,cmdname,args,envp); + - if (mode != _P_NOWAIT && mode != _P_NOWAITO && mode != _P_WAIT && mode != _P_DETACH && mode != _P_OVERLAY) - { - __set_errno ( EINVAL ); - return -1; - } + if (mode != _P_NOWAIT && mode != _P_NOWAITO && mode != _P_WAIT && mode != _P_DETACH && mode != _P_OVERLAY) + { + __set_errno ( EINVAL ); + return( -1); + } - if (0 != _access(cmdname, F_OK)) - { - __set_errno ( ENOENT ); - return -1; - } - if (0 == _access(cmdname, D_OK)) - { - __set_errno ( EISDIR ); - return -1; - } + if (0 != _taccess(cmdname, F_OK)) + { + __set_errno ( ENOENT ); + return(-1); + } + if (0 == access_dirT(cmdname)) + { + __set_errno ( EISDIR ); + return(-1); + } + + //memset (&StartupInfo, 0, sizeof(StartupInfo)); + StartupInfo.cb = sizeof(StartupInfo); + +#if 0 - memset (&StartupInfo, 0, sizeof(StartupInfo)); - StartupInfo.cb = sizeof(StartupInfo); + for (last = i = 0; i < FDINFO_FD_MAX; i++) + { + if ((void*)-1 != _get_osfhandle(i)) + { + last = i + 1; + } + } - for (last = i = 0; i < maxfno; i++) - { - if ((void*)-1 != _get_osfhandle(i)) - { - last = i + 1; - } - } + if (last) + { + StartupInfo.cbReserved2 = sizeof(ULONG) + last * (sizeof(char) + sizeof(HANDLE)); + StartupInfo.lpReserved2 = malloc(StartupInfo.cbReserved2); + if (StartupInfo.lpReserved2 == NULL) + { + __set_errno ( ENOMEM ); + return -1; + } - if (last) - { - StartupInfo.cbReserved2 = sizeof(ULONG) + last * (sizeof(char) + sizeof(HANDLE)); - StartupInfo.lpReserved2 = malloc(StartupInfo.cbReserved2); - if (StartupInfo.lpReserved2 == NULL) - { - __set_errno ( ENOMEM ); - return -1; - } + *(DWORD*)StartupInfo.lpReserved2 = last; + fmode = (char*)(StartupInfo.lpReserved2 + sizeof(ULONG)); + hFile = (HANDLE*)(StartupInfo.lpReserved2 + sizeof(ULONG) + last * sizeof(char)); + for (i = 0; i < last; i++) + { + int _mode = __fileno_getmode(i); + HANDLE h = _get_osfhandle(i); + /* FIXME: The test of console handles (((ULONG)Handle) & 0x10000003) == 0x3) + * is possible wrong + */ + if ((((ULONG)h) & 0x10000003) == 0x3 || _mode & _O_NOINHERIT || (i < 3 && mode == _P_DETACH)) + { + *hFile = INVALID_HANDLE_VALUE; + *fmode = 0; + } + else + { + DWORD dwFlags; + BOOL bFlag; + bFlag = GetHandleInformation(h, &dwFlags); + if (bFlag && (dwFlags & HANDLE_FLAG_INHERIT)) + { + *hFile = h; + *fmode = (_O_ACCMODE & _mode) | (((_O_TEXT | _O_BINARY) & _mode) >> 8); + } + else + { + *hFile = INVALID_HANDLE_VALUE; + *fmode = 0; + } + } + fmode++; + hFile++; + } + } +#endif - *(DWORD*)StartupInfo.lpReserved2 = last; - fmode = (char*)(StartupInfo.lpReserved2 + sizeof(ULONG)); - hFile = (HANDLE*)(StartupInfo.lpReserved2 + sizeof(ULONG) + last * sizeof(char)); - for (i = 0; i < last; i++) - { - int _mode = __fileno_getmode(i); - HANDLE h = _get_osfhandle(i); - /* FIXME: The test of console handles (((ULONG)Handle) & 0x10000003) == 0x3) - * is possible wrong - */ - if ((((ULONG)h) & 0x10000003) == 0x3 || _mode & _O_NOINHERIT || (i < 3 && mode == _P_DETACH)) - { - *hFile = INVALID_HANDLE_VALUE; - *fmode = 0; - } - else - { - DWORD dwFlags; - BOOL bFlag; - bFlag = GetHandleInformation(h, &dwFlags); - if (bFlag && (dwFlags & HANDLE_FLAG_INHERIT)) - { - *hFile = h; - *fmode = (_O_ACCMODE & _mode) | (((_O_TEXT | _O_BINARY) & _mode) >> 8); - } - else - { - *hFile = INVALID_HANDLE_VALUE; - *fmode = 0; - } - } - fmode++; - hFile++; - } - } + create_io_inherit_block((STARTUPINFOA*) &StartupInfo); + + bResult = CreateProcess((_TCHAR *)cmdname, + (_TCHAR *)args, + NULL, + NULL, + TRUE, + mode == _P_DETACH ? DETACHED_PROCESS : 0, + (LPVOID)envp, + NULL, + &StartupInfo, + &ProcessInformation); + + if (StartupInfo.lpReserved2) + { + free(StartupInfo.lpReserved2); + } - bResult = CreateProcessA((char *)cmdname, - (char *)args, - NULL, - NULL, - TRUE, - mode == _P_DETACH ? DETACHED_PROCESS : 0, - (LPVOID)envp, - NULL, - &StartupInfo, - &ProcessInformation); - if (StartupInfo.lpReserved2) - { - free(StartupInfo.lpReserved2); - } - - if (!bResult) - { - dwError = GetLastError(); - DPRINT("%x\n", dwError); - __set_errno(dwError); - return -1; - } - CloseHandle(ProcessInformation.hThread); - switch(mode) - { - case _P_OVERLAY: - _exit(0); - case _P_WAIT: - WaitForSingleObject(ProcessInformation.hProcess, INFINITE); - GetExitCodeProcess(ProcessInformation.hProcess, &dwExitCode); - CloseHandle(ProcessInformation.hProcess); - return (int)dwExitCode; - case _P_DETACH: - CloseHandle(ProcessInformation.hProcess); - return 0; - } - return (int)ProcessInformation.hProcess; + if (!bResult) + { + dwError = GetLastError(); + DPRINT("%x\n", dwError); + __set_errno(dwError); + return(-1); + } + CloseHandle(ProcessInformation.hThread); + switch(mode) + { + case _P_NOWAIT: + case _P_NOWAITO: + CloseHandle(ProcessInformation.hThread); + return((int)ProcessInformation.hProcess); + case _P_OVERLAY: + _exit(0); + case _P_WAIT: + WaitForSingleObject(ProcessInformation.hProcess, INFINITE); + GetExitCodeProcess(ProcessInformation.hProcess, &dwExitCode); + CloseHandle(ProcessInformation.hProcess); + CloseHandle(ProcessInformation.hThread); + return( (int)dwExitCode); //CORRECT? + case _P_DETACH: + CloseHandle(ProcessInformation.hProcess); + CloseHandle(ProcessInformation.hThread); + return( 0); + } + return( (int)ProcessInformation.hProcess); } /* * @implemented */ -int _spawnl(int mode, const char *cmdname, const char* arg0, ...) +int _tspawnl(int mode, const _TCHAR *cmdname, const _TCHAR* arg0, ...) { - va_list argp; - char* args; - int ret = -1; + va_list argp; + _TCHAR* args; + int ret = -1; - DPRINT("_spawnl('%s')\n", cmdname); + DPRINT(MK_STR(_tspawnl)"('%"sT"')\n", cmdname); - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); - if (args) - { - ret = do_spawn(mode, cmdname, args, NULL); - free(args); - } - return ret; + if (args) + { + ret = do_spawnT(mode, cmdname, args, NULL); + free(args); + } + return ret; } /* * @implemented */ -int _spawnv(int mode, const char *cmdname, char* const* argv) +int _tspawnv(int mode, const _TCHAR *cmdname, const _TCHAR* const* argv) { - char* args; - int ret = -1; + _TCHAR* args; + int ret = -1; - DPRINT("_spawnv('%s')\n", cmdname); + DPRINT(MK_STR(_tspawnv)"('%"sT"')\n", cmdname); - args = argvtos(argv, ' '); + args = argvtosT(argv, ' '); - if (args) - { - ret = do_spawn(mode, cmdname, args, NULL); - free(args); - } - return ret; + if (args) + { + ret = do_spawnT(mode, cmdname, args, NULL); + free(args); + } + return ret; } /* * @implemented */ -int _spawnle(int mode, const char *cmdname, const char* arg0, ... /*, NULL, const char* const* envp*/) +int _tspawnle(int mode, const _TCHAR *cmdname, const _TCHAR* arg0, ... /*, NULL, const char* const* envp*/) { - va_list argp; - char* args; - char* envs; - char* const* ptr; - int ret = -1; + va_list argp; + _TCHAR* args; + _TCHAR* envs; + _TCHAR const * const* ptr; + int ret = -1; - DPRINT("_spawnle('%s')\n", cmdname); + DPRINT(MK_STR(_tspawnle)"('%"sT"')\n", cmdname); + + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); + do + { + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + } + while (ptr != NULL); + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + envs = argvtosT(ptr, 0); + if (args) + { + ret = do_spawnT(mode, cmdname, args, envs); + free(args); + } + if (envs) + { + free(envs); + } + return ret; - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); - do - { - ptr = (char* const*)va_arg(argp, char*); - } - while (ptr != NULL); - ptr = (char* const*)va_arg(argp, char*); - envs = argvtos(ptr, 0); - if (args) - { - ret = do_spawn(mode, cmdname, args, envs); - free(args); - } - if (envs) - { - free(envs); - } - return ret; - } /* * @implemented */ -int _spawnve(int mode, const char *cmdname, char* const* argv, char* const* envp) +int _tspawnve(int mode, const _TCHAR *cmdname, const _TCHAR* const* argv, const _TCHAR* const* envp) { - char *args; - char *envs; - int ret = -1; + _TCHAR *args; + _TCHAR *envs; + int ret = -1; - DPRINT("_spawnve('%s')\n", cmdname); + DPRINT(MK_STR(_tspawnve)"('%"sT"')\n", cmdname); - args = argvtos(argv, ' '); - envs = argvtos(envp, 0); + args = argvtosT(argv, ' '); + envs = argvtosT(envp, 0); - if (args) - { - ret = do_spawn(mode, cmdname, args, envs); - free(args); - } - if (envs) - { - free(envs); - } - return ret; + if (args) + { + ret = do_spawnT(mode, cmdname, args, envs); + free(args); + } + if (envs) + { + free(envs); + } + return ret; } /* * @implemented */ -int _spawnvp(int mode, const char* cmdname, char* const* argv) +int _tspawnvp(int mode, const _TCHAR* cmdname, const _TCHAR* const* argv) { - char pathname[FILENAME_MAX]; - - DPRINT("_spawnvp('%s')\n", cmdname); + _TCHAR pathname[FILENAME_MAX]; - return _spawnv(mode, find_exec(cmdname, pathname), argv); + DPRINT(MK_STR(_tspawnvp)"('%"sT"')\n", cmdname); + + return _tspawnv(mode, find_execT(cmdname, pathname), argv); } /* * @implemented */ -int _spawnlp(int mode, const char* cmdname, const char* arg0, .../*, NULL*/) +int _tspawnlp(int mode, const _TCHAR* cmdname, const _TCHAR* arg0, .../*, NULL*/) { - va_list argp; - char* args; - int ret = -1; - char pathname[FILENAME_MAX]; + va_list argp; + _TCHAR* args; + int ret = -1; + _TCHAR pathname[FILENAME_MAX]; - DPRINT("_spawnlp('%s')\n", cmdname); + DPRINT(MK_STR(_tspawnlp)"('%"sT"')\n", cmdname); - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); - if (args) - { - ret = do_spawn(mode, find_exec(cmdname, pathname), args, NULL); - free(args); - } - return ret; + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); + if (args) + { + ret = do_spawnT(mode, find_execT(cmdname, pathname), args, NULL); + free(args); + } + return ret; } /* * @implemented */ -int _spawnlpe(int mode, const char* cmdname, const char* arg0, .../*, NULL, const char* const* envp*/) +int _tspawnlpe(int mode, const _TCHAR* cmdname, const _TCHAR* arg0, .../*, NULL, const char* const* envp*/) { - va_list argp; - char* args; - char* envs; - char* const * ptr; - int ret = -1; - char pathname[FILENAME_MAX]; + va_list argp; + _TCHAR* args; + _TCHAR* envs; + _TCHAR const* const * ptr; + int ret = -1; + _TCHAR pathname[FILENAME_MAX]; - DPRINT("_spawnlpe('%s')\n", cmdname); + DPRINT(MK_STR(_tspawnlpe)"('%"sT"')\n", cmdname); - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); - do - { - ptr = (char* const*)va_arg(argp, char*); - } - while (ptr != NULL); - ptr = (char* const*)va_arg(argp, char*); - envs = argvtos(ptr, 0); - if (args) - { - ret = do_spawn(mode, find_exec(cmdname, pathname), args, envs); - free(args); - } - if (envs) - { - free(envs); - } - return ret; + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); + do + { + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + } + while (ptr != NULL); + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + envs = argvtosT(ptr, 0); + if (args) + { + ret = do_spawnT(mode, find_execT(cmdname, pathname), args, envs); + free(args); + } + if (envs) + { + free(envs); + } + return ret; } /* * @implemented */ -int _spawnvpe(int mode, const char* cmdname, char* const* argv, char* const* envp) +int _tspawnvpe(int mode, const _TCHAR* cmdname, const _TCHAR* const* argv, const _TCHAR* const* envp) { - char pathname[FILENAME_MAX]; - - DPRINT("_spawnvpe('%s')\n", cmdname); + _TCHAR pathname[FILENAME_MAX]; - return _spawnve(mode, find_exec(cmdname, pathname), argv, envp); + DPRINT(MK_STR(_tspawnvpe)"('%"sT"')\n", cmdname); + + return _tspawnve(mode, find_execT(cmdname, pathname), argv, envp); } /* * @implemented */ -int _execl(const char* cmdname, const char* arg0, ...) +int _texecl(const _TCHAR* cmdname, const _TCHAR* arg0, ...) { - char* args; - va_list argp; - int ret = -1; + _TCHAR* args; + va_list argp; + int ret = -1; - DPRINT("_execl('%s')\n", cmdname); + DPRINT(MK_STR(_texecl)"('%"sT"')\n", cmdname); - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); - if (args) - { - ret = do_spawn(P_OVERLAY, cmdname, args, NULL); - free(args); - } - return ret; + if (args) + { + ret = do_spawnT(P_OVERLAY, cmdname, args, NULL); + free(args); + } + return ret; } /* * @implemented */ -int _execv(const char* cmdname, char* const* argv) +int _texecv(const _TCHAR* cmdname, const _TCHAR* const* argv) { - DPRINT("_execv('%s')\n", cmdname); - return _spawnv(P_OVERLAY, cmdname, argv); + DPRINT(MK_STR(_texecv)"('%"sT"')\n", cmdname); + return _tspawnv(P_OVERLAY, cmdname, argv); } /* * @implemented */ -int _execle(const char* cmdname, const char* arg0, ... /*, NULL, char* const* envp */) +int _texecle(const _TCHAR* cmdname, const _TCHAR* arg0, ... /*, NULL, char* const* envp */) { - va_list argp; - char* args; - char* envs; - char* const* ptr; - int ret = -1; + va_list argp; + _TCHAR* args; + _TCHAR* envs; + _TCHAR const* const* ptr; + int ret = -1; - DPRINT("_execle('%s')\n", cmdname); + DPRINT(MK_STR(_texecle)"('%"sT"')\n", cmdname); - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); - do - { - ptr = (char* const*)va_arg(argp, char*); - } - while (ptr != NULL); - ptr = (char* const*)va_arg(argp, char*); - envs = argvtos(ptr, 0); - if (args) - { - ret = do_spawn(P_OVERLAY, cmdname, args, envs); - free(args); - } - if (envs) - { - free(envs); - } - return ret; + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); + do + { + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + } + while (ptr != NULL); + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + envs = argvtosT(ptr, 0); + if (args) + { + ret = do_spawnT(P_OVERLAY, cmdname, args, envs); + free(args); + } + if (envs) + { + free(envs); + } + return ret; } /* * @implemented */ -int _execve(const char* cmdname, char* const* argv, char* const* envp) +int _texecve(const _TCHAR* cmdname, const _TCHAR* const* argv, const _TCHAR* const* envp) { - DPRINT("_execve('%s')\n", cmdname); - return _spawnve(P_OVERLAY, cmdname, argv, envp); + DPRINT(MK_STR(_texecve)"('%"sT"')\n", cmdname); + return _tspawnve(P_OVERLAY, cmdname, argv, envp); } /* * @implemented */ -int _execlp(const char* cmdname, const char* arg0, ...) +int _texeclp(const _TCHAR* cmdname, const _TCHAR* arg0, ...) { - char* args; - va_list argp; - int ret = -1; - char pathname[FILENAME_MAX]; + _TCHAR* args; + va_list argp; + int ret = -1; + _TCHAR pathname[FILENAME_MAX]; - DPRINT("_execlp('%s')\n", cmdname); + DPRINT(MK_STR(_texeclp)"('%"sT"')\n", cmdname); - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); - if (args) - { - ret = do_spawn(P_OVERLAY, find_exec(cmdname, pathname), args, NULL); - free(args); - } - return ret; + if (args) + { + ret = do_spawnT(P_OVERLAY, find_execT(cmdname, pathname), args, NULL); + free(args); + } + return ret; } /* * @implemented */ -int _execvp(const char* cmdname, char* const* argv) +int _texecvp(const _TCHAR* cmdname, const _TCHAR* const* argv) { - DPRINT("_execvp('%s')\n", cmdname); - return _spawnvp(P_OVERLAY, cmdname, argv); + DPRINT(MK_STR(_texecvp)"('%"sT"')\n", cmdname); + return _tspawnvp(P_OVERLAY, cmdname, argv); } /* * @implemented */ -int _execlpe(const char* cmdname, const char* arg0, ... /*, NULL, char* const* envp */) +int _texeclpe(const _TCHAR* cmdname, const _TCHAR* arg0, ... /*, NULL, char* const* envp */) { - va_list argp; - char* args; - char* envs; - char* const* ptr; - int ret = -1; - char pathname[FILENAME_MAX]; + va_list argp; + _TCHAR* args; + _TCHAR* envs; + _TCHAR const* const* ptr; + int ret = -1; + _TCHAR pathname[FILENAME_MAX]; - DPRINT("_execlpe('%s')\n", cmdname); + DPRINT(MK_STR(_texeclpe)"('%"sT"')\n", cmdname); - va_start(argp, arg0); - args = valisttos(arg0, argp, ' '); - do - { - ptr = (char* const*)va_arg(argp, char*); - } - while (ptr != NULL); - ptr = (char* const*)va_arg(argp, char*); - envs = argvtos(ptr, 0); - if (args) - { - ret = do_spawn(P_OVERLAY, find_exec(cmdname, pathname), args, envs); - free(args); - } - if (envs) - { - free(envs); - } - return ret; + va_start(argp, arg0); + args = valisttosT(arg0, argp, ' '); + do + { + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + } + while (ptr != NULL); + ptr = (_TCHAR const* const*)va_arg(argp, _TCHAR*); + envs = argvtosT(ptr, 0); + if (args) + { + ret = do_spawnT(P_OVERLAY, find_execT(cmdname, pathname), args, envs); + free(args); + } + if (envs) + { + free(envs); + } + return ret; } /* * @implemented */ -int _execvpe(const char* cmdname, char* const* argv, char* const* envp) +int _texecvpe(const _TCHAR* cmdname, const _TCHAR* const* argv, const _TCHAR* const* envp) { - DPRINT("_execvpe('%s')\n", cmdname); - return _spawnvpe(P_OVERLAY, cmdname, argv, envp); + DPRINT(MK_STR(_texecvpe)"('%"sT"')\n", cmdname); + return _tspawnvpe(P_OVERLAY, cmdname, argv, envp); } + diff --git a/reactos/lib/crt/process/procid.c b/reactos/lib/crt/process/procid.c index 87c145828c6..09c1a830573 100644 --- a/reactos/lib/crt/process/procid.c +++ b/reactos/lib/crt/process/procid.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include /* * @implemented diff --git a/reactos/lib/crt/process/thread.c b/reactos/lib/crt/process/thread.c index 1c601745c3f..fd59896dae5 100644 --- a/reactos/lib/crt/process/thread.c +++ b/reactos/lib/crt/process/thread.c @@ -1,7 +1,7 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include #if 0 /* diff --git a/reactos/lib/crt/process/threadid.c b/reactos/lib/crt/process/threadid.c index 5d225c73f33..7e68e94402a 100644 --- a/reactos/lib/crt/process/threadid.c +++ b/reactos/lib/crt/process/threadid.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include /* diff --git a/reactos/lib/crt/process/threadx.c b/reactos/lib/crt/process/threadx.c index d86d62e27e7..8dc630110be 100644 --- a/reactos/lib/crt/process/threadx.c +++ b/reactos/lib/crt/process/threadx.c @@ -1,7 +1,7 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/process/wprocess.c b/reactos/lib/crt/process/wprocess.c new file mode 100644 index 00000000000..9bee2c8df4e --- /dev/null +++ b/reactos/lib/crt/process/wprocess.c @@ -0,0 +1,4 @@ +#define _UNICODE +#define UNICODE + +#include "process.c" diff --git a/reactos/lib/crt/search/lfind.c b/reactos/lib/crt/search/lfind.c index e89efa63c9b..72a7ceea1d2 100644 --- a/reactos/lib/crt/search/lfind.c +++ b/reactos/lib/crt/search/lfind.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/search/lsearch.c b/reactos/lib/crt/search/lsearch.c index a8465ae7853..37df9ffb003 100644 --- a/reactos/lib/crt/search/lsearch.c +++ b/reactos/lib/crt/search/lsearch.c @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/signal/signal.c b/reactos/lib/crt/signal/signal.c index 6272b2f6854..3df1deee360 100644 --- a/reactos/lib/crt/signal/signal.c +++ b/reactos/lib/crt/signal/signal.c @@ -1,77 +1,85 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include void _default_handler(int signal); -typedef struct _sig_element +//typedef void (*_p_sig_fn_t)(int); + + +typedef struct _sig_element { - int signal; - char *signame; - _p_sig_fn_t handler; -} sig_element; + int signal; + char *signame; + __p_sig_fn_t handler; +} +sig_element; -static sig_element signal_list[SIGMAX] = - { - { 0, "Signal 0", SIG_DFL }, - { SIGABRT, "Aborted",SIG_DFL }, - { SIGFPE, "Erroneous arithmetic operation",SIG_DFL }, - { SIGILL, "Illegal instruction",SIG_DFL }, - { SIGINT, "Interrupt",SIG_DFL }, - { SIGSEGV, "Invalid access to storage",SIG_DFL }, - { SIGTERM, "Terminated",SIG_DFL }, - { SIGHUP, "Hangup",SIG_DFL }, - { SIGQUIT, "Quit",SIG_DFL }, - { SIGPIPE, "Broken pipe",SIG_DFL }, - { SIGKILL, "Killed",SIG_DFL }, - { SIGALRM, "Alarm clock",SIG_DFL }, - { 0, "Stopped (signal)",SIG_DFL }, - { 0, "Stopped",SIG_DFL }, - { 0, "Continued",SIG_DFL }, - { 0, "Child exited",SIG_DFL }, - { 0, "Stopped (tty input)",SIG_DFL }, - { 0, "Stopped (tty output)",SIG_DFL }, - { 0, NULL, SIG_DFL } - }; -int nsignal = 21; +static sig_element signal_list[] = + { + { SIGINT, "CTRL+C",SIG_DFL }, + { SIGILL, "Illegal instruction",SIG_DFL }, + { SIGFPE, "Floating-point exception",SIG_DFL }, + { SIGSEGV, "Illegal storage access",SIG_DFL }, + { SIGTERM, "Termination request",SIG_DFL }, + { SIGBREAK, "CTRL+BREAK",SIG_DFL }, + { SIGABRT, "Abnormal termination",SIG_DFL } + }; + +//int nsignal = 21; /* * @implemented */ -_p_sig_fn_t signal(int sig, _p_sig_fn_t func) +//void ( *signal( int sig, void (__cdecl *func) ( int sig [, int subcode ] )) ) ( int sig ); + + + + +__p_sig_fn_t signal(int sig, __p_sig_fn_t func) { - _p_sig_fn_t temp; - int i; - if(sig <= 0 || sig > SIGMAX || sig == SIGKILL) - { - __set_errno(EINVAL); - return SIG_ERR; - } -// check with IsBadCodePtr + __p_sig_fn_t temp; + int i; - if ( func < (_p_sig_fn_t)4096 ) { - __set_errno(EINVAL); - return SIG_ERR; - } + switch (sig) + { + case SIGINT: + case SIGILL: + case SIGFPE: + case SIGSEGV: + case SIGTERM: + case SIGBREAK: + case SIGABRT: + break; - for(i=0;i SIGMAX) - return -1; - for(i=0;i SIGMAX) + // return -1; + + for(i=0;i +#include /* * @unimplemented diff --git a/reactos/lib/crt/stdio/allocfil.c b/reactos/lib/crt/stdio/allocfil.c index d1e08f2f2c7..d8fc1b24e3c 100644 --- a/reactos/lib/crt/stdio/allocfil.c +++ b/reactos/lib/crt/stdio/allocfil.c @@ -1,11 +1,10 @@ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include +#include +#include +#include +#include -FILE * __alloc_file(void); char __validfp (FILE *f) { diff --git a/reactos/lib/crt/stdio/clearerr.c b/reactos/lib/crt/stdio/clearerr.c index 29ff9120475..48aaeeae78d 100644 --- a/reactos/lib/crt/stdio/clearerr.c +++ b/reactos/lib/crt/stdio/clearerr.c @@ -1,7 +1,8 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include + #ifdef clearerr #undef clearerr diff --git a/reactos/lib/crt/stdio/fclose.c b/reactos/lib/crt/stdio/fclose.c index f39c21f1a91..62591986cd0 100644 --- a/reactos/lib/crt/stdio/fclose.c +++ b/reactos/lib/crt/stdio/fclose.c @@ -1,12 +1,14 @@ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include + // changed check for writable stream @@ -31,17 +33,17 @@ fclose(FILE *f) if ( OPEN4WRITING(f) ) r = fflush(f); - if (_close(fileno(f)) < 0) + if (_close(_fileno(f)) < 0) r = EOF; if (f->_flag&_IOMYBUF) free(f->_base); // Kernel might do this later - if (f->_flag & _IORMONCL && f->_name_to_remove) + if (f->_flag & _IORMONCL && f->_tmpfname) { - remove(f->_name_to_remove); - free(f->_name_to_remove); - f->_name_to_remove = 0; + remove(f->_tmpfname); + free(f->_tmpfname); + f->_tmpfname = 0; } } f->_cnt = 0; diff --git a/reactos/lib/crt/stdio/fdopen.c b/reactos/lib/crt/stdio/fdopen.c index f6d44ace5b4..198fad78397 100644 --- a/reactos/lib/crt/stdio/fdopen.c +++ b/reactos/lib/crt/stdio/fdopen.c @@ -1,13 +1,22 @@ -#include -#include -FILE* __alloc_file(void); + +#include +#include +#include + + + + /* * @implemented */ -FILE* _fdopen(int handle, char* mode) +FILE* _tfdopen(int handle, +#ifndef _UNICODE + const +#endif + _TCHAR* mode) { FILE* file; int rw; @@ -21,12 +30,6 @@ FILE* _fdopen(int handle, char* mode) if (handle == 2) return stderr; - if (handle == 3) - return stdaux; - - if (handle == 4) - return stdprn; - file = __alloc_file(); if (file == NULL) return NULL; @@ -55,3 +58,5 @@ FILE* _fdopen(int handle, char* mode) return file; } + + diff --git a/reactos/lib/crt/stdio/feof.c b/reactos/lib/crt/stdio/feof.c index 9591e213705..60aa3b5cb26 100644 --- a/reactos/lib/crt/stdio/feof.c +++ b/reactos/lib/crt/stdio/feof.c @@ -1,7 +1,7 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include #ifdef feof #undef feof diff --git a/reactos/lib/crt/stdio/ferror.c b/reactos/lib/crt/stdio/ferror.c index f9381703ca8..b1aeb084d2b 100644 --- a/reactos/lib/crt/stdio/ferror.c +++ b/reactos/lib/crt/stdio/ferror.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include #ifdef ferror #undef ferror diff --git a/reactos/lib/crt/stdio/fflush.c b/reactos/lib/crt/stdio/fflush.c index e70e4cf41ef..8327160be61 100644 --- a/reactos/lib/crt/stdio/fflush.c +++ b/reactos/lib/crt/stdio/fflush.c @@ -11,13 +11,14 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include /* @@ -75,7 +76,7 @@ int fflush(FILE *f) if ((f->_flag & _IOFBF) == _IOFBF) { if ( (f->_flag & _IOAHEAD) == _IOAHEAD ) - _lseek(fileno(f),-rn, SEEK_CUR); + _lseek(_fileno(f),-rn, SEEK_CUR); } f->_flag &= ~_IOAHEAD; @@ -89,7 +90,7 @@ int fflush(FILE *f) // better open the file in write through mode while (rn > 0) { - n = _write(fileno(f), base, rn); + n = _write(_fileno(f), base, rn); if (n <= 0) { f->_flag |= _IOERR; return EOF; @@ -100,7 +101,7 @@ int fflush(FILE *f) f->_flag &= ~_IODIRTY; // commit flushed data -// _commit(fileno(f)); +// _commit(_fileno(f)); } if (OPEN4READING(f) && OPEN4WRITING(f) ) { diff --git a/reactos/lib/crt/stdio/fgetc.c b/reactos/lib/crt/stdio/fgetc.c index e26fe17615d..7d02b2add8f 100644 --- a/reactos/lib/crt/stdio/fgetc.c +++ b/reactos/lib/crt/stdio/fgetc.c @@ -9,8 +9,8 @@ 25/02/99: Added fgetwc */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdio/fgetchar.c b/reactos/lib/crt/stdio/fgetchar.c index 7dd752a82d5..d7200f14ced 100644 --- a/reactos/lib/crt/stdio/fgetchar.c +++ b/reactos/lib/crt/stdio/fgetchar.c @@ -21,8 +21,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include -#include +#include +#include int _fgetchar(void) { diff --git a/reactos/lib/crt/stdio/fgetpos.c b/reactos/lib/crt/stdio/fgetpos.c index b4b61247e98..5ff194fbb6e 100644 --- a/reactos/lib/crt/stdio/fgetpos.c +++ b/reactos/lib/crt/stdio/fgetpos.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdio/fgets.c b/reactos/lib/crt/stdio/fgets.c index 403f4629ea9..8b721eb9c47 100644 --- a/reactos/lib/crt/stdio/fgets.c +++ b/reactos/lib/crt/stdio/fgets.c @@ -25,8 +25,8 @@ */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include char* fgets(char* s, int n, FILE* f) diff --git a/reactos/lib/crt/stdio/fgetws.c b/reactos/lib/crt/stdio/fgetws.c index 0f2dae645dd..fece814b605 100644 --- a/reactos/lib/crt/stdio/fgetws.c +++ b/reactos/lib/crt/stdio/fgetws.c @@ -25,8 +25,8 @@ */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include //#include diff --git a/reactos/lib/crt/stdio/filbuf.c b/reactos/lib/crt/stdio/filbuf.c index 64b2134f5c3..db07a54135a 100644 --- a/reactos/lib/crt/stdio/filbuf.c +++ b/reactos/lib/crt/stdio/filbuf.c @@ -2,14 +2,14 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include int _readcnv(int fn, void* buf, size_t siz); @@ -57,7 +57,7 @@ int _filbuf(FILE* f) - f->_cnt = _read(fileno(f), f->_base, f->_flag & _IONBF ? 1 : f->_bufsiz ); + f->_cnt = _read(_fileno(f), f->_base, f->_flag & _IONBF ? 1 : f->_bufsiz ); f->_flag |= _IOAHEAD; if(__is_text_file(f) && f->_cnt>0) @@ -67,7 +67,7 @@ int _filbuf(FILE* f) if(cz) { int newcnt = cz - f->_base; - lseek(fileno(f), -(f->_cnt - newcnt), SEEK_CUR); + _lseek(_fileno(f), -(f->_cnt - newcnt), SEEK_CUR); f->_cnt = newcnt; } } diff --git a/reactos/lib/crt/stdio/fileno.c b/reactos/lib/crt/stdio/fileno.c index 9c6900ed71b..454615c1c4c 100644 --- a/reactos/lib/crt/stdio/fileno.c +++ b/reactos/lib/crt/stdio/fileno.c @@ -1,12 +1,7 @@ -#include +#include +#include -#if 0 -#undef fileno -int fileno(FILE *f) -{ - return f->_file; -} -#endif +#undef _fileno /* * @implemented diff --git a/reactos/lib/crt/stdio/flsbuf.c b/reactos/lib/crt/stdio/flsbuf.c index 2ca113c15be..7875a2312a6 100644 --- a/reactos/lib/crt/stdio/flsbuf.c +++ b/reactos/lib/crt/stdio/flsbuf.c @@ -1,14 +1,13 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include -#include -#include - +#include +#include +#include +#include +#include +#include +#include int cntcr(char* bufp, int bufsiz); int convert(char* endp, int bufsiz, int n); @@ -31,7 +30,7 @@ int _flsbuf(int c, FILE* f) } // no file associated with buffer, this is a memory stream - if (fileno(f) == -1) { + if (_fileno(f) == -1) { return c; } @@ -46,7 +45,7 @@ int _flsbuf(int c, FILE* f) f->_cnt = f->_bufsiz = size; f->_ptr = base; rn = 0; - if (f == stdout && isatty(fileno(stdout))) { + if (f == stdout && _isatty(_fileno(stdout))) { f->_flag |= _IO_LBF; } } @@ -76,13 +75,13 @@ int _flsbuf(int c, FILE* f) rn = f->_ptr - base; f->_ptr = base; if ((f->_flag & _IOAHEAD) == _IOAHEAD) - _lseek(fileno(f), -(rn+f->_cnt), SEEK_CUR); + _lseek(_fileno(f), -(rn+f->_cnt), SEEK_CUR); f->_cnt = f->_bufsiz; f->_flag &= ~_IOAHEAD; } f->_flag &= ~_IODIRTY; while (rn > 0) { - n = _write(fileno(f), base, rn); + n = _write(_fileno(f), base, rn); if (n <= 0) { f->_flag |= _IOERR; return EOF; diff --git a/reactos/lib/crt/stdio/fopen.c b/reactos/lib/crt/stdio/fopen.c index eb309c9f798..3de3c2cb434 100644 --- a/reactos/lib/crt/stdio/fopen.c +++ b/reactos/lib/crt/stdio/fopen.c @@ -25,16 +25,15 @@ */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include //might change fopen(file,mode) -> fsopen(file,mode,_SH_DENYNO); -FILE* __alloc_file(void); FILE* fopen(const char *file, const char *mode) @@ -63,7 +62,7 @@ FILE* fopen(const char *file, const char *mode) else if (strchr(mode, 'b')) oflags |= O_BINARY; else - oflags |= (__fmode & (O_TEXT|O_BINARY)); + oflags |= (_fmode& (O_TEXT|O_BINARY)); fd = _open(file, oflags, 0); if (fd < 0) @@ -73,7 +72,7 @@ FILE* fopen(const char *file, const char *mode) // we just move the file pointer to the end of file initially if (strchr(mode, 'a')) - lseek(fd, 0, SEEK_END); + _lseek(fd, 0, SEEK_END); f->_cnt = 0; f->_file = fd; @@ -89,7 +88,7 @@ FILE* fopen(const char *file, const char *mode) f->_flag |= _IOTEXT; else if (strchr(mode, 'b')) f->_flag |= _IOBINARY; - else if (__fmode & O_BINARY) + else if (_fmode& O_BINARY) f->_flag |= _IOBINARY; f->_base = f->_ptr = NULL; @@ -125,7 +124,7 @@ FILE* _wfopen(const wchar_t *file, const wchar_t *mode) else if (wcschr(mode, L'b')) oflags |= O_BINARY; else - oflags |= (__fmode & (O_TEXT|O_BINARY)); + oflags |= (_fmode& (O_TEXT|O_BINARY)); fd = _wopen(file, oflags, 0); if (fd < 0) @@ -134,7 +133,7 @@ FILE* _wfopen(const wchar_t *file, const wchar_t *mode) // msvcrt ensures that writes will end up at the end of file in append mode // we just move the file pointer to the end of file initially if (wcschr(mode, 'a')) - lseek(fd, 0, SEEK_END); + _lseek(fd, 0, SEEK_END); f->_cnt = 0; f->_file = fd; @@ -150,7 +149,7 @@ FILE* _wfopen(const wchar_t *file, const wchar_t *mode) f->_flag |= _IOTEXT; else if (wcschr(mode, L'b')) f->_flag |= _IOBINARY; - else if (__fmode & O_BINARY) + else if (_fmode& O_BINARY) f->_flag |= _IOBINARY; f->_base = f->_ptr = NULL; diff --git a/reactos/lib/crt/stdio/fprintf.c b/reactos/lib/crt/stdio/fprintf.c index a5589b6de6a..dc56b3aba26 100644 --- a/reactos/lib/crt/stdio/fprintf.c +++ b/reactos/lib/crt/stdio/fprintf.c @@ -1,7 +1,7 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdio/fputc.c b/reactos/lib/crt/stdio/fputc.c index c08cccec557..55dde146538 100644 --- a/reactos/lib/crt/stdio/fputc.c +++ b/reactos/lib/crt/stdio/fputc.c @@ -1,7 +1,7 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdio/fputchar.c b/reactos/lib/crt/stdio/fputchar.c index 7faa7be615b..8ec8edb312c 100644 --- a/reactos/lib/crt/stdio/fputchar.c +++ b/reactos/lib/crt/stdio/fputchar.c @@ -21,7 +21,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include +#include int _fputchar(int c) @@ -32,7 +32,7 @@ int _fputchar(int c) /* * @implemented */ -int _fputwchar(wchar_t c) +wint_t _fputwchar(wint_t c) { return putwc(c, stdout); } diff --git a/reactos/lib/crt/stdio/fputs.c b/reactos/lib/crt/stdio/fputs.c index de54fd02ebc..36c082bbda3 100644 --- a/reactos/lib/crt/stdio/fputs.c +++ b/reactos/lib/crt/stdio/fputs.c @@ -26,51 +26,18 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include "precomp.h" -#include -#include -#include +#include +#include +#include +#include int -fputs(const char *s, FILE *f) +_fputts(const _TCHAR *s, FILE *f) { int r = 0; int c; int unbuffered; - char localbuf[BUFSIZ]; - - unbuffered = f->_flag & _IONBF; - if (unbuffered) - { - f->_flag &= ~_IONBF; - f->_ptr = f->_base = localbuf; - f->_bufsiz = BUFSIZ; - } - - while ((c = *s++)) - r = putc(c, f); - - if (unbuffered) - { - fflush(f); - f->_flag |= _IONBF; - f->_base = NULL; - f->_bufsiz = 0; - f->_cnt = 0; - } - - return(r); -} - -/* - * @implemented - */ -int -fputws(const wchar_t* s, FILE* f) -{ - int r = 0; - int unbuffered; - wchar_t c; - wchar_t localbuf[BUFSIZ]; + _TCHAR localbuf[BUFSIZ]; unbuffered = f->_flag & _IONBF; if (unbuffered) @@ -81,7 +48,7 @@ fputws(const wchar_t* s, FILE* f) } while ((c = *s++)) - r = putwc(c, f); + r = _puttc(c, f); if (unbuffered) { @@ -91,5 +58,7 @@ fputws(const wchar_t* s, FILE* f) f->_bufsiz = 0; f->_cnt = 0; } + return(r); } + diff --git a/reactos/lib/crt/stdio/fputws.c b/reactos/lib/crt/stdio/fputws.c new file mode 100644 index 00000000000..e024d58220c --- /dev/null +++ b/reactos/lib/crt/stdio/fputws.c @@ -0,0 +1,5 @@ + +#define UNICODE +#define _UNICODE + +#include "fputs.c" diff --git a/reactos/lib/crt/stdio/fread.c b/reactos/lib/crt/stdio/fread.c index 8f6136cc629..905e74e76f6 100644 --- a/reactos/lib/crt/stdio/fread.c +++ b/reactos/lib/crt/stdio/fread.c @@ -1,8 +1,8 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* @@ -60,7 +60,7 @@ size_t fread(void *vptr, size_t size, size_t count, FILE *iop) if (to_read >= iop->_bufsiz) { - n_read = _read(fileno(iop), ptr, to_read); + n_read = _read(_fileno(iop), ptr, to_read); if (n_read < 0) iop->_flag |= _IOERR; else if (n_read == 0) diff --git a/reactos/lib/crt/stdio/freopen.c b/reactos/lib/crt/stdio/freopen.c index 881e765e889..738eb199a3c 100644 --- a/reactos/lib/crt/stdio/freopen.c +++ b/reactos/lib/crt/stdio/freopen.c @@ -1,19 +1,20 @@ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include /* * @implemented */ -FILE *freopen(const char *file, const char *mode, FILE *f) +FILE *_tfreopen(const _TCHAR *file, const _TCHAR *mode, FILE *f) { int fd, rw, oflags=0; - char tbchar; + _TCHAR tbchar; if (file == 0 || mode == 0 || f == 0) return 0; @@ -44,14 +45,14 @@ FILE *freopen(const char *file, const char *mode, FILE *f) else if (tbchar == 'b') oflags |= O_BINARY; else - oflags |= (__fmode & (O_TEXT|O_BINARY)); + oflags |= (_fmode& (O_TEXT|O_BINARY)); - fd = _open(file, oflags, 0666); + fd = _topen(file, oflags, 0666); if (fd < 0) return NULL; if (*mode == 'a') - lseek(fd, 0, SEEK_END); + _lseek(fd, 0, SEEK_END); f->_cnt = 0; f->_file = fd; @@ -67,62 +68,3 @@ FILE *freopen(const char *file, const char *mode, FILE *f) return f; } -/* - * @implemented - */ -FILE *_wfreopen(const wchar_t *file, const wchar_t *mode, FILE *f) -{ - int fd, rw, oflags=0; - wchar_t tbchar; - - if (file == 0 || mode == 0 || f == 0) - return 0; - - rw = (mode[1] == L'+'); - - fclose(f); - - switch (*mode) { - case L'a': - oflags = O_CREAT | (rw ? O_RDWR : O_WRONLY); - break; - case L'r': - oflags = rw ? O_RDWR : O_RDONLY; - break; - case L'w': - oflags = O_TRUNC | O_CREAT | (rw ? O_RDWR : O_WRONLY); - break; - default: - return NULL; - } - if (mode[1] == L'+') - tbchar = mode[2]; - else - tbchar = mode[1]; - if (tbchar == L't') - oflags |= O_TEXT; - else if (tbchar == L'b') - oflags |= O_BINARY; - else - oflags |= (__fmode & (O_TEXT|O_BINARY)); - - fd = _wopen(file, oflags, 0666); - if (fd < 0) - return NULL; - - if (*mode == L'a') - lseek(fd, 0, SEEK_END); - - f->_cnt = 0; - f->_file = fd; - f->_bufsiz = 0; - if (rw) - f->_flag = _IOREAD | _IOWRT; - else if (*mode == L'r') - f->_flag = _IOREAD; - else - f->_flag = _IOWRT; - - f->_base = f->_ptr = NULL; - return f; -} diff --git a/reactos/lib/crt/stdio/fscanf.c b/reactos/lib/crt/stdio/fscanf.c deleted file mode 100644 index 8170ce1603f..00000000000 --- a/reactos/lib/crt/stdio/fscanf.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - - -#include -#include -#include -#include -#include - - -/* Read formatted input from STREAM according to the format string FORMAT. */ -/* VARARGS2 */ -/* - * @implemented - */ -int fscanf(FILE *stream,const char *format, ...) -{ - va_list arg; - int done; - - va_start(arg, format); - done = __vfscanf(stream, format, arg); - va_end(arg); - - return done; -} - -/* - * @implemented - */ -int -fwscanf(FILE *stream, const wchar_t *fmt, ...) -{ - va_list arg; - int done; - char *cf; - int i,len = wcslen(fmt); - - cf = malloc(len+1); - for(i=0;i -#include -#include -#include -#include +#include +#include +#include +#include +#include /* @@ -42,7 +42,7 @@ int fseek(FILE *f, long offset, int ptrname) } } - p = lseek(fileno(f), offset, ptrname); + p = _lseek(_fileno(f), offset, ptrname); f->_cnt = 0; f->_ptr = f->_base; f->_flag &= ~_IOUNGETC; @@ -50,7 +50,7 @@ int fseek(FILE *f, long offset, int ptrname) else { p = fflush(f); - return lseek(fileno(f), offset, ptrname) == -1 || p == EOF ? + return _lseek(_fileno(f), offset, ptrname) == -1 || p == EOF ? -1 : 0; } return p==-1 ? -1 : 0; diff --git a/reactos/lib/crt/stdio/fsetpos.c b/reactos/lib/crt/stdio/fsetpos.c index 9bb8e56ca27..0c7fe1daf2b 100644 --- a/reactos/lib/crt/stdio/fsetpos.c +++ b/reactos/lib/crt/stdio/fsetpos.c @@ -1,7 +1,7 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdio/fsopen.c b/reactos/lib/crt/stdio/fsopen.c index 94d39aa1c90..571dacbc322 100644 --- a/reactos/lib/crt/stdio/fsopen.c +++ b/reactos/lib/crt/stdio/fsopen.c @@ -9,25 +9,26 @@ */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include -FILE * __alloc_file(void); /* * @implemented */ -FILE* _fsopen(const char *file, const char *mode, int shflag) +FILE* _tfsopen(const _TCHAR *file, const _TCHAR *mode, int shflag) { FILE *f; int fd, rw, oflags = 0; - char tbchar; + _TCHAR tbchar; int shf; @@ -65,7 +66,7 @@ FILE* _fsopen(const char *file, const char *mode, int shflag) else if (tbchar == 'b') oflags |= O_BINARY; else - oflags |= (__fmode & (O_TEXT|O_BINARY)); + oflags |= (_fmode& (O_TEXT|O_BINARY)); if ( shflag == _SH_DENYNO ) shf = _S_IREAD | _S_IWRITE; @@ -78,14 +79,14 @@ FILE* _fsopen(const char *file, const char *mode, int shflag) else shf = _S_IREAD | _S_IWRITE; - fd = _open(file, oflags, shf); + fd = _topen(file, oflags, shf); if (fd < 0) return NULL; // msvcrt ensures that writes will end up at the end of file in append mode // we just move the file pointer to the end of file initially if (*mode == 'a') - lseek(fd, 0, SEEK_END); + _lseek(fd, 0, SEEK_END); f->_cnt = 0; f->_file = fd; @@ -101,83 +102,3 @@ FILE* _fsopen(const char *file, const char *mode, int shflag) return f; } -/* - * @implemented - */ -FILE* _wfsopen(const wchar_t *file, const wchar_t *mode, int shflag) -{ - FILE *f; - int fd, rw, oflags = 0; - wchar_t tbchar; - - int shf; - - if (file == 0) - return 0; - if (mode == 0) - return 0; - - f = __alloc_file(); - if (f == NULL) - return NULL; - - rw = (mode[1] == L'+') || (mode[1] && (mode[2] == L'+')); - - switch (*mode) - { - case L'a': - oflags = O_CREAT | (rw ? O_RDWR : O_WRONLY); - break; - case L'r': - oflags = rw ? O_RDWR : O_RDONLY; - break; - case L'w': - oflags = O_TRUNC | O_CREAT | (rw ? O_RDWR : O_WRONLY); - break; - default: - return (NULL); - } - if (mode[1] == L'+') - tbchar = mode[2]; - else - tbchar = mode[1]; - if (tbchar == L't') - oflags |= O_TEXT; - else if (tbchar == L'b') - oflags |= O_BINARY; - else - oflags |= (__fmode & (O_TEXT|O_BINARY)); - - if ( shflag == _SH_DENYNO ) - shf = _S_IREAD | _S_IWRITE; - else if( shflag == _SH_DENYRD ) - shf = _S_IWRITE; - else if( shflag == _SH_DENYRW ) - shf = 0; - else if( shflag == _SH_DENYWR ) - shf = _S_IREAD; - else - shf = _S_IREAD | _S_IWRITE; - - fd = _wopen(file, oflags, shf); - if (fd < 0) - return NULL; - -// msvcrt ensures that writes will end up at the end of file in append mode -// we just move the file pointer to the end of file initially - if (*mode == L'a') - lseek(fd, 0, SEEK_END); - - f->_cnt = 0; - f->_file = fd; - f->_bufsiz = 0; - if (rw) - f->_flag = _IOREAD | _IOWRT; - else if (*mode == L'r') - f->_flag = _IOREAD; - else - f->_flag = _IOWRT; - - f->_base = f->_ptr = NULL; - return f; -} diff --git a/reactos/lib/crt/stdio/ftell.c b/reactos/lib/crt/stdio/ftell.c index 93c048c7daf..c93bc1c7bf9 100644 --- a/reactos/lib/crt/stdio/ftell.c +++ b/reactos/lib/crt/stdio/ftell.c @@ -1,11 +1,11 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* @@ -36,7 +36,7 @@ long ftell(FILE *f) else return -1; - tres = lseek(fileno(f), 0L, SEEK_CUR); + tres = _lseek(_fileno(f), 0L, SEEK_CUR); if (tres<0) return tres; tres += adjust; diff --git a/reactos/lib/crt/stdio/fwalk.c b/reactos/lib/crt/stdio/fwalk.c index f1e117ffd1b..f30d438b730 100644 --- a/reactos/lib/crt/stdio/fwalk.c +++ b/reactos/lib/crt/stdio/fwalk.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include // not exported by msvcrt or crtdll diff --git a/reactos/lib/crt/stdio/fwrite.c b/reactos/lib/crt/stdio/fwrite.c index 24d5739a01c..4203526717d 100644 --- a/reactos/lib/crt/stdio/fwrite.c +++ b/reactos/lib/crt/stdio/fwrite.c @@ -1,10 +1,12 @@ -#include -#include -#include -#include -#include + +#include +#include +#include +#include +#include + #define NDEBUG -#include +#include /* @@ -16,32 +18,32 @@ size_t fwrite(const void *vptr, size_t size, size_t count, FILE *iop) unsigned char *ptr = (unsigned char *)vptr; int copy; - DPRINT("fwrite(%x, %d, %d, %x)\n", vptr, size, count, iop); + TRACE("fwrite(%x, %d, %d, %x)", vptr, size, count, iop); to_write = size*count; if (!OPEN4WRITING(iop)) { __set_errno (EINVAL); - return 0; + return(0); } if (iop == NULL) { __set_errno (EINVAL); - return 0; + return(0); } if (ferror (iop)) - return 0; + return(0); if (vptr == NULL || to_write == 0) - return 0; + return(0); if (iop->_base == NULL && !(iop->_flag&_IONBF)) { if (EOF == _flsbuf(*ptr++, iop)) - return 0; + return(0); if (--to_write == 0) - return 1; + return(1); } if (iop->_flag & _IO_LBF) @@ -78,7 +80,7 @@ size_t fwrite(const void *vptr, size_t size, size_t count, FILE *iop) { while (to_write > 0) { - n_written = _write(fileno(iop), ptr, to_write); + n_written = _write(_fileno(iop), ptr, to_write); if (n_written <= 0) { iop->_flag |= _IOERR; @@ -103,12 +105,12 @@ size_t fwrite(const void *vptr, size_t size, size_t count, FILE *iop) iop->_ptr += to_write; iop->_cnt -= to_write; iop->_flag |= _IODIRTY; - return count; + return(count); } } } } } - return count - (to_write/size); + return(count - (to_write/size)); } diff --git a/reactos/lib/crt/stdio/getc.c b/reactos/lib/crt/stdio/getc.c index 83a30053152..5c0392fd10d 100644 --- a/reactos/lib/crt/stdio/getc.c +++ b/reactos/lib/crt/stdio/getc.c @@ -22,10 +22,10 @@ */ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include +#include //getc can be a macro #undef getc diff --git a/reactos/lib/crt/stdio/getchar.c b/reactos/lib/crt/stdio/getchar.c index 31aecbfd89a..e20e4391233 100644 --- a/reactos/lib/crt/stdio/getchar.c +++ b/reactos/lib/crt/stdio/getchar.c @@ -24,8 +24,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include -#include +#include +#include #undef getchar #undef getwchar diff --git a/reactos/lib/crt/stdio/gets.c b/reactos/lib/crt/stdio/gets.c index 579590928ba..734f586db0c 100644 --- a/reactos/lib/crt/stdio/gets.c +++ b/reactos/lib/crt/stdio/gets.c @@ -25,7 +25,7 @@ */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include char* gets(char* s) { diff --git a/reactos/lib/crt/stdio/getw.c b/reactos/lib/crt/stdio/getw.c index e5eff56ecfe..1960d5149b4 100644 --- a/reactos/lib/crt/stdio/getw.c +++ b/reactos/lib/crt/stdio/getw.c @@ -16,7 +16,7 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include +#include /* diff --git a/reactos/lib/crt/stdio/perror.c b/reactos/lib/crt/stdio/perror.c index 369e5053e5f..e3511f12d7a 100644 --- a/reactos/lib/crt/stdio/perror.c +++ b/reactos/lib/crt/stdio/perror.c @@ -1,7 +1,7 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include #ifdef perror diff --git a/reactos/lib/crt/stdio/popen.c b/reactos/lib/crt/stdio/popen.c index 2959fb439d9..803104141ba 100644 --- a/reactos/lib/crt/stdio/popen.c +++ b/reactos/lib/crt/stdio/popen.c @@ -1,58 +1,60 @@ #include "precomp.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include + #define NDEBUG -#include +#include /* * @implemented */ -FILE *_popen (const char *cm, const char *md) /* program name, pipe mode */ +FILE *_tpopen (const _TCHAR *cm, const _TCHAR *md) /* program name, pipe mode */ { - char *szCmdLine=NULL; - char *szComSpec=NULL; - char *s; + _TCHAR *szCmdLine=NULL; + _TCHAR *szComSpec=NULL; + _TCHAR *s; FILE *pf; HANDLE hReadPipe, hWritePipe; BOOL result; - STARTUPINFOA StartupInfo; + STARTUPINFO StartupInfo; PROCESS_INFORMATION ProcessInformation; SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE}; - DPRINT("_popen('%s', '%s')\n", cm, md); + TRACE(MK_STR(_tpopen)"('%"sT"', '%"sT"')\n", cm, md); if (cm == NULL) - return NULL; + return( NULL ); - szComSpec = getenv("COMSPEC"); + szComSpec = _tgetenv(_T("COMSPEC")); if (szComSpec == NULL) { - szComSpec = "cmd.exe"; + szComSpec = _T("cmd.exe"); } - s = max(strrchr(szComSpec, '\\'), strrchr(szComSpec, '/')); + s = max(_tcsrchr(szComSpec, '\\'), _tcsrchr(szComSpec, '/')); if (s == NULL) s = szComSpec; else s++; - szCmdLine = malloc(strlen(s) + 4 + strlen(cm) + 1); + szCmdLine = malloc((_tcslen(s) + 4 + _tcslen(cm) + 1) * sizeof(_TCHAR)); if (szCmdLine == NULL) { return NULL; } - strcpy(szCmdLine, s); - s = strrchr(szCmdLine, '.'); + _tcscpy(szCmdLine, s); + s = _tcsrchr(szCmdLine, '.'); if (s) *s = 0; - strcat(szCmdLine, " /C "); - strcat(szCmdLine, cm); + _tcscat(szCmdLine, _T(" /C ")); + _tcscat(szCmdLine, cm); if ( !CreatePipe(&hReadPipe,&hWritePipe,&sa,1024)) { @@ -60,8 +62,8 @@ FILE *_popen (const char *cm, const char *md) /* program name, pipe mode */ return NULL; } - memset(&StartupInfo, 0, sizeof(STARTUPINFOA)); - StartupInfo.cb = sizeof(STARTUPINFOA); + memset(&StartupInfo, 0, sizeof(STARTUPINFO)); + StartupInfo.cb = sizeof(STARTUPINFO); if (*md == 'r' ) { StartupInfo.hStdOutput = hWritePipe; @@ -72,7 +74,7 @@ FILE *_popen (const char *cm, const char *md) /* program name, pipe mode */ StartupInfo.dwFlags |= STARTF_USESTDHANDLES; } - result = CreateProcessA(szComSpec, + result = CreateProcess(szComSpec, szCmdLine, NULL, NULL, @@ -95,130 +97,34 @@ FILE *_popen (const char *cm, const char *md) /* program name, pipe mode */ if ( *md == 'r' ) { - pf = _fdopen(__fileno_alloc(hReadPipe, __fmode) , "r"); + pf = _tfdopen(alloc_fd(hReadPipe, split_oflags(_fmode)) , _T("r")); CloseHandle(hWritePipe); } else { - pf = _fdopen( __fileno_alloc(hWritePipe, __fmode) , "w"); + pf = _tfdopen( alloc_fd(hWritePipe, split_oflags(_fmode)) , _T("w")); CloseHandle(hReadPipe); } - pf->_name_to_remove = ProcessInformation.hProcess; + pf->_tmpfname = ProcessInformation.hProcess; - return pf; + return( pf ); } +#ifndef _UNICODE /* * @implemented */ int _pclose (FILE *pp) { + TRACE("_pclose(%x)",pp); + fclose(pp); - if (!TerminateProcess(pp->_name_to_remove,0)) - return -1; - return 0; + if (!TerminateProcess(pp->_tmpfname ,0)) + return( -1 ); + return( 0 ); } +#endif -/* - * @implemented - */ -FILE *_wpopen (const wchar_t *cm, const wchar_t *md) /* program name, pipe mode */ -{ - wchar_t *szCmdLine=NULL; - wchar_t *szComSpec=NULL; - wchar_t *s; - FILE *pf; - HANDLE hReadPipe, hWritePipe; - BOOL result; - STARTUPINFOW StartupInfo; - PROCESS_INFORMATION ProcessInformation; - SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE}; - - DPRINT("_wpopen('%S', '%S')\n", cm, md); - - if (cm == NULL) - return NULL; - - szComSpec = _wgetenv(L"COMSPEC"); - - if (szComSpec == NULL) - { - szComSpec = L"cmd.exe"; - } - - s = max(wcsrchr(szComSpec, L'\\'), wcsrchr(szComSpec, L'/')); - if (s == NULL) - s = szComSpec; - else - s++; - - szCmdLine = malloc((wcslen(s) + 4 + wcslen(cm) + 1) * sizeof(wchar_t)); - if (szCmdLine == NULL) - { - return NULL; - } - - wcscpy(szCmdLine, s); - s = wcsrchr(szCmdLine, L'.'); - if (s) - *s = 0; - wcscat(szCmdLine, L" /C "); - wcscat(szCmdLine, cm); - - if ( !CreatePipe(&hReadPipe,&hWritePipe,&sa,1024)) - { - free (szCmdLine); - return NULL; - } - - memset(&StartupInfo, 0, sizeof(STARTUPINFOW)); - StartupInfo.cb = sizeof(STARTUPINFOW); - - if (*md == L'r' ) { - StartupInfo.hStdOutput = hWritePipe; - StartupInfo.dwFlags |= STARTF_USESTDHANDLES; - } - else if ( *md == L'w' ) { - StartupInfo.hStdInput = hReadPipe; - StartupInfo.dwFlags |= STARTF_USESTDHANDLES; - } - - result = CreateProcessW(szComSpec, - szCmdLine, - NULL, - NULL, - TRUE, - 0, - NULL, - NULL, - &StartupInfo, - &ProcessInformation); - free (szCmdLine); - - if (result == FALSE) - { - CloseHandle(hReadPipe); - CloseHandle(hWritePipe); - return NULL; - } - - CloseHandle(ProcessInformation.hThread); - - if ( *md == L'r' ) - { - pf = _wfdopen(__fileno_alloc(hReadPipe, __fmode) , L"r"); - CloseHandle(hWritePipe); - } - else - { - pf = _wfdopen( __fileno_alloc(hWritePipe, __fmode) , L"w"); - CloseHandle(hReadPipe); - } - - pf->_name_to_remove = ProcessInformation.hProcess; - - return pf; -} diff --git a/reactos/lib/crt/stdio/printf.c b/reactos/lib/crt/stdio/printf.c index 9d57e14c1c9..d67eb38586e 100644 --- a/reactos/lib/crt/stdio/printf.c +++ b/reactos/lib/crt/stdio/printf.c @@ -16,35 +16,21 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include -#include - +#include +#include +#include +#include /* * @implemented */ -int printf(const char* format, ...) +int _tprintf(const _TCHAR* format, ...) { va_list arg; int done; va_start(arg, format); - done = vprintf(format, arg); - va_end(arg); - return done; -} - -/* - * @implemented - */ -int wprintf(const wchar_t* format, ...) -{ - va_list arg; - int done; - - va_start(arg, format); - done = vwprintf(format, arg); + done = _vtprintf(format, arg); va_end(arg); return done; } diff --git a/reactos/lib/crt/stdio/putc.c b/reactos/lib/crt/stdio/putc.c index 99915bb8e6e..3d6ba61f234 100644 --- a/reactos/lib/crt/stdio/putc.c +++ b/reactos/lib/crt/stdio/putc.c @@ -25,10 +25,10 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include +#include // putc can be a macro #undef putc @@ -65,7 +65,7 @@ int putc(int c, FILE* fp) /* * @implemented */ -int putwc(wint_t c, FILE* fp) +wint_t putwc(wint_t c, FILE* fp) { // valid stream macro should check that fp is dword aligned if (!__validfp(fp)) { diff --git a/reactos/lib/crt/stdio/putchar.c b/reactos/lib/crt/stdio/putchar.c index 7c3030cc9c4..be4b5161bbd 100644 --- a/reactos/lib/crt/stdio/putchar.c +++ b/reactos/lib/crt/stdio/putchar.c @@ -8,7 +8,9 @@ * UPDATE HISTORY: * 28/12/98: Created */ -#include +#include +#include +#include #undef putc #undef putchar @@ -18,21 +20,11 @@ /* * @implemented */ -int putchar(int c) +_TINT _puttchar(_TINT c) { - int r = putc(c, stdout); + _TINT r = _puttc(c, stdout); if (stdout->_flag & _IO_LBF) fflush(stdout); return r; } -/* - * @implemented - */ -wint_t putwchar(wint_t c) -{ - wint_t r = putwc(c, stdout); - if (stdout->_flag & _IO_LBF) - fflush(stdout); - return r; -} diff --git a/reactos/lib/crt/stdio/puts.c b/reactos/lib/crt/stdio/puts.c index 6b1867c1706..87ca5661734 100644 --- a/reactos/lib/crt/stdio/puts.c +++ b/reactos/lib/crt/stdio/puts.c @@ -1,8 +1,8 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include "precomp.h" -#include -#include -#include +#include +#include +#include #undef putchar #undef putwchar diff --git a/reactos/lib/crt/stdio/putw.c b/reactos/lib/crt/stdio/putw.c index dab2f31ee0c..10d2b888283 100644 --- a/reactos/lib/crt/stdio/putw.c +++ b/reactos/lib/crt/stdio/putw.c @@ -17,7 +17,7 @@ * Cambridge, MA 02139, USA. */ -#include +#include /* diff --git a/reactos/lib/crt/stdio/putwchar.c b/reactos/lib/crt/stdio/putwchar.c new file mode 100644 index 00000000000..cdf1386ce75 --- /dev/null +++ b/reactos/lib/crt/stdio/putwchar.c @@ -0,0 +1,4 @@ +#define UNICODE +#define _UNICODE + +#include "putchar.c" diff --git a/reactos/lib/crt/stdio/remove.c b/reactos/lib/crt/stdio/remove.c index 3f946b400f0..37909173cbc 100644 --- a/reactos/lib/crt/stdio/remove.c +++ b/reactos/lib/crt/stdio/remove.c @@ -1,30 +1,21 @@ #include "precomp.h" -#include -#include +#include +#include +#include #define NDEBUG -#include +#include /* * @implemented */ -int remove(const char *fn) +int _tremove(const _TCHAR *fn) { int result = 0; - DPRINT("remove('%s')\n", fn); - if (!DeleteFileA(fn)) + DPRINT(MK_STR(_tremove)"('%"sT"')\n", fn); + if (!DeleteFile(fn)) result = -1; DPRINT("%d\n", result); return result; } -/* - * @implemented - */ -int _wremove(const wchar_t *fn) -{ - DPRINT("_wremove('%S')\n", fn); - if (!DeleteFileW(fn)) - return -1; - return 0; -} diff --git a/reactos/lib/crt/stdio/rename.c b/reactos/lib/crt/stdio/rename.c index fff877c8eb9..962ed2f46b4 100644 --- a/reactos/lib/crt/stdio/rename.c +++ b/reactos/lib/crt/stdio/rename.c @@ -1,17 +1,17 @@ #include "precomp.h" -#include -#include - +#include +#include +#include /* * @implemented */ -int rename(const char* old_, const char* new_) +int _trename(const _TCHAR* old_, const _TCHAR* new_) { if (old_ == NULL || new_ == NULL) return -1; - if (!MoveFileA(old_, new_)) + if (!MoveFile(old_, new_)) return -1; return 0; diff --git a/reactos/lib/crt/stdio/rewind.c b/reactos/lib/crt/stdio/rewind.c index e3b6703e43e..7e5acce69b4 100644 --- a/reactos/lib/crt/stdio/rewind.c +++ b/reactos/lib/crt/stdio/rewind.c @@ -1,8 +1,8 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* @@ -11,7 +11,7 @@ void rewind(FILE *f) { fflush(f); - lseek(fileno(f), 0L, SEEK_SET); + _lseek(_fileno(f), 0L, SEEK_SET); f->_cnt = 0; f->_ptr = f->_base; f->_flag &= ~(_IOERR|_IOEOF|_IOAHEAD); diff --git a/reactos/lib/crt/stdio/rmtmp.c b/reactos/lib/crt/stdio/rmtmp.c index 1d2a8c51c99..14926b8921e 100644 --- a/reactos/lib/crt/stdio/rmtmp.c +++ b/reactos/lib/crt/stdio/rmtmp.c @@ -9,25 +9,10 @@ * NOTE Not tested. */ -#include -#include -#include +#include +#include +#include -#ifndef F_OK - #define F_OK 0x01 -#endif -#ifndef R_OK - #define R_OK 0x02 -#endif -#ifndef W_OK - #define W_OK 0x04 -#endif -#ifndef X_OK - #define X_OK 0x08 -#endif -#ifndef D_OK - #define D_OK 0x10 -#endif // should be replace by a closure of the tmp files extern __file_rec *__file_rec_list; @@ -35,7 +20,7 @@ extern __file_rec *__file_rec_list; int _rmtmp( void ) { /* -loop files and check for name_to_remove +loop files and check for _tmpfname */ __file_rec *fr = __file_rec_list; __file_rec **last_fr = &__file_rec_list; @@ -51,9 +36,9 @@ loop files and check for name_to_remove /* If one of the existing slots is available, return it */ for (i=0; icount; i++) { - if (fr->files[i]->_name_to_remove != NULL) { - if ( _access(fr->files[i]->_name_to_remove,W_OK) ) { - strcpy(temp_name,fr->files[i]->_name_to_remove); + if (fr->files[i]->_tmpfname != NULL) { + if ( _access(fr->files[i]->_tmpfname ,W_OK) ) { + strcpy(temp_name,fr->files[i]->_tmpfname ); fclose(fr->files[i]); remove(temp_name); total_closed++; diff --git a/reactos/lib/crt/stdio/scanf.c b/reactos/lib/crt/stdio/scanf.c deleted file mode 100644 index 9cdc4d82172..00000000000 --- a/reactos/lib/crt/stdio/scanf.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include -#include - - -/* Read formatted input from stdin according to the format string FORMAT. */ -/* VARARGS1 */ -/* - * @implemented - */ -int scanf(const char *format, ...) -{ - va_list arg; - int done; - - va_start(arg, format); - done = __vscanf(format, arg); - va_end(arg); - - return done; -} - -/* - * @implemented - */ -int -wscanf(const wchar_t *fmt, ...) -{ - va_list arg; - int done; - char *f; - int i, len = wcslen(fmt); - - f = malloc(len+1); - for(i=0;i -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdio/setvbuf.c b/reactos/lib/crt/stdio/setvbuf.c index d0dadf0c786..3b4ea652da5 100644 --- a/reactos/lib/crt/stdio/setvbuf.c +++ b/reactos/lib/crt/stdio/setvbuf.c @@ -1,11 +1,11 @@ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/stdio/sprintf.c b/reactos/lib/crt/stdio/sprintf.c index 6a020ae06d8..1e35c0fb0f4 100644 --- a/reactos/lib/crt/stdio/sprintf.c +++ b/reactos/lib/crt/stdio/sprintf.c @@ -18,46 +18,32 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include -#include -#include +#include +#include +#include #include -#include +#include +#include #undef sprintf #undef wsprintf -/* - * @implemented - */ -int -sprintf(char *str, const char *fmt, ...) -{ - va_list arg; - int done; - - va_start (arg, fmt); - done = vsprintf (str, fmt, arg); - va_end (arg); - return done; -} /* * @implemented */ int -swprintf(wchar_t *str, const wchar_t *fmt, ...) +_stprintf(_TCHAR *str, const _TCHAR *fmt, ...) { va_list arg; int done; va_start (arg, fmt); - done = vswprintf (str, fmt, arg); + done = _vstprintf (str, fmt, arg); va_end (arg); return done; } - /* Write formatted output into S, according to the format string FORMAT, writing no more than MAXLEN characters. */ /* VARARGS3 */ @@ -65,29 +51,13 @@ swprintf(wchar_t *str, const wchar_t *fmt, ...) * @implemented */ int -_snprintf (char *s, size_t maxlen,const char *format, ...) +_sntprintf (_TCHAR *s, size_t maxlen,const _TCHAR *format, ...) { va_list arg; int done; va_start (arg, format); - done = _vsnprintf (s, maxlen, format, arg); - va_end (arg); - - return done; -} - -/* - * @implemented - */ -int -_snwprintf (wchar_t *s, size_t maxlen,const wchar_t *format, ...) -{ - va_list arg; - int done; - - va_start (arg, format); - done = _vsnwprintf (s, maxlen, format, arg); + done = _vsntprintf(s, maxlen, format, arg); va_end (arg); return done; diff --git a/reactos/lib/crt/stdio/sscanf.c b/reactos/lib/crt/stdio/sscanf.c deleted file mode 100644 index 7868addf516..00000000000 --- a/reactos/lib/crt/stdio/sscanf.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include -#include -#include -#include - - -/* Read formatted input from S, according to the format string FORMAT. */ -/* VARARGS2 */ -/* - * @implemented - */ -int sscanf (const char *s,const char *format, ...) -{ - va_list arg; - int done; - - va_start (arg, format); - done = __vsscanf (s, format, arg); - va_end (arg); - - return done; -} - -/* - * @implemented - */ -int swscanf(const wchar_t *str, const wchar_t *fmt, ...) -{ - va_list arg; - int done; - char *f , *s; - int i,len = wcslen(fmt); - - f = malloc(len+1); - for(i=0;i -#include +#include +#include -FILE _iob[5] = +FILE _iob[20] = { // stdin { @@ -21,18 +21,6 @@ FILE _iob[5] = NULL, 0, NULL, _IOWRT | _IONBF, 2,0,0, NULL -}, - // stdaux -{ - NULL, 0, NULL, - _IOREAD | _IOWRT | _IONBF, - 3,0,0, NULL -}, - // stdprn -{ - NULL, 0, NULL, - _IOWRT | _IONBF, - 4, 0,0,NULL } }; diff --git a/reactos/lib/crt/stdio/swprintf.c b/reactos/lib/crt/stdio/swprintf.c new file mode 100644 index 00000000000..81205d770ac --- /dev/null +++ b/reactos/lib/crt/stdio/swprintf.c @@ -0,0 +1,4 @@ +#define UNICODE +#define _UNICODE + +#include "sprintf.c" diff --git a/reactos/lib/crt/stdio/tempnam.c b/reactos/lib/crt/stdio/tempnam.c index 294a51cc202..56ab13fcf1e 100644 --- a/reactos/lib/crt/stdio/tempnam.c +++ b/reactos/lib/crt/stdio/tempnam.c @@ -1,25 +1,25 @@ #include "precomp.h" -#include -#include - +#include +#include +#include /* * @implemented */ -char* _tempnam(const char* dir,const char* prefix) +_TCHAR* _ttempnam(const _TCHAR* dir,const _TCHAR* prefix) { - char* TempFileName = malloc(MAX_PATH); - char* d; + _TCHAR* TempFileName = malloc(MAX_PATH*sizeof(_TCHAR)); + _TCHAR* d; if (dir == NULL) - d = getenv("TMP"); + d = _tgetenv(_T("TMP")); else - d = (char*)dir; + d = (_TCHAR*)dir; #ifdef _MSVCRT_LIB_ // TODO: check on difference? - if (GetTempFileNameA(d, prefix, 1, TempFileName) == 0) { + if (GetTempFileName(d, prefix, 1, TempFileName) == 0) { #else// TODO: FIXME: review which is correct - if (GetTempFileNameA(d, prefix, 0, TempFileName) == 0) { + if (GetTempFileName(d, prefix, 0, TempFileName) == 0) { #endif /*_MSVCRT_LIB_*/ free(TempFileName); diff --git a/reactos/lib/crt/stdio/tmpfile.c b/reactos/lib/crt/stdio/tmpfile.c index b188dece4a3..dc92d175cbd 100644 --- a/reactos/lib/crt/stdio/tmpfile.c +++ b/reactos/lib/crt/stdio/tmpfile.c @@ -3,15 +3,15 @@ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include //#include -#include -#include -#include +#include +#include +#include FILE * __alloc_file(void); @@ -56,13 +56,13 @@ tmpfile(void) f->_cnt = 0; f->_bufsiz = 0; f->_flag = _IORMONCL | _IOREAD | _IOWRT; - f->_name_to_remove = n_t_r; - strcpy(f->_name_to_remove, temp_name); + f->_tmpfname = n_t_r; + strcpy(f->_tmpfname , temp_name); f->_base = f->_ptr = NULL; } else { - close(temp_fd); + _close(temp_fd); remove(temp_name); free(n_t_r); } diff --git a/reactos/lib/crt/stdio/tmpnam.c b/reactos/lib/crt/stdio/tmpnam.c index b59075335c6..7b50a8121ee 100644 --- a/reactos/lib/crt/stdio/tmpnam.c +++ b/reactos/lib/crt/stdio/tmpnam.c @@ -1,19 +1,19 @@ #include "precomp.h" -#include -#include - +#include +#include +#include /* * @implemented */ -char* tmpnam(char* s) +_TCHAR* _ttmpnam(_TCHAR* s) { - char PathName[MAX_PATH]; - static char static_buf[MAX_PATH]; + _TCHAR PathName[MAX_PATH]; + static _TCHAR static_buf[MAX_PATH]; - GetTempPathA(MAX_PATH, PathName); - GetTempFileNameA(PathName, "ARI", 007, static_buf); - strcpy(s,static_buf); + GetTempPath(MAX_PATH, PathName); + GetTempFileName(PathName, _T("ARI"), 007, static_buf); + _tcscpy(s,static_buf); return s; } diff --git a/reactos/lib/crt/stdio/ungetc.c b/reactos/lib/crt/stdio/ungetc.c index cb5340bd66e..ef2ee127869 100644 --- a/reactos/lib/crt/stdio/ungetc.c +++ b/reactos/lib/crt/stdio/ungetc.c @@ -1,76 +1,51 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include +#include +#include +#include +#include +#include /* * @implemented */ -int ungetc(int c, FILE *f) +_TINT _ungettc(_TINT c, FILE *f) { if (!__validfp (f) || !OPEN4READING(f)) { __set_errno (EINVAL); - return EOF; + return _TEOF; } - if (c == EOF) - return EOF; + if (c == _TEOF) + return _TEOF; if (f->_ptr == NULL || f->_base == NULL) - return EOF; + return _TEOF; if (f->_ptr == f->_base) { if (f->_cnt == 0) - f->_ptr++; + f->_ptr+=sizeof(_TCHAR); else - return EOF; + return _TEOF; } - f->_cnt++; - f->_ptr--; - if (*f->_ptr != c) + f->_cnt+=sizeof(_TCHAR); + f->_ptr-=sizeof(_TCHAR); + +#if 1 + if (*((_TCHAR*)(f->_ptr)) != c) { f->_flag |= _IOUNGETC; - *f->_ptr = c; + *((_TCHAR*)(f->_ptr)) = c; } - return c; -} - - -/* - * @implemented - */ -wint_t -ungetwc(wchar_t c, FILE *f) -{ - if (!__validfp (f) || !OPEN4READING(f)) { - __set_errno(EINVAL); - return EOF; - } - - if (c == (wchar_t)EOF) - return EOF; - - if (f->_ptr == NULL || f->_base == NULL) - return EOF; - - if (f->_ptr == f->_base) - { - if (f->_cnt == 0) - f->_ptr+=sizeof(wchar_t); - else - return EOF; - } - - f->_cnt+=sizeof(wchar_t); - f->_ptr-=sizeof(wchar_t); - +#else + /* This is the old unicode version. Dunno what version is most correct. -Gunnar */ f->_flag |= _IOUNGETC; - *((wchar_t *)(f->_ptr)) = c; + *((_TCHAR*)(f->_ptr)) = c; +#endif return c; } + diff --git a/reactos/lib/crt/stdio/ungetwc.c b/reactos/lib/crt/stdio/ungetwc.c new file mode 100644 index 00000000000..1ff851fca98 --- /dev/null +++ b/reactos/lib/crt/stdio/ungetwc.c @@ -0,0 +1,4 @@ +#define UNICODE +#define _UNICODE + +#include "ungetc.c" diff --git a/reactos/lib/crt/stdio/vfprintf.c b/reactos/lib/crt/stdio/vfprintf.c index 8d2c0f3d510..70e6568cc69 100644 --- a/reactos/lib/crt/stdio/vfprintf.c +++ b/reactos/lib/crt/stdio/vfprintf.c @@ -1,17 +1,16 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include -#include -#include -#include +#include +#include +#include #ifdef __USE_W32API #include #endif -int _isnanl(double x); -int _isinfl(double x); -int _isnan(double x); -int _isinf(double x); + + +extern int __mb_cur_max; @@ -27,7 +26,7 @@ int vfprintf(FILE* f, const char* fmt, va_list ap) char localbuf[BUFSIZ]; #if 0 - __fileno_lock(fileno(f)); + __fileno_lock(_fileno(f)); #endif if (f->_flag & _IONBF) { f->_flag &= ~_IONBF; @@ -43,7 +42,7 @@ int vfprintf(FILE* f, const char* fmt, va_list ap) len = __vfprintf(f,fmt, ap); } #if 0 - __fileno_unlock(fileno(f)); + __fileno_unlock(_fileno(f)); #endif return (ferror(f) ? EOF : len); } @@ -64,14 +63,13 @@ int vfprintf(FILE* f, const char* fmt, va_list ap) * Appropiated for the reactos kernel, March 1998 -- David Welch */ -#include +#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #define ZEROPAD 1 /* pad with zero */ @@ -485,7 +483,7 @@ static int stringw(FILE *f, const wchar_t* sw, int len, int field_width, int pre } for (i = 0; i < len; ++i) { -#define MB_CUR_MAX 1 +//#define MB_CUR_MAX 1 char mb[MB_CUR_MAX]; int mbcount, j; mbcount = wctomb(mb, *sw++); diff --git a/reactos/lib/crt/stdio/vfscanf.c b/reactos/lib/crt/stdio/vfscanf.c deleted file mode 100644 index d4e7de6cb5d..00000000000 --- a/reactos/lib/crt/stdio/vfscanf.c +++ /dev/null @@ -1,1229 +0,0 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include "precomp.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#ifdef __USE_W32API -int __set_errno(int err); -#else -#include -#endif - -/* The internal entry points for `strtoX' take an extra flag argument - saying whether or not to parse locale-dependent number grouping. */ - -double __strtod_internal (const char *__nptr,char **__endptr, int __group); -float __strtof_internal (const char *__nptr, char **__endptr,int __group); -long double __strtold_internal (const char *__nptr,char **__endptr, int __group); -long int __strtol_internal (const char *__nptr, char **__endptr, int __base, int __group); -unsigned long int __strtoul_internal (const char *__nptr, char **__endptr, int __base, int __group); - - -#include // robd -//#ifdef __GNUC__ -//#define HAVE_LONGLONG -//#define LONGLONG LONGLONG -//#else -//#define LONGLONG long -//#endif - -/* Those are flags in the conversion format. */ -# define LONG 0x001 /* l: long or double */ -# define LONGDBL 0x002 /* L: LONGLONG or long double */ -# define SHORT 0x004 /* h: short */ -# define SUPPRESS 0x008 /* *: suppress assignment */ -# define POINTER 0x010 /* weird %p pointer (`fake hex') */ -# define NOSKIP 0x020 /* do not skip blanks */ -# define WIDTH 0x040 /* width was given */ -# define GROUP 0x080 /* ': group numbers */ -# define MALLOC 0x100 /* a: malloc strings */ - -# define TYPEMOD (LONG|LONGDBL|SHORT) - - -# define UNGETC(c, s) ((void) (((wint_t)c) != ((wint_t)EOF) && --read_in), ungetc (c, s)) -# define inchar() ((c = getc (s)), (void) (c != EOF && ++read_in), c) -# define encode_error() do { \ - funlockfile (s); \ - __set_errno (EILSEQ); \ - return done; \ - } while (0) -# define conv_error() do { \ - funlockfile (s); \ - return done; \ - } while (0) -# define input_error() do { \ - funlockfile (s); \ - return done ? 0 : EOF; \ - } while (0) -# define memory_error() do { \ - funlockfile (s); \ - __set_errno (ENOMEM); \ - return EOF; \ - } while (0) -# define ARGCHECK(s, format) \ - do \ - { \ - /* Check file argument for consistence. */ \ - if (!__validfp (s) || !s->__mode.__read) \ - { \ - __set_errno (EBADF); \ - return EOF; \ - } \ - else if (format == NULL) \ - { \ - __set_errno (EINVAL); \ - return EOF; \ - } \ - } while (0) - -# define flockfile(S) /* nothing */ -# define funlockfile(S) /* nothing */ - -# define ADDW(Ch) \ -do{ \ - if (wpsize == wpmax) \ - { \ - char *old = wp; \ - wpmax = UCHAR_MAX > 2 * wpmax ? UCHAR_MAX : 2 * wpmax; \ - wp = (char *) malloc (wpmax); \ - if (old != NULL) \ - { \ - memcpy (wp, old, wpsize); \ - free(old); \ - } \ - } \ - wp[wpsize++] = (Ch); \ -}while(0) - - -int __vfscanf (FILE *s, const char *format, va_list argptr) -{ - va_list arg; - register const char *f = format; - register unsigned char fc; /* Current character of the format. */ - register size_t done = 0; /* Assignments done. */ - register size_t read_in = 0; /* Chars read in. */ - register int c = 0; /* Last char read. */ - register int width; /* Maximum field width. */ - register int flags; /* Modifiers for current format element. */ - - /* Status for reading F-P nums. */ - char got_dot, got_e, negative; - /* If a [...] is a [^...]. */ - char not_in; - /* Base for integral numbers. */ - int base; - /* Signedness for integral numbers. */ - int number_signed; - /* Decimal point character. */ - wchar_t decimal = '.'; - /* The thousands character of the current locale. */ - wchar_t thousands = ','; - /* Integral holding variables. */ - union - { - LONGLONG q; - ULONGLONG uq; - long int l; - unsigned long int ul; - } num; - /* Character-buffer pointer. */ - char *str = NULL; - wchar_t *wstr = NULL; - char **strptr = NULL; - size_t strsize = 0; - /* We must not react on white spaces immediately because they can - possibly be matched even if in the input stream no character is - available anymore. */ - int skip_space = 0; - /* Workspace. */ - char *wp = NULL; /* Workspace. */ - size_t wpmax = 0; /* Maximal size of workspace. */ - size_t wpsize = 0; /* Currently used bytes in workspace. */ - char *tw; /* Temporary pointer. */ - -#ifdef __va_copy - - __va_copy (arg, argptr); -#else - - arg = (va_list) argptr; -#endif - - - - /* Run through the format string. */ - while (*f != '\0') - { - unsigned int argpos; - /* Extract the next argument, which is of type TYPE. - For a %N$... spec, this is the Nth argument from the beginning; - otherwise it is the next argument after the state now in ARG. */ -#define ARG(type) va_arg(argptr,type) - - if (!isascii (*f)) - { - /* Non-ASCII, may be a multibyte. */ - // int len = mblen (f, strlen (f)); - int len =1; - if (len > 0) - { - do - { - c = inchar (); - if (c == EOF) - input_error (); - else if (c != *f++) - { - UNGETC (c, s); - conv_error (); - } - } - while (--len > 0); - continue; - } - } - - fc = *f++; - if (fc != '%') - { - /* Remember to skip spaces. */ - if (isspace (fc)) - { - skip_space = 1; - continue; - } - - /* Read a character. */ - c = inchar (); - - /* Characters other than format specs must just match. */ - if (c == EOF) - input_error (); - - /* We saw white space char as the last character in the format - string. Now it's time to skip all leading white space. */ - if (skip_space) - { - while (isspace (c)) - if (inchar () == EOF && *_errno() == EINTR) - conv_error (); - skip_space = 0; - } - - if (c != fc) - { - UNGETC (c, s); - conv_error (); - } - - continue; - } - - /* This is the start of the conversion string. */ - flags = 0; - - /* Initialize state of modifiers. */ - argpos = 0; - - /* Prepare temporary buffer. */ - wpsize = 0; - - /* Check for a positional parameter specification. */ - if (isdigit (*f)) - { - argpos = *f++ - '0'; - while (isdigit (*f)) - argpos = argpos * 10 + (*f++ - '0'); - if (*f == '$') - ++f; - else - { - /* Oops; that was actually the field width. */ - width = argpos; - flags |= WIDTH; - argpos = 0; - goto got_width; - } - } - - /* Check for the assignment-suppressing and the number grouping flag. */ - while (*f == '*' || *f == '\'') - switch (*f++) - { - case '*': - flags |= SUPPRESS; - break; - case '\'': - flags |= GROUP; - break; - } - - /* We have seen width. */ - if (isdigit (*f)) - flags |= WIDTH; - - /* Find the maximum field width. */ - width = 0; - while (isdigit (*f)) - { - width *= 10; - width += *f++ - '0'; - } -got_width: - if (width == 0) - width = -1; - - /* Check for type modifiers. */ - while (*f == 'h' || *f == 'l' || *f == 'L' || *f == 'a' || *f == 'q') - switch (*f++) - { - case 'h': - /* int's are short int's. */ - if (flags & TYPEMOD) - /* Signal illegal format element. */ - conv_error (); - flags |= SHORT; - break; - case 'l': - if (flags & (SHORT|LONGDBL)) - conv_error (); - else if (flags & LONG) - { - /* A double `l' is equivalent to an `L'. */ - flags &= ~LONG; - flags |= LONGDBL; - } - else - /* int's are long int's. */ - flags |= LONG; - break; - case 'q': - case 'L': - /* double's are long double's, and int's are LONGLONG int's. */ - if (flags & TYPEMOD) - /* Signal illegal format element. */ - conv_error (); - flags |= LONGDBL; - break; - case 'a': - if (flags & TYPEMOD) - /* Signal illegal format element. */ - conv_error (); - /* String conversions (%s, %[) take a `char **' - arg and fill it in with a malloc'd pointer. */ - flags |= MALLOC; - break; - } - - /* End of the format string? */ - if (*f == '\0') - conv_error (); - - /* We must take care for EINTR errors. */ - if (c == EOF && *_errno() == EINTR) - input_error (); - - /* Find the conversion specifier. */ - fc = *f++; - if (skip_space || (fc != '[' && fc != 'c' && fc != 'C' && fc != 'n')) - { - /* Eat whitespace. */ - do - if (inchar () == EOF && *_errno() == EINTR) - input_error (); - while (isspace (c)) - ; - UNGETC (c, s); - skip_space = 0; - } - - switch (fc) - { - case '%': /* Must match a literal '%'. */ - c = inchar (); - if (c != fc) - { - UNGETC (c, s); - conv_error (); - } - break; - - case 'n': /* Answer number of assignments done. */ - /* Corrigendum 1 to ISO C 1990 describes the allowed flags - with the 'n' conversion specifier. */ - if (!(flags & SUPPRESS)) - { - /* Don't count the read-ahead. */ - if (flags & LONGDBL) - *ARG (long int *) = read_in; - else if (flags & LONG) - *ARG (long int *) = read_in; - else if (flags & SHORT) - *ARG (short int *) = read_in; - else - *ARG (int *) = read_in; - -#ifdef NO_BUG_IN_ISO_C_CORRIGENDUM_1 - /* We have a severe problem here. The ISO C standard - contradicts itself in explaining the effect of the %n - format in `scanf'. While in ISO C:1990 and the ISO C - Amendement 1:1995 the result is described as - - Execution of a %n directive does not effect the - assignment count returned at the completion of - execution of the f(w)scanf function. - - in ISO C Corrigendum 1:1994 the following was added: - - Subclause 7.9.6.2 - Add the following fourth example: - In: - #include - int d1, d2, n1, n2, i; - i = sscanf("123", "%d%n%n%d", &d1, &n1, &n2, &d2); - the value 123 is assigned to d1 and the value3 to n1. - Because %n can never get an input failure the value - of 3 is also assigned to n2. The value of d2 is not - affected. The value 3 is assigned to i. - - We go for now with the historically correct code fro ISO C, - i.e., we don't count the %n assignments. When it ever - should proof to be wrong just remove the #ifdef above. */ - ++done; -#endif - - } - break; - - case 'c': /* Match characters. */ - if ((flags & LONG) == 0) - { - if (!(flags & SUPPRESS)) - { - str = ARG (char *); - if (str == NULL) - conv_error (); - } - - c = inchar (); - if (c == EOF) - input_error (); - - if (width == -1) - width = 1; - - if (!(flags & SUPPRESS)) - { - do - *str++ = c; - while (--width > 0 && inchar () != EOF); - } - else - while (--width > 0 && inchar () != EOF) - ; - - if (width > 0) - /* I.e., EOF was read. */ - --read_in; - - if (!(flags & SUPPRESS)) - ++done; - - break; - } - /* FALLTHROUGH */ - case 'C': - /* Get UTF-8 encoded wide character. Here we assume (as in - other parts of the libc) that we only have to handle - UTF-8. */ - { - wint_t val; - size_t cnt = 0; - int first = 1; - - if (!(flags & SUPPRESS)) - { - wstr = ARG (wchar_t *); - if (str == NULL) - conv_error (); - } - - do - { -#define NEXT_WIDE_CHAR(First) \ - c = inchar (); \ - if (c == EOF) { \ - /* EOF is only an error for the first character. */ \ - if (First) { \ - input_error (); \ - } \ - else \ - { \ - --read_in; \ - break; \ - } \ - } \ - val = c; \ - if (val >= 0x80) \ - { \ - if ((c & 0xc0) == 0x80 || (c & 0xfe) == 0xfe) \ - encode_error (); \ - if ((c & 0xe0) == 0xc0) \ - { \ - /* We expect two bytes. */ \ - cnt = 1; \ - val &= 0x1f; \ - } \ - else if ((c & 0xf0) == 0xe0) \ - { \ - /* We expect three bytes. */ \ - cnt = 2; \ - val &= 0x0f; \ - } \ - else if ((c & 0xf8) == 0xf0) \ - { \ - /* We expect four bytes. */ \ - cnt = 3; \ - val &= 0x07; \ - } \ - else if ((c & 0xfc) == 0xf8) \ - { \ - /* We expect five bytes. */ \ - cnt = 4; \ - val &= 0x03; \ - } \ - else \ - { \ - /* We expect six bytes. */ \ - cnt = 5; \ - val &= 0x01; \ - } \ - \ - do \ - { \ - c = inchar (); \ - if (c == EOF \ - || (c & 0xc0) == 0x80 || (c & 0xfe) == 0xfe) \ - encode_error (); \ - val <<= 6; \ - val |= c & 0x3f; \ - } \ - while (--cnt > 0); \ - } \ - \ - if (!(flags & SUPPRESS)) \ - *wstr++ = val; \ - first = 0 - - NEXT_WIDE_CHAR (first); - } - while (--width > 0); - - if (width > 0) - /* I.e., EOF was read. */ - --read_in; - - if (!(flags & SUPPRESS)) - ++done; - } - break; - - case 's': /* Read a string. */ - if (flags & LONG) - /* We have to process a wide character string. */ - goto wide_char_string; - -#define STRING_ARG(Str, Type) \ - if (!(flags & SUPPRESS)) \ - { \ - if (flags & MALLOC) \ - { \ - /* The string is to be stored in a malloc'd buffer. */ \ - strptr = ARG (char **); \ - if (strptr == NULL) \ - conv_error (); \ - /* Allocate an initial buffer. */ \ - strsize = 100; \ - *strptr = malloc (strsize * sizeof (Type)); \ - Str = (Type *) *strptr; \ - } \ - else \ - Str = ARG (Type *); \ - if (Str == NULL) \ - conv_error (); \ - } - - STRING_ARG (str, char); - - c = inchar (); - if (c == EOF) - input_error (); - - do - { - if (isspace (c)) - { - UNGETC (c, s); - break; - } -#define STRING_ADD_CHAR(Str, c, Type) \ - if (!(flags & SUPPRESS)) \ - { \ - *Str++ = c; \ - if ((flags & MALLOC) && (char *) Str == *strptr + strsize) \ - { \ - /* Enlarge the buffer. */ \ - Str = realloc (*strptr, strsize * 2 * sizeof (Type)); \ - if (Str == NULL) \ - { \ - /* Can't allocate that much. Last-ditch effort. */\ - Str = realloc (*strptr, \ - (strsize + 1) * sizeof (Type)); \ - if (Str == NULL) \ - { \ - /* We lose. Oh well. \ - Terminate the string and stop converting, \ - so at least we don't skip any input. */ \ - ((Type *) (*strptr))[strsize] = '\0'; \ - ++done; \ - conv_error (); \ - } \ - else \ - { \ - *strptr = (char *) Str; \ - Str = ((Type *) *strptr) + strsize; \ - ++strsize; \ - } \ - } \ - else \ - { \ - *strptr = (char *) Str; \ - Str = ((Type *) *strptr) + strsize; \ - strsize *= 2; \ - } \ - } \ - } - - STRING_ADD_CHAR (str, c, char); - } - while ((width <= 0 || --width > 0) && inchar () != EOF); - - if (!(flags & SUPPRESS)) - { - *str = '\0'; - ++done; - } - break; - - case 'S': - /* Wide character string. */ -wide_char_string: - { - wint_t val; - int first = 1; - STRING_ARG (wstr, wchar_t); - - do - { - size_t cnt = 0; - NEXT_WIDE_CHAR (first); - - if (iswspace (val)) - { - /* XXX We would have to push back the whole wide char - with possibly many bytes. But since scanf does - not make a difference for white space characters - we can simply push back a simple which is - guaranteed to be in the [:space:] class. */ - UNGETC (' ', s); - break; - } - - STRING_ADD_CHAR (wstr, val, wchar_t); - first = 0; - } - while (width <= 0 || --width > 0); - - if (!(flags & SUPPRESS)) - { - *wstr = L'\0'; - ++done; - } - } - break; - - case 'x': /* Hexadecimal integer. */ - case 'X': /* Ditto. */ - base = 16; - number_signed = 0; - goto number; - - case 'o': /* Octal integer. */ - base = 8; - number_signed = 0; - goto number; - - case 'u': /* Unsigned decimal integer. */ - base = 10; - number_signed = 0; - goto number; - - case 'd': /* Signed decimal integer. */ - base = 10; - number_signed = 1; - goto number; - - case 'i': /* Generic number. */ - base = 0; - number_signed = 1; - -number: - c = inchar (); - if (c == EOF) - input_error (); - - /* Check for a sign. */ - if (c == '-' || c == '+') - { - ADDW (c); - if (width > 0) - --width; - c = inchar (); - } - - /* Look for a leading indication of base. */ - if (width != 0 && c == '0') - { - if (width > 0) - --width; - - ADDW (c); - c = inchar (); - - if (width != 0 && tolower (c) == 'x') - { - if (base == 0) - base = 16; - if (base == 16) - { - if (width > 0) - --width; - c = inchar (); - } - } - else if (base == 0) - base = 8; - } - - if (base == 0) - base = 10; - - /* Read the number into workspace. */ - while (c != EOF && width != 0) - { - if (base == 16 ? !isxdigit (c) : - ((!isdigit (c) || c - '0' >= base) && - !((flags & GROUP) && base == 10 && c == thousands))) - break; - ADDW (c); - if (width > 0) - --width; - - c = inchar (); - } - - /* The just read character is not part of the number anymore. */ - UNGETC (c, s); - - if (wpsize == 0 || - (wpsize == 1 && (wp[0] == '+' || wp[0] == '-'))) - /* There was no number. */ - conv_error (); - - /* Convert the number. */ - ADDW ('\0'); - if (flags & LONGDBL) - { - // if (number_signed) - // num.q = __strtoq_internal (wp, &tw, base, flags & GROUP); - // else - // num.uq = __strtouq_internal (wp, &tw, base, flags & GROUP); - } - else - { - if (number_signed) - num.l = __strtol_internal (wp, &tw, base, flags & GROUP); - else - num.ul = __strtoul_internal (wp, &tw, base, flags & GROUP); - } - if (wp == tw) - conv_error (); - - if (!(flags & SUPPRESS)) - { - if (! number_signed) - { - if (flags & LONGDBL) - { - *ARG (ULONGLONG*) = num.uq; - } - else if (flags & LONG) - *ARG (unsigned long int*) = num.ul; - else if (flags & SHORT) - *ARG (unsigned short int*) = (unsigned short int) num.ul; - else - *ARG (unsigned int*) = (unsigned int) num.ul; - } - else - { - if (flags & LONGDBL) - { - *ARG (LONGLONG*) = num.q; - } - else if (flags & LONG) - *ARG (long int *) = num.l; - else if (flags & SHORT) - *ARG (short int *) = (short int) num.l; - else - *ARG (int *) = (int) num.l; - } - ++done; - } - break; - - case 'e': /* Floating-point numbers. */ - case 'E': - case 'f': - case 'g': - case 'G': - c = inchar (); - if (c == EOF) - input_error (); - - /* Check for a sign. */ - if (c == '-' || c == '+') - { - negative = c == '-'; - if (inchar () == EOF) - /* EOF is only an input error before we read any chars. */ - conv_error (); - if (width > 0) - --width; - } - else - negative = 0; - - got_dot = got_e = 0; - do - { - if (isdigit (c)) - ADDW (c); - else if (got_e && wp[wpsize - 1] == 'e' - && (c == '-' || c == '+')) - ADDW (c); - else if (wpsize > 0 && !got_e && tolower (c) == 'e') - { - ADDW ('e'); - got_e = got_dot = 1; - } - else if (c == decimal && !got_dot) - { - ADDW (c); - got_dot = 1; - } - else if ((flags & GROUP) && c == thousands && !got_dot) - ADDW (c); - else - { - /* The last read character is not part of the number - anymore. */ - UNGETC (c, s); - break; - } - if (width > 0) - --width; - } - while (width != 0 && inchar () != EOF); - - if (wpsize == 0) - conv_error (); - - /* Convert the number. */ - ADDW ('\0'); -#if 0 - - if (flags & LONGDBL) - { - long double d = __strtold_internal (wp, &tw, flags & GROUP); - if (!(flags & SUPPRESS) && tw != wp) - *ARG (long double *) = negative ? -d : d; - } -#endif - /* - double = long double in windows world. -Gunnar - */ - if (flags & (LONG|LONGDBL)) - { - double d = __strtod_internal (wp, &tw, flags & GROUP); - if (!(flags & SUPPRESS) && tw != wp){ - *ARG (double *) = negative ? -d : d; - } - } - else - { - float d = __strtof_internal (wp, &tw, flags & GROUP); - if (!(flags & SUPPRESS) && tw != wp){ - *ARG (float *) = negative ? -d : d; - } - } - - if (tw == wp) - conv_error (); - - if (!(flags & SUPPRESS)) - ++done; - break; - - case '[': /* Character class. */ - if (flags & LONG) - { - STRING_ARG (wstr, wchar_t); - c = '\0'; /* This is to keep gcc quiet. */ - } - else - { - STRING_ARG (str, char); - - c = inchar (); - if (c == EOF) - input_error (); - } - - if (*f == '^') - { - ++f; - not_in = 1; - } - else - not_in = 0; - - /* Fill WP with byte flags indexed by character. - We will use this flag map for matching input characters. */ - if (wpmax < UCHAR_MAX) - { - wpmax = UCHAR_MAX; - wp = (char *) alloca (wpmax); - } - memset (wp, 0, UCHAR_MAX); - - fc = *f; - if (fc == ']' || fc == '-') - { - /* If ] or - appears before any char in the set, it is not - the terminator or separator, but the first char in the - set. */ - wp[fc] = 1; - ++f; - } - - while ((fc = *f++) != '\0' && fc != ']') - { - if (fc == '-' && *f != '\0' && *f != ']' && - (unsigned char) f[-2] <= (unsigned char) *f) - { - /* Add all characters from the one before the '-' - up to (but not including) the next format char. */ - for (fc = f[-2]; fc < *f; ++fc) - wp[fc] = 1; - } - else - /* Add the character to the flag map. */ - wp[fc] = 1; - } - if (fc == '\0') - { - if (!(flags & LONG)) - UNGETC (c, s); - conv_error(); - } - - if (flags & LONG) - { - wint_t val; - int first = 1; - - do - { - size_t cnt = 0; - NEXT_WIDE_CHAR (first); - if (val > 255 || wp[val] == not_in) - { - /* XXX We have a problem here. We read a wide - character and this possibly took several - bytes. But we can only push back one single - character. To be sure we don't create wrong - input we push it back only in case it is - representable within one byte. */ - if (val < 0x80) - UNGETC (val, s); - break; - } - STRING_ADD_CHAR (wstr, val, wchar_t); - if (width > 0) - --width; - first = 0; - } - while (width != 0); - - if (first) - conv_error (); - - if (!(flags & SUPPRESS)) - { - *wstr = L'\0'; - ++done; - } - } - else - { - num.ul = read_in - 1; /* -1 because we already read one char. */ - do - { - if (wp[c] == not_in) - { - UNGETC (c, s); - break; - } - STRING_ADD_CHAR (str, c, char); - if (width > 0) - --width; - } - while (width != 0 && inchar () != EOF); - - if (read_in == num.ul) - conv_error (); - - if (!(flags & SUPPRESS)) - { - *str = '\0'; - ++done; - } - } - break; - - case 'p': /* Generic pointer. */ - base = 16; - /* A PTR must be the same size as a `long int'. */ - flags &= ~(SHORT|LONGDBL); - flags |= LONG; - number_signed = 0; - goto number; - } - } - - /* The last thing we saw int the format string was a white space. - Consume the last white spaces. */ - if (skip_space) - { - do - c = inchar (); - while (isspace (c)); - UNGETC (c, s); - } - - - return done; -} - - - -int -xfscanf(FILE *f, const char *fmt, ...) -{ - int r; - va_list a=0; - va_start(a, fmt); - r = __vfscanf(f, fmt, a); - va_end(a); - return r; -} - - -double __strtod_internal (const char *__nptr,char **__endptr, int __group) -{ - return strtod(__nptr,__endptr); -} -float __strtof_internal (const char *__nptr, char **__endptr,int __group) -{ - return (float)strtod(__nptr,__endptr); -} -static double powten[] = - { - 1e1L, 1e2L, 1e4L, 1e8L, 1e16L, 1e32L, 1e64L, 1e128L, 1e256L, -#ifdef __GNUC__ - 1e512L, 1e512L*1e512L, 1e2048L, 1e4096L -#else - 1e256L, 1e256L, 1e256L, 1e256L -#endif - }; - -long double __strtold_internal (const char *s,char **sret, int __group) -{ - - long double r; /* result */ - int e, ne; /* exponent */ - int sign; /* +- 1.0 */ - int esign; - int flags=0; - int l2powm1; - - r = 0.0L; - sign = 1; - e = ne = 0; - esign = 1; - - while(*s && isspace(*s)) - s++; - - if (*s == '+') - s++; - else if (*s == '-') - { - sign = -1; - s++; - } - - while ((*s >= '0') && (*s <= '9')) - { - flags |= 1; - r *= 10.0L; - r += *s - '0'; - s++; - } - - if (*s == '.') - { - s++; - while ((*s >= '0') && (*s <= '9')) - { - flags |= 2; - r *= 10.0L; - r += *s - '0'; - s++; - ne++; - } - } - if (flags == 0) - { - if (sret) - *sret = (char *)s; - return 0.0L; - } - - if ((*s == 'e') || (*s == 'E')) - { - s++; - if (*s == '+') - s++; - else if (*s == '-') - { - s++; - esign = -1; - } - while ((*s >= '0') && (*s <= '9')) - { - e *= 10; - e += *s - '0'; - s++; - } - } - if (esign < 0) - { - esign = -esign; - e = -e; - } - e = e - ne; - if (e < -4096) - { - /* possibly subnormal number, 10^e would overflow */ - r *= 1.0e-2048L; - e += 2048; - } - if (e < 0) - { - e = -e; - esign = -esign; - } - if (e >= 8192) - e = 8191; - if (e) - { - double d = 1.0L; - l2powm1 = 0; - while (e) - { - if (e & 1) - d *= powten[l2powm1]; - e >>= 1; - l2powm1++; - } - if (esign > 0) - r *= d; - else - r /= d; - } - if (sret) - *sret = (char *)s; - return r * sign; - - return 0; -} -long int __strtol_internal (const char *__nptr, char **__endptr, int __base, int __group) -{ - return strtol(__nptr,__endptr, __base); -} -unsigned long int __strtoul_internal (const char *__nptr, char **__endptr, int __base, int __group) -{ - return strtoul(__nptr,__endptr, __base); -} - - - - - - - - - diff --git a/reactos/lib/crt/stdio/vfwprint.c b/reactos/lib/crt/stdio/vfwprint.c index 4e58b29bf95..262b2d18e97 100644 --- a/reactos/lib/crt/stdio/vfwprint.c +++ b/reactos/lib/crt/stdio/vfwprint.c @@ -4,13 +4,10 @@ #undef __USE_W32API #endif -//#include -#include // robd -#include // robd - -#include -#include -#include +#include +#include +#include +#include int _isnanl(double x); @@ -33,7 +30,7 @@ vfwprintf(FILE *f, const wchar_t *fmt, va_list ap) wchar_t localbuf[BUFSIZ]; #if 0 - __fileno_lock(fileno(f)); + __fileno_lock(_fileno(f)); #endif if (f->_flag & _IONBF) { f->_flag &= ~_IONBF; @@ -48,7 +45,7 @@ vfwprintf(FILE *f, const wchar_t *fmt, va_list ap) } else len = __vfwprintf(f,fmt,ap); #if 0 - __fileno_unlock(fileno(f)); + __fileno_unlock(_fileno(f)); #endif return (ferror(f) ? EOF : len); } @@ -70,14 +67,13 @@ vfwprintf(FILE *f, const wchar_t *fmt, va_list ap) * Appropiated for the reactos kernel, March 1998 -- David Welch */ -#include +#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #define ZEROPAD 1 /* pad with zero */ diff --git a/reactos/lib/crt/stdio/vprintf.c b/reactos/lib/crt/stdio/vprintf.c index f487414ec8f..009245029e4 100644 --- a/reactos/lib/crt/stdio/vprintf.c +++ b/reactos/lib/crt/stdio/vprintf.c @@ -16,11 +16,11 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include +#include #undef __OPTIMIZE__ /* Avoid inline `vprintf' function. */ -#include -#include - +#include +#include +#include #undef vprintf #undef vwprintf @@ -32,52 +32,28 @@ Cambridge, MA 02139, USA. */ /* * @implemented */ -int vprintf(const char* format, va_list arg) +int _vtprintf(const _TCHAR* format, va_list arg) { int ret; - ret = vfprintf(stdout, format, arg); - fflush(stdout); - return ret; -} - -/* - * @implemented - */ -int vwprintf(const wchar_t* format, va_list arg) -{ - int ret; - - ret = vfwprintf(stdout, format, arg); + ret = _vftprintf(stdout, format, arg); fflush(stdout); return ret; } #else -int vprintf(const char* format, ...) +int _vtprintf(const _TCHAR* format, ...) { va_list arg; int ret; va_start(arg, format); - ret = vfprintf(stdout, format, arg); + ret = _vftprintf(stdout, format, arg); va_end(arg); fflush(stdout); return ret; } -int vwprintf(const wchar_t* format, ...) -{ - va_list arg; - int ret; - - va_start(arg, format); - ret = vfwprintf(stdout, format, arg); - va_end(arg); - fflush(stdout); - return ret; -} - #endif diff --git a/reactos/lib/crt/stdio/vscanf.c b/reactos/lib/crt/stdio/vscanf.c deleted file mode 100644 index 4c6b7968964..00000000000 --- a/reactos/lib/crt/stdio/vscanf.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include - - -#undef vscanf - - -/* Read formatted input from stdin according to the format - string in FORMAT, using the argument list in ARG. */ -int __vscanf (const char *format, va_list arg) -{ - return __vfscanf(stdin, format, arg); -} - diff --git a/reactos/lib/crt/stdio/vsprintf.c b/reactos/lib/crt/stdio/vsprintf.c index 9209bb1b3f3..0fadd4881d5 100644 --- a/reactos/lib/crt/stdio/vsprintf.c +++ b/reactos/lib/crt/stdio/vsprintf.c @@ -1,42 +1,25 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include #include -#include +#include +#include /* * @implemented */ int -vsprintf(char *str, const char *fmt, va_list ap) +_vstprintf(_TCHAR *str, const _TCHAR *fmt, va_list ap) { - FILE f; - int len; - - f._flag = _IOWRT|_IOSTRG|_IOBINARY; - f._ptr = str; - f._cnt = INT_MAX; - f._file = -1; - len = vfprintf(&f,fmt, ap); - *f._ptr = 0; - return len; -} - -/* - * @implemented - */ -int -vswprintf(wchar_t *str, const wchar_t *fmt, va_list ap) -{ - FILE f; + FILE f = {0}; int len; f._flag = _IOWRT|_IOSTRG|_IOBINARY; f._ptr = (char*)str; f._cnt = INT_MAX; f._file = -1; - len = vfwprintf(&f,fmt, ap); - *(wchar_t*)f._ptr = 0; + len = _vftprintf(&f,fmt, ap); + *(_TCHAR*)f._ptr = 0; return len; } @@ -45,36 +28,17 @@ vswprintf(wchar_t *str, const wchar_t *fmt, va_list ap) * @implemented */ int -_vsnprintf(char *str, size_t maxlen, const char *fmt, va_list ap) +_vsntprintf(_TCHAR *str, size_t maxlen, const _TCHAR *fmt, va_list ap) { - FILE f; - int len; - f._flag = _IOWRT|_IOSTRG|_IOBINARY; - f._ptr = str; - f._cnt = maxlen; - f._file = -1; - len = vfprintf(&f,fmt, ap); - // what if the buffer is full ?? - *f._ptr = 0; - return len; -} - -/* - * @implemented - */ -int -_vsnwprintf(wchar_t *str, size_t maxlen, const wchar_t *fmt, va_list ap) -{ - FILE f; + FILE f = {0}; int len; + f._flag = _IOWRT|_IOSTRG|_IOBINARY; f._ptr = (char*)str; f._cnt = maxlen; f._file = -1; - len = vfwprintf(&f,fmt, ap); + len = _vftprintf(&f,fmt, ap); // what if the buffer is full ?? - *(wchar_t*)f._ptr = 0; + *(_TCHAR *)f._ptr = 0; return len; } - - diff --git a/reactos/lib/crt/stdio/vsscanf.c b/reactos/lib/crt/stdio/vsscanf.c deleted file mode 100644 index b24fe72f620..00000000000 --- a/reactos/lib/crt/stdio/vsscanf.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include -#include -#include - -#undef vsscanf - -/* Read formatted input from S according to the format - string FORMAT, using the argument list in ARG. */ -int __vsscanf(const char *s,const char *format,va_list arg) -{ - FILE f; - - if (s == NULL) - { - __set_errno(EINVAL); - return -1; - } - - memset((void *) &f, 0, sizeof (f)); - - f._flag = _IOREAD|_IOSTRG|_IOBINARY; - f._ptr = (char *)s; - f._base = (char *)s; - f._bufsiz = strlen(s); - f._cnt = f._bufsiz; - - return __vfscanf(&f, format, arg); -} - diff --git a/reactos/lib/crt/stdio/vswprintf.c b/reactos/lib/crt/stdio/vswprintf.c new file mode 100644 index 00000000000..646e937fee7 --- /dev/null +++ b/reactos/lib/crt/stdio/vswprintf.c @@ -0,0 +1,4 @@ +#define UNICODE +#define _UNICODE + +#include "vsprintf.c" diff --git a/reactos/lib/crt/stdio/vwprintf.c b/reactos/lib/crt/stdio/vwprintf.c new file mode 100644 index 00000000000..80e54674f88 --- /dev/null +++ b/reactos/lib/crt/stdio/vwprintf.c @@ -0,0 +1,5 @@ +#define _UNICODE +#define UNICODE + +#include "vprintf.c" + diff --git a/reactos/lib/crt/stdio/wfdopen.c b/reactos/lib/crt/stdio/wfdopen.c index 08bbeb9455c..aa1fcc7bc47 100644 --- a/reactos/lib/crt/stdio/wfdopen.c +++ b/reactos/lib/crt/stdio/wfdopen.c @@ -1,57 +1,7 @@ -#include -#include - -FILE* __alloc_file(void); -/* - * @implemented - */ -FILE* _wfdopen(int handle, wchar_t* mode) -{ - FILE* file; - int rw; +#define _UNICODE +#define UNICODE - if (handle == 0) - return stdin; +#include "fdopen.c" - if (handle == 1) - return stdout; - - if (handle == 2) - return stderr; - - if (handle == 3) - return stdaux; - - if (handle == 4) - return stdprn; - - file = __alloc_file(); - if (file == NULL) - return NULL; - file->_file = handle; - - rw = (mode[1] == L'+') || (mode[1] && (mode[2] == L'+')); - - if (*mode == L'a') - _lseek(handle, 0, SEEK_END); - - file->_cnt = 0; - file->_file = handle; - file->_bufsiz = 0; - -// The mode of the stream must be compatible with the mode of the file descriptor. -// this should be checked. - - if (rw) - file->_flag = _IOREAD | _IOWRT; - else if (*mode == L'r') - file->_flag = _IOREAD; - else - file->_flag = _IOWRT; - - file->_base = file->_ptr = NULL; - - return file; -} diff --git a/reactos/lib/crt/stdio/wfreopen.c b/reactos/lib/crt/stdio/wfreopen.c new file mode 100644 index 00000000000..933968368c0 --- /dev/null +++ b/reactos/lib/crt/stdio/wfreopen.c @@ -0,0 +1,6 @@ + +#define UNICODE +#define _UNICODE + +#include "freopen.c" + diff --git a/reactos/lib/crt/stdio/wfsopen.c b/reactos/lib/crt/stdio/wfsopen.c new file mode 100644 index 00000000000..90020ae9f1d --- /dev/null +++ b/reactos/lib/crt/stdio/wfsopen.c @@ -0,0 +1,5 @@ +#define _UNICODE +#define UNICODE + +#include "fsopen.c" + diff --git a/reactos/lib/crt/stdio/wpopen.c b/reactos/lib/crt/stdio/wpopen.c new file mode 100644 index 00000000000..bf1d111475f --- /dev/null +++ b/reactos/lib/crt/stdio/wpopen.c @@ -0,0 +1,5 @@ +#define _UNICODE +#define UNICODE + +#include "popen.c" + diff --git a/reactos/lib/crt/stdio/wprintf.c b/reactos/lib/crt/stdio/wprintf.c new file mode 100644 index 00000000000..5bf927f20e8 --- /dev/null +++ b/reactos/lib/crt/stdio/wprintf.c @@ -0,0 +1,5 @@ +#define _UNICODE +#define UNICODE + +#include "printf.c" + diff --git a/reactos/lib/crt/stdio/wremove.c b/reactos/lib/crt/stdio/wremove.c new file mode 100644 index 00000000000..959802a67a1 --- /dev/null +++ b/reactos/lib/crt/stdio/wremove.c @@ -0,0 +1,4 @@ +#define UNICODE +#define _UNICODE + +#include "remove.c" diff --git a/reactos/lib/crt/stdio/wrename.c b/reactos/lib/crt/stdio/wrename.c index 1c78865ea2d..bb6eda1d144 100644 --- a/reactos/lib/crt/stdio/wrename.c +++ b/reactos/lib/crt/stdio/wrename.c @@ -1,18 +1,6 @@ -#include "precomp.h" -#include -#include +#define _UNICODE +#define UNICODE -/* - * @implemented - */ -int _wrename(const wchar_t* old_, const wchar_t* new_) -{ - if (old_ == NULL || new_ == NULL) - return -1; +#include "rename.c" - if (!MoveFileW(old_, new_)) - return -1; - - return 0; -} diff --git a/reactos/lib/crt/stdio/wtempnam.c b/reactos/lib/crt/stdio/wtempnam.c index 4f73f8c9d0d..ec9e2bd9053 100644 --- a/reactos/lib/crt/stdio/wtempnam.c +++ b/reactos/lib/crt/stdio/wtempnam.c @@ -1,25 +1,6 @@ -#include "precomp.h" -#include -#include +#define _UNICODE +#define UNICODE -/* - * @implemented - */ -wchar_t* _wtempnam(const wchar_t* dir, const wchar_t* prefix) -{ - wchar_t* TempFileName = malloc(MAX_PATH); - wchar_t* d; +#include "tempnam.c" - if (dir == NULL) - d = _wgetenv(L"TMP"); - else - d = (wchar_t*)dir; - - if (GetTempFileNameW(d, prefix, 1, TempFileName) == 0) { - free(TempFileName); - return NULL; - } - - return TempFileName; -} diff --git a/reactos/lib/crt/stdio/wtmpnam.c b/reactos/lib/crt/stdio/wtmpnam.c index 770e6ecacb0..dca653f8e0e 100644 --- a/reactos/lib/crt/stdio/wtmpnam.c +++ b/reactos/lib/crt/stdio/wtmpnam.c @@ -1,19 +1,5 @@ -#include "precomp.h" -#include -#include +#define _UNICODE +#define UNICODE -/* - * @implemented - */ -wchar_t* _wtmpnam(wchar_t* s) -{ - wchar_t PathName[MAX_PATH]; - static wchar_t static_buf[MAX_PATH]; - - GetTempPathW(MAX_PATH, PathName); - GetTempFileNameW(PathName, L"ARI", 007, static_buf); - wcscpy(s, static_buf); - - return s; -} +#import "tmpnam.c" diff --git a/reactos/lib/crt/stdlib/_exit.c b/reactos/lib/crt/stdlib/_exit.c index cb7b5e1a37b..a4ab2499172 100644 --- a/reactos/lib/crt/stdlib/_exit.c +++ b/reactos/lib/crt/stdlib/_exit.c @@ -1,8 +1,8 @@ #include "precomp.h" -#include -#include -#include -#include +#include +#include +#include +#include struct __atexit *__atexit_ptr = 0; diff --git a/reactos/lib/crt/stdlib/abort.c b/reactos/lib/crt/stdlib/abort.c index e0ae1955ebd..02338d6dd6e 100644 --- a/reactos/lib/crt/stdlib/abort.c +++ b/reactos/lib/crt/stdlib/abort.c @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include char *msg ="Abort\n\r"; @@ -11,7 +11,7 @@ char *msg ="Abort\n\r"; void abort() { fflush(NULL); - fcloseall(); + _fcloseall(); raise(SIGABRT); _write(stderr->_file, msg, sizeof(msg)-1); exit(3); diff --git a/reactos/lib/crt/stdlib/abs.c b/reactos/lib/crt/stdlib/abs.c index 3efdce831fd..24f6351b574 100644 --- a/reactos/lib/crt/stdlib/abs.c +++ b/reactos/lib/crt/stdlib/abs.c @@ -1,6 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/atexit.c b/reactos/lib/crt/stdlib/atexit.c index 6d08dfd160f..7f6fa95f19e 100644 --- a/reactos/lib/crt/stdlib/atexit.c +++ b/reactos/lib/crt/stdlib/atexit.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include typedef int (* _onexit_t)(void); diff --git a/reactos/lib/crt/stdlib/atof.c b/reactos/lib/crt/stdlib/atof.c index e3021084b92..b2de698be50 100644 --- a/reactos/lib/crt/stdlib/atof.c +++ b/reactos/lib/crt/stdlib/atof.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/atoi.c b/reactos/lib/crt/stdlib/atoi.c index df6a0c47002..9e991dbe9a1 100644 --- a/reactos/lib/crt/stdlib/atoi.c +++ b/reactos/lib/crt/stdlib/atoi.c @@ -1,11 +1,12 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include +#include /* * @implemented */ int -atoi(const char *str) +_ttoi(const _TCHAR *str) { - return (int)strtol(str, 0, 10); + return (int)_tcstol(str, 0, 10); } diff --git a/reactos/lib/crt/stdlib/atoi64.c b/reactos/lib/crt/stdlib/atoi64.c index 6855b90fbcd..2011e0f297d 100644 --- a/reactos/lib/crt/stdlib/atoi64.c +++ b/reactos/lib/crt/stdlib/atoi64.c @@ -1,6 +1,6 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/atol.c b/reactos/lib/crt/stdlib/atol.c index 663301d95fc..58e0aa78028 100644 --- a/reactos/lib/crt/stdlib/atol.c +++ b/reactos/lib/crt/stdlib/atol.c @@ -1,11 +1,12 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include +#include /* * @implemented */ long -atol(const char *str) +_ttol(const _TCHAR *str) { - return strtol(str, 0, 10); + return _tcstol(str, 0, 10); } diff --git a/reactos/lib/crt/stdlib/atold.c b/reactos/lib/crt/stdlib/atold.c index c9b511684a4..ce3f33ac434 100644 --- a/reactos/lib/crt/stdlib/atold.c +++ b/reactos/lib/crt/stdlib/atold.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include long double _atold(const char *ascii) diff --git a/reactos/lib/crt/stdlib/bsearch.c b/reactos/lib/crt/stdlib/bsearch.c index 7efbdbd9897..e1e4f11e586 100644 --- a/reactos/lib/crt/stdlib/bsearch.c +++ b/reactos/lib/crt/stdlib/bsearch.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/div.c b/reactos/lib/crt/stdlib/div.c index 56b8b4422f8..06be1b070c2 100644 --- a/reactos/lib/crt/stdlib/div.c +++ b/reactos/lib/crt/stdlib/div.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/ecvt.c b/reactos/lib/crt/stdlib/ecvt.c index 940ffb2ed27..43ad5f2b2fc 100644 --- a/reactos/lib/crt/stdlib/ecvt.c +++ b/reactos/lib/crt/stdlib/ecvt.c @@ -1,6 +1,6 @@ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include char *ecvtbuf (double, int, int *, int *, char *); diff --git a/reactos/lib/crt/stdlib/ecvtbuf.c b/reactos/lib/crt/stdlib/ecvtbuf.c index 1d0f65fbba8..a218b92bea7 100644 --- a/reactos/lib/crt/stdlib/ecvtbuf.c +++ b/reactos/lib/crt/stdlib/ecvtbuf.c @@ -1,9 +1,9 @@ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include // #include void __ecvround (char *, char *, const char *, int *); @@ -41,7 +41,7 @@ ecvtbuf (double value, int ndigits, int *decpt, int *sign, char *buf) { static char INFINITY[] = "Infinity"; char decimal = '.' /* localeconv()->decimal_point[0] */; - char *cvtbuf = (char *)alloca (ndigits + 20); /* +3 for sign, dot, null; */ + char *cvtbuf = (char *)_alloca (ndigits + 20); /* +3 for sign, dot, null; */ /* two extra for rounding */ /* 15 extra for alignment */ char *s = cvtbuf, *d = buf; diff --git a/reactos/lib/crt/stdlib/errno.c b/reactos/lib/crt/stdlib/errno.c index cb3b00b4ecd..7b2ba8df874 100644 --- a/reactos/lib/crt/stdlib/errno.c +++ b/reactos/lib/crt/stdlib/errno.c @@ -5,9 +5,9 @@ #undef __USE_W32API #endif -#include -#include -#include +#include +#include +#include #include "doserrmap.h" diff --git a/reactos/lib/crt/stdlib/fcvt.c b/reactos/lib/crt/stdlib/fcvt.c index 423b7f2380d..d01a54eea8a 100644 --- a/reactos/lib/crt/stdlib/fcvt.c +++ b/reactos/lib/crt/stdlib/fcvt.c @@ -1,6 +1,6 @@ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include char *fcvtbuf (double, int, int *, int *, char *); diff --git a/reactos/lib/crt/stdlib/fcvtbuf.c b/reactos/lib/crt/stdlib/fcvtbuf.c index 2bf85aa6483..cbec72b604a 100644 --- a/reactos/lib/crt/stdlib/fcvtbuf.c +++ b/reactos/lib/crt/stdlib/fcvtbuf.c @@ -1,9 +1,9 @@ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include // #include void __ecvround (char *, char *, const char *, int *); @@ -15,7 +15,7 @@ fcvtbuf (double value, int ndigits, int *decpt, int *sign, char *buf) static char INFINITY[] = "Infinity"; char decimal = '.' /* localeconv()->decimal_point[0] */; int digits = ndigits >= 0 ? ndigits : 0; - char *cvtbuf = (char *)alloca (2*DBL_MAX_10_EXP + 16); + char *cvtbuf = (char *)_alloca (2*DBL_MAX_10_EXP + 16); char *s = cvtbuf; char *dot; diff --git a/reactos/lib/crt/stdlib/fullpath.c b/reactos/lib/crt/stdlib/fullpath.c index 8f61c94e76e..aea0833e62f 100644 --- a/reactos/lib/crt/stdlib/fullpath.c +++ b/reactos/lib/crt/stdlib/fullpath.c @@ -9,17 +9,18 @@ */ #include "precomp.h" -#include +#include +#include /* * @implemented */ -char* _fullpath(char* absPath, const char* relPath, size_t maxLength) +_TCHAR* _tfullpath(_TCHAR* absPath, const _TCHAR* relPath, size_t maxLength) { - char* lpFilePart; + _TCHAR* lpFilePart; - if (GetFullPathNameA(relPath,maxLength,absPath,&lpFilePart) == 0) + if (GetFullPathName(relPath,maxLength,absPath,&lpFilePart) == 0) return NULL; return absPath; diff --git a/reactos/lib/crt/stdlib/gcvt.c b/reactos/lib/crt/stdlib/gcvt.c index c077566c83a..dbc8168ddc3 100644 --- a/reactos/lib/crt/stdlib/gcvt.c +++ b/reactos/lib/crt/stdlib/gcvt.c @@ -1,7 +1,7 @@ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/getenv.c b/reactos/lib/crt/stdlib/getenv.c index 71d91b18afc..0a445b0dac2 100644 --- a/reactos/lib/crt/stdlib/getenv.c +++ b/reactos/lib/crt/stdlib/getenv.c @@ -1,8 +1,8 @@ #include "precomp.h" -#include +#include #define NDEBUG -#include +#include #undef environ diff --git a/reactos/lib/crt/stdlib/itoa.c b/reactos/lib/crt/stdlib/itoa.c index 004efc7ac6c..d6ce83ea36e 100644 --- a/reactos/lib/crt/stdlib/itoa.c +++ b/reactos/lib/crt/stdlib/itoa.c @@ -10,9 +10,9 @@ */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/itow.c b/reactos/lib/crt/stdlib/itow.c index 1939d1a6ff0..5156bc46dc8 100644 --- a/reactos/lib/crt/stdlib/itow.c +++ b/reactos/lib/crt/stdlib/itow.c @@ -12,9 +12,9 @@ */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/labs.c b/reactos/lib/crt/stdlib/labs.c index 8c1d3fff3f0..50ad63daf43 100644 --- a/reactos/lib/crt/stdlib/labs.c +++ b/reactos/lib/crt/stdlib/labs.c @@ -1,6 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/ldiv.c b/reactos/lib/crt/stdlib/ldiv.c index a40597d0e95..3f8a2ec3147 100644 --- a/reactos/lib/crt/stdlib/ldiv.c +++ b/reactos/lib/crt/stdlib/ldiv.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/makepath.c b/reactos/lib/crt/stdlib/makepath.c index 2ca367f1307..8db6a6794f9 100644 --- a/reactos/lib/crt/stdlib/makepath.c +++ b/reactos/lib/crt/stdlib/makepath.c @@ -1,7 +1,7 @@ /* $Id$ */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/malloc.c b/reactos/lib/crt/stdlib/malloc.c index 95e715ae76f..2ad1054dee2 100644 --- a/reactos/lib/crt/stdlib/malloc.c +++ b/reactos/lib/crt/stdlib/malloc.c @@ -22,8 +22,8 @@ */ #include "precomp.h" -#include -#include +#include +#include extern HANDLE hHeap; diff --git a/reactos/lib/crt/stdlib/mbstowcs.c b/reactos/lib/crt/stdlib/mbstowcs.c index 823d61a8231..54e2e33d26a 100644 --- a/reactos/lib/crt/stdlib/mbstowcs.c +++ b/reactos/lib/crt/stdlib/mbstowcs.c @@ -1,7 +1,7 @@ #include "precomp.h" -#include -#include -#include +#include +#include +#include #if 1 /* diff --git a/reactos/lib/crt/stdlib/mbtowc.c b/reactos/lib/crt/stdlib/mbtowc.c index 8530f55db0d..22b17c3fedc 100644 --- a/reactos/lib/crt/stdlib/mbtowc.c +++ b/reactos/lib/crt/stdlib/mbtowc.c @@ -1,6 +1,6 @@ #include "precomp.h" -#include -#include +#include +#include #if 1 diff --git a/reactos/lib/crt/stdlib/obsol.c b/reactos/lib/crt/stdlib/obsol.c index 48e465fc2d0..946c8ad3888 100644 --- a/reactos/lib/crt/stdlib/obsol.c +++ b/reactos/lib/crt/stdlib/obsol.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include #undef _cpumode unsigned char _cpumode = 0; diff --git a/reactos/lib/crt/stdlib/putenv.c b/reactos/lib/crt/stdlib/putenv.c index 8921ee78cac..7edf52d0591 100644 --- a/reactos/lib/crt/stdlib/putenv.c +++ b/reactos/lib/crt/stdlib/putenv.c @@ -1,9 +1,9 @@ #include "precomp.h" -#include -#include +#include +#include #define NDEBUG -#include +#include /* misc/environ.c */ int SetEnv(const wchar_t *option); diff --git a/reactos/lib/crt/stdlib/qsort.c b/reactos/lib/crt/stdlib/qsort.c index e5e662ad881..2be3badae77 100644 --- a/reactos/lib/crt/stdlib/qsort.c +++ b/reactos/lib/crt/stdlib/qsort.c @@ -3,8 +3,9 @@ #undef __USE_W32API #endif -#include -#include +#include +#include +#include /*- * Copyright (c) 1980, 1983 The Regents of the University of California. @@ -174,7 +175,7 @@ qst(PTHREADDATA pThreadData, char *base, char *max) * @implemented */ void -qsort(const void *base0, size_t n, size_t size, _pfunccmp_t compar) +qsort(void *base0, size_t n, size_t size, int (*compar)(const void*, const void*)) { PTHREADDATA pThreadData; char *base = (char *)base0; diff --git a/reactos/lib/crt/stdlib/rand.c b/reactos/lib/crt/stdlib/rand.c index fd4e9ead5ed..79a04b53448 100644 --- a/reactos/lib/crt/stdlib/rand.c +++ b/reactos/lib/crt/stdlib/rand.c @@ -3,8 +3,8 @@ #undef __USE_W32API #endif -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/rot.c b/reactos/lib/crt/stdlib/rot.c index c5f67aa200a..22ba5d0efc5 100644 --- a/reactos/lib/crt/stdlib/rot.c +++ b/reactos/lib/crt/stdlib/rot.c @@ -8,8 +8,7 @@ * 03/04/99: Created */ -#include -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/senv.c b/reactos/lib/crt/stdlib/senv.c index be6e7e7e003..d63291c81dd 100644 --- a/reactos/lib/crt/stdlib/senv.c +++ b/reactos/lib/crt/stdlib/senv.c @@ -1,36 +1,37 @@ #include "precomp.h" -#include -#include +#include +#include +#include #define NDEBUG -#include +#include /* * @implemented */ -void _searchenv(const char* file,const char* var,char* path) +void _tsearchenv(const _TCHAR* file,const _TCHAR* var,_TCHAR* path) { - char* env = getenv(var); - char* x; - char* y; - char* FilePart; + _TCHAR* env = _tgetenv(var); + _TCHAR* x; + _TCHAR* y; + _TCHAR* FilePart; - DPRINT("_searchenv()\n"); + DPRINT(#_tsearchenv"()\n"); - x = strchr(env,'='); + x = _tcschr(env,'='); if ( x != NULL ) { *x = 0; x++; } - y = strchr(env,';'); + y = _tcschr(env,';'); while ( y != NULL ) { *y = 0; - if ( SearchPathA(x,file,NULL,MAX_PATH,path,&FilePart) > 0 ) { + if ( SearchPath(x,file,NULL,MAX_PATH,path,&FilePart) > 0 ) { return; } x = y+1; - y = strchr(env,';'); + y = _tcschr(env,';'); } return; } diff --git a/reactos/lib/crt/stdlib/splitp.c b/reactos/lib/crt/stdlib/splitp.c index b523c9514ab..066f9e5aabb 100644 --- a/reactos/lib/crt/stdlib/splitp.c +++ b/reactos/lib/crt/stdlib/splitp.c @@ -1,22 +1,23 @@ -#include -#include +#include +#include +#include /* * @implemented */ -void _splitpath(const char* path, char* drive, char* dir, char* fname, char* ext) +void _tsplitpath(const _TCHAR* path, _TCHAR* drive, _TCHAR* dir, _TCHAR* fname, _TCHAR* ext) { - char* tmp_drive; - char* tmp_dir; - char* tmp_ext; + _TCHAR* tmp_drive; + _TCHAR* tmp_dir; + _TCHAR* tmp_ext; - tmp_drive = (char*)strchr(path,':'); + tmp_drive = (_TCHAR*)_tcschr(path,':'); if (drive) { if (tmp_drive) { - strncpy(drive,tmp_drive-1,2); + _tcsncpy(drive,tmp_drive-1,2); *(drive+2) = 0; } else @@ -26,15 +27,15 @@ void _splitpath(const char* path, char* drive, char* dir, char* fname, char* ext } if (!tmp_drive) { - tmp_drive = (char*)path - 1; + tmp_drive = (_TCHAR*)path - 1; } - tmp_dir = (char*)strrchr(path,'\\'); + tmp_dir = (_TCHAR*)_tcsrchr(path,'\\'); if (dir) { if (tmp_dir) { - strncpy(dir,tmp_drive+1,tmp_dir-tmp_drive); + _tcsncpy(dir,tmp_drive+1,tmp_dir-tmp_drive); *(dir+(tmp_dir-tmp_drive)) = 0; } else @@ -43,26 +44,26 @@ void _splitpath(const char* path, char* drive, char* dir, char* fname, char* ext } } - tmp_ext = (char*)strrchr(path,'.'); + tmp_ext = (_TCHAR*)_tcsrchr(path,'.'); if (!tmp_ext) { - tmp_ext = (char*)path+strlen(path); + tmp_ext = (_TCHAR*)path+_tcslen(path); } if (ext) { - strcpy(ext,tmp_ext); + _tcscpy(ext,tmp_ext); } if (fname) { if (tmp_dir) { - strncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1); + _tcsncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1); *(fname+(tmp_ext-tmp_dir-1)) = 0; } else { - strncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1); + _tcsncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1); *(fname+(tmp_ext-path))=0; } } diff --git a/reactos/lib/crt/stdlib/strtod.c b/reactos/lib/crt/stdlib/strtod.c index 29d936ebdd0..9b9ec3ec279 100644 --- a/reactos/lib/crt/stdlib/strtod.c +++ b/reactos/lib/crt/stdlib/strtod.c @@ -1,7 +1,7 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* diff --git a/reactos/lib/crt/stdlib/strtol.c b/reactos/lib/crt/stdlib/strtol.c index 40262d5e819..f43937e4c29 100644 --- a/reactos/lib/crt/stdlib/strtol.c +++ b/reactos/lib/crt/stdlib/strtol.c @@ -1,9 +1,9 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include -#include -#include -#include -#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/strtold.c b/reactos/lib/crt/stdlib/strtold.c index 5588206f937..0d38ac4ce64 100644 --- a/reactos/lib/crt/stdlib/strtold.c +++ b/reactos/lib/crt/stdlib/strtold.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include #include //#include diff --git a/reactos/lib/crt/stdlib/strtoll.c b/reactos/lib/crt/stdlib/strtoll.c deleted file mode 100644 index 6115580be3a..00000000000 --- a/reactos/lib/crt/stdlib/strtoll.c +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include -//#include - -/* constants used in Solaris */ -#define LLONG_MIN -9223372036854775807L-1L -#define LLONG_MAX 9223372036854775807L -#define ULLONG_MAX 18446744073709551615UL - -long -strtoll(const char *nptr, char **endptr, int base) -{ - const char *s = nptr; - unsigned long acc; - int c; - unsigned long cutoff; - int neg = 0, any, cutlim; - - /* - * See strtol for comments as to the logic used. - */ - do { - c = *s++; - } while (isspace(c)); - if (c == '-') - { - neg = 1; - c = *s++; - } - else if (c == '+') - c = *s++; - if ((base == 0 || base == 16) && - c == '0' && (*s == 'x' || *s == 'X')) - { - c = s[1]; - s += 2; - base = 16; - } - if (base == 0) - base = c == '0' ? 8 : 10; - -/* to prevent overflow, we take max-1 and add 1 after division */ - cutoff = neg ? -(LLONG_MIN+1) : LLONG_MAX-1; - cutlim = cutoff % base; - cutoff /= base; - if (++cutlim == base) - { - cutlim = 0; - cutoff++; - } - for (acc = 0, any = 0;; c = *s++) - { - if (isdigit(c)) - c -= '0'; - else if (isalpha(c)) - c -= isupper(c) ? 'A' - 10 : 'a' - 10; - else - break; - if (c >= base) - break; - if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) - any = -1; - else - { - any = 1; - acc *= base; - acc += c; - } - } - if (any < 0) - { - acc = neg ? LLONG_MIN : LLONG_MAX; - __set_errno ( ERANGE ); - } - else if (neg) - acc *= -1; - if (endptr != 0) - *endptr = any ? (char *)s - 1 : (char *)nptr; - return acc; -} diff --git a/reactos/lib/crt/stdlib/strtoul.c b/reactos/lib/crt/stdlib/strtoul.c index 59fbe38b3f3..11baa3a85d6 100644 --- a/reactos/lib/crt/stdlib/strtoul.c +++ b/reactos/lib/crt/stdlib/strtoul.c @@ -1,9 +1,9 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include -#include -#include -#include -#include +#include +#include +#include +#include /* * Convert a string to an unsigned long integer. diff --git a/reactos/lib/crt/stdlib/strtoull.c b/reactos/lib/crt/stdlib/strtoull.c index 031b9103a57..c61dd7f2aba 100644 --- a/reactos/lib/crt/stdlib/strtoull.c +++ b/reactos/lib/crt/stdlib/strtoull.c @@ -1,9 +1,9 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include -#include -#include -#include +#include +#include +#include //#include /* diff --git a/reactos/lib/crt/stdlib/swab.c b/reactos/lib/crt/stdlib/swab.c index c3c1c09017e..335859d9080 100644 --- a/reactos/lib/crt/stdlib/swab.c +++ b/reactos/lib/crt/stdlib/swab.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/wcstod.c b/reactos/lib/crt/stdlib/wcstod.c index 14988abb220..89029c1a5c1 100644 --- a/reactos/lib/crt/stdlib/wcstod.c +++ b/reactos/lib/crt/stdlib/wcstod.c @@ -1,6 +1,6 @@ /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* diff --git a/reactos/lib/crt/stdlib/wcstol.c b/reactos/lib/crt/stdlib/wcstol.c index 3f601e19131..103adbbf047 100644 --- a/reactos/lib/crt/stdlib/wcstol.c +++ b/reactos/lib/crt/stdlib/wcstol.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/wcstom.c b/reactos/lib/crt/stdlib/wcstom.c index b9dd5d2cb02..0c74f97c15e 100644 --- a/reactos/lib/crt/stdlib/wcstom.c +++ b/reactos/lib/crt/stdlib/wcstom.c @@ -1,4 +1,4 @@ -#include +#include /* * @unimplemented diff --git a/reactos/lib/crt/stdlib/wcstomb.c b/reactos/lib/crt/stdlib/wcstomb.c index c0b5d997b18..0bed54a7edd 100644 --- a/reactos/lib/crt/stdlib/wcstomb.c +++ b/reactos/lib/crt/stdlib/wcstomb.c @@ -16,12 +16,10 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include - -#include -#include -#include +#include +#include +#include +#include #ifndef EILSEQ #define EILSEQ EINVAL diff --git a/reactos/lib/crt/stdlib/wcstombs.c b/reactos/lib/crt/stdlib/wcstombs.c index 06054eeada9..bfb3112db2b 100644 --- a/reactos/lib/crt/stdlib/wcstombs.c +++ b/reactos/lib/crt/stdlib/wcstombs.c @@ -16,11 +16,10 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include - -#include -#include +#include +#include +#include +#include #ifndef EILSEQ #define EILSEQ EINVAL diff --git a/reactos/lib/crt/stdlib/wcstoul.c b/reactos/lib/crt/stdlib/wcstoul.c index 54a309615d2..de1e0240a40 100644 --- a/reactos/lib/crt/stdlib/wcstoul.c +++ b/reactos/lib/crt/stdlib/wcstoul.c @@ -1,9 +1,9 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include -#include -#include -#include -#include +#include +#include +#include +#include /* * Convert a unicode string to an unsigned long integer. diff --git a/reactos/lib/crt/stdlib/wctomb.c b/reactos/lib/crt/stdlib/wctomb.c index a38cffad4c0..6d375be963e 100644 --- a/reactos/lib/crt/stdlib/wctomb.c +++ b/reactos/lib/crt/stdlib/wctomb.c @@ -17,11 +17,11 @@ Boston, MA 02111-1307, USA. */ #include "precomp.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include int diff --git a/reactos/lib/crt/stdlib/wfulpath.c b/reactos/lib/crt/stdlib/wfulpath.c index 47d90bb12b7..43d6d788172 100644 --- a/reactos/lib/crt/stdlib/wfulpath.c +++ b/reactos/lib/crt/stdlib/wfulpath.c @@ -1,26 +1,5 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * FILE: lib/msvcrt/stdlib/fullpath.c - * PURPOSE: Gets the fullpathname - * PROGRAMER: Boudewijn Dekker - * UPDATE HISTORY: - * 28/12/98: Created - */ -#include "precomp.h" -#include +#define _UNICODE +#define UNICODE - -/* - * @implemented - */ -wchar_t* _wfullpath(wchar_t* absPath, const wchar_t* relPath, size_t maxLength) -{ - wchar_t* lpFilePart; - - if (GetFullPathNameW(relPath,maxLength,absPath,&lpFilePart) == 0) - return NULL; - - return absPath; -} +#include "fullpath.c" diff --git a/reactos/lib/crt/stdlib/witoa.c b/reactos/lib/crt/stdlib/witoa.c index 4e6d85aa488..cc14dcfb798 100644 --- a/reactos/lib/crt/stdlib/witoa.c +++ b/reactos/lib/crt/stdlib/witoa.c @@ -10,9 +10,9 @@ */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/witow.c b/reactos/lib/crt/stdlib/witow.c index 245802a9e5a..a0b972ae9e3 100644 --- a/reactos/lib/crt/stdlib/witow.c +++ b/reactos/lib/crt/stdlib/witow.c @@ -12,9 +12,9 @@ */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/wmakpath.c b/reactos/lib/crt/stdlib/wmakpath.c index 5026ca3416d..02f1fbb1396 100644 --- a/reactos/lib/crt/stdlib/wmakpath.c +++ b/reactos/lib/crt/stdlib/wmakpath.c @@ -1,7 +1,7 @@ /* $Id$ */ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/wputenv.c b/reactos/lib/crt/stdlib/wputenv.c index 8b34b510a96..c06d966a257 100644 --- a/reactos/lib/crt/stdlib/wputenv.c +++ b/reactos/lib/crt/stdlib/wputenv.c @@ -1,9 +1,9 @@ #include "precomp.h" -#include -#include +#include +#include #define NDEBUG -#include +#include /* misc/environ.c */ int SetEnv(const wchar_t *option); diff --git a/reactos/lib/crt/stdlib/wsenv.c b/reactos/lib/crt/stdlib/wsenv.c index 0ebc7f1cde2..4e23231f854 100644 --- a/reactos/lib/crt/stdlib/wsenv.c +++ b/reactos/lib/crt/stdlib/wsenv.c @@ -1,35 +1,5 @@ -#include "precomp.h" -#include -#include -#define NDEBUG -#include +#define _UNICODE +#define UNICODE - -/* - * @implemented - */ -void _wsearchenv(const wchar_t* file,const wchar_t* var,wchar_t* path) -{ - wchar_t* env = _wgetenv(var); - wchar_t* x; - wchar_t* y; - wchar_t* FilePart; - - DPRINT("_wsearchenv()\n"); - x = wcschr(env,L'='); - if ( x != NULL ) { - *x = 0; - x++; - } - y = wcschr(env,L';'); - while ( y != NULL ) { - *y = 0; - if ( SearchPathW(x,file,NULL,MAX_PATH,path,&FilePart) > 0 ) { - return; - } - x = y+1; - y = wcschr(env,L';'); - } - return; -} +#include "senv.c" diff --git a/reactos/lib/crt/stdlib/wsplitp.c b/reactos/lib/crt/stdlib/wsplitp.c index 8a3520884b7..0b5a3cade62 100644 --- a/reactos/lib/crt/stdlib/wsplitp.c +++ b/reactos/lib/crt/stdlib/wsplitp.c @@ -1,69 +1,5 @@ -#include -#include +#define _UNICODE +#define UNICODE -/* - * @implemented - */ -void _wsplitpath(const wchar_t* path, wchar_t* drive, wchar_t* dir, wchar_t* fname, wchar_t* ext) -{ - wchar_t* tmp_drive; - wchar_t* tmp_dir; - wchar_t* tmp_ext; - - tmp_drive = (wchar_t*)wcschr(path,L':'); - if (drive) - { - if (tmp_drive) - { - wcsncpy(drive,tmp_drive-1,2); - *(drive+2) = 0; - } - else - { - *drive = 0; - } - } - if (!tmp_drive) - { - tmp_drive = (wchar_t*)path - 1; - } - - tmp_dir = (wchar_t*)wcsrchr(path,L'\\'); - if (dir) - { - if (tmp_dir) - { - wcsncpy(dir,tmp_drive+1,tmp_dir-tmp_drive); - *(dir+(tmp_dir-tmp_drive)) = 0; - } - else - { - *dir =0; - } - } - - tmp_ext = (wchar_t*)wcsrchr(path,L'.'); - if (! tmp_ext) - { - tmp_ext = (wchar_t*)path+wcslen(path); - } - if (ext) - { - wcscpy(ext,tmp_ext); - } - - if (fname) - { - if (tmp_dir) - { - wcsncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1); - *(fname+(tmp_ext-tmp_dir-1)) = 0; - } - else - { - wcsncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1); - *(fname+(tmp_ext-path))=0; - } - } -} +#include "splitp.c" diff --git a/reactos/lib/crt/stdlib/wtoi.c b/reactos/lib/crt/stdlib/wtoi.c index f8282056ef6..1a171024087 100644 --- a/reactos/lib/crt/stdlib/wtoi.c +++ b/reactos/lib/crt/stdlib/wtoi.c @@ -1,17 +1,6 @@ -#include -/* - * @implemented - */ -int _wtoi( const wchar_t *str ) -{ - return (int)wcstol(str, 0, 10); -} +#define _UNICODE +#define UNICODE + +#include "atoi.c" -/* - * @implemented - */ -long _wtol( const wchar_t *str ) -{ - return (int)wcstol(str, 0, 10); -} diff --git a/reactos/lib/crt/stdlib/wtoi64.c b/reactos/lib/crt/stdlib/wtoi64.c index a59513dadd2..6671f2be59f 100644 --- a/reactos/lib/crt/stdlib/wtoi64.c +++ b/reactos/lib/crt/stdlib/wtoi64.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/stdlib/wtol.c b/reactos/lib/crt/stdlib/wtol.c new file mode 100644 index 00000000000..e47cbbde33f --- /dev/null +++ b/reactos/lib/crt/stdlib/wtol.c @@ -0,0 +1,6 @@ + +#define _UNICODE +#define UNICODE + +#include "atol.c" + diff --git a/reactos/lib/crt/string/lasttok.c b/reactos/lib/crt/string/lasttok.c index 2713e4c954b..188b10d7085 100644 --- a/reactos/lib/crt/string/lasttok.c +++ b/reactos/lib/crt/string/lasttok.c @@ -2,8 +2,8 @@ #undef __USE_W32API #endif -#include -#include +#include +#include /* * This is an MSVCRT internal function to return the lasttoken diff --git a/reactos/lib/crt/string/memicmp.c b/reactos/lib/crt/string/memicmp.c index 3cbff006c09..039ccc5ae1c 100644 --- a/reactos/lib/crt/string/memicmp.c +++ b/reactos/lib/crt/string/memicmp.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/string/strcoll.c b/reactos/lib/crt/string/strcoll.c index 1571b4ae3c0..8ceb08f5df4 100644 --- a/reactos/lib/crt/string/strcoll.c +++ b/reactos/lib/crt/string/strcoll.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include /* Compare S1 and S2, returning less than, equal to or greater than zero if the collated form of S1 is lexicographically diff --git a/reactos/lib/crt/string/strdup.c b/reactos/lib/crt/string/strdup.c index c728585819b..5d4ebe6fb9b 100644 --- a/reactos/lib/crt/string/strdup.c +++ b/reactos/lib/crt/string/strdup.c @@ -1,6 +1,6 @@ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/string/strerror.c b/reactos/lib/crt/string/strerror.c index fa8d9d0083b..df46dab88cd 100644 --- a/reactos/lib/crt/string/strerror.c +++ b/reactos/lib/crt/string/strerror.c @@ -1,7 +1,7 @@ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include +#include +#include +#include char __syserr00[] = "No Error"; @@ -51,7 +51,7 @@ char __syserr42[] = "Illegal byte sequence (EILSEQ)"; -const char *_sys_errlist[] = { +char *_sys_errlist[] = { __syserr00, __syserr01, __syserr02, __syserr03, __syserr04, __syserr05, __syserr06, __syserr07, __syserr08, __syserr09, __syserr10, __syserr11, __syserr12, __syserr13, __syserr14, @@ -63,9 +63,9 @@ __syserr35, __syserr36, __syserr37, __syserr38, __syserr39, __syserr40, __syserr41, __syserr42 }; -int __sys_nerr = sizeof(_sys_errlist) / sizeof(_sys_errlist[0]); +//int __sys_nerr = sizeof(_sys_errlist) / sizeof(_sys_errlist[0]); -int* _sys_nerr = &__sys_nerr; +int/***/ _sys_nerr = sizeof(_sys_errlist) / sizeof(_sys_errlist[0]);//&__sys_nerr; /* * @implemented @@ -76,7 +76,7 @@ char *strerror(int errnum) char *cp; int v=1000000, lz=0; - if (errnum >= 0 && errnum < __sys_nerr) + if (errnum >= 0 && errnum < _sys_nerr) return((char *)_sys_errlist[errnum]); strcpy(ebuf, "Unknown error: "); diff --git a/reactos/lib/crt/string/stricmp.c b/reactos/lib/crt/string/stricmp.c index cfecfb81931..ecd1afae22b 100644 --- a/reactos/lib/crt/string/stricmp.c +++ b/reactos/lib/crt/string/stricmp.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/string/strlwr.c b/reactos/lib/crt/string/strlwr.c index 6ddba9c7a2a..0f4a66b20c5 100644 --- a/reactos/lib/crt/string/strlwr.c +++ b/reactos/lib/crt/string/strlwr.c @@ -8,8 +8,8 @@ * Copyright 1997 Uwe Bonnes */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/string/strncoll.c b/reactos/lib/crt/string/strncoll.c index 304c52b1e5e..3f4d1088ea7 100644 --- a/reactos/lib/crt/string/strncoll.c +++ b/reactos/lib/crt/string/strncoll.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include /* Compare S1 and S2, returning less than, equal to or greater than zero if the collated form of S1 is lexicographically diff --git a/reactos/lib/crt/string/strnicmp.c b/reactos/lib/crt/string/strnicmp.c index d6ff2c0d2d1..a0d732e883b 100644 --- a/reactos/lib/crt/string/strnicmp.c +++ b/reactos/lib/crt/string/strnicmp.c @@ -1,6 +1,6 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/string/strpbrk.c b/reactos/lib/crt/string/strpbrk.c index 72079d0aa8a..c3ce6006734 100644 --- a/reactos/lib/crt/string/strpbrk.c +++ b/reactos/lib/crt/string/strpbrk.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* diff --git a/reactos/lib/crt/string/strrev.c b/reactos/lib/crt/string/strrev.c index 8827c3b5bb5..8f11abee723 100644 --- a/reactos/lib/crt/string/strrev.c +++ b/reactos/lib/crt/string/strrev.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/string/strset.c b/reactos/lib/crt/string/strset.c index 6de8d49b3bb..daf47aa296e 100644 --- a/reactos/lib/crt/string/strset.c +++ b/reactos/lib/crt/string/strset.c @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include + /* * @implemented diff --git a/reactos/lib/crt/string/strstr.c b/reactos/lib/crt/string/strstr.c index 430358fd196..bdc7eb7b8f8 100644 --- a/reactos/lib/crt/string/strstr.c +++ b/reactos/lib/crt/string/strstr.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* diff --git a/reactos/lib/crt/string/strtok.c b/reactos/lib/crt/string/strtok.c index 2423f4ae840..4bd36f39fdc 100644 --- a/reactos/lib/crt/string/strtok.c +++ b/reactos/lib/crt/string/strtok.c @@ -3,8 +3,8 @@ #undef __USE_W32API #endif -#include -#include +#include +#include char** _lasttoken(); /* lasttok.c */ diff --git a/reactos/lib/crt/string/strupr.c b/reactos/lib/crt/string/strupr.c index 413f585b21a..a878fa242b7 100644 --- a/reactos/lib/crt/string/strupr.c +++ b/reactos/lib/crt/string/strupr.c @@ -9,8 +9,8 @@ */ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/string/strxfrm.c b/reactos/lib/crt/string/strxfrm.c index dca7a645414..ae6fc98274a 100644 --- a/reactos/lib/crt/string/strxfrm.c +++ b/reactos/lib/crt/string/strxfrm.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include #if 1 /* diff --git a/reactos/lib/crt/sys_stat/fstat.c b/reactos/lib/crt/sys_stat/fstat.c index cc2addd351f..d84ca492d22 100644 --- a/reactos/lib/crt/sys_stat/fstat.c +++ b/reactos/lib/crt/sys_stat/fstat.c @@ -10,18 +10,18 @@ */ #include "precomp.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include /* * @implemented */ -int _fstat(int fd, struct stat* statbuf) +int _fstat(int fd, struct _stat* statbuf) { BY_HANDLE_FILE_INFORMATION FileInformation; DWORD dwFileType; @@ -32,7 +32,7 @@ int _fstat(int fd, struct stat* statbuf) return -1; } - if ((void*)-1 == (handle = _get_osfhandle(fd))) + if ((void*)-1 == (handle = (void*)_get_osfhandle(fd))) { __set_errno(EBADF); return -1; diff --git a/reactos/lib/crt/sys_stat/fstati64.c b/reactos/lib/crt/sys_stat/fstati64.c index ba7a053143f..0a05e278480 100644 --- a/reactos/lib/crt/sys_stat/fstati64.c +++ b/reactos/lib/crt/sys_stat/fstati64.c @@ -10,18 +10,18 @@ */ #include "precomp.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include /* * @implemented */ -__int64 _fstati64(int fd, struct _stati64* statbuf) +int _fstati64(int fd, struct _stati64* statbuf) { BY_HANDLE_FILE_INFORMATION FileInformation; DWORD dwFileType; @@ -33,7 +33,7 @@ __int64 _fstati64(int fd, struct _stati64* statbuf) return -1; } - if ((void*)-1 == (handle = _get_osfhandle(fd))) + if ((void*)-1 == (handle = (void*)_get_osfhandle(fd))) { __set_errno(EBADF); return -1; diff --git a/reactos/lib/crt/sys_stat/futime.c b/reactos/lib/crt/sys_stat/futime.c index ed3c37a9a66..e6d8306b1b7 100644 --- a/reactos/lib/crt/sys_stat/futime.c +++ b/reactos/lib/crt/sys_stat/futime.c @@ -1,10 +1,10 @@ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include /* @@ -22,7 +22,7 @@ int _futime (int nHandle, struct _utimbuf *pTimes) } if (pTimes == NULL) { - pTimes = alloca(sizeof(struct _utimbuf)); + pTimes = _alloca(sizeof(struct _utimbuf)); time(&pTimes->actime); time(&pTimes->modtime); } @@ -34,7 +34,7 @@ int _futime (int nHandle, struct _utimbuf *pTimes) UnixTimeToFileTime(pTimes->actime,&LastAccessTime,0); UnixTimeToFileTime(pTimes->modtime,&LastWriteTime,0); - if (!SetFileTime(_get_osfhandle(nHandle),NULL, &LastAccessTime, &LastWriteTime)) { + if (!SetFileTime((HANDLE)_get_osfhandle(nHandle),NULL, &LastAccessTime, &LastWriteTime)) { __set_errno(EBADF); return -1; } diff --git a/reactos/lib/crt/sys_stat/stat.c b/reactos/lib/crt/sys_stat/stat.c index a1f5af85835..87d4fd88781 100644 --- a/reactos/lib/crt/sys_stat/stat.c +++ b/reactos/lib/crt/sys_stat/stat.c @@ -1,17 +1,17 @@ #include "precomp.h" -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include /* * @implemented */ -int _stat(const char* path, struct stat* buffer) +int _stat(const char* path, struct _stat* buffer) { WIN32_FILE_ATTRIBUTE_DATA fileAttributeData; char* ext; @@ -64,7 +64,7 @@ int _stat(const char* path, struct stat* buffer) /* * @implemented */ -__int64 _stati64 (const char *path, struct _stati64 *buffer) +int _stati64 (const char *path, struct _stati64 *buffer) { WIN32_FILE_ATTRIBUTE_DATA fileAttributeData; char* ext; diff --git a/reactos/lib/crt/sys_stat/systime.c b/reactos/lib/crt/sys_stat/systime.c index 59ecdc9d9ac..680270d31e3 100644 --- a/reactos/lib/crt/sys_stat/systime.c +++ b/reactos/lib/crt/sys_stat/systime.c @@ -1,5 +1,5 @@ #include "precomp.h" -#include +#include int month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31}; diff --git a/reactos/lib/crt/sys_stat/wstat.c b/reactos/lib/crt/sys_stat/wstat.c index 5cbdc4360df..cb9a1b3b3aa 100644 --- a/reactos/lib/crt/sys_stat/wstat.c +++ b/reactos/lib/crt/sys_stat/wstat.c @@ -1,17 +1,17 @@ #include "precomp.h" -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include /* * @implemented */ -int _wstat (const wchar_t *path, struct stat *buffer) +int _wstat (const wchar_t *path, struct _stat *buffer) { WIN32_FILE_ATTRIBUTE_DATA fileAttributeData; wchar_t *ext; @@ -64,7 +64,7 @@ int _wstat (const wchar_t *path, struct stat *buffer) /* * @implemented */ -__int64 _wstati64 (const wchar_t *path, struct _stati64 *buffer) +int _wstati64 (const wchar_t *path, struct _stati64 *buffer) { WIN32_FILE_ATTRIBUTE_DATA fileAttributeData; wchar_t *ext; diff --git a/reactos/lib/crt/time/clock.c b/reactos/lib/crt/time/clock.c index cd9e77a41c8..e55b8e33d21 100644 --- a/reactos/lib/crt/time/clock.c +++ b/reactos/lib/crt/time/clock.c @@ -9,8 +9,8 @@ */ #include "precomp.h" -#include -#include +#include +#include VOID STDCALL GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime ); diff --git a/reactos/lib/crt/time/ctime.c b/reactos/lib/crt/time/ctime.c index fcadb68f1a3..ba7d3b47884 100644 --- a/reactos/lib/crt/time/ctime.c +++ b/reactos/lib/crt/time/ctime.c @@ -36,16 +36,16 @@ */ #include "precomp.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include "tzfile.h" -#include +#include #include "posixrul.h" @@ -294,7 +294,7 @@ static int tzload(const char* name, struct state* CPP_CONST sp) name = fullname; } - if ((fid = open(name, OPEN_MODE)) == -1) + if ((fid = _open(name, OPEN_MODE)) == -1) { const char *base = strrchr(name, '/'); if (base) @@ -310,8 +310,8 @@ static int tzload(const char* name, struct state* CPP_CONST sp) } else { - i = read(fid, buf, sizeof buf); - if (close(fid) != 0 || i < sizeof *tzhp) + i = _read(fid, buf, sizeof buf); + if (_close(fid) != 0 || i < sizeof *tzhp) return -1; } @@ -1022,7 +1022,10 @@ localsub(const time_t * CPP_CONST timep, const long offset, struct tm * CPP_CONS timesub(&t, ttisp->tt_gmtoff, sp, tmp); tmp->tm_isdst = ttisp->tt_isdst; _tzname[tmp->tm_isdst] = (char *)&sp->chars[ttisp->tt_abbrind]; +#if 0 +/* tm_zone doesnt exist in windows msvcrt -Gunnar */ tmp->tm_zone = (char *)&sp->chars[ttisp->tt_abbrind]; +#endif } /* @@ -1059,6 +1062,8 @@ gmtsub(const time_t * CPP_CONST timep, const long offset, struct tm * CPP_CONST ** "GMT+xxxx" or "GMT-xxxx" if offset is non-zero, ** but this is no time for a treasure hunt. */ +#if 0 +/* tm_zone doesnt exist in windows msvcrt -Gunnar */ if (offset != 0) tmp->tm_zone = TZ_NAME; else @@ -1073,6 +1078,7 @@ gmtsub(const time_t * CPP_CONST timep, const long offset, struct tm * CPP_CONST tmp->tm_zone = gmtptr->chars; #endif /* State Farm */ } +#endif /* if 0 */ } /* @@ -1179,7 +1185,10 @@ timesub(const time_t * CPP_CONST timep, const long offset, const struct state * days = days - (long) ip[tmp->tm_mon]; tmp->tm_mday = (int) (days + 1); tmp->tm_isdst = 0; +#if 0 +/* tm_gmtoff doesnt exist in windows msvcrt -Gunnar */ tmp->tm_gmtoff = offset; +#endif } /* diff --git a/reactos/lib/crt/time/difftime.c b/reactos/lib/crt/time/difftime.c index 9e9d590a2cb..6b4de57c930 100644 --- a/reactos/lib/crt/time/difftime.c +++ b/reactos/lib/crt/time/difftime.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/time/ftime.c b/reactos/lib/crt/time/ftime.c index 8db083b3cff..867553f0c53 100644 --- a/reactos/lib/crt/time/ftime.c +++ b/reactos/lib/crt/time/ftime.c @@ -9,8 +9,8 @@ */ #include "precomp.h" -#include -#include +#include +#include /* ftime (3) -- Obsolete BSD library function included in the SUS for copat. * Also present in msvcrt.dll as _ftime @@ -18,7 +18,7 @@ /* * @implemented */ -void _ftime( struct timeb *tm ) +void _ftime( struct _timeb *tm ) { int ret = 0; SYSTEMTIME syst; @@ -28,7 +28,7 @@ void _ftime( struct timeb *tm ) if( ret == 0 ) { time( &tm->time ); tm->millitm = syst.wMilliseconds; - tm->_timezone = 0; /* According to the open group, timezone and dstflag */ +// tm->_timezone = 0; /* According to the open group, timezone and dstflag */ tm->dstflag = 0; /* exist for compatibility, but are unspecified. */ } } diff --git a/reactos/lib/crt/time/strdate.c b/reactos/lib/crt/time/strdate.c index 204e07d28d4..e421f52dfbf 100644 --- a/reactos/lib/crt/time/strdate.c +++ b/reactos/lib/crt/time/strdate.c @@ -7,16 +7,16 @@ * UPDATE HISTORY: * 28/12/98: Created */ -#include -#include -#include -#include +#include +#include +#include +#include /* * @implemented */ -char* _strdate(const char* datestr) +char* _strdate(char* datestr) { time_t t; struct tm* d; diff --git a/reactos/lib/crt/time/strftime.c b/reactos/lib/crt/time/strftime.c index bb7553e399c..e7ca78fb673 100644 --- a/reactos/lib/crt/time/strftime.c +++ b/reactos/lib/crt/time/strftime.c @@ -1,8 +1,8 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include +#include +#include +#include +#include #define TM_YEAR_BASE 1900 @@ -188,7 +188,10 @@ static size_t _fmt(const char* format, const struct tm* t) return 0; continue; case 'Z': +#if 0 + /* FIXME: tm_zone doesnt exist in windows */ if (!t->tm_zone || !_add(t->tm_zone)) +#endif return 0; continue; case '%': diff --git a/reactos/lib/crt/time/strtime.c b/reactos/lib/crt/time/strtime.c index a1aeeb13189..7473aea1b3e 100644 --- a/reactos/lib/crt/time/strtime.c +++ b/reactos/lib/crt/time/strtime.c @@ -7,10 +7,10 @@ * UPDATE HISTORY: * 28/12/98: Created */ -#include -#include -#include -#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/time/time.c b/reactos/lib/crt/time/time.c index bc459d54f7c..8dfc16c56cd 100644 --- a/reactos/lib/crt/time/time.c +++ b/reactos/lib/crt/time/time.c @@ -16,8 +16,8 @@ */ #include "precomp.h" -#include -#include +#include +#include VOID STDCALL GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime); diff --git a/reactos/lib/crt/time/tz_vars.c b/reactos/lib/crt/time/tz_vars.c index aad68dcb156..bb155d0fabc 100644 --- a/reactos/lib/crt/time/tz_vars.c +++ b/reactos/lib/crt/time/tz_vars.c @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include int _daylight; @@ -18,4 +18,18 @@ void _set_timezone_export(int value) } +/********************************************************************* + * __p_daylight (MSVCRT.@) + */ +void* __p__daylight(void) +{ + return &_daylight; +} +/********************************************************************* + * __p__timezone (MSVCRT.@) + */ +int* __p__timezone(void) +{ + return &_timezone; +} diff --git a/reactos/lib/crt/time/wctime.c b/reactos/lib/crt/time/wctime.c index 033595cfe1d..16cd12a2828 100644 --- a/reactos/lib/crt/time/wctime.c +++ b/reactos/lib/crt/time/wctime.c @@ -27,8 +27,9 @@ */ #include "precomp.h" -#include -#include +#include +#include +#include #include "tzfile.h" diff --git a/reactos/lib/crt/time/wstrdate.c b/reactos/lib/crt/time/wstrdate.c index a6a9d955985..faca97696a5 100644 --- a/reactos/lib/crt/time/wstrdate.c +++ b/reactos/lib/crt/time/wstrdate.c @@ -7,16 +7,16 @@ * UPDATE HISTORY: * 28/12/98: Created */ -#include -#include -#include -#include +#include +#include +#include +#include /* * @implemented */ -wchar_t* _wstrdate(const wchar_t* datestr) +wchar_t* _wstrdate(wchar_t* datestr) { time_t t; struct tm* d; diff --git a/reactos/lib/crt/time/wstrtime.c b/reactos/lib/crt/time/wstrtime.c index 8f5b2ace481..3fa0035f713 100644 --- a/reactos/lib/crt/time/wstrtime.c +++ b/reactos/lib/crt/time/wstrtime.c @@ -7,10 +7,10 @@ * UPDATE HISTORY: * 28/12/98: Created */ -#include -#include -#include -#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/wine/cpp.c b/reactos/lib/crt/wine/cpp.c index 1065cdc7c61..2176b257737 100644 --- a/reactos/lib/crt/wine/cpp.c +++ b/reactos/lib/crt/wine/cpp.c @@ -32,12 +32,12 @@ #include "winnt.h" #include "excpt.h" #include "wine/debug.h" -#include "msvcrt/malloc.h" -#include "msvcrt/stdlib.h" +#include +#include -#include -#include -#include +#include +#include +#include WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); diff --git a/reactos/lib/crt/wine/cppexcept.c b/reactos/lib/crt/wine/cppexcept.c index 98c4bcf7660..dea17149e31 100644 --- a/reactos/lib/crt/wine/cppexcept.c +++ b/reactos/lib/crt/wine/cppexcept.c @@ -32,12 +32,12 @@ #include "winbase.h" #include "winreg.h" #include "wine/winternl.h" -#include +#include #include "wine/exception.h" #include "excpt.h" #include "wine/debug.h" -#include +#include WINE_DEFAULT_DEBUG_CHANNEL(seh); diff --git a/reactos/lib/crt/wine/heap.c b/reactos/lib/crt/wine/heap.c index 54f7a762ae7..a9ccba4a003 100644 --- a/reactos/lib/crt/wine/heap.c +++ b/reactos/lib/crt/wine/heap.c @@ -23,10 +23,10 @@ #include "precomp.h" -#include "msvcrt/errno.h" -#include "msvcrt/malloc.h" -#include "msvcrt/stdlib.h" -#include +#include +#include +#include +#include #include "wine/debug.h" diff --git a/reactos/lib/crt/wine/scanf.c b/reactos/lib/crt/wine/scanf.c new file mode 100644 index 00000000000..33983384b65 --- /dev/null +++ b/reactos/lib/crt/wine/scanf.c @@ -0,0 +1,222 @@ +/* + * general implementation of scanf used by scanf, sscanf, fscanf, + * _cscanf, wscanf, swscanf and fwscanf + * + * Copyright 1996,1998 Marcus Meissner + * Copyright 1996 Jukka Iivonen + * Copyright 1997,2000 Uwe Bonnes + * Copyright 2000 Jon Griffiths + * Copyright 2002 Daniel Gudbjartsson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +/* +#include + +#include "windef.h" +#include "winbase.h" +#include "winreg.h" +#include "winternl.h" +#include "msvcrt.h" +*/ + +//#include +#include +//#include +//#include +#include +#include +#include +#include +#include + +//#include + +#define NDEBUG +#include + + +/* +This is so ugly. I tried including anything/everything, but no matter +what i did i got complaints about RtlGetProcessHeap etc. being undefined. +-Gunnar (i hate headers) +*/ +#define RtlFreeHeap HeapFree +#define RtlAllocateHeap HeapAlloc +#define RtlGetProcessHeap GetProcessHeap +//#include "wine/debug.h" + +#define WARN DPRINT1 + +//WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); + +extern FILE _iob[]; + +/* helper function for *scanf. Returns the value of character c in the + * given base, or -1 if the given character is not a digit of the base. + */ +static int char2digit(char c, int base) { + if ((c>='0') && (c<='9') && (c<='0'+base-1)) return (c-'0'); + if (base<=10) return -1; + if ((c>='A') && (c<='Z') && (c<='A'+base-11)) return (c-'A'+10); + if ((c>='a') && (c<='z') && (c<='a'+base-11)) return (c-'a'+10); + return -1; +} + +/* helper function for *wscanf. Returns the value of character c in the + * given base, or -1 if the given character is not a digit of the base. + */ +static int wchar2digit(wchar_t c, int base) { + if ((c>=L'0') && (c<=L'9') && (c<=L'0'+base-1)) return (c-L'0'); + if (base<=10) return -1; + if ((c>=L'A') && (c<=L'Z') && (c<=L'A'+base-11)) return (c-L'A'+10); + if ((c>=L'a') && (c<=L'z') && (c<=L'a'+base-11)) return (c-L'a'+10); + return -1; +} + +/* vfscanf */ +#undef WIDE_SCANF +#undef CONSOLE +#undef STRING +#include "scanf.h" + +/* vfwscanf */ +#define WIDE_SCANF 1 +#undef CONSOLE +#undef STRING +#include "scanf.h" + +/* vsscanf */ +#undef WIDE_SCANF +#undef CONSOLE +#define STRING 1 +#include "scanf.h" + +/* vswscanf */ +#define WIDE_SCANF 1 +#undef CONSOLE +#define STRING 1 +#include "scanf.h" + +/* vcscanf */ +#undef WIDE_SCANF +#define CONSOLE 1 +#undef STRING +#include "scanf.h" + + +/********************************************************************* + * fscanf (MSVCRT.@) + */ +int fscanf(FILE *file, const char *format, ...) +{ + va_list valist; + int res; + + va_start(valist, format); + res = vfscanf(file, format, valist); + va_end(valist); + return res; +} + +/********************************************************************* + * scanf (MSVCRT.@) + */ +int scanf(const char *format, ...) +{ + va_list valist; + int res; + + va_start(valist, format); + res = vfscanf(stdin, format, valist); + va_end(valist); + return res; +} + +/********************************************************************* + * fwscanf (MSVCRT.@) + */ +int fwscanf(FILE *file, const wchar_t *format, ...) +{ + va_list valist; + int res; + + va_start(valist, format); + res = vfwscanf(file, format, valist); + va_end(valist); + return res; +} + + +/********************************************************************* + * wscanf (MSVCRT.@) + */ +int wscanf(const wchar_t *format, ...) +{ + va_list valist; + int res; + + va_start(valist, format); + res = vfwscanf(stdin, format, valist); + va_end(valist); + return res; +} + + +/********************************************************************* + * sscanf (MSVCRT.@) + */ +int sscanf(const char *str, const char *format, ...) +{ + va_list valist; + int res; + + va_start(valist, format); + res = vsscanf(str, format, valist); + va_end(valist); + return res; +} + + +/********************************************************************* + * swscanf (MSVCRT.@) + */ +int swscanf(const wchar_t *str, const wchar_t *format, ...) +{ + va_list valist; + int res; + + va_start(valist, format); + res = vswscanf(str, format, valist); + va_end(valist); + return res; +} + + +/********************************************************************* + * _cscanf (MSVCRT.@) + */ +int _cscanf(/*const*/ char *format, ...) +{ + va_list valist; + int res; + + va_start(valist, format); + res = vcscanf(format, valist); + va_end(valist); + return res; +} diff --git a/reactos/lib/crt/wine/scanf.h b/reactos/lib/crt/wine/scanf.h new file mode 100644 index 00000000000..5fe005b9a88 --- /dev/null +++ b/reactos/lib/crt/wine/scanf.h @@ -0,0 +1,537 @@ +/* + * general implementation of scanf used by scanf, sscanf, fscanf, + * _cscanf, wscanf, swscanf and fwscanf + * + * Copyright 1996,1998 Marcus Meissner + * Copyright 1996 Jukka Iivonen + * Copyright 1997,2000, 2003 Uwe Bonnes + * Copyright 2000 Jon Griffiths + * Copyright 2002 Daniel Gudbjartsson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifdef WIDE_SCANF +#define _CHAR_ wchar_t +#define _EOF_ WEOF +#define _EOF_RET WEOF +#define _ISSPACE_(c) iswspace(c) +#define _ISDIGIT_(c) iswdigit(c) +#define _WIDE2SUPPORTED_(c) c /* No conversion needed (wide to wide) */ +#define _CHAR2SUPPORTED_(c) c /* FIXME: convert char to wide char */ +#define _CHAR2DIGIT_(c, base) wchar2digit((c), (base)) +#define _BITMAPSIZE_ 256*256 +#else /* WIDE_SCANF */ +#define _CHAR_ char +#define _EOF_ EOF +#define _EOF_RET EOF +#define _ISSPACE_(c) isspace(c) +#define _ISDIGIT_(c) isdigit(c) +#define _WIDE2SUPPORTED_(c) c /* FIXME: convert wide char to char */ +#define _CHAR2SUPPORTED_(c) c /* No conversion needed (char to char) */ +#define _CHAR2DIGIT_(c, base) char2digit((c), (base)) +#define _BITMAPSIZE_ 256 +#endif /* WIDE_SCANF */ + +#ifdef CONSOLE +#define _GETC_(file) (consumed++, _getch()) +#define _UNGETC_(nch, file) do { _ungetch(nch); consumed--; } while(0) +#define _FUNCTION_ int vcscanf(const char *format, va_list ap) +#else +#ifdef STRING +#undef _EOF_ +#define _EOF_ 0 +#define _GETC_(file) (consumed++, *file++) +#define _UNGETC_(nch, file) do { file--; consumed--; } while(0) +#ifdef WIDE_SCANF +#define _FUNCTION_ int vswscanf(const wchar_t *file, const wchar_t *format, va_list ap) +#else /* WIDE_SCANF */ +#define _FUNCTION_ int vsscanf(const char *file, const char *format, va_list ap) +#endif /* WIDE_SCANF */ +#else /* STRING */ +#ifdef WIDE_SCANF +#define _GETC_(file) (consumed++, fgetwc(file)) +#define _UNGETC_(nch, file) do { ungetwc(nch, file); consumed--; } while(0) +#define _FUNCTION_ int vfwscanf(FILE* file, const wchar_t *format, va_list ap) +#else /* WIDE_SCANF */ +#define _GETC_(file) (consumed++, fgetc(file)) +#define _UNGETC_(nch, file) do { ungetc(nch, file); consumed--; } while(0) +#define _FUNCTION_ int vfscanf(FILE* file, const char *format, va_list ap) +#endif /* WIDE_SCANF */ +#endif /* STRING */ +#endif /* CONSOLE */ + +/********************************************************************* + * Implemented based on + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_crt_format_specification_fields_.2d_.scanf_and_wscanf_functions.asp + * Extended by C. Scott Ananian to handle + * more types of format spec. + */ +_FUNCTION_ { + int rd = 0, consumed = 0; + int nch; + if (!*format) return 0; +#ifndef WIDE_SCANF +#ifdef CONSOLE + TRACE("(%s): \n", debugstr_a(format)); +#else /* CONSOLE */ +#ifdef STRING + TRACE("%s (%s)\n", file, debugstr_a(format)); +#else /* STRING */ + TRACE("%p (%s)\n", file, debugstr_a(format)); +#endif /* STRING */ +#endif /* CONSOLE */ +#endif /* WIDE_SCANF */ + nch = _GETC_(file); + if (nch == _EOF_) return _EOF_RET; + + while (*format) { + /* a whitespace character in the format string causes scanf to read, + * but not store, all consecutive white-space characters in the input + * up to the next non-white-space character. One white space character + * in the input matches any number (including zero) and combination of + * white-space characters in the input. */ + if (_ISSPACE_(*format)) { + /* skip whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + } + /* a format specification causes scanf to read and convert characters + * in the input into values of a specified type. The value is assigned + * to an argument in the argument list. Format specifications have + * the form %[*][width][{h | l | I64 | L}]type */ + else if (*format == '%') { + int st = 0; int suppress = 0; int width = 0; + int base, number_signed; + int h_prefix = 0; + int l_prefix = 0; + int L_prefix = 0; + int w_prefix = 0; + int prefix_finished = 0; + int I64_prefix = 0; + format++; + /* look for leading asterisk, which means 'suppress assignment of + * this field'. */ + if (*format=='*') { + format++; + suppress=1; + } + /* look for width specification */ + while (_ISDIGIT_(*format)) { + width*=10; + width+=*format++ - '0'; + } + if (width==0) width=-1; /* no width spec seen */ + /* read prefix (if any) */ + while (!prefix_finished) { + switch(*format) { + case 'h': h_prefix = 1; break; + case 'l': l_prefix = 1; break; + case 'w': w_prefix = 1; break; + case 'L': L_prefix = 1; break; + case 'I': + if (*(format + 1) == '6' && + *(format + 2) == '4') { + I64_prefix = 1; + format += 2; + } + break; + default: + prefix_finished = 1; + } + if (!prefix_finished) format++; + } + /* read type */ + switch(*format) { + case 'x': + case 'X': /* hexadecimal integer. */ + base = 16; number_signed = 0; + goto number; + case 'o': /* octal integer */ + base = 8; number_signed = 0; + goto number; + case 'u': /* unsigned decimal integer */ + base = 10; number_signed = 0; + goto number; + case 'd': /* signed decimal integer */ + base = 10; number_signed = 1; + goto number; + case 'i': /* generic integer */ + base = 10; number_signed = 1; + number: { + /* read an integer */ + ULONGLONG cur = 0; + int negative = 0; + int seendigit=0; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* get sign */ + if (number_signed && (nch == '-' || + nch == '+')) { + negative = (nch=='-'); + nch = _GETC_(file); + if (width>0) width--; + } + /* look for leading indication of base */ + if (width!=0 && nch == '0') { + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + if (width!=0 && (nch=='x' || nch=='X')) { + if (base==0) + base=16; + if (base==16) { + nch = _GETC_(file); + if (width>0) width--; + seendigit=0; + } + } else if (base==0) + base = 8; + } + /* throw away leading zeros */ + while (width!=0 && nch=='0') { + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + } + if (width!=0 && _CHAR2DIGIT_(nch, base)!=-1) { + cur = _CHAR2DIGIT_(nch, base); + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + } + /* read until no more digits */ + while (width!=0 && (nch!=_EOF_) && _CHAR2DIGIT_(nch, base)!=-1) { + cur = cur*base + _CHAR2DIGIT_(nch, base); + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + } + /* okay, done! */ + if (!seendigit) break; /* not a valid number */ + st = 1; + if (!suppress) { +#define _SET_NUMBER_(type) *va_arg(ap, type*) = negative ? -cur : cur + if (number_signed) { + if (I64_prefix) _SET_NUMBER_(LONGLONG); + else if (l_prefix) _SET_NUMBER_(long int); + else if (h_prefix) _SET_NUMBER_(short int); + else _SET_NUMBER_(int); + } else { + if (negative) { + WARN("Dropping sign in reading a negative number into an unsigned value"); + negative = 0; + } + if (I64_prefix) _SET_NUMBER_(ULONGLONG); + else if (l_prefix) _SET_NUMBER_(unsigned long int); + else if (h_prefix) + _SET_NUMBER_(unsigned short int); + else _SET_NUMBER_(unsigned int); + } + } + } + break; + case 'e': + case 'E': + case 'f': + case 'g': + case 'G': { /* read a float */ + long double cur = 0; + int negative = 0; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* get sign. */ + if (nch == '-' || nch == '+') { + negative = (nch=='-'); + if (width>0) width--; + if (width==0) break; + nch = _GETC_(file); + } + /* get first digit. */ + if ('.' != nch) { + if (!_ISDIGIT_(nch)) break; + cur = (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + /* read until no more digits */ + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + cur = cur*10 + (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + } + } else { + cur = 0; /* MaxPayneDemo Fix: .8 -> 0.8 */ + } + /* handle decimals */ + if (width!=0 && nch == '.') { + float dec = 1; + nch = _GETC_(file); + if (width>0) width--; + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + dec /= 10; + cur += dec * (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + } + } + /* handle exponent */ + if (width!=0 && (nch == 'e' || nch == 'E')) { + int exponent = 0, negexp = 0; + float expcnt; + nch = _GETC_(file); + if (width>0) width--; + /* possible sign on the exponent */ + if (width!=0 && (nch=='+' || nch=='-')) { + negexp = (nch=='-'); + nch = _GETC_(file); + if (width>0) width--; + } + /* exponent digits */ + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + exponent *= 10; + exponent += (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + } + /* update 'cur' with this exponent. */ + expcnt = negexp ? .1 : 10; + while (exponent!=0) { + if (exponent&1) + cur*=expcnt; + exponent/=2; + expcnt=expcnt*expcnt; + } + } + st = 1; + if (!suppress) { + if (L_prefix) _SET_NUMBER_(long double); + else if (l_prefix) _SET_NUMBER_(double); + else _SET_NUMBER_(float); + } + } + break; + /* According to + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_scanf_type_field_characters.asp + * 's' reads a character string in a call to fscanf + * and 'S' a wide character string and vice versa in a + * call to fwscanf. The 'h', 'w' and 'l' prefixes override + * this behaviour. 'h' forces reading char * but 'l' and 'w' + * force reading WCHAR. */ + case 's': + if (w_prefix || l_prefix) goto widecharstring; + else if (h_prefix) goto charstring; +#ifdef WIDE_SCANF + else goto widecharstring; +#else /* WIDE_SCANF */ + else goto charstring; +#endif /* WIDE_SCANF */ + case 'S': + if (w_prefix || l_prefix) goto widecharstring; + else if (h_prefix) goto charstring; +#ifdef WIDE_SCANF + else goto charstring; +#else /* WIDE_SCANF */ + else goto widecharstring; +#endif /* WIDE_SCANF */ + charstring: { /* read a word into a char */ + char*str = suppress ? NULL : va_arg(ap, char*); + char*sptr = str; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* read until whitespace */ + while (width!=0 && (nch!=_EOF_) && !_ISSPACE_(nch)) { + if (!suppress) *sptr++ = _CHAR2SUPPORTED_(nch); + st++; + nch = _GETC_(file); + if (width>0) width--; + } + /* terminate */ + if (!suppress) *sptr = 0; + } + break; + widecharstring: { /* read a word into a wchar_t* */ + wchar_t*str = + suppress ? NULL : va_arg(ap, wchar_t*); + wchar_t*sptr = str; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* read until whitespace */ + while (width!=0 && (nch!=_EOF_) && !_ISSPACE_(nch)) { + if (!suppress) *sptr++ = _WIDE2SUPPORTED_(nch); + st++; + nch = _GETC_(file); + if (width>0) width--; + } + /* terminate */ + if (!suppress) *sptr = 0; + } + break; + /* 'c' and 'C work analogously to 's' and 'S' as described + * above */ + case 'c': + if (w_prefix || l_prefix) goto widecharacter; + else if (h_prefix) goto character; +#ifdef WIDE_SCANF + else goto widecharacter; +#else /* WIDE_SCANF */ + else goto character; +#endif /* WIDE_SCANF */ + case 'C': + if (w_prefix || l_prefix) goto widecharacter; + else if (h_prefix) goto character; +#ifdef WIDE_SCANF + else goto character; +#else /* WIDE_SCANF */ + else goto widecharacter; +#endif /* WIDE_SCANF */ + character: { /* read single character into char */ + if (nch!=_EOF_) { + if (!suppress) { + char*c = va_arg(ap, char*); + *c = _CHAR2SUPPORTED_(nch); + } + st = 1; + nch = _GETC_(file); + } + } + break; + widecharacter: { /* read single character into a wchar_t */ + if (nch!=_EOF_) { + if (!suppress) { + wchar_t*c = va_arg(ap, wchar_t*); + *c = _WIDE2SUPPORTED_(nch); + } + nch = _GETC_(file); + st = 1; + } + } + break; + case 'n': { + if (!suppress) { + int*n = va_arg(ap, int*); + *n = consumed - (nch!=_EOF_); + } + } + break; + case '[': { + _CHAR_ *str = suppress ? NULL : va_arg(ap, _CHAR_*); + _CHAR_ *sptr = str; + RTL_BITMAP bitMask; + ULONG *Mask; + int invert = 0; /* Set if we are NOT to find the chars */ + + /* Init our bitmap */ + Mask = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, _BITMAPSIZE_/8); + RtlInitializeBitMap(&bitMask, Mask, _BITMAPSIZE_); + + /* Read the format */ + format++; + if(*format == '^') { + invert = 1; + format++; + } + if(*format == ']') { + RtlSetBits(&bitMask, ']', 1); + format++; + } + while(*format && (*format != ']')) { + /* According to: + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_crt_scanf_width_specification.asp + * "Note that %[a-z] and %[z-a] are interpreted as equivalent to %[abcde...z]." */ + if((*format == '-') && (*(format + 1) != ']')) { + if ((*(format - 1)) < *(format + 1)) + RtlSetBits(&bitMask, *(format - 1) +1 , *(format + 1) - *(format - 1)); + else + RtlSetBits(&bitMask, *(format + 1) , *(format - 1) - *(format + 1)); + format++; + } else + RtlSetBits(&bitMask, *format, 1); + format++; + } + /* read until char is not suitable */ + while ((width != 0) && (nch != _EOF_)) { + if(!invert) { + if(RtlAreBitsSet(&bitMask, nch, 1)) { + if (!suppress) *sptr++ = _CHAR2SUPPORTED_(nch); + } else + break; + } else { + if(RtlAreBitsClear(&bitMask, nch, 1)) { + if (!suppress) *sptr++ = _CHAR2SUPPORTED_(nch); + } else + break; + } + st++; + nch = _GETC_(file); + if (width>0) width--; + } + /* terminate */ + if (!suppress) *sptr = 0; + HeapFree(GetProcessHeap(), 0, Mask); + } + break; + default: + /* From spec: "if a percent sign is followed by a character + * that has no meaning as a format-control character, that + * character and the following characters are treated as + * an ordinary sequence of characters, that is, a sequence + * of characters that must match the input. For example, + * to specify that a percent-sign character is to be input, + * use %%." */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + if (nch==*format) { + suppress = 1; /* whoops no field to be read */ + st = 1; /* but we got what we expected */ + nch = _GETC_(file); + } + break; + } + if (st && !suppress) rd++; + else if (!st) break; + } + /* a non-white-space character causes scanf to read, but not store, + * a matching non-white-space character. */ + else { + /* check for character match */ + if (nch == *format) { + nch = _GETC_(file); + } else break; + } + format++; + } + if (nch!=_EOF_) { + _UNGETC_(nch, file); + } + TRACE("returning %d\n", rd); + return rd; +} + +#undef _CHAR_ +#undef _EOF_ +#undef _EOF_RET +#undef _ISSPACE_ +#undef _ISDIGIT_ +#undef _CHAR2SUPPORTED_ +#undef _WIDE2SUPPORTED_ +#undef _CHAR2DIGIT_ +#undef _GETC_ +#undef _UNGETC_ +#undef _FUNCTION_ +#undef _BITMAPSIZE_ diff --git a/reactos/lib/crt/wine/thread.c b/reactos/lib/crt/wine/thread.c index f8b9a579574..15434fc384d 100644 --- a/reactos/lib/crt/wine/thread.c +++ b/reactos/lib/crt/wine/thread.c @@ -19,10 +19,10 @@ */ #include "precomp.h" -#include +#include -#include "msvcrt/malloc.h" -#include "msvcrt/process.h" +#include +#include #include "wine/debug.h" diff --git a/reactos/lib/crt/wstring/wcscoll.c b/reactos/lib/crt/wstring/wcscoll.c index e1c27270ed2..abfbb011c26 100644 --- a/reactos/lib/crt/wstring/wcscoll.c +++ b/reactos/lib/crt/wstring/wcscoll.c @@ -1,5 +1,5 @@ -#include +#include /* * @unimplemented diff --git a/reactos/lib/crt/wstring/wcscspn.c b/reactos/lib/crt/wstring/wcscspn.c index 44f66b70b61..64ad89d4c52 100644 --- a/reactos/lib/crt/wstring/wcscspn.c +++ b/reactos/lib/crt/wstring/wcscspn.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcsdup.c b/reactos/lib/crt/wstring/wcsdup.c index 9c150a44acb..62a65c28c89 100644 --- a/reactos/lib/crt/wstring/wcsdup.c +++ b/reactos/lib/crt/wstring/wcsdup.c @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include /* diff --git a/reactos/lib/crt/wstring/wcsicmp.c b/reactos/lib/crt/wstring/wcsicmp.c index 82feea78558..fd2de512775 100644 --- a/reactos/lib/crt/wstring/wcsicmp.c +++ b/reactos/lib/crt/wstring/wcsicmp.c @@ -1,7 +1,7 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include -#include +#include +#include /* diff --git a/reactos/lib/crt/wstring/wcslwr.c b/reactos/lib/crt/wstring/wcslwr.c index 176af2fceeb..bc35b6e7172 100644 --- a/reactos/lib/crt/wstring/wcslwr.c +++ b/reactos/lib/crt/wstring/wcslwr.c @@ -8,7 +8,7 @@ * Copyright 1997 Uwe Bonnes */ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcsnicmp.c b/reactos/lib/crt/wstring/wcsnicmp.c index 4a99c8c492a..cc9eeee060f 100644 --- a/reactos/lib/crt/wstring/wcsnicmp.c +++ b/reactos/lib/crt/wstring/wcsnicmp.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcspbrk.c b/reactos/lib/crt/wstring/wcspbrk.c index e65ec33c2e0..abfe91e78f7 100644 --- a/reactos/lib/crt/wstring/wcspbrk.c +++ b/reactos/lib/crt/wstring/wcspbrk.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcsrev.c b/reactos/lib/crt/wstring/wcsrev.c index 4c213c5bf62..89c8ca7f04b 100644 --- a/reactos/lib/crt/wstring/wcsrev.c +++ b/reactos/lib/crt/wstring/wcsrev.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcsset.c b/reactos/lib/crt/wstring/wcsset.c index 3e797b04348..56ac5d98c99 100644 --- a/reactos/lib/crt/wstring/wcsset.c +++ b/reactos/lib/crt/wstring/wcsset.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcsspn.c b/reactos/lib/crt/wstring/wcsspn.c index 1025c8c1c2a..b50e104cce4 100644 --- a/reactos/lib/crt/wstring/wcsspn.c +++ b/reactos/lib/crt/wstring/wcsspn.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcsstr.c b/reactos/lib/crt/wstring/wcsstr.c index 7167f946c56..f8827b33942 100644 --- a/reactos/lib/crt/wstring/wcsstr.c +++ b/reactos/lib/crt/wstring/wcsstr.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcstok.c b/reactos/lib/crt/wstring/wcstok.c index 72cc6000a7c..e79fe27f861 100644 --- a/reactos/lib/crt/wstring/wcstok.c +++ b/reactos/lib/crt/wstring/wcstok.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include wchar_t** _wlasttoken(); /* wlasttok.c */ diff --git a/reactos/lib/crt/wstring/wcsupr.c b/reactos/lib/crt/wstring/wcsupr.c index 4a5dd8ad198..c62113c985b 100644 --- a/reactos/lib/crt/wstring/wcsupr.c +++ b/reactos/lib/crt/wstring/wcsupr.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wcsxfrm.c b/reactos/lib/crt/wstring/wcsxfrm.c index 9e5cb52ac99..3ee861f668a 100644 --- a/reactos/lib/crt/wstring/wcsxfrm.c +++ b/reactos/lib/crt/wstring/wcsxfrm.c @@ -1,4 +1,4 @@ -#include +#include /* * @implemented diff --git a/reactos/lib/crt/wstring/wlasttok.c b/reactos/lib/crt/wstring/wlasttok.c index fcc80c06d0e..14c333f4e1d 100644 --- a/reactos/lib/crt/wstring/wlasttok.c +++ b/reactos/lib/crt/wstring/wlasttok.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* * This is an MSVCRT internal function to return the lasttoken * bit of data used by wcstok. The reason for it's existence is From bdce06f0056cc3987c7c8076af1b0c00fff08ea9 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Wed, 16 Feb 2005 22:30:50 +0000 Subject: [PATCH 083/248] ntdll: -critical.c: catch (more) invalid use -impl. sscanf (stolen from wine) crt: -use native mingw headers and not private copies of them -converted some routines to using tchar == impl. many missing unicode routines -impl. sscanf and friends correctly (stolen from wine) tchar.h: -added lotsa missin stuff svn path=/trunk/; revision=13609 --- reactos/lib/crtdll/crtdll.def | 2 +- reactos/lib/crtdll/dllmain.c | 2 +- reactos/lib/msvcrt/dllmain.c | 8 +- reactos/lib/msvcrt/msvcrt.def | 271 +++++++-------- reactos/lib/ntdll/rtl/critical.c | 18 +- reactos/lib/ntdll/stdio/scanf.h | 537 +++++++++++++++++++++++++++++ reactos/lib/ntdll/stdio/sscanf.c | 39 ++- reactos/lib/ntdll/stdlib/bsearch.c | 2 +- reactos/lib/ntdll/stdlib/lfind.c | 4 +- 9 files changed, 736 insertions(+), 147 deletions(-) create mode 100644 reactos/lib/ntdll/stdio/scanf.h diff --git a/reactos/lib/crtdll/crtdll.def b/reactos/lib/crtdll/crtdll.def index 22c89ef9969..f184df937a5 100644 --- a/reactos/lib/crtdll/crtdll.def +++ b/reactos/lib/crtdll/crtdll.def @@ -145,7 +145,7 @@ _findnext _finite _flsbuf _flushall -_fmode_dll=__fmode DATA +_fmode_dll=_fmode DATA _fpclass _fpieee_flt _fpreset diff --git a/reactos/lib/crtdll/dllmain.c b/reactos/lib/crtdll/dllmain.c index 3607c4b9fb1..0b38ee09de4 100644 --- a/reactos/lib/crtdll/dllmain.c +++ b/reactos/lib/crtdll/dllmain.c @@ -22,7 +22,7 @@ #include "precomp.h" #include -#include +#include #include #include diff --git a/reactos/lib/msvcrt/dllmain.c b/reactos/lib/msvcrt/dllmain.c index 091f5ebc09f..5c32a1fdbc4 100644 --- a/reactos/lib/msvcrt/dllmain.c +++ b/reactos/lib/msvcrt/dllmain.c @@ -22,7 +22,7 @@ #include "precomp.h" #include -#include +#include #include #define NDEBUG @@ -66,7 +66,8 @@ DllMain(PVOID hinstDll, ULONG dwReason, PVOID reserved) { case DLL_PROCESS_ATTACH://1 /* initialize version info */ - DPRINT("Attach %d\n", nAttachCount); + //DPRINT1("Process Attach %d\n", nAttachCount); + //DPRINT1("Process Attach\n"); _osver = GetVersion(); _winmajor = (_osver >> 8) & 0xFF; _winminor = _osver & 0xFF; @@ -110,7 +111,8 @@ DllMain(PVOID hinstDll, ULONG dwReason, PVOID reserved) break; case DLL_PROCESS_DETACH://0 - DPRINT("Detach %d\n", nAttachCount); + //DPRINT1("Detach %d\n", nAttachCount); + //DPRINT("Detach\n"); /* FIXME: more cleanup... */ _fcloseall(); diff --git a/reactos/lib/msvcrt/msvcrt.def b/reactos/lib/msvcrt/msvcrt.def index cc17d63d370..1156b11368b 100644 --- a/reactos/lib/msvcrt/msvcrt.def +++ b/reactos/lib/msvcrt/msvcrt.def @@ -92,24 +92,24 @@ _Gettnames _HUGE DATA _Strftime _XcptFilter -;__CxxCallUnwindDtor +__CxxCallUnwindDtor=stub __CxxDetectRethrow -;__CxxExceptionFilter +__CxxExceptionFilter=stub __CxxFrameHandler -;__CxxLongjmpUnwind +__CxxLongjmpUnwind=stub __CxxQueryExceptionSize -;__CxxRegisterExceptionObject -;__CxxUnregisterExceptionObject -;__DestructExceptionObject +__CxxRegisterExceptionObject=stub +__CxxUnregisterExceptionObject=stub +__DestructExceptionObject=stub __RTCastToVoid=MSVCRT___RTCastToVoid __RTDynamicCast=MSVCRT___RTDynamicCast __RTtypeid=MSVCRT___RTtypeid -;__STRINGTOLD +__STRINGTOLD=stub __argc DATA __argv DATA __badioinfo DATA -;__crtCompareStringA ;=NTDLL.RtlCompareString -;__crtGetLocaleInfoW +__crtCompareStringA +__crtGetLocaleInfoW __crtLCMapStringA __dllonexit __doserrno @@ -122,37 +122,37 @@ __iscsymf __lc_codepage __lc_collate_cp __lc_handle -;__lconv_init +__lconv_init __mb_cur_max DATA __p___argc __p___argv -;__p___wargv +__p___wargv __p___initenv __p___mb_cur_max __p___winitenv __p__acmdln -;__p__amblksiz +__p__amblksiz __p__commode -;__p__daylight -;__p__dstbias +__p__daylight +__p__dstbias __p__environ -;__p__fileinfo +__p__fileinfo=stub __p__fmode __p__iob -;__p__mbcasemap -;__p__mbctype +__p__mbcasemap=stub +__p__mbctype=stub __p__osver __p__pctype __p__pgmptr __p__pwctype -;__p__timezone -;__p__tzname -;__p__wcmdln +__p__timezone +__p__tzname=stub +__p__wcmdln=stub __p__wenviron __p__winmajor __p__winminor __p__winver -;__p__wpgmptr +__p__wpgmptr=stub __pioinfo __pxcptinfoptrs __set_app_type @@ -161,65 +161,65 @@ __setusermatherr __threadhandle __threadid __toascii -;__unDName -;__unDNameEx +__unDName=stub +__unDNameEx=stub __unguarded_readlc_active DATA __wargv __wgetmainargs __winitenv -;___lc_codepage_func -;___lc_handle_func -;___mb_cur_max_func -;___setlc_active_func -;___unguarded_readlc_active_add_func -;__crtCompareStringW -;__crtGetStringTypeW -;__crtLCMapStringW -;__iob_func -;__pctype_func -;__uncaught_exception -;__wcserror +___lc_codepage_func=stub +___lc_handle_func=stub +___mb_cur_max_func=stub +___setlc_active_func=stub +___unguarded_readlc_active_add_func=stub +__crtCompareStringW=stub +__crtGetStringTypeW=stub +__crtLCMapStringW=stub +__iob_func=stub +__pctype_func=stub +__uncaught_exception=stub +__wcserror=stub _abnormal_termination _access _acmdln DATA -;_adj_fdiv_m16i +_adj_fdiv_m16i=stub _adj_fdiv_m32 = _adj_fdiv_m32@4 _adj_fdiv_m32i = _adj_fdiv_m32i@4 _adj_fdiv_m64 = _adj_fdiv_m64@8 _adj_fdiv_r -;_adj_fdivr_m16i +_adj_fdivr_m16i=stub _adj_fdivr_m32 = _adj_fdivr_m32@4 _adj_fdivr_m32i = _adj_fdivr_m32i@4 _adj_fdivr_m64 = _adj_fdivr_m64@8 _adj_fpatan -;_adj_fprem -;_adj_fprem1 -;_adj_fptan +_adj_fprem=stub +_adj_fprem1=stub +_adj_fptan=stub _adjust_fdiv DATA _aexit_rtn -;_aligned_free -;_aligned_malloc -;_aligned_offset_malloc -;_aligned_offset_realloc -;_aligned_realloc +_aligned_free=stub +_aligned_malloc=stub +_aligned_offset_malloc=stub +_aligned_offset_realloc=stub +_aligned_realloc=stub _amsg_exit _assert -;_atodbl +_atodbl=stub _atoi64 -;_atoldbl +_atoldbl=stub _beep _beginthread _beginthreadex _c_exit _cabs -;_callnewh +_callnewh=stub _cexit _cgets -;_cgetws +_cgetws=stub _chdir _chdrive _chgsign -;_chkesp +_chkesp=stub _chmod _chsize _clearfp @@ -231,22 +231,22 @@ _controlfp _copysign _cprintf _cputs -;_cputws +_cputws=stub _creat _cscanf -;_ctime64 +_ctime64=stub _ctype DATA _cwait -;_cwprintf -;_cwscanf +_cwprintf=stub +_cwscanf=stub _daylight DATA -;_dstbias +_dstbias=stub _dup _dup2 _ecvt _endthread _endthreadex -;_environ +_environ=stub _eof _errno _except_handler2 @@ -267,21 +267,21 @@ _fdopen _fgetchar _fgetwchar _filbuf -;_fileinfo DATA +_fileinfo=stub DATA _filelength _filelengthi64 _fileno _findclose _findfirst -;_findfirst64 +_findfirst64=stub _findfirsti64 _findnext -;_findnext64 +_findnext64=stub _findnexti64 _finite _flsbuf _flushall -_fmode=__fmode DATA +_fmode DATA _fpclass _fpieee_flt _fpreset @@ -289,17 +289,17 @@ _fputchar _fputwchar _fsopen _fstat -;_fstat64 +_fstat64=stub _fstati64 _ftime -;_ftime64 +_ftime64=stub _ftol=NTDLL._ftol _fullpath _futime -;_futime64 +_futime64=stub _gcvt _get_osfhandle -;_get_sbh_threshold +_get_sbh_threshold=stub _getch _getche _getcwd @@ -308,29 +308,30 @@ _getdiskfree _getdllprocaddr _getdrive _getdrives -;_getmaxstdio -;_getmbcp +_get_heap_handle=stub +_getmaxstdio=stub +_getmbcp=stub _getpid _getsystime _getw -;_getwch -;_getwche -;_getws -;_gmtime64 +_getwch=stub +_getwche=stub +_getws=stub +_gmtime64=stub _global_unwind2 _heapadd _heapchk _heapmin _heapset -;_heapused +_heapused=stub _heapwalk _hypot _i64toa _i64tow _initterm -;_inp -;_inpd -;_inpw +_inp=stub +_inpd=stub +_inpw=stub _iob _isatty _isctype @@ -339,7 +340,7 @@ _ismbbalpha _ismbbgraph _ismbbkalnum _ismbbkana -;_ismbbkprint +_ismbbkprint=stub _ismbbkpunct _ismbblead _ismbbprint @@ -348,7 +349,7 @@ _ismbbtrail _ismbcalnum _ismbcalpha _ismbcdigit -;_ismbcgraph +_ismbcgraph=stub _ismbchira _ismbckata _ismbcl0 @@ -357,7 +358,7 @@ _ismbcl2 _ismbclegal _ismbclower _ismbcprint -;_ismbcpunct +_ismbcpunct=stub _ismbcspace _ismbcsymbol _ismbcupper @@ -370,13 +371,14 @@ _j0 _j1 _jn _kbhit +_localtime64=stub _lfind _loaddll _local_unwind2 _lock _locking _logb -;_longjmpex +_longjmpex=stub _lrotl _lrotr _lsearch @@ -387,7 +389,7 @@ _ltow _makepath _mbbtombc _mbbtype -;_mbcasemap +_mbcasemap=stub _mbccpy _mbcjistojms _mbcjmstojis @@ -444,17 +446,17 @@ _memccpy _memicmp _mkdir _mktemp -;_mktime64 +_mktime64=stub _msize _nextafter _onexit _open _open_osfhandle _osver DATA -;_osplatform -;_outp -;_outpd -;_outpw +_osplatform=stub +_outp=stub +_outpd=stub +_outpw=stub _pclose _pctype DATA _pgmptr DATA @@ -464,38 +466,38 @@ _purecall _putch _putenv _putw -;_putwch +_putwch=stub _putws _pwctype DATA _read -;_resetstkoflw +_resetstkoflw=stub _rmdir _rmtmp _rotl _rotr -;_safe_fdiv -;_safe_fdivr -;_safe_fprem -;_safe_fprem1 +_safe_fdiv=stub +_safe_fdivr=stub +_safe_fprem=stub +_safe_fprem1=stub _scalb -;_scprintf -;_scwprintf +_scprintf=stub +_scwprintf=stub _searchenv _seh_longjmp_unwind=_seh_longjmp_unwind@4 -;_set_error_mode -;_set_SSE2_enable -;_set_sbh_threshold +_set_error_mode=stub +_set_SSE2_enable=stub +_set_sbh_threshold=stub _seterrormode _setjmp _setjmp3 -;_setmaxstdio +_setmaxstdio=stub _setmbcp _setmode _setsystime _sleep _snprintf -;_snscanf -;_snwscanf +_snscanf=stub +_snwscanf=stub _snwprintf _sopen _spawnl @@ -508,7 +510,7 @@ _spawnvp _spawnvpe _splitpath _stat -;_stat64 +_stat64=stub _stati64 _statusfp _strcmpi @@ -525,8 +527,8 @@ _strnset _strrev _strset _strtime -;_strtoi64 -;_strtoui64 +_strtoi64=stub +_strtoui64=stub _strupr _swab _sys_errlist DATA @@ -534,7 +536,7 @@ _sys_nerr DATA _tell _telli64 _tempnam -;_time64 +_time64=stub _timezone DATA _tolower _toupper @@ -546,14 +548,13 @@ _ultoa _ultow _umask _ungetch -;_ungetwch _unlink _unloaddll _unlock _utime -;_utime64 -;_vscprintf -;_vscwprintf +_utime64=stub +_vscprintf=stub +_vscwprintf=stub _vsnprintf _vsnwprintf _waccess @@ -563,7 +564,7 @@ _wchmod _wcmdln _wcreat _wcsdup -;_wcserror +_wcserror=stub _wcsicmp _wcsicoll _wcslwr @@ -573,26 +574,26 @@ _wcsnicoll _wcsnset _wcsrev _wcsset -;_wcstoi64 -;_wcstoui64 -;_wctime64 +_wcstoi64=stub +_wcstoui64=stub +_wctime64=stub _wcsupr _wctime -;_wenviron -;_wexecl -;_wexecle -;_wexeclp -;_wexeclpe -;_wexecv -;_wexecve -;_wexecvp -;_wexecvpe +_wenviron=stub +_wexecl +_wexecle +_wexeclp +_wexeclpe +_wexecv +_wexecve +_wexecvp +_wexecvpe _wfdopen _wfindfirst -;_wfindfirst64 +_wfindfirst64=stub _wfindfirsti64 _wfindnext -;_wfindnext64 +_wfindnext64=stub _wfindnexti64 _wfopen _wfreopen @@ -609,7 +610,7 @@ _wmkdir _wmktemp _wopen _wperror -;_wpgmptr DATA +_wpgmptr=stub DATA _wpopen _wputenv _wremove @@ -617,32 +618,32 @@ _wrename _write _wrmdir _wsearchenv -;_wsetlocale +_wsetlocale=stub _wsopen -;_wspawnl -;_wspawnle -;_wspawnlp -;_wspawnlpe -;_wspawnv -;_wspawnve -;_wspawnvp -;_wspawnvpe +_wspawnl +_wspawnle +_wspawnlp +_wspawnlpe +_wspawnv +_wspawnve +_wspawnvp +_wspawnvpe _wsplitpath _wstat -;_wstat64 +_wstat64=stub _wstati64 _wstrdate _wstrtime -;_wsystem +_wsystem=stub _wtempnam _wtmpnam -;_wtof +_wtof=stub _wtoi _wtoi64 _wtol _wunlink _wutime -;_wutime64 +_wutime64=stub _y0 _y1 _yn diff --git a/reactos/lib/ntdll/rtl/critical.c b/reactos/lib/ntdll/rtl/critical.c index 6da74fc197f..50f01d46b33 100644 --- a/reactos/lib/ntdll/rtl/critical.c +++ b/reactos/lib/ntdll/rtl/critical.c @@ -148,6 +148,13 @@ RtlEnterCriticalSection( CriticalSection->RecursionCount++; return STATUS_SUCCESS; } + else if (CriticalSection->OwningThread == (HANDLE)0) + { + /* No one else owns it either! */ + DPRINT1("Critical section not initialized (guess)!\n"); + /* FIXME: raise exception */ + return STATUS_INVALID_PARAMETER; + } /* We don't own it, so we must wait for it */ RtlpWaitForCriticalSection(CriticalSection); @@ -293,7 +300,16 @@ NTSTATUS STDCALL RtlLeaveCriticalSection( PRTL_CRITICAL_SECTION CriticalSection) -{ +{ + HANDLE Thread = (HANDLE)NtCurrentTeb()->Cid.UniqueThread; + + if (Thread != CriticalSection->OwningThread) + { + DPRINT1("Releasing critical section not owned!\n"); + /* FIXME: raise exception */ + return STATUS_INVALID_PARAMETER; + } + /* Decrease the Recursion Count */ if (--CriticalSection->RecursionCount) { diff --git a/reactos/lib/ntdll/stdio/scanf.h b/reactos/lib/ntdll/stdio/scanf.h new file mode 100644 index 00000000000..a8dcde70740 --- /dev/null +++ b/reactos/lib/ntdll/stdio/scanf.h @@ -0,0 +1,537 @@ +/* + * general implementation of scanf used by scanf, sscanf, fscanf, + * _cscanf, wscanf, swscanf and fwscanf + * + * Copyright 1996,1998 Marcus Meissner + * Copyright 1996 Jukka Iivonen + * Copyright 1997,2000, 2003 Uwe Bonnes + * Copyright 2000 Jon Griffiths + * Copyright 2002 Daniel Gudbjartsson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifdef WIDE_SCANF +#define _CHAR_ wchar_t +#define _EOF_ WEOF +#define _EOF_RET WEOF +#define _ISSPACE_(c) iswspace(c) +#define _ISDIGIT_(c) iswdigit(c) +#define _WIDE2SUPPORTED_(c) c /* No conversion needed (wide to wide) */ +#define _CHAR2SUPPORTED_(c) c /* FIXME: convert char to wide char */ +#define _CHAR2DIGIT_(c, base) wchar2digit((c), (base)) +#define _BITMAPSIZE_ 256*256 +#else /* WIDE_SCANF */ +#define _CHAR_ char +#define _EOF_ EOF +#define _EOF_RET EOF +#define _ISSPACE_(c) isspace(c) +#define _ISDIGIT_(c) isdigit(c) +#define _WIDE2SUPPORTED_(c) c /* FIXME: convert wide char to char */ +#define _CHAR2SUPPORTED_(c) c /* No conversion needed (char to char) */ +#define _CHAR2DIGIT_(c, base) char2digit((c), (base)) +#define _BITMAPSIZE_ 256 +#endif /* WIDE_SCANF */ + +#ifdef CONSOLE +#define _GETC_(file) (consumed++, _getch()) +#define _UNGETC_(nch, file) do { _ungetch(nch); consumed--; } while(0) +#define _FUNCTION_ int vcscanf(const char *format, va_list ap) +#else +#ifdef STRING +#undef _EOF_ +#define _EOF_ 0 +#define _GETC_(file) (consumed++, *file++) +#define _UNGETC_(nch, file) do { file--; consumed--; } while(0) +#ifdef WIDE_SCANF +#define _FUNCTION_ int vswscanf(const wchar_t *file, const wchar_t *format, va_list ap) +#else /* WIDE_SCANF */ +#define _FUNCTION_ int vsscanf(const char *file, const char *format, va_list ap) +#endif /* WIDE_SCANF */ +#else /* STRING */ +#ifdef WIDE_SCANF +#define _GETC_(file) (consumed++, fgetwc(file)) +#define _UNGETC_(nch, file) do { ungetwc(nch, file); consumed--; } while(0) +#define _FUNCTION_ int vfwscanf(FILE* file, const wchar_t *format, va_list ap) +#else /* WIDE_SCANF */ +#define _GETC_(file) (consumed++, fgetc(file)) +#define _UNGETC_(nch, file) do { ungetc(nch, file); consumed--; } while(0) +#define _FUNCTION_ int vfscanf(FILE* file, const char *format, va_list ap) +#endif /* WIDE_SCANF */ +#endif /* STRING */ +#endif /* CONSOLE */ + +/********************************************************************* + * Implemented based on + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_crt_format_specification_fields_.2d_.scanf_and_wscanf_functions.asp + * Extended by C. Scott Ananian to handle + * more types of format spec. + */ +_FUNCTION_ { + int rd = 0, consumed = 0; + int nch; + if (!*format) return 0; +#ifndef WIDE_SCANF +#ifdef CONSOLE + TRACE("(%s): \n", debugstr_a(format)); +#else /* CONSOLE */ +#ifdef STRING + TRACE("%s (%s)\n", file, debugstr_a(format)); +#else /* STRING */ + TRACE("%p (%s)\n", file, debugstr_a(format)); +#endif /* STRING */ +#endif /* CONSOLE */ +#endif /* WIDE_SCANF */ + nch = _GETC_(file); + if (nch == _EOF_) return _EOF_RET; + + while (*format) { + /* a whitespace character in the format string causes scanf to read, + * but not store, all consecutive white-space characters in the input + * up to the next non-white-space character. One white space character + * in the input matches any number (including zero) and combination of + * white-space characters in the input. */ + if (_ISSPACE_(*format)) { + /* skip whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + } + /* a format specification causes scanf to read and convert characters + * in the input into values of a specified type. The value is assigned + * to an argument in the argument list. Format specifications have + * the form %[*][width][{h | l | I64 | L}]type */ + else if (*format == '%') { + int st = 0; int suppress = 0; int width = 0; + int base, number_signed; + int h_prefix = 0; + int l_prefix = 0; + int L_prefix = 0; + int w_prefix = 0; + int prefix_finished = 0; + int I64_prefix = 0; + format++; + /* look for leading asterisk, which means 'suppress assignment of + * this field'. */ + if (*format=='*') { + format++; + suppress=1; + } + /* look for width specification */ + while (_ISDIGIT_(*format)) { + width*=10; + width+=*format++ - '0'; + } + if (width==0) width=-1; /* no width spec seen */ + /* read prefix (if any) */ + while (!prefix_finished) { + switch(*format) { + case 'h': h_prefix = 1; break; + case 'l': l_prefix = 1; break; + case 'w': w_prefix = 1; break; + case 'L': L_prefix = 1; break; + case 'I': + if (*(format + 1) == '6' && + *(format + 2) == '4') { + I64_prefix = 1; + format += 2; + } + break; + default: + prefix_finished = 1; + } + if (!prefix_finished) format++; + } + /* read type */ + switch(*format) { + case 'x': + case 'X': /* hexadecimal integer. */ + base = 16; number_signed = 0; + goto number; + case 'o': /* octal integer */ + base = 8; number_signed = 0; + goto number; + case 'u': /* unsigned decimal integer */ + base = 10; number_signed = 0; + goto number; + case 'd': /* signed decimal integer */ + base = 10; number_signed = 1; + goto number; + case 'i': /* generic integer */ + base = 10; number_signed = 1; + number: { + /* read an integer */ + ULONGLONG cur = 0; + int negative = 0; + int seendigit=0; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* get sign */ + if (number_signed && (nch == '-' || + nch == '+')) { + negative = (nch=='-'); + nch = _GETC_(file); + if (width>0) width--; + } + /* look for leading indication of base */ + if (width!=0 && nch == '0') { + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + if (width!=0 && (nch=='x' || nch=='X')) { + if (base==0) + base=16; + if (base==16) { + nch = _GETC_(file); + if (width>0) width--; + seendigit=0; + } + } else if (base==0) + base = 8; + } + /* throw away leading zeros */ + while (width!=0 && nch=='0') { + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + } + if (width!=0 && _CHAR2DIGIT_(nch, base)!=-1) { + cur = _CHAR2DIGIT_(nch, base); + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + } + /* read until no more digits */ + while (width!=0 && (nch!=_EOF_) && _CHAR2DIGIT_(nch, base)!=-1) { + cur = cur*base + _CHAR2DIGIT_(nch, base); + nch = _GETC_(file); + if (width>0) width--; + seendigit=1; + } + /* okay, done! */ + if (!seendigit) break; /* not a valid number */ + st = 1; + if (!suppress) { +#define _SET_NUMBER_(type) *va_arg(ap, type*) = negative ? -cur : cur + if (number_signed) { + if (I64_prefix) _SET_NUMBER_(LONGLONG); + else if (l_prefix) _SET_NUMBER_(long int); + else if (h_prefix) _SET_NUMBER_(short int); + else _SET_NUMBER_(int); + } else { + if (negative) { + WARN("Dropping sign in reading a negative number into an unsigned value"); + negative = 0; + } + if (I64_prefix) _SET_NUMBER_(ULONGLONG); + else if (l_prefix) _SET_NUMBER_(unsigned long int); + else if (h_prefix) + _SET_NUMBER_(unsigned short int); + else _SET_NUMBER_(unsigned int); + } + } + } + break; + case 'e': + case 'E': + case 'f': + case 'g': + case 'G': { /* read a float */ + long double cur = 0; + int negative = 0; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* get sign. */ + if (nch == '-' || nch == '+') { + negative = (nch=='-'); + if (width>0) width--; + if (width==0) break; + nch = _GETC_(file); + } + /* get first digit. */ + if ('.' != nch) { + if (!_ISDIGIT_(nch)) break; + cur = (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + /* read until no more digits */ + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + cur = cur*10 + (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + } + } else { + cur = 0; /* MaxPayneDemo Fix: .8 -> 0.8 */ + } + /* handle decimals */ + if (width!=0 && nch == '.') { + float dec = 1; + nch = _GETC_(file); + if (width>0) width--; + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + dec /= 10; + cur += dec * (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + } + } + /* handle exponent */ + if (width!=0 && (nch == 'e' || nch == 'E')) { + int exponent = 0, negexp = 0; + float expcnt; + nch = _GETC_(file); + if (width>0) width--; + /* possible sign on the exponent */ + if (width!=0 && (nch=='+' || nch=='-')) { + negexp = (nch=='-'); + nch = _GETC_(file); + if (width>0) width--; + } + /* exponent digits */ + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + exponent *= 10; + exponent += (nch - '0'); + nch = _GETC_(file); + if (width>0) width--; + } + /* update 'cur' with this exponent. */ + expcnt = negexp ? .1 : 10; + while (exponent!=0) { + if (exponent&1) + cur*=expcnt; + exponent/=2; + expcnt=expcnt*expcnt; + } + } + st = 1; + if (!suppress) { + if (L_prefix) _SET_NUMBER_(long double); + else if (l_prefix) _SET_NUMBER_(double); + else _SET_NUMBER_(float); + } + } + break; + /* According to + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_scanf_type_field_characters.asp + * 's' reads a character string in a call to fscanf + * and 'S' a wide character string and vice versa in a + * call to fwscanf. The 'h', 'w' and 'l' prefixes override + * this behaviour. 'h' forces reading char * but 'l' and 'w' + * force reading WCHAR. */ + case 's': + if (w_prefix || l_prefix) goto widecharstring; + else if (h_prefix) goto charstring; +#ifdef WIDE_SCANF + else goto widecharstring; +#else /* WIDE_SCANF */ + else goto charstring; +#endif /* WIDE_SCANF */ + case 'S': + if (w_prefix || l_prefix) goto widecharstring; + else if (h_prefix) goto charstring; +#ifdef WIDE_SCANF + else goto charstring; +#else /* WIDE_SCANF */ + else goto widecharstring; +#endif /* WIDE_SCANF */ + charstring: { /* read a word into a char */ + char*str = suppress ? NULL : va_arg(ap, char*); + char*sptr = str; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* read until whitespace */ + while (width!=0 && (nch!=_EOF_) && !_ISSPACE_(nch)) { + if (!suppress) *sptr++ = _CHAR2SUPPORTED_(nch); + st++; + nch = _GETC_(file); + if (width>0) width--; + } + /* terminate */ + if (!suppress) *sptr = 0; + } + break; + widecharstring: { /* read a word into a wchar_t* */ + wchar_t*str = + suppress ? NULL : va_arg(ap, wchar_t*); + wchar_t*sptr = str; + /* skip initial whitespace */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + /* read until whitespace */ + while (width!=0 && (nch!=_EOF_) && !_ISSPACE_(nch)) { + if (!suppress) *sptr++ = _WIDE2SUPPORTED_(nch); + st++; + nch = _GETC_(file); + if (width>0) width--; + } + /* terminate */ + if (!suppress) *sptr = 0; + } + break; + /* 'c' and 'C work analogously to 's' and 'S' as described + * above */ + case 'c': + if (w_prefix || l_prefix) goto widecharacter; + else if (h_prefix) goto character; +#ifdef WIDE_SCANF + else goto widecharacter; +#else /* WIDE_SCANF */ + else goto character; +#endif /* WIDE_SCANF */ + case 'C': + if (w_prefix || l_prefix) goto widecharacter; + else if (h_prefix) goto character; +#ifdef WIDE_SCANF + else goto character; +#else /* WIDE_SCANF */ + else goto widecharacter; +#endif /* WIDE_SCANF */ + character: { /* read single character into char */ + if (nch!=_EOF_) { + if (!suppress) { + char*c = va_arg(ap, char*); + *c = _CHAR2SUPPORTED_(nch); + } + st = 1; + nch = _GETC_(file); + } + } + break; + widecharacter: { /* read single character into a wchar_t */ + if (nch!=_EOF_) { + if (!suppress) { + wchar_t*c = va_arg(ap, wchar_t*); + *c = _WIDE2SUPPORTED_(nch); + } + nch = _GETC_(file); + st = 1; + } + } + break; + case 'n': { + if (!suppress) { + int*n = va_arg(ap, int*); + *n = consumed - (nch!=_EOF_); + } + } + break; + case '[': { + _CHAR_ *str = suppress ? NULL : va_arg(ap, _CHAR_*); + _CHAR_ *sptr = str; + RTL_BITMAP bitMask; + ULONG *Mask; + int invert = 0; /* Set if we are NOT to find the chars */ + + /* Init our bitmap */ + Mask = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, _BITMAPSIZE_/8); + RtlInitializeBitMap(&bitMask, Mask, _BITMAPSIZE_); + + /* Read the format */ + format++; + if(*format == '^') { + invert = 1; + format++; + } + if(*format == ']') { + RtlSetBits(&bitMask, ']', 1); + format++; + } + while(*format && (*format != ']')) { + /* According to: + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_crt_scanf_width_specification.asp + * "Note that %[a-z] and %[z-a] are interpreted as equivalent to %[abcde...z]." */ + if((*format == '-') && (*(format + 1) != ']')) { + if ((*(format - 1)) < *(format + 1)) + RtlSetBits(&bitMask, *(format - 1) +1 , *(format + 1) - *(format - 1)); + else + RtlSetBits(&bitMask, *(format + 1) , *(format - 1) - *(format + 1)); + format++; + } else + RtlSetBits(&bitMask, *format, 1); + format++; + } + /* read until char is not suitable */ + while ((width != 0) && (nch != _EOF_)) { + if(!invert) { + if(RtlAreBitsSet(&bitMask, nch, 1)) { + if (!suppress) *sptr++ = _CHAR2SUPPORTED_(nch); + } else + break; + } else { + if(RtlAreBitsClear(&bitMask, nch, 1)) { + if (!suppress) *sptr++ = _CHAR2SUPPORTED_(nch); + } else + break; + } + st++; + nch = _GETC_(file); + if (width>0) width--; + } + /* terminate */ + if (!suppress) *sptr = 0; + RtlFreeHeap(RtlGetProcessHeap(), 0, Mask); + } + break; + default: + /* From spec: "if a percent sign is followed by a character + * that has no meaning as a format-control character, that + * character and the following characters are treated as + * an ordinary sequence of characters, that is, a sequence + * of characters that must match the input. For example, + * to specify that a percent-sign character is to be input, + * use %%." */ + while ((nch!=_EOF_) && _ISSPACE_(nch)) + nch = _GETC_(file); + if (nch==*format) { + suppress = 1; /* whoops no field to be read */ + st = 1; /* but we got what we expected */ + nch = _GETC_(file); + } + break; + } + if (st && !suppress) rd++; + else if (!st) break; + } + /* a non-white-space character causes scanf to read, but not store, + * a matching non-white-space character. */ + else { + /* check for character match */ + if (nch == *format) { + nch = _GETC_(file); + } else break; + } + format++; + } + if (nch!=_EOF_) { + _UNGETC_(nch, file); + } + TRACE("returning %d\n", rd); + return rd; +} + +#undef _CHAR_ +#undef _EOF_ +#undef _EOF_RET +#undef _ISSPACE_ +#undef _ISDIGIT_ +#undef _CHAR2SUPPORTED_ +#undef _WIDE2SUPPORTED_ +#undef _CHAR2DIGIT_ +#undef _GETC_ +#undef _UNGETC_ +#undef _FUNCTION_ +#undef _BITMAPSIZE_ diff --git a/reactos/lib/ntdll/stdio/sscanf.c b/reactos/lib/ntdll/stdio/sscanf.c index a28d82fa845..88b7b2affa5 100644 --- a/reactos/lib/ntdll/stdio/sscanf.c +++ b/reactos/lib/ntdll/stdio/sscanf.c @@ -1,10 +1,43 @@ /**/ -#include +#include +#include +#include -int sscanf(const char* szReadFrom, const char* szFormat, ...) +#define NDEBUG +#include + + +/* helper function for *scanf. Returns the value of character c in the + * given base, or -1 if the given character is not a digit of the base. + */ +static int char2digit(char c, int base) { + if ((c>='0') && (c<='9') && (c<='0'+base-1)) return (c-'0'); + if (base<=10) return -1; + if ((c>='A') && (c<='Z') && (c<='A'+base-11)) return (c-'A'+10); + if ((c>='a') && (c<='z') && (c<='a'+base-11)) return (c-'a'+10); + return -1; +} + +#define debugstr_a(a) (a) +#define TRACE DPRINT +#define WARN DPRINT1 + +/* vsscanf */ +#undef WIDE_SCANF +#undef CONSOLE +#define STRING 1 +#include "scanf.h" + +int sscanf(const char *str, const char *format, ...) { - return 0; + va_list valist; + int res; + + va_start(valist, format); + res = vsscanf(str, format, valist); + va_end(valist); + return res; } /*EOF */ diff --git a/reactos/lib/ntdll/stdlib/bsearch.c b/reactos/lib/ntdll/stdlib/bsearch.c index 7efbdbd9897..e1e4f11e586 100644 --- a/reactos/lib/ntdll/stdlib/bsearch.c +++ b/reactos/lib/ntdll/stdlib/bsearch.c @@ -1,5 +1,5 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include +#include /* * @implemented diff --git a/reactos/lib/ntdll/stdlib/lfind.c b/reactos/lib/ntdll/stdlib/lfind.c index 2000fecaffa..2e6e43b0f1e 100644 --- a/reactos/lib/ntdll/stdlib/lfind.c +++ b/reactos/lib/ntdll/stdlib/lfind.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include /* From d57dd016c400965ca5b266a9bb6fcf2b0b312aeb Mon Sep 17 00:00:00 2001 From: Casper Hornstrup Date: Wed, 16 Feb 2005 22:38:49 +0000 Subject: [PATCH 084/248] Support private messages svn path=/trunk/; revision=13610 --- irc/TechBot/TechBot.IRCLibrary/IrcChannel.cs | 5 +- irc/TechBot/TechBot.IRCLibrary/IrcClient.cs | 18 ++--- irc/TechBot/TechBot.IRCLibrary/IrcMessage.cs | 2 +- irc/TechBot/TechBot.IRCLibrary/IrcUser.cs | 38 ++++++++- irc/TechBot/TechBot.Library/IrcService.cs | 80 +++++++++++++++++-- irc/TechBot/TechBot.Library/MessageContext.cs | 30 ++++++- 6 files changed, 147 insertions(+), 26 deletions(-) diff --git a/irc/TechBot/TechBot.IRCLibrary/IrcChannel.cs b/irc/TechBot/TechBot.IRCLibrary/IrcChannel.cs index 2f26abbc607..0c16e59b0bd 100644 --- a/irc/TechBot/TechBot.IRCLibrary/IrcChannel.cs +++ b/irc/TechBot/TechBot.IRCLibrary/IrcChannel.cs @@ -128,7 +128,10 @@ namespace TechBot.IRCLibrary /// Text to send to the channel. public void Talk(string text) { - owner.SendMessage(new IrcMessage(IRC.PRIVMSG, String.Format("#{0} :{1}", name, text))); + owner.SendMessage(new IrcMessage(IRC.PRIVMSG, + String.Format("#{0} :{1}", + name, + text))); } } } diff --git a/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs b/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs index b5c1d4b207e..3590f57aa35 100644 --- a/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs +++ b/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs @@ -391,7 +391,8 @@ namespace TechBot.IRCLibrary IrcUser user = channel.LocateUser(nickname.Substring(1)); if (user == null) { - user = new IrcUser(nickname.Substring(1)); + user = new IrcUser(this, + nickname.Substring(1)); channel.Users.Add(user); } for (int i = 4; i < parameters.Length; i++) @@ -400,7 +401,8 @@ namespace TechBot.IRCLibrary user = channel.LocateUser(nickname); if (user == null) { - user = new IrcUser(nickname); + user = new IrcUser(this, + nickname); channel.Users.Add(user); } } @@ -509,7 +511,7 @@ namespace TechBot.IRCLibrary { throw new NotConnectedException(); } - + /* Serialize sending messages */ lock (typeof(IrcClient)) { @@ -545,16 +547,6 @@ namespace TechBot.IRCLibrary /// Text to send to the channel. public void TalkTo(string nickname, string text) { - if (nickname == null) - { - throw new ArgumentNullException("nickname", "Nickname cannot be null."); - } - if (text == null) - { - throw new ArgumentNullException("text", "Text cannot be null."); - } - - SendMessage(new IrcMessage(IRC.PRIVMSG, String.Format("{0} :{1}", nickname, text))); } /// diff --git a/irc/TechBot/TechBot.IRCLibrary/IrcMessage.cs b/irc/TechBot/TechBot.IRCLibrary/IrcMessage.cs index bab64de3216..14e62fd8fa4 100644 --- a/irc/TechBot/TechBot.IRCLibrary/IrcMessage.cs +++ b/irc/TechBot/TechBot.IRCLibrary/IrcMessage.cs @@ -428,7 +428,7 @@ namespace TechBot.IRCLibrary } private const string IrcSpecial = @"-[]\`^{}"; - private const string IrcSpecialNonSpecs = @"_"; + private const string IrcSpecialNonSpecs = @"_|"; /// /// Returns wether a character is an IRC special character. diff --git a/irc/TechBot/TechBot.IRCLibrary/IrcUser.cs b/irc/TechBot/TechBot.IRCLibrary/IrcUser.cs index 901d74c92b7..30f0a94db40 100644 --- a/irc/TechBot/TechBot.IRCLibrary/IrcUser.cs +++ b/irc/TechBot/TechBot.IRCLibrary/IrcUser.cs @@ -9,6 +9,7 @@ namespace TechBot.IRCLibrary { #region Private fields + private IrcClient owner; private string nickname; private string decoratedNickname; @@ -16,6 +17,17 @@ namespace TechBot.IRCLibrary #region Public properties + /// + /// Owner of this channel. + /// + public IrcClient Owner + { + get + { + return owner; + } + } + /// /// Nickname of user. /// @@ -65,13 +77,37 @@ namespace TechBot.IRCLibrary /// /// Constructor. /// + /// Owner of this channel. /// Nickname (possibly decorated) of user. - public IrcUser(string nickname) + public IrcUser(IrcClient owner, + string nickname) { + if (owner == null) + { + throw new ArgumentNullException("owner", "Owner cannot be null."); + } + this.owner = owner; this.decoratedNickname = nickname.Trim(); this.nickname = StripDecoration(decoratedNickname); } + /// + /// Talk to the user. + /// + /// Text to send to the user. + public void Talk(string text) + { + if (text == null) + { + throw new ArgumentNullException("text", "Text cannot be null."); + } + + owner.SendMessage(new IrcMessage(IRC.PRIVMSG, + String.Format("{0} :{1}", + nickname, + text))); + } + /// /// Strip docoration of nickname. /// diff --git a/irc/TechBot/TechBot.Library/IrcService.cs b/irc/TechBot/TechBot.Library/IrcService.cs index efb9d60b01c..374c4754ff0 100644 --- a/irc/TechBot/TechBot.Library/IrcService.cs +++ b/irc/TechBot/TechBot.Library/IrcService.cs @@ -104,13 +104,44 @@ namespace TechBot.Library } } + private string GetMessageSource(MessageContext context) + { + if (context is ChannelMessageContext) + { + ChannelMessageContext channelContext = context as ChannelMessageContext; + return String.Format("#{0}", + channelContext.Channel.Name); + } + else if (context is UserMessageContext) + { + UserMessageContext userContext = context as UserMessageContext; + return userContext.User.Nickname; + } + else + { + throw new InvalidOperationException(String.Format("Unhandled message context '{0}'", + context.GetType())); + } + } + public void WriteLine(MessageContext context, string message) { - Console.WriteLine(String.Format("Sending: {0} to #{1}", - message, - context.Channel != null ? context.Channel.Name : "(null)")); - context.Channel.Talk(message); + if (context is ChannelMessageContext) + { + ChannelMessageContext channelContext = context as ChannelMessageContext; + channelContext.Channel.Talk(message); + } + else if (context is UserMessageContext) + { + UserMessageContext userContext = context as UserMessageContext; + userContext.User.Talk(message); + } + else + { + throw new InvalidOperationException(String.Format("Unhandled message context '{0}'", + context.GetType())); + } } private void ExtractMessage(string parameters, @@ -139,7 +170,26 @@ namespace TechBot.Library int index = message.Parameters.IndexOf(' '); if (index == -1) index = message.Parameters.Length; - channelName = message.Parameters.Substring(1, index - 1); + else + index = index - 1; + channelName = message.Parameters.Substring(1, index); + return true; + } + + private bool GetTargetNickname(IrcMessage message, + out string nickname) + { + if (message.Parameters == null) + { + nickname = null; + return false; + } + + int index = message.Parameters.IndexOf(' '); + if (index == -1) + index = message.Parameters.Length; + nickname = message.Parameters.Substring(0, index); + Console.WriteLine("nickname: " + nickname); return true; } @@ -149,6 +199,7 @@ namespace TechBot.Library if (message.Command.ToUpper().Equals("PRIVMSG")) { string channelName; + string nickname; if (GetChannelName(message, out channelName)) { @@ -156,11 +207,24 @@ namespace TechBot.Library { if (String.Compare(channel.Name, channelName, true) == 0) { - context = new MessageContext(channel); + context = new ChannelMessageContext(channel); return true; } } } + else if (GetTargetNickname(message, + out nickname)) + { + IrcUser targetUser = new IrcUser(client, + nickname); + if (String.Compare(targetUser.Nickname, botname, true) == 0) + { + IrcUser sourceUser = new IrcUser(client, + message.PrefixNickname); + context = new UserMessageContext(sourceUser); + return true; + } + } } context = null; return false; @@ -180,9 +244,9 @@ namespace TechBot.Library if (ShouldAcceptMessage(message, out context)) { - Console.WriteLine(String.Format("Injecting: {0} from #{1}", + Console.WriteLine(String.Format("Injecting: {0} from {1}", injectMessage, - context.Channel.Name)); + GetMessageSource(context))); service.InjectMessage(context, injectMessage); } diff --git a/irc/TechBot/TechBot.Library/MessageContext.cs b/irc/TechBot/TechBot.Library/MessageContext.cs index dca3925fdad..8d1728a25c1 100644 --- a/irc/TechBot/TechBot.Library/MessageContext.cs +++ b/irc/TechBot/TechBot.Library/MessageContext.cs @@ -3,7 +3,13 @@ using TechBot.IRCLibrary; namespace TechBot.Library { - public class MessageContext + public abstract class MessageContext + { + } + + + + public class ChannelMessageContext : MessageContext { private IrcChannel channel; @@ -15,9 +21,29 @@ namespace TechBot.Library } } - public MessageContext(IrcChannel channel) + public ChannelMessageContext(IrcChannel channel) { this.channel = channel; } } + + + + public class UserMessageContext : MessageContext + { + private IrcUser user; + + public IrcUser User + { + get + { + return user; + } + } + + public UserMessageContext(IrcUser user) + { + this.user = user; + } + } } From 8bab7189cbedf641582d4b7a4da70587ece325fa Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Wed, 16 Feb 2005 23:08:04 +0000 Subject: [PATCH 085/248] hack into private crt headers svn path=/trunk/; revision=13611 --- reactos/lib/crtdll/dllmain.c | 7 ++++--- reactos/lib/crtdll/makefile | 2 +- reactos/lib/msvcrt/Makefile | 2 +- reactos/lib/msvcrt/dllmain.c | 7 ++++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/reactos/lib/crtdll/dllmain.c b/reactos/lib/crtdll/dllmain.c index 0b38ee09de4..c07ee2d3b43 100644 --- a/reactos/lib/crtdll/dllmain.c +++ b/reactos/lib/crtdll/dllmain.c @@ -21,13 +21,14 @@ */ #include "precomp.h" -#include +#include +#include #include -#include +#include #include #define NDEBUG -#include +#include /* EXTERNAL PROTOTYPES ********************************************************/ diff --git a/reactos/lib/crtdll/makefile b/reactos/lib/crtdll/makefile index 1145c2aba1a..010fd94b413 100644 --- a/reactos/lib/crtdll/makefile +++ b/reactos/lib/crtdll/makefile @@ -21,7 +21,7 @@ TARGET_SDKLIBS = crt.a string.a kernel32.a ntdll.a wine.a TARGET_GCCLIBS = gcc -TARGET_CFLAGS = -D__USE_W32API -Wall -Werror +TARGET_CFLAGS = -D__USE_W32API -Wall -Werror -I../crt/include # require os code to explicitly request A/W version of structs/functions TARGET_CFLAGS += \ diff --git a/reactos/lib/msvcrt/Makefile b/reactos/lib/msvcrt/Makefile index 86fed1639d3..89bc127525e 100644 --- a/reactos/lib/msvcrt/Makefile +++ b/reactos/lib/msvcrt/Makefile @@ -21,7 +21,7 @@ TARGET_SDKLIBS = crt.a string.a kernel32.a ntdll.a wine.a TARGET_GCCLIBS = gcc -TARGET_CFLAGS = -D__USE_W32API -D_MSVCRT_LIB_ -Wall -Werror +TARGET_CFLAGS = -D__USE_W32API -D_MSVCRT_LIB_ -Wall -Werror -I../crt/include # require os code to explicitly request A/W version of structs/functions TARGET_CFLAGS += \ diff --git a/reactos/lib/msvcrt/dllmain.c b/reactos/lib/msvcrt/dllmain.c index 5c32a1fdbc4..7c3c1c551ea 100644 --- a/reactos/lib/msvcrt/dllmain.c +++ b/reactos/lib/msvcrt/dllmain.c @@ -21,12 +21,13 @@ */ #include "precomp.h" -#include +#include +#include #include -#include +#include #define NDEBUG -#include +#include /* EXTERNAL PROTOTYPES ********************************************************/ From a1c0271111f54e9c38d80a5b1d1bb4a34a705af9 Mon Sep 17 00:00:00 2001 From: Casper Hornstrup Date: Wed, 16 Feb 2005 23:17:17 +0000 Subject: [PATCH 086/248] Interpret numeric values as being hexadecimal values if they contain hex digits a-f svn path=/trunk/; revision=13612 --- irc/TechBot/TechBot.Library/NumberParser.cs | 32 ++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/irc/TechBot/TechBot.Library/NumberParser.cs b/irc/TechBot/TechBot.Library/NumberParser.cs index 9d4eab5c7e7..15521ede73b 100644 --- a/irc/TechBot/TechBot.Library/NumberParser.cs +++ b/irc/TechBot/TechBot.Library/NumberParser.cs @@ -7,13 +7,43 @@ namespace TechBot.Library { public bool Error = false; + private const string SpecialHexCharacters = "ABCDEF"; + + private bool IsSpecialHexCharacter(char ch) + { + foreach (char specialChar in SpecialHexCharacters) + { + if (ch.ToString().ToUpper() == specialChar.ToString()) + return true; + } + return false; + } + + private bool HasSpecialHexCharacters(string s) + { + foreach (char ch in s) + { + if (IsSpecialHexCharacter(ch)) + return true; + } + return false; + } + public long Parse(string s) { try { Error = false; + bool useHex = false; if (s.StartsWith("0x")) - return Int64.Parse(s.Substring(2), + { + s = s.Substring(2); + useHex = true; + } + if (HasSpecialHexCharacters(s)) + useHex = true; + if (useHex) + return Int64.Parse(s, NumberStyles.HexNumber); else return Int64.Parse(s); From f0d29764b0bad05afefab0c7d4af4010f5844312 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Thu, 17 Feb 2005 00:01:54 +0000 Subject: [PATCH 087/248] remove more cruft svn path=/trunk/; revision=13613 --- reactos/lib/crtdll/malloc/expand.c | 18 -- reactos/lib/crtdll/malloc/heap.c | 41 ---- reactos/lib/crtdll/quad/divdi3.c | 66 ------- reactos/lib/crtdll/quad/moddi3.c | 65 ------- reactos/lib/crtdll/quad/qdivrem.c | 281 --------------------------- reactos/lib/crtdll/quad/udivdi3.c | 52 ----- reactos/lib/crtdll/quad/umoddi3.c | 54 ----- reactos/lib/crtdll/string/lasttok.c | 12 -- reactos/lib/crtdll/string/str_old.c | 49 ----- reactos/lib/crtdll/string/strerror.c | 108 ---------- reactos/lib/crtdll/string/strtok.c | 53 ----- reactos/lib/crtdll/tchar/strdec.c | 10 - reactos/lib/crtdll/tchar/strinc.c | 9 - reactos/lib/crtdll/tchar/strncnt.c | 10 - reactos/lib/crtdll/tchar/strnextc.c | 9 - reactos/lib/crtdll/tchar/strninc.c | 10 - reactos/lib/crtdll/tchar/strspnp.c | 12 -- reactos/lib/crtdll/wchar/wcstod.c | 98 ---------- reactos/lib/crtdll/wchar/wcstok.c | 54 ----- reactos/lib/crtdll/wchar/wcstol.c | 64 ------ reactos/lib/crtdll/wchar/wcstombs.c | 10 - reactos/lib/crtdll/wchar/wlasttok.c | 12 -- reactos/lib/crtdll/wchar/wtoi.c | 26 --- 23 files changed, 1123 deletions(-) delete mode 100644 reactos/lib/crtdll/malloc/expand.c delete mode 100644 reactos/lib/crtdll/malloc/heap.c delete mode 100644 reactos/lib/crtdll/quad/divdi3.c delete mode 100644 reactos/lib/crtdll/quad/moddi3.c delete mode 100644 reactos/lib/crtdll/quad/qdivrem.c delete mode 100644 reactos/lib/crtdll/quad/udivdi3.c delete mode 100644 reactos/lib/crtdll/quad/umoddi3.c delete mode 100644 reactos/lib/crtdll/string/lasttok.c delete mode 100644 reactos/lib/crtdll/string/str_old.c delete mode 100644 reactos/lib/crtdll/string/strerror.c delete mode 100644 reactos/lib/crtdll/string/strtok.c delete mode 100644 reactos/lib/crtdll/tchar/strdec.c delete mode 100644 reactos/lib/crtdll/tchar/strinc.c delete mode 100644 reactos/lib/crtdll/tchar/strncnt.c delete mode 100644 reactos/lib/crtdll/tchar/strnextc.c delete mode 100644 reactos/lib/crtdll/tchar/strninc.c delete mode 100644 reactos/lib/crtdll/tchar/strspnp.c delete mode 100644 reactos/lib/crtdll/wchar/wcstod.c delete mode 100644 reactos/lib/crtdll/wchar/wcstok.c delete mode 100644 reactos/lib/crtdll/wchar/wcstol.c delete mode 100644 reactos/lib/crtdll/wchar/wcstombs.c delete mode 100644 reactos/lib/crtdll/wchar/wlasttok.c delete mode 100644 reactos/lib/crtdll/wchar/wtoi.c diff --git a/reactos/lib/crtdll/malloc/expand.c b/reactos/lib/crtdll/malloc/expand.c deleted file mode 100644 index eb60ed5792a..00000000000 --- a/reactos/lib/crtdll/malloc/expand.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "precomp.h" -#include - -/* - * @implemented - */ -void* _expand(void* pold, size_t size) -{ - return HeapReAlloc(GetProcessHeap(), HEAP_REALLOC_IN_PLACE_ONLY, pold, size); -} - -/* - * @implemented - */ -size_t _msize(void* pBlock) -{ - return HeapSize (GetProcessHeap(), 0, pBlock); -} diff --git a/reactos/lib/crtdll/malloc/heap.c b/reactos/lib/crtdll/malloc/heap.c deleted file mode 100644 index e55b8a1e3a9..00000000000 --- a/reactos/lib/crtdll/malloc/heap.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "precomp.h" -#include - -/* - * @implemented - */ -int _heapchk(void) -{ - if (!HeapValidate(GetProcessHeap(), 0, NULL)) - return -1; - return 0; -} - -/* - * @implemented - */ -int _heapmin(void) -{ - if (!HeapCompact(GetProcessHeap(), 0)) - return -1; - return 0; -} - -/* - * @implemented - */ -int _heapset(unsigned int unFill) -{ - if (_heapchk() == -1) - return -1; - return 0; - -} - -/* - * @implemented - */ -int _heapwalk(struct _heapinfo* entry) -{ - return 0; -} diff --git a/reactos/lib/crtdll/quad/divdi3.c b/reactos/lib/crtdll/quad/divdi3.c deleted file mode 100644 index 44e037bd199..00000000000 --- a/reactos/lib/crtdll/quad/divdi3.c +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include - -/* - * Divide two signed quads. - * ??? if -1/2 should produce -1 on this machine, this code is wrong - */ -quad_t -__divdi3(a, b) - quad_t a, b; -{ - u_quad_t ua, ub, uq; - int neg; - - if (a < 0) - ua = -(u_quad_t)a, neg = 1; - else - ua = a, neg = 0; - if (b < 0) - ub = -(u_quad_t)b, neg ^= 1; - else - ub = b; - uq = __qdivrem(ua, ub, (u_quad_t *)0); - return (neg ? -uq : uq); -} - - - diff --git a/reactos/lib/crtdll/quad/moddi3.c b/reactos/lib/crtdll/quad/moddi3.c deleted file mode 100644 index de457eb92e2..00000000000 --- a/reactos/lib/crtdll/quad/moddi3.c +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include - -/* - * Return remainder after dividing two signed quads. - * - * XXX - * If -1/2 should produce -1 on this machine, this code is wrong. - */ -quad_t -__moddi3(a, b) - quad_t a, b; -{ - u_quad_t ua, ub, ur; - int neg; - - if (a < 0) - ua = -(u_quad_t)a, neg = 1; - else - ua = a, neg = 0; - if (b < 0) - ub = -(u_quad_t)b, neg ^= 1; - else - ub = b; - (void)__qdivrem(ua, ub, &ur); - return (neg ? -ur : ur); -} \ No newline at end of file diff --git a/reactos/lib/crtdll/quad/qdivrem.c b/reactos/lib/crtdll/quad/qdivrem.c deleted file mode 100644 index 99dfd505eac..00000000000 --- a/reactos/lib/crtdll/quad/qdivrem.c +++ /dev/null @@ -1,281 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -/* - * Multiprecision divide. This algorithm is from Knuth vol. 2 (2nd ed), - * section 4.3.1, pp. 257--259. - */ - -#include - -#define B (1 << HALF_BITS) /* digit base */ - -/* Combine two `digits' to make a single two-digit number. */ -#define COMBINE(a, b) (((u_long)(a) << HALF_BITS) | (b)) - -/* select a type for digits in base B: use unsigned short if they fit */ -//#if (ULONG_MAX == 0xffffffff && USHRT_MAX >= 0xffff) -//typedef unsigned short digit; -//#else -typedef u_long digit; -//#endif - -/* - * Shift p[0]..p[len] left `sh' bits, ignoring any bits that - * `fall out' the left (there never will be any such anyway). - * We may assume len >= 0. NOTE THAT THIS WRITES len+1 DIGITS. - */ -static void -shl(register digit *p, register int len, register int sh) -{ - register int i; - - for (i = 0; i < len; i++) - p[i] = LHALF(p[i] << sh) | (p[i + 1] >> (HALF_BITS - sh)); - p[i] = LHALF(p[i] << sh); -} - -/* - * __qdivrem(u, v, rem) returns u/v and, optionally, sets *rem to u%v. - * - * We do this in base 2-sup-HALF_BITS, so that all intermediate products - * fit within u_long. As a consequence, the maximum length dividend and - * divisor are 4 `digits' in this base (they are shorter if they have - * leading zeros). - */ -u_quad_t -__qdivrem(uq, vq, arq) - u_quad_t uq, vq, *arq; -{ - union uu tmp; - digit *u, *v, *q; - register digit v1, v2; - u_long qhat, rhat, t; - int m, n, d, j, i; - digit uspace[5], vspace[5], qspace[5]; - - /* - * Take care of special cases: divide by zero, and u < v. - */ - if (vq == 0) { - /* divide by zero. */ - static volatile const unsigned int zero = 0; - - tmp.ul[H] = tmp.ul[L] = 1 / zero; - if (arq) - *arq = uq; - return (tmp.q); - } - if (uq < vq) { - if (arq) - *arq = uq; - return (0); - } - u = &uspace[0]; - v = &vspace[0]; - q = &qspace[0]; - - /* - * Break dividend and divisor into digits in base B, then - * count leading zeros to determine m and n. When done, we - * will have: - * u = (u[1]u[2]...u[m+n]) sub B - * v = (v[1]v[2]...v[n]) sub B - * v[1] != 0 - * 1 < n <= 4 (if n = 1, we use a different division algorithm) - * m >= 0 (otherwise u < v, which we already checked) - * m + n = 4 - * and thus - * m = 4 - n <= 2 - */ - tmp.uq = uq; - u[0] = 0; - u[1] = HHALF(tmp.ul[H]); - u[2] = LHALF(tmp.ul[H]); - u[3] = HHALF(tmp.ul[L]); - u[4] = LHALF(tmp.ul[L]); - tmp.uq = vq; - v[1] = HHALF(tmp.ul[H]); - v[2] = LHALF(tmp.ul[H]); - v[3] = HHALF(tmp.ul[L]); - v[4] = LHALF(tmp.ul[L]); - for (n = 4; v[1] == 0; v++) { - if (--n == 1) { - u_long rbj; /* r*B+u[j] (not root boy jim) */ - digit q1, q2, q3, q4; - - /* - * Change of plan, per exercise 16. - * r = 0; - * for j = 1..4: - * q[j] = floor((r*B + u[j]) / v), - * r = (r*B + u[j]) % v; - * We unroll this completely here. - */ - t = v[2]; /* nonzero, by definition */ - q1 = u[1] / t; - rbj = COMBINE(u[1] % t, u[2]); - q2 = rbj / t; - rbj = COMBINE(rbj % t, u[3]); - q3 = rbj / t; - rbj = COMBINE(rbj % t, u[4]); - q4 = rbj / t; - if (arq) - *arq = rbj % t; - tmp.ul[H] = COMBINE(q1, q2); - tmp.ul[L] = COMBINE(q3, q4); - return (tmp.q); - } - } - - /* - * By adjusting q once we determine m, we can guarantee that - * there is a complete four-digit quotient at &qspace[1] when - * we finally stop. - */ - for (m = 4 - n; u[1] == 0; u++) - m--; - for (i = 4 - m; --i >= 0;) - q[i] = 0; - q += 4 - m; - - /* - * Here we run Program D, translated from MIX to C and acquiring - * a few minor changes. - * - * D1: choose multiplier 1 << d to ensure v[1] >= B/2. - */ - d = 0; - for (t = v[1]; t < B / 2; t <<= 1) - d++; - if (d > 0) { - shl(&u[0], m + n, d); /* u <<= d */ - shl(&v[1], n - 1, d); /* v <<= d */ - } - /* - * D2: j = 0. - */ - j = 0; - v1 = v[1]; /* for D3 -- note that v[1..n] are constant */ - v2 = v[2]; /* for D3 */ - do { - register digit uj0, uj1, uj2; - - /* - * D3: Calculate qhat (\^q, in TeX notation). - * Let qhat = min((u[j]*B + u[j+1])/v[1], B-1), and - * let rhat = (u[j]*B + u[j+1]) mod v[1]. - * While rhat < B and v[2]*qhat > rhat*B+u[j+2], - * decrement qhat and increase rhat correspondingly. - * Note that if rhat >= B, v[2]*qhat < rhat*B. - */ - uj0 = u[j + 0]; /* for D3 only -- note that u[j+...] change */ - uj1 = u[j + 1]; /* for D3 only */ - uj2 = u[j + 2]; /* for D3 only */ - if (uj0 == v1) { - qhat = B; - rhat = uj1; - goto qhat_too_big; - } else { - u_long n = COMBINE(uj0, uj1); - qhat = n / v1; - rhat = n % v1; - } - while (v2 * qhat > COMBINE(rhat, uj2)) { - qhat_too_big: - qhat--; - if ((rhat += v1) >= B) - break; - } - /* - * D4: Multiply and subtract. - * The variable `t' holds any borrows across the loop. - * We split this up so that we do not require v[0] = 0, - * and to eliminate a final special case. - */ - for (t = 0, i = n; i > 0; i--) { - t = u[i + j] - v[i] * qhat - t; - u[i + j] = LHALF(t); - t = (B - HHALF(t)) & (B - 1); - } - t = u[j] - t; - u[j] = LHALF(t); - /* - * D5: test remainder. - * There is a borrow if and only if HHALF(t) is nonzero; - * in that (rare) case, qhat was too large (by exactly 1). - * Fix it by adding v[1..n] to u[j..j+n]. - */ - if (HHALF(t)) { - qhat--; - for (t = 0, i = n; i > 0; i--) { /* D6: add back. */ - t += u[i + j] + v[i]; - u[i + j] = LHALF(t); - t = HHALF(t); - } - u[j] = LHALF(u[j] + t); - } - q[j] = qhat; - } while (++j <= m); /* D7: loop on j. */ - - /* - * If caller wants the remainder, we have to calculate it as - * u[m..m+n] >> d (this is at most n digits and thus fits in - * u[m+1..m+n], but we may need more source digits). - */ - if (arq) { - if (d) { - for (i = m + n; i > m; --i) - u[i] = (u[i] >> d) | - LHALF(u[i - 1] << (HALF_BITS - d)); - u[i] = 0; - } - tmp.ul[H] = COMBINE(uspace[1], uspace[2]); - tmp.ul[L] = COMBINE(uspace[3], uspace[4]); - *arq = tmp.q; - } - - tmp.ul[H] = COMBINE(qspace[1], qspace[2]); - tmp.ul[L] = COMBINE(qspace[3], qspace[4]); - return (tmp.q); -} - - - - diff --git a/reactos/lib/crtdll/quad/udivdi3.c b/reactos/lib/crtdll/quad/udivdi3.c deleted file mode 100644 index fddc16f44e6..00000000000 --- a/reactos/lib/crtdll/quad/udivdi3.c +++ /dev/null @@ -1,52 +0,0 @@ - -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include - -/* - * Divide two unsigned quads. - */ -u_quad_t -__udivdi3(a, b) - u_quad_t a, b; -{ - - return (__qdivrem(a, b, (u_quad_t *)0)); -} diff --git a/reactos/lib/crtdll/quad/umoddi3.c b/reactos/lib/crtdll/quad/umoddi3.c deleted file mode 100644 index cc007dde7ab..00000000000 --- a/reactos/lib/crtdll/quad/umoddi3.c +++ /dev/null @@ -1,54 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include - -/* - * Return remainder after dividing two unsigned quads. - */ -u_quad_t -__umoddi3(a, b) - u_quad_t a, b; -{ - u_quad_t r; - - (void)__qdivrem(a, b, &r); - return (r); -} - diff --git a/reactos/lib/crtdll/string/lasttok.c b/reactos/lib/crtdll/string/lasttok.c deleted file mode 100644 index 144f283c13d..00000000000 --- a/reactos/lib/crtdll/string/lasttok.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -/* - * This is a CRTDLL internal function to return the lasttoken - * bit of data used by strtok. The reason for it's existence is - * so that CRTDLL can use MSVCRT's implementation of strtok. - */ -char** _lasttoken() -{ - static char *lasttoken = NULL; - return &lasttoken; -} diff --git a/reactos/lib/crtdll/string/str_old.c b/reactos/lib/crtdll/string/str_old.c deleted file mode 100644 index 6b0a1e8ba5e..00000000000 --- a/reactos/lib/crtdll/string/str_old.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * string_old.c - * - * Oldnames from ANSI header string.h - * - * Some wrapper functions for those old name functions whose appropriate - * equivalents are not simply underscore prefixed. - * - * Contributors: - * Created by Colin Peters - * - * 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 WARRENTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAMED. This includes but is not limited to warrenties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * $Revision: 1.4 $ - * $Author$ - * $Date$ - * - */ - -#include -#include - -int -strcasecmp (const char* sz1, const char* sz2) -{ - return _stricmp (sz1, sz2); -} - -int -strncasecmp (const char* sz1, const char* sz2, size_t sizeMaxCompare) -{ - return _strnicmp (sz1, sz2, sizeMaxCompare); -} - -int -wcscmpi (const wchar_t* ws1, const wchar_t* ws2) -{ - //return wcsicmp (ws1, ws2); - return 0; -} - diff --git a/reactos/lib/crtdll/string/strerror.c b/reactos/lib/crtdll/string/strerror.c deleted file mode 100644 index 30830f7295b..00000000000 --- a/reactos/lib/crtdll/string/strerror.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include -#include -#include -#include - - -char __syserr00[] = "No Error"; -char __syserr01[] = "Input to function out of range (EDOM)"; -char __syserr02[] = "Output of function out of range (ERANGE)"; -char __syserr03[] = "Argument list too long (E2BIG)"; -char __syserr04[] = "Permission denied (EACCES)"; -char __syserr05[] = "Resource temporarily unavailable (EAGAIN)"; -char __syserr06[] = "Bad file descriptor (EBADF)"; -char __syserr07[] = "Resource busy (EBUSY)"; -char __syserr08[] = "No child processes (ECHILD)"; -char __syserr09[] = "Resource deadlock avoided (EDEADLK)"; -char __syserr10[] = "File exists (EEXIST)"; -char __syserr11[] = "Bad address (EFAULT)"; -char __syserr12[] = "File too large (EFBIG)"; -char __syserr13[] = "Interrupted system call (EINTR)"; -char __syserr14[] = "Invalid argument (EINVAL)"; -char __syserr15[] = "Input or output error (EIO)"; -char __syserr16[] = "Is a directory (EISDIR)"; -char __syserr17[] = "Too many open files (EMFILE)"; -char __syserr18[] = "Too many links (EMLINK)"; -char __syserr19[] = "File name too long (ENAMETOOLONG)"; -char __syserr20[] = "Too many open files in system (ENFILE)"; -char __syserr21[] = "No such device (ENODEV)"; -char __syserr22[] = "No such file or directory (ENOENT)"; -char __syserr23[] = "Unable to execute file (ENOEXEC)"; -char __syserr24[] = "No locks available (ENOLCK)"; -char __syserr25[] = "Not enough memory (ENOMEM)"; -char __syserr26[] = "No space left on drive (ENOSPC)"; -char __syserr27[] = "Function not implemented (ENOSYS)"; -char __syserr28[] = "Not a directory (ENOTDIR)"; -char __syserr29[] = "Directory not empty (ENOTEMPTY)"; -char __syserr30[] = "Inappropriate I/O control operation (ENOTTY)"; -char __syserr31[] = "No such device or address (ENXIO)"; -char __syserr32[] = "Operation not permitted (EPERM)"; -char __syserr33[] = "Broken pipe (EPIPE)"; -char __syserr34[] = "Read-only file system (EROFS)"; -char __syserr35[] = "Invalid seek (ESPIPE)"; -char __syserr36[] = "No such process (ESRCH)"; -char __syserr37[] = "Improper link (EXDEV)"; -char __syserr38[] = "No more files (ENMFILE)"; - -const char *_sys_errlist[] = { -__syserr00, __syserr01, __syserr02, __syserr03, __syserr04, -__syserr05, __syserr06, __syserr07, __syserr08, __syserr09, -__syserr10, __syserr11, __syserr12, __syserr13, __syserr14, -__syserr15, __syserr16, __syserr17, __syserr18, __syserr19, -__syserr20, __syserr21, __syserr22, __syserr23, __syserr24, -__syserr25, __syserr26, __syserr27, __syserr28, __syserr29, -__syserr30, __syserr31, __syserr32, __syserr33, __syserr34, -__syserr35, __syserr36, __syserr37, __syserr38 -}; - -int __sys_nerr = sizeof(_sys_errlist) / sizeof(_sys_errlist[0]); - -int* _sys_nerr_dll = &__sys_nerr; - -/* - * @implemented - * - */ -char *strerror(int errnum) -{ - static char ebuf[40]; /* 64-bit number + slop */ - char *cp; - int v=1000000, lz=0; - - if (errnum >= 0 && errnum < __sys_nerr) - return((char *)_sys_errlist[errnum]); - - strcpy(ebuf, "Unknown error: "); - cp = ebuf + 15; - if (errnum < 0) - { - *cp++ = '-'; - errnum = -errnum; - } - while (v) - { - int d = errnum / v; - if (d || lz || (v == 1)) - { - *cp++ = d+'0'; - lz = 1; - } - errnum %= v; - v /= 10; - } - - return ebuf; -} - -/* - * @implemented - * - */ -char *_strerror(const char *s) -{ - if ( s == NULL ) - return strerror(errno); - - return strerror(atoi(s)); -} diff --git a/reactos/lib/crtdll/string/strtok.c b/reactos/lib/crtdll/string/strtok.c deleted file mode 100644 index ee4d192fffc..00000000000 --- a/reactos/lib/crtdll/string/strtok.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -/* - * @implemented - */ -char* strtok(char *s, const char *delim) -{ - const char *spanp; - int c, sc; - char *tok; - static char *last; - - - if (s == NULL && (s = last) == NULL) - return (NULL); - - /* - * Skip (span) leading delimiters (s += strspn(s, delim), sort of). - */ - cont: - c = *s++; - for (spanp = delim; (sc = *spanp++) != 0;) { - if (c == sc) - goto cont; - } - - if (c == 0) { /* no non-delimiter characters */ - last = NULL; - return (NULL); - } - tok = s - 1; - - /* - * Scan token (scan for delimiters: s += strcspn(s, delim), sort of). - * Note that delim must have one NUL; we stop if we see that, too. - */ - for (;;) { - c = *s++; - spanp = delim; - do { - if ((sc = *spanp++) == c) { - if (c == 0) - s = NULL; - else - s[-1] = 0; - last = s; - return (tok); - } - } while (sc != 0); - } - /* NOTREACHED */ -} diff --git a/reactos/lib/crtdll/tchar/strdec.c b/reactos/lib/crtdll/tchar/strdec.c deleted file mode 100644 index c2b2a90ca9f..00000000000 --- a/reactos/lib/crtdll/tchar/strdec.c +++ /dev/null @@ -1,10 +0,0 @@ -#include - -/* - * @implemented - */ -char * _strdec(const char *str1, const char *str2) -{ - return (char *) (( str1 >= str2 ) ? ( str1 ) : --str2); -} - diff --git a/reactos/lib/crtdll/tchar/strinc.c b/reactos/lib/crtdll/tchar/strinc.c deleted file mode 100644 index 91b48825a2b..00000000000 --- a/reactos/lib/crtdll/tchar/strinc.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -/* - * @implemented - */ -char * _strinc(const char *str) -{ - return (char *)(++str); -} diff --git a/reactos/lib/crtdll/tchar/strncnt.c b/reactos/lib/crtdll/tchar/strncnt.c deleted file mode 100644 index bbcd1def1cb..00000000000 --- a/reactos/lib/crtdll/tchar/strncnt.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -/* - * @implemented - */ -size_t _strncnt( const char *str, size_t max) -{ - return strnlen(str,max); -} diff --git a/reactos/lib/crtdll/tchar/strnextc.c b/reactos/lib/crtdll/tchar/strnextc.c deleted file mode 100644 index b5bcd5eed64..00000000000 --- a/reactos/lib/crtdll/tchar/strnextc.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -/* - * @implemented - */ -int _strnextc(const char *str) -{ - return *(++str); -} diff --git a/reactos/lib/crtdll/tchar/strninc.c b/reactos/lib/crtdll/tchar/strninc.c deleted file mode 100644 index ccb77cc6006..00000000000 --- a/reactos/lib/crtdll/tchar/strninc.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -/* - * @implemented - */ -char * _strninc(const char *str, size_t inc) -{ - return (char *)(str + inc); -} diff --git a/reactos/lib/crtdll/tchar/strspnp.c b/reactos/lib/crtdll/tchar/strspnp.c deleted file mode 100644 index b12844ebc73..00000000000 --- a/reactos/lib/crtdll/tchar/strspnp.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - - -/* - * @implemented - */ -char * _strspnp( const char * str1, const char * str2) -{ - return NULL; -} - diff --git a/reactos/lib/crtdll/wchar/wcstod.c b/reactos/lib/crtdll/wchar/wcstod.c deleted file mode 100644 index 360003eeec5..00000000000 --- a/reactos/lib/crtdll/wchar/wcstod.c +++ /dev/null @@ -1,98 +0,0 @@ -/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - - -/* - * @implemented - */ -double wcstod(const wchar_t* s, wchar_t** sret) -{ - long double r; /* result */ - int e; /* exponent */ - long double d; /* scale */ - int sign; /* +- 1.0 */ - int esign; - int i; - int flags=0; - - r = 0.0; - sign = 1; - e = 0; - esign = 1; - - while ((*s == L' ') || (*s == L'\t')) - s++; - - if (*s == L'+') - s++; - else if (*s == L'-') - { - sign = -1; - s++; - } - - while ((*s >= L'0') && (*s <= L'9')) - { - flags |= 1; - r *= 10.0; - r += *s - L'0'; - s++; - } - - if (*s == L'.') - { - d = 0.1L; - s++; - while ((*s >= L'0') && (*s <= L'9')) - { - flags |= 2; - r += d * (*s - L'0'); - s++; - d *= 0.1L; - } - } - - if (flags == 0) - { - if (sret) - *sret = (wchar_t *)s; - return 0; - } - - if ((*s == L'e') || (*s == L'E')) - { - s++; - if (*s == L'+') - s++; - else if (*s == L'-') - { - s++; - esign = -1; - } - if ((*s < L'0') || (*s > L'9')) - { - if (sret) - *sret = (wchar_t *)s; - return r; - } - - while ((*s >= L'0') && (*s <= L'9')) - { - e *= 10; - e += *s - L'0'; - s++; - } - } - - if (esign < 0) - for (i = 1; i <= e; i++) - r *= 0.1L; - else - for (i = 1; i <= e; i++) - r *= 10.0; - - if (sret) - *sret = (wchar_t *)s; - return r * sign; -} diff --git a/reactos/lib/crtdll/wchar/wcstok.c b/reactos/lib/crtdll/wchar/wcstok.c deleted file mode 100644 index a495e431d64..00000000000 --- a/reactos/lib/crtdll/wchar/wcstok.c +++ /dev/null @@ -1,54 +0,0 @@ -#include - -/* - * @implemented - */ -wchar_t *wcstok(wchar_t *s, const wchar_t *ct) -{ - const wchar_t *spanp; - int c, sc; - wchar_t *tok; - static wchar_t *last; - - if (s == NULL && (s = last) == NULL) - return (NULL); - - /* - * Skip (span) leading ctiters (s += strspn(s, ct), sort of). - */ - cont: - c = *s; - s++; - for (spanp = ct; (sc = *spanp) != 0;spanp++) { - if (c == sc) - goto cont; - } - - if (c == 0) { /* no non-ctiter characters */ - last = NULL; - return (NULL); - } - tok = s - 2; - - /* - * Scan token (scan for ctiters: s += strcspn(s, ct), sort of). - * Note that ct must have one NUL; we stop if we see that, too. - */ - for (;;) { - c = *s; - s+=2; - spanp = ct; - do { - if ((sc = *spanp) == c) { - if (c == 0) - s = NULL; - else - s[-1] = 0; - last = s; - return (tok); - } - spanp+=2; - } while (sc != 0); - } - /* NOTREACHED */ -} diff --git a/reactos/lib/crtdll/wchar/wcstol.c b/reactos/lib/crtdll/wchar/wcstol.c deleted file mode 100644 index d1a0b69c168..00000000000 --- a/reactos/lib/crtdll/wchar/wcstol.c +++ /dev/null @@ -1,64 +0,0 @@ -#include - - -/* - * @implemented - */ -long wcstol(const wchar_t* cp, wchar_t** endp, int base) -{ - long result = 0, value; - int sign = 1; - - if (*cp == L'-') { - sign = -1; - cp++; - } - - if (!base) { - base = 10; - if (*cp == L'0') { - base = 8; - cp++; - if ((*cp == L'x') && iswxdigit(cp[1])) { - cp++; - base = 16; - } - } - } - while (iswxdigit(*cp) && (value = iswdigit(*cp) ? *cp-L'0' : (iswlower(*cp) - ? towupper(*cp) : *cp)-L'A'+10) < base) { - result = result*base + value; - cp++; - } - if (endp) - *endp = (wchar_t*)cp; - return result * sign; -} - -/* - * @implemented - */ -unsigned long wcstoul(const wchar_t* cp, wchar_t** endp, int base) -{ - unsigned long result = 0, value; - - if (!base) { - base = 10; - if (*cp == L'0') { - base = 8; - cp++; - if ((*cp == L'x') && iswxdigit(cp[1])) { - cp++; - base = 16; - } - } - } - while (iswxdigit(*cp) && (value = iswdigit(*cp) ? *cp-L'0' : (iswlower(*cp) - ? towupper(*cp) : *cp)-L'A'+10) < base) { - result = result*base + value; - cp++; - } - if (endp) - *endp = (wchar_t*)cp; - return result; -} diff --git a/reactos/lib/crtdll/wchar/wcstombs.c b/reactos/lib/crtdll/wchar/wcstombs.c deleted file mode 100644 index 0cd1ba6e15c..00000000000 --- a/reactos/lib/crtdll/wchar/wcstombs.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -/* - * @unimplemented - */ -size_t wcstombs( char *dst, const wchar_t *src, size_t len ) -{ - return 0; -} diff --git a/reactos/lib/crtdll/wchar/wlasttok.c b/reactos/lib/crtdll/wchar/wlasttok.c deleted file mode 100644 index 13658529db8..00000000000 --- a/reactos/lib/crtdll/wchar/wlasttok.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -/* - * This is a CRTDLL internal function to return the lasttoken - * bit of data used by wcstok. The reason for it's existence is - * so that CRTDLL can use MSVCRT's implementation of wcstok. - */ -wchar_t** _wlasttoken() -{ - static wchar_t *wlasttoken = NULL; - return &wlasttoken; -} diff --git a/reactos/lib/crtdll/wchar/wtoi.c b/reactos/lib/crtdll/wchar/wtoi.c deleted file mode 100644 index 40eadcbaaac..00000000000 --- a/reactos/lib/crtdll/wchar/wtoi.c +++ /dev/null @@ -1,26 +0,0 @@ -#include - - -/* - * @implemented - * - * this function is now forwarded to NTDLL._wtoi to reduce code duplication - */ -#if 0 -int _wtoi(const wchar_t* str) -{ - return (int)wcstol(str, 0, 10); -} -#endif - -/* - * @implemented - * - * this function is now forwarded to NTDLL._wtol to reduce code duplication - */ -#if 0 -long _wtol(const wchar_t* str) -{ - return (int)wcstol(str, 0, 10); -} -#endif From 2374843a9d6228bc09f514797cd84b5dda466a2b Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Thu, 17 Feb 2005 10:44:57 +0000 Subject: [PATCH 088/248] fix typo svn path=/trunk/; revision=13614 --- reactos/lib/crt/stdio/wtmpnam.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/lib/crt/stdio/wtmpnam.c b/reactos/lib/crt/stdio/wtmpnam.c index dca653f8e0e..be2782c301a 100644 --- a/reactos/lib/crt/stdio/wtmpnam.c +++ b/reactos/lib/crt/stdio/wtmpnam.c @@ -2,4 +2,4 @@ #define _UNICODE #define UNICODE -#import "tmpnam.c" +#include "tmpnam.c" From f7a525a34bf1e09be0b224a1118843b699fa52d4 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Thu, 17 Feb 2005 11:38:16 +0000 Subject: [PATCH 089/248] add workarounds for mingw runtime version differences gave directory routines a good cleanup (based on wine) more tcharizing of routines svn path=/trunk/; revision=13615 --- reactos/lib/crt/direct/chdir.c | 7 +- reactos/lib/crt/direct/chdrive.c | 47 ++++++------ reactos/lib/crt/direct/getcwd.c | 42 ++++++----- reactos/lib/crt/direct/getdcwd.c | 71 ++++++++++++++----- reactos/lib/crt/direct/getdrive.c | 41 ++++++----- reactos/lib/crt/direct/mkdir.c | 6 +- reactos/lib/crt/direct/rmdir.c | 6 +- reactos/lib/crt/direct/wchdir.c | 19 ++--- reactos/lib/crt/direct/wgetcwd.c | 29 +------- reactos/lib/crt/direct/wgetdcwd.c | 33 +-------- reactos/lib/crt/direct/wmkdir.c | 18 +---- reactos/lib/crt/direct/wrmdir.c | 18 +---- reactos/lib/crt/float/fpclass.c | 5 ++ .../include/internal/{msvcrtdbg.h => debug.h} | 0 reactos/lib/crt/include/internal/file.h | 4 ++ reactos/lib/crt/io/access.c | 2 +- reactos/lib/crt/io/chmod.c | 2 +- reactos/lib/crt/io/chsize.c | 2 +- reactos/lib/crt/io/close.c | 2 +- reactos/lib/crt/io/create.c | 2 +- reactos/lib/crt/io/find.c | 12 +++- reactos/lib/crt/io/isatty.c | 2 +- reactos/lib/crt/io/mktemp.c | 2 +- reactos/lib/crt/io/open.c | 2 +- reactos/lib/crt/io/pipe.c | 2 +- reactos/lib/crt/io/read.c | 2 +- reactos/lib/crt/io/setmode.c | 2 +- reactos/lib/crt/io/unlink.c | 2 +- reactos/lib/crt/io/wcreate.c | 2 +- reactos/lib/crt/io/wmktemp.c | 2 +- reactos/lib/crt/io/wopen.c | 2 +- reactos/lib/crt/io/write.c | 2 +- reactos/lib/crt/io/wunlink.c | 2 +- reactos/lib/crt/locale/locale.c | 2 +- reactos/lib/crt/misc/crtmain.c | 2 +- reactos/lib/crt/misc/environ.c | 2 +- reactos/lib/crt/misc/lock.c | 2 +- reactos/lib/crt/misc/stubs.c | 2 +- reactos/lib/crt/process/process.c | 2 +- reactos/lib/crt/signal/signal.c | 2 +- reactos/lib/crt/stdio/fwrite.c | 2 +- reactos/lib/crt/stdio/popen.c | 2 +- reactos/lib/crt/stdio/remove.c | 2 +- reactos/lib/crt/stdlib/getenv.c | 2 +- reactos/lib/crt/stdlib/putenv.c | 2 +- reactos/lib/crt/stdlib/senv.c | 2 +- reactos/lib/crt/stdlib/wputenv.c | 2 +- reactos/lib/crt/wine/scanf.c | 3 +- 48 files changed, 204 insertions(+), 219 deletions(-) rename reactos/lib/crt/include/internal/{msvcrtdbg.h => debug.h} (100%) diff --git a/reactos/lib/crt/direct/chdir.c b/reactos/lib/crt/direct/chdir.c index a2d412a8e92..6951d15a151 100644 --- a/reactos/lib/crt/direct/chdir.c +++ b/reactos/lib/crt/direct/chdir.c @@ -2,14 +2,15 @@ #include #include #include +#include /* * @implemented */ -int _chdir(const char* _path) +int _tchdir(const _TCHAR* _path) { - if (!SetCurrentDirectoryA((char*)_path)) { - _dosmaperr(GetLastError()); + if (!SetCurrentDirectory(_path)) { + _dosmaperr(_path?GetLastError():0); return -1; } return 0; diff --git a/reactos/lib/crt/direct/chdrive.c b/reactos/lib/crt/direct/chdrive.c index b65f5218d3e..9f53d40e0f2 100644 --- a/reactos/lib/crt/direct/chdrive.c +++ b/reactos/lib/crt/direct/chdrive.c @@ -6,29 +6,36 @@ #include -int cur_drive = 0; - - /* - * @implemented + * @implemented + * + * _chdrive (MSVCRT.@) + * + * Change the current drive. + * + * PARAMS + * newdrive [I] Drive number to change to (1 = 'A', 2 = 'B', ...) + * + * RETURNS + * Success: 0. The current drive is set to newdrive. + * Failure: -1. errno indicates the error. + * + * NOTES + * See SetCurrentDirectoryA. */ -int _chdrive(int drive) +int _chdrive(int newdrive) { - char d[3]; + WCHAR buffer[] = L"A:"; - if (!( drive >= 1 && drive <= 26)) { - __set_errno(EINVAL); - return -1; - } - if (cur_drive != drive) { - cur_drive = drive; - d[0] = toupper(cur_drive + '@'); - d[1] = ':'; - d[2] = 0; - if (!SetCurrentDirectoryA(d)) { - _dosmaperr(GetLastError()); - return -1; - } + buffer[0] += newdrive - 1; + if (!SetCurrentDirectoryW( buffer )) + { + _dosmaperr(GetLastError()); + if (newdrive <= 0) + { + __set_errno(EACCES); } - return 0; + return -1; + } + return 0; } diff --git a/reactos/lib/crt/direct/getcwd.c b/reactos/lib/crt/direct/getcwd.c index 6d820e395a4..5ae385c7dd4 100644 --- a/reactos/lib/crt/direct/getcwd.c +++ b/reactos/lib/crt/direct/getcwd.c @@ -3,29 +3,33 @@ #include #include #include - +#include /* * @implemented */ -char *_getcwd(char* buffer, int maxlen) +_TCHAR* _tgetcwd(_TCHAR* buf, int size) { - char *cwd; - int len; + _TCHAR dir[MAX_PATH]; + DWORD dir_len = GetCurrentDirectory(MAX_PATH,dir); - if (buffer == NULL) { - if ( (cwd = malloc(MAX_PATH)) == NULL ) { - __set_errno(ENOMEM); - return NULL; - } - len = MAX_PATH; - } else { - cwd = buffer; - len = maxlen; - } - if (GetCurrentDirectoryA(len, cwd) == 0) { - _dosmaperr(GetLastError()); - return NULL; - } - return cwd; + if (dir_len == 0) + { + _dosmaperr(GetLastError()); + return NULL; /* FIXME: Real return value untested */ + } + + if (!buf) + { + return _tcsdup(dir); + } + + if (dir_len >= size) + { + __set_errno(ERANGE); + return NULL; /* buf too small */ + } + + _tcscpy(buf,dir); + return buf; } diff --git a/reactos/lib/crt/direct/getdcwd.c b/reactos/lib/crt/direct/getdcwd.c index cc6b5f6a467..301401aacc0 100644 --- a/reactos/lib/crt/direct/getdcwd.c +++ b/reactos/lib/crt/direct/getdcwd.c @@ -1,27 +1,64 @@ #include "precomp.h" #include #include +#include +#include +#include /* * @implemented + * + * _getdcwd (MSVCRT.@) + * + * Get the current working directory on a given disk. + * + * PARAMS + * drive [I] Drive letter to get the current working directory from. + * buf [O] Destination for the current working directory. + * size [I] Length of drive in characters. + * + * RETURNS + * Success: If drive is NULL, returns an allocated string containing the path. + * Otherwise populates drive with the path and returns it. + * Failure: NULL. errno indicates the error. */ -char* _getdcwd(int nDrive, char* caBuffer, int nBufLen) +_TCHAR* _tgetdcwd(int drive, _TCHAR * buf, int size) { - int i =0; - int dr = _getdrive(); + static _TCHAR* dummy; - if (nDrive < 1 || nDrive > 26) - return NULL; - if (dr != nDrive) { - if ( _chdrive(nDrive) != 0 ) - return NULL; - } - i = GetCurrentDirectoryA(nBufLen, caBuffer); - if (i == nBufLen) - return NULL; - if (dr != nDrive) { - if ( _chdrive(dr) != 0 ) - return NULL; - } - return caBuffer; + TRACE(":drive %d(%c), size %d\n",drive, drive + 'A' - 1, size); + + if (!drive || drive == _getdrive()) + return _tgetcwd(buf,size); /* current */ + else + { + _TCHAR dir[MAX_PATH]; + _TCHAR drivespec[] = _T("A:"); + int dir_len; + + drivespec[0] += drive - 1; + if (GetDriveType(drivespec) < DRIVE_REMOVABLE) + { + __set_errno(EACCES); + return NULL; + } + + /* GetFullPathName for X: means "get working directory on drive X", + * just like passing X: to SetCurrentDirectory means "switch to working + * directory on drive X". -Gunnar */ + dir_len = GetFullPathName(drivespec,MAX_PATH,dir,&dummy); + if (dir_len >= size || dir_len < 1) + { + __set_errno(ERANGE); + return NULL; /* buf too small */ + } + + TRACE(":returning '%s'\n", dir); + if (!buf) + return _tcsdup(dir); /* allocate */ + + _tcscpy(buf,dir); + } + return buf; } + diff --git a/reactos/lib/crt/direct/getdrive.c b/reactos/lib/crt/direct/getdrive.c index 006f9e4e95f..797c743dde5 100644 --- a/reactos/lib/crt/direct/getdrive.c +++ b/reactos/lib/crt/direct/getdrive.c @@ -3,28 +3,33 @@ #include -extern int cur_drive; +/* + * @implemented + * + * _getdrive (MSVCRT.@) + * + * Get the current drive number. + * + * PARAMS + * None. + * + * RETURNS + * Success: The drive letter number from 1 to 26 ("A:" to "Z:"). + * Failure: 0. + */ +int _getdrive(void) +{ + WCHAR buffer[MAX_PATH]; + if (GetCurrentDirectoryW( MAX_PATH, buffer ) && + buffer[0] >= 'A' && buffer[0] <= 'z' && buffer[1] == ':') + return towupper(buffer[0]) - 'A' + 1; + return 0; +} /* * @implemented */ -int _getdrive(void) -{ - char Buffer[MAX_PATH]; - - if (cur_drive == 0) { - GetCurrentDirectoryA(MAX_PATH, Buffer); - cur_drive = toupper(Buffer[0] - '@'); - } - return cur_drive; -} - -/* - * @unimplemented - */ unsigned long _getdrives(void) { - //fixme get logical drives - //return GetLogicalDrives(); - return 5; // drive A and C + return GetLogicalDrives(); } diff --git a/reactos/lib/crt/direct/mkdir.c b/reactos/lib/crt/direct/mkdir.c index 5aea15fac0b..7f8a3d74686 100644 --- a/reactos/lib/crt/direct/mkdir.c +++ b/reactos/lib/crt/direct/mkdir.c @@ -1,14 +1,14 @@ #include "precomp.h" #include #include - +#include /* * @implemented */ -int _mkdir(const char* _path) +int _tmkdir(const _TCHAR* _path) { - if (!CreateDirectoryA(_path, NULL)) { + if (!CreateDirectory(_path, NULL)) { _dosmaperr(GetLastError()); return -1; } diff --git a/reactos/lib/crt/direct/rmdir.c b/reactos/lib/crt/direct/rmdir.c index bdf84d74551..7a28056f986 100644 --- a/reactos/lib/crt/direct/rmdir.c +++ b/reactos/lib/crt/direct/rmdir.c @@ -1,14 +1,14 @@ #include "precomp.h" #include #include - +#include /* * @implemented */ -int _rmdir(const char* _path) +int _trmdir(const _TCHAR* _path) { - if (!RemoveDirectoryA(_path)) { + if (!RemoveDirectory(_path)) { _dosmaperr(GetLastError()); return -1; } diff --git a/reactos/lib/crt/direct/wchdir.c b/reactos/lib/crt/direct/wchdir.c index 3e49d1f851f..0271819c709 100644 --- a/reactos/lib/crt/direct/wchdir.c +++ b/reactos/lib/crt/direct/wchdir.c @@ -1,16 +1,5 @@ -#include "precomp.h" -#include -#include -#include +#define UNICODE +#define _UNICODE + +#include "chdir.c" -/* - * @implemented - */ -int _wchdir (const wchar_t *_path) -{ - if (!SetCurrentDirectoryW((wchar_t *)_path)) { - _dosmaperr(GetLastError()); - return -1; - } - return 0; -} diff --git a/reactos/lib/crt/direct/wgetcwd.c b/reactos/lib/crt/direct/wgetcwd.c index 07454dbf46e..2e946c3fbb5 100644 --- a/reactos/lib/crt/direct/wgetcwd.c +++ b/reactos/lib/crt/direct/wgetcwd.c @@ -1,28 +1,5 @@ -#include "precomp.h" -#include -#include -#include -#include +#define UNICODE +#define _UNICODE +#include "getcwd.c" -/* - * @implemented - */ -wchar_t* _wgetcwd(wchar_t* buffer, int maxlen) -{ - wchar_t *cwd; - int len; - if (buffer == NULL) { - if ( (cwd = malloc(MAX_PATH * sizeof(wchar_t))) == NULL ) { - __set_errno(ENOMEM); - return NULL; - } - len = MAX_PATH; - } else { - cwd = buffer; - len = maxlen; - } - if (GetCurrentDirectoryW(len, cwd) == 0) - return NULL; - return cwd; -} diff --git a/reactos/lib/crt/direct/wgetdcwd.c b/reactos/lib/crt/direct/wgetdcwd.c index ea8d5ed81d9..3c5e8e28e01 100644 --- a/reactos/lib/crt/direct/wgetdcwd.c +++ b/reactos/lib/crt/direct/wgetdcwd.c @@ -1,32 +1,5 @@ -#include "precomp.h" -#include -#include +#define UNICODE +#define _UNICODE +#include "getdcwd.c" -/* - * @implemented - */ -wchar_t* _wgetdcwd(int nDrive, wchar_t* caBuffer, int nBufLen) -{ - int i =0; - int dr = _getdrive(); - - if (nDrive < 1 || nDrive > 26) - return NULL; - - if (dr != nDrive) { - if ( _chdrive(nDrive) != 0 ) - return NULL; - } - - i = GetCurrentDirectoryW(nBufLen, caBuffer); - if (i == nBufLen) - return NULL; - - if (dr != nDrive) { - if ( _chdrive(dr) != 0 ) - return NULL; - } - - return caBuffer; -} diff --git a/reactos/lib/crt/direct/wmkdir.c b/reactos/lib/crt/direct/wmkdir.c index f6693626cc7..f9e11d1fe47 100644 --- a/reactos/lib/crt/direct/wmkdir.c +++ b/reactos/lib/crt/direct/wmkdir.c @@ -1,16 +1,4 @@ -#include "precomp.h" -#include -#include +#define UNICODE +#define _UNICODE - -/* - * @implemented - */ -int _wmkdir(const wchar_t* _path) -{ - if (!CreateDirectoryW(_path, NULL)) { - _dosmaperr(GetLastError()); - return -1; - } - return 0; -} +#include "mkdir.c" diff --git a/reactos/lib/crt/direct/wrmdir.c b/reactos/lib/crt/direct/wrmdir.c index 5033e7e75fb..b592e542605 100644 --- a/reactos/lib/crt/direct/wrmdir.c +++ b/reactos/lib/crt/direct/wrmdir.c @@ -1,16 +1,4 @@ -#include "precomp.h" -#include -#include +#define UNICODE +#define _UNICODE - -/* - * @implemented - */ -int _wrmdir(const wchar_t* _path) -{ - if (!RemoveDirectoryW(_path)) { - _dosmaperr(GetLastError()); - return -1; - } - return 0; -} +#include "rmdir.c" diff --git a/reactos/lib/crt/float/fpclass.c b/reactos/lib/crt/float/fpclass.c index e14a4d72418..42ae380a596 100644 --- a/reactos/lib/crt/float/fpclass.c +++ b/reactos/lib/crt/float/fpclass.c @@ -14,6 +14,9 @@ #define _FPCLASS_PN 0x0100 /* positive normal */ #define _FPCLASS_PINF 0x0200 /* positive infinity */ + +#if __MINGW32_MAJOR_VERSION < 3 || __MINGW32_MINOR_VERSION < 3 + #define FP_SNAN 0x0001 // signaling NaN #define FP_QNAN 0x0002 // quiet NaN #define FP_NINF 0x0004 // negative infinity @@ -25,6 +28,8 @@ #define FP_NNORM 0x0080 // negative normalized non-zero #define FP_PNORM 0x0100 // positive normalized non-zero +#endif + typedef int fpclass_t; /* diff --git a/reactos/lib/crt/include/internal/msvcrtdbg.h b/reactos/lib/crt/include/internal/debug.h similarity index 100% rename from reactos/lib/crt/include/internal/msvcrtdbg.h rename to reactos/lib/crt/include/internal/debug.h diff --git a/reactos/lib/crt/include/internal/file.h b/reactos/lib/crt/include/internal/file.h index 4c781aa491a..040c47917e6 100644 --- a/reactos/lib/crt/include/internal/file.h +++ b/reactos/lib/crt/include/internal/file.h @@ -185,6 +185,10 @@ int _isinf(double x); wint_t _filwbuf(FILE *f); +#if __MINGW32_MAJOR_VERSION < 3 || __MINGW32_MINOR_VERSION < 2 + int __cdecl _filbuf (FILE*); + int __cdecl _flsbuf (int, FILE*); +#endif #endif /* __dj_include_libc_file_h__ */ diff --git a/reactos/lib/crt/io/access.c b/reactos/lib/crt/io/access.c index cbfc7ef3b91..228ef69a093 100644 --- a/reactos/lib/crt/io/access.c +++ b/reactos/lib/crt/io/access.c @@ -5,7 +5,7 @@ #include #define NDEBUG -#include +#include #ifdef _UNICODE #define _TS S diff --git a/reactos/lib/crt/io/chmod.c b/reactos/lib/crt/io/chmod.c index a9aa73aae5d..aadc153f3c6 100644 --- a/reactos/lib/crt/io/chmod.c +++ b/reactos/lib/crt/io/chmod.c @@ -6,7 +6,7 @@ #include #define NDEBUG -#include +#include #define mode_t int diff --git a/reactos/lib/crt/io/chsize.c b/reactos/lib/crt/io/chsize.c index 7826a48d3d1..e52588b0416 100644 --- a/reactos/lib/crt/io/chsize.c +++ b/reactos/lib/crt/io/chsize.c @@ -2,7 +2,7 @@ #include #define NDEBUG -#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/close.c b/reactos/lib/crt/io/close.c index 862a7ea418c..767aafb4bf7 100644 --- a/reactos/lib/crt/io/close.c +++ b/reactos/lib/crt/io/close.c @@ -3,7 +3,7 @@ #include #define NDEBUG -#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/create.c b/reactos/lib/crt/io/create.c index cb306855ea0..ccd93be9196 100644 --- a/reactos/lib/crt/io/create.c +++ b/reactos/lib/crt/io/create.c @@ -2,7 +2,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/find.c b/reactos/lib/crt/io/find.c index 73b4b4fd6f5..def2eb53fe9 100644 --- a/reactos/lib/crt/io/find.c +++ b/reactos/lib/crt/io/find.c @@ -8,7 +8,7 @@ /* * @implemented */ -#ifdef _UNICODE +#if defined(_UNICODE) || !(__MINGW32_MAJOR_VERSION < 3 || __MINGW32_MINOR_VERSION < 3) long #else int @@ -60,7 +60,7 @@ _tfindfirst(const _TCHAR* _name, struct _tfinddata_t* result) * @implemented */ int _tfindnext( -#ifdef _UNICODE +#if defined(_UNICODE) || !(__MINGW32_MAJOR_VERSION < 3 || __MINGW32_MINOR_VERSION < 3) long handle, #else int handle, @@ -176,7 +176,13 @@ int _tfindnexti64(long handle, struct _tfinddatai64_t *result) /* * @implemented */ -int _findclose(int handle) +int _findclose( +#if __MINGW32_MAJOR_VERSION < 3 || __MINGW32_MINOR_VERSION < 3 + int handle +#else + long handle +#endif + ) { // check no wildcards or invalid handle if (handle == 0 || handle == -1) diff --git a/reactos/lib/crt/io/isatty.c b/reactos/lib/crt/io/isatty.c index 9dae86c800c..d54ae83dfa5 100644 --- a/reactos/lib/crt/io/isatty.c +++ b/reactos/lib/crt/io/isatty.c @@ -2,7 +2,7 @@ #include #define NDEBUG -#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/mktemp.c b/reactos/lib/crt/io/mktemp.c index e54d95fb331..1addbd6011c 100644 --- a/reactos/lib/crt/io/mktemp.c +++ b/reactos/lib/crt/io/mktemp.c @@ -18,7 +18,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/open.c b/reactos/lib/crt/io/open.c index 79bb40bd957..83b7532c7ab 100644 --- a/reactos/lib/crt/io/open.c +++ b/reactos/lib/crt/io/open.c @@ -52,7 +52,7 @@ #include #define NDEBUG -#include +#include diff --git a/reactos/lib/crt/io/pipe.c b/reactos/lib/crt/io/pipe.c index fec88f74bf2..2fe88e95a29 100644 --- a/reactos/lib/crt/io/pipe.c +++ b/reactos/lib/crt/io/pipe.c @@ -15,7 +15,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/read.c b/reactos/lib/crt/io/read.c index a89275bf08a..65c87bb308a 100644 --- a/reactos/lib/crt/io/read.c +++ b/reactos/lib/crt/io/read.c @@ -17,7 +17,7 @@ #include #define NDEBUG -#include +#include /* * @implemented diff --git a/reactos/lib/crt/io/setmode.c b/reactos/lib/crt/io/setmode.c index b774018e606..31e529499b8 100644 --- a/reactos/lib/crt/io/setmode.c +++ b/reactos/lib/crt/io/setmode.c @@ -14,6 +14,6 @@ #include #define NDEBUG -#include +#include diff --git a/reactos/lib/crt/io/unlink.c b/reactos/lib/crt/io/unlink.c index 947b27256c7..aa3b86bfe0a 100644 --- a/reactos/lib/crt/io/unlink.c +++ b/reactos/lib/crt/io/unlink.c @@ -13,7 +13,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/wcreate.c b/reactos/lib/crt/io/wcreate.c index 305d836c23d..e8d353b769b 100644 --- a/reactos/lib/crt/io/wcreate.c +++ b/reactos/lib/crt/io/wcreate.c @@ -2,7 +2,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/wmktemp.c b/reactos/lib/crt/io/wmktemp.c index 9978878861e..62d2185d4cb 100644 --- a/reactos/lib/crt/io/wmktemp.c +++ b/reactos/lib/crt/io/wmktemp.c @@ -18,7 +18,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/wopen.c b/reactos/lib/crt/io/wopen.c index c804539fd44..07f39828bab 100644 --- a/reactos/lib/crt/io/wopen.c +++ b/reactos/lib/crt/io/wopen.c @@ -26,7 +26,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/io/write.c b/reactos/lib/crt/io/write.c index 0387fbde214..e326399a3f8 100644 --- a/reactos/lib/crt/io/write.c +++ b/reactos/lib/crt/io/write.c @@ -16,7 +16,7 @@ #include #define NDEBUG -#include +#include #define BUFSIZE 4096 /* diff --git a/reactos/lib/crt/io/wunlink.c b/reactos/lib/crt/io/wunlink.c index 00420a5b9a2..f862b107bad 100644 --- a/reactos/lib/crt/io/wunlink.c +++ b/reactos/lib/crt/io/wunlink.c @@ -13,7 +13,7 @@ #include #define NDEBUG -#include +#include /* * @implemented diff --git a/reactos/lib/crt/locale/locale.c b/reactos/lib/crt/locale/locale.c index c3b21ddd6c0..ca1a02b7c00 100644 --- a/reactos/lib/crt/locale/locale.c +++ b/reactos/lib/crt/locale/locale.c @@ -13,7 +13,7 @@ #include #define NDEBUG -#include +#include unsigned int __setlc_active; unsigned int __unguarded_readlc_active; diff --git a/reactos/lib/crt/misc/crtmain.c b/reactos/lib/crt/misc/crtmain.c index 5387202824b..60bbfd3a9aa 100644 --- a/reactos/lib/crt/misc/crtmain.c +++ b/reactos/lib/crt/misc/crtmain.c @@ -6,7 +6,7 @@ #include "precomp.h" #define NDEBUG -#include +#include #ifndef __GNUC__ diff --git a/reactos/lib/crt/misc/environ.c b/reactos/lib/crt/misc/environ.c index d99b3695657..9db749c5dd4 100644 --- a/reactos/lib/crt/misc/environ.c +++ b/reactos/lib/crt/misc/environ.c @@ -12,7 +12,7 @@ #include #define NDEBUG -#include +#include unsigned int _osver = 0; diff --git a/reactos/lib/crt/misc/lock.c b/reactos/lib/crt/misc/lock.c index 775f9190486..417df9afb2d 100644 --- a/reactos/lib/crt/misc/lock.c +++ b/reactos/lib/crt/misc/lock.c @@ -19,7 +19,7 @@ #include "precomp.h" #define NDEBUG -#include +#include #include typedef struct diff --git a/reactos/lib/crt/misc/stubs.c b/reactos/lib/crt/misc/stubs.c index 2e7dc702780..21266f52d98 100644 --- a/reactos/lib/crt/misc/stubs.c +++ b/reactos/lib/crt/misc/stubs.c @@ -1,7 +1,7 @@ #include "precomp.h" #define NDEBUG -#include +#include /********************************************************************* * $I10_OUTPUT (MSVCRT.@) diff --git a/reactos/lib/crt/process/process.c b/reactos/lib/crt/process/process.c index 6c7f06efb1e..00ead394836 100644 --- a/reactos/lib/crt/process/process.c +++ b/reactos/lib/crt/process/process.c @@ -7,7 +7,7 @@ #include #define NDEBUG -#include +#include #ifdef _UNICODE #define find_execT find_execW diff --git a/reactos/lib/crt/signal/signal.c b/reactos/lib/crt/signal/signal.c index 3df1deee360..a893fce1669 100644 --- a/reactos/lib/crt/signal/signal.c +++ b/reactos/lib/crt/signal/signal.c @@ -89,7 +89,7 @@ __p_sig_fn_t signal(int sig, __p_sig_fn_t func) int raise(int sig) { - __p_sig_fn_t temp;// = SIG_DFL; + __p_sig_fn_t temp = 0; int i; switch (sig) diff --git a/reactos/lib/crt/stdio/fwrite.c b/reactos/lib/crt/stdio/fwrite.c index 4203526717d..399b63fdea4 100644 --- a/reactos/lib/crt/stdio/fwrite.c +++ b/reactos/lib/crt/stdio/fwrite.c @@ -6,7 +6,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/stdio/popen.c b/reactos/lib/crt/stdio/popen.c index 803104141ba..da1e6ccaeaf 100644 --- a/reactos/lib/crt/stdio/popen.c +++ b/reactos/lib/crt/stdio/popen.c @@ -8,7 +8,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/stdio/remove.c b/reactos/lib/crt/stdio/remove.c index 37909173cbc..265b975d778 100644 --- a/reactos/lib/crt/stdio/remove.c +++ b/reactos/lib/crt/stdio/remove.c @@ -4,7 +4,7 @@ #include #define NDEBUG -#include +#include /* * @implemented diff --git a/reactos/lib/crt/stdlib/getenv.c b/reactos/lib/crt/stdlib/getenv.c index 0a445b0dac2..9b8a2ce8a57 100644 --- a/reactos/lib/crt/stdlib/getenv.c +++ b/reactos/lib/crt/stdlib/getenv.c @@ -2,7 +2,7 @@ #include #define NDEBUG -#include +#include #undef environ diff --git a/reactos/lib/crt/stdlib/putenv.c b/reactos/lib/crt/stdlib/putenv.c index 7edf52d0591..e0e53b15d67 100644 --- a/reactos/lib/crt/stdlib/putenv.c +++ b/reactos/lib/crt/stdlib/putenv.c @@ -3,7 +3,7 @@ #include #define NDEBUG -#include +#include /* misc/environ.c */ int SetEnv(const wchar_t *option); diff --git a/reactos/lib/crt/stdlib/senv.c b/reactos/lib/crt/stdlib/senv.c index d63291c81dd..e2d96747d69 100644 --- a/reactos/lib/crt/stdlib/senv.c +++ b/reactos/lib/crt/stdlib/senv.c @@ -4,7 +4,7 @@ #include #define NDEBUG -#include +#include /* diff --git a/reactos/lib/crt/stdlib/wputenv.c b/reactos/lib/crt/stdlib/wputenv.c index c06d966a257..d9e709a6a0a 100644 --- a/reactos/lib/crt/stdlib/wputenv.c +++ b/reactos/lib/crt/stdlib/wputenv.c @@ -3,7 +3,7 @@ #include #define NDEBUG -#include +#include /* misc/environ.c */ int SetEnv(const wchar_t *option); diff --git a/reactos/lib/crt/wine/scanf.c b/reactos/lib/crt/wine/scanf.c index 33983384b65..f7d923251ee 100644 --- a/reactos/lib/crt/wine/scanf.c +++ b/reactos/lib/crt/wine/scanf.c @@ -42,12 +42,13 @@ #include #include #include +#include #include //#include #define NDEBUG -#include +#include /* From 598769de43d9481030cd4a36db850b7640633f0d Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Thu, 17 Feb 2005 12:18:10 +0000 Subject: [PATCH 090/248] forgot to change those two... svn path=/trunk/; revision=13616 --- reactos/lib/crtdll/dllmain.c | 2 +- reactos/lib/msvcrt/dllmain.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/lib/crtdll/dllmain.c b/reactos/lib/crtdll/dllmain.c index c07ee2d3b43..902fd9d74b1 100644 --- a/reactos/lib/crtdll/dllmain.c +++ b/reactos/lib/crtdll/dllmain.c @@ -28,7 +28,7 @@ #include #define NDEBUG -#include +#include /* EXTERNAL PROTOTYPES ********************************************************/ diff --git a/reactos/lib/msvcrt/dllmain.c b/reactos/lib/msvcrt/dllmain.c index 7c3c1c551ea..35e4032a6a9 100644 --- a/reactos/lib/msvcrt/dllmain.c +++ b/reactos/lib/msvcrt/dllmain.c @@ -27,7 +27,7 @@ #include #define NDEBUG -#include +#include /* EXTERNAL PROTOTYPES ********************************************************/ From 1f5552d5214233a9828cf1c1656bd77ee2ec0b38 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 17 Feb 2005 12:45:13 +0000 Subject: [PATCH 091/248] - Make lsass.exe a win32 application. - Load and initialize lsasrv.dll. svn path=/trunk/; revision=13617 --- reactos/subsys/system/lsass/init.c | 43 ---------------- reactos/subsys/system/lsass/lsasrv.def | 68 -------------------------- reactos/subsys/system/lsass/lsass.c | 66 +++++++++++-------------- reactos/subsys/system/lsass/makefile | 8 ++- 4 files changed, 35 insertions(+), 150 deletions(-) delete mode 100644 reactos/subsys/system/lsass/init.c delete mode 100644 reactos/subsys/system/lsass/lsasrv.def diff --git a/reactos/subsys/system/lsass/init.c b/reactos/subsys/system/lsass/init.c deleted file mode 100644 index 86f739c6682..00000000000 --- a/reactos/subsys/system/lsass/init.c +++ /dev/null @@ -1,43 +0,0 @@ -/* $Id$ - * - * init.c - Local Security Manager Initialization - * - * ReactOS Operating System - * - * -------------------------------------------------------------------- - * - * This software is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING.LIB. If not, write - * to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, - * MA 02139, USA. - * - * -------------------------------------------------------------------- - * - * 19990704 (Emanuele Aliberti) - * Compiled successfully with egcs 1.1.2 - */ -#include - -BOOL -InitLsa( - HANDLE Children[] - ) -{ - /* FIXME: create the \SeLsaCommandPort LPC port */ - /* FIXME: create the \LsaAuthenticationPort LPC port */ - return TRUE; -} - - -/* EOF */ - diff --git a/reactos/subsys/system/lsass/lsasrv.def b/reactos/subsys/system/lsass/lsasrv.def deleted file mode 100644 index be8ee019c11..00000000000 --- a/reactos/subsys/system/lsass/lsasrv.def +++ /dev/null @@ -1,68 +0,0 @@ -; $Id$ -LIBRARY lsasrv -EXPORTS -LsaIAuditNotifyPackageLoad -LsaIAuditSamEvent -LsaIEnumerateSecrets -LsaIFree_LSAI_PRIVATE_DATA -LsaIFree_LSAI_SECRET_ENUM_BUFFER -LsaIFree_LSAPR_ACCOUNT_ENUM_BUFFER -LsaIFree_LSAPR_CR_CIPHER_VALUE -LsaIFree_LSAPR_POLICY_INFORMATION -LsaIFree_LSAPR_PRIVILEGE_ENUM_BUFFER -LsaIFree_LSAPR_PRIVILEGE_SET -LsaIFree_LSAPR_REFERENCED_DOMAIN_LIST -LsaIFree_LSAPR_SR_SECURITY_DESCRIPTOR -LsaIFree_LSAPR_TRANSLATED_NAMES -LsaIFree_LSAPR_TRANSLATED_SIDS -LsaIFree_LSAPR_TRUSTED_DOMAIN_INFO -LsaIFree_LSAPR_TRUSTED_ENUM_BUFFER -LsaIFree_LSAPR_TRUST_INFORMATION -LsaIFree_LSAPR_UNICODE_STRING -LsaIGetPrivateData -LsaIGetSerialNumberPolicy -LsaIGetSerialNumberPolicy2 -LsaIHealthCheck -LsaIInitializeWellKnownSids -LsaIOpenPolicyTrusted -LsaIQueryInformationPolicyTrusted -LsaISetPrivateData -LsaISetSerialNumberPolicy -LsaISetTimesSecret -LsaISetupWasRun -LsapAuOpenSam -LsapInitLsa -LsarAddPrivilegesToAccount -LsarClose -LsarCreateAccount -LsarCreateSecret -LsarCreateTrustedDomain -LsarDelete -LsarEnumerateAccounts -LsarEnumeratePrivileges -LsarEnumeratePrivilegesAccount -LsarEnumerateTrustedDomains -LsarGetQuotasForAccount -LsarGetSystemAccessAccount -LsarLookupNames -LsarLookupPrivilegeDisplayName -LsarLookupPrivilegeName -LsarLookupPrivilegeValue -LsarLookupSids -LsarOpenAccount -LsarOpenPolicy -LsarOpenSecret -LsarOpenTrustedDomain -LsarQueryInfoTrustedDomain -LsarQueryInformationPolicy -LsarQuerySecret -LsarQuerySecurityObject -LsarRemovePrivilegesFromAccount -LsarSetInformationPolicy -LsarSetInformationTrustedDomain -LsarSetQuotasForAccount -LsarSetSecret -LsarSetSecurityObject -LsarSetSystemAccessAccount -ServiceInit - diff --git a/reactos/subsys/system/lsass/lsass.c b/reactos/subsys/system/lsass/lsass.c index f5191700874..8dc98ea4deb 100644 --- a/reactos/subsys/system/lsass/lsass.c +++ b/reactos/subsys/system/lsass/lsass.c @@ -1,6 +1,6 @@ /* $Id$ * - * reactos/services/lsass/lsass.c + * reactos/subsys/system/lsass/lsass.c * * ReactOS Operating System * @@ -26,47 +26,39 @@ * 19990704 (Emanuele Aliberti) * Compiled successfully with egcs 1.1.2 */ -#include -#include +//#include +//#include +#include +#include -BOOL InitLsa(VOID); /* ./init.c */ +#define NDEBUG +#include -void -DisplayString( LPCWSTR lpwString ) +int STDCALL +WinMain(HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nShowCmd) { - UNICODE_STRING us; + NTSTATUS Status = STATUS_SUCCESS; - us.Buffer = (LPWSTR) lpwString; - us.Length = wcslen(lpwString) * sizeof (WCHAR); - us.MaximumLength = us.Length + sizeof (WCHAR); - NtDisplayString( & us ); + DPRINT("Local Security Authority Subsystem\n"); + DPRINT(" Initializing...\n"); + + Status = LsapInitLsa(); + if (!NT_SUCCESS(Status)) + { + DPRINT1("LsapInitLsa() failed (Status 0x%08lX)\n", Status); + goto ByeBye; + } + + /* FIXME: More initialization */ + +ByeBye: + NtTerminateThread(NtCurrentThread(), Status); + + return 0; } - -/* Native image's entry point */ - -VOID STDCALL -NtProcessStartup(PPEB Peb) -{ - DisplayString( L"Local Security Authority Subsystem:\n" ); - DisplayString( L"\tInitializing...\n" ); - - if (TRUE == InitLsa()) - { - DisplayString( L"\tInitialization OK\n" ); - /* FIXME: do nothing loop */ - while (TRUE) - { - NtYieldExecution(); - } - } - else - { - DisplayString( L"\tInitialization failed!\n" ); - } - NtTerminateProcess( NtCurrentProcess(), 0 ); -} - - /* EOF */ diff --git a/reactos/subsys/system/lsass/makefile b/reactos/subsys/system/lsass/makefile index 0d200a65122..040a42bc5f1 100644 --- a/reactos/subsys/system/lsass/makefile +++ b/reactos/subsys/system/lsass/makefile @@ -4,13 +4,17 @@ PATH_TO_TOP = ../../.. TARGET_TYPE = program -TARGET_APPTYPE = native +TARGET_APPTYPE = windows TARGET_NAME = lsass TARGET_INSTALLDIR = system32 -TARGET_OBJECTS = $(TARGET_NAME).o init.o +TARGET_CFLAGS += -Wall -Werror -D__USE_W32API + +TARGET_OBJECTS = lsass.o + +TARGET_SDKLIBS = ntdll.a kernel32.a lsasrv.a include $(PATH_TO_TOP)/rules.mak From 8764a46ff13470ad38d1662003b0026274a166ce Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 17 Feb 2005 12:46:56 +0000 Subject: [PATCH 092/248] Build lsass.exe. svn path=/trunk/; revision=13618 --- reactos/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/Makefile b/reactos/Makefile index 0fb12fe33df..95e2f4164e7 100644 --- a/reactos/Makefile +++ b/reactos/Makefile @@ -105,7 +105,7 @@ STORAGE_DRIVERS = atapi cdrom class2 disk floppy scsiport diskdump # autochk cmd format services setup usetup welcome winlogon msiexec SYS_APPS = autochk calc cmd explorer expand format ibrowser msiexec regedt32 regsvr32 \ reporterror services setup taskmgr userinit usetup welcome vmwinst \ - winlogon regedit winefile notepad reactos + winlogon regedit winefile notepad reactos lsass # System services SYS_SVC = rpcss eventlog umpnpmgr From ffb21066c5e442df228b9ae1b8b08a5d17181b04 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Thu, 17 Feb 2005 14:06:19 +0000 Subject: [PATCH 093/248] _T should not be defined here svn path=/trunk/; revision=13619 --- reactos/include/base.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/reactos/include/base.h b/reactos/include/base.h index d2c6486a478..5f8dd4ec7fc 100644 --- a/reactos/include/base.h +++ b/reactos/include/base.h @@ -412,16 +412,10 @@ typedef enum _SID_NAME_USE { #ifndef _DISABLE_TIDENTS # ifdef UNICODE -# ifndef _T -# define _T(quote) L##quote -# endif /* _T */ # ifndef _TEXT # define TEXT(quote) L##quote # endif /* _TEXT */ # else /* UNICODE */ -# ifndef _T -# define _T(quote) quote -# endif /* _T */ # ifndef _TEXT # define TEXT(quote) quote # endif /* _TEXT */ From 5e471fb25d2880650014fdafad45cc07f0f4b51f Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Thu, 17 Feb 2005 14:35:47 +0000 Subject: [PATCH 094/248] add missing include svn path=/trunk/; revision=13620 --- reactos/subsys/system/services/services.c | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/subsys/system/services/services.c b/reactos/subsys/system/services/services.c index fef791facd5..4db7c444ecb 100644 --- a/reactos/subsys/system/services/services.c +++ b/reactos/subsys/system/services/services.c @@ -32,6 +32,7 @@ #define NTOS_MODE_USER #include #include +#include #include #include "services.h" From d86b66f04df133697e0aa7068e15ff3a00ee280e Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Thu, 17 Feb 2005 15:10:55 +0000 Subject: [PATCH 095/248] fixed includes svn path=/trunk/; revision=13621 --- reactos/subsys/system/lsass/lsass.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/subsys/system/lsass/lsass.c b/reactos/subsys/system/lsass/lsass.c index 8dc98ea4deb..8faac37c11a 100644 --- a/reactos/subsys/system/lsass/lsass.c +++ b/reactos/subsys/system/lsass/lsass.c @@ -26,8 +26,8 @@ * 19990704 (Emanuele Aliberti) * Compiled successfully with egcs 1.1.2 */ -//#include -//#include +#include +#include #include #include From e376d4e01d03c4ad82657bd153d656bc9286aed1 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Thu, 17 Feb 2005 15:11:36 +0000 Subject: [PATCH 096/248] declare NtTerminateThread() svn path=/trunk/; revision=13622 --- reactos/w32api/include/ddk/ntapi.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/reactos/w32api/include/ddk/ntapi.h b/reactos/w32api/include/ddk/ntapi.h index f2d8ac9e290..275fe062e7b 100644 --- a/reactos/w32api/include/ddk/ntapi.h +++ b/reactos/w32api/include/ddk/ntapi.h @@ -1263,6 +1263,13 @@ ZwTerminateThread( IN HANDLE ThreadHandle OPTIONAL, IN NTSTATUS ExitStatus); +NTOSAPI +NTSTATUS +NTAPI +NtTerminateThread( + IN HANDLE ThreadHandle OPTIONAL, + IN NTSTATUS ExitStatus); + NTOSAPI NTSTATUS NTAPI From 6d97eb3b0f3a9509fbeed3ba49720291fd8cc741 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Thu, 17 Feb 2005 16:41:28 +0000 Subject: [PATCH 097/248] 1. object type names are stored in ntoskrnl's image (which is nonpaged memory), so there's no need to allocate and copy them to new memory 2. fixed PsLookupThreadByThreadId() prototype 3. renamed the process list to PsActiveProcessHead and use fast mutexes to serialize access to it svn path=/trunk/; revision=13623 --- reactos/include/ddk/psfuncs.h | 2 +- reactos/ntoskrnl/dbg/kdb.c | 8 +- reactos/ntoskrnl/ex/callback.c | 2 +- reactos/ntoskrnl/ex/win32k.c | 4 +- reactos/ntoskrnl/io/driver.c | 2 +- reactos/ntoskrnl/io/iomgr.c | 6 +- reactos/ntoskrnl/kd/gdbstub.c | 16 ++-- reactos/ntoskrnl/lpc/port.c | 8 +- reactos/ntoskrnl/mm/section.c | 2 +- reactos/ntoskrnl/ob/namespc.c | 4 +- reactos/ntoskrnl/ob/symlink.c | 4 +- reactos/ntoskrnl/ps/job.c | 7 +- reactos/ntoskrnl/ps/process.c | 102 +++++++++++++------------ reactos/ntoskrnl/ps/thread.c | 12 +-- reactos/subsys/win32k/ntuser/desktop.c | 2 +- reactos/subsys/win32k/ntuser/hook.c | 2 +- reactos/subsys/win32k/ntuser/message.c | 2 +- reactos/subsys/win32k/ntuser/misc.c | 2 +- reactos/subsys/win32k/ntuser/window.c | 2 +- reactos/w32api/include/ddk/ntifs.h | 2 +- 20 files changed, 101 insertions(+), 90 deletions(-) diff --git a/reactos/include/ddk/psfuncs.h b/reactos/include/ddk/psfuncs.h index 92bee18dc06..cca162f1c33 100644 --- a/reactos/include/ddk/psfuncs.h +++ b/reactos/include/ddk/psfuncs.h @@ -403,7 +403,7 @@ NTSTATUS STDCALL PsLookupProcessThreadByCid(IN PCLIENT_ID Cid, OUT struct _ETHREAD **Thread); /* OUT PETHREAD *Thread); */ -NTSTATUS STDCALL PsLookupThreadByThreadId(IN PVOID ThreadId, +NTSTATUS STDCALL PsLookupThreadByThreadId(IN HANDLE ThreadId, OUT struct _ETHREAD **Thread); /* OUT PETHREAD *Thread); */ diff --git a/reactos/ntoskrnl/dbg/kdb.c b/reactos/ntoskrnl/dbg/kdb.c index 98954ed9058..fa97e8879e9 100644 --- a/reactos/ntoskrnl/dbg/kdb.c +++ b/reactos/ntoskrnl/dbg/kdb.c @@ -862,20 +862,20 @@ DbgThreadListCommand(ULONG Argc, PCH Argv[], PKTRAP_FRAME Tf) ULONG DbgProcessListCommand(ULONG Argc, PCH Argv[], PKTRAP_FRAME Tf) { - extern LIST_ENTRY PsProcessListHead; + extern LIST_ENTRY PsActiveProcessHead; PLIST_ENTRY current_entry; PEPROCESS current; ULONG i = 1; - if (PsProcessListHead.Flink == NULL) + if (PsActiveProcessHead.Flink == NULL) { DbgPrint("No processes.\n"); return(1); } DbgPrint("Process list: "); - current_entry = PsProcessListHead.Flink; - while (current_entry != &PsProcessListHead) + current_entry = PsActiveProcessHead.Flink; + while (current_entry != &PsActiveProcessHead) { current = CONTAINING_RECORD(current_entry, EPROCESS, ProcessListEntry); DbgPrint("%d %.8s", current->UniqueProcessId, diff --git a/reactos/ntoskrnl/ex/callback.c b/reactos/ntoskrnl/ex/callback.c index d6cf2cbe629..3496b017b65 100644 --- a/reactos/ntoskrnl/ex/callback.c +++ b/reactos/ntoskrnl/ex/callback.c @@ -49,7 +49,7 @@ ExpInitializeCallbacks(VOID) ExCallbackObjectType = ExAllocatePoolWithTag(NonPagedPool, sizeof(OBJECT_TYPE), CALLBACK_TAG); /* Initialize name */ - RtlRosInitUnicodeStringFromLiteral(&ExCallbackObjectType->TypeName,L"Callback"); + RtlInitUnicodeString(&ExCallbackObjectType->TypeName, L"Callback"); /* Create the Object Type */ ExCallbackObjectType->Tag = CALLBACK_TAG; diff --git a/reactos/ntoskrnl/ex/win32k.c b/reactos/ntoskrnl/ex/win32k.c index 4cdc21622d8..7fc3ed9a645 100644 --- a/reactos/ntoskrnl/ex/win32k.c +++ b/reactos/ntoskrnl/ex/win32k.c @@ -295,7 +295,7 @@ ExpWin32kInit(VOID) ExWindowStationObjectType->OkayToClose = NULL; ExWindowStationObjectType->Create = ExpWinStaObjectCreate; ExWindowStationObjectType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&ExWindowStationObjectType->TypeName, L"WindowStation"); + RtlInitUnicodeString(&ExWindowStationObjectType->TypeName, L"WindowStation"); ObpCreateTypeObject(ExWindowStationObjectType); @@ -325,7 +325,7 @@ ExpWin32kInit(VOID) ExDesktopObjectType->OkayToClose = NULL; ExDesktopObjectType->Create = ExpDesktopObjectCreate; ExDesktopObjectType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&ExDesktopObjectType->TypeName, L"Desktop"); + RtlInitUnicodeString(&ExDesktopObjectType->TypeName, L"Desktop"); ObpCreateTypeObject(ExDesktopObjectType); } diff --git a/reactos/ntoskrnl/io/driver.c b/reactos/ntoskrnl/io/driver.c index c43ead25976..7cab4e63911 100644 --- a/reactos/ntoskrnl/io/driver.c +++ b/reactos/ntoskrnl/io/driver.c @@ -110,7 +110,7 @@ IopInitDriverImplementation(VOID) IoDriverObjectType->OkayToClose = NULL; IoDriverObjectType->Create = IopCreateDriver; IoDriverObjectType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&IoDriverObjectType->TypeName, L"Driver"); + RtlInitUnicodeString(&IoDriverObjectType->TypeName, L"Driver"); ObpCreateTypeObject(IoDriverObjectType); diff --git a/reactos/ntoskrnl/io/iomgr.c b/reactos/ntoskrnl/io/iomgr.c index b8a2dcf1ebb..81852d21362 100644 --- a/reactos/ntoskrnl/io/iomgr.c +++ b/reactos/ntoskrnl/io/iomgr.c @@ -410,7 +410,7 @@ IoInit (VOID) IoDeviceObjectType->Create = IopCreateDevice; IoDeviceObjectType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&IoDeviceObjectType->TypeName, L"Device"); + RtlInitUnicodeString(&IoDeviceObjectType->TypeName, L"Device"); ObpCreateTypeObject(IoDeviceObjectType); @@ -439,7 +439,7 @@ IoInit (VOID) IoFileObjectType->Create = IopCreateFile; IoFileObjectType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&IoFileObjectType->TypeName, L"File"); + RtlInitUnicodeString(&IoFileObjectType->TypeName, L"File"); ObpCreateTypeObject(IoFileObjectType); @@ -453,7 +453,7 @@ IoInit (VOID) IoAdapterObjectType->PeakObjects = 0; IoAdapterObjectType->PeakHandles = 0; IoDeviceObjectType->Mapping = &IopFileMapping; - RtlRosInitUnicodeStringFromLiteral(&IoAdapterObjectType->TypeName, L"Adapter"); + RtlInitUnicodeString(&IoAdapterObjectType->TypeName, L"Adapter"); ObpCreateTypeObject(IoAdapterObjectType); /* diff --git a/reactos/ntoskrnl/kd/gdbstub.c b/reactos/ntoskrnl/kd/gdbstub.c index 26b2064a782..b4c8a627929 100644 --- a/reactos/ntoskrnl/kd/gdbstub.c +++ b/reactos/ntoskrnl/kd/gdbstub.c @@ -106,7 +106,7 @@ static PETHREAD GspRunThread; /* NULL means run all threads */ static PETHREAD GspDbgThread; static PETHREAD GspEnumThread; -extern LIST_ENTRY PsProcessListHead; +extern LIST_ENTRY PsActiveProcessHead; /* Number of Registers. */ #define NUMREGS 16 @@ -652,12 +652,14 @@ GspFindThread(PCHAR Data, } else { - ULONG ThreadId; + ULONG uThreadId; + HANDLE ThreadId; PCHAR ptr = &Data[0]; - GspHex2Long (&ptr, (PLONG) &ThreadId); + GspHex2Long (&ptr, (PULONG) &uThreadId); + ThreadId = (HANDLE)uThreadId; - if (!NT_SUCCESS (PsLookupThreadByThreadId ((PVOID) ThreadId, &ThreadInfo))) + if (!NT_SUCCESS (PsLookupThreadByThreadId (ThreadId, &ThreadInfo))) { *Thread = NULL; return FALSE; @@ -745,8 +747,8 @@ GspQuery(PCHAR Request) /* Get first thread id */ GspEnumThread = NULL; - AProcess = PsProcessListHead.Flink; - while(AProcess != &PsProcessListHead) + AProcess = PsActiveProcessHead.Flink; + while(AProcess != &PsActiveProcessHead) { Process = CONTAINING_RECORD(AProcess, EPROCESS, ProcessListEntry); AThread = Process->ThreadListHead.Flink; @@ -791,7 +793,7 @@ GspQuery(PCHAR Request) { PETHREAD Thread = NULL; AProcess = Process->ProcessListEntry.Flink; - while(AProcess != &PsProcessListHead) + while(AProcess != &PsActiveProcessHead) { Process = CONTAINING_RECORD(AProcess, EPROCESS, ProcessListEntry); AThread = Process->ThreadListHead.Flink; diff --git a/reactos/ntoskrnl/lpc/port.c b/reactos/ntoskrnl/lpc/port.c index 6735cc195d8..f7710930f40 100644 --- a/reactos/ntoskrnl/lpc/port.c +++ b/reactos/ntoskrnl/lpc/port.c @@ -33,11 +33,11 @@ static GENERIC_MAPPING ExpPortMapping = { NTSTATUS INIT_FUNCTION LpcpInitSystem (VOID) { - /* Allocate Memory for the LPC Object */ - LpcPortObjectType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE)); - RtlZeroMemory (LpcPortObjectType, sizeof (OBJECT_TYPE)); + /* Allocate Memory for the LPC Object */ + LpcPortObjectType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE)); + RtlZeroMemory (LpcPortObjectType, sizeof (OBJECT_TYPE)); - RtlRosInitUnicodeStringFromLiteral(&LpcPortObjectType->TypeName,L"Port"); + RtlInitUnicodeString(&LpcPortObjectType->TypeName,L"Port"); LpcPortObjectType->Tag = TAG('L', 'P', 'R', 'T'); LpcPortObjectType->PeakObjects = 0; diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index bce33095d1e..3587bff37a4 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -2127,7 +2127,7 @@ MmInitSectionImplementation(VOID) { MmSectionObjectType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE)); - RtlRosInitUnicodeStringFromLiteral(&MmSectionObjectType->TypeName, L"Section"); + RtlInitUnicodeString(&MmSectionObjectType->TypeName, L"Section"); MmSectionObjectType->Tag = TAG('S', 'E', 'C', 'T'); MmSectionObjectType->TotalObjects = 0; diff --git a/reactos/ntoskrnl/ob/namespc.c b/reactos/ntoskrnl/ob/namespc.c index fc179d003ac..23a3d3f0a9b 100644 --- a/reactos/ntoskrnl/ob/namespc.c +++ b/reactos/ntoskrnl/ob/namespc.c @@ -391,7 +391,7 @@ ObInit(VOID) ObDirectoryType->Create = ObpCreateDirectory; ObDirectoryType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&ObDirectoryType->TypeName, + RtlInitUnicodeString(&ObDirectoryType->TypeName, L"Directory"); /* create 'type' object type*/ @@ -416,7 +416,7 @@ ObInit(VOID) ObTypeObjectType->Create = NULL; ObTypeObjectType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&ObTypeObjectType->TypeName, + RtlInitUnicodeString(&ObTypeObjectType->TypeName, L"ObjectType"); /* Create security descriptor */ diff --git a/reactos/ntoskrnl/ob/symlink.c b/reactos/ntoskrnl/ob/symlink.c index 67681c31f44..88dcc5f145f 100644 --- a/reactos/ntoskrnl/ob/symlink.c +++ b/reactos/ntoskrnl/ob/symlink.c @@ -180,8 +180,8 @@ ObInitSymbolicLinkImplementation (VOID) ObSymbolicLinkType->Create = ObpCreateSymbolicLink; ObSymbolicLinkType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&ObSymbolicLinkType->TypeName, - L"SymbolicLink"); + RtlInitUnicodeString(&ObSymbolicLinkType->TypeName, + L"SymbolicLink"); ObpCreateTypeObject(ObSymbolicLinkType); } diff --git a/reactos/ntoskrnl/ps/job.c b/reactos/ntoskrnl/ps/job.c index 6d4e59ca985..b00aa0ced5c 100644 --- a/reactos/ntoskrnl/ps/job.c +++ b/reactos/ntoskrnl/ps/job.c @@ -1,11 +1,12 @@ -/* $Id:$ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/ps/job.c * PURPOSE: Job Native Functions * - * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) + * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) (stubs) + * Thomas Weidenmueller */ /* Note: Jobs are only supported on Win2K+ */ @@ -74,7 +75,7 @@ PsInitJobManagment(VOID) PsJobType->Create = NULL; PsJobType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&PsJobType->TypeName, L"Job"); + RtlInitUnicodeString(&PsJobType->TypeName, L"Job"); ObpCreateTypeObject(PsJobType); diff --git a/reactos/ntoskrnl/ps/process.c b/reactos/ntoskrnl/ps/process.c index 3244eef69f7..c8f5784a843 100644 --- a/reactos/ntoskrnl/ps/process.c +++ b/reactos/ntoskrnl/ps/process.c @@ -20,8 +20,8 @@ PEPROCESS EXPORTED PsInitialSystemProcess = NULL; POBJECT_TYPE EXPORTED PsProcessType = NULL; -LIST_ENTRY PsProcessListHead; -static KSPIN_LOCK PsProcessListLock; +LIST_ENTRY PsActiveProcessHead; +FAST_MUTEX PspActiveProcessMutex; static LARGE_INTEGER ShortPsLockDelay, PsLockTimeout; static GENERIC_MAPPING PiProcessMapping = {STANDARD_RIGHTS_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, @@ -101,7 +101,6 @@ PsExitSpecialApc(PKAPC Apc, PEPROCESS PsGetNextProcess(PEPROCESS OldProcess) { - KIRQL oldIrql; PEPROCESS NextProcess; NTSTATUS Status; @@ -119,13 +118,13 @@ PsGetNextProcess(PEPROCESS OldProcess) return PsInitialSystemProcess; } - KeAcquireSpinLock(&PsProcessListLock, &oldIrql); + ExAcquireFastMutex(&PspActiveProcessMutex); NextProcess = OldProcess; while (1) { - if (NextProcess->ProcessListEntry.Blink == &PsProcessListHead) + if (NextProcess->ProcessListEntry.Blink == &PsActiveProcessHead) { - NextProcess = CONTAINING_RECORD(PsProcessListHead.Blink, + NextProcess = CONTAINING_RECORD(PsActiveProcessHead.Blink, EPROCESS, ProcessListEntry); } @@ -154,7 +153,7 @@ PsGetNextProcess(PEPROCESS OldProcess) } } - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); ObDereferenceObject(OldProcess); return(NextProcess); @@ -281,14 +280,13 @@ PsOpenTokenOfProcess(HANDLE ProcessHandle, VOID PiKillMostProcesses(VOID) { - KIRQL oldIrql; PLIST_ENTRY current_entry; PEPROCESS current; - KeAcquireSpinLock(&PsProcessListLock, &oldIrql); + ExAcquireFastMutex(&PspActiveProcessMutex); - current_entry = PsProcessListHead.Flink; - while (current_entry != &PsProcessListHead) + current_entry = PsActiveProcessHead.Flink; + while (current_entry != &PsActiveProcessHead) { current = CONTAINING_RECORD(current_entry, EPROCESS, ProcessListEntry); @@ -301,7 +299,7 @@ PiKillMostProcesses(VOID) } } - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); } @@ -309,7 +307,6 @@ VOID INIT_FUNCTION PsInitProcessManagment(VOID) { PKPROCESS KProcess; - KIRQL oldIrql; NTSTATUS Status; ShortPsLockDelay.QuadPart = -100LL; @@ -339,12 +336,12 @@ PsInitProcessManagment(VOID) PsProcessType->Create = NULL; PsProcessType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&PsProcessType->TypeName, L"Process"); + RtlInitUnicodeString(&PsProcessType->TypeName, L"Process"); ObpCreateTypeObject(PsProcessType); - InitializeListHead(&PsProcessListHead); - KeInitializeSpinLock(&PsProcessListLock); + InitializeListHead(&PsActiveProcessHead); + ExInitializeFastMutex(&PspActiveProcessMutex); RtlZeroMemory(PiProcessNotifyRoutine, sizeof(PiProcessNotifyRoutine)); RtlZeroMemory(PiLoadImageNotifyRoutine, sizeof(PiLoadImageNotifyRoutine)); @@ -412,11 +409,9 @@ PsInitProcessManagment(VOID) PsInitialSystemProcess->Win32WindowStation = (HANDLE)0; - KeAcquireSpinLock(&PsProcessListLock, &oldIrql); - InsertHeadList(&PsProcessListHead, + InsertHeadList(&PsActiveProcessHead, &PsInitialSystemProcess->ProcessListEntry); InitializeListHead(&PsInitialSystemProcess->ThreadListHead); - KeReleaseSpinLock(&PsProcessListLock, oldIrql); SepCreateSystemProcessToken(PsInitialSystemProcess); } @@ -424,7 +419,6 @@ PsInitProcessManagment(VOID) VOID STDCALL PiDeleteProcessWorker(PVOID pContext) { - KIRQL oldIrql; PDEL_CONTEXT Context; PEPROCESS CurrentProcess; PEPROCESS Process; @@ -440,9 +434,9 @@ PiDeleteProcessWorker(PVOID pContext) KeAttachProcess(&Process->Pcb); } - KeAcquireSpinLock(&PsProcessListLock, &oldIrql); + ExAcquireFastMutex(&PspActiveProcessMutex); RemoveEntryList(&Process->ProcessListEntry); - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); /* KDB hook */ KDB_DELETEPROCESS_HOOK(Process); @@ -657,7 +651,6 @@ PspCreateProcess(OUT PHANDLE ProcessHandle, PEPROCESS Process; PEPROCESS pParentProcess; PKPROCESS KProcess; - KIRQL oldIrql; PVOID LdrStartupAddr; PVOID BaseAddress; PMEMORY_AREA MemoryArea; @@ -863,10 +856,10 @@ exitdereferenceobjects: Process->Win32WindowStation = (HANDLE)0; - KeAcquireSpinLock(&PsProcessListLock, &oldIrql); - InsertHeadList(&PsProcessListHead, &Process->ProcessListEntry); + ExAcquireFastMutex(&PspActiveProcessMutex); + InsertHeadList(&PsActiveProcessHead, &Process->ProcessListEntry); InitializeListHead(&Process->ThreadListHead); - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); ExInitializeFastMutex(&Process->TebLock); Process->Pcb.State = PROCESS_STATE_ACTIVE; @@ -1261,14 +1254,13 @@ NtOpenProcess(OUT PHANDLE ProcessHandle, } else { - KIRQL oldIrql; PLIST_ENTRY current_entry; PEPROCESS current; NTSTATUS Status; - KeAcquireSpinLock(&PsProcessListLock, &oldIrql); - current_entry = PsProcessListHead.Flink; - while (current_entry != &PsProcessListHead) + ExAcquireFastMutex(&PspActiveProcessMutex); + current_entry = PsActiveProcessHead.Flink; + while (current_entry != &PsActiveProcessHead) { current = CONTAINING_RECORD(current_entry, EPROCESS, ProcessListEntry); @@ -1285,7 +1277,7 @@ NtOpenProcess(OUT PHANDLE ProcessHandle, PsProcessType, UserMode); } - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); if (NT_SUCCESS(Status)) { Status = ObCreateHandle(PsGetCurrentProcess(), @@ -1301,7 +1293,7 @@ NtOpenProcess(OUT PHANDLE ProcessHandle, } current_entry = current_entry->Flink; } - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); DPRINT("NtOpenProcess() = STATUS_UNSUCCESSFUL\n"); return(STATUS_UNSUCCESSFUL); } @@ -2093,6 +2085,27 @@ NtSetInformationProcess(IN HANDLE ProcessHandle, } break; } + + case ProcessPriorityClass: + { + PROCESS_PRIORITY_CLASS ppc; + + _SEH_TRY + { + ppc = *(PPROCESS_PRIORITY_CLASS)ProcessInformation; + } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END; + + if(NT_SUCCESS(Status)) + { + } + + break; + } case ProcessLdtInformation: case ProcessLdtSize: @@ -2100,7 +2113,6 @@ NtSetInformationProcess(IN HANDLE ProcessHandle, case ProcessWorkingSetWatch: case ProcessUserModeIOPL: case ProcessEnableAlignmentFaultFixup: - case ProcessPriorityClass: case ProcessAffinityMask: Status = STATUS_NOT_IMPLEMENTED; break; @@ -2143,7 +2155,6 @@ PiQuerySystemProcessInformation(PVOID Buffer, return STATUS_NOT_IMPLEMENTED; #if 0 - KIRQL OldIrql; PLIST_ENTRY CurrentEntryP; PEPROCESS CurrentP; PLIST_ENTRY CurrentEntryT; @@ -2160,16 +2171,15 @@ PiQuerySystemProcessInformation(PVOID Buffer, /* Lock the process list. */ - KeAcquireSpinLock(&PsProcessListLock, - &OldIrql); + ExAcquireFastMutex(&PspActiveProcessMutex); /* * Scan the process list. Since the * list is circular, the guard is false * after the last process. */ - for ( CurrentEntryP = PsProcessListHead.Flink; - (CurrentEntryP != & PsProcessListHead); + for ( CurrentEntryP = PsActiveProcessHead.Flink; + (CurrentEntryP != & PsActiveProcessHead); CurrentEntryP = CurrentEntryP->Flink ) { @@ -2305,9 +2315,8 @@ PiQuerySystemProcessInformation(PVOID Buffer, /* * Unlock the process list. */ - KeReleaseSpinLock ( - & PsProcessListLock, - OldIrql + ExReleaseFastMutex ( + & PspActiveProcessMutex ); /* * Return the proper error status code, @@ -2541,14 +2550,13 @@ NTSTATUS STDCALL PsLookupProcessByProcessId(IN HANDLE ProcessId, OUT PEPROCESS *Process) { - KIRQL oldIrql; PLIST_ENTRY current_entry; PEPROCESS current; - KeAcquireSpinLock(&PsProcessListLock, &oldIrql); + ExAcquireFastMutex(&PspActiveProcessMutex); - current_entry = PsProcessListHead.Flink; - while (current_entry != &PsProcessListHead) + current_entry = PsActiveProcessHead.Flink; + while (current_entry != &PsActiveProcessHead) { current = CONTAINING_RECORD(current_entry, EPROCESS, @@ -2557,13 +2565,13 @@ PsLookupProcessByProcessId(IN HANDLE ProcessId, { *Process = current; ObReferenceObject(current); - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); return(STATUS_SUCCESS); } current_entry = current_entry->Flink; } - KeReleaseSpinLock(&PsProcessListLock, oldIrql); + ExReleaseFastMutex(&PspActiveProcessMutex); return(STATUS_INVALID_PARAMETER); } diff --git a/reactos/ntoskrnl/ps/thread.c b/reactos/ntoskrnl/ps/thread.c index 3acafcfd7e0..a52b70cef61 100644 --- a/reactos/ntoskrnl/ps/thread.c +++ b/reactos/ntoskrnl/ps/thread.c @@ -27,7 +27,7 @@ /* GLOBALS ******************************************************************/ -extern LIST_ENTRY PsProcessListHead; +extern LIST_ENTRY PsActiveProcessHead; POBJECT_TYPE EXPORTED PsThreadType = NULL; @@ -287,8 +287,8 @@ VOID PsDumpThreads(BOOLEAN IncludeSystem) PETHREAD Thread; ULONG nThreads = 0; - AProcess = PsProcessListHead.Flink; - while(AProcess != &PsProcessListHead) + AProcess = PsActiveProcessHead.Flink; + while(AProcess != &PsActiveProcessHead) { Process = CONTAINING_RECORD(AProcess, EPROCESS, ProcessListEntry); /* FIXME - skip suspended, ... processes? */ @@ -767,7 +767,7 @@ PsInitThreadManagment(VOID) PsThreadType->Create = NULL; PsThreadType->DuplicationNotify = NULL; - RtlRosInitUnicodeStringFromLiteral(&PsThreadType->TypeName, L"Thread"); + RtlInitUnicodeString(&PsThreadType->TypeName, L"Thread"); ObpCreateTypeObject(PsThreadType); @@ -1088,12 +1088,12 @@ PsLookupProcessThreadByCid(IN PCLIENT_ID Cid, * @implemented */ NTSTATUS STDCALL -PsLookupThreadByThreadId(IN PVOID ThreadId, +PsLookupThreadByThreadId(IN HANDLE ThreadId, OUT PETHREAD *Thread) { PCID_OBJECT CidObject; - CidObject = PsLockCidHandle((HANDLE)ThreadId, PsThreadType); + CidObject = PsLockCidHandle(ThreadId, PsThreadType); if(CidObject != NULL) { *Thread = CidObject->Obj.Thread; diff --git a/reactos/subsys/win32k/ntuser/desktop.c b/reactos/subsys/win32k/ntuser/desktop.c index 2de3f2369f4..55e4fa2f103 100644 --- a/reactos/subsys/win32k/ntuser/desktop.c +++ b/reactos/subsys/win32k/ntuser/desktop.c @@ -1138,7 +1138,7 @@ NtUserGetThreadDesktop(DWORD dwThreadId, DWORD Unknown1) return 0; } - Status = PsLookupThreadByThreadId((PVOID)dwThreadId, &Thread); + Status = PsLookupThreadByThreadId((HANDLE)dwThreadId, &Thread); if(!NT_SUCCESS(Status)) { SetLastWin32Error(ERROR_INVALID_PARAMETER); diff --git a/reactos/subsys/win32k/ntuser/hook.c b/reactos/subsys/win32k/ntuser/hook.c index 0887b192863..954bc94ef51 100644 --- a/reactos/subsys/win32k/ntuser/hook.c +++ b/reactos/subsys/win32k/ntuser/hook.c @@ -460,7 +460,7 @@ NtUserSetWindowsHookEx( } Mod = NULL; Global = FALSE; - if (! NT_SUCCESS(PsLookupThreadByThreadId((PVOID) ThreadId, &Thread))) + if (! NT_SUCCESS(PsLookupThreadByThreadId((HANDLE) ThreadId, &Thread))) { DPRINT1("Invalid thread id 0x%x\n", ThreadId); SetLastWin32Error(ERROR_INVALID_PARAMETER); diff --git a/reactos/subsys/win32k/ntuser/message.c b/reactos/subsys/win32k/ntuser/message.c index 3ec02fa815a..3b8e33a9493 100644 --- a/reactos/subsys/win32k/ntuser/message.c +++ b/reactos/subsys/win32k/ntuser/message.c @@ -1173,7 +1173,7 @@ NtUserPostThreadMessage(DWORD idThread, NTSTATUS Status; PMSGMEMORY MsgMemoryEntry; - Status = PsLookupThreadByThreadId((void *)idThread,&peThread); + Status = PsLookupThreadByThreadId((HANDLE)idThread,&peThread); if( Status == STATUS_SUCCESS ) { pThread = peThread->Tcb.Win32Thread; diff --git a/reactos/subsys/win32k/ntuser/misc.c b/reactos/subsys/win32k/ntuser/misc.c index b8acc8802d1..c2555637888 100644 --- a/reactos/subsys/win32k/ntuser/misc.c +++ b/reactos/subsys/win32k/ntuser/misc.c @@ -1179,7 +1179,7 @@ NtUserGetGUIThreadInfo( if(idThread) { - Status = PsLookupThreadByThreadId((PVOID)idThread, &Thread); + Status = PsLookupThreadByThreadId((HANDLE)idThread, &Thread); if(!NT_SUCCESS(Status)) { SetLastWin32Error(ERROR_ACCESS_DENIED); diff --git a/reactos/subsys/win32k/ntuser/window.c b/reactos/subsys/win32k/ntuser/window.c index 6b0fec11fac..b2911d9a20e 100644 --- a/reactos/subsys/win32k/ntuser/window.c +++ b/reactos/subsys/win32k/ntuser/window.c @@ -1164,7 +1164,7 @@ NtUserBuildHwndList( PLIST_ENTRY Current; PWINDOW_OBJECT Window; - Status = PsLookupThreadByThreadId((PVOID)dwThreadId, &Thread); + Status = PsLookupThreadByThreadId((HANDLE)dwThreadId, &Thread); if(!NT_SUCCESS(Status)) { SetLastWin32Error(ERROR_INVALID_PARAMETER); diff --git a/reactos/w32api/include/ddk/ntifs.h b/reactos/w32api/include/ddk/ntifs.h index 3d8b2ec1114..3a8eead52dc 100644 --- a/reactos/w32api/include/ddk/ntifs.h +++ b/reactos/w32api/include/ddk/ntifs.h @@ -3306,7 +3306,7 @@ NTKERNELAPI NTSTATUS NTAPI PsLookupThreadByThreadId ( - IN PVOID UniqueThreadId, + IN HANDLE UniqueThreadId, OUT PETHREAD *Thread ); From 18a7ecc14b2e52513a0847d706ce4c928a89fc4c Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Fri, 18 Feb 2005 01:57:32 +0000 Subject: [PATCH 098/248] 1. implemented shared sections used for (shared) desktop heaps 2. map the gdi handle table to userland svn path=/trunk/; revision=13624 --- reactos/include/win32k/gdiobj.h | 2 +- reactos/include/win32k/ntuser.h | 1 - reactos/lib/gdi32/include/precomp.h | 3 - reactos/lib/gdi32/main/dllmain.c | 2 +- reactos/ntoskrnl/include/internal/ex.h | 4 + reactos/subsys/win32k/include/ssec.h | 73 +++++ reactos/subsys/win32k/include/tags.h | 1 + reactos/subsys/win32k/main/dllmain.c | 15 + reactos/subsys/win32k/makefile | 2 +- reactos/subsys/win32k/misc/ssec.c | 420 +++++++++++++++++++++++++ reactos/subsys/win32k/ntuser/misc.c | 4 - reactos/subsys/win32k/objects/gdiobj.c | 37 ++- reactos/subsys/win32k/w32k.h | 1 + 13 files changed, 545 insertions(+), 20 deletions(-) create mode 100644 reactos/subsys/win32k/include/ssec.h create mode 100644 reactos/subsys/win32k/misc/ssec.c diff --git a/reactos/include/win32k/gdiobj.h b/reactos/include/win32k/gdiobj.h index 8d94dfa85a2..692d28d3d3b 100644 --- a/reactos/include/win32k/gdiobj.h +++ b/reactos/include/win32k/gdiobj.h @@ -118,6 +118,6 @@ BOOL INTERNAL_CALL GDIOBJ_UnlockObj (HGDIOBJ hObj); #define GDIOBJFLAG_IGNOREPID (0x1) #define GDIOBJFLAG_IGNORELOCK (0x2) -PVOID INTERNAL_CALL GDI_MapHandleTable(HANDLE hProcess); +PVOID INTERNAL_CALL GDI_MapHandleTable(PEPROCESS Process); #endif diff --git a/reactos/include/win32k/ntuser.h b/reactos/include/win32k/ntuser.h index 71f39147310..1592fd5d5e5 100644 --- a/reactos/include/win32k/ntuser.h +++ b/reactos/include/win32k/ntuser.h @@ -164,7 +164,6 @@ NtUserCallNextHookEx( #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005 #define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006 #define NOPARAM_ROUTINE_CSRSS_INITIALIZED 0xffff0007 -#define NOPARAM_ROUTINE_GDI_QUERY_TABLE 0xffff0008 DWORD STDCALL NtUserCallNoParam( diff --git a/reactos/lib/gdi32/include/precomp.h b/reactos/lib/gdi32/include/precomp.h index 1d95489956c..0985e46cca1 100644 --- a/reactos/lib/gdi32/include/precomp.h +++ b/reactos/lib/gdi32/include/precomp.h @@ -9,9 +9,6 @@ #define NTOS_MODE_USER #include -#define NtGdiQueryTable() \ - (PGDI_TABLE_ENTRY)NtUserCallNoParam(NOPARAM_ROUTINE_GDI_QUERY_TABLE) - #define NtUserGetDCBrushColor(hbr) \ (COLORREF)NtUserCallTwoParam((DWORD)(hbr), OBJ_BRUSH, TWOPARAM_ROUTINE_GETDCCOLOR) diff --git a/reactos/lib/gdi32/main/dllmain.c b/reactos/lib/gdi32/main/dllmain.c index 3eb99ed3e73..7215fca89d1 100644 --- a/reactos/lib/gdi32/main/dllmain.c +++ b/reactos/lib/gdi32/main/dllmain.c @@ -32,7 +32,7 @@ GdiProcessSetup (VOID) hProcessHeap = GetProcessHeap(); /* map the gdi handle table to user space */ - GdiHandleTable = NtGdiQueryTable(); + GdiHandleTable = NtCurrentTeb()->Peb->GdiSharedHandleTable; } diff --git a/reactos/ntoskrnl/include/internal/ex.h b/reactos/ntoskrnl/include/internal/ex.h index 8c732db7642..3596bfe2420 100644 --- a/reactos/ntoskrnl/include/internal/ex.h +++ b/reactos/ntoskrnl/include/internal/ex.h @@ -17,6 +17,8 @@ typedef enum typedef struct _WINSTATION_OBJECT { + PVOID SharedHeap; /* points to kmode memory! */ + CSHORT Type; CSHORT Size; KSPIN_LOCK Lock; @@ -44,6 +46,8 @@ typedef struct _WINSTATION_OBJECT typedef struct _DESKTOP_OBJECT { + PVOID DesktopHeap; /* points to kmode memory! */ + CSHORT Type; CSHORT Size; LIST_ENTRY ListEntry; diff --git a/reactos/subsys/win32k/include/ssec.h b/reactos/subsys/win32k/include/ssec.h new file mode 100644 index 00000000000..cead19e5ffc --- /dev/null +++ b/reactos/subsys/win32k/include/ssec.h @@ -0,0 +1,73 @@ +/* $Id$ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Win32k subsystem + * PURPOSE: shared sections + * FILE: include/ssec.h + * PROGRAMMER: Thomas Weidenmueller + * + */ + +#ifndef _WIN32K_SSEC_H +#define _WIN32K_SSEC_H + +typedef struct _SHARED_SECTION +{ + PSECTION_OBJECT SectionObject; + PVOID SystemMappedBase; + ULONG ViewSize; +} SHARED_SECTION, *PSHARED_SECTION; + +typedef struct _SHARED_SECTIONS_ARRAY +{ + struct _SHARED_SECTIONS_ARRAY *Next; + ULONG nEntries; + SHARED_SECTION SharedSection[0]; +} SHARED_SECTIONS_ARRAY, *PSHARED_SECTIONS_ARRAY; + +typedef struct _SHARED_SECTION_POOL +{ + FAST_MUTEX Lock; + ULONG PoolSize; + ULONG PoolFree; + ULONG SharedSectionCount; + SHARED_SECTIONS_ARRAY SectionsArray; +} SHARED_SECTION_POOL, *PSHARED_SECTION_POOL; + +NTSTATUS INTERNAL_CALL +IntUserCreateSharedSectionPool(IN ULONG MaximumPoolSize, + IN PSHARED_SECTION_POOL *SharedSectionPool); + +VOID INTERNAL_CALL +IntUserFreeSharedSectionPool(IN PSHARED_SECTION_POOL SharedSectionPool); + +NTSTATUS INTERNAL_CALL +InUserDeleteSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool, + IN PVOID SystemMappedBase); + +NTSTATUS INTERNAL_CALL +IntUserCreateSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool, + IN OUT PVOID *SystemMappedBase, + IN OUT ULONG *SharedSectionSize); + +NTSTATUS INTERNAL_CALL +IntUserMapSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool, + IN PEPROCESS Process, + IN PVOID SystemMappedBase, + IN PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PVOID *UserMappedBase, + IN PULONG ViewSize OPTIONAL, + IN BOOLEAN ReadOnly); + +NTSTATUS INTERNAL_CALL +IntUserUnMapSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool, + IN PEPROCESS Process, + IN PVOID SystemMappedBase, + IN PVOID UserMappedBase); + +extern PSHARED_SECTION_POOL SessionSharedSectionPool; + +#endif /* ! defined(_WIN32K_SSEC_H) */ + +/* EOF */ + diff --git a/reactos/subsys/win32k/include/tags.h b/reactos/subsys/win32k/include/tags.h index 628d72829e1..88634b7b1cd 100644 --- a/reactos/subsys/win32k/include/tags.h +++ b/reactos/subsys/win32k/include/tags.h @@ -54,5 +54,6 @@ /* misc */ #define TAG_DRIVER TAG('G', 'D', 'R', 'V') /* video drivers */ #define TAG_FNTFILE TAG('F', 'N', 'T', 'F') /* font file */ +#define TAG_SSECTPOOL TAG('S', 'S', 'C', 'P') /* shared section pool */ #endif /* _WIN32K_TAGS_H */ diff --git a/reactos/subsys/win32k/main/dllmain.c b/reactos/subsys/win32k/main/dllmain.c index 9a902d0284f..b0c46d2c961 100644 --- a/reactos/subsys/win32k/main/dllmain.c +++ b/reactos/subsys/win32k/main/dllmain.c @@ -51,6 +51,8 @@ extern SSDT Win32kSSDT[]; extern SSPT Win32kSSPT[]; extern ULONG Win32kNumberOfSysCalls; +PSHARED_SECTION_POOL SessionSharedSectionPool = NULL; + NTSTATUS STDCALL Win32kProcessCallback (struct _EPROCESS *Process, BOOLEAN Create) @@ -76,6 +78,12 @@ Win32kProcessCallback (struct _EPROCESS *Process, Win32Process->KeyboardLayout = W32kGetDefaultKeyLayout(); + if(Process->Peb != NULL) + { + /* map the gdi handle table to user land */ + Process->Peb->GdiSharedHandleTable = GDI_MapHandleTable(Process); + } + /* setup process flags */ Win32Process->Flags = 0; } @@ -237,6 +245,13 @@ DllMain ( sizeof(W32THREAD), sizeof(W32PROCESS)); + Status = IntUserCreateSharedSectionPool(48 * 1024 * 1024, /* 48 MB by default */ + &SessionSharedSectionPool); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to initialize the shared section pool: Status 0x%x\n", Status); + } + Status = InitWindowStationImpl(); if (!NT_SUCCESS(Status)) { diff --git a/reactos/subsys/win32k/makefile b/reactos/subsys/win32k/makefile index e27e70b05f0..f568085ee8a 100644 --- a/reactos/subsys/win32k/makefile +++ b/reactos/subsys/win32k/makefile @@ -53,7 +53,7 @@ ENG_OBJECTS= eng/debug.o eng/error.o eng/mem.o eng/brush.o eng/bitblt.o \ MAIN_OBJECTS = main/dllmain.o main/svctabm.o -MISC_OBJECTS = misc/driver.o misc/error.o misc/math.o misc/object.o +MISC_OBJECTS = misc/driver.o misc/error.o misc/math.o misc/object.o misc/ssec.o LDR_OBJECTS = ldr/loader.o diff --git a/reactos/subsys/win32k/misc/ssec.c b/reactos/subsys/win32k/misc/ssec.c new file mode 100644 index 00000000000..8dd28a8371e --- /dev/null +++ b/reactos/subsys/win32k/misc/ssec.c @@ -0,0 +1,420 @@ +/* + * ReactOS W32 Subsystem + * Copyright (C) 1998 - 2005 ReactOS Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * PURPOSE: shared sections support + * FILE: subsys/win32k/misc/ssec.c + * PROGRAMER: Thomas Weidenmueller + */ + +#include + +#define NDEBUG +#include + +/* + * FIXME - instead of mapping the memory into system space using + * MmMapViewInSystemSpace() we should rather use + * MmMapViewInSessionSpace() to map it into session space! + */ + +NTSTATUS INTERNAL_CALL +IntUserCreateSharedSectionPool(IN ULONG MaximumPoolSize, + IN PSHARED_SECTION_POOL *SharedSectionPool) +{ + PSHARED_SECTION_POOL Pool; + ULONG PoolStructSize; + + ASSERT(SharedSectionPool); + + PoolStructSize = ROUND_UP(sizeof(SHARED_SECTION_POOL), PAGE_SIZE); + Pool = ExAllocatePoolWithTag(NonPagedPool, + PoolStructSize, + TAG_SSECTPOOL); + if(Pool != NULL) + { + RtlZeroMemory(Pool, PoolStructSize); + + /* initialize the session heap */ + ExInitializeFastMutex(&Pool->Lock); + Pool->PoolSize = ROUND_UP(MaximumPoolSize, PAGE_SIZE); + Pool->PoolFree = Pool->PoolSize; + Pool->SharedSectionCount = 0; + Pool->SectionsArray.Next = NULL; + Pool->SectionsArray.nEntries = ((PoolStructSize - sizeof(SHARED_SECTION_POOL)) / + sizeof(SHARED_SECTION)) - 1; + + ASSERT(Pool->SectionsArray.nEntries > 0); + + *SharedSectionPool = Pool; + + return STATUS_SUCCESS; + } + + return STATUS_INSUFFICIENT_RESOURCES; +} + + +VOID INTERNAL_CALL +IntUserFreeSharedSectionPool(IN PSHARED_SECTION_POOL SharedSectionPool) +{ + PSHARED_SECTIONS_ARRAY Array, OldArray; + PSHARED_SECTION SharedSection, LastSharedSection; + + ASSERT(SharedSectionPool); + + Array = &SharedSectionPool->SectionsArray; + + ExAcquireFastMutex(&SharedSectionPool->Lock); + while(SharedSectionPool->SharedSectionCount > 0 && Array != NULL) + { + for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries; + SharedSection != LastSharedSection && SharedSectionPool->SharedSectionCount > 0; + SharedSection++) + { + if(SharedSection->SectionObject != NULL) + { + ASSERT(SharedSection->SystemMappedBase); + + /* FIXME - use MmUnmapViewInSessionSpace() once implemented! */ + MmUnmapViewInSystemSpace(SharedSection->SystemMappedBase); + /* dereference the keep-alive reference so the section get's deleted */ + ObDereferenceObject(SharedSection->SectionObject); + + SharedSectionPool->SharedSectionCount--; + } + } + + OldArray = Array; + Array = Array->Next; + + /* all shared sections in this array were freed, link the following array to + the main session heap and free this array */ + SharedSectionPool->SectionsArray.Next = Array; + ExFreePool(OldArray); + } + + ASSERT(SharedSectionPool->SectionsArray.Next == NULL); + ASSERT(SharedSectionPool->SharedSectionCount == 0); + + ExReleaseFastMutex(&SharedSectionPool->Lock); +} + + +NTSTATUS INTERNAL_CALL +IntUserCreateSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool, + IN OUT PVOID *SystemMappedBase, + IN OUT ULONG *SharedSectionSize) +{ + PSHARED_SECTIONS_ARRAY Array, LastArray; + PSHARED_SECTION FreeSharedSection, SharedSection, LastSharedSection; + LARGE_INTEGER SectionSize; + ULONG Size; + NTSTATUS Status; + + ASSERT(SharedSectionPool && SharedSectionSize && (*SharedSectionSize) > 0 && SystemMappedBase); + + FreeSharedSection = NULL; + + Size = ROUND_UP(*SharedSectionSize, PAGE_SIZE); + + ExAcquireFastMutex(&SharedSectionPool->Lock); + + if(Size > SharedSectionPool->PoolFree) + { + ExReleaseFastMutex(&SharedSectionPool->Lock); + DPRINT1("Shared Section Pool limit (0x%x KB) reached, attempted to allocate a 0x%x KB shared section!\n", + SharedSectionPool->PoolSize / 1024, (*SharedSectionSize) / 1024); + return STATUS_INSUFFICIENT_RESOURCES; + } + + /* walk the array to find a free entry */ + for(Array = &SharedSectionPool->SectionsArray, LastArray = Array; + Array != NULL && FreeSharedSection == NULL; + Array = Array->Next) + { + LastArray = Array; + + for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries; + SharedSection != LastSharedSection; + SharedSection++) + { + if(SharedSection->SectionObject == NULL) + { + FreeSharedSection = SharedSection; + break; + } + } + + if(Array->Next != NULL) + { + LastArray = Array; + } + } + + ASSERT(LastArray); + + if(FreeSharedSection == NULL) + { + ULONG nNewEntries; + PSHARED_SECTIONS_ARRAY NewArray; + + ASSERT(LastArray->Next == NULL); + + /* couldn't find a free entry in the array, extend the array */ + + nNewEntries = ((PAGE_SIZE - sizeof(SHARED_SECTIONS_ARRAY)) / sizeof(SHARED_SECTION)) + 1; + NewArray = ExAllocatePoolWithTag(NonPagedPool, + sizeof(SHARED_SECTIONS_ARRAY) + ((nNewEntries - 1) * + sizeof(SHARED_SECTION)), + TAG_SSECTPOOL); + if(NewArray == NULL) + { + ExReleaseFastMutex(&SharedSectionPool->Lock); + DPRINT1("Failed to allocate new array for shared sections!\n"); + return STATUS_INSUFFICIENT_RESOURCES; + } + + NewArray->nEntries = nNewEntries; + NewArray->Next = NULL; + LastArray->Next = NewArray; + + Array = NewArray; + FreeSharedSection = &Array->SharedSection[0]; + } + + ASSERT(FreeSharedSection); + + /* now allocate a real section */ + + SectionSize.QuadPart = Size; + Status = MmCreateSection(&FreeSharedSection->SectionObject, + SECTION_ALL_ACCESS, + NULL, + &SectionSize, + PAGE_EXECUTE_READWRITE, + SEC_COMMIT, + NULL, + NULL); + if(NT_SUCCESS(Status)) + { + Status = MmMapViewInSystemSpace(FreeSharedSection->SectionObject, + &FreeSharedSection->SystemMappedBase, + &FreeSharedSection->ViewSize); + if(NT_SUCCESS(Status)) + { + (*SharedSectionSize) -= Size; + SharedSectionPool->SharedSectionCount++; + + *SystemMappedBase = FreeSharedSection->SystemMappedBase; + *SharedSectionSize = FreeSharedSection->ViewSize; + } + else + { + ObDereferenceObject(FreeSharedSection->SectionObject); + FreeSharedSection->SectionObject = NULL; + DPRINT1("Failed to map the shared section into system space! Status 0x%x\n", Status); + } + } + + ExReleaseFastMutex(&SharedSectionPool->Lock); + + return Status; +} + + +NTSTATUS INTERNAL_CALL +InUserDeleteSharedSection(PSHARED_SECTION_POOL SharedSectionPool, + PVOID SystemMappedBase) +{ + PSHARED_SECTIONS_ARRAY Array; + PSECTION_OBJECT SectionObject; + PSHARED_SECTION SharedSection, LastSharedSection; + NTSTATUS Status; + + ASSERT(SharedSectionPool && SystemMappedBase); + + SectionObject = NULL; + + ExAcquireFastMutex(&SharedSectionPool->Lock); + + for(Array = &SharedSectionPool->SectionsArray; + Array != NULL && SectionObject == NULL; + Array = Array->Next) + { + for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries; + SharedSection != LastSharedSection; + SharedSection++) + { + if(SharedSection->SystemMappedBase == SystemMappedBase) + { + SectionObject = SharedSection->SectionObject; + SharedSection->SectionObject = NULL; + SharedSection->SystemMappedBase = NULL; + + ASSERT(SharedSectionPool->SharedSectionCount > 0); + SharedSectionPool->SharedSectionCount--; + break; + } + } + } + + ExReleaseFastMutex(&SharedSectionPool->Lock); + + if(SectionObject != NULL) + { + Status = MmUnmapViewInSystemSpace(SystemMappedBase); + ObDereferenceObject(SectionObject); + } + else + { + DPRINT1("Couldn't find and delete a shared section with SystemMappedBase=0x%x!\n", SystemMappedBase); + Status = STATUS_UNSUCCESSFUL; + } + + return Status; +} + + +NTSTATUS INTERNAL_CALL +IntUserMapSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool, + IN PEPROCESS Process, + IN PVOID SystemMappedBase, + IN PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PVOID *UserMappedBase, + IN PULONG ViewSize OPTIONAL, + IN BOOLEAN ReadOnly) +{ + PSHARED_SECTIONS_ARRAY Array; + PSECTION_OBJECT SectionObject; + PSHARED_SECTION SharedSection, LastSharedSection; + NTSTATUS Status; + + ASSERT(SharedSectionPool && Process && SystemMappedBase && UserMappedBase); + + SectionObject = NULL; + + ExAcquireFastMutex(&SharedSectionPool->Lock); + + for(Array = &SharedSectionPool->SectionsArray; + Array != NULL && SectionObject == NULL; + Array = Array->Next) + { + for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries; + SharedSection != LastSharedSection; + SharedSection++) + { + if(SharedSection->SystemMappedBase == SystemMappedBase) + { + SectionObject = SharedSection->SectionObject; + break; + } + } + } + + if(SectionObject != NULL) + { + ULONG RealViewSize = (ViewSize ? min(*ViewSize, SharedSection->ViewSize) : SharedSection->ViewSize); + + ObReferenceObjectByPointer(SectionObject, + (ReadOnly ? SECTION_MAP_READ : SECTION_MAP_READ | SECTION_MAP_WRITE), + NULL, + KernelMode); + + Status = MmMapViewOfSection(SectionObject, + Process, + UserMappedBase, + 0, + 0, + SectionOffset, + &RealViewSize, + ViewUnmap, /* not sure if we should inherit it... */ + MEM_COMMIT, + (ReadOnly ? PAGE_READONLY : PAGE_READWRITE)); + if(!NT_SUCCESS(Status)) + { + DPRINT1("Failed to map shared section (readonly=%d) into user memory! Status: 0x%x\n", ReadOnly, Status); + } + } + else + { + DPRINT1("Couldn't find and map a shared section with SystemMappedBase=0x%x!\n", SystemMappedBase); + Status = STATUS_UNSUCCESSFUL; + } + + ExReleaseFastMutex(&SharedSectionPool->Lock); + + return Status; +} + + +NTSTATUS INTERNAL_CALL +IntUserUnMapSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool, + IN PEPROCESS Process, + IN PVOID SystemMappedBase, + IN PVOID UserMappedBase) +{ + PSHARED_SECTIONS_ARRAY Array; + PSECTION_OBJECT SectionObject; + PSHARED_SECTION SharedSection, LastSharedSection; + NTSTATUS Status; + + ASSERT(SharedSectionPool && Process && SystemMappedBase && UserMappedBase); + + SectionObject = NULL; + + ExAcquireFastMutex(&SharedSectionPool->Lock); + + for(Array = &SharedSectionPool->SectionsArray; + Array != NULL && SectionObject == NULL; + Array = Array->Next) + { + for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries; + SharedSection != LastSharedSection; + SharedSection++) + { + if(SharedSection->SystemMappedBase == SystemMappedBase) + { + SectionObject = SharedSection->SectionObject; + break; + } + } + } + + ExReleaseFastMutex(&SharedSectionPool->Lock); + + if(SectionObject != NULL) + { + Status = MmUnmapViewOfSection(Process, + UserMappedBase); + ObDereferenceObject(SectionObject); + if(!NT_SUCCESS(Status)) + { + DPRINT1("Failed to unmap shared section UserMappedBase=0x%x! Status: 0x%x\n", UserMappedBase, Status); + } + } + else + { + DPRINT1("Couldn't find and unmap a shared section with SystemMappedBase=0x%x!\n", SystemMappedBase); + Status = STATUS_UNSUCCESSFUL; + } + + return Status; +} diff --git a/reactos/subsys/win32k/ntuser/misc.c b/reactos/subsys/win32k/ntuser/misc.c index c2555637888..7135b288fa4 100644 --- a/reactos/subsys/win32k/ntuser/misc.c +++ b/reactos/subsys/win32k/ntuser/misc.c @@ -131,10 +131,6 @@ NtUserCallNoParam(DWORD Routine) Result = (DWORD)CsrInit(); break; - case NOPARAM_ROUTINE_GDI_QUERY_TABLE: - Result = (DWORD)GDI_MapHandleTable(NtCurrentProcess()); - break; - case NOPARAM_ROUTINE_MSQCLEARWAKEMASK: return (DWORD)IntMsqClearWakeMask(); diff --git a/reactos/subsys/win32k/objects/gdiobj.c b/reactos/subsys/win32k/objects/gdiobj.c index 79902d92b1e..927bfc65d6c 100644 --- a/reactos/subsys/win32k/objects/gdiobj.c +++ b/reactos/subsys/win32k/objects/gdiobj.c @@ -58,13 +58,15 @@ KeRosGetStackFrames ( PULONG Frames, ULONG FrameCount ); typedef struct _GDI_HANDLE_TABLE { + /* the table must be located at the beginning of this structure so it can be + properly mapped! */ + GDI_TABLE_ENTRY Entries[GDI_HANDLE_COUNT]; + PPAGED_LOOKASIDE_LIST LookasideLists; SLIST_HEADER FreeEntriesHead; SLIST_ENTRY FreeEntries[((GDI_HANDLE_COUNT * sizeof(GDI_TABLE_ENTRY)) << 3) / (sizeof(SLIST_ENTRY) << 3)]; - - GDI_TABLE_ENTRY Entries[GDI_HANDLE_COUNT]; } GDI_HANDLE_TABLE, *PGDI_HANDLE_TABLE; typedef struct @@ -125,11 +127,17 @@ static PGDI_HANDLE_TABLE INTERNAL_CALL GDIOBJ_iAllocHandleTable(VOID) { PGDI_HANDLE_TABLE handleTable; + ULONG htSize; UINT ObjType; UINT i; PGDI_TABLE_ENTRY Entry; - handleTable = ExAllocatePoolWithTag(NonPagedPool, sizeof(GDI_HANDLE_TABLE), TAG_GDIHNDTBLE); + handleTable = NULL; + htSize = sizeof(GDI_HANDLE_TABLE); + + IntUserCreateSharedSection(SessionSharedSectionPool, + (PVOID*)&handleTable, + &htSize); ASSERT( handleTable ); RtlZeroMemory(handleTable, sizeof(GDI_HANDLE_TABLE)); @@ -148,7 +156,8 @@ GDIOBJ_iAllocHandleTable(VOID) TAG_GDIHNDTBLE); if(handleTable->LookasideLists == NULL) { - ExFreePool(handleTable); + InUserDeleteSharedSection(SessionSharedSectionPool, + handleTable); return NULL; } @@ -1479,12 +1488,22 @@ LockHandleFrom: } PVOID INTERNAL_CALL -GDI_MapHandleTable(HANDLE hProcess) +GDI_MapHandleTable(PEPROCESS Process) { - DPRINT("%s:%i: %s(): FIXME - Map handle table into the process memory space!\n", - __FILE__, __LINE__, __FUNCTION__); - /* FIXME - Map the entire gdi handle table read-only to userland into the - scope of hProcess and return the pointer */ + ULONG TableSize = sizeof(HandleTable->Entries); + PVOID MappedGdiTable = NULL; /* FIXME - try preferred GDI_HANDLE_TABLE_BASE_ADDRESS? */ + NTSTATUS Status = IntUserMapSharedSection(SessionSharedSectionPool, + Process, + HandleTable, + NULL, + &MappedGdiTable, + &TableSize, + TRUE); + if(NT_SUCCESS(Status)) + { + return MappedGdiTable; + } + return NULL; } diff --git a/reactos/subsys/win32k/w32k.h b/reactos/subsys/win32k/w32k.h index c9f8c2e2cf6..d28d485e6fa 100644 --- a/reactos/subsys/win32k/w32k.h +++ b/reactos/subsys/win32k/w32k.h @@ -28,6 +28,7 @@ #include #include +#include #include #include #include From d9c59d586a3257e002730fd30a44c168e1cf45a9 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Fri, 18 Feb 2005 02:28:16 +0000 Subject: [PATCH 099/248] remove duplicate typedef svn path=/trunk/; revision=13625 --- reactos/lib/crt/stdlib/atexit.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/reactos/lib/crt/stdlib/atexit.c b/reactos/lib/crt/stdlib/atexit.c index 7f6fa95f19e..c58e534b773 100644 --- a/reactos/lib/crt/stdlib/atexit.c +++ b/reactos/lib/crt/stdlib/atexit.c @@ -2,8 +2,6 @@ #include #include -typedef int (* _onexit_t)(void); - /* * @implemented * From a3b58dfa4c5473dbebda96bbfc6889261f6e7175 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Fri, 18 Feb 2005 02:41:49 +0000 Subject: [PATCH 100/248] remove duplicate typedef svn path=/trunk/; revision=13626 --- reactos/lib/crt/stdlib/wcstombs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/lib/crt/stdlib/wcstombs.c b/reactos/lib/crt/stdlib/wcstombs.c index bfb3112db2b..3d99e01f51f 100644 --- a/reactos/lib/crt/stdlib/wcstombs.c +++ b/reactos/lib/crt/stdlib/wcstombs.c @@ -38,7 +38,7 @@ static const unsigned char encoding_byte[] = /* We don't need the state really because we don't have shift states to maintain between calls to this function. */ -typedef int mbstate_t; + static mbstate_t mbstate_internal; From 738f6ff9160cad11a6422f8536b8c91305271765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Fri, 18 Feb 2005 09:17:56 +0000 Subject: [PATCH 101/248] We don't have separate .sym files anymore svn path=/trunk/; revision=13627 --- reactos/Makefile | 6 ------ reactos/tools/helper.mk | 3 +-- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/reactos/Makefile b/reactos/Makefile index 95e2f4164e7..9a0a51de9d9 100644 --- a/reactos/Makefile +++ b/reactos/Makefile @@ -983,8 +983,6 @@ install_clean: $(RM) $(INSTALL_DIR)/system32/config/*.* $(HALFVERBOSEECHO) [RM] $(INSTALL_DIR)/system32/*.* $(RM) $(INSTALL_DIR)/system32/*.* - $(HALFVERBOSEECHO) [RM] $(INSTALL_DIR)/symbols/*.* - $(RM) $(INSTALL_DIR)/symbols/*.* $(HALFVERBOSEECHO) [RM] $(INSTALL_DIR)/media/fonts/*.* $(RM) $(INSTALL_DIR)/media/fonts/*.* $(HALFVERBOSEECHO) [RM] $(INSTALL_DIR)/media/*.* @@ -999,8 +997,6 @@ install_clean: $(RMDIR) $(INSTALL_DIR)/system32/config $(HALFVERBOSEECHO) [RMDIR] $(INSTALL_DIR)/system32 $(RMDIR) $(INSTALL_DIR)/system32 - $(HALFVERBOSEECHO) [RMDIR] $(INSTALL_DIR)/symbols - $(RMDIR) $(INSTALL_DIR)/symbols $(HALFVERBOSEECHO) [RMDIR] $(INSTALL_DIR)/media/fonts $(RMDIR) $(INSTALL_DIR)/media/fonts $(HALFVERBOSEECHO) [RMDIR] $(INSTALL_DIR)/media @@ -1023,8 +1019,6 @@ install_dirs: $(RMKDIR) $(INSTALL_DIR)/media $(HALFVERBOSEECHO) [RMKDIR] $(INSTALL_DIR)/media/fonts $(RMKDIR) $(INSTALL_DIR)/media/fonts - $(HALFVERBOSEECHO) [RMKDIR] $(INSTALL_DIR)/symbols - $(RMKDIR) $(INSTALL_DIR)/symbols $(HALFVERBOSEECHO) [RMKDIR] $(INSTALL_DIR)/system32 $(RMKDIR) $(INSTALL_DIR)/system32 $(HALFVERBOSEECHO) [RMKDIR] $(INSTALL_DIR)/system32/config diff --git a/reactos/tools/helper.mk b/reactos/tools/helper.mk index da8365b05dd..7790910fa6a 100644 --- a/reactos/tools/helper.mk +++ b/reactos/tools/helper.mk @@ -926,10 +926,9 @@ MK_CLEANFILES := $(filter %.o,$(MK_OBJECTS)) MK_CLEANFILTERED := $(MK_OBJECTS:.o=.d) $(TARGET_PCH:.h=.d) MK_CLEANDEPS := $(join $(dir $(MK_CLEANFILTERED)), $(addprefix ., $(notdir $(MK_CLEANFILTERED)))) -# FIXME: The $(MK_BASENAME).sym can be removed around 15 Feb 2005 clean: $(MK_REGTESTS_CLEAN) $(SUBDIRS:%=%_clean) $(HALFVERBOSEECHO) [CLEAN] - - $(RM) *.o $(MK_PCHCLEAN) $(MK_BASENAME).sym $(MK_BASENAME).a $(MK_RESOURCE) \ + - $(RM) *.o $(MK_PCHCLEAN) $(MK_BASENAME).a $(MK_RESOURCE) \ $(MK_FULLNAME) $(MK_NOSTRIPNAME) $(MK_CLEANFILES) $(MK_CLEANDEPS) $(MK_BASENAME).map \ junk.tmp base.tmp temp.exp $(MK_RC_BINARIES) $(MK_SPECDEF) $(MK_STUBS_SRC) \ $(MK_GENERATED_MAKEFILE) $(TARGET_CLEAN) From d786cecb72bf561f3a1f1a89b053fc6af989e384 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Fri, 18 Feb 2005 12:54:17 +0000 Subject: [PATCH 102/248] implemented reuse counters for gdi objects svn path=/trunk/; revision=13628 --- reactos/include/win32k/gdiobj.h | 23 ++--- reactos/subsys/win32k/objects/gdiobj.c | 127 ++++++------------------- reactos/subsys/win32k/objects/region.c | 85 ++++++++--------- 3 files changed, 79 insertions(+), 156 deletions(-) diff --git a/reactos/include/win32k/gdiobj.h b/reactos/include/win32k/gdiobj.h index 692d28d3d3b..1640e2d37f1 100644 --- a/reactos/include/win32k/gdiobj.h +++ b/reactos/include/win32k/gdiobj.h @@ -19,13 +19,16 @@ #define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1) #define GDI_HANDLE_TYPE_MASK 0x007f0000 #define GDI_HANDLE_STOCK_MASK 0x00800000 +#define GDI_HANDLE_REUSE_MASK 0xff000000 + +#define GDI_HANDLE_REUSECNT_SHIFT 24 #define GDI_HANDLE_CREATE(i, t) ((HANDLE)(((i) & GDI_HANDLE_INDEX_MASK) | ((t) & GDI_HANDLE_TYPE_MASK))) -#define GDI_HANDLE_GET_INDEX(h) (((DWORD)(h)) & GDI_HANDLE_INDEX_MASK) -#define GDI_HANDLE_GET_TYPE(h) (((DWORD)(h)) & GDI_HANDLE_TYPE_MASK) -#define GDI_HANDLE_IS_TYPE(h, t) ((t) == (((DWORD)(h)) & GDI_HANDLE_TYPE_MASK)) -#define GDI_HANDLE_IS_STOCKOBJ(h) (0 != (((DWORD)(h)) & GDI_HANDLE_STOCK_MASK)) -#define GDI_HANDLE_SET_STOCKOBJ(h) ((h) = (HANDLE)(((DWORD)(h)) | GDI_HANDLE_STOCK_MASK)) +#define GDI_HANDLE_GET_INDEX(h) (((ULONG_PTR)(h)) & GDI_HANDLE_INDEX_MASK) +#define GDI_HANDLE_GET_TYPE(h) (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK) +#define GDI_HANDLE_IS_TYPE(h, t) ((t) == (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK)) +#define GDI_HANDLE_IS_STOCKOBJ(h) (0 != (((ULONG_PTR)(h)) & GDI_HANDLE_STOCK_MASK)) +#define GDI_HANDLE_SET_STOCKOBJ(h) ((h) = (HANDLE)(((ULONG_PTR)(h)) | GDI_HANDLE_STOCK_MASK)) /*! \defgroup GDI object types @@ -74,20 +77,10 @@ typedef struct _GDIOBJHDR #endif } GDIOBJHDR, *PGDIOBJHDR; -typedef struct _GDIMULTILOCK -{ - HGDIOBJ hObj; - PGDIOBJ pObj; - DWORD ObjectType; -} GDIMULTILOCK, *PGDIMULTILOCK; - -BOOL INTERNAL_CALL GDIOBJ_LockMultipleObj(PGDIMULTILOCK pList, INT nObj); -BOOL INTERNAL_CALL GDIOBJ_UnlockMultipleObj(PGDIMULTILOCK pList, INT nObj); BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle); void INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner); void INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo); BOOL INTERNAL_CALL GDIOBJ_ConvertToStockObj(HGDIOBJ *hObj); -BOOL INTERNAL_CALL GDIOBJ_LockMultipleObj(PGDIMULTILOCK pList, INT nObj); #define GDIOBJ_GetObjectType(Handle) \ GDI_HANDLE_GET_TYPE(Handle) diff --git a/reactos/subsys/win32k/objects/gdiobj.c b/reactos/subsys/win32k/objects/gdiobj.c index 927bfc65d6c..f883af8d4a3 100644 --- a/reactos/subsys/win32k/objects/gdiobj.c +++ b/reactos/subsys/win32k/objects/gdiobj.c @@ -377,28 +377,31 @@ GDIOBJ_AllocObj(ULONG ObjectType) RtlZeroMemory(ObjectBody, GetObjectSize(ObjectType)); - TypeInfo = (ObjectType & 0xFFFF0000) | (ObjectType >> 16); + TypeInfo = (ObjectType & GDI_HANDLE_TYPE_MASK) | (ObjectType >> 16); FreeEntry = InterlockedPopEntrySList(&HandleTable->FreeEntriesHead); if(FreeEntry != NULL) { HANDLE PrevProcId; UINT Index; - HGDIOBJ Handle; /* calculate the entry from the address of the entry in the free slot array */ Index = ((ULONG_PTR)FreeEntry - (ULONG_PTR)&HandleTable->FreeEntries[0]) / sizeof(HandleTable->FreeEntries[0]); Entry = &HandleTable->Entries[Index]; - Handle = (HGDIOBJ)((Index & 0xFFFF) | (ObjectType & 0xFFFF0000)); LockHandle: PrevProcId = InterlockedCompareExchangePointer(&Entry->ProcessId, LockedProcessId, 0); if(PrevProcId == NULL) { + HGDIOBJ Handle; + ASSERT(Entry->KernelData == NULL); Entry->KernelData = ObjectBody; + + /* copy the reuse-counter */ + TypeInfo |= Entry->Type & GDI_HANDLE_REUSE_MASK; /* we found a free entry, no need to exchange this field atomically since we're holding the lock */ @@ -416,6 +419,7 @@ LockHandle: { InterlockedIncrement(&W32Process->GDIObjects); } + Handle = (HGDIOBJ)((Index & 0xFFFF) | (TypeInfo & (GDI_HANDLE_TYPE_MASK | GDI_HANDLE_REUSE_MASK))); DPRINT("GDIOBJ_AllocObj: 0x%x ob: 0x%x\n", Handle, ObjectBody); return Handle; @@ -425,7 +429,7 @@ LockHandle: #ifdef GDI_DEBUG if(++Attempts > 20) { - DPRINT1("[%d]Waiting on 0x%x\n", Attempts, Handle); + DPRINT1("[%d]Waiting on handle in index 0x%x\n", Attempts, Index); } #endif /* damn, someone is trying to lock the object even though it doesn't @@ -508,7 +512,8 @@ LockHandle: PrevProcId = InterlockedCompareExchangePointer(&Entry->ProcessId, LockedProcessId, ProcessId); if(PrevProcId == ProcessId) { - if(Entry->Type != 0 && Entry->KernelData != NULL && (ExpectedType == 0 || ((Entry->Type << 16) == ExpectedType))) + if(Entry->Type != 0 && Entry->KernelData != NULL && + (ExpectedType == 0 || ((Entry->Type << 16) == ExpectedType))) { PGDIOBJHDR GdiHdr; @@ -520,8 +525,8 @@ LockHandle: PW32PROCESS W32Process = PsGetWin32Process(); ULONG Type = Entry->Type << 16; - /* Clear the type field so when unlocking the handle it gets finally deleted */ - Entry->Type = 0; + /* Clear the type field so when unlocking the handle it gets finally deleted and increment reuse counter */ + Entry->Type = ((Entry->Type >> GDI_HANDLE_REUSECNT_SHIFT) + 1) << GDI_HANDLE_REUSECNT_SHIFT; Entry->KernelData = NULL; /* unlock the handle slot */ @@ -551,8 +556,9 @@ LockHandle: else { /* the object is currently locked. just clear the type field so when the - object gets unlocked it will be finally deleted from the table. */ - Entry->Type = 0; + object gets unlocked it will be finally deleted from the table. Also + incrment the reuse counter! */ + Entry->Type = ((Entry->Type >> GDI_HANDLE_REUSECNT_SHIFT) + 1) << GDI_HANDLE_REUSECNT_SHIFT; /* unlock the handle slot */ InterlockedExchangePointer(&Entry->ProcessId, NULL); @@ -563,7 +569,7 @@ LockHandle: } else { - if(Entry->Type != 0) + if((Entry->Type & ~GDI_HANDLE_REUSE_MASK) != 0) { DPRINT1("Attempted to delete object 0x%x, type mismatch (0x%x : 0x%x)\n", hObj, ObjectType, ExpectedType); } @@ -609,85 +615,6 @@ LockHandle: return FALSE; } -/*! - * Lock multiple objects. Use this function when you need to lock multiple objects and some of them may be - * duplicates. You should use this function to avoid trying to lock the same object twice! - * - * \param pList pointer to the list that contains handles to the objects. You should set hObj and ObjectType fields. - * \param nObj number of objects to lock - * \return for each entry in pList this function sets pObj field to point to the object. - * - * \note this function uses an O(n^2) algoritm because we shouldn't need to call it with more than 3 or 4 objects. -*/ -BOOL INTERNAL_CALL -GDIOBJ_LockMultipleObj(PGDIMULTILOCK pList, INT nObj) -{ - INT i, j; - ASSERT( pList ); - /* FIXME - check for "invalid" handles */ - /* go through the list checking for duplicate objects */ - for (i = 0; i < nObj; i++) - { - pList[i].pObj = NULL; - for (j = 0; j < i; j++) - { - if (pList[i].hObj == pList[j].hObj) - { - /* already locked, so just copy the pointer to the object */ - pList[i].pObj = pList[j].pObj; - break; - } - } - - if (NULL == pList[i].pObj) - { - /* object hasn't been locked, so lock it. */ - if (NULL != pList[i].hObj) - { - pList[i].pObj = GDIOBJ_LockObj(pList[i].hObj, pList[i].ObjectType); - } - } - } - - return TRUE; -} - -/*! - * Unlock multiple objects. Use this function when you need to unlock multiple objects and some of them may be - * duplicates. - * - * \param pList pointer to the list that contains handles to the objects. You should set hObj and ObjectType fields. - * \param nObj number of objects to lock - * - * \note this function uses O(n^2) algoritm because we shouldn't need to call it with more than 3 or 4 objects. -*/ -BOOL INTERNAL_CALL -GDIOBJ_UnlockMultipleObj(PGDIMULTILOCK pList, INT nObj) -{ - INT i, j; - ASSERT(pList); - - /* go through the list checking for duplicate objects */ - for (i = 0; i < nObj; i++) - { - if (NULL != pList[i].pObj) - { - for (j = i + 1; j < nObj; j++) - { - if ((pList[i].pObj == pList[j].pObj)) - { - /* set the pointer to zero for all duplicates */ - pList[j].pObj = NULL; - } - } - GDIOBJ_UnlockObj(pList[i].hObj); - pList[i].pObj = NULL; - } - } - - return TRUE; -} - /*! * Initialization of the GDI object engine. */ @@ -744,11 +671,11 @@ GDI_CleanupForProcess (struct _EPROCESS *Process) End = &HandleTable->Entries[GDI_HANDLE_COUNT]; for(Entry = &HandleTable->Entries[RESERVE_ENTRIES_COUNT]; - Entry < End; + Entry != End; Entry++, Index++) { /* ignore the lock bit */ - if((HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1) == ProcId && Entry->Type != 0) + if((HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1) == ProcId && (Entry->Type & ~GDI_HANDLE_REUSE_MASK) != 0) { HGDIOBJ ObjectHandle; @@ -824,7 +751,8 @@ LockHandle: /* we're locking an object that belongs to our process or it's a global object if ProcessId == 0 here. ProcessId can only be 0 here if it previously failed to lock the object and it turned out to be a global object. */ - if(EntryType != 0 && Entry->KernelData != NULL && (ExpectedType == 0 || (EntryType == ExpectedType))) + if(EntryType != 0 && Entry->KernelData != NULL && + (ExpectedType == 0 || (EntryType == ExpectedType))) { PETHREAD PrevThread; PGDIOBJHDR GdiHdr; @@ -870,14 +798,15 @@ LockHandle: { InterlockedExchangePointer(&Entry->ProcessId, PrevProcId); - if(EntryType == 0) + if((EntryType & ~GDI_HANDLE_REUSE_MASK) == 0) { DPRINT1("Attempted to lock object 0x%x that is deleted!\n", hObj); KeRosDumpStackFrames ( NULL, 20 ); } else { - DPRINT1("Attempted to lock object 0x%x, type mismatch (0x%x : 0x%x)\n", hObj, EntryType, ExpectedType); + DPRINT1("Attempted to lock object 0x%x, type mismatch (0x%x : 0x%x)\n", + hObj, EntryType & ~GDI_HANDLE_REUSE_MASK, ExpectedType & ~GDI_HANDLE_REUSE_MASK); KeRosDumpStackFrames ( NULL, 20 ); } #ifdef GDI_DEBUG @@ -981,7 +910,7 @@ LockHandle: #endif } - if(Entry->Type == 0 && GdiHdr->Locks == 0) + if((Entry->Type & ~GDI_HANDLE_REUSE_MASK) == 0 && GdiHdr->Locks == 0) { PPAGED_LOOKASIDE_LIST LookasideList; PW32PROCESS W32Process = PsGetWin32Process(); @@ -1095,7 +1024,7 @@ GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle) Entry = GDI_HANDLE_GET_ENTRY(HandleTable, ObjectHandle); Ret = Entry->KernelData != NULL && - Entry->Type != 0 && + (Entry->Type & ~GDI_HANDLE_REUSE_MASK) != 0 && (HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1) == ProcessId; return Ret; @@ -1143,6 +1072,8 @@ LockHandle: exchange it.*/ NewType = GDI_HANDLE_GET_TYPE(*hObj); NewType |= NewType >> 16; + NewType |= (ULONG_PTR)(*hObj) & GDI_HANDLE_REUSE_MASK; + /* This is the type that the object should have right now, save it */ OldType = NewType; /* As the object should be a stock object, set it's flag, but only in the upper 16 bits */ @@ -1268,7 +1199,7 @@ LockHandle: { PETHREAD PrevThread; - if(Entry->Type != 0 && Entry->KernelData != NULL) + if((Entry->Type & ~GDI_HANDLE_REUSE_MASK) != 0 && Entry->KernelData != NULL) { PGDIOBJHDR GdiHdr = GDIBdyToHdr(Entry->KernelData); @@ -1401,7 +1332,7 @@ LockHandleFrom: PETHREAD PrevThread; PGDIOBJHDR GdiHdr; - if(FromEntry->Type != 0 && FromEntry->KernelData != NULL) + if((FromEntry->Type & ~GDI_HANDLE_REUSE_MASK) != 0 && FromEntry->KernelData != NULL) { GdiHdr = GDIBdyToHdr(FromEntry->KernelData); diff --git a/reactos/subsys/win32k/objects/region.c b/reactos/subsys/win32k/objects/region.c index 2feb5a31a7b..48f9152b4c7 100644 --- a/reactos/subsys/win32k/objects/region.c +++ b/reactos/subsys/win32k/objects/region.c @@ -707,45 +707,43 @@ empty: HRGN FASTCALL REGION_CropRgn(HRGN hDst, HRGN hSrc, const PRECT lpRect, PPOINT lpPt) { PROSRGNDATA objSrc, rgnDst; - HRGN hNewDst, hRet = NULL; - GDIMULTILOCK Lock[2] = {{hDst, 0, GDI_OBJECT_TYPE_REGION}, {hSrc, 0, GDI_OBJECT_TYPE_REGION}}; + HRGN hRet = NULL; + POINT pt = { 0, 0 }; if( !hDst ) { - if( !( hNewDst = RGNDATA_AllocRgn(1) ) ) + if( !( hDst = RGNDATA_AllocRgn(1) ) ) { return 0; } - Lock[0].hObj = hNewDst; } - if ( !GDIOBJ_LockMultipleObj(Lock, sizeof(Lock)/sizeof(Lock[0])) ) - { - DPRINT1("GDIOBJ_LockMultipleObj() failed\n" ); - return 0; - } - rgnDst = Lock[0].pObj; - objSrc = Lock[1].pObj; - - if( objSrc && rgnDst ) + rgnDst = RGNDATA_LockRgn(hDst); + if(rgnDst == NULL) { - if(rgnDst) - { - POINT pt = { 0, 0 }; - - if(!lpPt) - lpPt = &pt; - - if(REGION_CropAndOffsetRegion(lpPt, lpRect, objSrc, rgnDst) == FALSE) - { // ve failed cleanup and return - hRet = NULL; - } - else{ // ve are fine. unlock the correct pointer and return correct handle - hRet = Lock[0].hObj; - } - } + return NULL; } - GDIOBJ_UnlockMultipleObj(Lock, sizeof(Lock)/sizeof(Lock[0])); + + objSrc = RGNDATA_LockRgn(hSrc); + if(objSrc == NULL) + { + RGNDATA_UnlockRgn(hDst); + return NULL; + } + if(!lpPt) + lpPt = &pt; + + if(REGION_CropAndOffsetRegion(lpPt, lpRect, objSrc, rgnDst) == FALSE) + { // ve failed cleanup and return + hRet = NULL; + } + else{ // ve are fine. unlock the correct pointer and return correct handle + hRet = hDst; + } + + RGNDATA_UnlockRgn(hSrc); + RGNDATA_UnlockRgn(hDst); + return hRet; } @@ -1957,21 +1955,12 @@ NtGdiCombineRgn(HRGN hDest, INT CombineMode) { INT result = ERROR; - GDIMULTILOCK Lock[3] = {{hDest, 0, GDI_OBJECT_TYPE_REGION}, {hSrc1, 0, GDI_OBJECT_TYPE_REGION}, {hSrc2, 0, GDI_OBJECT_TYPE_REGION}}; PROSRGNDATA destRgn, src1Rgn, src2Rgn; - - if ( !GDIOBJ_LockMultipleObj(Lock, sizeof(Lock)/sizeof(Lock[0])) ) - { - DPRINT1("GDIOBJ_LockMultipleObj() failed\n" ); - return ERROR; - } - - destRgn = (PROSRGNDATA) Lock[0].pObj; - src1Rgn = (PROSRGNDATA) Lock[1].pObj; - src2Rgn = (PROSRGNDATA) Lock[2].pObj; - + + destRgn = RGNDATA_LockRgn(hDest); if( destRgn ) { + src1Rgn = RGNDATA_LockRgn(hSrc1); if( src1Rgn ) { if (CombineMode == RGN_COPY) @@ -1982,7 +1971,8 @@ NtGdiCombineRgn(HRGN hDest, } else { - if( src2Rgn ) + src2Rgn = RGNDATA_LockRgn(hSrc2); + if( src2Rgn ) { switch (CombineMode) { @@ -1999,17 +1989,26 @@ NtGdiCombineRgn(HRGN hDest, REGION_SubtractRegion(destRgn, src1Rgn, src2Rgn); break; } + RGNDATA_UnlockRgn(hSrc2); result = destRgn->rdh.iType; } + else + { + DPRINT1("NtGdiCombineRgn requires hSrc2 != NULL for combine mode %d!\n", CombineMode); + } } + + RGNDATA_UnlockRgn(hSrc1); } + + RGNDATA_UnlockRgn(hDest); } else { DPRINT("NtGdiCombineRgn: hDest unavailable\n"); result = ERROR; } - GDIOBJ_UnlockMultipleObj(Lock, sizeof(Lock)/sizeof(Lock[0])); + return result; } From 5b3d4bc5b12cb2bf6d028be6cd971ef9a6e3599b Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Fri, 18 Feb 2005 12:59:30 +0000 Subject: [PATCH 103/248] only dump stack traces when GDI_DEBUG is enabled svn path=/trunk/; revision=13629 --- reactos/subsys/win32k/objects/gdiobj.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reactos/subsys/win32k/objects/gdiobj.c b/reactos/subsys/win32k/objects/gdiobj.c index f883af8d4a3..70190b918cb 100644 --- a/reactos/subsys/win32k/objects/gdiobj.c +++ b/reactos/subsys/win32k/objects/gdiobj.c @@ -801,13 +801,17 @@ LockHandle: if((EntryType & ~GDI_HANDLE_REUSE_MASK) == 0) { DPRINT1("Attempted to lock object 0x%x that is deleted!\n", hObj); +#ifdef GDI_DEBUG KeRosDumpStackFrames ( NULL, 20 ); +#endif } else { DPRINT1("Attempted to lock object 0x%x, type mismatch (0x%x : 0x%x)\n", hObj, EntryType & ~GDI_HANDLE_REUSE_MASK, ExpectedType & ~GDI_HANDLE_REUSE_MASK); +#ifdef GDI_DEBUG KeRosDumpStackFrames ( NULL, 20 ); +#endif } #ifdef GDI_DEBUG DPRINT1("-> called from %s:%i\n", file, line); @@ -839,8 +843,8 @@ LockHandle: else { DPRINT1("Attempted to lock foreign handle: 0x%x, Owner: 0x%x locked: 0x%x Caller: 0x%x, stockobj: 0x%x\n", hObj, (ULONG_PTR)PrevProcId & ~0x1, (ULONG_PTR)PrevProcId & 0x1, PsGetCurrentProcessId(), GDI_HANDLE_IS_STOCKOBJ(hObj)); - KeRosDumpStackFrames ( NULL, 20 ); #ifdef GDI_DEBUG + KeRosDumpStackFrames ( NULL, 20 ); DPRINT1("-> called from %s:%i\n", file, line); #endif } From ed7f80714a921a8f05b4b44cc87812f4a56a9fb7 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Fri, 18 Feb 2005 13:07:27 +0000 Subject: [PATCH 104/248] minor fix svn path=/trunk/; revision=13630 --- reactos/subsys/win32k/objects/region.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/subsys/win32k/objects/region.c b/reactos/subsys/win32k/objects/region.c index 48f9152b4c7..2c7726c7b05 100644 --- a/reactos/subsys/win32k/objects/region.c +++ b/reactos/subsys/win32k/objects/region.c @@ -1992,7 +1992,7 @@ NtGdiCombineRgn(HRGN hDest, RGNDATA_UnlockRgn(hSrc2); result = destRgn->rdh.iType; } - else + else if(hSrc2 == NULL) { DPRINT1("NtGdiCombineRgn requires hSrc2 != NULL for combine mode %d!\n", CombineMode); } From 2daefe4dcdf3df9e291c187abe452437f88f7c3c Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Fri, 18 Feb 2005 13:53:21 +0000 Subject: [PATCH 105/248] workaround for buggy mingw include search order on linux (gvg) svn path=/trunk/; revision=13631 --- reactos/lib/crt/include/float.h | 152 ++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 reactos/lib/crt/include/float.h diff --git a/reactos/lib/crt/include/float.h b/reactos/lib/crt/include/float.h new file mode 100644 index 00000000000..53bfb34dbdf --- /dev/null +++ b/reactos/lib/crt/include/float.h @@ -0,0 +1,152 @@ +/* + * float.h + * This file has no copyright assigned and is placed in the Public Domain. + * This file is a part of the mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within the package. + * + * Constants related to floating point arithmetic. + * + * Also included here are some non-ANSI bits for accessing the floating + * point controller. + * + * NOTE: GCC provides float.h, but it doesn't include the non-standard + * stuff for accessing the fp controller. We include_next the + * GCC-supplied header and just define the MS-specific extensions + * here. + * + */ + +#include_next + +#ifndef _MINGW_FLOAT_H_ +#define _MINGW_FLOAT_H_ + +/* All the headers include this file. */ +#include <_mingw.h> + +/* + * Functions and definitions for controlling the FPU. + */ +#ifndef __STRICT_ANSI__ + +/* TODO: These constants are only valid for x86 machines */ + +/* 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 + +/* These are also defined in Mingw math.h, needed to work around + GCC build issues. */ +/* Return values for fpclass. */ +#ifndef __MINGW_FPCLASS_DEFINED +#define __MINGW_FPCLASS_DEFINED 1 +#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 */ +#endif /* __MINGW_FPCLASS_DEFINED */ + +/* invalid subconditions (_SW_INVALID also set) */ +#define _SW_UNEMULATED 0x0040 /* unemulated instruction */ +#define _SW_SQRTNEG 0x0080 /* square root of a neg number */ +#define _SW_STACKOVERFLOW 0x0200 /* FP stack overflow */ +#define _SW_STACKUNDERFLOW 0x0400 /* FP stack underflow */ + +/* Floating point error signals and return codes */ +#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 /* raise( SIGFPE ); */ + +#ifndef RC_INVOKED + +#ifdef __cplusplus +extern "C" { +#endif + +/* Set the FPU control word as cw = (cw & ~unMask) | (unNew & unMask), + * i.e. change the bits in unMask to have the values they have in unNew, + * leaving other bits unchanged. */ +_CRTIMP unsigned int __cdecl _controlfp (unsigned int unNew, unsigned int unMask); +_CRTIMP unsigned int __cdecl _control87 (unsigned int unNew, unsigned int unMask); + + +_CRTIMP unsigned int __cdecl _clearfp (void); /* Clear the FPU status word */ +_CRTIMP unsigned int __cdecl _statusfp (void); /* Report the FPU status word */ +#define _clear87 _clearfp +#define _status87 _statusfp + + +/* + MSVCRT.dll _fpreset initializes the control register to 0x27f, + the status register to zero and the tag word to 0FFFFh. + This differs from asm instruction finit/fninit which set control + word to 0x37f (64 bit mantissa precison rather than 53 bit). + By default, the mingw version of _fpreset sets fp control as + per fninit. To use the MSVCRT.dll _fpreset, include CRT_fp8.o when + building your application. +*/ +void __cdecl _fpreset (void); +void __cdecl fpreset (void); + +/* Global 'variable' for the current floating point error code. */ +_CRTIMP int * __cdecl __fpecode(void); +#define _fpecode (*(__fpecode())) + +/* + * IEEE recommended functions. MS puts them in float.h + * but they really belong in math.h. + */ + +_CRTIMP double __cdecl _chgsign (double); +_CRTIMP double __cdecl _copysign (double, double); +_CRTIMP double __cdecl _logb (double); +_CRTIMP double __cdecl _nextafter (double, double); +_CRTIMP double __cdecl _scalb (double, long); + +_CRTIMP int __cdecl _finite (double); +_CRTIMP int __cdecl _fpclass (double); +_CRTIMP int __cdecl _isnan (double); + +#ifdef __cplusplus +} +#endif + +#endif /* Not RC_INVOKED */ + +#endif /* Not __STRICT_ANSI__ */ + +#endif /* _FLOAT_H_ */ + From d10dba35e60e024267c8acf7e5bc79fd713fea57 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Fri, 18 Feb 2005 15:13:02 +0000 Subject: [PATCH 106/248] don't call win32k for GetObjectType() and query the information directly from the shared handle table svn path=/trunk/; revision=13632 --- reactos/lib/gdi32/gdi32.def | 3 +- reactos/lib/gdi32/include/precomp.h | 5 +++ reactos/lib/gdi32/main/dllmain.c | 1 + reactos/lib/gdi32/misc/misc.c | 30 +++++++++++++ reactos/lib/gdi32/objects/dc.c | 70 ++++++++++++++++++++++++++++- 5 files changed, 106 insertions(+), 3 deletions(-) diff --git a/reactos/lib/gdi32/gdi32.def b/reactos/lib/gdi32/gdi32.def index dd78ff6da07..fcf7a82aa6d 100644 --- a/reactos/lib/gdi32/gdi32.def +++ b/reactos/lib/gdi32/gdi32.def @@ -358,7 +358,7 @@ GetMiterLimit@8 GetNearestColor@8=NtGdiGetNearestColor@8 GetNearestPaletteIndex@8=NtGdiGetNearestPaletteIndex@8 GetObjectA@12 -GetObjectType@4=NtGdiGetObjectType@4 +GetObjectType@4 GetObjectW@12 GetOutlineTextMetricsA@12 GetOutlineTextMetricsW@12 @@ -560,4 +560,3 @@ bInitSystemAndFontsDirectoriesW@8 bMakePathNameW@16 ;cGetTTFFromFOT gdiPlaySpoolStream@24 - \ No newline at end of file diff --git a/reactos/lib/gdi32/include/precomp.h b/reactos/lib/gdi32/include/precomp.h index 0985e46cca1..141f82ceb03 100644 --- a/reactos/lib/gdi32/include/precomp.h +++ b/reactos/lib/gdi32/include/precomp.h @@ -36,6 +36,7 @@ typedef CHWIDTHINFO *PCHWIDTHINFO; extern PGDI_TABLE_ENTRY GdiHandleTable; extern HANDLE hProcessHeap; +extern HANDLE CurrentProcessId; /* == HEAP ================================================================== */ @@ -49,4 +50,8 @@ BOOL FASTCALL TextMetricW2A(TEXTMETRICA *tma, TEXTMETRICW *tmw); BOOL FASTCALL NewTextMetricW2A(NEWTEXTMETRICA *tma, NEWTEXTMETRICW *tmw); BOOL FASTCALL NewTextMetricExW2A(NEWTEXTMETRICEXA *tma, NEWTEXTMETRICEXW *tmw); +/* == GDI HANDLES =========================================================== */ +BOOL GdiIsHandleValid(HGDIOBJ hGdiObj); +BOOL GdiGetHandleUserData(HGDIOBJ hGdiObj, PVOID *UserData); + /* EOF */ diff --git a/reactos/lib/gdi32/main/dllmain.c b/reactos/lib/gdi32/main/dllmain.c index 7215fca89d1..229c8117df9 100644 --- a/reactos/lib/gdi32/main/dllmain.c +++ b/reactos/lib/gdi32/main/dllmain.c @@ -33,6 +33,7 @@ GdiProcessSetup (VOID) /* map the gdi handle table to user space */ GdiHandleTable = NtCurrentTeb()->Peb->GdiSharedHandleTable; + CurrentProcessId = NtCurrentTeb()->Cid.UniqueProcess; } diff --git a/reactos/lib/gdi32/misc/misc.c b/reactos/lib/gdi32/misc/misc.c index 97a99d455b2..ee76fadb58a 100644 --- a/reactos/lib/gdi32/misc/misc.c +++ b/reactos/lib/gdi32/misc/misc.c @@ -29,6 +29,7 @@ #include "precomp.h" PGDI_TABLE_ENTRY GdiHandleTable = NULL; +HANDLE CurrentProcessId = NULL; /* * @implemented @@ -39,3 +40,32 @@ GdiQueryTable(VOID) { return (PVOID)GdiHandleTable; } + +BOOL GdiIsHandleValid(HGDIOBJ hGdiObj) +{ + PGDI_TABLE_ENTRY Entry = GdiHandleTable + GDI_HANDLE_GET_INDEX(hGdiObj); + if(Entry->KernelData != NULL && (Entry->Type & GDI_HANDLE_TYPE_MASK) == GDI_HANDLE_GET_TYPE(hGdiObj)) + { + HANDLE pid = (HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1); + if(pid == NULL || pid == CurrentProcessId) + { + return TRUE; + } + } + return FALSE; +} + +BOOL GdiGetHandleUserData(HGDIOBJ hGdiObj, PVOID *UserData) +{ + PGDI_TABLE_ENTRY Entry = GdiHandleTable + GDI_HANDLE_GET_INDEX(hGdiObj); + if(Entry->KernelData != NULL && (Entry->Type & GDI_HANDLE_TYPE_MASK) == GDI_HANDLE_GET_TYPE(hGdiObj)) + { + HANDLE pid = (HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1); + if(pid == NULL || pid == CurrentProcessId) + { + *UserData = Entry->UserData; + return TRUE; + } + } + return FALSE; +} diff --git a/reactos/lib/gdi32/objects/dc.c b/reactos/lib/gdi32/objects/dc.c index 243a05d1d6b..476aa3ad9e2 100644 --- a/reactos/lib/gdi32/objects/dc.c +++ b/reactos/lib/gdi32/objects/dc.c @@ -193,12 +193,14 @@ BOOL STDCALL DeleteObject(HGDIOBJ hObject) { - if (0 != ((DWORD) hObject & 0x00800000)) + if (0 != ((DWORD) hObject & GDI_HANDLE_STOCK_MASK)) { DPRINT1("Trying to delete system object 0x%x\n", hObject); return TRUE; } + /* deleting a handle that doesn't belong to the caller should be rather rarely + so for the sake of speed just try to delete it without checking validity */ return NtGdiDeleteObject(hObject); } @@ -400,3 +402,69 @@ StartDocW( { return NtGdiStartDoc ( hdc, (DOCINFOW *)a1 ); } + + +/* + * @implemented + */ +DWORD +STDCALL +GetObjectType( + HGDIOBJ h + ) +{ + DWORD Ret = 0; + + if(GdiIsHandleValid(h)) + { + LONG Type = GDI_HANDLE_GET_TYPE(h); + switch(Type) + { + case GDI_OBJECT_TYPE_PEN: + Ret = OBJ_PEN; + break; + case GDI_OBJECT_TYPE_BRUSH: + Ret = OBJ_BRUSH; + break; + case GDI_OBJECT_TYPE_BITMAP: + Ret = OBJ_BITMAP; + break; + case GDI_OBJECT_TYPE_FONT: + Ret = OBJ_FONT; + break; + case GDI_OBJECT_TYPE_PALETTE: + Ret = OBJ_PAL; + break; + case GDI_OBJECT_TYPE_REGION: + Ret = OBJ_REGION; + break; + case GDI_OBJECT_TYPE_DC: + Ret = OBJ_DC; + break; + case GDI_OBJECT_TYPE_METADC: + Ret = OBJ_METADC; + break; + case GDI_OBJECT_TYPE_METAFILE: + Ret = OBJ_METAFILE; + break; + case GDI_OBJECT_TYPE_ENHMETAFILE: + Ret = OBJ_ENHMETAFILE; + break; + case GDI_OBJECT_TYPE_ENHMETADC: + Ret = OBJ_ENHMETADC; + break; + case GDI_OBJECT_TYPE_EXTPEN: + Ret = OBJ_EXTPEN; + break; + case GDI_OBJECT_TYPE_MEMDC: + Ret = OBJ_MEMDC; + break; + + default: + DPRINT1("GetObjectType: Magic 0x%08x not implemented\n", Type); + break; + } + } + + return Ret; +} From 299de40214045eff62771832170c616491d7431c Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Fri, 18 Feb 2005 17:15:01 +0000 Subject: [PATCH 107/248] Fix the detection of /3GB switch. svn path=/trunk/; revision=13633 --- reactos/boot/freeldr/freeldr/multiboot.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/reactos/boot/freeldr/freeldr/multiboot.c b/reactos/boot/freeldr/freeldr/multiboot.c index 97b7191e8f3..d932303b954 100644 --- a/reactos/boot/freeldr/freeldr/multiboot.c +++ b/reactos/boot/freeldr/freeldr/multiboot.c @@ -4,7 +4,7 @@ * FILE: boot/freeldr/freeldr/multiboot.c * PURPOSE: ReactOS Loader * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) - * Hartmutt Birr - SMP/PAE Code + * Hartmut Birr - SMP/PAE Code */ #include @@ -54,7 +54,7 @@ #define ApicPageTableIndexPae (APIC_BASE >> 21) -#define KernelEntryPoint (KernelEntry - KERNEL_BASE_PHYS) + KernelBase +#define KernelEntryPoint (KernelEntry - KERNEL_BASE_PHYS) + KernelBase /* Load Address of Next Module */ ULONG_PTR NextModuleBase = 0; @@ -217,7 +217,7 @@ FrLdrSetupPae(ULONG Magic) /* Jump to Kernel */ PagedJump = (ASMCODE)KernelEntryPoint; PagedJump(Magic, &LoaderBlock); - } +} /*++ * FrLdrGetKernelBase @@ -239,27 +239,24 @@ VOID FASTCALL FrLdrGetKernelBase(VOID) { - PCHAR p1; - PCHAR p2; + PCHAR p; /* Read Command Line */ - for(p1 = (PCHAR)&LoaderBlock.CommandLine; *p1 && (p2 = strchr(p1, '/')); p2++) { + p = (PCHAR)LoaderBlock.CommandLine; + while ((p = strchr(p, '/')) != NULL) { /* Find "/3GB" */ - if (!strnicmp(p2, "3GB", 3)) { + if (!strnicmp(p + 1, "3GB", 3)) { /* Make sure there's nothing following it */ - if (p2[3] == ' ' || p2[3] == 0) { + if (p[4] == ' ' || p[4] == 0) { /* Use 3GB */ KernelBase = 0xC0000000; - - } else { - - /* Use 2GB */ - KernelBase = 0x80000000; } } + + p++; } /* Set KernelBase */ From 41475e994190bbae7593b137bd6eeb51bac047dd Mon Sep 17 00:00:00 2001 From: Gregor Anich Date: Fri, 18 Feb 2005 18:28:49 +0000 Subject: [PATCH 108/248] Fix KeUnstackDetachProcess. svn path=/trunk/; revision=13634 --- reactos/ntoskrnl/ke/process.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/reactos/ntoskrnl/ke/process.c b/reactos/ntoskrnl/ke/process.c index 56d2bf00bc9..15486ecbd3a 100644 --- a/reactos/ntoskrnl/ke/process.c +++ b/reactos/ntoskrnl/ke/process.c @@ -216,7 +216,7 @@ KeUnstackDetachProcess ( { KIRQL OldIrql; PKTHREAD Thread; - + /* If the special "We tried to attach to the process already being attached to" flag is there, don't do anything */ if (ApcState->Process == (PKPROCESS)1) return; @@ -231,29 +231,27 @@ KeUnstackDetachProcess ( /* Restore the Old APC State if a Process was present */ if (ApcState->Process) { - RtlMoveMemory(ApcState, &Thread->ApcState, sizeof(KAPC_STATE)); + KiMoveApcState(ApcState, &Thread->ApcState); } else { /* The ApcState parameter is useless, so use the saved data and reset it */ - RtlMoveMemory(&Thread->SavedApcState, &Thread->ApcState, sizeof(KAPC_STATE)); + KiMoveApcState(&Thread->SavedApcState, &Thread->ApcState); Thread->SavedApcState.Process = NULL; Thread->ApcStateIndex = OriginalApcEnvironment; Thread->ApcStatePointer[OriginalApcEnvironment] = &Thread->ApcState; Thread->ApcStatePointer[AttachedApcEnvironment] = &Thread->SavedApcState; } - /* Restore the APC State */ - KiMoveApcState(&Thread->SavedApcState, &Thread->ApcState); - /* Swap Processes */ KiSwapProcess(Thread->ApcState.Process, Thread->ApcState.Process); - + /* Return to old IRQL*/ KeReleaseDispatcherDatabaseLock(OldIrql); } -// This function should be used by win32k.sys to add its own user32/gdi32 services -// TableIndex is 0 based -// ServiceCountTable its not used at the moment +/* This function should be used by win32k.sys to add its own user32/gdi32 services + * TableIndex is 0 based + * ServiceCountTable its not used at the moment + */ /* * @implemented */ From c53bc44bae439e4eba4cc74949aecda44d29f4b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Fri, 18 Feb 2005 20:19:49 +0000 Subject: [PATCH 109/248] Protect against bogus string offsets svn path=/trunk/; revision=13635 --- reactos/tools/rsym.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/tools/rsym.c b/reactos/tools/rsym.c index 968c03a4c1c..21885b4e985 100644 --- a/reactos/tools/rsym.c +++ b/reactos/tools/rsym.c @@ -442,7 +442,8 @@ ConvertStabs(ULONG *SymbolsCount, PROSSYM_ENTRY *SymbolsBase, { case N_SO: Name = (char *) StabStringsBase + StabEntry[i].n_strx; - if ('\0' == *Name || '/' == Name[strlen(Name) - 1] + if (StabStringsLength < StabEntry[i].n_strx + ||'\0' == *Name || '/' == Name[strlen(Name) - 1] || '\\' == Name[strlen(Name) - 1] || StabEntry[i].n_value < ImageBase) { From 9097259b0ef443a82ab713473a4781f30a4977a0 Mon Sep 17 00:00:00 2001 From: Gregor Anich Date: Fri, 18 Feb 2005 20:52:24 +0000 Subject: [PATCH 110/248] Add shutdown message. svn path=/trunk/; revision=13636 --- reactos/ntoskrnl/ex/power.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ex/power.c b/reactos/ntoskrnl/ex/power.c index 0f8ca653781..2b12c64e491 100644 --- a/reactos/ntoskrnl/ex/power.c +++ b/reactos/ntoskrnl/ex/power.c @@ -167,7 +167,8 @@ NtShutdownSystem(IN SHUTDOWN_ACTION Action) "Until then, there must be no regrets, no fears, no anxieties.\n" "Just go forward in all your beliefs, and prove to me that I am not mistaken in mine.\n", "Lowest possible energy state reached! Switch off now to achive a Bose-Einstein condensate.\n", - "Hasta la vista, BABY!\n" + "Hasta la vista, BABY!\n", + "They live, we sleep!\n" }; LARGE_INTEGER Now; From f4c555b1ee2e2e2f2ef70333955e096877f5b6a4 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Fri, 18 Feb 2005 21:20:01 +0000 Subject: [PATCH 111/248] Remove expat.dll from the list. svn path=/trunk/; revision=13637 --- reactos/bootdata/packages/reactos.dff | 1 - 1 file changed, 1 deletion(-) diff --git a/reactos/bootdata/packages/reactos.dff b/reactos/bootdata/packages/reactos.dff index 700e7782400..a9de916f355 100755 --- a/reactos/bootdata/packages/reactos.dff +++ b/reactos/bootdata/packages/reactos.dff @@ -74,7 +74,6 @@ lib\dinput\dinput.dll 1 lib\dinput8\dinput8.dll 1 lib\dsound\dsound.dll 1 lib\dxdiagn\dxdiagn.dll 1 -lib\expat\expat.dll 1 lib\fmifs\fmifs.dll 1 lib\freetype\freetype.dll 1 lib\gdi32\gdi32.dll 1 From c8ad5d3ade56ab338d9021ac0f61c83bd14109b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Fri, 18 Feb 2005 22:46:49 +0000 Subject: [PATCH 112/248] Include svn revision in build string svn path=/trunk/; revision=13638 --- reactos/tools/buildno.c | 83 +++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/reactos/tools/buildno.c b/reactos/tools/buildno.c index ae2d1d0f7f8..7b7081f6172 100644 --- a/reactos/tools/buildno.c +++ b/reactos/tools/buildno.c @@ -53,28 +53,8 @@ tm_dump (const char *tag, struct tm * t) } #endif - -int -elapsed_days ( - time_t t_today, - time_t t_release_day - ) -{ - double seconds = difftime (t_today, t_release_day); - double days = seconds / (double) 86400.0; - char buf [32]; - char * dot = buf; - - sprintf (buf, "%f", days ); - - while ( *dot && *dot != '.') ++dot; - *dot = '\0'; - - return atol (buf); -} - void -write_h (int build) +write_h (int build, char *buildstr) { FILE *h = NULL; char* s; @@ -90,8 +70,8 @@ write_h (int build) s = s + sprintf (s, "#define _INC_REACTOS_BUILDNO\n" ); s = s + sprintf (s, "#define KERNEL_VERSION_BUILD\t%d\n", build); - s = s + sprintf (s, "#define KERNEL_VERSION_BUILD_STR\t\"%d\"\n", build); - s = s + sprintf (s, "#define KERNEL_VERSION_BUILD_RC\t\"%d\\0\"\n", build); + s = s + sprintf (s, "#define KERNEL_VERSION_BUILD_STR\t\"%s\"\n", buildstr); + s = s + sprintf (s, "#define KERNEL_VERSION_BUILD_RC\t\"%s\\0\"\n", buildstr); s = s + sprintf (s, "#define KERNEL_RELEASE_RC\t\"%d.%d", KERNEL_VERSION_MAJOR, KERNEL_VERSION_MINOR); if (0 != KERNEL_VERSION_PATCH_LEVEL) @@ -191,6 +171,48 @@ write_h (int build) fclose (h); } +char * +GetRev(void) +{ + static char Unknown[] = "UNKNOWN"; + static char Rev[10]; /* 999999999 revisions should be enough for everyone... */ + FILE *SvnCmd; + char Line[256]; + char *p; + + SvnCmd = popen("svn info", "r"); + if (NULL == SvnCmd) + { + fprintf(stderr, "Failed to run \"svn info\" command\n"); + return Unknown; + } + while (! feof(SvnCmd) && ! ferror(SvnCmd)) + { + if (NULL == fgets(Line, sizeof(Line), SvnCmd)) + { + break; + } + if (0 == strncmp(Line, "Revision: ", 10)) + { + pclose(SvnCmd); + p = Line + 10; + if (sizeof(Rev) < strlen(p)) + { + fprintf(stderr, "Weird SVN revision number %s", p); + return Unknown; + } + strncpy(Rev, p, strlen(p) - 1); + Rev[strlen(p) - 1] = '\0'; + return Rev; + } + } + + pclose(SvnCmd); + + return Unknown; +} + + void usage (void) { @@ -210,6 +232,7 @@ main (int argc, char * argv []) int quiet = FALSE; int build = 0; + char buildstr[64]; time_t t1 = 0; struct tm * t1_tm = NULL; @@ -251,7 +274,7 @@ main (int argc, char * argv []) /* * We are building TODAY! */ - if (FALSE == quiet) + if (! quiet) { printf ( "\nReactOS Build Number Generator\n\n"); } @@ -266,7 +289,7 @@ main (int argc, char * argv []) #ifdef DBG tm_dump ("t1", t1_tm); #endif - if (FALSE == quiet) + if (! quiet) { printf ( "Current date: %4d-%02d-%02d\n\n", @@ -280,7 +303,9 @@ main (int argc, char * argv []) */ build = t1_tm->tm_year * 10000 + (t1_tm->tm_mon + 1) * 100 + t1_tm->tm_mday; - if (FALSE == quiet) + sprintf(buildstr, "%d-r%s", build, GetRev()); + + if (! quiet) { printf ( "ROS Version : %d.%d", @@ -291,15 +316,15 @@ main (int argc, char * argv []) { printf(".%d", KERNEL_VERSION_PATCH_LEVEL); } - printf("-%S (Build %d)\n\n", KERNEL_VERSION_BUILD_TYPE, build); + printf("-%S (Build %s)\n\n", KERNEL_VERSION_BUILD_TYPE, buildstr); } /* * (Over)write the include file, unless * the user switched on -p. */ - if (FALSE == print_only) + if (! print_only) { - write_h (build); + write_h (build, buildstr); } else { From 5239de8ad5500752b721d6a368c288c41792e7f6 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 19 Feb 2005 03:38:43 +0000 Subject: [PATCH 113/248] 1. made the PEB structure match xp's layout 2. fixed GetVersionEx() svn path=/trunk/; revision=13639 --- reactos/include/napi/teb.h | 19 ++- reactos/lib/kernel32/misc/env.c | 255 ++++++++++++-------------------- reactos/lib/ntdll/ldr/startup.c | 7 +- reactos/ntoskrnl/ps/process.c | 2 +- 4 files changed, 107 insertions(+), 176 deletions(-) diff --git a/reactos/include/napi/teb.h b/reactos/include/napi/teb.h index ed58fff818b..b980f2b05b9 100644 --- a/reactos/include/napi/teb.h +++ b/reactos/include/napi/teb.h @@ -105,8 +105,8 @@ typedef struct _PEB UCHAR InheritedAddressSpace; /* 00h */ UCHAR ReadImageFileExecOptions; /* 01h */ UCHAR BeingDebugged; /* 02h */ - UCHAR Spare; /* 03h */ - PVOID Mutant; /* 04h */ + BOOLEAN SpareBool; /* 03h */ + HANDLE Mutant; /* 04h */ PVOID ImageBaseAddress; /* 08h */ PPEB_LDR_DATA Ldr; /* 0Ch */ PRTL_USER_PROCESS_PARAMETERS ProcessParameters; /* 10h */ @@ -131,7 +131,6 @@ typedef struct _PEB PVOID UnicodeCaseTableData; /* 60h */ ULONG NumberOfProcessors; /* 64h */ ULONG NtGlobalFlag; /* 68h */ - UCHAR Spare2[0x4]; /* 6Ch */ LARGE_INTEGER CriticalSectionTimeout; /* 70h */ ULONG HeapSegmentReserve; /* 78h */ ULONG HeapSegmentCommit; /* 7Ch */ @@ -139,7 +138,7 @@ typedef struct _PEB ULONG HeapDeCommitFreeBlockThreshold; /* 84h */ ULONG NumberOfHeaps; /* 88h */ ULONG MaximumNumberOfHeaps; /* 8Ch */ - PVOID** ProcessHeaps; /* 90h */ + PVOID* ProcessHeaps; /* 90h */ PVOID GdiSharedHandleTable; /* 94h */ PVOID ProcessStarterHelper; /* 98h */ PVOID GdiDCAttributeList; /* 9Ch */ @@ -147,13 +146,19 @@ typedef struct _PEB ULONG OSMajorVersion; /* A4h */ ULONG OSMinorVersion; /* A8h */ USHORT OSBuildNumber; /* ACh */ - UCHAR SPMajorVersion; /* AEh */ - UCHAR SPMinorVersion; /* AFh */ + USHORT OSCSDVersion; /* AEh */ ULONG OSPlatformId; /* B0h */ ULONG ImageSubSystem; /* B4h */ ULONG ImageSubSystemMajorVersion; /* B8h */ - ULONG ImageSubSystemMinorVersion; /* C0h */ + ULONG ImageSubSystemMinorVersion; /* BCh */ + ULONG ImageProcessAffinityMask; /* C0h */ ULONG GdiHandleBuffer[0x22]; /* C4h */ + PVOID PostProcessInitRoutine; /* 14Ch */ + PVOID *TlsExpansionBitmap; /* 150h */ + ULONG TlsExpansionBitmapBits[0x20]; /* 154h */ + ULONG SessionId; /* 1D4h */ + PVOID AppCompatInfo; /* 1D8h */ + UNICODE_STRING CSDVersion; /* 1DCh */ } PEB; #ifndef __USE_W32API diff --git a/reactos/lib/kernel32/misc/env.c b/reactos/lib/kernel32/misc/env.c index 7acbe336225..9c8b98250b4 100644 --- a/reactos/lib/kernel32/misc/env.c +++ b/reactos/lib/kernel32/misc/env.c @@ -226,21 +226,21 @@ DWORD STDCALL GetVersion(VOID) { - PPEB pPeb = NtCurrentPeb(); - DWORD nVersion; + PPEB pPeb = NtCurrentPeb(); + DWORD nVersion; - nVersion = MAKEWORD(pPeb->OSMajorVersion, pPeb->OSMinorVersion); + nVersion = MAKEWORD(pPeb->OSMajorVersion, pPeb->OSMinorVersion); - /* behave consistently when posing as another operating system */ - /* build number */ - if(pPeb->OSPlatformId != VER_PLATFORM_WIN32_WINDOWS) - nVersion |= ((DWORD)(pPeb->OSBuildNumber)) << 16; + /* behave consistently when posing as another operating system */ + /* build number */ + if(pPeb->OSPlatformId != VER_PLATFORM_WIN32_WINDOWS) + nVersion |= ((DWORD)(pPeb->OSBuildNumber)) << 16; - /* non-NT platform flag */ - if(pPeb->OSPlatformId != VER_PLATFORM_WIN32_NT) - nVersion |= 0x80000000; + /* non-NT platform flag */ + if(pPeb->OSPlatformId != VER_PLATFORM_WIN32_NT) + nVersion |= 0x80000000; - return nVersion; + return nVersion; } @@ -253,67 +253,44 @@ GetVersionExW( LPOSVERSIONINFOW lpVersionInformation ) { - PPEB pPeb = NtCurrentPeb(); - WCHAR *RosVersion; - - /* TODO: move this into RtlGetVersion */ - switch(lpVersionInformation->dwOSVersionInfoSize) - { - case sizeof(OSVERSIONINFOEXW): + NTSTATUS Status; + + if(lpVersionInformation->dwOSVersionInfoSize != sizeof(OSVERSIONINFOW) && + lpVersionInformation->dwOSVersionInfoSize != sizeof(OSVERSIONINFOEXW)) { - LPOSVERSIONINFOEXW lpVersionInformationEx = - (LPOSVERSIONINFOEXW)lpVersionInformation; - - lpVersionInformationEx->wServicePackMajor = pPeb->SPMajorVersion; - lpVersionInformationEx->wServicePackMinor = pPeb->SPMinorVersion; - /* TODO: read from the KUSER_SHARED_DATA */ - lpVersionInformationEx->wSuiteMask = 0; - /* TODO: call RtlGetNtProductType */ - lpVersionInformationEx->wProductType = 0; - /* ??? */ - lpVersionInformationEx->wReserved = 0; - /* fall through */ + /* for some reason win sets ERROR_INSUFFICIENT_BUFFER even if it is large + enough but doesn't match the exact sizes supported, ERROR_INVALID_PARAMETER + would've been much more appropriate... */ + SetLastError(ERROR_INSUFFICIENT_BUFFER); + return FALSE; } - case sizeof(OSVERSIONINFOW): + Status = RtlGetVersion((PRTL_OSVERSIONINFOW)lpVersionInformation); + if(NT_SUCCESS(Status)) { - lpVersionInformation->dwMajorVersion = pPeb->OSMajorVersion; - lpVersionInformation->dwMinorVersion = pPeb->OSMinorVersion; - lpVersionInformation->dwBuildNumber = pPeb->OSBuildNumber; - lpVersionInformation->dwPlatformId = pPeb->OSPlatformId; + int ln, maxlen; + + /* append a reactos specific string to the szCSDVersion string */ - /* First the Windows compatible string */ - _snwprintf(lpVersionInformation->szCSDVersion, - sizeof(lpVersionInformation->szCSDVersion) / sizeof(WCHAR), - L"Service Pack %u", pPeb->SPMajorVersion); - /* Add the Reactos-specific string */ - RosVersion = lpVersionInformation->szCSDVersion + wcslen(lpVersionInformation->szCSDVersion) + 1; - wcsncpy - ( - RosVersion, - L"ReactOS " KERNEL_VERSION_STR L" (Build " KERNEL_VERSION_BUILD_STR L")", - sizeof(lpVersionInformation->szCSDVersion) / sizeof(WCHAR) - - ((RosVersion - lpVersionInformation->szCSDVersion) + 1) - ); + /* FIXME - we shouldn't do this when there is a (ros-specific) compatibility + flag set so we don't screw applications that might depend on a + certain string */ - /* null-terminate, just in case */ - lpVersionInformation->szCSDVersion - [ - sizeof(lpVersionInformation->szCSDVersion) / sizeof(WCHAR) - 1 - ] = 0; - - break; + ln = wcslen(lpVersionInformation->szCSDVersion); + maxlen = (sizeof(lpVersionInformation->szCSDVersion) / sizeof(lpVersionInformation->szCSDVersion[0]) - 1); + if(maxlen > ln) + { + PWCHAR szVer = lpVersionInformation->szCSDVersion + ln; + RtlZeroMemory(szVer, (maxlen - ln + 1) * sizeof(WCHAR)); + wcsncpy(szVer, + L" ReactOS " KERNEL_VERSION_STR L" (Build " KERNEL_VERSION_BUILD_STR L")", + maxlen - ln); + } + + return TRUE; } - default: - { - /* unknown version information revision */ - SetLastError(ERROR_INSUFFICIENT_BUFFER); - return FALSE; - } - } - - return TRUE; + return FALSE; } @@ -326,111 +303,61 @@ GetVersionExA( LPOSVERSIONINFOA lpVersionInformation ) { - NTSTATUS nErrCode; - OSVERSIONINFOEXW oviVerInfo; - LPOSVERSIONINFOEXA lpVersionInformationEx; - - /* UNICODE_STRING descriptor of the Unicode version string */ - UNICODE_STRING wstrVerStr = - { - /* - gives extra work to RtlUnicodeStringToAnsiString, but spares us an - RtlInitUnicodeString round - */ - 0, - sizeof(((LPOSVERSIONINFOW)NULL)->szCSDVersion), - oviVerInfo.szCSDVersion - }; - - /* ANSI_STRING descriptor of the ANSI version string buffer */ - ANSI_STRING strVerStr = - { - 0, - sizeof(((LPOSVERSIONINFOA)NULL)->szCSDVersion), - lpVersionInformation->szCSDVersion - }; - - switch(lpVersionInformation->dwOSVersionInfoSize) - { - case sizeof(OSVERSIONINFOEXA): + OSVERSIONINFOEXW viw; + + RtlZeroMemory(&viw, sizeof(viw)); + + switch(lpVersionInformation->dwOSVersionInfoSize) { - oviVerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW); - break; - } + case sizeof(OSVERSIONINFOA): + viw.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); + break; - case sizeof(OSVERSIONINFOA): + case sizeof(OSVERSIONINFOEXA): + viw.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW); + break; + + default: + /* for some reason win sets ERROR_INSUFFICIENT_BUFFER even if it is large + enough but doesn't match the exact sizes supported, ERROR_INVALID_PARAMETER + would've been much more appropriate... */ + SetLastError(ERROR_INSUFFICIENT_BUFFER); + return FALSE; + } + + if(GetVersionExW((LPOSVERSIONINFOW)&viw)) { - oviVerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); - break; + ANSI_STRING CSDVersionA; + UNICODE_STRING CSDVersionW; + + /* copy back fields that match both supported structures */ + lpVersionInformation->dwMajorVersion = viw.dwMajorVersion; + lpVersionInformation->dwMinorVersion = viw.dwMinorVersion; + lpVersionInformation->dwBuildNumber = viw.dwBuildNumber; + lpVersionInformation->dwPlatformId = viw.dwPlatformId; + + RtlInitUnicodeString(&CSDVersionW, viw.szCSDVersion); + + CSDVersionA.Length = 0; + CSDVersionA.MaximumLength = sizeof(lpVersionInformation->szCSDVersion); + CSDVersionA.Buffer = lpVersionInformation->szCSDVersion; + + RtlUnicodeStringToAnsiString(&CSDVersionA, &CSDVersionW, FALSE); + + /* copy back the extended fields */ + if(viw.dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXW)) + { + ((LPOSVERSIONINFOEXA)lpVersionInformation)->wServicePackMajor = viw.wServicePackMajor; + ((LPOSVERSIONINFOEXA)lpVersionInformation)->wServicePackMinor = viw.wServicePackMinor; + ((LPOSVERSIONINFOEXA)lpVersionInformation)->wSuiteMask = viw.wSuiteMask; + ((LPOSVERSIONINFOEXA)lpVersionInformation)->wProductType = viw.wProductType; + ((LPOSVERSIONINFOEXA)lpVersionInformation)->wReserved = viw.wReserved; + } + + return TRUE; } - - default: - { - /* unknown version information revision */ - SetLastError(ERROR_INSUFFICIENT_BUFFER); - return FALSE; - } - } - - if(!GetVersionExW((LPOSVERSIONINFOW)&oviVerInfo)) + return FALSE; - - /* null-terminate, just in case */ - oviVerInfo.szCSDVersion - [ - sizeof(((LPOSVERSIONINFOW)NULL)->szCSDVersion) / - sizeof(((LPOSVERSIONINFOW)NULL)->szCSDVersion[0]) - - 1 - ] = 0; - wstrVerStr.Length = wcslen(wstrVerStr.Buffer) * sizeof(WCHAR); - - /* convert the win version string */ - nErrCode = RtlUnicodeStringToAnsiString(&strVerStr, &wstrVerStr, FALSE); - - if(!NT_SUCCESS(nErrCode)) - { - /* failure */ - SetLastErrorByStatus(nErrCode); - return FALSE; - } - - wstrVerStr.Buffer = oviVerInfo.szCSDVersion + wstrVerStr.Length / sizeof(WCHAR) + 1; - wstrVerStr.MaximumLength = sizeof(oviVerInfo.szCSDVersion) - (wstrVerStr.Length + sizeof(WCHAR)); - wstrVerStr.Length = wcslen(wstrVerStr.Buffer) * sizeof(WCHAR); - strVerStr.Buffer = lpVersionInformation->szCSDVersion + strVerStr.Length + 1; - strVerStr.MaximumLength = sizeof(lpVersionInformation->szCSDVersion) - (strVerStr.Length + 1); - strVerStr.Length = 0; - - /* convert the ReactOS version string */ - nErrCode = RtlUnicodeStringToAnsiString(&strVerStr, &wstrVerStr, FALSE); - - if(!NT_SUCCESS(nErrCode)) - { - /* failure */ - SetLastErrorByStatus(nErrCode); - return FALSE; - } - - /* copy the fields */ - lpVersionInformation->dwMajorVersion = oviVerInfo.dwMajorVersion; - lpVersionInformation->dwMinorVersion = oviVerInfo.dwMinorVersion; - lpVersionInformation->dwBuildNumber = oviVerInfo.dwBuildNumber; - lpVersionInformation->dwPlatformId = oviVerInfo.dwPlatformId; - - if(lpVersionInformation->dwOSVersionInfoSize < sizeof(OSVERSIONINFOEXA)) - /* success */ - return TRUE; - - /* copy the extended fields */ - lpVersionInformationEx = (LPOSVERSIONINFOEXA)lpVersionInformation; - lpVersionInformationEx->wServicePackMajor = oviVerInfo.wServicePackMajor; - lpVersionInformationEx->wServicePackMinor = oviVerInfo.wServicePackMinor; - lpVersionInformationEx->wSuiteMask = oviVerInfo.wSuiteMask; - lpVersionInformationEx->wProductType = oviVerInfo.wProductType; - lpVersionInformationEx->wReserved = oviVerInfo.wReserved; - - /* success */ - return TRUE; } diff --git a/reactos/lib/ntdll/ldr/startup.c b/reactos/lib/ntdll/ldr/startup.c index f16e6a7d786..e775fab0ab6 100644 --- a/reactos/lib/ntdll/ldr/startup.c +++ b/reactos/lib/ntdll/ldr/startup.c @@ -207,10 +207,9 @@ LoadCompatibilitySettings(PPEB Peb) Peb->OSPlatformId = (ULONG)PlatformId; /* optional service pack version numbers */ - if(ReadCompatibilitySetting(SubKeyHandle, L"SPMajorVersion", ValueInfo, &SPMajorVersion)) - Peb->SPMajorVersion = (UCHAR)SPMajorVersion; - if(ReadCompatibilitySetting(SubKeyHandle, L"SPMinorVersion", ValueInfo, &SPMinorVersion)) - Peb->SPMinorVersion = (UCHAR)SPMinorVersion; + if(ReadCompatibilitySetting(SubKeyHandle, L"SPMajorVersion", ValueInfo, &SPMajorVersion) && + ReadCompatibilitySetting(SubKeyHandle, L"SPMinorVersion", ValueInfo, &SPMinorVersion)) + Peb->OSCSDVersion = ((SPMajorVersion & 0xFF) << 8) | (SPMinorVersion & 0xFF); finish: /* we're finished */ diff --git a/reactos/ntoskrnl/ps/process.c b/reactos/ntoskrnl/ps/process.c index c8f5784a843..9438fed517f 100644 --- a/reactos/ntoskrnl/ps/process.c +++ b/reactos/ntoskrnl/ps/process.c @@ -569,7 +569,7 @@ PsCreatePeb(HANDLE ProcessHandle, Peb->OSMinorVersion = 0; Peb->OSBuildNumber = 1381; Peb->OSPlatformId = 2; //VER_PLATFORM_WIN32_NT; - Peb->SPMajorVersion = 6; + Peb->OSCSDVersion = 6 << 8; Peb->AnsiCodePageData = (char*)TableBase + NlsAnsiTableOffset; Peb->OemCodePageData = (char*)TableBase + NlsOemTableOffset; From 99f3640c1701d74289967f9433d15699aab1c75f Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 19 Feb 2005 11:13:41 +0000 Subject: [PATCH 114/248] don't pass NULL handles to NtGdiCombineRgn svn path=/trunk/; revision=13640 --- reactos/subsys/win32k/ntuser/painting.c | 17 +++++++++-------- reactos/subsys/win32k/ntuser/windc.c | 17 ++++++++++++++--- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/reactos/subsys/win32k/ntuser/painting.c b/reactos/subsys/win32k/ntuser/painting.c index 9fb5e70aecd..dece285b320 100644 --- a/reactos/subsys/win32k/ntuser/painting.c +++ b/reactos/subsys/win32k/ntuser/painting.c @@ -309,19 +309,20 @@ IntInvalidateWindows(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags) -Window->WindowRect.top); hRgnNonClient = NtGdiCreateRectRgn(0, 0, 0, 0); - GDIOBJ_SetOwnership(hRgnNonClient, NULL); if (NtGdiCombineRgn(hRgnNonClient, Window->UpdateRegion, hRgnWindow, RGN_DIFF) == NULLREGION) { - GDIOBJ_SetOwnership(hRgnNonClient, PsGetCurrentProcess()); NtGdiDeleteObject(hRgnNonClient); hRgnNonClient = NULL; } + else + { + GDIOBJ_SetOwnership(hRgnNonClient, NULL); + } /* * Remove the nonclient region from the standard update region. */ - if (NtGdiCombineRgn(Window->UpdateRegion, Window->UpdateRegion, hRgnWindow, RGN_AND) == NULLREGION) { @@ -336,12 +337,12 @@ IntInvalidateWindows(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags) } else { - NtGdiCombineRgn(Window->NCUpdateRegion, Window->NCUpdateRegion, - hRgnNonClient, RGN_OR); - if (NULL != hRgnNonClient) + if(NULL != hRgnNonClient) { - GDIOBJ_SetOwnership(hRgnNonClient, PsGetCurrentProcess()); - NtGdiDeleteObject(hRgnNonClient); + NtGdiCombineRgn(Window->NCUpdateRegion, Window->NCUpdateRegion, + hRgnNonClient, RGN_OR); + GDIOBJ_SetOwnership(hRgnNonClient, PsGetCurrentProcess()); + NtGdiDeleteObject(hRgnNonClient); } } diff --git a/reactos/subsys/win32k/ntuser/windc.c b/reactos/subsys/win32k/ntuser/windc.c index 2d63c19b07b..7463bce6d03 100644 --- a/reactos/subsys/win32k/ntuser/windc.c +++ b/reactos/subsys/win32k/ntuser/windc.c @@ -213,7 +213,7 @@ DceDeleteClipRgn(DCE* Dce) { Dce->DCXFlags &= ~DCX_KEEPCLIPRGN; } - else if (Dce->hClipRgn > (HRGN) 1) + else if (Dce->hClipRgn != NULL) { GDIOBJ_SetOwnership(Dce->hClipRgn, PsGetCurrentProcess()); NtGdiDeleteObject(Dce->hClipRgn); @@ -332,10 +332,21 @@ DceUpdateVisRgn(DCE *Dce, PWINDOW_OBJECT Window, ULONG Flags) noparent: if (Flags & DCX_INTERSECTRGN) { - NtGdiCombineRgn(hRgnVisible, hRgnVisible, Dce->hClipRgn, RGN_AND); + if(Dce->hClipRgn != NULL) + { + NtGdiCombineRgn(hRgnVisible, hRgnVisible, Dce->hClipRgn, RGN_AND); + } + else + { + if(hRgnVisible != NULL) + { + NtGdiDeleteObject(hRgnVisible); + } + hRgnVisible = NtGdiCreateRectRgn(0, 0, 0, 0); + } } - if (Flags & DCX_EXCLUDERGN) + if (Flags & DCX_EXCLUDERGN && Dce->hClipRgn != NULL) { NtGdiCombineRgn(hRgnVisible, hRgnVisible, Dce->hClipRgn, RGN_DIFF); } From c6a8c7496fec63be0f92568d68ac14d797b59e5a Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 19 Feb 2005 13:13:17 +0000 Subject: [PATCH 115/248] fixed RtlEnterCriticalSection not to fail on wrong assumptions and added comment on why the debug message "Critical section not initialized (guess)" is wrong svn path=/trunk/; revision=13641 --- reactos/lib/ntdll/rtl/critical.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/reactos/lib/ntdll/rtl/critical.c b/reactos/lib/ntdll/rtl/critical.c index 50f01d46b33..2caa58f187e 100644 --- a/reactos/lib/ntdll/rtl/critical.c +++ b/reactos/lib/ntdll/rtl/critical.c @@ -144,23 +144,27 @@ RtlEnterCriticalSection( */ if (Thread == CriticalSection->OwningThread) { - /* You own it, so you'll get it when you're done with it! */ + /* You own it, so you'll get it when you're done with it! No need to + use the interlocked functions as only the thread who already owns + the lock can modify this data. */ CriticalSection->RecursionCount++; return STATUS_SUCCESS; } - else if (CriticalSection->OwningThread == (HANDLE)0) - { - /* No one else owns it either! */ - DPRINT1("Critical section not initialized (guess)!\n"); - /* FIXME: raise exception */ - return STATUS_INVALID_PARAMETER; - } + + /* NOTE - CriticalSection->OwningThread can be NULL here because changing + this information is not serialized. This happens when thread a + acquires the lock (LockCount == 0) and thread b tries to + acquire it as well (LockCount == 1) but thread a hasn't had a + chance to set the OwningThread! So it's not an error when + OwningThread is NULL here! */ /* We don't own it, so we must wait for it */ RtlpWaitForCriticalSection(CriticalSection); } - /* Lock successful */ + /* Lock successful. Changing this information has not to be serialized because + only one thread at a time can actually change it (the one who acquired + the lock)! */ CriticalSection->OwningThread = Thread; CriticalSection->RecursionCount = 1; return STATUS_SUCCESS; From f66a4cec4d86a8653923a8e43954a7700f8e239d Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 19 Feb 2005 13:44:56 +0000 Subject: [PATCH 116/248] don't increment the lock count twice in RtlTryEnterCriticalSection() and added some more comments svn path=/trunk/; revision=13642 --- reactos/lib/ntdll/rtl/critical.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/reactos/lib/ntdll/rtl/critical.c b/reactos/lib/ntdll/rtl/critical.c index 2caa58f187e..4771e3fe5fa 100644 --- a/reactos/lib/ntdll/rtl/critical.c +++ b/reactos/lib/ntdll/rtl/critical.c @@ -305,27 +305,33 @@ STDCALL RtlLeaveCriticalSection( PRTL_CRITICAL_SECTION CriticalSection) { +#ifndef NDEBUG HANDLE Thread = (HANDLE)NtCurrentTeb()->Cid.UniqueThread; + /* In win this case isn't checked. However it's a valid check so it should only + be performed in debug builds! */ if (Thread != CriticalSection->OwningThread) { DPRINT1("Releasing critical section not owned!\n"); - /* FIXME: raise exception */ return STATUS_INVALID_PARAMETER; } +#endif - /* Decrease the Recursion Count */ + /* Decrease the Recursion Count. No need to do this atomically because only + the thread who holds the lock can call this function (unless the program + is totally screwed... */ if (--CriticalSection->RecursionCount) { - /* Someone still owns us, but we are free */ + /* Someone still owns us, but we are free. This needs to be done atomically. */ InterlockedDecrement(&CriticalSection->LockCount); } else { - /* Nobody owns us anymore */ + /* Nobody owns us anymore. No need to do this atomically. See comment + above. */ CriticalSection->OwningThread = 0; - /* Was someone wanting us? */ + /* Was someone wanting us? This needs to be done atomically. */ if (InterlockedDecrement(&CriticalSection->LockCount) >= 0) { /* Let him have us */ @@ -360,19 +366,19 @@ RtlTryEnterCriticalSection( PRTL_CRITICAL_SECTION CriticalSection) { /* Try to take control */ - if (InterlockedCompareExchange(&CriticalSection->LockCount, - 0, - -1) == -1) { + if (InterlockedCompareExchange(&CriticalSection->LockCount, 0, -1) == -1) { - /* It's ours */ + /* It's ours. Changing this information does not have to be serialized + because we just obtained the lock. */ CriticalSection->OwningThread = NtCurrentTeb()->Cid.UniqueThread; CriticalSection->RecursionCount = 1; return TRUE; } else if (CriticalSection->OwningThread == NtCurrentTeb()->Cid.UniqueThread) { - /* It's already ours */ - InterlockedIncrement(&CriticalSection->LockCount); + /* It's already ours, just increment the recursion counter. This doesn't + have to be serialized because only the thread who already holds the + lock can do this. */ CriticalSection->RecursionCount++; return TRUE; } From 879f12f1f8caf514e2201109aa1cfba1c740a110 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 19 Feb 2005 14:30:32 +0000 Subject: [PATCH 117/248] revert my changes to RtlTryEnterCriticalSection() svn path=/trunk/; revision=13643 --- reactos/lib/ntdll/rtl/critical.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/reactos/lib/ntdll/rtl/critical.c b/reactos/lib/ntdll/rtl/critical.c index 4771e3fe5fa..16a96253b4a 100644 --- a/reactos/lib/ntdll/rtl/critical.c +++ b/reactos/lib/ntdll/rtl/critical.c @@ -360,29 +360,29 @@ RtlLeaveCriticalSection( * None * *--*/ -BOOLEAN +BOOLEAN STDCALL RtlTryEnterCriticalSection( PRTL_CRITICAL_SECTION CriticalSection) -{ +{ /* Try to take control */ - if (InterlockedCompareExchange(&CriticalSection->LockCount, 0, -1) == -1) { + if (InterlockedCompareExchange(&CriticalSection->LockCount, + 0, + -1) == -1) { - /* It's ours. Changing this information does not have to be serialized - because we just obtained the lock. */ + /* It's ours */ CriticalSection->OwningThread = NtCurrentTeb()->Cid.UniqueThread; CriticalSection->RecursionCount = 1; return TRUE; - + } else if (CriticalSection->OwningThread == NtCurrentTeb()->Cid.UniqueThread) { - - /* It's already ours, just increment the recursion counter. This doesn't - have to be serialized because only the thread who already holds the - lock can do this. */ + + /* It's already ours */ + InterlockedIncrement(&CriticalSection->LockCount); CriticalSection->RecursionCount++; return TRUE; } - + /* It's not ours */ return FALSE; } From de7052f5bf83b6837e672f596a07771f32ae48f6 Mon Sep 17 00:00:00 2001 From: Gregor Anich Date: Sat, 19 Feb 2005 16:36:51 +0000 Subject: [PATCH 118/248] One could have the impression that I am bored ;-) svn path=/trunk/; revision=13644 --- reactos/ntoskrnl/ex/power.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ex/power.c b/reactos/ntoskrnl/ex/power.c index 2b12c64e491..d68f98e11de 100644 --- a/reactos/ntoskrnl/ex/power.c +++ b/reactos/ntoskrnl/ex/power.c @@ -168,7 +168,9 @@ NtShutdownSystem(IN SHUTDOWN_ACTION Action) "Just go forward in all your beliefs, and prove to me that I am not mistaken in mine.\n", "Lowest possible energy state reached! Switch off now to achive a Bose-Einstein condensate.\n", "Hasta la vista, BABY!\n", - "They live, we sleep!\n" + "They live, we sleep!\n", + "I have come here to chew bubble gum and kick ass.\n" + "And I'm all out of bubble gum!\n" }; LARGE_INTEGER Now; From dfc35c22f3a09dc361022b9d3523a1bedb876c74 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sat, 19 Feb 2005 18:12:44 +0000 Subject: [PATCH 119/248] silence debug message svn path=/trunk/; revision=13645 --- reactos/subsys/win32k/ntuser/window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/subsys/win32k/ntuser/window.c b/reactos/subsys/win32k/ntuser/window.c index b2911d9a20e..f83c638a117 100644 --- a/reactos/subsys/win32k/ntuser/window.c +++ b/reactos/subsys/win32k/ntuser/window.c @@ -1173,7 +1173,7 @@ NtUserBuildHwndList( if(!(W32Thread = Thread->Tcb.Win32Thread)) { ObDereferenceObject(Thread); - DPRINT1("Thread is not a GUI Thread!\n"); + DPRINT("Thread is not a GUI Thread!\n"); SetLastWin32Error(ERROR_INVALID_PARAMETER); return 0; } From 67f6f9d3077222dd4e2c175fa002c499aec32a97 Mon Sep 17 00:00:00 2001 From: Art Yerkes Date: Sat, 19 Feb 2005 22:22:45 +0000 Subject: [PATCH 120/248] Zero queue fields needed for accept. svn path=/trunk/; revision=13651 --- reactos/drivers/lib/oskittcp/oskittcp/interface.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/reactos/drivers/lib/oskittcp/oskittcp/interface.c b/reactos/drivers/lib/oskittcp/oskittcp/interface.c index 5d9bb3bf70c..bbe5c12c879 100644 --- a/reactos/drivers/lib/oskittcp/oskittcp/interface.c +++ b/reactos/drivers/lib/oskittcp/oskittcp/interface.c @@ -120,6 +120,8 @@ int OskitTCPSocket( void *context, so->so_connection = context; so->so_state = SS_NBIO; so->so_error = 0; + so->so_q = so->so_q0 = NULL; + so->so_qlen = 0; *aso = so; } return error; From b36baad1255911a6e93af13c5ae976fda7dcfc23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sat, 19 Feb 2005 22:30:27 +0000 Subject: [PATCH 121/248] Import Wine Resource Compiler and use it for winedll's svn path=/trunk/; revision=13652 --- reactos/rules.mak | 1 + reactos/tools/Makefile | 9 +- reactos/tools/helper.mk | 16 +- reactos/tools/wrc/CHANGES | 336 + reactos/tools/wrc/Makefile | 157 + reactos/tools/wrc/Makefile.in | 53 + reactos/tools/wrc/dumpres.c | 1038 ++ reactos/tools/wrc/dumpres.h | 30 + reactos/tools/wrc/genres.c | 1974 +++ reactos/tools/wrc/genres.h | 36 + reactos/tools/wrc/lex.yy.c | 9072 ++++++++++ reactos/tools/wrc/newstruc.c | 1181 ++ reactos/tools/wrc/newstruc.h | 85 + reactos/tools/wrc/parser.h | 39 + reactos/tools/wrc/parser.l | 682 + reactos/tools/wrc/parser.y | 3027 ++++ reactos/tools/wrc/port/mkstemps.c | 138 + reactos/tools/wrc/readres.c | 387 + reactos/tools/wrc/readres.h | 28 + reactos/tools/wrc/translation.c | 1155 ++ reactos/tools/wrc/unicode/Makefile.in | 88 + reactos/tools/wrc/unicode/c_037.c | 683 + reactos/tools/wrc/unicode/c_10000.c | 683 + reactos/tools/wrc/unicode/c_10006.c | 683 + reactos/tools/wrc/unicode/c_10007.c | 716 + reactos/tools/wrc/unicode/c_10029.c | 683 + reactos/tools/wrc/unicode/c_1006.c | 716 + reactos/tools/wrc/unicode/c_10079.c | 683 + reactos/tools/wrc/unicode/c_10081.c | 683 + reactos/tools/wrc/unicode/c_1026.c | 683 + reactos/tools/wrc/unicode/c_1250.c | 683 + reactos/tools/wrc/unicode/c_1251.c | 716 + reactos/tools/wrc/unicode/c_1252.c | 683 + reactos/tools/wrc/unicode/c_1253.c | 683 + reactos/tools/wrc/unicode/c_1254.c | 683 + reactos/tools/wrc/unicode/c_1255.c | 716 + reactos/tools/wrc/unicode/c_1256.c | 716 + reactos/tools/wrc/unicode/c_1257.c | 683 + reactos/tools/wrc/unicode/c_1258.c | 683 + reactos/tools/wrc/unicode/c_20866.c | 716 + reactos/tools/wrc/unicode/c_20932.c | 6298 +++++++ reactos/tools/wrc/unicode/c_21866.c | 716 + reactos/tools/wrc/unicode/c_28591.c | 683 + reactos/tools/wrc/unicode/c_28592.c | 683 + reactos/tools/wrc/unicode/c_28593.c | 683 + reactos/tools/wrc/unicode/c_28594.c | 683 + reactos/tools/wrc/unicode/c_28595.c | 716 + reactos/tools/wrc/unicode/c_28596.c | 716 + reactos/tools/wrc/unicode/c_28597.c | 683 + reactos/tools/wrc/unicode/c_28598.c | 716 + reactos/tools/wrc/unicode/c_28599.c | 683 + reactos/tools/wrc/unicode/c_28600.c | 683 + reactos/tools/wrc/unicode/c_28603.c | 683 + reactos/tools/wrc/unicode/c_28604.c | 683 + reactos/tools/wrc/unicode/c_28605.c | 683 + reactos/tools/wrc/unicode/c_28606.c | 683 + reactos/tools/wrc/unicode/c_424.c | 716 + reactos/tools/wrc/unicode/c_437.c | 683 + reactos/tools/wrc/unicode/c_500.c | 683 + reactos/tools/wrc/unicode/c_737.c | 683 + reactos/tools/wrc/unicode/c_775.c | 683 + reactos/tools/wrc/unicode/c_850.c | 683 + reactos/tools/wrc/unicode/c_852.c | 683 + reactos/tools/wrc/unicode/c_855.c | 716 + reactos/tools/wrc/unicode/c_856.c | 716 + reactos/tools/wrc/unicode/c_857.c | 683 + reactos/tools/wrc/unicode/c_860.c | 683 + reactos/tools/wrc/unicode/c_861.c | 683 + reactos/tools/wrc/unicode/c_862.c | 716 + reactos/tools/wrc/unicode/c_863.c | 683 + reactos/tools/wrc/unicode/c_864.c | 716 + reactos/tools/wrc/unicode/c_865.c | 683 + reactos/tools/wrc/unicode/c_866.c | 716 + reactos/tools/wrc/unicode/c_869.c | 683 + reactos/tools/wrc/unicode/c_874.c | 716 + reactos/tools/wrc/unicode/c_875.c | 683 + reactos/tools/wrc/unicode/c_878.c | 716 + reactos/tools/wrc/unicode/c_932.c | 5242 ++++++ reactos/tools/wrc/unicode/c_936.c | 7882 +++++++++ reactos/tools/wrc/unicode/c_949.c | 9301 ++++++++++ reactos/tools/wrc/unicode/c_950.c | 6595 ++++++++ reactos/tools/wrc/unicode/casemap.c | 1530 ++ reactos/tools/wrc/unicode/collation.c | 1657 ++ reactos/tools/wrc/unicode/compose.c | 1098 ++ reactos/tools/wrc/unicode/cpmap.pl | 1211 ++ reactos/tools/wrc/unicode/cptable.c | 179 + reactos/tools/wrc/unicode/defaults | 202 + reactos/tools/wrc/unicode/fold.c | 198 + reactos/tools/wrc/unicode/mbtowc.c | 298 + reactos/tools/wrc/unicode/sortkey.c | 351 + reactos/tools/wrc/unicode/string.c | 457 + reactos/tools/wrc/unicode/utf8.c | 200 + reactos/tools/wrc/unicode/wctomb.c | 477 + reactos/tools/wrc/unicode/wctype.c | 1802 ++ reactos/tools/wrc/unicode/wine/unicode.h | 292 + reactos/tools/wrc/unicode/wine_unicode.def | 27 + reactos/tools/wrc/unicode/wine_unicode.map | 30 + reactos/tools/wrc/utils.c | 452 + reactos/tools/wrc/utils.h | 50 + reactos/tools/wrc/wpp/Makefile.in | 37 + reactos/tools/wrc/wpp/lex.yy.c | 16936 +++++++++++++++++++ reactos/tools/wrc/wpp/ppl.l | 1485 ++ reactos/tools/wrc/wpp/ppy.y | 659 + reactos/tools/wrc/wpp/preproc.c | 651 + reactos/tools/wrc/wpp/wpp.c | 200 + reactos/tools/wrc/wpp/wpp.tab.c | 2328 +++ reactos/tools/wrc/wpp/wpp.tab.h | 151 + reactos/tools/wrc/wpp/wpp_private.h | 257 + reactos/tools/wrc/wrc.c | 494 + reactos/tools/wrc/wrc.doc | 174 + reactos/tools/wrc/wrc.h | 69 + reactos/tools/wrc/wrc.man | 199 + reactos/tools/wrc/wrctypes.h | 651 + reactos/tools/wrc/writeres.c | 105 + reactos/tools/wrc/y.tab.c | 5524 ++++++ reactos/tools/wrc/y.tab.h | 256 + 116 files changed, 133692 insertions(+), 4 deletions(-) create mode 100644 reactos/tools/wrc/CHANGES create mode 100644 reactos/tools/wrc/Makefile create mode 100644 reactos/tools/wrc/Makefile.in create mode 100644 reactos/tools/wrc/dumpres.c create mode 100644 reactos/tools/wrc/dumpres.h create mode 100644 reactos/tools/wrc/genres.c create mode 100644 reactos/tools/wrc/genres.h create mode 100644 reactos/tools/wrc/lex.yy.c create mode 100644 reactos/tools/wrc/newstruc.c create mode 100644 reactos/tools/wrc/newstruc.h create mode 100644 reactos/tools/wrc/parser.h create mode 100644 reactos/tools/wrc/parser.l create mode 100644 reactos/tools/wrc/parser.y create mode 100644 reactos/tools/wrc/port/mkstemps.c create mode 100644 reactos/tools/wrc/readres.c create mode 100644 reactos/tools/wrc/readres.h create mode 100644 reactos/tools/wrc/translation.c create mode 100644 reactos/tools/wrc/unicode/Makefile.in create mode 100644 reactos/tools/wrc/unicode/c_037.c create mode 100644 reactos/tools/wrc/unicode/c_10000.c create mode 100644 reactos/tools/wrc/unicode/c_10006.c create mode 100644 reactos/tools/wrc/unicode/c_10007.c create mode 100644 reactos/tools/wrc/unicode/c_10029.c create mode 100644 reactos/tools/wrc/unicode/c_1006.c create mode 100644 reactos/tools/wrc/unicode/c_10079.c create mode 100644 reactos/tools/wrc/unicode/c_10081.c create mode 100644 reactos/tools/wrc/unicode/c_1026.c create mode 100644 reactos/tools/wrc/unicode/c_1250.c create mode 100644 reactos/tools/wrc/unicode/c_1251.c create mode 100644 reactos/tools/wrc/unicode/c_1252.c create mode 100644 reactos/tools/wrc/unicode/c_1253.c create mode 100644 reactos/tools/wrc/unicode/c_1254.c create mode 100644 reactos/tools/wrc/unicode/c_1255.c create mode 100644 reactos/tools/wrc/unicode/c_1256.c create mode 100644 reactos/tools/wrc/unicode/c_1257.c create mode 100644 reactos/tools/wrc/unicode/c_1258.c create mode 100644 reactos/tools/wrc/unicode/c_20866.c create mode 100644 reactos/tools/wrc/unicode/c_20932.c create mode 100644 reactos/tools/wrc/unicode/c_21866.c create mode 100644 reactos/tools/wrc/unicode/c_28591.c create mode 100644 reactos/tools/wrc/unicode/c_28592.c create mode 100644 reactos/tools/wrc/unicode/c_28593.c create mode 100644 reactos/tools/wrc/unicode/c_28594.c create mode 100644 reactos/tools/wrc/unicode/c_28595.c create mode 100644 reactos/tools/wrc/unicode/c_28596.c create mode 100644 reactos/tools/wrc/unicode/c_28597.c create mode 100644 reactos/tools/wrc/unicode/c_28598.c create mode 100644 reactos/tools/wrc/unicode/c_28599.c create mode 100644 reactos/tools/wrc/unicode/c_28600.c create mode 100644 reactos/tools/wrc/unicode/c_28603.c create mode 100644 reactos/tools/wrc/unicode/c_28604.c create mode 100644 reactos/tools/wrc/unicode/c_28605.c create mode 100644 reactos/tools/wrc/unicode/c_28606.c create mode 100644 reactos/tools/wrc/unicode/c_424.c create mode 100644 reactos/tools/wrc/unicode/c_437.c create mode 100644 reactos/tools/wrc/unicode/c_500.c create mode 100644 reactos/tools/wrc/unicode/c_737.c create mode 100644 reactos/tools/wrc/unicode/c_775.c create mode 100644 reactos/tools/wrc/unicode/c_850.c create mode 100644 reactos/tools/wrc/unicode/c_852.c create mode 100644 reactos/tools/wrc/unicode/c_855.c create mode 100644 reactos/tools/wrc/unicode/c_856.c create mode 100644 reactos/tools/wrc/unicode/c_857.c create mode 100644 reactos/tools/wrc/unicode/c_860.c create mode 100644 reactos/tools/wrc/unicode/c_861.c create mode 100644 reactos/tools/wrc/unicode/c_862.c create mode 100644 reactos/tools/wrc/unicode/c_863.c create mode 100644 reactos/tools/wrc/unicode/c_864.c create mode 100644 reactos/tools/wrc/unicode/c_865.c create mode 100644 reactos/tools/wrc/unicode/c_866.c create mode 100644 reactos/tools/wrc/unicode/c_869.c create mode 100644 reactos/tools/wrc/unicode/c_874.c create mode 100644 reactos/tools/wrc/unicode/c_875.c create mode 100644 reactos/tools/wrc/unicode/c_878.c create mode 100644 reactos/tools/wrc/unicode/c_932.c create mode 100644 reactos/tools/wrc/unicode/c_936.c create mode 100644 reactos/tools/wrc/unicode/c_949.c create mode 100644 reactos/tools/wrc/unicode/c_950.c create mode 100644 reactos/tools/wrc/unicode/casemap.c create mode 100644 reactos/tools/wrc/unicode/collation.c create mode 100644 reactos/tools/wrc/unicode/compose.c create mode 100644 reactos/tools/wrc/unicode/cpmap.pl create mode 100644 reactos/tools/wrc/unicode/cptable.c create mode 100644 reactos/tools/wrc/unicode/defaults create mode 100644 reactos/tools/wrc/unicode/fold.c create mode 100644 reactos/tools/wrc/unicode/mbtowc.c create mode 100644 reactos/tools/wrc/unicode/sortkey.c create mode 100644 reactos/tools/wrc/unicode/string.c create mode 100644 reactos/tools/wrc/unicode/utf8.c create mode 100644 reactos/tools/wrc/unicode/wctomb.c create mode 100644 reactos/tools/wrc/unicode/wctype.c create mode 100644 reactos/tools/wrc/unicode/wine/unicode.h create mode 100644 reactos/tools/wrc/unicode/wine_unicode.def create mode 100644 reactos/tools/wrc/unicode/wine_unicode.map create mode 100644 reactos/tools/wrc/utils.c create mode 100644 reactos/tools/wrc/utils.h create mode 100644 reactos/tools/wrc/wpp/Makefile.in create mode 100644 reactos/tools/wrc/wpp/lex.yy.c create mode 100644 reactos/tools/wrc/wpp/ppl.l create mode 100644 reactos/tools/wrc/wpp/ppy.y create mode 100644 reactos/tools/wrc/wpp/preproc.c create mode 100644 reactos/tools/wrc/wpp/wpp.c create mode 100644 reactos/tools/wrc/wpp/wpp.tab.c create mode 100644 reactos/tools/wrc/wpp/wpp.tab.h create mode 100644 reactos/tools/wrc/wpp/wpp_private.h create mode 100644 reactos/tools/wrc/wrc.c create mode 100644 reactos/tools/wrc/wrc.doc create mode 100644 reactos/tools/wrc/wrc.h create mode 100644 reactos/tools/wrc/wrc.man create mode 100644 reactos/tools/wrc/wrctypes.h create mode 100644 reactos/tools/wrc/writeres.c create mode 100644 reactos/tools/wrc/y.tab.c create mode 100644 reactos/tools/wrc/y.tab.h diff --git a/reactos/rules.mak b/reactos/rules.mak index b490f754506..1317b363039 100644 --- a/reactos/rules.mak +++ b/reactos/rules.mak @@ -162,6 +162,7 @@ export CDMAKE = $(Q)$(TOOLS_PATH)/cdmake/cdmake export BIN2RES = $(Q)$(TOOLS_PATH)/bin2res/bin2res export XSLTPROC = $(Q)xsltproc export MS2PS = $(Q)$(TOOLS_PATH)/ms2ps/ms2ps +export WRC = $(Q)$(TOOLS_PATH)/wrc/wrc export STD_CFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -pipe -march=$(OARCH) -D_M_IX86 export STD_CPPFLAGS = $(STD_CFLAGS) diff --git a/reactos/tools/Makefile b/reactos/tools/Makefile index 9fcf18a4594..40084444a4d 100644 --- a/reactos/tools/Makefile +++ b/reactos/tools/Makefile @@ -20,7 +20,7 @@ TOOLS = \ CLEAN_FILES = $(TOOLS) all: $(TOOLS) zlib_target wmc_target cabman_target cdmake_target mkhive_target rgenstat_target \ - wine2ros_target pipetools_target winebuild_target bin2res_target + wine2ros_target pipetools_target winebuild_target bin2res_target wrc_target buildno$(EXE_POSTFIX): buildno.c ../include/reactos/version.h @$(HOST_CC) $(CFLAGS) -o buildno$(EXE_POSTFIX) buildno.c @@ -130,11 +130,15 @@ winebuild_target: bin2res_target: $(MAKE) --silent -C bin2res bin2res$(EXE_POSTFIX) -.PHONY: wmc_target cdmake_target mkhive_target rgenstat_target pipetools_target +wrc_target: + $(MAKE) --silent -C wrc wrc$(EXE_POSTFIX) + +.PHONY: wmc_target cdmake_target mkhive_target rgenstat_target pipetools_target wrc_target ifeq ($(HOST),mingw32-linux) clean: + $(MAKE) --silent -C wrc clean $(MAKE) --silent -C cabman clean $(MAKE) --silent -C cdmake clean $(MAKE) --silent -C mkhive clean @@ -150,6 +154,7 @@ clean: endif ifeq ($(HOST),mingw32-windows) clean: + $(MAKE) --silent -C wrc clean $(MAKE) --silent -C cabman clean $(MAKE) --silent -C cdmake clean $(MAKE) --silent -C mkhive clean diff --git a/reactos/tools/helper.mk b/reactos/tools/helper.mk index 7790910fa6a..18d6093132e 100644 --- a/reactos/tools/helper.mk +++ b/reactos/tools/helper.mk @@ -474,7 +474,7 @@ ifeq ($(TARGET_TYPE),winedll) MK_SDKLIBS := MK_CFLAGS := -D__USE_W32API -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x501 -DWINVER=0x501 -D_STDDEF_H -I$(PATH_TO_TOP)/include/wine MK_CPPFLAGS := -D__USE_W32API -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x501 -DWINVER=0x501 -D__need_offsetof -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/include/wine - MK_RCFLAGS := --define __USE_W32API --include-dir $(PATH_TO_TOP)/include/wine + MK_PREPROC_FOR_RC_FLAGS := -xc -E -DRC_INVOKED -D__USE_W32API -I$(PATH_TO_TOP)/include/wine -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/w32api/include MK_IMPLIB := yes MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := $(SDK_PATH_LIB) @@ -931,7 +931,7 @@ clean: $(MK_REGTESTS_CLEAN) $(SUBDIRS:%=%_clean) - $(RM) *.o $(MK_PCHCLEAN) $(MK_BASENAME).a $(MK_RESOURCE) \ $(MK_FULLNAME) $(MK_NOSTRIPNAME) $(MK_CLEANFILES) $(MK_CLEANDEPS) $(MK_BASENAME).map \ junk.tmp base.tmp temp.exp $(MK_RC_BINARIES) $(MK_SPECDEF) $(MK_STUBS_SRC) \ - $(MK_GENERATED_MAKEFILE) $(TARGET_CLEAN) + $(MK_RES_TEMPS) $(MK_GENERATED_MAKEFILE) $(TARGET_CLEAN) ifneq ($(TARGET_HEADERS),) $(TARGET_OBJECTS): $(TARGET_HEADERS) @@ -1007,6 +1007,8 @@ $(MK_RC_BINARIES): $(TARGET_RC_BINSRC) $(BIN2RES) -f -o $@ $(TARGET_RC_BINSRC) $(MK_RESOURCE): $(MK_RC_BINARIES) + +MK_RES_TEMPS = $(MK_RESOURCE:.coff=.rci) $(MK_RESOURCE:.coff=.res) endif REGTEST_TESTS = $(wildcard tests/tests/*.c) @@ -1091,9 +1093,19 @@ endif %.o: %.asm $(HALFVERBOSEECHO) [NASM] $< $(NASM_CMD) $(TARGET_NFLAGS) $< -o $@ +ifeq ($(TARGET_TYPE),winedll) +%.coff: %.rc + $(HALFVERBOSEECHO) [RC] $< + $(CC) $(MK_PREPROC_FOR_RC_FLAGS) $< > $(<:.rc=.rci) + $(WRC) $(<:.rc=.rci) $(<:.rc=.res) + $(RM) $(<:.rc=.rci) + $(RC) $(<:.rc=.res) -o $@ + $(RM) $(<:.rc=.res) +else %.coff: %.rc $(HALFVERBOSEECHO) [RC] $< $(RC) $(TARGET_RCFLAGS) $< -o $@ +endif %.spec.def: %.spec $(HALFVERBOSEECHO) [DEF] $< $(WINEBUILD) $(DEFS) -o $@ --def $< diff --git a/reactos/tools/wrc/CHANGES b/reactos/tools/wrc/CHANGES new file mode 100644 index 00000000000..9281233213d --- /dev/null +++ b/reactos/tools/wrc/CHANGES @@ -0,0 +1,336 @@ +--------------------------------------------------------------------------- +Version 1.1.9 (31-Dec-2000) + +Ulrich Weigand +- Fixed a byteorder conversion problem with message tables. +- Carefully read and write (possibly) misaligned data elements + to avoid crashes on architectures where this is not allowed. + +--------------------------------------------------------------------------- +Version 1.1.8 (24-Aug-2000) + +Bertho Stultiens +- Fixed a LALR(2) problem while scanning usertype resources which + had identifiers for both name and type. + +--------------------------------------------------------------------------- +Version 1.1.7 (24-Jul-2000) + +Bertho Stultiens +- Implemented a bug-work-arround for Berkeley yacc (byacc) which + does not generate proper default transition rules for non-terminals. + See comments in parser.y how the fix works. +- Changed the error-line/char position to make emacs happy parsing + the position of the error. +- Added comments in the documentation in which order the line-numer + and character-position of the error is written. + +--------------------------------------------------------------------------- +Version 1.1.6 (05-Jun-2000) + +Bertho Stultiens +- Bugfix: Macro expansion of strings would assert an internal error + or a segfault due to a lacking '\0' in the expansion. +- Bugfix: Prevent buffer overflow in reallocation of macro expansion + buffers. +- Bugfix: Wrc's version information was not passed as numerical to the + preprocessor due to an error in the definition of the macro. +- Relaxed the newline constraint in global LANGUAGE statements, which + was introduced in version 1.1.3, so that some fancy preprocessor + constructs can work. +- Removed the gcc-style #line handling from the resource-parser to the + resource-scanner so that it is possible to include files at any stage + of the source, independent of the parser-state. +- Bugfix: Stringtables were not correctly searched for duplicates + because the language comparison disregarded the sublanguage. +- Eliminated a repetitive warning when writing stringtables with zero + length string entries. These are perfectly valid (but make no sense:-). + Warning are now only generated during parse in pedantic mode. + +--------------------------------------------------------------------------- +Version 1.1.5 (12-Jun-2000) + +Bertho Stultiens +- Bugfix: Corrected "off by one" error in the linenumber while parsing + resource. +- Bugfix: A segfault would occur if messagetables were parsed without + memory options attached. Also added buffer-overflow safeguard while + converting between byteorders. +- Finished remapping usertype resources onto standars types by tricking + the parser into accepting a different token. The remapping can be + disabled with a new commandline option '-m'. +- Resolved some warning about chars used as index on SGI O2 machine + (the ctype isXXX() routines are macros there). + +--------------------------------------------------------------------------- +Version 1.1.4 (07-Jun-2000) + +Bertho Stultiens +- Implemented MESSAGETABLE resource type. +- Usertype resources that cause a type-clash with defined resources + are now detected and a warning is generated. Some types should be + rerouted through other code so that they will be (re-)interpreted. +- Bugfix: Line-continuation in strings in resources include a newline. + This `feature' got deleted with the builtin preprocessor, but has been + put back into place (see last changes comment from version 1.1.0). +- Bugfix: The preprocessor now correctly will see "\\\r\n" as a line- + continuation. +- Bugfix: Assemblers on some platforms do not use 16bit quantities + for `.word'. This directive is now changed into `.short'. +- All types that accept inline data definitions (a la RCDATA) now + also accept a file specification. This unifies the structure a bit. + +--------------------------------------------------------------------------- +Version 1.1.3 (21-May-2000) + +Bertho Stultiens +- Implemented animated cursors and icons resource types. +- Added partial support for font resources (user supplied fontdir is + required). +- All resources with inline data (a la RCDATA) now support language, + version and characteristics data. +- Implemented resource name duplicate checks. It is now an error if + two resources of the same type have the same name. +- Bugfix: Language propagation was not correct when .res files were + generated. +- Bugfix: VERSIONINFO now handles memory options. +- Bugfix: resource names and the resource type may be equal (e.g. MENU + MENU {...}). This support was mistakingly deleted in the upgrade to + the builtin preprocessor. + The standalone LANGUAGE setting became context sensitive as a consequence + of this. Now it *must* end with a newline *after* both expressions and + no newlines are allowed within the line (the statement must fit on one + line). This is no practical problem though. + +Patrik Stridvall +- Fixed byte order on Solaris and FreeBSD. + +--------------------------------------------------------------------------- +Version 1.1.2 (08-May-2000) + +Bertho Stultiens +- Bugfix: Corrected a SEGV in the rawdata handling. Mistakingly took the + address of a pointer instead of its value. This probably slipped in + during the merge of my tree into the winetree. + Lesson learned: always double check. +- Verified most resources so that win16 compile also generates correct + output for reversed endian. + +--------------------------------------------------------------------------- +Version 1.1.1 (07-May-2000) + +Bertho Stultiens +- Implemented byte-ordering for resources. All resources can be forced + to be little-, big- or native endian with command-line option -B. +- Reading resources from .res-files are only accepted in native byte- + ordering so that no additional semantic analysis is required. +- Resource directory is still written in native-only format, including + the strings. +- Wrc is now installed through the makefile with 'make install' and also + uninstalled with 'make uninstall'. +- Wrote a man-page for better reference. The manpage also gets installed + and uninstalled. +- Cleaned up the namespace a bit by more agressive use of static. + +--------------------------------------------------------------------------- +Version 1.1.0 (01-May-2000) + +Bertho Stultiens +- Implemented a new preprocessor that is (nearly) ANSI-C compliant. The + old parser has been stripped from the old preprocessor-code which + cleaned up both resource-scanner and -parser. +- Standard defines have been introduced (see README.wrc) +- Both preprocessor- and resource-scanner have been optimized slightly + so that no backing up is required (one char lookahead is enough). +- Filename-scanning has been cleaned up, though not perfect yet. +- User-type resources are compatible now. +- Line-continuation in strings is corrected so that it does not + introduce a newline in the output. + +--------------------------------------------------------------------------- +Version 1.0.18 (28-Dec-1999) + +Bertho Stultiens +- Bugfix: The named resources were not named correctly for indirectly + addressable resources, which resulted in an undefined variable. The + previous fix was incomplete (I was probably sleeping while I made it). + +--------------------------------------------------------------------------- +Version 1.0.17 (20-Dec-1999) + +Bertho Stultiens +- Bugfix: Named resources of different types generated the same assembly- + label twice, resulting in a compile failure. + +--------------------------------------------------------------------------- +Version 1.0.16 (6-Nov-1999) + +Juergen.Schmied@debitel.net +- Bugfix: Styles were evaluated as expressions. The NOT in combination + with style flags was not overwriting the default styles like WS_VISIBLE. + Solved by introducing own rules for parsing styles. + +--------------------------------------------------------------------------- +Version 1.0.15 (13-Aug-1999) + +Bertho Stultiens +- Bugfix: IDs were not checked which resulted in numbers > 2^16-1 being + accepted as IDs. This resulted in duplicate IDs and all other sort of + trouble. + +--------------------------------------------------------------------------- +Version 1.0.14 (08-Aug-1999) + +Bertho Stultiens +- Deeply ashamed that I thought that flex had a bug. Of course my own fault + not recognizing unmatched text in start condition yyrcd and pp_strip[ps]. + There is a catch all rule now in the flexer with a warning to mark the + condition and promptly revealed errors in the wine-headers. + +--------------------------------------------------------------------------- +Version 1.0.13 (08-Aug-1999) + +Bertho Stultiens +- Fixed uppercase conversion of titles in dialog controls which was + introduced with the icon changes. +- Fixed strings longer than 1024 bytes/shorts by autosizing the array. A + warning is issued whenever more than 64k is allocated. +- Made a workarround for a flex bug where an ECHO put '\\' and '\n' + characters on the screen. + +--------------------------------------------------------------------------- +Version 1.0.12 (18-Jul-1999) + +Bertho Stultiens +- Generalized the distinction between 2 and 4 byte integers slightly through + a new parser state. The is now a warning when a 2 byte integer is larger + than 16 bit (and is truncated). +- Fixed a couple of cosmetic things in the DLGINIT stuff so that dumping of + this type will work as expected. +- Added generalized language/version/characteristics support to the DLGINIT + resource type. + +Ulrich Czekalla +- Added support for DLGINIT resource-type. +- Added string continuation and embedded quoting. +- Added numeric IDs for icons in controls. + +Eric Pouech +- Bugfix: Distinguish between 2 and 4 byte integers in RCDATA. + +--------------------------------------------------------------------------- +Version 1.0.11 (22-Apr-1999) + +Bertho Stultiens +- Fixed a counting bug in the win32 count and sort routine. +- Fixed sort order of resources (must be name before ordinal). +- Shuffled a couple of global variables so that built-in dlls now can + load resources through the proper PE interface. + +--------------------------------------------------------------------------- +Version 1.0.10 (18-Feb-1999) + +Alexandre Julliard +- Fixed the TIME_LONG ugliness. + +David Luyer +- Added string.h include in newstruc.c for compilation on 64bit platforms. +- Added TIME_LONG to support time_t==int in printf formats on alpha + platforms. + +Bertho Stultiens +- Added some more use of TIME_LONG in implicit format used in header-file + generation. +- Removed the windows.h include and replaced it with wintypes.h in + wrctypes.h and added winuser.h in two other sources. This cuts compilation + time by a factor of 2 and final executable size with debug by a factor 2.5. + +--------------------------------------------------------------------------- +Version 1.0.9 (01-Feb-1999) + +Albert den Haan : +- Fixed wrong order of res_ico and res_bmp which must be in RT_xxx order. + +--------------------------------------------------------------------------- +Version 1.0.8 (10-Jan-1999) + +Albert den Haan : +- Added TOOLBAR support. +- Buffer overflow fix in strncpyWtoA. +- Open embedded files in resource definitions through the include path from + the commandline. +- Support named icons in dialogs with unquoted names + +Bertho Stultiens +- Fixed a major bug in the language propagation in the parser. The parser + did not copy the current language while binding it to a resource structure + causing wrong sorting if multiple global languages were in use and was a + potential segfault because the pointer might not be valid. +- Added language/version/characteristics support for toolbar. +- Moved some defines from wrc.h to wrctypes.h to support in toolbars. +- Removed function stricmp from source and replaced with native function + strcasecmp. +- Allocate cursor and icon ordinals according to the language of the item to + decrease the amount of ordinals in use. This reduces the resource + directory size by reducing the tree size. +- Versions 1.0.5 through 1.0.7 were never commited to cvs but were available + for download from an alternate site for elf-dll test generation. + +--------------------------------------------------------------------------- +Version 1.0.7 (19-Dec-1998) +- Changed a couple of labels that are used by dllglue. Also reversed a patch + that made wrc's generated code dependent on dllglue's code. + +--------------------------------------------------------------------------- +Version 1.0.6 (12-Dec-1998) +- Fixed the _PEResTab table where incorrect RVA's were put in the table. + The dllglue should now be merged into wrc for correct labels and the least + number of loadtime fixups. + +--------------------------------------------------------------------------- +Version 1.0.5 (12-Dec-1998) +- Fixed an omited .globl statement for dllglue linking. + +--------------------------------------------------------------------------- +Version 1.0.4 (10-Dec-1998) +- Added a global label for elf-dll linking and a long with the resource + size and a long with the directory size. +- Killed an annoying warning since version 1.0.0 in parser.y about a + var being used before init. + +--------------------------------------------------------------------------- +Version 1.0.3 (02-Nov-1998) +- Bugfix in write_name_str() [writeres.c] where the length byte/word was + wrongly counted in the length of the string. + Thanks to Ulrich Weigand + +--------------------------------------------------------------------------- +Version 1.0.2 (20-Jun-1998) +- Started this file +- Fixed a bug in filename scanning when they are double quoted. The code now + is compatible with MS' rc and Borland's brc. There is a compromise in the + filenames because of case-sensitivity under *nix. +- Backslashes in a filepath are now converted to forward slashes and double +- Fixed a bug in printing the filename if loading of a file should fail. + backslashes are converted to single forward slash. +- Added -L option to prevent conversion to lower case for embedded filenames + in resource statements. +- Added language posibilities to icons and cursors so that the current + language is put into the .res ans .s file. +- Added character position indication of an error. +- Fixed CLASS statement so that it accepts double quoted strings as class + argument. This seems to be the correct behaviour (see SDK). The unquoted + class-name is still supported because it seems a reasonable option. +- Fixed accelerators with CONTROL option set so that they generate correct + code instead of generating an error. +- Added testing for flex version 2.5 or better because wrc needs the + yy_scan* functions to do preprocessing. + +--------------------------------------------------------------------------- +Version 1.0.1 (08-Jun-1998) +- Added -A commandline option to generate autoregister code for the winelib + programs. + +--------------------------------------------------------------------------- +Version 1.0.0 (28-May-1998) +- Initial release diff --git a/reactos/tools/wrc/Makefile b/reactos/tools/wrc/Makefile new file mode 100644 index 00000000000..a44f337bf52 --- /dev/null +++ b/reactos/tools/wrc/Makefile @@ -0,0 +1,157 @@ +# +# wrc +# +PATH_TO_TOP = ../.. + +include $(PATH_TO_TOP)/rules.mak + +TARGET = wrc$(EXE_POSTFIX) + +all: $(TARGET) + +BASE_OBJECTS = \ + dumpres.o \ + genres.o \ + newstruc.o \ + readres.o \ + translation.o \ + utils.o \ + wrc.o \ + writeres.o \ + y.tab.o \ + lex.yy.o + +WPP_OBJECTS = \ + wpp/preproc.o \ + wpp/wpp.o \ + wpp/wpp.tab.o \ + wpp/lex.yy.o + +CODEPAGES = \ + 037 \ + 424 \ + 437 \ + 500 \ + 737 \ + 775 \ + 850 \ + 852 \ + 855 \ + 856 \ + 857 \ + 860 \ + 861 \ + 862 \ + 863 \ + 864 \ + 865 \ + 866 \ + 869 \ + 874 \ + 875 \ + 878 \ + 932 \ + 936 \ + 949 \ + 950 \ + 1006 \ + 1026 \ + 1250 \ + 1251 \ + 1252 \ + 1253 \ + 1254 \ + 1255 \ + 1256 \ + 1257 \ + 1258 \ + 10000 \ + 10006 \ + 10007 \ + 10029 \ + 10079 \ + 10081 \ + 20866 \ + 20932 \ + 21866 \ + 28591 \ + 28592 \ + 28593 \ + 28594 \ + 28595 \ + 28596 \ + 28597 \ + 28598 \ + 28599 \ + 28600 \ + 28603 \ + 28604 \ + 28605 \ + 28606 + +UNICODE_OBJECTS = \ + unicode/casemap.o \ + unicode/compose.o \ + unicode/cptable.o \ + unicode/mbtowc.o \ + unicode/string.o \ + unicode/wctomb.o \ + unicode/wctype.o \ + $(CODEPAGES:%=unicode/c_%.o) + +PORT_OBJECTS = \ + port/mkstemps.o + +OBJECTS = $(BASE_OBJECTS) $(WPP_OBJECTS) $(UNICODE_OBJECTS) $(PORT_OBJECTS) + +CLEAN_FILES = *.o $(TARGET) + +HOST_CFLAGS = -D__USE_W32API -DWINVER=0x501 -DWINE_UNICODE_API= \ + -Dwchar_t="unsigned short" -D_WCHAR_T_DEFINED \ + -Iunicode -Iwpp -I$(PATH_TO_TOP)/include/wine \ + -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/w32api/include + +%.o: %.c + $(HOST_CC) $(HOST_CFLAGS) -c $< -o $@ + +$(TARGET): $(OBJECTS) + $(HOST_CC) $(OBJECTS) -o $(TARGET) + +ifeq ($(HOST),mingw32-linux) +clean: + -rm -f $(OBJECTS) $(TARGET) +endif +ifneq ($(HOST),mingw32-linux) +clean: + -del $(TARGET) + -del *.o + -del wpp\*.o + -del unicode\*.o + -del port\*.o +endif + +.PHONY: clean + +LEXOPT = -Cf #-w -b +YACCOPT = #-v +# +# Optional use of bison, this will allow independent building from +# Wine. +# +# Bison is requiered for building msi.dll. If MingW32 for windows, +# download bison from http://gnuwin32.sourceforge.net/ +# Make sure bison.exe is placed in your command path for execution. +# +# +# +#y.tab.c y.tab.h: parser.y +# bison $(YACCOPT) -d -t parser.y -o y.tab.c +# +#lex.yy.c: parser.l +# flex $(LEXOPT) -d -8 parser.l +# +#wpp/y.tab.c wpp/y.tab.h: wpp/ppl.l +# bison $(YACCOPT) -ppp -d -t wpp/ppy.y -o wpp/wpp.tab.c +# +#wpp/lex.yy.c: wpp/ppl.l +# flex $(LEXOPT) -d -8 -Ppp -owpp/lex.yy.c wpp/ppl.l diff --git a/reactos/tools/wrc/Makefile.in b/reactos/tools/wrc/Makefile.in new file mode 100644 index 00000000000..382ae165f34 --- /dev/null +++ b/reactos/tools/wrc/Makefile.in @@ -0,0 +1,53 @@ +DEFS = -DINCLUDEDIR="\"$(includedir)\"" +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +LEXOPT = -Cf #-w -b +YACCOPT = #-v +EXEEXT = @EXEEXT@ + +PROGRAMS = wrc$(EXEEXT) +MODULE = none + +C_SRCS = \ + dumpres.c \ + genres.c \ + newstruc.c \ + readres.c \ + translation.c \ + utils.c \ + wrc.c \ + writeres.c + +EXTRA_SRCS = parser.y parser.l +EXTRA_OBJS = y.tab.o @LEX_OUTPUT_ROOT@.o + +all: $(PROGRAMS) + +@MAKE_RULES@ + +wrc$(EXEEXT): $(OBJS) $(LIBDIR)/wpp/libwpp.a + $(CC) $(CFLAGS) -o $@ $(OBJS) -L$(LIBDIR) -lwpp -lwine_unicode -lwine_port $(LEXLIB) $(LDFLAGS) + +y.tab.c y.tab.h: parser.y + $(YACC) $(YACCOPT) -d -t $(SRCDIR)/parser.y + +# hack to allow parallel make +y.tab.h: y.tab.c +y.tab.o: y.tab.h + +@LEX_OUTPUT_ROOT@.c: parser.l + $(LEX) $(LEXOPT) -d -8 $(SRCDIR)/parser.l + +@LEX_OUTPUT_ROOT@.o: y.tab.h + +install:: $(PROGRAMS) + $(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext) + $(INSTALL_DATA) $(SRCDIR)/wrc.man $(mandir)/man$(prog_manext)/wrc.$(prog_manext) + $(INSTALL_PROGRAM) wrc$(EXEEXT) $(bindir)/wrc$(EXEEXT) + +uninstall:: + $(RM) $(bindir)/wrc$(EXEEXT) $(mandir)/man$(prog_manext)/wrc.$(prog_manext) + +### Dependencies: diff --git a/reactos/tools/wrc/dumpres.c b/reactos/tools/wrc/dumpres.c new file mode 100644 index 00000000000..53cc64eba3b --- /dev/null +++ b/reactos/tools/wrc/dumpres.c @@ -0,0 +1,1038 @@ +/* + * Copyright 1998 Bertho A. Stultiens (BS) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include + +#include "wrc.h" +#include "dumpres.h" + +/* + ***************************************************************************** + * Function : get_typename + * Syntax : char *get_typename(resource_t* r) + * Input : + * r - Resource description + * Output : A pointer to a string representing the resource type + * Description : + * Remarks : + ***************************************************************************** +*/ +const char *get_typename(const resource_t* r) +{ + switch(r->type){ + case res_acc: return "ACCELERATOR"; + case res_bmp: return "BITMAP"; + case res_cur: return "CURSOR"; + case res_curg: return "GROUP_CURSOR"; + case res_dlg: return "DIALOG"; + case res_dlgex: return "DIALOGEX"; + case res_fnt: return "FONT"; + case res_ico: return "ICON"; + case res_icog: return "GROUP_ICON"; + case res_men: return "MENU"; + case res_menex: return "MENUEX"; + case res_rdt: return "RCDATA"; + case res_stt: return "STRINGTABLE"; + case res_usr: return "UserResource"; + case res_msg: return "MESSAGETABLE"; + case res_ver: return "VERSIONINFO"; + case res_dlginit: return "DLGINIT"; + case res_toolbar: return "TOOLBAR"; + case res_anicur: return "CURSOR (animated)"; + case res_aniico: return "ICON (animated)"; + default: return "Unknown"; + } +} + +/* + ***************************************************************************** + * Function : strncpyWtoA + * Syntax : char *strncpyWtoA(char *cs, short *ws, int maxlen) + * Input : + * cs - Pointer to buffer to receive result + * ws - Source wide-string + * maxlen - Max chars to copy + * Output : 'cs' + * Description : Copy a unicode string to ascii. Copying stops after the + * first occurring '\0' or when maxlen-1 chars are copied. The + * String is always nul terminated. + * Remarks : No codepage translation is done. + ***************************************************************************** +*/ +static char *strncpyWtoA(char *cs, const short *ws, int maxlen) +{ + char *cptr = cs; + const short *wsMax = ws + maxlen - 1; + while(*ws && ws < wsMax) + { + if(*ws < -128 || *ws > 127) + fprintf(stderr, "***Warning: Unicode string contains non-printable chars***\n"); + *cptr++ = (char)*ws++; + } + *cptr = '\0'; + return cs; +} + +/* + ***************************************************************************** + * Function : print_string + * Syntax : void print_string(string_t *str) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void print_string(const string_t *str) +{ + char buffer[512]; + if(!str) + printf(""); + else if(str->type == str_char) + printf("\"%s\"", str->str.cstr); + else + { + strncpyWtoA(buffer, str->str.wstr, sizeof(buffer)); + printf("L\"%s\"", buffer); + } +} + +/* + ***************************************************************************** + * Function : get_nameid_str + * Syntax : const char *get_nameid_str(const name_id_t *n) + * Input : + * n - nameid to convert to text + * Output : A pointer to the name. + * Description : + * Remarks : Not reentrant because of static buffer + ***************************************************************************** +*/ +const char *get_nameid_str(const name_id_t *n) +{ + static char buffer[256]; + + if(!n) + return ""; + + if(n->type == name_ord) + { + sprintf(buffer, "%d", n->name.i_name); + return buffer; + } + else if(n->type == name_str) + { + if(n->name.s_name->type == str_char) + return n->name.s_name->str.cstr; + else + { + strncpyWtoA(buffer, n->name.s_name->str.wstr, sizeof(buffer)); + return buffer; + } + } + else + return "Hoooo, report this: wrong type in nameid"; +} + +/* + ***************************************************************************** + * Function : dump_memopt + * Syntax : void dump_memopt(DWORD memopt) + * Input : + * memopt - flag bits of the options set + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_memopt(DWORD memopt) +{ + printf("Memory/load options: "); + if(memopt & 0x0040) + printf("PRELOAD "); + else + printf("LOADONCALL "); + if(memopt & 0x0010) + printf("MOVEABLE "); + else + printf("FIXED "); + if(memopt & 0x0020) + printf("PURE "); + else + printf("IMPURE "); + if(memopt & 0x1000) + printf("DISCARDABLE"); + printf("\n"); +} + +/* + ***************************************************************************** + * Function : dump_lvc + * Syntax : void dump_lvc(const lvc_t *l) + * Input : + * l - pointer to lvc structure + * Output : + * Description : Dump language, version and characteristics + * Remarks : + ***************************************************************************** +*/ +static void dump_lvc(const lvc_t *l) +{ + if(l->language) + printf("LANGUAGE %04x, %04x\n", l->language->id, l->language->sub); + else + printf("LANGUAGE \n"); + + if(l->version) + printf("VERSION %08lx\n", *(l->version)); + else + printf("VERSION \n"); + + if(l->characts) + printf("CHARACTERISTICS %08lx\n", *(l->characts)); + else + printf("CHARACTERISTICS \n"); +} + +/* + ***************************************************************************** + * Function : dump_raw_data + * Syntax : void dump_raw_data(const raw_data_t *d) + * Input : + * d - Raw data descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_raw_data(const raw_data_t *d) +{ + unsigned int n; + int i; + int j; + + if(!d) + { + printf(""); + return; + } + printf("Rawdata size: %d\n", d->size); + if(debuglevel < 2) + return; + + for(n = 0; n < d->size; n++) + { + if((n % 16) == 0) + { + if(n) + { + printf("- "); + for(i = 0; i < 16; i++) + printf("%c", isprint(d->data[n-16+i] & 0xff) ? d->data[n-16+i] : '.'); + printf("\n%08x: ", n); + } + else + printf("%08x: ", n); + } + printf("%02x ", d->data[n] & 0xff); + } + printf("- "); + j = d->size % 16; + if(!j) + j = 16; + for(i = 0; i < j; i++) + printf("%c", isprint(d->data[n-j+i] & 0xff) ? d->data[n-j+i] : '.'); + printf("\n"); +} + +/* + ***************************************************************************** + * Function : dump_accelerator + * Syntax : void dump_accelerator(const accelerator_t *acc) + * Input : + * acc - Accelerator resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_accelerator(const accelerator_t *acc) +{ + event_t *ev = acc->events; + + dump_memopt(acc->memopt); + dump_lvc(&(acc->lvc)); + + printf("Events: %s\n", ev ? "" : ""); + while(ev) + { + printf("Key="); + if(isprint(ev->key)) + printf("\"%c\"", ev->key); + else if(iscntrl(ev->key)) + printf("\"^%c\"", ev->key +'@'); + else + printf("\\x%02x", ev->key & 0xff); + + printf(" Id=%d flags=%04x\n", ev->id, ev->flags); + ev = ev->next; + } +} + +/* + ***************************************************************************** + * Function : dump_cursor + * Syntax : void dump_cursor(const cursor_t *cur) + * Input : + * cur - Cursor resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_cursor(const cursor_t *cur) +{ + printf("Id: %d\n", cur->id); + printf("Width: %d\n", cur->width); + printf("Height: %d\n", cur->height); + printf("X Hotspot: %d\n", cur->xhot); + printf("Y Hotspot: %d\n", cur->yhot); + dump_raw_data(cur->data); +} + +/* + ***************************************************************************** + * Function : dump_cursor_group + * Syntax : void dump_cursor_group(const cursor_group_t *cur) + * Input : + * cur - Cursor group resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_cursor_group(const cursor_group_t *curg) +{ + dump_memopt(curg->memopt); + printf("There are %d cursors in this group\n", curg->ncursor); +} + +/* + ***************************************************************************** + * Function : dump_icon + * Syntax : void dump_icon(const icon_t *ico) + * Input : + * ico - Icon resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_icon(const icon_t *ico) +{ + printf("Id: %d\n", ico->id); + printf("Width: %d\n", ico->width); + printf("Height: %d\n", ico->height); + printf("NColor: %d\n", ico->nclr); + printf("NPlanes: %d\n", ico->planes); + printf("NBits: %d\n", ico->bits); + dump_raw_data(ico->data); +} + +/* + ***************************************************************************** + * Function : dump_icon_group + * Syntax : void dump_icon_group(const icon_group_t *ico) + * Input : + * ico - Icon group resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_icon_group(const icon_group_t *icog) +{ + dump_memopt(icog->memopt); + printf("There are %d icons in this group\n", icog->nicon); +} + +/* + ***************************************************************************** + * Function : dump_ani_curico + * Syntax : void dump_ani_curico(const ani_curico_t *ani) + * Input : + * ani - Animated object resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_ani_curico(const ani_curico_t *ani) +{ + dump_memopt(ani->memopt); + dump_lvc(&ani->data->lvc); + dump_raw_data(ani->data); +} + +/* + ***************************************************************************** + * Function : dump_font + * Syntax : void dump_font(const font_t *fnt) + * Input : + * fnt - Font resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_font(const font_t *fnt) +{ + dump_memopt(fnt->memopt); + dump_lvc(&(fnt->data->lvc)); + dump_raw_data(fnt->data); +} + +/* + ***************************************************************************** + * Function : dump_bitmap + * Syntax : void dump_bitmap(const bitmap_t *bmp) + * Input : + * bmp - Bitmap resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_bitmap(const bitmap_t *bmp) +{ + dump_memopt(bmp->memopt); + dump_lvc(&(bmp->data->lvc)); + dump_raw_data(bmp->data); +} + +/* + ***************************************************************************** + * Function : dump_rcdata + * Syntax : void dump_rcdata(const rcdata_t *rdt) + * Input : + * rdt - RCData resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_rcdata(const rcdata_t *rdt) +{ + dump_memopt(rdt->memopt); + dump_lvc(&(rdt->data->lvc)); + dump_raw_data(rdt->data); +} + +/* + ***************************************************************************** + * Function : dump_user + * Syntax : void dump_user(const user_t *usr) + * Input : + * usr - User resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_user(const user_t *usr) +{ + dump_memopt(usr->memopt); + dump_lvc(&(usr->data->lvc)); + printf("Class %s\n", get_nameid_str(usr->type)); + dump_raw_data(usr->data); +} + +/* + ***************************************************************************** + * Function : dump_messagetable + * Syntax : void dump_messagetable(const messagetable_t *msg) + * Input : + * msg - Messagetable resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_messagetable(const messagetable_t *msg) +{ + dump_memopt(msg->memopt); + dump_lvc(&(msg->data->lvc)); + dump_raw_data(msg->data); +} + +/* + ***************************************************************************** + * Function : dump_stringtable + * Syntax : void dump_stringtable(const stringtable_t *stt) + * Input : + * stt - Stringtable resource descriptor + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_stringtable(const stringtable_t *stt) +{ + int i; + for(; stt; stt = stt->next) + { + printf("{\n"); + dump_memopt(stt->memopt); + dump_lvc(&(stt->lvc)); + for(i = 0; i < stt->nentries; i++) + { + printf("Id=%-5d (%d) ", stt->idbase+i, stt->entries[i].id); + if(stt->entries[i].str) + print_string(stt->entries[i].str); + else + printf(""); + printf("\n"); + } + printf("}\n"); + } +} + +/* + ***************************************************************************** + * Function : dump_control + * Syntax : void dump_control(const control_t *ctrl) + * Input : + * ctrl - Control resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_control(const control_t *ctrl) +{ + printf("Control {\n\tClass: %s\n", get_nameid_str(ctrl->ctlclass)); + printf("\tText: "); get_nameid_str(ctrl->title); printf("\n"); + printf("\tId: %d\n", ctrl->id); + printf("\tx, y, w, h: %d, %d, %d, %d\n", ctrl->x, ctrl->y, ctrl->width, ctrl->height); + if(ctrl->gotstyle) + { + assert(ctrl->style != NULL); + assert(ctrl->style->and_mask == 0); + printf("\tStyle: %08lx\n", ctrl->style->or_mask); + } + if(ctrl->gotexstyle) + { + assert(ctrl->exstyle != NULL); + assert(ctrl->exstyle->and_mask == 0); + printf("\tExStyle: %08lx\n", ctrl->exstyle->or_mask); + } + if(ctrl->gothelpid) + printf("\tHelpid: %ld\n", ctrl->helpid); + if(ctrl->extra) + { + printf("\t"); + dump_raw_data(ctrl->extra); + } + printf("}\n"); +} + +/* + ***************************************************************************** + * Function : dump_dialog + * Syntax : void dump_dialog(const dialog_t *dlg) + * Input : + * dlg - Dialog resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_dialog(const dialog_t *dlg) +{ + control_t *c = dlg->controls; + + dump_memopt(dlg->memopt); + dump_lvc(&(dlg->lvc)); + printf("x, y, w, h: %d, %d, %d, %d\n", dlg->x, dlg->y, dlg->width, dlg->height); + if(dlg->gotstyle) + { + assert(dlg->style != NULL); + assert(dlg->style->and_mask == 0); + printf("Style: %08lx\n", dlg->style->or_mask); + + } + if(dlg->gotexstyle) + { + assert(dlg->exstyle != NULL); + assert(dlg->exstyle->and_mask == 0); + printf("ExStyle: %08lx\n", dlg->exstyle->or_mask); + } + printf("Menu: %s\n", get_nameid_str(dlg->menu)); + printf("Class: %s\n", get_nameid_str(dlg->dlgclass)); + printf("Title: "); print_string(dlg->title); printf("\n"); + printf("Font: "); + if(!dlg->font) + printf("\n"); + else + { + printf("%d, ", dlg->font->size); + print_string(dlg->font->name); + printf("\n"); + } + while(c) + { + dump_control(c); + c = c->next; + } +} + +/* + ***************************************************************************** + * Function : dump_dialogex + * Syntax : void dump_dialogex(const dialogex_t *dlgex) + * Input : + * dlgex - DialogEx resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_dialogex(const dialogex_t *dlgex) +{ + const control_t *c = dlgex->controls; + + dump_memopt(dlgex->memopt); + dump_lvc(&(dlgex->lvc)); + printf("x, y, w, h: %d, %d, %d, %d\n", dlgex->x, dlgex->y, dlgex->width, dlgex->height); + if(dlgex->gotstyle) + { + assert(dlgex->style != NULL); + assert(dlgex->style->and_mask == 0); + printf("Style: %08lx\n", dlgex->style->or_mask); + } + if(dlgex->gotexstyle) + { + assert(dlgex->exstyle != NULL); + assert(dlgex->exstyle->and_mask == 0); + printf("ExStyle: %08lx\n", dlgex->exstyle->or_mask); + } + if(dlgex->gothelpid) + printf("Helpid: %ld\n", dlgex->helpid); + printf("Menu: %s\n", get_nameid_str(dlgex->menu)); + printf("Class: %s\n", get_nameid_str(dlgex->dlgclass)); + printf("Title: "); print_string(dlgex->title); printf("\n"); + printf("Font: "); + if(!dlgex->font) + printf("\n"); + else + { + printf("%d, ", dlgex->font->size); + print_string(dlgex->font->name); + printf(", %d, %d\n", dlgex->font->weight, dlgex->font->italic); + } + while(c) + { + dump_control(c); + c = c->next; + } +} + +/* + ***************************************************************************** + * Function : dump_menu_item + * Syntax : void dump_menu_item(const menu_item_t *item) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_menu_item(const menu_item_t *item) +{ + while(item) + { + if(item->popup) + { + printf("POPUP "); + print_string(item->name); + printf("\n"); + dump_menu_item(item->popup); + } + else + { + printf("MENUITEM "); + if(item->name) + { + print_string(item->name); + printf(", %d, %08lx", item->id, item->state); + } + else + printf("SEPARATOR"); + printf("\n"); + } + item = item->next; + } +} + +/* + ***************************************************************************** + * Function : dump_menu + * Syntax : void dump_menu(const menu_t *men) + * Input : + * men - Menu resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_menu(const menu_t *men) +{ + dump_memopt(men->memopt); + dump_lvc(&(men->lvc)); + dump_menu_item(men->items); +} + +/* + ***************************************************************************** + * Function : dump_menuex_item + * Syntax : void dump_menuex_item(const menuex_item_t *item) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_menuex_item(const menuex_item_t *item) +{ + while(item) + { + if(item->popup) + { + printf("POPUP "); + print_string(item->name); + if(item->gotid) + printf(", Id=%d", item->id); + if(item->gottype) + printf(", Type=%ld", item->type); + if(item->gotstate) + printf(", State=%08lx", item->state); + if(item->gothelpid) + printf(", HelpId=%d", item->helpid); + printf("\n"); + dump_menuex_item(item->popup); + } + else + { + printf("MENUITEM "); + if(item->name) + { + print_string(item->name); + if(item->gotid) + printf(", Id=%d", item->id); + if(item->gottype) + printf(", Type=%ld", item->type); + if(item->gotstate) + printf(", State=%08lx", item->state); + if(item->gothelpid) + printf(", HelpId=%d", item->helpid); + } + else + printf("SEPARATOR"); + printf("\n"); + } + item = item->next; + } +} + +/* + ***************************************************************************** + * Function : dump_menuex + * Syntax : void dump_menuex(const menuex_t *menex) + * Input : + * menex - MenuEx resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_menuex(const menuex_t *menex) +{ + dump_memopt(menex->memopt); + dump_lvc(&(menex->lvc)); + dump_menuex_item(menex->items); +} + +/* + ***************************************************************************** + * Function : dump_ver_value + * Syntax : void dump_ver_value(const ver_value_t *val) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_ver_block(const ver_block_t *); /* Forward ref */ + +static void dump_ver_value(const ver_value_t *val) +{ + if(val->type == val_str) + { + printf("VALUE "); + print_string(val->key); + printf(" "); + print_string(val->value.str); + printf("\n"); + } + else if(val->type == val_words) + { + int i; + printf("VALUE"); + print_string(val->key); + for(i = 0; i < val->value.words->nwords; i++) + printf(" %04x", val->value.words->words[i]); + printf("\n"); + } + else if(val->type == val_block) + { + dump_ver_block(val->value.block); + } +} + +/* + ***************************************************************************** + * Function : dump_ver_block + * Syntax : void dump_ver_block(const ver_block_t *blk) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_ver_block(const ver_block_t *blk) +{ + const ver_value_t *val = blk->values; + printf("BLOCK "); + print_string(blk->name); + printf("\n{\n"); + while(val) + { + dump_ver_value(val); + val = val->next; + } + printf("}\n"); +} + +/* + ***************************************************************************** + * Function : dump_versioninfo + * Syntax : void dump_versioninfo(const versioninfo_t *ver) + * Input : + * ver - Versioninfo resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_versioninfo(const versioninfo_t *ver) +{ + const ver_block_t *blk = ver->blocks; + + dump_lvc(&(ver->lvc)); + + if(ver->gotit.fv) + printf("FILEVERSION %04x, %04x, %04x, %04x\n", + ver->filever_maj1, + ver->filever_maj2, + ver->filever_min1, + ver->filever_min2); + if(ver->gotit.pv) + printf("PRODUCTVERSION %04x, %04x, %04x, %04x\n", + ver->prodver_maj1, + ver->prodver_maj2, + ver->prodver_min1, + ver->prodver_min2); + if(ver->gotit.fo) + printf("FILEOS %08x\n", ver->fileos); + if(ver->gotit.ff) + printf("FILEFLAGS %08x\n", ver->fileflags); + if(ver->gotit.ffm) + printf("FILEFLAGSMASK %08x\n", ver->fileflagsmask); + if(ver->gotit.ft) + printf("FILETYPE %08x\n", ver->filetype); + if(ver->gotit.fst) + printf("FILESUBTYPE %08x\n", ver->filesubtype); + while(blk) + { + dump_ver_block(blk); + blk = blk->next; + } +} + +/* + ***************************************************************************** + * Function : dump_toolbar_item + * Syntax : void dump_toolbar_item(const toolbar_item_t *item) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_toolbar_items(const toolbar_item_t *items) +{ + while(items) + { + if(items->id) + printf(" BUTTON %d", items->id ); + else + printf(" SEPARATOR"); + + printf("\n"); + + items = items->next; + } +} + +/* + ***************************************************************************** + * Function : dump_toolbar + * Syntax : void dump_toolbar(const toolbar_t *toolbar) + * Input : + * toolbar - Toolbar resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_toolbar(const toolbar_t *toolbar) +{ + dump_memopt(toolbar->memopt); + dump_lvc(&(toolbar->lvc)); + dump_toolbar_items(toolbar->items); +} + +/* + ***************************************************************************** + * Function : dump_dlginit + * Syntax : void dump_dlginit(const dlginit_t *dit) + * Input : + * dit - DlgInit resource descriptor + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void dump_dlginit(const dlginit_t *dit) +{ + dump_memopt(dit->memopt); + dump_lvc(&(dit->data->lvc)); + dump_raw_data(dit->data); +} + +/* + ***************************************************************************** + * Function : dump_resources + * Syntax : void dump_resources(const resource_t *top) + * Input : + * top - Top of the resource tree + * Output : + * nop + * Description : Dump the parsed resource-tree to stdout + * Remarks : + ***************************************************************************** +*/ +void dump_resources(const resource_t *top) +{ + printf("Internal resource-tree dump:\n"); + while(top) + { + printf("Resource: %s\nId: %s\n", + get_typename(top), + get_nameid_str(top->name)); + switch(top->type) + { + case res_acc: + dump_accelerator(top->res.acc); + break; + case res_bmp: + dump_bitmap(top->res.bmp); + break; + case res_cur: + dump_cursor(top->res.cur); + break; + case res_curg: + dump_cursor_group(top->res.curg); + break; + case res_dlg: + dump_dialog(top->res.dlg); + break; + case res_dlgex: + dump_dialogex(top->res.dlgex); + break; + case res_fnt: + dump_font(top->res.fnt); + break; + case res_icog: + dump_icon_group(top->res.icog); + break; + case res_ico: + dump_icon(top->res.ico); + break; + case res_men: + dump_menu(top->res.men); + break; + case res_menex: + dump_menuex(top->res.menex); + break; + case res_rdt: + dump_rcdata(top->res.rdt); + break; + case res_stt: + dump_stringtable(top->res.stt); + break; + case res_usr: + dump_user(top->res.usr); + break; + case res_msg: + dump_messagetable(top->res.msg); + break; + case res_ver: + dump_versioninfo(top->res.ver); + break; + case res_dlginit: + dump_dlginit(top->res.dlgi); + break; + case res_toolbar: + dump_toolbar(top->res.tbt); + break; + case res_anicur: + case res_aniico: + dump_ani_curico(top->res.ani); + break; + default: + printf("Report this: Unknown resource type parsed %08x\n", top->type); + } + printf("\n"); + top = top->next; + } +} diff --git a/reactos/tools/wrc/dumpres.h b/reactos/tools/wrc/dumpres.h new file mode 100644 index 00000000000..ba862f339d5 --- /dev/null +++ b/reactos/tools/wrc/dumpres.h @@ -0,0 +1,30 @@ +/* + * Dump resource prototypes + * + * Copyright 1998 Bertho A. Stultiens (BS) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WRC_DUMPRES_H +#define __WRC_DUMPRES_H + +#include "wrctypes.h" + +const char *get_typename(const resource_t* r); +void dump_resources(const resource_t *top); +const char *get_nameid_str(const name_id_t *n); + +#endif diff --git a/reactos/tools/wrc/genres.c b/reactos/tools/wrc/genres.c new file mode 100644 index 00000000000..7a33e923aae --- /dev/null +++ b/reactos/tools/wrc/genres.c @@ -0,0 +1,1974 @@ +/* + * Generate .res format from a resource-tree + * + * Copyright 1998 Bertho A. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * History: + * 05-May-2000 BS - Added code to support endian conversions. The + * extra functions also aid unaligned access, but + * this is not yet implemented. + * 25-May-1998 BS - Added simple unicode -> char conversion for resource + * names in .s and .h files. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include + +#include "wrc.h" +#include "genres.h" +#include "utils.h" +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "wine/unicode.h" + +#define SetResSize(res, tag) set_dword((res), (tag), (res)->size - get_dword((res), (tag))) + +res_t *new_res(void) +{ + res_t *r; + r = (res_t *)xmalloc(sizeof(res_t)); + r->allocsize = RES_BLOCKSIZE; + r->size = 0; + r->data = (char *)xmalloc(RES_BLOCKSIZE); + return r; +} + +res_t *grow_res(res_t *r, int add) +{ + r->allocsize += add; + r->data = (char *)xrealloc(r->data, r->allocsize); + return r; +} + +/* + ***************************************************************************** + * Function : put_byte + * put_word + * put_dword + * Syntax : void put_byte(res_t *res, unsigned c) + * void put_word(res_t *res, unsigned w) + * void put_dword(res_t *res, unsigned d) + * Input : + * res - Binary resource to put the data in + * c, w, d - Data to put + * Output : nop + * Description : Put primitives that put an item in the binary resource. + * The data array grows automatically. + * Remarks : + ***************************************************************************** +*/ +void put_byte(res_t *res, unsigned c) +{ + if(res->allocsize - res->size < sizeof(char)) + grow_res(res, RES_BLOCKSIZE); + res->data[res->size] = (char)c; + res->size += sizeof(char); +} + +void put_word(res_t *res, unsigned w) +{ + if(res->allocsize - res->size < sizeof(WORD)) + grow_res(res, RES_BLOCKSIZE); + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_BIG: + res->data[res->size+0] = HIBYTE(w); + res->data[res->size+1] = LOBYTE(w); + break; + +#ifndef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_LITTLE: + res->data[res->size+1] = HIBYTE(w); + res->data[res->size+0] = LOBYTE(w); + break; + } + res->size += sizeof(WORD); +} + +void put_dword(res_t *res, unsigned d) +{ + if(res->allocsize - res->size < sizeof(DWORD)) + grow_res(res, RES_BLOCKSIZE); + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_BIG: + res->data[res->size+0] = HIBYTE(HIWORD(d)); + res->data[res->size+1] = LOBYTE(HIWORD(d)); + res->data[res->size+2] = HIBYTE(LOWORD(d)); + res->data[res->size+3] = LOBYTE(LOWORD(d)); + break; + +#ifndef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_LITTLE: + res->data[res->size+3] = HIBYTE(HIWORD(d)); + res->data[res->size+2] = LOBYTE(HIWORD(d)); + res->data[res->size+1] = HIBYTE(LOWORD(d)); + res->data[res->size+0] = LOBYTE(LOWORD(d)); + break; + } + res->size += sizeof(DWORD); +} + +static void put_pad(res_t *res) +{ + while(res->size & 0x3) + put_byte(res, 0); +} + +/* + ***************************************************************************** + * Function : set_word + * set_dword + * Syntax : void set_word(res_t *res, int ofs, unsigned w) + * void set_dword(res_t *res, int ofs, unsigned d) + * Input : + * res - Binary resource to put the data in + * ofs - Byte offset in data-array + * w, d - Data to put + * Output : nop + * Description : Set the value of a binary resource data array to a + * specific value. + * Remarks : + ***************************************************************************** +*/ +static void set_word(res_t *res, int ofs, unsigned w) +{ + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_BIG: + res->data[ofs+0] = HIBYTE(w); + res->data[ofs+1] = LOBYTE(w); + break; + +#ifndef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_LITTLE: + res->data[ofs+1] = HIBYTE(w); + res->data[ofs+0] = LOBYTE(w); + break; + } +} + +static void set_dword(res_t *res, int ofs, unsigned d) +{ + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_BIG: + res->data[ofs+0] = HIBYTE(HIWORD(d)); + res->data[ofs+1] = LOBYTE(HIWORD(d)); + res->data[ofs+2] = HIBYTE(LOWORD(d)); + res->data[ofs+3] = LOBYTE(LOWORD(d)); + break; + +#ifndef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_LITTLE: + res->data[ofs+3] = HIBYTE(HIWORD(d)); + res->data[ofs+2] = LOBYTE(HIWORD(d)); + res->data[ofs+1] = HIBYTE(LOWORD(d)); + res->data[ofs+0] = LOBYTE(LOWORD(d)); + break; + } +} + +/* + ***************************************************************************** + * Function : get_dword + * Input : + * res - Binary resource to put the data in + * ofs - Byte offset in data-array + * Output : The data in native endian + * Description : Get the value of a binary resource data array in native + * endian. + * Remarks : + ***************************************************************************** +*/ +static DWORD get_dword(res_t *res, int ofs) +{ + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_BIG: + return (res->data[ofs+0] << 24) + | (res->data[ofs+1] << 16) + | (res->data[ofs+2] << 8) + | res->data[ofs+3]; + +#ifndef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_LITTLE: + return (res->data[ofs+3] << 24) + | (res->data[ofs+2] << 16) + | (res->data[ofs+1] << 8) + | res->data[ofs+0]; + } +} + +/* + ***************************************************************************** + * Function : string_to_upper + * Syntax : void string_to_upper(string_t *str) + * Input : + * Output : + * Description : + * Remarks : FIXME: codepages... + ***************************************************************************** +*/ +static void string_to_upper(string_t *str) +{ + int i; + + if(str->type == str_char) + { + for (i = 0; i < str->size; i++) str->str.cstr[i] = toupper((unsigned char)str->str.cstr[i]); + } + else if(str->type == str_unicode) + { + for (i = 0; i < str->size; i++) str->str.wstr[i] = toupperW(str->str.wstr[i]); + } + else + { + internal_error(__FILE__, __LINE__, "Invalid string type %d", str->type); + } +} + +/* + ***************************************************************************** + * Function : put_string + * Syntax : void put_string(res_t *res, string_t *str, enum str_e type, + * int isterm, const language_t *lang) + * Input : + * res - Binary resource to put the data in + * str - String to put + * type - Data has to be written in either str_char or str_unicode + * isterm - The string is '\0' terminated (disregard the string's + * size member) + * Output : nop + * Description : + * Remarks : + ***************************************************************************** +*/ +static void put_string(res_t *res, const string_t *str, enum str_e type, int isterm, + const language_t *lang) +{ + int cnt, codepage; + string_t *newstr; + + assert(res != NULL); + assert(str != NULL); + + if (lang) codepage = get_language_codepage( lang->id, lang->sub ); + else codepage = get_language_codepage( 0, 0 ); + + assert( codepage != -1 ); + + newstr = convert_string(str, type, codepage); + if (type == str_unicode) + { + if (str->type == str_char) + { + if (!check_unicode_conversion( str, newstr, codepage )) + error( "String %s does not convert identically to Unicode and back in codepage %d. " + "Try using a Unicode string instead.", str->str.cstr, codepage ); + } + if (!isterm) put_word(res, newstr->size); + for(cnt = 0; cnt < newstr->size; cnt++) + { + WCHAR c = newstr->str.wstr[cnt]; + if (isterm && !c) break; + put_word(res, c); + } + if (isterm) put_word(res, 0); + } + else /* str_char */ + { + if (!isterm) put_byte(res, newstr->size); + for(cnt = 0; cnt < newstr->size; cnt++) + { + char c = newstr->str.cstr[cnt]; + if (isterm && !c) break; + put_byte(res, c); + } + if (isterm) put_byte(res, 0); + } + free_string(newstr); +} + +/* + ***************************************************************************** + * Function : put_name_id + * Syntax : void put_name_id(res_t *res, name_id_t *nid, int upcase, const language_t *lang) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void put_name_id(res_t *res, name_id_t *nid, int upcase, const language_t *lang) +{ + if(nid->type == name_ord) + { + if(win32) + put_word(res, 0xffff); + else + put_byte(res, 0xff); + put_word(res, (WORD)nid->name.i_name); + } + else if(nid->type == name_str) + { + if(upcase) + string_to_upper(nid->name.s_name); + put_string(res, nid->name.s_name, win32 ? str_unicode : str_char, TRUE, lang); + } + else + { + internal_error(__FILE__, __LINE__, "Invalid name_id type %d", nid->type); + } +} + +/* + ***************************************************************************** + * Function : put_lvc + * Syntax : void put_lvc(res_t *res, lvc_t *lvc) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void put_lvc(res_t *res, lvc_t *lvc) +{ + if(lvc && lvc->language) + put_word(res, MAKELANGID(lvc->language->id, lvc->language->sub)); + else + put_word(res, 0); /* Neutral */ + if(lvc && lvc->version) + put_dword(res, *(lvc->version)); + else + put_dword(res, 0); + if(lvc && lvc->characts) + put_dword(res, *(lvc->characts)); + else + put_dword(res, 0); +} + +/* + ***************************************************************************** + * Function : put_raw_data + * Syntax : void put_raw_data(res_t *res, raw_data_t *raw, int offset) + * Input : + * Output : + * Description : + * Remarks : + ***************************************************************************** +*/ +static void put_raw_data(res_t *res, raw_data_t *raw, int offset) +{ + int wsize = raw->size - offset; + if(res->allocsize - res->size < wsize) + grow_res(res, wsize); + memcpy(&(res->data[res->size]), raw->data + offset, wsize); + res->size += wsize; +} + +/* + ***************************************************************************** + * Function : put_res_header + * Syntax : intput_res_header(res_t *res, int type, name_id_t *ntype, + * name_id_t *name, DWORD memopt, lvc_t *lvc) + * + * Input : + * res - Binary resource descriptor to write to + * type - Resource identifier (if ntype == NULL) + * ntype - Name id of type + * name - Resource's name + * memopt - Resource's memory options to write + * lvc - Language, version and characteristics (win32 only) + * Output : An index to the resource size field. The resource size field + * contains the header size upon exit. + * Description : + * Remarks : + ***************************************************************************** +*/ +static int put_res_header(res_t *res, int type, name_id_t *ntype, name_id_t *name, + DWORD memopt, lvc_t *lvc) +{ + if(win32) + { + put_dword(res, 0); /* We will overwrite these later */ + put_dword(res, 0); + if(!ntype) + { + put_word(res, 0xffff); /* ResType */ + put_word(res, type); + } + else + put_name_id(res, ntype, TRUE, lvc->language); + put_name_id(res, name, TRUE, lvc->language); /* ResName */ + put_pad(res); + put_dword(res, 0); /* DataVersion */ + put_word(res, memopt); /* Memory options */ + put_lvc(res, lvc); /* Language, version and characts */ + set_dword(res, 0*sizeof(DWORD), res->size); /* Set preliminary resource */ + set_dword(res, 1*sizeof(DWORD), res->size); /* Set HeaderSize */ + res->dataidx = res->size; + return 0; + } + else /* win16 */ + { + int tag; + if(!ntype) + { + put_byte(res, 0xff); /* ResType */ + put_word(res, type); + } + else + put_name_id(res, ntype, TRUE, NULL); + put_name_id(res, name, TRUE, NULL); /* ResName */ + put_word(res, memopt); /* Memory options */ + tag = res->size; + put_dword(res, 0); /* ResSize overwritten later*/ + set_dword(res, tag, res->size); + res->dataidx = res->size; + return tag; + } +} + +/* + ***************************************************************************** + * Function : accelerator2res + * Syntax : res_t *accelerator2res(name_id_t *name, accelerator_t *acc) + * Input : + * name - Name/ordinal of the resource + * acc - The accelerator descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *accelerator2res(name_id_t *name, accelerator_t *acc) +{ + int restag; + res_t *res; + event_t *ev; + assert(name != NULL); + assert(acc != NULL); + + ev = acc->events; + res = new_res(); + if(win32) + { + restag = put_res_header(res, WRC_RT_ACCELERATOR, NULL, name, acc->memopt, &(acc->lvc)); + while(ev) + { + put_word(res, ev->flags | (ev->next ? 0 : 0x80)); + put_word(res, ev->key); + put_word(res, ev->id); + put_word(res, 0); /* Padding */ + ev = ev->next; + } + put_pad(res); + } + else /* win16 */ + { + restag = put_res_header(res, WRC_RT_ACCELERATOR, NULL, name, acc->memopt, NULL); + while(ev) + { + put_byte(res, ev->flags | (ev->next ? 0 : 0x80)); + put_word(res, ev->key); + put_word(res, ev->id); + ev = ev->next; + } + } + /* Set ResourceSize */ + SetResSize(res, restag); + return res; +} + +/* + ***************************************************************************** + * Function : dialog2res + * Syntax : res_t *dialog2res(name_id_t *name, dialog_t *dlg) + * Input : + * name - Name/ordinal of the resource + * dlg - The dialog descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *dialog2res(name_id_t *name, dialog_t *dlg) +{ + int restag; + res_t *res; + control_t *ctrl; + int tag_nctrl; + int nctrl = 0; + assert(name != NULL); + assert(dlg != NULL); + + ctrl = dlg->controls; + res = new_res(); + if(win32) + { + restag = put_res_header(res, WRC_RT_DIALOG, NULL, name, dlg->memopt, &(dlg->lvc)); + + put_dword(res, dlg->style->or_mask); + put_dword(res, dlg->gotexstyle ? dlg->exstyle->or_mask : 0); + tag_nctrl = res->size; + put_word(res, 0); /* Number of controls */ + put_word(res, dlg->x); + put_word(res, dlg->y); + put_word(res, dlg->width); + put_word(res, dlg->height); + if(dlg->menu) + put_name_id(res, dlg->menu, TRUE, dlg->lvc.language); + else + put_word(res, 0); + if(dlg->dlgclass) + put_name_id(res, dlg->dlgclass, TRUE, dlg->lvc.language); + else + put_word(res, 0); + if(dlg->title) + put_string(res, dlg->title, str_unicode, TRUE, dlg->lvc.language); + else + put_word(res, 0); + if(dlg->font) + { + put_word(res, dlg->font->size); + put_string(res, dlg->font->name, str_unicode, TRUE, dlg->lvc.language); + } + + put_pad(res); + while(ctrl) + { + /* FIXME: what is default control style? */ + put_dword(res, ctrl->gotstyle ? ctrl->style->or_mask: WS_CHILD); + put_dword(res, ctrl->gotexstyle ? ctrl->exstyle->or_mask : 0); + put_word(res, ctrl->x); + put_word(res, ctrl->y); + put_word(res, ctrl->width); + put_word(res, ctrl->height); + put_word(res, ctrl->id); + if(ctrl->ctlclass) + put_name_id(res, ctrl->ctlclass, TRUE, dlg->lvc.language); + else + internal_error(__FILE__, __LINE__, "Control has no control-class"); + if(ctrl->title) + put_name_id(res, ctrl->title, FALSE, dlg->lvc.language); + else + put_word(res, 0); + if(ctrl->extra) + { + put_word(res, ctrl->extra->size+2); + put_pad(res); + put_raw_data(res, ctrl->extra, 0); + } + else + put_word(res, 0); + + if(ctrl->next) + put_pad(res); + nctrl++; + ctrl = ctrl->next; + } + /* Set number of controls */ + set_word(res, tag_nctrl, (WORD)nctrl); + } + else /* win16 */ + { + restag = put_res_header(res, WRC_RT_DIALOG, NULL, name, dlg->memopt, NULL); + + put_dword(res, dlg->gotstyle ? dlg->style->or_mask : WS_POPUPWINDOW); + tag_nctrl = res->size; + put_byte(res, 0); /* Number of controls */ + put_word(res, dlg->x); + put_word(res, dlg->y); + put_word(res, dlg->width); + put_word(res, dlg->height); + if(dlg->menu) + put_name_id(res, dlg->menu, TRUE, NULL); + else + put_byte(res, 0); + if(dlg->dlgclass) + put_name_id(res, dlg->dlgclass, TRUE, NULL); + else + put_byte(res, 0); + if(dlg->title) + put_string(res, dlg->title, str_char, TRUE, NULL); + else + put_byte(res, 0); + if(dlg->font) + { + put_word(res, dlg->font->size); + put_string(res, dlg->font->name, str_char, TRUE, NULL); + } + + while(ctrl) + { + put_word(res, ctrl->x); + put_word(res, ctrl->y); + put_word(res, ctrl->width); + put_word(res, ctrl->height); + put_word(res, ctrl->id); + put_dword(res, ctrl->gotstyle ? ctrl->style->or_mask: WS_CHILD); + if(ctrl->ctlclass) + { + if(ctrl->ctlclass->type == name_ord + && ctrl->ctlclass->name.i_name >= 0x80 + && ctrl->ctlclass->name.i_name <= 0x85) + put_byte(res, ctrl->ctlclass->name.i_name); + else if(ctrl->ctlclass->type == name_str) + put_name_id(res, ctrl->ctlclass, FALSE, NULL); + else + error("Unknown control-class %04x", ctrl->ctlclass->name.i_name); + } + else + internal_error(__FILE__, __LINE__, "Control has no control-class"); + if(ctrl->title) + put_name_id(res, ctrl->title, FALSE, NULL); + else + put_byte(res, 0); + + /* FIXME: What is this extra byte doing here? */ + put_byte(res, 0); + + nctrl++; + ctrl = ctrl->next; + } + /* Set number of controls */ + ((char *)res->data)[tag_nctrl] = (char)nctrl; + } + /* Set ResourceSize */ + SetResSize(res, restag); + return res; +} + +/* + ***************************************************************************** + * Function : dialogex2res + * Syntax : res_t *dialogex2res(name_id_t *name, dialogex_t *dlgex) + * Input : + * name - Name/ordinal of the resource + * dlgex - The dialogex descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *dialogex2res(name_id_t *name, dialogex_t *dlgex) +{ + int restag; + res_t *res; + control_t *ctrl; + int tag_nctrl; + int nctrl = 0; + assert(name != NULL); + assert(dlgex != NULL); + + ctrl = dlgex->controls; + res = new_res(); + if(win32) + { + restag = put_res_header(res, WRC_RT_DIALOG, NULL, name, dlgex->memopt, &(dlgex->lvc)); + + /* FIXME: MS doc says thet the first word must contain 0xffff + * and the second 0x0001 to signal a DLGTEMPLATEEX. Borland's + * compiler reverses the two words. + * I don't know which one to choose, but I write it as Mr. B + * writes it. + */ + put_word(res, 1); /* Signature */ + put_word(res, 0xffff); /* DlgVer */ + put_dword(res, dlgex->gothelpid ? dlgex->helpid : 0); + put_dword(res, dlgex->gotexstyle ? dlgex->exstyle->or_mask : 0); + put_dword(res, dlgex->gotstyle ? dlgex->style->or_mask : WS_POPUPWINDOW); + tag_nctrl = res->size; + put_word(res, 0); /* Number of controls */ + put_word(res, dlgex->x); + put_word(res, dlgex->y); + put_word(res, dlgex->width); + put_word(res, dlgex->height); + if(dlgex->menu) + put_name_id(res, dlgex->menu, TRUE, dlgex->lvc.language); + else + put_word(res, 0); + if(dlgex->dlgclass) + put_name_id(res, dlgex->dlgclass, TRUE, dlgex->lvc.language); + else + put_word(res, 0); + if(dlgex->title) + put_string(res, dlgex->title, str_unicode, TRUE, dlgex->lvc.language); + else + put_word(res, 0); + if(dlgex->font) + { + put_word(res, dlgex->font->size); + put_word(res, dlgex->font->weight); + /* FIXME: ? TRUE should be sufficient to say that its + * italic, but Borland's compiler says its 0x0101. + * I just copy it here, and hope for the best. + */ + put_word(res, dlgex->font->italic ? 0x0101 : 0); + put_string(res, dlgex->font->name, str_unicode, TRUE, dlgex->lvc.language); + } + + put_pad(res); + while(ctrl) + { + put_dword(res, ctrl->gothelpid ? ctrl->helpid : 0); + put_dword(res, ctrl->gotexstyle ? ctrl->exstyle->or_mask : 0); + /* FIXME: what is default control style? */ + put_dword(res, ctrl->gotstyle ? ctrl->style->or_mask : WS_CHILD | WS_VISIBLE); + put_word(res, ctrl->x); + put_word(res, ctrl->y); + put_word(res, ctrl->width); + put_word(res, ctrl->height); + put_dword(res, ctrl->id); + if(ctrl->ctlclass) + put_name_id(res, ctrl->ctlclass, TRUE, dlgex->lvc.language); + else + internal_error(__FILE__, __LINE__, "Control has no control-class"); + if(ctrl->title) + put_name_id(res, ctrl->title, FALSE, dlgex->lvc.language); + else + put_word(res, 0); + if(ctrl->extra) + { + put_pad(res); + put_word(res, ctrl->extra->size); + put_raw_data(res, ctrl->extra, 0); + } + else + put_word(res, 0); + + put_pad(res); + nctrl++; + ctrl = ctrl->next; + } + /* Set number of controls */ + set_word(res, tag_nctrl, (WORD)nctrl); + /* Set ResourceSize */ + SetResSize(res, restag); + put_pad(res); + } + else /* win16 */ + { + /* Do not generate anything in 16-bit mode */ + free(res->data); + free(res); + return NULL; + } + return res; +} + +/* + ***************************************************************************** + * Function : menuitem2res + * Syntax : void menuitem2res(res_t *res, menu_item_t *item) + * Input : + * Output : + * Description : + * Remarks : Self recursive + ***************************************************************************** +*/ +static void menuitem2res(res_t *res, menu_item_t *menitem, const language_t *lang) +{ + menu_item_t *itm = menitem; + if(win32) + { + while(itm) + { + put_word(res, itm->state | (itm->popup ? MF_POPUP : 0) | (!itm->next ? MF_END : 0)); + if(!itm->popup) + put_word(res, itm->id); + if(itm->name) + put_string(res, itm->name, str_unicode, TRUE, lang); + else + put_word(res, 0); + if(itm->popup) + menuitem2res(res, itm->popup, lang); + itm = itm->next; + } + } + else /* win16 */ + { + while(itm) + { + put_word(res, itm->state | (itm->popup ? MF_POPUP : 0) | (!itm->next ? MF_END : 0)); + if(!itm->popup) + put_word(res, itm->id); + if(itm->name) + put_string(res, itm->name, str_char, TRUE, lang); + else + put_byte(res, 0); + if(itm->popup) + menuitem2res(res, itm->popup, lang); + itm = itm->next; + } + } + +} + +/* + ***************************************************************************** + * Function : menu2res + * Syntax : res_t *menu2res(name_id_t *name, menu_t *men) + * Input : + * name - Name/ordinal of the resource + * men - The menu descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *menu2res(name_id_t *name, menu_t *men) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(men != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_MENU, NULL, name, men->memopt, win32 ? &(men->lvc) : NULL); + + put_dword(res, 0); /* Menuheader: Version and HeaderSize */ + menuitem2res(res, men->items, win32 ? men->lvc.language : NULL); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : menuexitem2res + * Syntax : void menuexitem2res(res_t *res, menuex_item_t *item) + * Input : + * Output : nop + * Description : + * Remarks : Self recursive + ***************************************************************************** +*/ +static void menuexitem2res(res_t *res, menuex_item_t *menitem, const language_t *lang) +{ + menuex_item_t *itm = menitem; + assert(win32 != 0); + while(itm) + { + put_dword(res, itm->gottype ? itm->type : 0); + put_dword(res, itm->gotstate ? itm->state : 0); + put_dword(res, itm->gotid ? itm->id : 0); /* FIXME: Docu. says word */ + put_word(res, (itm->popup ? 0x01 : 0) | (!itm->next ? MF_END : 0)); + if(itm->name) + put_string(res, itm->name, str_unicode, TRUE, lang); + else + put_word(res, 0); + put_pad(res); + if(itm->popup) + { + put_dword(res, itm->gothelpid ? itm->helpid : 0); + menuexitem2res(res, itm->popup, lang); + } + itm = itm->next; + } + +} + +/* + ***************************************************************************** + * Function : menuex2res + * Syntax : res_t *menuex2res(name_id_t *name, menuex_t *menex) + * Input : + * name - Name/ordinal of the resource + * menex - The menuex descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *menuex2res(name_id_t *name, menuex_t *menex) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(menex != NULL); + + res = new_res(); + if(win32) + { + restag = put_res_header(res, WRC_RT_MENU, NULL, name, menex->memopt, &(menex->lvc)); + + put_word(res, 1); /* Menuheader: Version */ + put_word(res, 4); /* Offset */ + put_dword(res, 0); /* HelpId */ + put_pad(res); + menuexitem2res(res, menex->items, menex->lvc.language); + /* Set ResourceSize */ + SetResSize(res, restag); + put_pad(res); + } + else /* win16 */ + { + /* Do not generate anything in 16-bit mode */ + free(res->data); + free(res); + return NULL; + } + return res; +} + +/* + ***************************************************************************** + * Function : cursorgroup2res + * Syntax : res_t *cursorgroup2res(name_id_t *name, cursor_group_t *curg) + * Input : + * name - Name/ordinal of the resource + * curg - The cursor descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *cursorgroup2res(name_id_t *name, cursor_group_t *curg) +{ + int restag; + res_t *res; + cursor_t *cur; + assert(name != NULL); + assert(curg != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_GROUP_CURSOR, NULL, name, curg->memopt, &(curg->lvc)); + if(win32) + { + put_word(res, 0); /* Reserved */ + /* FIXME: The ResType in the NEWHEADER structure should + * contain 14 according to the MS win32 doc. This is + * not the case with the BRC compiler and I really doubt + * the latter. Putting one here is compliant to win16 spec, + * but who knows the true value? + */ + put_word(res, 2); /* ResType */ + put_word(res, curg->ncursor); +#if 0 + for(cur = curg->cursorlist; cur; cur = cur->next) +#else + cur = curg->cursorlist; + while(cur->next) + cur = cur->next; + for(; cur; cur = cur->prev) +#endif + { + put_word(res, cur->width); + /* FIXME: The height of a cursor is half the size of + * the bitmap's height. BRC puts the height from the + * BITMAPINFOHEADER here instead of the cursorfile's + * height. MS doesn't seem to care... + */ + put_word(res, cur->height); + /* FIXME: The next two are reversed in BRC and I don't + * know why. Probably a bug. But, we can safely ignore + * it because win16 does not support color cursors. + * A warning should have been generated by the parser. + */ + put_word(res, cur->planes); + put_word(res, cur->bits); + /* FIXME: The +4 is the hotspot in the cursor resource. + * However, I cound not find this in the documentation. + * The hotspot bytes must either be included or MS + * doesn't care. + */ + put_dword(res, cur->data->size +4); + put_word(res, cur->id); + } + } + else /* win16 */ + { + put_word(res, 0); /* Reserved */ + put_word(res, 2); /* ResType */ + put_word(res, curg->ncursor); +#if 0 + for(cur = curg->cursorlist; cur; cur = cur->next) +#else + cur = curg->cursorlist; + while(cur->next) + cur = cur->next; + for(; cur; cur = cur->prev) +#endif + { + put_word(res, cur->width); + /* FIXME: The height of a cursor is half the size of + * the bitmap's height. BRC puts the height from the + * BITMAPINFOHEADER here instead of the cursorfile's + * height. MS doesn't seem to care... + */ + put_word(res, cur->height); + /* FIXME: The next two are reversed in BRC and I don't + * know why. Probably a bug. But, we can safely ignore + * it because win16 does not support color cursors. + * A warning should have been generated by the parser. + */ + put_word(res, cur->planes); + put_word(res, cur->bits); + /* FIXME: The +4 is the hotspot in the cursor resource. + * However, I cound not find this in the documentation. + * The hotspot bytes must either be included or MS + * doesn't care. + */ + put_dword(res, cur->data->size +4); + put_word(res, cur->id); + } + } + SetResSize(res, restag); /* Set ResourceSize */ + if(win32) + put_pad(res); + + return res; +} + +/* + ***************************************************************************** + * Function : cursor2res + * Syntax : res_t *cursor2res(cursor_t *cur) + * Input : + * cur - The cursor descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *cursor2res(cursor_t *cur) +{ + int restag; + res_t *res; + name_id_t name; + + assert(cur != NULL); + + res = new_res(); + name.type = name_ord; + name.name.i_name = cur->id; + restag = put_res_header(res, WRC_RT_CURSOR, NULL, &name, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, &(cur->lvc)); + put_word(res, cur->xhot); + put_word(res, cur->yhot); + put_raw_data(res, cur->data, 0); + + SetResSize(res, restag); /* Set ResourceSize */ + if(win32) + put_pad(res); + + return res; +} + +/* + ***************************************************************************** + * Function : icongroup2res + * Syntax : res_t *icongroup2res(name_id_t *name, icon_group_t *icog) + * Input : + * name - Name/ordinal of the resource + * icog - The icon group descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *icongroup2res(name_id_t *name, icon_group_t *icog) +{ + int restag; + res_t *res; + icon_t *ico; + assert(name != NULL); + assert(icog != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_GROUP_ICON, NULL, name, icog->memopt, &(icog->lvc)); + if(win32) + { + put_word(res, 0); /* Reserved */ + /* FIXME: The ResType in the NEWHEADER structure should + * contain 14 according to the MS win32 doc. This is + * not the case with the BRC compiler and I really doubt + * the latter. Putting one here is compliant to win16 spec, + * but who knows the true value? + */ + put_word(res, 1); /* ResType */ + put_word(res, icog->nicon); + for(ico = icog->iconlist; ico; ico = ico->next) + { + put_byte(res, ico->width); + put_byte(res, ico->height); + put_byte(res, ico->nclr); + put_byte(res, 0); /* Reserved */ + put_word(res, ico->planes); + put_word(res, ico->bits); + put_dword(res, ico->data->size); + put_word(res, ico->id); + } + } + else /* win16 */ + { + put_word(res, 0); /* Reserved */ + put_word(res, 1); /* ResType */ + put_word(res, icog->nicon); + for(ico = icog->iconlist; ico; ico = ico->next) + { + put_byte(res, ico->width); + put_byte(res, ico->height); + put_byte(res, ico->nclr); + put_byte(res, 0); /* Reserved */ + put_word(res, ico->planes); + put_word(res, ico->bits); + put_dword(res, ico->data->size); + put_word(res, ico->id); + } + } + SetResSize(res, restag); /* Set ResourceSize */ + if(win32) + put_pad(res); + + return res; +} + +/* + ***************************************************************************** + * Function : icon2res + * Syntax : res_t *icon2res(icon_t *ico) + * Input : + * ico - The icon descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *icon2res(icon_t *ico) +{ + int restag; + res_t *res; + name_id_t name; + + assert(ico != NULL); + + res = new_res(); + name.type = name_ord; + name.name.i_name = ico->id; + restag = put_res_header(res, WRC_RT_ICON, NULL, &name, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, &(ico->lvc)); + put_raw_data(res, ico->data, 0); + + SetResSize(res, restag); /* Set ResourceSize */ + if(win32) + put_pad(res); + + return res; +} + +/* + ***************************************************************************** + * Function : anicurico2res + * Syntax : res_t *anicurico2res(name_id_t *name, ani_curico_t *ani) + * Input : + * name - Name/ordinal of the resource + * ani - The animated object descriptor + * Output : New .res format structure + * Description : + * Remarks : The endian of the object's structures have been converted + * by the loader. + * There are rumors that win311 could handle animated stuff. + * That is why they are generated for both win16 and win32 + * compile. + ***************************************************************************** +*/ +static res_t *anicurico2res(name_id_t *name, ani_curico_t *ani, enum res_e type) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(ani != NULL); + + res = new_res(); + restag = put_res_header(res, type == res_anicur ? WRC_RT_ANICURSOR : WRC_RT_ANIICON, + NULL, name, ani->memopt, NULL); + put_raw_data(res, ani->data, 0); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : bitmap2res + * Syntax : res_t *bitmap2res(name_id_t *name, bitmap_t *bmp) + * Input : + * name - Name/ordinal of the resource + * bmp - The bitmap descriptor + * Output : New .res format structure + * Description : + * Remarks : The endian of the bitmap structures have been converted + * by the loader. + ***************************************************************************** +*/ +static res_t *bitmap2res(name_id_t *name, bitmap_t *bmp) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(bmp != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_BITMAP, NULL, name, bmp->memopt, &(bmp->data->lvc)); + if(bmp->data->data[0] == 'B' + && bmp->data->data[1] == 'M' + && ((BITMAPFILEHEADER *)bmp->data->data)->bfSize == bmp->data->size + && bmp->data->size >= sizeof(BITMAPFILEHEADER)) + { + /* The File header is still attached, don't write it */ + put_raw_data(res, bmp->data, sizeof(BITMAPFILEHEADER)); + } + else + { + put_raw_data(res, bmp->data, 0); + } + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : font2res + * Syntax : res_t *font2res(name_id_t *name, font_t *fnt) + * Input : + * name - Name/ordinal of the resource + * fnt - The font descriptor + * Output : New .res format structure + * Description : + * Remarks : The data has been prepared just after parsing. + ***************************************************************************** +*/ +static res_t *font2res(name_id_t *name, font_t *fnt) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(fnt != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_FONT, NULL, name, fnt->memopt, &(fnt->data->lvc)); + put_raw_data(res, fnt->data, 0); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : fontdir2res + * Syntax : res_t *fontdir2res(name_id_t *name, fontdir_t *fnd) + * Input : + * name - Name/ordinal of the resource + * fntdir - The fontdir descriptor + * Output : New .res format structure + * Description : + * Remarks : The data has been prepared just after parsing. + ***************************************************************************** +*/ +static res_t *fontdir2res(name_id_t *name, fontdir_t *fnd) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(fnd != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_FONTDIR, NULL, name, fnd->memopt, &(fnd->data->lvc)); + put_raw_data(res, fnd->data, 0); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : rcdata2res + * Syntax : res_t *rcdata2res(name_id_t *name, rcdata_t *rdt) + * Input : + * name - Name/ordinal of the resource + * rdt - The rcdata descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *rcdata2res(name_id_t *name, rcdata_t *rdt) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(rdt != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_RCDATA, NULL, name, rdt->memopt, &(rdt->data->lvc)); + put_raw_data(res, rdt->data, 0); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : messagetable2res + * Syntax : res_t *messagetable2res(name_id_t *name, messagetable_t *msg) + * Input : + * name - Name/ordinal of the resource + * msg - The messagetable descriptor + * Output : New .res format structure + * Description : + * Remarks : The data has been converted to the appropriate endian + * after is was parsed. + ***************************************************************************** +*/ +static res_t *messagetable2res(name_id_t *name, messagetable_t *msg) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(msg != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_MESSAGETABLE, NULL, name, msg->memopt, &(msg->data->lvc)); + put_raw_data(res, msg->data, 0); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : stringtable2res + * Syntax : res_t *stringtable2res(stringtable_t *stt) + * Input : + * stt - The stringtable descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *stringtable2res(stringtable_t *stt) +{ + res_t *res; + name_id_t name; + int i; + int restag; + DWORD lastsize = 0; + + assert(stt != NULL); + res = new_res(); + + for(; stt; stt = stt->next) + { + if(!stt->nentries) + { + warning("Empty internal stringtable"); + continue; + } + name.type = name_ord; + name.name.i_name = (stt->idbase >> 4) + 1; + restag = put_res_header(res, WRC_RT_STRING, NULL, &name, stt->memopt, win32 ? &(stt->lvc) : NULL); + for(i = 0; i < stt->nentries; i++) + { + if(stt->entries[i].str && stt->entries[i].str->size) + { + put_string(res, stt->entries[i].str, win32 ? str_unicode : str_char, + FALSE, win32 ? stt->lvc.language : NULL); + } + else + { + if (win32) + put_word(res, 0); + else + put_byte(res, 0); + } + } + /* Set ResourceSize */ + SetResSize(res, restag - lastsize); + if(win32) + put_pad(res); + lastsize = res->size; + } + return res; +} + +/* + ***************************************************************************** + * Function : user2res + * Syntax : res_t *user2res(name_id_t *name, user_t *usr) + * Input : + * name - Name/ordinal of the resource + * usr - The userresource descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *user2res(name_id_t *name, user_t *usr) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(usr != NULL); + + res = new_res(); + restag = put_res_header(res, 0, usr->type, name, usr->memopt, &(usr->data->lvc)); + put_raw_data(res, usr->data, 0); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : versionblock2res + * Syntax : void versionblock2res(res_t *res, ver_block_t *blk) + * Input : + * res - Binary resource to write to + * blk - The version block to be written + * Output : + * Description : + * Remarks : Self recursive + ***************************************************************************** +*/ +static void versionblock2res(res_t *res, ver_block_t *blk, int level, const language_t *lang) +{ + ver_value_t *val; + int blksizetag; + int valblksizetag; + int valvalsizetag; + int tag; + int i; + + blksizetag = res->size; + put_word(res, 0); /* Will be overwritten later */ + put_word(res, 0); + if(win32) + put_word(res, 0); /* level ? */ + put_string(res, blk->name, win32 ? str_unicode : str_char, TRUE, lang); + put_pad(res); + for(val = blk->values; val; val = val->next) + { + if(val->type == val_str) + { + valblksizetag = res->size; + put_word(res, 0); /* Will be overwritten later */ + valvalsizetag = res->size; + put_word(res, 0); /* Will be overwritten later */ + if(win32) + { + put_word(res, level); + } + put_string(res, val->key, win32 ? str_unicode : str_char, TRUE, lang); + put_pad(res); + tag = res->size; + put_string(res, val->value.str, win32 ? str_unicode : str_char, TRUE, lang); + if(win32) + set_word(res, valvalsizetag, (WORD)((res->size - tag) >> 1)); + else + set_word(res, valvalsizetag, (WORD)(res->size - tag)); + set_word(res, valblksizetag, (WORD)(res->size - valblksizetag)); + put_pad(res); + } + else if(val->type == val_words) + { + valblksizetag = res->size; + put_word(res, 0); /* Will be overwritten later */ + valvalsizetag = res->size; + put_word(res, 0); /* Will be overwritten later */ + if(win32) + { + put_word(res, level); + } + put_string(res, val->key, win32 ? str_unicode : str_char, TRUE, lang); + put_pad(res); + tag = res->size; + for(i = 0; i < val->value.words->nwords; i++) + { + put_word(res, val->value.words->words[i]); + } + set_word(res, valvalsizetag, (WORD)(res->size - tag)); + set_word(res, valblksizetag, (WORD)(res->size - valblksizetag)); + put_pad(res); + } + else if(val->type == val_block) + { + versionblock2res(res, val->value.block, level+1, lang); + } + else + { + internal_error(__FILE__, __LINE__, "Invalid value indicator %d in VERSIONINFO", val->type); + } + } + + /* Set blocksize */ + set_word(res, blksizetag, (WORD)(res->size - blksizetag)); +} + +/* + ***************************************************************************** + * Function : versioninfo2res + * Syntax : res_t *versioninfo2res(name_id_t *name, versioninfo_t *ver) + * Input : + * name - Name/ordinal of the resource + * ver - The versioninfo descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *versioninfo2res(name_id_t *name, versioninfo_t *ver) +{ + int restag; + int rootblocksizetag; + int valsizetag; + int tag; + res_t *res; + string_t vsvi; + ver_block_t *blk; + + assert(name != NULL); + assert(ver != NULL); + + vsvi.type = str_char; + vsvi.str.cstr = xstrdup("VS_VERSION_INFO"); + vsvi.size = 15; /* Excl. termination */ + + res = new_res(); + restag = put_res_header(res, WRC_RT_VERSION, NULL, name, ver->memopt, &(ver->lvc)); + rootblocksizetag = res->size; + put_word(res, 0); /* BlockSize filled in later */ + valsizetag = res->size; + put_word(res, 0); /* ValueSize filled in later*/ + if(win32) + put_word(res, 0); /* Tree-level ? */ + put_string(res, &vsvi, win32 ? str_unicode : str_char, + TRUE, win32 ? ver->lvc.language : NULL); + if(win32) + put_pad(res); + tag = res->size; + put_dword(res, VS_FFI_SIGNATURE); + put_dword(res, VS_FFI_STRUCVERSION); + put_dword(res, (ver->filever_maj1 << 16) + (ver->filever_maj2 & 0xffff)); + put_dword(res, (ver->filever_min1 << 16) + (ver->filever_min2 & 0xffff)); + put_dword(res, (ver->prodver_maj1 << 16) + (ver->prodver_maj2 & 0xffff)); + put_dword(res, (ver->prodver_min1 << 16) + (ver->prodver_min2 & 0xffff)); + put_dword(res, ver->fileflagsmask); + put_dword(res, ver->fileflags); + put_dword(res, ver->fileos); + put_dword(res, ver->filetype); + put_dword(res, ver->filesubtype); + put_dword(res, 0); /* FileDateMS */ + put_dword(res, 0); /* FileDateLS */ + /* Set ValueSize */ + set_word(res, valsizetag, (WORD)(res->size - tag)); + /* Descend into the blocks */ + for(blk = ver->blocks; blk; blk = blk->next) + versionblock2res(res, blk, 0, win32 ? ver->lvc.language : NULL); + /* Set root block's size */ + set_word(res, rootblocksizetag, (WORD)(res->size - rootblocksizetag)); + + SetResSize(res, restag); + if(win32) + put_pad(res); + + free(vsvi.str.cstr); + return res; +} + +/* + ***************************************************************************** + * Function : toolbaritem2res + * Syntax : void toolbaritem2res(res_t *res, toolbar_item_t *tbitem) + * Input : + * Output : nop + * Description : + * Remarks : Self recursive + ***************************************************************************** +*/ +static void toolbaritem2res(res_t *res, toolbar_item_t *tbitem) +{ + toolbar_item_t *itm = tbitem; + assert(win32 != 0); + while(itm) + { + put_word(res, itm->id); + itm = itm->next; + } + +} + +/* + ***************************************************************************** + * Function : toolbar2res + * Syntax : res_t *toolbar2res(name_id_t *name, toolbar_t *toolbar) + * Input : + * name - Name/ordinal of the resource + * toolbar - The toolbar descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *toolbar2res(name_id_t *name, toolbar_t *toolbar) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(toolbar != NULL); + + res = new_res(); + if(win32) + { + restag = put_res_header(res, WRC_RT_TOOLBAR, NULL, name, toolbar->memopt, &(toolbar->lvc)); + + put_word(res, 1); /* Menuheader: Version */ + put_word(res, toolbar->button_width); /* (in pixels?) */ + put_word(res, toolbar->button_height); /* (in pixels?) */ + put_word(res, toolbar->nitems); + put_pad(res); + toolbaritem2res(res, toolbar->items); + /* Set ResourceSize */ + SetResSize(res, restag); + put_pad(res); + } + else /* win16 */ + { + /* Do not generate anything in 16-bit mode */ + free(res->data); + free(res); + return NULL; + } + return res; +} + +/* + ***************************************************************************** + * Function : dlginit2res + * Syntax : res_t *dlginit2res(name_id_t *name, dlginit_t *dit) + * Input : + * name - Name/ordinal of the resource + * rdt - The dlginit descriptor + * Output : New .res format structure + * Description : + * Remarks : + ***************************************************************************** +*/ +static res_t *dlginit2res(name_id_t *name, dlginit_t *dit) +{ + int restag; + res_t *res; + assert(name != NULL); + assert(dit != NULL); + + res = new_res(); + restag = put_res_header(res, WRC_RT_DLGINIT, NULL, name, dit->memopt, &(dit->data->lvc)); + put_raw_data(res, dit->data, 0); + /* Set ResourceSize */ + SetResSize(res, restag); + if(win32) + put_pad(res); + return res; +} + +/* + ***************************************************************************** + * Function : prep_nid_for_label + * Syntax : char *prep_nid_for_label(const name_id_t *nid) + * Input : + * Output : + * Description : Converts a resource name into the first 32 (or less) + * characters of the name with conversions. + * Remarks : + ***************************************************************************** +*/ +#define MAXNAMELEN 32 +char *prep_nid_for_label(const name_id_t *nid) +{ + static char buf[MAXNAMELEN+1]; + + assert(nid != NULL); + + if(nid->type == name_str && nid->name.s_name->type == str_unicode) + { + short *sptr; + int i; + sptr = nid->name.s_name->str.wstr; + buf[0] = '\0'; + for(i = 0; *sptr && i < MAXNAMELEN; i++) + { + if((unsigned)*sptr < 0x80 && isprint(*sptr & 0xff)) + buf[i] = *sptr++; + else + warning("Resourcename (str_unicode) contain unprintable characters or invalid translation, ignored"); + } + buf[i] = '\0'; + } + else if(nid->type == name_str && nid->name.s_name->type == str_char) + { + char *cptr; + int i; + cptr = nid->name.s_name->str.cstr; + buf[0] = '\0'; + for(i = 0; *cptr && i < MAXNAMELEN; i++) + { + if((unsigned)*cptr < 0x80 && isprint(*cptr & 0xff)) + buf[i] = *cptr++; + else + warning("Resourcename (str_char) contain unprintable characters, ignored"); + } + buf[i] = '\0'; + } + else if(nid->type == name_ord) + { + sprintf(buf, "%u", nid->name.i_name); + } + else + { + internal_error(__FILE__, __LINE__, "Resource name_id with invalid type %d", nid->type); + } + return buf; +} +#undef MAXNAMELEN + +/* + ***************************************************************************** + * Function : make_c_name + * Syntax : char *make_c_name(const char *base, const name_id_t *nid, const language_t *lan) + * Input : + * Output : + * Description : Converts a resource name into a valid c-identifier in the + * form "_base_nid". + * Remarks : + ***************************************************************************** +*/ +char *make_c_name(const char *base, const name_id_t *nid, const language_t *lan) +{ + int nlen; + char *buf; + char *ret; + char lanbuf[6]; + + sprintf(lanbuf, "%d", lan ? MAKELANGID(lan->id, lan->sub) : 0); + buf = prep_nid_for_label(nid); + nlen = strlen(buf) + strlen(lanbuf); + nlen += strlen(base) + 4; /* three time '_' and '\0' */ + ret = (char *)xmalloc(nlen); + strcpy(ret, "_"); + strcat(ret, base); + strcat(ret, "_"); + strcat(ret, buf); + strcat(ret, "_"); + strcat(ret, lanbuf); + return ret; +} + +/* + ***************************************************************************** + * Function : get_c_typename + * Syntax : const char *get_c_typename(enum res_e type) + * Input : + * Output : + * Description : Convert resource enum to char string to be used in c-name + * creation. + * Remarks : + ***************************************************************************** +*/ +const char *get_c_typename(enum res_e type) +{ + switch(type) + { + case res_acc: return "Acc"; + case res_anicur:return "AniCur"; + case res_aniico:return "AniIco"; + case res_bmp: return "Bmp"; + case res_cur: return "Cur"; + case res_curg: return "CurGrp"; + case res_dlg: + case res_dlgex: return "Dlg"; + case res_fnt: return "Fnt"; + case res_fntdir:return "FntDir"; + case res_ico: return "Ico"; + case res_icog: return "IcoGrp"; + case res_men: + case res_menex: return "Men"; + case res_rdt: return "RCDat"; + case res_stt: return "StrTab"; + case res_usr: return "Usr"; + case res_msg: return "MsgTab"; + case res_ver: return "VerInf"; + case res_toolbar: return "TlBr"; + case res_dlginit: return "DlgInit"; + default: return "Oops"; + } +} + +/* + ***************************************************************************** + * Function : resources2res + * Syntax : void resources2res(resource_t *top) + * Input : + * top - The resource-tree to convert + * Output : + * Description : Convert logical resource descriptors into binary data + * Remarks : + ***************************************************************************** +*/ +void resources2res(resource_t *top) +{ + while(top) + { + switch(top->type) + { + case res_acc: + if(!top->binres) + top->binres = accelerator2res(top->name, top->res.acc); + break; + case res_bmp: + if(!top->binres) + top->binres = bitmap2res(top->name, top->res.bmp); + break; + case res_cur: + if(!top->binres) + top->binres = cursor2res(top->res.cur); + break; + case res_curg: + if(!top->binres) + top->binres = cursorgroup2res(top->name, top->res.curg); + break; + case res_dlg: + if(!top->binres) + top->binres = dialog2res(top->name, top->res.dlg); + break; + case res_dlgex: + if(!top->binres) + top->binres = dialogex2res(top->name, top->res.dlgex); + break; + case res_fnt: + if(!top->binres) + top->binres = font2res(top->name, top->res.fnt); + break; + case res_fntdir: + if(!top->binres) + top->binres = fontdir2res(top->name, top->res.fnd); + break; + case res_ico: + if(!top->binres) + top->binres = icon2res(top->res.ico); + break; + case res_icog: + if(!top->binres) + top->binres = icongroup2res(top->name, top->res.icog); + break; + case res_men: + if(!top->binres) + top->binres = menu2res(top->name, top->res.men); + break; + case res_menex: + if(!top->binres) + top->binres = menuex2res(top->name, top->res.menex); + break; + case res_rdt: + if(!top->binres) + top->binres = rcdata2res(top->name, top->res.rdt); + break; + case res_stt: + if(!top->binres) + top->binres = stringtable2res(top->res.stt); + break; + case res_usr: + if(!top->binres) + top->binres = user2res(top->name, top->res.usr); + break; + case res_msg: + if(!top->binres) + top->binres = messagetable2res(top->name, top->res.msg); + break; + case res_ver: + if(!top->binres) + top->binres = versioninfo2res(top->name, top->res.ver); + break; + case res_toolbar: + if(!top->binres) + top->binres = toolbar2res(top->name, top->res.tbt); + break; + case res_dlginit: + if(!top->binres) + top->binres = dlginit2res(top->name, top->res.dlgi); + break; + case res_anicur: + case res_aniico: + if(!top->binres) + top->binres = anicurico2res(top->name, top->res.ani, top->type); + break; + default: + internal_error(__FILE__, __LINE__, "Unknown resource type encountered %d in binary res generation", top->type); + } + top->c_name = make_c_name(get_c_typename(top->type), top->name, top->lan); + top = top->next; + } +} diff --git a/reactos/tools/wrc/genres.h b/reactos/tools/wrc/genres.h new file mode 100644 index 00000000000..5feb83a3fa1 --- /dev/null +++ b/reactos/tools/wrc/genres.h @@ -0,0 +1,36 @@ +/* + * Generate resource prototypes + * + * Copyright 1998 Bertho A. Stultiens (BS) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WRC_GENRES_H +#define __WRC_GENRES_H + +#include "wrctypes.h" + +res_t *new_res(void); +res_t *grow_res(res_t *r, int add); +void put_byte(res_t *res, unsigned c); +void put_word(res_t *res, unsigned w); +void put_dword(res_t *res, unsigned d); +void resources2res(resource_t *top); +const char *get_c_typename(enum res_e type); +char *make_c_name(const char *base, const name_id_t *nid, const language_t *lan); +char *prep_nid_for_label(const name_id_t *nid); + +#endif diff --git a/reactos/tools/wrc/lex.yy.c b/reactos/tools/wrc/lex.yy.c new file mode 100644 index 00000000000..9b2a62725ca --- /dev/null +++ b/reactos/tools/wrc/lex.yy.c @@ -0,0 +1,9072 @@ +/* A lexical scanner generated by flex */ + +/* Scanner skeleton version: + * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ + */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 + +#include +#include + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include +#ifndef _WIN32 +#include +#endif + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + +typedef struct yy_buffer_state *YY_BUFFER_STATE; + +extern int yyleng; +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yytext_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int yy_size_t; + + +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; + +static YY_BUFFER_STATE yy_current_buffer = 0; + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; + +static int yy_n_chars; /* number of characters read into yy_ch_buf */ + + +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 1; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart YY_PROTO(( FILE *input_file )); + +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) + +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); + +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static void yy_flex_free YY_PROTO(( void * )); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) + + +#define FLEX_DEBUG +typedef unsigned char YY_CHAR; +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +typedef int yy_state_type; + +#define FLEX_DEBUG +extern char *yytext; +#define yytext_ptr yytext +static yyconst short yy_nxt[][256] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + }, + + { + 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, + 28, 26, 27, 27, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 27, 26, 29, 26, 26, 26, 26, 30, + + 26, 26, 26, 26, 26, 26, 31, 32, 33, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 26, 35, + 26, 26, 26, 26, 26, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 37, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 26, 31, 26, 26, 36, 26, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 38, 26, 39, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26 + }, + + { + 25, 26, 26, 26, 26, 26, 26, 26, 26, 40, + 28, 26, 40, 40, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 40, 26, 29, 41, 26, 26, 26, 30, + 26, 26, 26, 26, 26, 26, 31, 32, 33, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 26, 35, + 26, 26, 26, 26, 26, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 37, 36, 36, 36, + + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 26, 31, 26, 26, 36, 26, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 38, 26, 39, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26 + }, + + { + 25, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 44, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 45, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42 + }, + + { + 25, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 44, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 45, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42 + + }, + + { + 25, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 47, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 48, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 49, 46, 46, 46, 46, 46, 46, 46, + + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46 + }, + + { + 25, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 47, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 48, 46, 46, 46, 46, 46, + + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 49, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46 + }, + + { + 25, 50, 50, 50, 50, 50, 50, 50, 50, 51, + 52, 50, 51, 51, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 51, 50, 50, 50, 50, 50, 50, 53, + 50, 50, 50, 50, 50, 50, 50, 50, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 50, 50, + 50, 50, 50, 50, 50, 54, 54, 54, 54, 54, + 54, 50, 50, 50, 50, 50, 50, 50, 50, 50, + + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 54, 54, 54, + 54, 54, 54, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50 + }, + + { + 25, 50, 50, 50, 50, 50, 50, 50, 50, 51, + 52, 50, 51, 51, 50, 50, 50, 50, 50, 50, + + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 51, 50, 50, 50, 50, 50, 50, 53, + 50, 50, 50, 50, 50, 50, 50, 50, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 50, 50, + 50, 50, 50, 50, 50, 54, 54, 54, 54, 54, + 54, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 54, 54, 54, + 54, 54, 54, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50 + }, + + { + 25, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 56, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 57, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55 + + }, + + { + 25, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 56, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 57, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55 + }, + + { + 25, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58 + }, + + { + 25, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58 + }, + + { + 25, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, + + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 58, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 61, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 62, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + + 59, 59, 59, 63, 59, 64, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59 + }, + + { + 25, 59, 59, 59, 59, 59, 59, 59, 59, 65, + 60, 59, 65, 65, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 65, 59, 59, 66, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 61, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 62, + + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 63, 59, 64, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59 + + }, + + { + 25, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 68, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 58, 67, 67, 67, 67, + 69, 70, 67, 67, 67, 67, 67, 71, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 58, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67 + }, + + { + 25, 67, 67, 67, 67, 67, 67, 67, 67, 72, + 68, 67, 72, 72, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 72, 67, 67, 66, 67, 67, 67, 67, + + 69, 70, 67, 67, 67, 67, 67, 71, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 58, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67 + }, + + { + 25, 73, 73, 73, 73, 73, 73, 73, 73, 74, + 75, 73, 74, 74, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 74, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 76, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73 + }, + + { + 25, 73, 73, 73, 73, 73, 73, 73, 73, 74, + 75, 73, 74, 74, 73, 73, 73, 73, 73, 73, + + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 74, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 76, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73 + }, + + { + 25, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 58, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77 + + }, + + { + 25, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 58, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77 + }, + + { + 25, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 58, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78 + }, + + { + 25, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 58, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78 + }, + + { + 25, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 58, 80, 80, 80, 80, 80, 80, 80, 80, 80, + + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80 + }, + + { + 25, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 58, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 81, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80 + + }, + + { + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25 + }, + + { + 25, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26 + }, + + { + 25, -27, -27, -27, -27, -27, -27, -27, -27, 82, + -27, -27, 82, 82, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, 82, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27 + }, + + { + 25, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, -28, -28 + }, + + { + 25, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29 + + }, + + { + 25, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, + -30, -30, -30, -30, -30, -30 + }, + + { + 25, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + + -31, -31, -31, -31, -31, -31, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, -31, -31, + -31, -31, -31, -31, -31, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, -31, 83, -31, -31, 83, -31, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + + -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, -31 + }, + + { + 25, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, 84, -32, -32, -32, 83, 85, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, -32, -32, + -32, -32, -32, -32, -32, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, -32, 83, -32, -32, 83, -32, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32 + }, + + { + 25, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, 83, 83, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, -33, -33, + -33, -33, -33, -33, -33, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 88, 87, 87, 89, + 87, 87, 87, 87, 87, 87, 87, 87, 90, 87, + 87, -33, 83, -33, -33, 87, -33, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 88, 87, + 87, 89, 87, 87, 87, 87, 87, 87, 87, 87, + + 90, 87, 87, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33 + }, + + { + 25, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, 83, 83, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, -34, -34, + + -34, -34, -34, -34, -34, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 88, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -34, 83, -34, -34, 87, -34, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 88, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, -34, -34, -34, -34, -34 + + }, + + { + 25, 91, 91, 91, 91, 91, 91, 91, 91, 91, + -35, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91 + }, + + { + 25, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + + -36, -36, -36, -36, -36, -36, 83, 83, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, -36, -36, + -36, -36, -36, -36, -36, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -36, 83, -36, -36, 87, -36, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + + -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36 + }, + + { + 25, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, 92, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, 83, 83, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, -37, -37, + -37, -37, -37, -37, -37, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -37, 83, -37, -37, 87, -37, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37 + }, + + { + 25, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38 + }, + + { + 25, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39 + + }, + + { + 25, -40, -40, -40, -40, -40, -40, -40, -40, 93, + -40, -40, 93, 93, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, 93, -40, -40, 94, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40 + }, + + { + 25, -41, -41, -41, -41, -41, -41, -41, -41, 95, + -41, -41, 95, 95, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, 95, -41, -41, -41, -41, -41, -41, -41, + + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, 96, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + -41, -41, -41, -41, -41, -41 + }, + + { + 25, 97, 97, 97, 97, 97, 97, 97, 97, 97, + -42, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, -42, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, -42, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97 + }, + + { + 25, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43 + }, + + { + 25, -44, -44, -44, -44, -44, -44, -44, -44, 98, + -44, -44, 98, 98, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, 98, -44, 99, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44 + + }, + + { + 25, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 101, 100, 100, 102, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 103, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 104, 104, + 104, 104, 104, 104, 104, 104, 105, 105, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 106, 107, 100, + + 100, 100, 108, 100, 100, 100, 100, 100, 100, 100, + 109, 100, 100, 100, 110, 100, 111, 100, 112, 100, + 113, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100 + }, + + { + 25, 114, 114, 114, 114, 114, 114, 114, 114, 114, + -46, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, -46, 114, 114, 114, 114, 114, + + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, -46, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114 + }, + + { + 25, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47 + }, + + { + 25, -48, -48, -48, -48, -48, -48, -48, -48, 115, + -48, -48, 115, 115, -48, -48, -48, -48, -48, -48, + + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, 115, -48, 116, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48 + }, + + { + 25, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 118, 117, 117, 119, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 120, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 121, 121, + 121, 121, 121, 121, 121, 121, 122, 122, 117, 117, + + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 123, 124, 117, + 117, 117, 125, 117, 117, 117, 117, 117, 117, 117, + 126, 117, 117, 117, 127, 117, 128, 117, 129, 117, + 130, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117 + + }, + + { + 25, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50 + }, + + { + 25, -51, -51, -51, -51, -51, -51, -51, -51, 131, + -51, -51, 131, 131, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, 131, -51, -51, -51, -51, -51, -51, -51, + + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51 + }, + + { + 25, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52 + }, + + { + 25, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53 + }, + + { + 25, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, -54, -54, + + -54, -54, -54, -54, -54, 132, 132, 132, 132, 132, + 132, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, 132, 132, 132, + 132, 132, 132, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54 + + }, + + { + 25, 133, 133, 133, 133, 133, 133, 133, 133, 133, + -55, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, -55, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133 + }, + + { + 25, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56 + }, + + { + 25, 134, 134, 134, 134, 134, 134, 134, 134, 134, + -57, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 135, 134, 134, 134, 134, 136, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134 + }, + + { + 25, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58 + }, + + { + 25, 137, 137, 137, 137, 137, 137, 137, 137, 137, + -59, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, -59, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, -59, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, -59, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, -59, 137, -59, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137 + + }, + + { + 25, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60 + }, + + { + 25, 138, 138, 138, 138, 138, 138, 138, 138, 138, + -61, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + + 138, 138, 84, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138 + }, + + { + 25, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62 + }, + + { + 25, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63 + }, + + { + 25, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64 + + }, + + { + 25, 137, 137, 137, 137, 137, 137, 137, 137, 139, + -65, 137, 139, 139, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 139, 137, 137, 94, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, -65, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, -65, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, -65, 137, -65, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137 + }, + + { + 25, -66, -66, -66, -66, -66, -66, -66, -66, 95, + -66, -66, 95, 95, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, 95, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, 96, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66 + }, + + { + 25, 140, 140, 140, 140, 140, 140, 140, 140, 140, + -67, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, -67, 140, 140, 140, 140, + -67, -67, 140, 140, 140, 140, 140, -67, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, -67, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140 + }, + + { + 25, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68 + }, + + { + 25, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69 + + }, + + { + 25, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70 + }, + + { + 25, 141, 141, 141, 141, 141, 141, 141, 141, 141, + -71, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + + 141, 141, 84, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141 + }, + + { + 25, 140, 140, 140, 140, 140, 140, 140, 140, 142, + -72, 140, 142, 142, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 142, 140, 140, 94, 140, 140, 140, 140, + -72, -72, 140, 140, 140, 140, 140, -72, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, -72, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140 + }, + + { + 25, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73 + }, + + { + 25, -74, -74, -74, -74, -74, -74, -74, -74, 143, + -74, -74, 143, 143, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, 143, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74 + + }, + + { + 25, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75 + }, + + { + 25, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76 + }, + + { + 25, 144, 144, 144, 144, 144, 144, 144, 144, 144, + -77, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -78, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -79, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 146, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -80, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 148, + -81, 147, 148, 148, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 148, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 150, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, -82, -82, -82, -82, -82, -82, -82, -82, 82, + -82, -82, 82, 82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, 82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82 + }, + + { + 25, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, -83, -83, + -83, -83, -83, -83, -83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, -83, 83, -83, -83, 83, -83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, + -83, -83, -83, -83, -83, -83 + }, + + { + 25, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84 + + }, + + { + 25, 151, 151, 151, 151, 151, 151, 151, 151, 151, + -85, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 151, 151, + 151, 151, 151, 151, 151, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 151, 152, 151, 151, 152, 151, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151 + }, + + { + 25, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + + -86, -86, -86, -86, -86, -86, 83, 83, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, -86, -86, + -86, -86, -86, -86, -86, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 88, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -86, 83, -86, -86, 87, -86, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 88, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + + -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, + -86, -86, -86, -86, -86, -86 + }, + + { + 25, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, 83, 83, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, -87, -87, + -87, -87, -87, -87, -87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -87, 83, -87, -87, 87, -87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87 + }, + + { + 25, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, 83, 83, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, -88, -88, + -88, -88, -88, -88, -88, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -88, 83, -88, -88, 87, -88, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88 + }, + + { + 25, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, 83, 83, 153, 153, + 153, 153, 153, 153, 153, 153, 87, 87, -89, -89, + + -89, -89, -89, -89, -89, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -89, 83, -89, -89, 87, -89, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, + -89, -89, -89, -89, -89, -89 + + }, + + { + 25, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, 83, 83, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, -90, -90, + -90, -90, -90, -90, -90, 154, 154, 154, 154, 154, + 154, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -90, 83, -90, -90, 87, -90, 154, 154, 154, + + 154, 154, 154, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90 + }, + + { + 25, 91, 91, 91, 91, 91, 91, 91, 91, 91, + -91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91 + }, + + { + 25, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, -92, -92 + }, + + { + 25, -93, -93, -93, -93, -93, -93, -93, -93, 93, + -93, -93, 93, 93, -93, -93, -93, -93, -93, -93, + + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, 93, -93, -93, 94, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, + -93, -93, -93, -93, -93, -93 + }, + + { + 25, -94, -94, -94, -94, -94, -94, -94, -94, 95, + -94, -94, 95, 95, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, 95, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, 96, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, + -94, -94, -94, -94, -94, -94 + + }, + + { + 25, -95, -95, -95, -95, -95, -95, -95, -95, 95, + -95, -95, 95, 95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, 95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, 96, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, + -95, -95, -95, -95, -95, -95 + }, + + { + 25, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, 155, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96 + }, + + { + 25, 97, 97, 97, 97, 97, 97, 97, 97, 97, + -97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, -97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, -97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97 + }, + + { + 25, -98, -98, -98, -98, -98, -98, -98, -98, 98, + -98, -98, 98, 98, -98, -98, -98, -98, -98, -98, + + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, 98, -98, 156, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98 + }, + + { + 25, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99 + + }, + + { + 25, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100 + }, + + { + 25, -101, -101, -101, -101, -101, -101, -101, -101, 157, + -101, -101, 157, 157, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, 157, -101, -101, -101, -101, -101, -101, -101, + + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + + -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101 + }, + + { + 25, -102, -102, -102, -102, -102, -102, -102, -102, -102, + 158, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102 + }, + + { + 25, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, 159, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103 + }, + + { + 25, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, 160, 160, + 160, 160, 160, 160, 160, 160, 161, 161, -104, -104, + + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104 + + }, + + { + 25, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105 + }, + + { + 25, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + + -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, + -106, -106, -106, -106, -106, -106 + }, + + { + 25, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107 + }, + + { + 25, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108 + }, + + { + 25, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109 + + }, + + { + 25, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110 + }, + + { + 25, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111 + }, + + { + 25, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112 + }, + + { + 25, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, -113, -113, + -113, -113, -113, -113, -113, 162, 162, 162, 162, 162, + 162, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, 162, 162, 162, + 162, 162, 162, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113 + }, + + { + 25, 114, 114, 114, 114, 114, 114, 114, 114, 114, + -114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, -114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, -114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114 + + }, + + { + 25, -115, -115, -115, -115, -115, -115, -115, -115, 115, + -115, -115, 115, 115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, 115, -115, 163, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, + -115, -115, -115, -115, -115, -115 + }, + + { + 25, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116 + }, + + { + 25, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, -117, -117, -117 + }, + + { + 25, -118, -118, -118, -118, -118, -118, -118, -118, 164, + -118, -118, 164, 164, -118, -118, -118, -118, -118, -118, + + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, 164, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, + -118, -118, -118, -118, -118, -118 + }, + + { + 25, -119, -119, -119, -119, -119, -119, -119, -119, -119, + 165, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, + -119, -119, -119, -119, -119, -119 + + }, + + { + 25, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, 166, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, -120, -120, -120 + }, + + { + 25, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + + -121, -121, -121, -121, -121, -121, -121, -121, 167, 167, + 167, 167, 167, 167, 167, 167, 168, 168, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121 + }, + + { + 25, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, + -122, -122, -122, -122, -122, -122 + }, + + { + 25, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123 + }, + + { + 25, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124 + + }, + + { + 25, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125 + }, + + { + 25, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126 + }, + + { + 25, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127 + }, + + { + 25, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128 + }, + + { + 25, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129 + + }, + + { + 25, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, -130, -130, + -130, -130, -130, -130, -130, 169, 169, 169, 169, 169, + 169, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, 169, 169, 169, + + 169, 169, 169, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130 + }, + + { + 25, -131, -131, -131, -131, -131, -131, -131, -131, 131, + -131, -131, 131, 131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, 131, -131, -131, -131, -131, -131, -131, -131, + + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131 + }, + + { + 25, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132 + }, + + { + 25, 133, 133, 133, 133, 133, 133, 133, 133, 133, + -133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, -133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133 + }, + + { + 25, 134, 134, 134, 134, 134, 134, 134, 134, 134, + -134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, -134, 134, 134, 134, 134, -134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134 + + }, + + { + 25, 134, 134, 134, 134, 134, 134, 134, 134, 134, + -135, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 135, 134, 134, 134, 134, 136, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134 + }, + + { + 25, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + + -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136 + }, + + { + 25, 137, 137, 137, 137, 137, 137, 137, 137, 137, + -137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, -137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, -137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, -137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, -137, 137, -137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137 + }, + + { + 25, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138 + }, + + { + 25, 137, 137, 137, 137, 137, 137, 137, 137, 139, + -139, 137, 139, 139, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 139, 137, 137, 94, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, -139, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, -139, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, -139, 137, -139, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137 + + }, + + { + 25, 140, 140, 140, 140, 140, 140, 140, 140, 140, + -140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, -140, 140, 140, 140, 140, + -140, -140, 140, 140, 140, 140, 140, -140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, -140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140 + }, + + { + 25, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, + -141, -141, -141, -141, -141, -141 + }, + + { + 25, 140, 140, 140, 140, 140, 140, 140, 140, 142, + -142, 140, 142, 142, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 142, 140, 140, 94, 140, 140, 140, 140, + -142, -142, 140, 140, 140, 140, 140, -142, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, -142, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140 + }, + + { + 25, -143, -143, -143, -143, -143, -143, -143, -143, 143, + -143, -143, 143, 143, -143, -143, -143, -143, -143, -143, + + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, 143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, + -143, -143, -143, -143, -143, -143 + }, + + { + 25, 144, 144, 144, 144, 144, 144, 144, 144, 144, + -144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144 + + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -146, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 170, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 148, + -148, 147, 148, 148, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 148, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 150, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 171, + -149, 147, 171, 171, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 171, 147, 147, 147, 147, 147, 147, 147, + 147, 172, 147, 147, 147, 147, 147, 147, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -150, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 173, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, 151, 151, 151, 151, 151, 151, 151, 151, 151, + -151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151 + }, + + { + 25, 151, 151, 151, 151, 151, 151, 151, 151, 151, + -152, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 151, 151, + 151, 151, 151, 151, 151, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 151, 152, 151, 151, 152, 151, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151 + }, + + { + 25, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, 83, 83, 153, 153, + 153, 153, 153, 153, 153, 153, 87, 87, -153, -153, + -153, -153, -153, -153, -153, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 174, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -153, 83, -153, -153, 87, -153, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 174, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153 + }, + + { + 25, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, 83, 83, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, -154, -154, + + -154, -154, -154, -154, -154, 154, 154, 154, 154, 154, + 154, 87, 87, 87, 87, 87, 175, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -154, 83, -154, -154, 87, -154, 154, 154, 154, + 154, 154, 154, 87, 87, 87, 87, 87, 175, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, + -154, -154, -154, -154, -154, -154 + + }, + + { + 25, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, 176, -155, -155, + + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155 + }, + + { + 25, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156 + }, + + { + 25, -157, -157, -157, -157, -157, -157, -157, -157, 157, + -157, -157, 157, 157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, 157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157 + }, + + { + 25, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158 + }, + + { + 25, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159 + + }, + + { + 25, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, 177, 177, + 177, 177, 177, 177, 177, 177, 161, 161, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160 + }, + + { + 25, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + + -161, -161, -161, -161, -161, -161, -161, -161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161 + }, + + { + 25, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, -162, -162, + -162, -162, -162, -162, -162, 178, 178, 178, 178, 178, + 178, -162, -162, -162, -162, -162, -162, -162, -162, -162, + + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, 178, 178, 178, + 178, 178, 178, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162 + }, + + { + 25, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, -163, -163, -163, -163, -163 + }, + + { + 25, -164, -164, -164, -164, -164, -164, -164, -164, 164, + -164, -164, 164, 164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, 164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164 + + }, + + { + 25, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165 + }, + + { + 25, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + + -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166 + }, + + { + 25, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, 179, 179, + 179, 179, 179, 179, 179, 179, 168, 168, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167 + }, + + { + 25, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168 + }, + + { + 25, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, -169, -169, + + -169, -169, -169, -169, -169, 180, 180, 180, 180, 180, + 180, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, 180, 180, 180, + 180, 180, 180, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169 + + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -170, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 181, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 171, + -171, 147, 171, 171, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 171, 147, 147, 147, 147, 147, 147, 147, + + 147, 172, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, 182, 182, 182, 182, 182, 182, 182, 182, 182, + -172, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -173, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 183, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, 83, 83, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, -174, -174, + + -174, -174, -174, -174, -174, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -174, 83, -174, -174, 87, -174, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, + -174, -174, -174, -174, -174, -174 + + }, + + { + 25, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, 83, 83, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, -175, -175, + -175, -175, -175, -175, -175, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, -175, 83, -175, -175, 87, -175, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, + -175, -175, -175, -175, -175, -175 + }, + + { + 25, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, 184, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + + -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176 + }, + + { + 25, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, -177, -177 + }, + + { + 25, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, + -178, -178, -178, -178, -178, -178 + }, + + { + 25, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, 185, 185, + 185, 185, 185, 185, 185, 185, 168, 168, -179, -179, + + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, + -179, -179, -179, -179, -179, -179 + + }, + + { + 25, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, -180, -180, + -180, -180, -180, -180, -180, 186, 186, 186, 186, 186, + 186, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, 186, 186, 186, + + 186, 186, 186, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, -180, -180, -180, -180, -180 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -181, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 187, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 182, 182, 182, 182, 182, 182, 182, 182, 182, + -182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -183, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 188, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, 189, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184 + + }, + + { + 25, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, 190, 190, + 190, 190, 190, 190, 190, 190, 168, 168, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185 + }, + + { + 25, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + + -186, -186, -186, -186, -186, -186, -186, -186, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, -186, -186, + -186, -186, -186, -186, -186, 191, 191, 191, 191, 191, + 191, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, 191, 191, 191, + 191, 191, 191, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -187, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 192, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -188, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 193, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, 194, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189 + + }, + + { + 25, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, 195, 195, + 195, 195, 195, 195, 195, 195, 168, 168, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190 + }, + + { + 25, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -192, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 196, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -193, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 197, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, -194, -194, -194, -194, -194, -194, -194, -194, 198, + -194, -194, 198, 198, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, 198, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194 + + }, + + { + 25, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -196, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 199, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 147, + -197, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 200, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, -198, -198, -198, -198, -198, -198, -198, -198, 198, + -198, -198, 198, 198, -198, -198, -198, -198, -198, -198, + + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, 198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198 + }, + + { + 25, 145, 145, 145, 145, 145, 145, 145, 145, 145, + -199, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 201, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145 + + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 202, + -200, 147, 202, 202, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 202, 147, 147, 147, 147, 147, 147, 147, + 147, 203, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, 204, 204, 204, 204, 204, 204, 204, 204, 204, + -201, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204 + }, + + { + 25, 147, 147, 147, 147, 147, 147, 147, 147, 202, + -202, 147, 202, 202, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 202, 147, 147, 147, 147, 147, 147, 147, + 147, 203, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147 + }, + + { + 25, 205, 205, 205, 205, 205, 205, 205, 205, 205, + -203, 205, 205, 205, 205, 205, 205, 205, 205, 205, + + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205 + }, + + { + 25, 204, 204, 204, 204, 204, 204, 204, 204, 204, + -204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204 + + }, + + { + 25, 205, 205, 205, 205, 205, 205, 205, 205, 205, + -205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205 + }, + + } ; + + +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 92 +#define YY_END_OF_BUFFER 93 +static yyconst short int yy_accept[206] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, + 0, 0, 13, 13, 18, 18, 20, 20, 3, 3, + 5, 5, 8, 8, 93, 90, 89, 88, 53, 75, + 30, 30, 26, 26, 86, 29, 29, 24, 25, 89, + 2, 70, 74, 55, 91, 51, 52, 33, 91, 80, + 78, 79, 76, 80, 82, 84, 83, 91, 13, 14, + 91, 11, 9, 10, 13, 2, 18, 19, 15, 16, + 91, 18, 23, 20, 22, 21, 3, 5, 5, 8, + 8, 89, 30, 81, 30, 26, 29, 26, 29, 29, + 86, 31, 89, 2, 2, 0, 70, 54, 71, 68, + + 60, 68, 68, 56, 59, 61, 62, 63, 64, 65, + 66, 67, 68, 51, 32, 48, 46, 38, 46, 46, + 34, 37, 39, 40, 41, 42, 43, 44, 45, 46, + 78, 77, 82, 83, 83, 85, 13, 12, 13, 18, + 17, 18, 20, 3, 5, 5, 8, 8, 8, 8, + 87, 30, 28, 27, 0, 73, 60, 69, 72, 56, + 59, 58, 50, 38, 47, 49, 34, 37, 36, 5, + 8, 7, 8, 28, 27, 0, 56, 57, 34, 36, + 5, 7, 8, 0, 34, 36, 5, 8, 0, 34, + 35, 5, 8, 0, 34, 5, 8, 1, 5, 8, + + 4, 8, 6, 4, 6 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +static yyconst yy_state_type yy_NUL_trans[206] = + { 0, + 26, 26, 42, 42, 46, 46, 50, 50, 55, 55, + 58, 58, 59, 59, 67, 67, 73, 73, 77, 77, + 78, 78, 80, 80, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, + 0, 97, 0, 0, 100, 114, 0, 0, 117, 0, + 0, 0, 0, 0, 133, 0, 134, 0, 137, 0, + 138, 0, 0, 0, 137, 0, 140, 0, 0, 0, + 141, 140, 0, 0, 0, 0, 144, 145, 145, 147, + 147, 0, 0, 0, 151, 0, 0, 0, 0, 0, + 91, 0, 0, 0, 0, 0, 97, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 133, 134, 134, 0, 137, 0, 137, 140, + 0, 140, 0, 144, 145, 145, 147, 147, 147, 147, + 151, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 147, 182, 147, 0, 0, 0, 0, 0, 0, 0, + 145, 182, 147, 0, 0, 0, 145, 147, 0, 0, + 0, 145, 147, 0, 0, 145, 147, 0, 145, 147, + + 204, 147, 205, 204, 205 + } ; + +extern int yy_flex_debug; +int yy_flex_debug = 1; + +static yyconst short int yy_rule_linenum[92] = + { 0, + 325, 326, 327, 347, 348, 350, 351, 362, 369, 370, + 371, 372, 373, 374, 376, 377, 385, 386, 387, 389, + 390, 391, 392, 394, 395, 397, 398, 399, 408, 427, + 432, 438, 439, 444, 451, 456, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 477, 482, 483, 484, 489, 496, 501, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 519, 520, 521, 522, 527, 528, 536, 541, 542, 543, + 549, 555, 556, 557, 558, 560, 561, 563, 573, 575, + 584 + + } ; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "parser.l" +#define INITIAL 0 +/* -*-C-*- + * + * Copyright 1998-2000 Bertho A. Stultiens (BS) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * History: + * 21-May-2000 BS - Fixed the ident requirement of resource names + * which can be keywords. + * 30-Apr-2000 BS - Reintegration into the wine-tree + * 11-Jan-2000 BS - Very drastic cleanup because we don't have a + * preprocessor in here anymore. + * 02-Jan-2000 BS - Removed the preprocessor code + * 23-Dec-1999 BS - Removed the copyright for Martin von Loewis. + * There is really nothing left of his code in + * this parser. + * 20-Jun-1998 BS - Changed the filename conversion. Filenames are + * case-sensitive inder *nix, but not under dos. + * default behaviour is to convert to lower case. + * - All backslashes are converted to forward and + * both single and double slash is recognized as + * MS/Borland does. + * - Fixed a bug in 'yywf' case that prevented + * double quoted names to be scanned propperly. + * + * 19-May-1998 BS - Started to build a preprocessor. + * - Changed keyword processing completely to + * table-lookups. + * + * 20-Apr-1998 BS - Added ';' comment stripping + * + * 17-Apr-1998 BS - Made the win32 keywords optional when compiling in + * 16bit mode + * + * 15-Apr-1998 BS - Changed string handling to include escapes + * - Added unicode string handling (no codepage + * translation though). + * - 'Borrowed' the main idea of string scanning from + * the flex manual pages. + * - Added conditional handling of scanning depending + * on the state of the parser. This was mainly required + * to distinguish a file to load or raw data that + * follows. MS's definition of filenames is rather + * complex... It can be unquoted or double quoted. If + * double quoted, then the '\\' char is not automatically + * escaped according to Borland's rc compiler, but it + * accepts both "\\path\\file.rc" and "\path\file.rc". + * This makes life very hard! I go for the escaped + * version, as this seems to be the documented way... + * - Single quoted strings are now parsed and converted + * here. + * - Added comment stripping. The implementation is + * 'borrowed' from the flex manpages. + * - Rebuild string processing so that it may contain + * escaped '\0'. + */ +/* Exclusive string handling */ +#define yystr 1 + +/* Exclusive unicode string handling */ +#define yylstr 2 + +/* Exclusive rcdata single quoted data handling */ +#define yyrcd 3 + +/* Exclusive comment eating... */ +#define comment 4 + +/* Set when stripping c-junk */ +#define pp_stripe 5 + +#define pp_strips 6 + +#define pp_stripp 7 + +#define pp_stripp_final 8 + +/* Set when scanning #line style directives */ +#define pp_line 9 + +/* Set when scanning #pragma */ +#define pp_pragma 10 + +#define pp_code_page 11 + +#define YY_STACK_USED 1 +#define YY_NEVER_INTERACTIVE 1 +/* Some shortcut definitions */ +#line 97 "parser.l" + +/*#define LEX_DEBUG*/ + +#include +#include +#include +#include +#include + +#include "wine/unicode.h" +#include "wrc.h" +#include "utils.h" +#include "parser.h" +#include "newstruc.h" + +#include "y.tab.h" + +#define YY_USE_PROTOS +#define YY_NO_UNPUT +#define YY_NO_TOP_STATE + +/* Always update the current character position within a line */ +#define YY_USER_ACTION char_number+=yyleng; wanted_id = want_id; want_id = 0; + +static void addcchar(char c); +static void addwchar(WCHAR s); +static string_t *get_buffered_cstring(void); +static string_t *get_buffered_wstring(void); +static string_t *make_string(char *s); + +static char *cbuffer; /* Buffers for string collection */ +static int cbufidx; +static int cbufalloc = 0; +static WCHAR *wbuffer; +static int wbufidx; +static int wbufalloc = 0; +static int stripslevel = 0; /* Count {} during pp_strips/pp_stripe mode */ +static int stripplevel = 0; /* Count () during pp_strips mode */ +static int cjunk_tagline; /* Where did we start stripping (helps error tracking) */ + +static int current_codepage = -1; /* use language default */ + +/* + * This one is a bit tricky. + * We set 'want_id' in the parser to get the first + * identifier we get across in the scanner, but we + * also want it to be reset at nearly any token we + * see. Exceptions are: + * - newlines + * - comments + * - whitespace + * + * The scanner will automatically reset 'want_id' + * after *each* scanner reduction and puts is value + * into the var below. In this way we can see the + * state after the YY_RULE_SETUP (i.e. the user action; + * see above) and don't have to worry too much when + * it needs to be reset. + */ +static int wanted_id = 0; +static int save_wanted_id; /* To save across comment reductions */ + +struct keyword { + const char *keyword; + int token; + int isextension; + int needcase; + int alwayskw; +}; + +static struct keyword keywords[] = { + { "ACCELERATORS", tACCELERATORS, 0, 0, 0}, + { "ALT", tALT, 0, 0, 0}, + { "ASCII", tASCII, 0, 0, 0}, + { "AUTO3STATE", tAUTO3STATE, 1, 0, 0}, + { "AUTOCHECKBOX", tAUTOCHECKBOX, 1, 0, 0}, + { "AUTORADIOBUTTON", tAUTORADIOBUTTON, 1, 0, 0}, + { "BEGIN", tBEGIN, 0, 0, 0}, + { "BITMAP", tBITMAP, 0, 0, 0}, + { "BLOCK", tBLOCK, 0, 0, 0}, + { "BUTTON", tBUTTON, 1, 0, 0}, + { "CAPTION", tCAPTION, 0, 0, 0}, + { "CHARACTERISTICS", tCHARACTERISTICS, 1, 0, 0}, + { "CHECKBOX", tCHECKBOX, 0, 0, 0}, + { "CHECKED", tCHECKED, 0, 0, 0}, + { "CLASS", tCLASS, 0, 0, 0}, + { "COMBOBOX", tCOMBOBOX, 0, 0, 0}, + { "CONTROL", tCONTROL, 0, 0, 0}, + { "CTEXT", tCTEXT, 0, 0, 0}, + { "CURSOR", tCURSOR, 0, 0, 0}, + { "DEFPUSHBUTTON", tDEFPUSHBUTTON, 0, 0, 0}, + { "DIALOG", tDIALOG, 0, 0, 0}, + { "DIALOGEX", tDIALOGEX, 1, 0, 0}, + { "DISCARDABLE", tDISCARDABLE, 0, 0, 0}, + { "DLGINIT", tDLGINIT, 0, 0, 0}, + { "EDITTEXT", tEDITTEXT, 0, 0, 0}, + { "END", tEND, 0, 0, 0}, + { "EXSTYLE", tEXSTYLE, 0, 0, 0}, + { "FILEFLAGS", tFILEFLAGS, 0, 0, 0}, + { "FILEFLAGSMASK", tFILEFLAGSMASK, 0, 0, 0}, + { "FILEOS", tFILEOS, 0, 0, 0}, + { "FILESUBTYPE", tFILESUBTYPE, 0, 0, 0}, + { "FILETYPE", tFILETYPE, 0, 0, 0}, + { "FILEVERSION", tFILEVERSION, 0, 0, 0}, + { "FIXED", tFIXED, 0, 0, 0}, + { "FONT", tFONT, 0, 0, 0}, + { "FONTDIR", tFONTDIR, 0, 0, 0}, /* This is a Borland BRC extension */ + { "GRAYED", tGRAYED, 0, 0, 0}, + { "GROUPBOX", tGROUPBOX, 0, 0, 0}, + { "HELP", tHELP, 0, 0, 0}, + { "ICON", tICON, 0, 0, 0}, + { "IMPURE", tIMPURE, 0, 0, 0}, + { "INACTIVE", tINACTIVE, 0, 0, 0}, + { "LANGUAGE", tLANGUAGE, 1, 0, 1}, + { "LISTBOX", tLISTBOX, 0, 0, 0}, + { "LOADONCALL", tLOADONCALL, 0, 0, 0}, + { "LTEXT", tLTEXT, 0, 0, 0}, + { "MENU", tMENU, 0, 0, 0}, + { "MENUBARBREAK", tMENUBARBREAK, 0, 0, 0}, + { "MENUBREAK", tMENUBREAK, 0, 0, 0}, + { "MENUEX", tMENUEX, 1, 0, 0}, + { "MENUITEM", tMENUITEM, 0, 0, 0}, + { "MESSAGETABLE", tMESSAGETABLE, 1, 0, 0}, + { "MOVEABLE", tMOVEABLE, 0, 0, 0}, + { "NOINVERT", tNOINVERT, 0, 0, 0}, + { "NOT", tNOT, 0, 0, 0}, + { "POPUP", tPOPUP, 0, 0, 0}, + { "PRELOAD", tPRELOAD, 0, 0, 0}, + { "PRODUCTVERSION", tPRODUCTVERSION, 0, 0, 0}, + { "PURE", tPURE, 0, 0, 0}, + { "PUSHBUTTON", tPUSHBUTTON, 0, 0, 0}, + { "RADIOBUTTON", tRADIOBUTTON, 0, 0, 0}, + { "RCDATA", tRCDATA, 0, 0, 0}, + { "RTEXT", tRTEXT, 0, 0, 0}, + { "SCROLLBAR", tSCROLLBAR, 0, 0, 0}, + { "SEPARATOR", tSEPARATOR, 0, 0, 0}, + { "SHIFT", tSHIFT, 0, 0, 0}, + { "STATE3", tSTATE3, 1, 0, 0}, + { "STRING", tSTRING, 0, 0, 0}, + { "STRINGTABLE", tSTRINGTABLE, 0, 0, 1}, + { "STYLE", tSTYLE, 0, 0, 0}, + { "TOOLBAR", tTOOLBAR, 1, 0, 0}, + { "VALUE", tVALUE, 0, 0, 0}, + { "VERSION", tVERSION, 1, 0, 0}, + { "VERSIONINFO", tVERSIONINFO, 0, 0, 0}, + { "VIRTKEY", tVIRTKEY, 0, 0, 0} +}; + +#define NKEYWORDS (sizeof(keywords)/sizeof(keywords[0])) +#define KWP(p) ((const struct keyword *)(p)) +static int kw_cmp_func(const void *s1, const void *s2) +{ + int ret; + ret = strcasecmp(KWP(s1)->keyword, KWP(s2)->keyword); + if(!ret && (KWP(s1)->needcase || KWP(s2)->needcase)) + return strcmp(KWP(s1)->keyword, KWP(s2)->keyword); + else + return ret; +} + +#define KW_BSEARCH +#define DO_SORT +static struct keyword *iskeyword(char *kw) +{ + struct keyword *kwp; + struct keyword key; + key.keyword = kw; + key.needcase = 0; +#ifdef DO_SORT + { + /* Make sure that it is sorted for bsearsh */ + static int sorted = 0; + if(!sorted) + { + qsort(keywords, NKEYWORDS, sizeof(keywords[0]), kw_cmp_func); + sorted = 1; + } + } +#endif +#ifdef KW_BSEARCH + kwp = bsearch(&key, keywords, NKEYWORDS, sizeof(keywords[0]), kw_cmp_func); +#else + { + int i; + for(i = 0; i < NKEYWORDS; i++) + { + if(!kw_cmp_func(&key, &keywords[i])) + break; + } + if(i < NKEYWORDS) + kwp = &keywords[i]; + else + kwp = NULL; + } +#endif + + if(kwp == NULL || (kwp->isextension && !extensions)) + return NULL; + else + return kwp; +} + +/* + ************************************************************************** + * The flexer starts here + ************************************************************************** + */ +#line 7201 "lex.yy.c" + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( void )); +#else +extern int yywrap YY_PROTO(( void )); +#endif +#endif + +#ifndef YY_NO_UNPUT +static void yyunput YY_PROTO(( int c, char *buf_ptr )); +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * )); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +#endif + +#if YY_STACK_USED +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state )); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( void )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( void )); +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( yy_current_buffer->yy_is_interactive ) \ + { \ + int c = '*', n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + } +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL int yylex YY_PROTO(( void )) +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + if ( yyleng > 0 ) \ + yy_current_buffer->yy_at_bol = \ + (yytext[yyleng - 1] == '\n'); \ + YY_USER_ACTION + +YY_DECL + { + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 306 "parser.l" + + /* + * Catch the GCC-style line statements here and parse them. + * This has the advantage that you can #include at any + * stage in the resource file. + * The preprocessor generates line directives in the format: + * # "filename" + * + * Codes can be a sequence of: + * - 1 start of new file + * - 2 returning to previous + * - 3 system header + * - 4 interpret as C-code + * + * 4 is not used and 1 mutually excludes 2 + * Anyhow, we are not really interested in these at all + * because we only want to know the linenumber and + * filename. + */ +#line 7386 "lex.yy.c" + + if ( yy_init ) + { + yy_init = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yy_start ) + yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_load_buffer_state(); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yy_start; + yy_current_state += YY_AT_BOL(); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)]) > 0 ) + { + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + + ++yy_cp; + } + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + +do_action: /* This label is used only to access EOF actions. */ + + if ( yy_flex_debug ) + { + if ( yy_act == 0 ) + fprintf( stderr, "--scanner backing up\n" ); + else if ( yy_act < 92 ) + fprintf( stderr, "--accepting rule at line %d (\"%s\")\n", + yy_rule_linenum[yy_act], yytext ); + else if ( yy_act == 92 ) + fprintf( stderr, "--accepting default rule (\"%s\")\n", + yytext ); + else if ( yy_act == 93 ) + fprintf( stderr, "--(end of buffer or a NUL)\n" ); + else + fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); + } + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yy_hold_char; + yy_cp = yy_last_accepting_cpos + 1; + yy_current_state = yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 325 "parser.l" +yy_push_state(pp_pragma); + YY_BREAK +case 2: +YY_RULE_SETUP +#line 326 "parser.l" +yy_push_state(pp_line); + YY_BREAK +case 3: +YY_RULE_SETUP +#line 327 "parser.l" +{ + int lineno; + char *cptr; + char *fname; + yy_pop_state(); + lineno = (int)strtol(yytext, &cptr, 10); + if(!lineno) + yyerror("Malformed '#...' line-directive; invalid linenumber"); + fname = strchr(cptr, '"'); + if(!fname) + yyerror("Malformed '#...' line-directive; missing filename"); + fname++; + cptr = strchr(fname, '"'); + if(!cptr) + yyerror("Malformed '#...' line-directive; missing terminating \""); + *cptr = '\0'; + line_number = lineno - 1; /* We didn't read the newline */ + input_name = xstrdup(fname); + } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 347 "parser.l" +yyless(9); yy_pop_state(); yy_push_state(pp_code_page); + YY_BREAK +case 5: +YY_RULE_SETUP +#line 348 "parser.l" +yy_pop_state(); if (pedantic) yywarning("Unrecognized #pragma directive '%s'",yytext); + YY_BREAK +case 6: +YY_RULE_SETUP +#line 350 "parser.l" +current_codepage = -1; yy_pop_state(); + YY_BREAK +case 7: +YY_RULE_SETUP +#line 351 "parser.l" +{ + char *p = yytext; + yy_pop_state(); + while (*p < '0' || *p > '9') p++; + current_codepage = strtol( p, NULL, 10 ); + if (current_codepage && !wine_cp_get_table( current_codepage )) + { + yyerror("Codepage %d not supported", current_codepage); + current_codepage = 0; + } + } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 362 "parser.l" +yy_pop_state(); yyerror("Malformed #pragma code_page directive"); + YY_BREAK +/* + * Strip everything until a ';' taking + * into account braces {} for structures, + * classes and enums. + */ +case 9: +YY_RULE_SETUP +#line 369 "parser.l" +stripslevel++; + YY_BREAK +case 10: +YY_RULE_SETUP +#line 370 "parser.l" +stripslevel--; + YY_BREAK +case 11: +YY_RULE_SETUP +#line 371 "parser.l" +if(!stripslevel) yy_pop_state(); + YY_BREAK +case 12: +YY_RULE_SETUP +#line 372 "parser.l" +; /* To catch comments */ + YY_BREAK +case 13: +YY_RULE_SETUP +#line 373 "parser.l" +; /* Ignore rest */ + YY_BREAK +case 14: +YY_RULE_SETUP +#line 374 "parser.l" +line_number++; char_number = 1; + YY_BREAK +case 15: +YY_RULE_SETUP +#line 376 "parser.l" +stripplevel++; + YY_BREAK +case 16: +YY_RULE_SETUP +#line 377 "parser.l" +{ + stripplevel--; + if(!stripplevel) + { + yy_pop_state(); + yy_push_state(pp_stripp_final); + } + } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 385 "parser.l" +; /* To catch comments */ + YY_BREAK +case 18: +YY_RULE_SETUP +#line 386 "parser.l" +; /* Ignore rest */ + YY_BREAK +case 19: +YY_RULE_SETUP +#line 387 "parser.l" +line_number++; char_number = 1; + YY_BREAK +case 20: +YY_RULE_SETUP +#line 389 "parser.l" +; /* Ignore */ + YY_BREAK +case 21: +YY_RULE_SETUP +#line 390 "parser.l" +yy_pop_state(); /* Kill the semicolon */ + YY_BREAK +case 22: +YY_RULE_SETUP +#line 391 "parser.l" +line_number++; char_number = 1; yy_pop_state(); + YY_BREAK +case 23: +YY_RULE_SETUP +#line 392 "parser.l" +yyless(0); yy_pop_state(); + YY_BREAK +case 24: +YY_RULE_SETUP +#line 394 "parser.l" +return tBEGIN; + YY_BREAK +case 25: +YY_RULE_SETUP +#line 395 "parser.l" +return tEND; + YY_BREAK +case 26: +YY_RULE_SETUP +#line 397 "parser.l" +{ yylval.num = strtoul(yytext, 0, 10); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 398 "parser.l" +{ yylval.num = strtoul(yytext, 0, 16); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 399 "parser.l" +{ yylval.num = strtoul(yytext+2, 0, 8); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; } + YY_BREAK +/* + * The next two rules scan identifiers and filenames. + * This is achieved by using the priority ruling + * of the scanner where a '.' is valid in a filename + * and *only* in a filename. In this case, the second + * rule will be reduced because it is longer. + */ +case 29: +YY_RULE_SETUP +#line 408 "parser.l" +{ + struct keyword *tok = iskeyword(yytext); + + if(tok) + { + if(wanted_id && !tok->alwayskw) + { + yylval.str = make_string(yytext); + return tIDENT; + } + else + return tok->token; + } + else + { + yylval.str = make_string(yytext); + return tIDENT; + } + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 427 "parser.l" +yylval.str = make_string(yytext); return tFILENAME; + YY_BREAK +/* + * Wide string scanning + */ +case 31: +YY_RULE_SETUP +#line 432 "parser.l" +{ + yy_push_state(yylstr); + wbufidx = 0; + if(!win32) + yywarning("16bit resource contains unicode strings\n"); + } + YY_BREAK +case 32: +#line 439 "parser.l" +case 33: +YY_RULE_SETUP +#line 439 "parser.l" +{ + yy_pop_state(); + yylval.str = get_buffered_wstring(); + return tSTRING; + } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 444 "parser.l" +{ /* octal escape sequence */ + unsigned int result; + result = strtoul(yytext+1, 0, 8); + if ( result > 0xffff ) + yyerror("Character constant out of range"); + addwchar((WCHAR)result); + } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 451 "parser.l" +{ /* hex escape sequence */ + unsigned int result; + result = strtoul(yytext+2, 0, 16); + addwchar((WCHAR)result); + } + YY_BREAK +case 36: +YY_RULE_SETUP +#line 456 "parser.l" +{ yyerror("Invalid hex escape sequence '%s'", yytext); } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 458 "parser.l" +yyerror("Bad escape sequence"); + YY_BREAK +case 38: +YY_RULE_SETUP +#line 459 "parser.l" +line_number++; char_number = 1; /* backslash at EOL continues string after leading whitespace on next line */ + YY_BREAK +case 39: +YY_RULE_SETUP +#line 460 "parser.l" +addwchar('\a'); + YY_BREAK +case 40: +YY_RULE_SETUP +#line 461 "parser.l" +addwchar('\b'); + YY_BREAK +case 41: +YY_RULE_SETUP +#line 462 "parser.l" +addwchar('\f'); + YY_BREAK +case 42: +YY_RULE_SETUP +#line 463 "parser.l" +addwchar('\n'); + YY_BREAK +case 43: +YY_RULE_SETUP +#line 464 "parser.l" +addwchar('\r'); + YY_BREAK +case 44: +YY_RULE_SETUP +#line 465 "parser.l" +addwchar('\t'); + YY_BREAK +case 45: +YY_RULE_SETUP +#line 466 "parser.l" +addwchar('\v'); + YY_BREAK +case 46: +YY_RULE_SETUP +#line 467 "parser.l" +addwchar(yytext[1]); + YY_BREAK +case 47: +YY_RULE_SETUP +#line 468 "parser.l" +addwchar(yytext[2]); line_number++; char_number = 1; + YY_BREAK +case 48: +YY_RULE_SETUP +#line 469 "parser.l" +addwchar('\"'); /* "bla""bla" -> "bla\"bla" */ + YY_BREAK +case 49: +YY_RULE_SETUP +#line 470 "parser.l" +addwchar('\"'); /* "bla\""bla" -> "bla\"bla" */ + YY_BREAK +case 50: +YY_RULE_SETUP +#line 471 "parser.l" +; /* "bla" "bla" -> "blabla" */ + YY_BREAK +case 51: +YY_RULE_SETUP +#line 472 "parser.l" +{ + char *yptr = yytext; + while(*yptr) /* FIXME: codepage translation */ + addwchar(*yptr++ & 0xff); + } + YY_BREAK +case 52: +YY_RULE_SETUP +#line 477 "parser.l" +yyerror("Unterminated string"); + YY_BREAK +/* + * Normal string scanning + */ +case 53: +YY_RULE_SETUP +#line 482 "parser.l" +yy_push_state(yystr); cbufidx = 0; + YY_BREAK +case 54: +#line 484 "parser.l" +case 55: +YY_RULE_SETUP +#line 484 "parser.l" +{ + yy_pop_state(); + yylval.str = get_buffered_cstring(); + return tSTRING; + } + YY_BREAK +case 56: +YY_RULE_SETUP +#line 489 "parser.l" +{ /* octal escape sequence */ + int result; + result = strtol(yytext+1, 0, 8); + if ( result > 0xff ) + yyerror("Character constant out of range"); + addcchar((char)result); + } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 496 "parser.l" +{ /* hex escape sequence */ + int result; + result = strtol(yytext+2, 0, 16); + addcchar((char)result); + } + YY_BREAK +case 58: +YY_RULE_SETUP +#line 501 "parser.l" +{ yyerror("Invalid hex escape sequence '%s'", yytext); } + YY_BREAK +case 59: +YY_RULE_SETUP +#line 503 "parser.l" +yyerror("Bad escape sequence"); + YY_BREAK +case 60: +YY_RULE_SETUP +#line 504 "parser.l" +line_number++; char_number = 1; /* backslash at EOL continues string after leading whitespace on next line */ + YY_BREAK +case 61: +YY_RULE_SETUP +#line 505 "parser.l" +addcchar('\a'); + YY_BREAK +case 62: +YY_RULE_SETUP +#line 506 "parser.l" +addcchar('\b'); + YY_BREAK +case 63: +YY_RULE_SETUP +#line 507 "parser.l" +addcchar('\f'); + YY_BREAK +case 64: +YY_RULE_SETUP +#line 508 "parser.l" +addcchar('\n'); + YY_BREAK +case 65: +YY_RULE_SETUP +#line 509 "parser.l" +addcchar('\r'); + YY_BREAK +case 66: +YY_RULE_SETUP +#line 510 "parser.l" +addcchar('\t'); + YY_BREAK +case 67: +YY_RULE_SETUP +#line 511 "parser.l" +addcchar('\v'); + YY_BREAK +case 68: +YY_RULE_SETUP +#line 512 "parser.l" +addcchar(yytext[1]); + YY_BREAK +case 69: +YY_RULE_SETUP +#line 513 "parser.l" +addcchar(yytext[2]); line_number++; char_number = 1; + YY_BREAK +case 70: +YY_RULE_SETUP +#line 514 "parser.l" +{ + char *yptr = yytext; + while(*yptr) + addcchar(*yptr++); + } + YY_BREAK +case 71: +YY_RULE_SETUP +#line 519 "parser.l" +addcchar('\"'); /* "bla""bla" -> "bla\"bla" */ + YY_BREAK +case 72: +YY_RULE_SETUP +#line 520 "parser.l" +addcchar('\"'); /* "bla\""bla" -> "bla\"bla" */ + YY_BREAK +case 73: +YY_RULE_SETUP +#line 521 "parser.l" +; /* "bla" "bla" -> "blabla" */ + YY_BREAK +case 74: +YY_RULE_SETUP +#line 522 "parser.l" +yyerror("Unterminated string"); + YY_BREAK +/* + * Raw data scanning + */ +case 75: +YY_RULE_SETUP +#line 527 "parser.l" +yy_push_state(yyrcd); cbufidx = 0; + YY_BREAK +case 76: +YY_RULE_SETUP +#line 528 "parser.l" +{ + yy_pop_state(); + yylval.raw = new_raw_data(); + yylval.raw->size = cbufidx; + yylval.raw->data = xmalloc(yylval.raw->size); + memcpy(yylval.raw->data, cbuffer, yylval.raw->size); + return tRAWDATA; + } + YY_BREAK +case 77: +YY_RULE_SETUP +#line 536 "parser.l" +{ + int result; + result = strtol(yytext, 0, 16); + addcchar((char)result); + } + YY_BREAK +case 78: +YY_RULE_SETUP +#line 541 "parser.l" +; /* Ignore space */ + YY_BREAK +case 79: +YY_RULE_SETUP +#line 542 "parser.l" +line_number++; char_number = 1; + YY_BREAK +case 80: +YY_RULE_SETUP +#line 543 "parser.l" +yyerror("Malformed data-line"); + YY_BREAK +/* + * Comment stripping + * Should never occur after preprocessing + */ +case 81: +YY_RULE_SETUP +#line 549 "parser.l" +{ + yy_push_state(comment); + save_wanted_id = wanted_id; + if(!no_preprocess) + yywarning("Found comments after preprocessing, please report"); + } + YY_BREAK +case 82: +YY_RULE_SETUP +#line 555 "parser.l" +; + YY_BREAK +case 83: +YY_RULE_SETUP +#line 556 "parser.l" +; + YY_BREAK +case 84: +YY_RULE_SETUP +#line 557 "parser.l" +line_number++; char_number = 1; + YY_BREAK +case 85: +YY_RULE_SETUP +#line 558 "parser.l" +yy_pop_state(); want_id = save_wanted_id; + YY_BREAK +case 86: +YY_RULE_SETUP +#line 560 "parser.l" +want_id = wanted_id; /* not really comment, but left-over c-junk */ + YY_BREAK +case 87: +YY_RULE_SETUP +#line 561 "parser.l" +want_id = wanted_id; if(!no_preprocess) yywarning("Found comments after preprocessing, please report"); + YY_BREAK +case 88: +YY_RULE_SETUP +#line 563 "parser.l" +{ + want_id = wanted_id; + line_number++; + char_number = 1; + if(want_nl) + { + want_nl = 0; + return tNL; + } + } + YY_BREAK +case 89: +YY_RULE_SETUP +#line 573 "parser.l" +want_id = wanted_id; /* Eat whitespace */ + YY_BREAK +case 90: +YY_RULE_SETUP +#line 575 "parser.l" +return yytext[0]; + YY_BREAK +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(yystr): +case YY_STATE_EOF(yylstr): +case YY_STATE_EOF(yyrcd): +case YY_STATE_EOF(comment): +case YY_STATE_EOF(pp_stripe): +case YY_STATE_EOF(pp_strips): +case YY_STATE_EOF(pp_stripp): +case YY_STATE_EOF(pp_stripp_final): +case YY_STATE_EOF(pp_line): +case YY_STATE_EOF(pp_pragma): +case YY_STATE_EOF(pp_code_page): +#line 577 "parser.l" +{ + if(YY_START == pp_strips || YY_START == pp_stripe || YY_START == pp_stripp || YY_START == pp_stripp_final) + yyerror("Unexpected end of file during c-junk scanning (started at %d)", cjunk_tagline); + else + yyterminate(); + } + YY_BREAK +case 91: +YY_RULE_SETUP +#line 584 "parser.l" +{ + /* Catch all rule to find any unmatched text */ + if(*yytext == '\n') + { + line_number++; + char_number = 1; + } + yywarning("Unmatched text '%c' (0x%02x) YY_START=%d stripslevel=%d", + isprint(*yytext & 0xff) ? *yytext : '.', *yytext, YY_START,stripslevel); + } + YY_BREAK +case 92: +YY_RULE_SETUP +#line 595 "parser.l" +ECHO; + YY_BREAK +#line 8100 "lex.yy.c" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yy_c_buf_p; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + yy_did_buffer_switch_on_eof = 0; + + if ( yywrap() ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ + + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +static int yy_get_next_buffer() + { + register char *dest = yy_current_buffer->yy_ch_buf; + register char *source = yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( yy_current_buffer->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + yy_current_buffer->yy_n_chars = yy_n_chars = 0; + + else + { + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = yy_current_buffer; + + int yy_c_buf_p_offset = + (int) (yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = yy_current_buffer->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + if ( yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + yy_current_buffer->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; + + return ret_val; + } + + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type yy_get_previous_state() + { + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = yy_start; + yy_current_state += YY_AT_BOL(); + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + { + if ( *yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)]; + } + else + yy_current_state = yy_NUL_trans[yy_current_state]; + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif + { + register int yy_is_jam; + register char *yy_cp = yy_c_buf_p; + + yy_current_state = yy_NUL_trans[yy_current_state]; + yy_is_jam = (yy_current_state == 0); + + if ( ! yy_is_jam ) + { + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + } + + return yy_is_jam ? 0 : yy_current_state; + } + + +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static void yyunput( int c, register char *yy_bp ) +#else +static void yyunput( c, yy_bp ) +int c; +register char *yy_bp; +#endif + { + register char *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = yy_n_chars + 2; + register char *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; + register char *source = + &yy_current_buffer->yy_ch_buf[number_to_move]; + + while ( source > yy_current_buffer->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +#endif /* ifndef YY_NO_UNPUT */ + + +#ifdef __cplusplus +static int yyinput() +#else +static int input() +#endif + { + int c; + + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + /* This was really a NUL. */ + *yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; + + switch ( yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap() ) + return EOF; + + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ + *yy_c_buf_p = '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; + + yy_current_buffer->yy_at_bol = (c == '\n'); + + return c; + } + + +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); + } + + +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif + { + if ( yy_current_buffer == new_buffer ) + return; + + if ( yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + yy_current_buffer = new_buffer; + yy_load_buffer_state(); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yy_did_buffer_switch_on_eof = 1; + } + + +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; + } + + +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif + { + if ( ! b ) + return; + + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf ); + + yy_flex_free( (void *) b ); + } + + +#ifndef _WIN32 +#include +#else +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +extern int isatty YY_PROTO(( int )); +#endif +#endif +#endif + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + + + { + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif + } + + +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == yy_current_buffer ) + yy_load_buffer_state(); + } + + +#ifndef YY_NO_SCAN_BUFFER +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +char *base; +yy_size_t size; +#endif + { + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; + } +#endif + + +#ifndef YY_NO_SCAN_STRING +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len ); + } +#endif + + +#ifndef YY_NO_SCAN_BYTES +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len ) +yyconst char *bytes; +int len; +#endif + { + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (char *) yy_flex_alloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; + + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; + } +#endif + + +#ifndef YY_NO_PUSH_STATE +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; + + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); + + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); + + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); + + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + yy_start_stack[yy_start_stack_ptr++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +static void yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +static int yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) +#else +static void yy_fatal_error( msg ) +char msg[]; +#endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + +/* Internal utility routines. */ + +#ifndef yytext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +char *s1; +yyconst char *s2; +int n; +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } + +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 595 "parser.l" + + +#ifndef yywrap +int yywrap(void) +{ +#if 0 + if(bufferstackidx > 0) + { + return 0; + } +#endif + return 1; +} +#endif + +/* These dup functions copy the enclosed '\0' from + * the resource string. + */ +static void addcchar(char c) +{ + if(cbufidx >= cbufalloc) + { + cbufalloc += 1024; + cbuffer = xrealloc(cbuffer, cbufalloc * sizeof(cbuffer[0])); + if(cbufalloc > 65536) + yywarning("Reallocating string buffer larger than 64kB"); + } + cbuffer[cbufidx++] = c; +} + +static void addwchar(WCHAR s) +{ + if(wbufidx >= wbufalloc) + { + wbufalloc += 1024; + wbuffer = xrealloc(wbuffer, wbufalloc * sizeof(wbuffer[0])); + if(wbufalloc > 65536) + yywarning("Reallocating wide string buffer larger than 64kB"); + } + wbuffer[wbufidx++] = s; +} + +static string_t *get_buffered_cstring(void) +{ + string_t *str = new_string(); + + str->size = cbufidx; + str->type = str_char; + str->str.cstr = (char *)xmalloc(cbufidx+1); + memcpy(str->str.cstr, cbuffer, cbufidx); + str->str.cstr[cbufidx] = '\0'; + + if (!current_codepage || current_codepage == -1 || !win32) /* store as ANSI string */ + { + if (!current_codepage) yyerror("Codepage set to Unicode only, cannot use ASCII string here"); + return str; + } + else /* convert to Unicode before storing */ + { + string_t *str_w = convert_string( str, str_unicode, current_codepage ); + if (!check_unicode_conversion( str, str_w, current_codepage )) + yyerror("String %s does not convert identically to Unicode and back in codepage %d. " + "Try using a Unicode string instead.", str->str.cstr, current_codepage ); + free_string( str ); + return str_w; + } +} + +static string_t *get_buffered_wstring(void) +{ + string_t *str = new_string(); + str->size = wbufidx; + str->type = str_unicode; + str->str.wstr = xmalloc((wbufidx+1)*sizeof(WCHAR)); + memcpy(str->str.wstr, wbuffer, wbufidx*sizeof(WCHAR)); + str->str.wstr[wbufidx] = 0; + return str; +} + +static string_t *make_string(char *s) +{ + string_t *str = new_string(); + str->size = strlen(s); + str->type = str_char; + str->str.cstr = (char *)xmalloc(str->size+1); + memcpy(str->str.cstr, s, str->size+1); + return str; +} diff --git a/reactos/tools/wrc/newstruc.c b/reactos/tools/wrc/newstruc.c new file mode 100644 index 00000000000..499844a9f05 --- /dev/null +++ b/reactos/tools/wrc/newstruc.c @@ -0,0 +1,1181 @@ +/* + * Create dynamic new structures of various types + * and some utils in that trend. + * + * Copyright 1998 Bertho A. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include +#include + +#include "wrc.h" +#include "newstruc.h" +#include "utils.h" +#include "parser.h" + +#include "wingdi.h" /* for BITMAPINFOHEADER */ + +#include +typedef struct +{ + DWORD biSize; + WORD biWidth; + WORD biHeight; + WORD biPlanes; + WORD biBitCount; +} BITMAPOS2HEADER; +#include + +/* Generate new_* functions that have no parameters (NOTE: no ';') */ +__NEW_STRUCT_FUNC(dialog) +__NEW_STRUCT_FUNC(dialogex) +__NEW_STRUCT_FUNC(name_id) +__NEW_STRUCT_FUNC(menu) +__NEW_STRUCT_FUNC(menuex) +__NEW_STRUCT_FUNC(menu_item) +__NEW_STRUCT_FUNC(menuex_item) +__NEW_STRUCT_FUNC(control) +__NEW_STRUCT_FUNC(icon) +__NEW_STRUCT_FUNC(cursor) +__NEW_STRUCT_FUNC(versioninfo) +__NEW_STRUCT_FUNC(ver_value) +__NEW_STRUCT_FUNC(ver_block) +__NEW_STRUCT_FUNC(stt_entry) +__NEW_STRUCT_FUNC(accelerator) +__NEW_STRUCT_FUNC(event) +__NEW_STRUCT_FUNC(raw_data) +__NEW_STRUCT_FUNC(lvc) +__NEW_STRUCT_FUNC(res_count) +__NEW_STRUCT_FUNC(string) +__NEW_STRUCT_FUNC(toolbar_item) +__NEW_STRUCT_FUNC(ani_any) + +/* New instances for all types of structures */ +/* Very inefficient (in size), but very functional :-] + * Especially for type-checking. + */ +resource_t *new_resource(enum res_e t, void *res, int memopt, language_t *lan) +{ + resource_t *r = (resource_t *)xmalloc(sizeof(resource_t)); + r->type = t; + r->res.overlay = res; + r->memopt = memopt; + r->lan = lan; + return r; +} + +version_t *new_version(DWORD v) +{ + version_t *vp = (version_t *)xmalloc(sizeof(version_t)); + *vp = v; + return vp; +} + +characts_t *new_characts(DWORD c) +{ + characts_t *cp = (characts_t *)xmalloc(sizeof(characts_t)); + *cp = c; + return cp; +} + +language_t *new_language(int id, int sub) +{ + language_t *lan = (language_t *)xmalloc(sizeof(language_t)); + lan->id = id; + lan->sub = sub; + return lan; +} + +language_t *dup_language(language_t *l) +{ + if(!l) return NULL; + return new_language(l->id, l->sub); +} + +version_t *dup_version(version_t *v) +{ + if(!v) return NULL; + return new_version(*v); +} + +characts_t *dup_characts(characts_t *c) +{ + if(!c) return NULL; + return new_characts(*c); +} + +rcdata_t *new_rcdata(raw_data_t *rd, int *memopt) +{ + rcdata_t *rc = (rcdata_t *)xmalloc(sizeof(rcdata_t)); + rc->data = rd; + if(memopt) + { + rc->memopt = *memopt; + free(memopt); + } + else + rc->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE; + return rc; +} + +font_id_t *new_font_id(int size, string_t *face, int weight, int italic) +{ + font_id_t *fid = (font_id_t *)xmalloc(sizeof(font_id_t)); + fid->name = face; + fid->size = size; + fid->weight = weight; + fid->italic = italic; + return fid; +} + +user_t *new_user(name_id_t *type, raw_data_t *rd, int *memopt) +{ + user_t *usr = (user_t *)xmalloc(sizeof(user_t)); + usr->data = rd; + if(memopt) + { + usr->memopt = *memopt; + free(memopt); + } + else + usr->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE; + usr->type = type; + return usr; +} + +font_t *new_font(raw_data_t *rd, int *memopt) +{ + font_t *fnt = (font_t *)xmalloc(sizeof(font_t)); + fnt->data = rd; + if(memopt) + { + fnt->memopt = *memopt; + free(memopt); + } + else + fnt->memopt = WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE; + return fnt; +} + +fontdir_t *new_fontdir(raw_data_t *rd, int *memopt) +{ + fontdir_t *fnd = (fontdir_t *)xmalloc(sizeof(fontdir_t)); + fnd->data = rd; + if(memopt) + { + fnd->memopt = *memopt; + free(memopt); + } + else + fnd->memopt = WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE; + return fnd; +} + + +/* + * Convert bitmaps to proper endian + */ +static void convert_bitmap_swap_v3(BITMAPINFOHEADER *bih) +{ + bih->biSize = BYTESWAP_DWORD(bih->biSize); + bih->biWidth = BYTESWAP_DWORD(bih->biWidth); + bih->biHeight = BYTESWAP_DWORD(bih->biHeight); + bih->biPlanes = BYTESWAP_WORD(bih->biPlanes); + bih->biBitCount = BYTESWAP_WORD(bih->biBitCount); + bih->biCompression = BYTESWAP_DWORD(bih->biCompression); + bih->biSizeImage = BYTESWAP_DWORD(bih->biSizeImage); + bih->biXPelsPerMeter = BYTESWAP_DWORD(bih->biXPelsPerMeter); + bih->biYPelsPerMeter = BYTESWAP_DWORD(bih->biYPelsPerMeter); + bih->biClrUsed = BYTESWAP_DWORD(bih->biClrUsed); + bih->biClrImportant = BYTESWAP_DWORD(bih->biClrImportant); +} + +static void convert_bitmap_swap_v4(BITMAPV4HEADER *b4h) +{ + convert_bitmap_swap_v3((BITMAPINFOHEADER *)b4h); + b4h->bV4RedMask = BYTESWAP_DWORD(b4h->bV4RedMask); + b4h->bV4GreenMask = BYTESWAP_DWORD(b4h->bV4GreenMask); + b4h->bV4BlueMask = BYTESWAP_DWORD(b4h->bV4BlueMask); + b4h->bV4AlphaMask = BYTESWAP_DWORD(b4h->bV4AlphaMask); + b4h->bV4CSType = BYTESWAP_DWORD(b4h->bV4CSType); + b4h->bV4Endpoints.ciexyzRed.ciexyzX = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzRed.ciexyzX); + b4h->bV4Endpoints.ciexyzRed.ciexyzY = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzRed.ciexyzY); + b4h->bV4Endpoints.ciexyzRed.ciexyzZ = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzRed.ciexyzZ); + b4h->bV4Endpoints.ciexyzGreen.ciexyzX = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzGreen.ciexyzX); + b4h->bV4Endpoints.ciexyzGreen.ciexyzY = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzGreen.ciexyzY); + b4h->bV4Endpoints.ciexyzGreen.ciexyzZ = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzGreen.ciexyzZ); + b4h->bV4Endpoints.ciexyzBlue.ciexyzX = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzBlue.ciexyzX); + b4h->bV4Endpoints.ciexyzBlue.ciexyzY = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzBlue.ciexyzY); + b4h->bV4Endpoints.ciexyzBlue.ciexyzZ = BYTESWAP_DWORD(b4h->bV4Endpoints.ciexyzBlue.ciexyzZ); + b4h->bV4GammaRed = BYTESWAP_DWORD(b4h->bV4GammaRed); + b4h->bV4GammaGreen = BYTESWAP_DWORD(b4h->bV4GammaGreen); + b4h->bV4GammaBlue = BYTESWAP_DWORD(b4h->bV4GammaBlue); +} + +static void convert_bitmap_swap_os2(BITMAPOS2HEADER *boh) +{ + boh->biSize = BYTESWAP_DWORD(boh->biSize); + boh->biWidth = BYTESWAP_WORD(boh->biWidth); + boh->biHeight = BYTESWAP_WORD(boh->biHeight); + boh->biPlanes = BYTESWAP_WORD(boh->biPlanes); + boh->biBitCount = BYTESWAP_WORD(boh->biBitCount); +} + +#define FL_SIGBE 0x01 +#define FL_SIZEBE 0x02 +#define FL_V4 0x04 +#define FL_OS2 0x08 +static int convert_bitmap(char *data, int size) +{ + BITMAPINFOHEADER *bih = (BITMAPINFOHEADER *)data; + BITMAPV4HEADER *b4h = (BITMAPV4HEADER *)data; + BITMAPOS2HEADER *boh = (BITMAPOS2HEADER *)data; + int type = 0; + int returnSize = 0; /* size to be returned */ +#ifdef WORDS_BIGENDIAN + DWORD bisizel = BYTESWAP_DWORD(sizeof(BITMAPINFOHEADER)); + DWORD b4sizel = BYTESWAP_DWORD(sizeof(BITMAPV4HEADER)); + DWORD bosizel = BYTESWAP_DWORD(sizeof(BITMAPOS2HEADER)); + DWORD bisizeb = sizeof(BITMAPINFOHEADER); + DWORD b4sizeb = sizeof(BITMAPV4HEADER); + DWORD bosizeb = sizeof(BITMAPOS2HEADER); +#else + DWORD bisizel = sizeof(BITMAPINFOHEADER); + DWORD b4sizel = sizeof(BITMAPV4HEADER); + DWORD bosizel = sizeof(BITMAPOS2HEADER); + DWORD bisizeb = BYTESWAP_DWORD(sizeof(BITMAPINFOHEADER)); + DWORD b4sizeb = BYTESWAP_DWORD(sizeof(BITMAPV4HEADER)); + DWORD bosizeb = BYTESWAP_DWORD(sizeof(BITMAPOS2HEADER)); +#endif + + + /* + * Originally the bih and b4h pointers were simply incremented here, + * and memmoved at the end of the function. This causes alignment + * issues on solaris, so we do the memmove here rather than at the end. + */ + if(data[0] == 'B' && data[1] == 'M') + { + /* Little endian signature */ + memmove(data, data+sizeof(BITMAPFILEHEADER), size - sizeof(BITMAPFILEHEADER)); + returnSize = sizeof(BITMAPFILEHEADER); + } + else if(data[0] == 'M' && data[1] == 'B') + { + type |= FL_SIGBE; /* Big endian signature */ + memmove(data, data+sizeof(BITMAPFILEHEADER), size - sizeof(BITMAPFILEHEADER)); + returnSize = sizeof(BITMAPFILEHEADER); + + } + + if(bih->biSize == bisizel) + { + /* Little endian */ + } + else if(bih->biSize == bisizeb) + { + type |= FL_SIZEBE; + } + else if(bih->biSize == b4sizel) + { + type |= FL_V4; + } + else if(bih->biSize == b4sizeb) + { + type |= FL_SIZEBE | FL_V4; + } + else if(!bih->biSize || bih->biSize == bosizel) + { + type |= FL_OS2; + } + else if(bih->biSize == bosizeb) + { + type |= FL_SIZEBE | FL_OS2; + } + else + yyerror("Invalid bitmap format, bih->biSize = %ld", bih->biSize); + + switch(type) + { + default: + break; + case FL_SIZEBE: + case FL_SIZEBE | FL_V4: + case FL_SIZEBE | FL_OS2: + yywarning("Bitmap v%c signature little-endian, but size big-endian", type & FL_V4 ? '4' : '3'); + break; + case FL_SIGBE: + case FL_SIGBE | FL_V4: + case FL_SIGBE | FL_OS2: + yywarning("Bitmap v%c signature big-endian, but size little-endian", type & FL_V4 ? '4' : '3'); + break; + } + + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_BIG: + if(!(type & FL_SIZEBE)) + { + if(type & FL_V4) + convert_bitmap_swap_v4(b4h); + else if(type & FL_OS2) + { + convert_bitmap_swap_os2(boh); + } + else + convert_bitmap_swap_v3(bih); + } + break; +#ifndef WORDS_BIGENDIAN + default: +#endif + case WRC_BO_LITTLE: + if(type & FL_SIZEBE) + { + if(type & FL_V4) + convert_bitmap_swap_v4(b4h); + else if(type & FL_OS2) + { + convert_bitmap_swap_os2(boh); + } + else + convert_bitmap_swap_v3(bih); + } + break; + } + + if(size && (void *)data != (void *)bih) + { + /* We have the fileheader still attached, remove it */ + memmove(data, data+sizeof(BITMAPFILEHEADER), size - sizeof(BITMAPFILEHEADER)); + return sizeof(BITMAPFILEHEADER); + } + return returnSize; +} +#undef FL_SIGBE +#undef FL_SIZEBE +#undef FL_V4 + +/* + * Cursor and icon splitter functions used when allocating + * cursor- and icon-groups. + */ +typedef struct { + language_t lan; + int id; +} id_alloc_t; + +static int get_new_id(id_alloc_t **list, int *n, language_t *lan) +{ + int i; + assert(lan != NULL); + assert(list != NULL); + assert(n != NULL); + + if(!*list) + { + *list = (id_alloc_t *)xmalloc(sizeof(id_alloc_t)); + *n = 1; + (*list)[0].lan = *lan; + (*list)[0].id = 1; + return 1; + } + + for(i = 0; i < *n; i++) + { + if((*list)[i].lan.id == lan->id && (*list)[i].lan.sub == lan->sub) + return ++((*list)[i].id); + } + + *list = (id_alloc_t *)xrealloc(*list, sizeof(id_alloc_t) * (*n+1)); + (*list)[*n].lan = *lan; + (*list)[*n].id = 1; + *n += 1; + return 1; +} + +static int alloc_icon_id(language_t *lan) +{ + static id_alloc_t *idlist = NULL; + static int nid = 0; + + return get_new_id(&idlist, &nid, lan); +} + +static int alloc_cursor_id(language_t *lan) +{ + static id_alloc_t *idlist = NULL; + static int nid = 0; + + return get_new_id(&idlist, &nid, lan); +} + +static void split_icons(raw_data_t *rd, icon_group_t *icog, int *nico) +{ + int cnt; + int i; + icon_t *ico; + icon_t *list = NULL; + icon_header_t *ih = (icon_header_t *)rd->data; + int swap = 0; + + if(ih->type == 1) + swap = 0; + else if(BYTESWAP_WORD(ih->type) == 1) + swap = 1; + else + yyerror("Icon resource data has invalid type id %d", ih->type); + + cnt = swap ? BYTESWAP_WORD(ih->count) : ih->count; + for(i = 0; i < cnt; i++) + { + icon_dir_entry_t ide; + BITMAPINFOHEADER info; + memcpy(&ide, rd->data + sizeof(icon_header_t) + + i*sizeof(icon_dir_entry_t), sizeof(ide)); + + ico = new_icon(); + ico->id = alloc_icon_id(icog->lvc.language); + ico->lvc = icog->lvc; + if(swap) + { + ide.offset = BYTESWAP_DWORD(ide.offset); + ide.ressize= BYTESWAP_DWORD(ide.ressize); + } + if(ide.offset > rd->size + || ide.offset + ide.ressize > rd->size) + yyerror("Icon resource data corrupt"); + ico->width = ide.width; + ico->height = ide.height; + ico->nclr = ide.nclr; + ico->planes = swap ? BYTESWAP_WORD(ide.planes) : ide.planes; + ico->bits = swap ? BYTESWAP_WORD(ide.bits) : ide.bits; + memcpy(&info, rd->data + ide.offset, sizeof(info)); + convert_bitmap((char *) &info, 0); + memcpy(rd->data + ide.offset, &info, sizeof(info)); + + if(!ico->planes) + { + /* Argh! They did not fill out the resdir structure */ + /* The bitmap is in destination byteorder. We want native for our structures */ + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + case WRC_BO_LITTLE: +#else + case WRC_BO_BIG: +#endif + ico->planes = BYTESWAP_WORD(info.biPlanes); + break; + default: + ico->planes = info.biPlanes; + } + } + if(!ico->bits) + { + /* Argh! They did not fill out the resdir structure */ + /* The bitmap is in destination byteorder. We want native for our structures */ + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + case WRC_BO_LITTLE: +#else + case WRC_BO_BIG: +#endif + ico->bits = BYTESWAP_WORD(info.biBitCount); + break; + default: + ico->bits = info.biBitCount; + } + } + ico->data = new_raw_data(); + copy_raw_data(ico->data, rd, ide.offset, ide.ressize); + if(!list) + { + list = ico; + } + else + { + ico->next = list; + list->prev = ico; + list = ico; + } + } + icog->iconlist = list; + *nico = cnt; +} + +static void split_cursors(raw_data_t *rd, cursor_group_t *curg, int *ncur) +{ + int cnt; + int i; + cursor_t *cur; + cursor_t *list = NULL; + cursor_header_t *ch = (cursor_header_t *)rd->data; + int swap = 0; + + if(ch->type == 2) + swap = 0; + else if(BYTESWAP_WORD(ch->type) == 2) + swap = 1; + else + yyerror("Cursor resource data has invalid type id %d", ch->type); + cnt = swap ? BYTESWAP_WORD(ch->count) : ch->count; + for(i = 0; i < cnt; i++) + { + cursor_dir_entry_t cde; + BITMAPINFOHEADER info; + memcpy(&cde, rd->data + sizeof(cursor_header_t) + + i*sizeof(cursor_dir_entry_t), sizeof(cde)); + + cur = new_cursor(); + cur->id = alloc_cursor_id(curg->lvc.language); + cur->lvc = curg->lvc; + if(swap) + { + cde.offset = BYTESWAP_DWORD(cde.offset); + cde.ressize= BYTESWAP_DWORD(cde.ressize); + } + if(cde.offset > rd->size + || cde.offset + cde.ressize > rd->size) + yyerror("Cursor resource data corrupt"); + cur->width = cde.width; + cur->height = cde.height; + cur->nclr = cde.nclr; + memcpy(&info, rd->data + cde.offset, sizeof(info)); + convert_bitmap((char *)&info, 0); + memcpy(rd->data + cde.offset, &info, sizeof(info)); + /* The bitmap is in destination byteorder. We want native for our structures */ + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + case WRC_BO_LITTLE: +#else + case WRC_BO_BIG: +#endif + cur->planes = BYTESWAP_WORD(info.biPlanes); + cur->bits = BYTESWAP_WORD(info.biBitCount); + break; + default: + cur->planes = info.biPlanes; + cur->bits = info.biBitCount; + } + if(!win32 && (cur->planes != 1 || cur->bits != 1)) + yywarning("Win16 cursor contains colors"); + cur->xhot = swap ? BYTESWAP_WORD(cde.xhot) : cde.xhot; + cur->yhot = swap ? BYTESWAP_WORD(cde.yhot) : cde.yhot; + cur->data = new_raw_data(); + copy_raw_data(cur->data, rd, cde.offset, cde.ressize); + if(!list) + { + list = cur; + } + else + { + cur->next = list; + list->prev = cur; + list = cur; + } + } + curg->cursorlist = list; + *ncur = cnt; +} + + +icon_group_t *new_icon_group(raw_data_t *rd, int *memopt) +{ + icon_group_t *icog = (icon_group_t *)xmalloc(sizeof(icon_group_t)); + if(memopt) + { + icog->memopt = *memopt; + free(memopt); + } + else + icog->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE | WRC_MO_DISCARDABLE; + icog->lvc = rd->lvc; + split_icons(rd, icog, &(icog->nicon)); + free(rd->data); + free(rd); + return icog; +} + +cursor_group_t *new_cursor_group(raw_data_t *rd, int *memopt) +{ + cursor_group_t *curg = (cursor_group_t *)xmalloc(sizeof(cursor_group_t)); + if(memopt) + { + curg->memopt = *memopt; + free(memopt); + } + else + curg->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE | WRC_MO_DISCARDABLE; + curg->lvc = rd->lvc; + split_cursors(rd, curg, &(curg->ncursor)); + free(rd->data); + free(rd); + return curg; +} + +/* + * Animated cursors and icons + * + * The format of animated cursors and icons is yet another example + * of bad design by "The Company". The entire RIFF structure is + * flawed by design because it is inconsistent and single minded: + * - some tags have lengths attached, others don't. The use of these + * non-length tags is absolutely unclear; + * - the content of "icon" tags can be both icons and cursors; + * - tags lack proper alignment constraints. It seems that everything + * is 16bit aligned, but I could not find that in any docu. Just be + * prepared to eat anything; + * - there are no strict constraints on tag-nesting and the organization + * is highly illogical; + * + * Anyhow, here is the basic structure: + * "RIFF" { dword taglength } + * "ACON" // What does it do? + * "LIST" { dword taglength } + * "INFO" // And what does this do? + * "INAM" { dword taglength } // Icon/cursor name + * {inam data} + * "IART" { dword taglength } // The artist + * {iart data} + * "fram" // Is followed by "icon"s + * "icon" { dword taglength } // First frame + * { icon/cursor data } + * "icon" { dword taglength } // Second frame + * { icon/cursor data } + * ... // ... + * "anih" { dword taglength } // Header structure + * { aniheader_t structure } + * "rate" { dword taglength } // The rate for each frame + * { `steps' dwords } + * "seq " { dword taglength } // The frame blit-order + * { `steps' dwords } + * + * Tag length are bytelength without the header and length field (i.e. -8). + * The "LIST" tag may occur several times and may encapsulate different + * tags. The `steps' is the number of "icon" tags found (actually the + * number of steps specified in the aniheader_t structure). The "seq "uence + * tag can be ommitted, in which case the sequence is equal to the sequence + * of "icon"s found in the file. Also "rate" may be ommitted, in which case + * the default from the aniheader_t structure is used. + * + * An animated cursor puts `.cur' formatted files into each "icon" tag, + * whereas animated icons contain `.ico' formatted files. + * + * Note about the code: Yes, it can be shorter/compressed. Some tags can be + * dealt with in the same code. However, this version shows what is going on + * and is better debug-able. + */ +static const char riff[4] = "RIFF"; +static const char acon[4] = "ACON"; +static const char list[4] = "LIST"; +static const char info[4] = "INFO"; +static const char inam[4] = "INAM"; +static const char iart[4] = "IART"; +static const char fram[4] = "fram"; +static const char icon[4] = "icon"; +static const char anih[4] = "anih"; +static const char rate[4] = "rate"; +static const char seq[4] = "seq "; + +#define SKIP_TAG(p,size) ((riff_tag_t *)(((char *)p) + (size))) + +#define NEXT_TAG(p) SKIP_TAG(p,(isswapped ? BYTESWAP_DWORD(p->size) : p->size) + sizeof(*p)) + +static void handle_ani_icon(riff_tag_t *rtp, enum res_e type, int isswapped) +{ + cursor_dir_entry_t *cdp; + cursor_header_t *chp; + int count; + int ctype; + int i; + static int once = 0; /* This will trigger only once per file! */ + const char *anistr = type == res_aniico ? "icon" : "cursor"; + /* Notes: + * Both cursor and icon directories are similar + * Both cursor and icon headers are similar + */ + + chp = (cursor_header_t *)(rtp+1); + cdp = (cursor_dir_entry_t *)(chp+1); + count = isswapped ? BYTESWAP_WORD(chp->count) : chp->count; + ctype = isswapped ? BYTESWAP_WORD(chp->type) : chp->type; + chp->reserved = BYTESWAP_WORD(chp->reserved); + chp->type = BYTESWAP_WORD(chp->type); + chp->count = BYTESWAP_WORD(chp->count); + + if(type == res_anicur && ctype != 2 && !once) + { + yywarning("Animated cursor contains invalid \"icon\" tag cursor-file (%d->%s)", + ctype, + ctype == 1 ? "icontype" : "?"); + once++; + } + else if(type == res_aniico && ctype != 1 && !once) + { + yywarning("Animated icon contains invalid \"icon\" tag icon-file (%d->%s)", + ctype, + ctype == 2 ? "cursortype" : "?"); + once++; + } + else if(ctype != 1 && ctype != 2 && !once) + { + yywarning("Animated %s contains invalid \"icon\" tag file-type (%d; neither icon nor cursor)", anistr, ctype); + once++; + } + + for(i = 0; i < count; i++) + { + DWORD ofs = isswapped ? BYTESWAP_DWORD(cdp[i].offset) : cdp[i].offset; + DWORD sze = isswapped ? BYTESWAP_DWORD(cdp[i].ressize) : cdp[i].ressize; + if(ofs > rtp->size || ofs+sze > rtp->size) + yyerror("Animated %s's data corrupt", anistr); + convert_bitmap((char *)chp + ofs, 0); + cdp[i].xhot = BYTESWAP_WORD(cdp->xhot); + cdp[i].yhot = BYTESWAP_WORD(cdp->yhot); + cdp[i].ressize = BYTESWAP_DWORD(cdp->ressize); + cdp[i].offset = BYTESWAP_DWORD(cdp->offset); + } +} + +static void handle_ani_list(riff_tag_t *lst, enum res_e type, int isswapped) +{ + riff_tag_t *rtp = lst+1; /* Skip the "LIST" tag */ + + while((char *)rtp < (char *)lst + lst->size + sizeof(*lst)) + { + if(!memcmp(rtp->tag, info, sizeof(info))) + { + rtp = SKIP_TAG(rtp,4); + } + else if(!memcmp(rtp->tag, inam, sizeof(inam))) + { + /* Ignore the icon/cursor name; its a string */ + rtp = NEXT_TAG(rtp); + } + else if(!memcmp(rtp->tag, iart, sizeof(iart))) + { + /* Ignore the author's name; its a string */ + rtp = NEXT_TAG(rtp); + } + else if(!memcmp(rtp->tag, fram, sizeof(fram))) + { + /* This should be followed by "icon"s, but we + * simply ignore this because it is pure + * non-information. + */ + rtp = SKIP_TAG(rtp,4); + } + else if(!memcmp(rtp->tag, icon, sizeof(icon))) + { + handle_ani_icon(rtp, type, isswapped); + rtp = NEXT_TAG(rtp); + } + else + internal_error(__FILE__, __LINE__, "Unknown tag \"%c%c%c%c\" in RIFF file", + isprint(rtp->tag[0]) ? rtp->tag[0] : '.', + isprint(rtp->tag[1]) ? rtp->tag[1] : '.', + isprint(rtp->tag[2]) ? rtp->tag[2] : '.', + isprint(rtp->tag[3]) ? rtp->tag[3] : '.'); + + /* FIXME: This relies in sizeof(DWORD) == sizeof(pointer_type) */ + if((DWORD)rtp & 1) + rtp = SKIP_TAG(rtp,1); + } +} + +ani_curico_t *new_ani_curico(enum res_e type, raw_data_t *rd, int *memopt) +{ + ani_curico_t *ani = (ani_curico_t *)xmalloc(sizeof(ani_curico_t)); + riff_tag_t *rtp; + int isswapped = 0; + int doswap; + const char *anistr = type == res_aniico ? "icon" : "cursor"; + + assert(!memcmp(rd->data, riff, sizeof(riff))); + assert(type == res_anicur || type == res_aniico); + + rtp = (riff_tag_t *)rd->data; + + if(BYTESWAP_DWORD(rtp->size) + 2*sizeof(DWORD) == rd->size) + isswapped = 1; + else if(rtp->size + 2*sizeof(DWORD) == rd->size) + isswapped = 0; + else + yyerror("Animated %s has an invalid RIFF length", anistr); + + switch(byteorder) + { +#ifdef WORDS_BIGENDIAN + case WRC_BO_LITTLE: +#else + case WRC_BO_BIG: +#endif + doswap = !isswapped; + break; + default: + doswap = isswapped; + } + + /* + * When to swap what: + * isswapped | doswap | + * ----------+--------+--------------------------------- + * 0 | 0 | read native; don't convert + * 1 | 0 | read swapped size; don't convert + * 0 | 1 | read native; convert + * 1 | 1 | read swapped size; convert + * Reading swapped size if necessary to calculate in native + * format. E.g. a little-endian source on a big-endian + * processor. + */ + if(doswap) + { + /* We only go through the RIFF file if we need to swap + * bytes in words/dwords. Else we couldn't care less + * what the file contains. This is consistent with + * MS' rc.exe, which doesn't complain at all, eventhough + * the fileformat might not be entirely correct. + */ + rtp++; /* Skip the "RIFF" tag */ + + while((char *)rtp < (char *)rd->data + rd->size) + { + if(!memcmp(rtp->tag, acon, sizeof(acon))) + { + rtp = SKIP_TAG(rtp,4); + } + else if(!memcmp(rtp->tag, list, sizeof(list))) + { + handle_ani_list(rtp, type, isswapped); + rtp = NEXT_TAG(rtp); + } + else if(!memcmp(rtp->tag, anih, sizeof(anih))) + { + aniheader_t *ahp = (aniheader_t *)((char *)(rtp+1)); + ahp->structsize = BYTESWAP_DWORD(ahp->structsize); + ahp->frames = BYTESWAP_DWORD(ahp->frames); + ahp->steps = BYTESWAP_DWORD(ahp->steps); + ahp->cx = BYTESWAP_DWORD(ahp->cx); + ahp->cy = BYTESWAP_DWORD(ahp->cy); + ahp->bitcount = BYTESWAP_DWORD(ahp->bitcount); + ahp->planes = BYTESWAP_DWORD(ahp->planes); + ahp->rate = BYTESWAP_DWORD(ahp->rate); + ahp->flags = BYTESWAP_DWORD(ahp->flags); + rtp = NEXT_TAG(rtp); + } + else if(!memcmp(rtp->tag, rate, sizeof(rate))) + { + int cnt = rtp->size / sizeof(DWORD); + DWORD *dwp = (DWORD *)(rtp+1); + int i; + for(i = 0; i < cnt; i++) + dwp[i] = BYTESWAP_DWORD(dwp[i]); + rtp = NEXT_TAG(rtp); + } + else if(!memcmp(rtp->tag, seq, sizeof(seq))) + { + int cnt = rtp->size / sizeof(DWORD); + DWORD *dwp = (DWORD *)(rtp+1); + int i; + for(i = 0; i < cnt; i++) + dwp[i] = BYTESWAP_DWORD(dwp[i]); + rtp = NEXT_TAG(rtp); + } + else + internal_error(__FILE__, __LINE__, "Unknown tag \"%c%c%c%c\" in RIFF file", + isprint(rtp->tag[0]) ? rtp->tag[0] : '.', + isprint(rtp->tag[1]) ? rtp->tag[1] : '.', + isprint(rtp->tag[2]) ? rtp->tag[2] : '.', + isprint(rtp->tag[3]) ? rtp->tag[3] : '.'); + + /* FIXME: This relies in sizeof(DWORD) == sizeof(pointer_type) */ + if((DWORD)rtp & 1) + rtp = SKIP_TAG(rtp,1); + } + + /* We must end correctly here */ + if((char *)rtp != (char *)rd->data + rd->size) + yyerror("Animated %s contains invalid field size(s)", anistr); + } + + ani->data = rd; + if(memopt) + { + ani->memopt = *memopt; + free(memopt); + } + else + ani->memopt = WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE; + return ani; +} +#undef NEXT_TAG + +/* Bitmaps */ +bitmap_t *new_bitmap(raw_data_t *rd, int *memopt) +{ + bitmap_t *bmp = (bitmap_t *)xmalloc(sizeof(bitmap_t)); + + bmp->data = rd; + if(memopt) + { + bmp->memopt = *memopt; + free(memopt); + } + else + bmp->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE; + rd->size -= convert_bitmap(rd->data, rd->size); + return bmp; +} + +ver_words_t *new_ver_words(int i) +{ + ver_words_t *w = (ver_words_t *)xmalloc(sizeof(ver_words_t)); + w->words = (WORD *)xmalloc(sizeof(WORD)); + w->words[0] = (WORD)i; + w->nwords = 1; + return w; +} + +ver_words_t *add_ver_words(ver_words_t *w, int i) +{ + w->words = (WORD *)xrealloc(w->words, (w->nwords+1) * sizeof(WORD)); + w->words[w->nwords] = (WORD)i; + w->nwords++; + return w; +} + +#define MSGTAB_BAD_PTR(p, b, l, r) (((l) - ((char *)(p) - (char *)(b))) > (r)) +messagetable_t *new_messagetable(raw_data_t *rd, int *memopt) +{ + messagetable_t *msg = (messagetable_t *)xmalloc(sizeof(messagetable_t)); + msgtab_block_t *mbp; + DWORD nblk; + DWORD i; + WORD lo; + WORD hi; + + msg->data = rd; + if(memopt) + { + msg->memopt = *memopt; + free(memopt); + } + else + msg->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE; + + if(rd->size < sizeof(DWORD)) + yyerror("Invalid messagetable, size too small"); + + nblk = *(DWORD *)rd->data; + lo = WRC_LOWORD(nblk); + hi = WRC_HIWORD(nblk); + + /* FIXME: + * This test will fail for all n*2^16 blocks in the messagetable. + * However, no sane person would want to have so many blocks + * and have a table of megabytes attached. + * So, I will assume that we have less than 2^16 blocks in the table + * and all will just work out fine. Otherwise, we would need to test + * the ID, offset and length (and flag) fields to be very sure. + */ + if(hi && lo) + internal_error(__FILE__, __LINE__, "Messagetable contains more than 65535 blocks; cannot determine endian"); + if(!hi && !lo) + yyerror("Invalid messagetable block count 0"); + + if(!hi && lo) /* Messagetable byteorder == native byteorder */ + { +#ifdef WORDS_BIGENDIAN + if(byteorder != WRC_BO_LITTLE) goto out; +#else + if(byteorder != WRC_BO_BIG) goto out; +#endif + /* Resource byteorder != native byteorder */ + + mbp = (msgtab_block_t *)&(((DWORD *)rd->data)[1]); + if(MSGTAB_BAD_PTR(mbp, rd->data, rd->size, nblk * sizeof(*mbp))) + yyerror("Messagetable's blocks are outside of defined data"); + for(i = 0; i < nblk; i++) + { + msgtab_entry_t *mep, *next_mep; + DWORD id; + + mep = (msgtab_entry_t *)(((char *)rd->data) + mbp[i].offset); + + for(id = mbp[i].idlo; id <= mbp[i].idhi; id++) + { + if(MSGTAB_BAD_PTR(mep, rd->data, rd->size, mep->length)) + yyerror("Messagetable's data for block %d, ID 0x%08lx is outside of defined data", (int)i, id); + if(mep->flags == 1) /* Docu says 'flags == 0x0001' for unicode */ + { + WORD *wp = (WORD *)&mep[1]; + int l = mep->length/2 - 2; /* Length included header */ + int n; + + if(mep->length & 1) + yyerror("Message 0x%08lx is unicode (block %d), but has odd length (%d)", id, (int)i, mep->length); + for(n = 0; n < l; n++) + wp[n] = BYTESWAP_WORD(wp[n]); + + } + next_mep = (msgtab_entry_t *)(((char *)mep) + mep->length); + mep->length = BYTESWAP_WORD(mep->length); + mep->flags = BYTESWAP_WORD(mep->flags); + mep = next_mep; + } + + mbp[i].idlo = BYTESWAP_DWORD(mbp[i].idlo); + mbp[i].idhi = BYTESWAP_DWORD(mbp[i].idhi); + mbp[i].offset = BYTESWAP_DWORD(mbp[i].offset); + } + } + if(hi && !lo) /* Messagetable byteorder != native byteorder */ + { +#ifdef WORDS_BIGENDIAN + if(byteorder == WRC_BO_LITTLE) goto out; +#else + if(byteorder == WRC_BO_BIG) goto out; +#endif + /* Resource byteorder == native byteorder */ + + mbp = (msgtab_block_t *)&(((DWORD *)rd->data)[1]); + nblk = BYTESWAP_DWORD(nblk); + if(MSGTAB_BAD_PTR(mbp, rd->data, rd->size, nblk * sizeof(*mbp))) + yyerror("Messagetable's blocks are outside of defined data"); + for(i = 0; i < nblk; i++) + { + msgtab_entry_t *mep; + DWORD id; + + mbp[i].idlo = BYTESWAP_DWORD(mbp[i].idlo); + mbp[i].idhi = BYTESWAP_DWORD(mbp[i].idhi); + mbp[i].offset = BYTESWAP_DWORD(mbp[i].offset); + mep = (msgtab_entry_t *)(((char *)rd->data) + mbp[i].offset); + + for(id = mbp[i].idlo; id <= mbp[i].idhi; id++) + { + mep->length = BYTESWAP_WORD(mep->length); + mep->flags = BYTESWAP_WORD(mep->flags); + + if(MSGTAB_BAD_PTR(mep, rd->data, rd->size, mep->length)) + yyerror("Messagetable's data for block %d, ID 0x%08lx is outside of defined data", (int)i, id); + if(mep->flags == 1) /* Docu says 'flags == 0x0001' for unicode */ + { + WORD *wp = (WORD *)&mep[1]; + int l = mep->length/2 - 2; /* Length included header */ + int n; + + if(mep->length & 1) + yyerror("Message 0x%08lx is unicode (block %d), but has odd length (%d)", id, (int)i, mep->length); + for(n = 0; n < l; n++) + wp[n] = BYTESWAP_WORD(wp[n]); + + } + mep = (msgtab_entry_t *)(((char *)mep) + mep->length); + } + } + } + + out: + return msg; +} +#undef MSGTAB_BAD_PTR + +void copy_raw_data(raw_data_t *dst, raw_data_t *src, unsigned int offs, int len) +{ + assert(offs <= src->size); + assert(offs + len <= src->size); + if(!dst->data) + { + dst->data = (char *)xmalloc(len); + dst->size = 0; + } + else + dst->data = (char *)xrealloc(dst->data, dst->size + len); + /* dst->size holds the offset to copy to */ + memcpy(dst->data + dst->size, src->data + offs, len); + dst->size += len; +} + +int *new_int(int i) +{ + int *ip = (int *)xmalloc(sizeof(int)); + *ip = i; + return ip; +} + +stringtable_t *new_stringtable(lvc_t *lvc) +{ + stringtable_t *stt = (stringtable_t *)xmalloc(sizeof(stringtable_t)); + + if(lvc) + stt->lvc = *lvc; + + return stt; +} + +toolbar_t *new_toolbar(int button_width, int button_height, toolbar_item_t *items, int nitems) +{ + toolbar_t *tb = (toolbar_t *)xmalloc(sizeof(toolbar_t)); + tb->button_width = button_width; + tb->button_height = button_height; + tb->nitems = nitems; + tb->items = items; + return tb; +} + +dlginit_t *new_dlginit(raw_data_t *rd, int *memopt) +{ + dlginit_t *di = (dlginit_t *)xmalloc(sizeof(dlginit_t)); + di->data = rd; + if(memopt) + { + di->memopt = *memopt; + free(memopt); + } + else + di->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE | WRC_MO_DISCARDABLE; + + return di; +} + +style_pair_t *new_style_pair(style_t *style, style_t *exstyle) +{ + style_pair_t *sp = (style_pair_t *)xmalloc(sizeof(style_pair_t)); + sp->style = style; + sp->exstyle = exstyle; + return sp; +} + +style_t *new_style(DWORD or_mask, DWORD and_mask) +{ + style_t *st = (style_t *)xmalloc(sizeof(style_t)); + st->or_mask = or_mask; + st->and_mask = and_mask; + return st; +} diff --git a/reactos/tools/wrc/newstruc.h b/reactos/tools/wrc/newstruc.h new file mode 100644 index 00000000000..a0a624ddf3a --- /dev/null +++ b/reactos/tools/wrc/newstruc.h @@ -0,0 +1,85 @@ +/* + * Create dynamic new structures of various types + * + * Copyright 1998 Bertho A. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WRC_NEWSTRUC_H +#define __WRC_NEWSTRUC_H + +#include "wrctypes.h" + +#define __NEW_STRUCT_FUNC(p) \ + p##_t *new_##p(void)\ + {\ + return (p##_t *)xmalloc(sizeof(p##_t));\ + } + +#define __NEW_STRUCT_PROTO(p) p##_t *new_##p(void) + +__NEW_STRUCT_PROTO(dialog); +__NEW_STRUCT_PROTO(dialogex); +__NEW_STRUCT_PROTO(name_id); +__NEW_STRUCT_PROTO(menu); +__NEW_STRUCT_PROTO(menuex); +__NEW_STRUCT_PROTO(menu_item); +__NEW_STRUCT_PROTO(menuex_item); +__NEW_STRUCT_PROTO(control); +__NEW_STRUCT_PROTO(icon); +__NEW_STRUCT_PROTO(cursor); +__NEW_STRUCT_PROTO(versioninfo); +__NEW_STRUCT_PROTO(ver_value); +__NEW_STRUCT_PROTO(ver_block); +__NEW_STRUCT_PROTO(stt_entry); +__NEW_STRUCT_PROTO(accelerator); +__NEW_STRUCT_PROTO(event); +__NEW_STRUCT_PROTO(raw_data); +__NEW_STRUCT_PROTO(lvc); +__NEW_STRUCT_PROTO(res_count); +__NEW_STRUCT_PROTO(string); +__NEW_STRUCT_PROTO(toolbar_item); +__NEW_STRUCT_PROTO(ani_any); + +resource_t *new_resource(enum res_e t, void *res, int memopt, language_t *lan); +version_t *new_version(DWORD v); +characts_t *new_characts(DWORD c); +language_t *new_language(int id, int sub); +language_t *dup_language(language_t *l); +version_t *dup_version(version_t *v); +characts_t *dup_characts(characts_t *c); +rcdata_t *new_rcdata(raw_data_t *rd, int *memopt); +font_id_t *new_font_id(int size, string_t *face, int weight, int italic); +user_t *new_user(name_id_t *type, raw_data_t *rd, int *memopt); +font_t *new_font(raw_data_t *rd, int *memopt); +fontdir_t *new_fontdir(raw_data_t *rd, int *memopt); +icon_group_t *new_icon_group(raw_data_t *rd, int *memopt); +cursor_group_t *new_cursor_group(raw_data_t *rd, int *memopt); +ani_curico_t *new_ani_curico(enum res_e type, raw_data_t *rd, int *memopt); +bitmap_t *new_bitmap(raw_data_t *rd, int *memopt); +ver_words_t *new_ver_words(int i); +ver_words_t *add_ver_words(ver_words_t *w, int i); +messagetable_t *new_messagetable(raw_data_t *rd, int *memopt); +dlginit_t *new_dlginit(raw_data_t *rd, int *memopt); +void copy_raw_data(raw_data_t *dst, raw_data_t *src, unsigned int offs, int len); +int *new_int(int i); +stringtable_t *new_stringtable(lvc_t *lvc); +toolbar_t *new_toolbar(int button_width, int button_Height, toolbar_item_t *items, int nitems); +style_pair_t *new_style_pair(style_t *style, style_t *exstyle); +style_t *new_style(DWORD or_mask, DWORD and_mask); + +#endif + diff --git a/reactos/tools/wrc/parser.h b/reactos/tools/wrc/parser.h new file mode 100644 index 00000000000..63116383bcd --- /dev/null +++ b/reactos/tools/wrc/parser.h @@ -0,0 +1,39 @@ +/* + * Copyright 1998 Bertho A. Stultiens (BS) + * + * Shared things between parser.l and parser.y and some others + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WRC_PARSER_H +#define __WRC_PARSER_H + +/* From parser.y */ +extern int yydebug; +extern int want_nl; /* Set when getting line-numers */ +extern int want_id; /* Set when getting the resource name */ + +int yyparse(void); + +/* From parser.l */ +extern FILE *yyin; +extern char *yytext; +extern int yy_flex_debug; + +int yylex(void); + +#endif + diff --git a/reactos/tools/wrc/parser.l b/reactos/tools/wrc/parser.l new file mode 100644 index 00000000000..2e04bc1f521 --- /dev/null +++ b/reactos/tools/wrc/parser.l @@ -0,0 +1,682 @@ +/* -*-C-*- + * + * Copyright 1998-2000 Bertho A. Stultiens (BS) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * History: + * 21-May-2000 BS - Fixed the ident requirement of resource names + * which can be keywords. + * 30-Apr-2000 BS - Reintegration into the wine-tree + * 11-Jan-2000 BS - Very drastic cleanup because we don't have a + * preprocessor in here anymore. + * 02-Jan-2000 BS - Removed the preprocessor code + * 23-Dec-1999 BS - Removed the copyright for Martin von Loewis. + * There is really nothing left of his code in + * this parser. + * 20-Jun-1998 BS - Changed the filename conversion. Filenames are + * case-sensitive inder *nix, but not under dos. + * default behaviour is to convert to lower case. + * - All backslashes are converted to forward and + * both single and double slash is recognized as + * MS/Borland does. + * - Fixed a bug in 'yywf' case that prevented + * double quoted names to be scanned propperly. + * + * 19-May-1998 BS - Started to build a preprocessor. + * - Changed keyword processing completely to + * table-lookups. + * + * 20-Apr-1998 BS - Added ';' comment stripping + * + * 17-Apr-1998 BS - Made the win32 keywords optional when compiling in + * 16bit mode + * + * 15-Apr-1998 BS - Changed string handling to include escapes + * - Added unicode string handling (no codepage + * translation though). + * - 'Borrowed' the main idea of string scanning from + * the flex manual pages. + * - Added conditional handling of scanning depending + * on the state of the parser. This was mainly required + * to distinguish a file to load or raw data that + * follows. MS's definition of filenames is rather + * complex... It can be unquoted or double quoted. If + * double quoted, then the '\\' char is not automatically + * escaped according to Borland's rc compiler, but it + * accepts both "\\path\\file.rc" and "\path\file.rc". + * This makes life very hard! I go for the escaped + * version, as this seems to be the documented way... + * - Single quoted strings are now parsed and converted + * here. + * - Added comment stripping. The implementation is + * 'borrowed' from the flex manpages. + * - Rebuild string processing so that it may contain + * escaped '\0'. + */ + +/* Exclusive string handling */ +%x yystr +/* Exclusive unicode string handling */ +%x yylstr +/* Exclusive rcdata single quoted data handling */ +%x yyrcd +/* Exclusive comment eating... */ +%x comment +/* Set when stripping c-junk */ +%x pp_stripe +%x pp_strips +%x pp_stripp +%x pp_stripp_final +/* Set when scanning #line style directives */ +%x pp_line +/* Set when scanning #pragma */ +%x pp_pragma +%x pp_code_page + +%option stack +%option never-interactive + +/* Some shortcut definitions */ +ws [ \f\t\r] +cident [a-zA-Z_][0-9a-zA-Z_]* + +%{ + +/*#define LEX_DEBUG*/ + +#include +#include +#include +#include +#include + +#include "wine/unicode.h" +#include "wrc.h" +#include "utils.h" +#include "parser.h" +#include "newstruc.h" + +#include "y.tab.h" + +#define YY_USE_PROTOS +#define YY_NO_UNPUT +#define YY_NO_TOP_STATE + +/* Always update the current character position within a line */ +#define YY_USER_ACTION char_number+=yyleng; wanted_id = want_id; want_id = 0; + +static void addcchar(char c); +static void addwchar(WCHAR s); +static string_t *get_buffered_cstring(void); +static string_t *get_buffered_wstring(void); +static string_t *make_string(char *s); + +static char *cbuffer; /* Buffers for string collection */ +static int cbufidx; +static int cbufalloc = 0; +static WCHAR *wbuffer; +static int wbufidx; +static int wbufalloc = 0; +static int stripslevel = 0; /* Count {} during pp_strips/pp_stripe mode */ +static int stripplevel = 0; /* Count () during pp_strips mode */ +static int cjunk_tagline; /* Where did we start stripping (helps error tracking) */ + +static int current_codepage = -1; /* use language default */ + +/* + * This one is a bit tricky. + * We set 'want_id' in the parser to get the first + * identifier we get across in the scanner, but we + * also want it to be reset at nearly any token we + * see. Exceptions are: + * - newlines + * - comments + * - whitespace + * + * The scanner will automatically reset 'want_id' + * after *each* scanner reduction and puts is value + * into the var below. In this way we can see the + * state after the YY_RULE_SETUP (i.e. the user action; + * see above) and don't have to worry too much when + * it needs to be reset. + */ +static int wanted_id = 0; +static int save_wanted_id; /* To save across comment reductions */ + +struct keyword { + const char *keyword; + int token; + int isextension; + int needcase; + int alwayskw; +}; + +static struct keyword keywords[] = { + { "ACCELERATORS", tACCELERATORS, 0, 0, 0}, + { "ALT", tALT, 0, 0, 0}, + { "ASCII", tASCII, 0, 0, 0}, + { "AUTO3STATE", tAUTO3STATE, 1, 0, 0}, + { "AUTOCHECKBOX", tAUTOCHECKBOX, 1, 0, 0}, + { "AUTORADIOBUTTON", tAUTORADIOBUTTON, 1, 0, 0}, + { "BEGIN", tBEGIN, 0, 0, 0}, + { "BITMAP", tBITMAP, 0, 0, 0}, + { "BLOCK", tBLOCK, 0, 0, 0}, + { "BUTTON", tBUTTON, 1, 0, 0}, + { "CAPTION", tCAPTION, 0, 0, 0}, + { "CHARACTERISTICS", tCHARACTERISTICS, 1, 0, 0}, + { "CHECKBOX", tCHECKBOX, 0, 0, 0}, + { "CHECKED", tCHECKED, 0, 0, 0}, + { "CLASS", tCLASS, 0, 0, 0}, + { "COMBOBOX", tCOMBOBOX, 0, 0, 0}, + { "CONTROL", tCONTROL, 0, 0, 0}, + { "CTEXT", tCTEXT, 0, 0, 0}, + { "CURSOR", tCURSOR, 0, 0, 0}, + { "DEFPUSHBUTTON", tDEFPUSHBUTTON, 0, 0, 0}, + { "DIALOG", tDIALOG, 0, 0, 0}, + { "DIALOGEX", tDIALOGEX, 1, 0, 0}, + { "DISCARDABLE", tDISCARDABLE, 0, 0, 0}, + { "DLGINIT", tDLGINIT, 0, 0, 0}, + { "EDITTEXT", tEDITTEXT, 0, 0, 0}, + { "END", tEND, 0, 0, 0}, + { "EXSTYLE", tEXSTYLE, 0, 0, 0}, + { "FILEFLAGS", tFILEFLAGS, 0, 0, 0}, + { "FILEFLAGSMASK", tFILEFLAGSMASK, 0, 0, 0}, + { "FILEOS", tFILEOS, 0, 0, 0}, + { "FILESUBTYPE", tFILESUBTYPE, 0, 0, 0}, + { "FILETYPE", tFILETYPE, 0, 0, 0}, + { "FILEVERSION", tFILEVERSION, 0, 0, 0}, + { "FIXED", tFIXED, 0, 0, 0}, + { "FONT", tFONT, 0, 0, 0}, + { "FONTDIR", tFONTDIR, 0, 0, 0}, /* This is a Borland BRC extension */ + { "GRAYED", tGRAYED, 0, 0, 0}, + { "GROUPBOX", tGROUPBOX, 0, 0, 0}, + { "HELP", tHELP, 0, 0, 0}, + { "ICON", tICON, 0, 0, 0}, + { "IMPURE", tIMPURE, 0, 0, 0}, + { "INACTIVE", tINACTIVE, 0, 0, 0}, + { "LANGUAGE", tLANGUAGE, 1, 0, 1}, + { "LISTBOX", tLISTBOX, 0, 0, 0}, + { "LOADONCALL", tLOADONCALL, 0, 0, 0}, + { "LTEXT", tLTEXT, 0, 0, 0}, + { "MENU", tMENU, 0, 0, 0}, + { "MENUBARBREAK", tMENUBARBREAK, 0, 0, 0}, + { "MENUBREAK", tMENUBREAK, 0, 0, 0}, + { "MENUEX", tMENUEX, 1, 0, 0}, + { "MENUITEM", tMENUITEM, 0, 0, 0}, + { "MESSAGETABLE", tMESSAGETABLE, 1, 0, 0}, + { "MOVEABLE", tMOVEABLE, 0, 0, 0}, + { "NOINVERT", tNOINVERT, 0, 0, 0}, + { "NOT", tNOT, 0, 0, 0}, + { "POPUP", tPOPUP, 0, 0, 0}, + { "PRELOAD", tPRELOAD, 0, 0, 0}, + { "PRODUCTVERSION", tPRODUCTVERSION, 0, 0, 0}, + { "PURE", tPURE, 0, 0, 0}, + { "PUSHBUTTON", tPUSHBUTTON, 0, 0, 0}, + { "RADIOBUTTON", tRADIOBUTTON, 0, 0, 0}, + { "RCDATA", tRCDATA, 0, 0, 0}, + { "RTEXT", tRTEXT, 0, 0, 0}, + { "SCROLLBAR", tSCROLLBAR, 0, 0, 0}, + { "SEPARATOR", tSEPARATOR, 0, 0, 0}, + { "SHIFT", tSHIFT, 0, 0, 0}, + { "STATE3", tSTATE3, 1, 0, 0}, + { "STRING", tSTRING, 0, 0, 0}, + { "STRINGTABLE", tSTRINGTABLE, 0, 0, 1}, + { "STYLE", tSTYLE, 0, 0, 0}, + { "TOOLBAR", tTOOLBAR, 1, 0, 0}, + { "VALUE", tVALUE, 0, 0, 0}, + { "VERSION", tVERSION, 1, 0, 0}, + { "VERSIONINFO", tVERSIONINFO, 0, 0, 0}, + { "VIRTKEY", tVIRTKEY, 0, 0, 0} +}; + +#define NKEYWORDS (sizeof(keywords)/sizeof(keywords[0])) +#define KWP(p) ((const struct keyword *)(p)) +static int kw_cmp_func(const void *s1, const void *s2) +{ + int ret; + ret = strcasecmp(KWP(s1)->keyword, KWP(s2)->keyword); + if(!ret && (KWP(s1)->needcase || KWP(s2)->needcase)) + return strcmp(KWP(s1)->keyword, KWP(s2)->keyword); + else + return ret; +} + +#define KW_BSEARCH +#define DO_SORT +static struct keyword *iskeyword(char *kw) +{ + struct keyword *kwp; + struct keyword key; + key.keyword = kw; + key.needcase = 0; +#ifdef DO_SORT + { + /* Make sure that it is sorted for bsearsh */ + static int sorted = 0; + if(!sorted) + { + qsort(keywords, NKEYWORDS, sizeof(keywords[0]), kw_cmp_func); + sorted = 1; + } + } +#endif +#ifdef KW_BSEARCH + kwp = bsearch(&key, keywords, NKEYWORDS, sizeof(keywords[0]), kw_cmp_func); +#else + { + int i; + for(i = 0; i < NKEYWORDS; i++) + { + if(!kw_cmp_func(&key, &keywords[i])) + break; + } + if(i < NKEYWORDS) + kwp = &keywords[i]; + else + kwp = NULL; + } +#endif + + if(kwp == NULL || (kwp->isextension && !extensions)) + return NULL; + else + return kwp; +} + +%} + +/* + ************************************************************************** + * The flexer starts here + ************************************************************************** + */ +%% + /* + * Catch the GCC-style line statements here and parse them. + * This has the advantage that you can #include at any + * stage in the resource file. + * The preprocessor generates line directives in the format: + * # "filename" + * + * Codes can be a sequence of: + * - 1 start of new file + * - 2 returning to previous + * - 3 system header + * - 4 interpret as C-code + * + * 4 is not used and 1 mutually excludes 2 + * Anyhow, we are not really interested in these at all + * because we only want to know the linenumber and + * filename. + */ +^{ws}*\#{ws}*pragma{ws}+ yy_push_state(pp_pragma); +^{ws}*\#{ws}* yy_push_state(pp_line); +[^\n]* { + int lineno; + char *cptr; + char *fname; + yy_pop_state(); + lineno = (int)strtol(yytext, &cptr, 10); + if(!lineno) + yyerror("Malformed '#...' line-directive; invalid linenumber"); + fname = strchr(cptr, '"'); + if(!fname) + yyerror("Malformed '#...' line-directive; missing filename"); + fname++; + cptr = strchr(fname, '"'); + if(!cptr) + yyerror("Malformed '#...' line-directive; missing terminating \""); + *cptr = '\0'; + line_number = lineno - 1; /* We didn't read the newline */ + input_name = xstrdup(fname); + } + +code_page[^\n]* yyless(9); yy_pop_state(); yy_push_state(pp_code_page); +[^\n]* yy_pop_state(); if (pedantic) yywarning("Unrecognized #pragma directive '%s'",yytext); + +\({ws}*default{ws}*\)[^\n]* current_codepage = -1; yy_pop_state(); +\({ws}*[0-9]+{ws}*\)[^\n]* { + char *p = yytext; + yy_pop_state(); + while (*p < '0' || *p > '9') p++; + current_codepage = strtol( p, NULL, 10 ); + if (current_codepage && !wine_cp_get_table( current_codepage )) + { + yyerror("Codepage %d not supported", current_codepage); + current_codepage = 0; + } + } +[^\n]* yy_pop_state(); yyerror("Malformed #pragma code_page directive"); + + /* + * Strip everything until a ';' taking + * into account braces {} for structures, + * classes and enums. + */ +\{ stripslevel++; +\} stripslevel--; +; if(!stripslevel) yy_pop_state(); +\/[^*\n] ; /* To catch comments */ +[^\{\};\n#/]* ; /* Ignore rest */ +\n line_number++; char_number = 1; + +\( stripplevel++; +\) { + stripplevel--; + if(!stripplevel) + { + yy_pop_state(); + yy_push_state(pp_stripp_final); + } + } +\/[^*\n] ; /* To catch comments */ +[^\(\);\n#/]* ; /* Ignore rest */ +\n line_number++; char_number = 1; + +{ws}* ; /* Ignore */ +; yy_pop_state(); /* Kill the semicolon */ +\n line_number++; char_number = 1; yy_pop_state(); +. yyless(0); yy_pop_state(); + +\{ return tBEGIN; +\} return tEND; + +[0-9]+[lL]? { yylval.num = strtoul(yytext, 0, 10); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; } +0[xX][0-9A-Fa-f]+[lL]? { yylval.num = strtoul(yytext, 0, 16); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; } +0[oO][0-7]+[lL]? { yylval.num = strtoul(yytext+2, 0, 8); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; } + + /* + * The next two rules scan identifiers and filenames. + * This is achieved by using the priority ruling + * of the scanner where a '.' is valid in a filename + * and *only* in a filename. In this case, the second + * rule will be reduced because it is longer. + */ +[A-Za-z_0-9]+ { + struct keyword *tok = iskeyword(yytext); + + if(tok) + { + if(wanted_id && !tok->alwayskw) + { + yylval.str = make_string(yytext); + return tIDENT; + } + else + return tok->token; + } + else + { + yylval.str = make_string(yytext); + return tIDENT; + } + } +[A-Za-z_0-9./\\]+ yylval.str = make_string(yytext); return tFILENAME; + + /* + * Wide string scanning + */ +L\" { + yy_push_state(yylstr); + wbufidx = 0; + if(!win32) + yywarning("16bit resource contains unicode strings\n"); + } +\"{ws}+ | +\" { + yy_pop_state(); + yylval.str = get_buffered_wstring(); + return tSTRING; + } +\\[0-7]{1,6} { /* octal escape sequence */ + unsigned int result; + result = strtoul(yytext+1, 0, 8); + if ( result > 0xffff ) + yyerror("Character constant out of range"); + addwchar((WCHAR)result); + } +\\x[0-9a-fA-F]{4} { /* hex escape sequence */ + unsigned int result; + result = strtoul(yytext+2, 0, 16); + addwchar((WCHAR)result); + } +\\x[0-9a-fA-F]{1,3} { yyerror("Invalid hex escape sequence '%s'", yytext); } + +\\[0-9]+ yyerror("Bad escape sequence"); +\\\n{ws}* line_number++; char_number = 1; /* backslash at EOL continues string after leading whitespace on next line */ +\\a addwchar('\a'); +\\b addwchar('\b'); +\\f addwchar('\f'); +\\n addwchar('\n'); +\\r addwchar('\r'); +\\t addwchar('\t'); +\\v addwchar('\v'); +\\. addwchar(yytext[1]); +\\\r\n addwchar(yytext[2]); line_number++; char_number = 1; +\"\" addwchar('\"'); /* "bla""bla" -> "bla\"bla" */ +\\\"\" addwchar('\"'); /* "bla\""bla" -> "bla\"bla" */ +\"{ws}+\" ; /* "bla" "bla" -> "blabla" */ +[^\\\n\"]+ { + char *yptr = yytext; + while(*yptr) /* FIXME: codepage translation */ + addwchar(*yptr++ & 0xff); + } +\n yyerror("Unterminated string"); + + /* + * Normal string scanning + */ +\" yy_push_state(yystr); cbufidx = 0; +\"{ws}+ | +\" { + yy_pop_state(); + yylval.str = get_buffered_cstring(); + return tSTRING; + } +\\[0-7]{1,3} { /* octal escape sequence */ + int result; + result = strtol(yytext+1, 0, 8); + if ( result > 0xff ) + yyerror("Character constant out of range"); + addcchar((char)result); + } +\\x[0-9a-fA-F]{2} { /* hex escape sequence */ + int result; + result = strtol(yytext+2, 0, 16); + addcchar((char)result); + } +\\x[0-9a-fA-F] { yyerror("Invalid hex escape sequence '%s'", yytext); } + +\\[0-9]+ yyerror("Bad escape sequence"); +\\\n{ws}* line_number++; char_number = 1; /* backslash at EOL continues string after leading whitespace on next line */ +\\a addcchar('\a'); +\\b addcchar('\b'); +\\f addcchar('\f'); +\\n addcchar('\n'); +\\r addcchar('\r'); +\\t addcchar('\t'); +\\v addcchar('\v'); +\\. addcchar(yytext[1]); +\\\r\n addcchar(yytext[2]); line_number++; char_number = 1; +[^\\\n\"]+ { + char *yptr = yytext; + while(*yptr) + addcchar(*yptr++); + } +\"\" addcchar('\"'); /* "bla""bla" -> "bla\"bla" */ +\\\"\" addcchar('\"'); /* "bla\""bla" -> "bla\"bla" */ +\"{ws}+\" ; /* "bla" "bla" -> "blabla" */ +\n yyerror("Unterminated string"); + + /* + * Raw data scanning + */ +\' yy_push_state(yyrcd); cbufidx = 0; +\' { + yy_pop_state(); + yylval.raw = new_raw_data(); + yylval.raw->size = cbufidx; + yylval.raw->data = xmalloc(yylval.raw->size); + memcpy(yylval.raw->data, cbuffer, yylval.raw->size); + return tRAWDATA; + } +[0-9a-fA-F]{2} { + int result; + result = strtol(yytext, 0, 16); + addcchar((char)result); + } +{ws}+ ; /* Ignore space */ +\n line_number++; char_number = 1; +. yyerror("Malformed data-line"); + + /* + * Comment stripping + * Should never occur after preprocessing + */ +"/*" { + yy_push_state(comment); + save_wanted_id = wanted_id; + if(!no_preprocess) + yywarning("Found comments after preprocessing, please report"); + } +[^*\n]* ; +"*"+[^*/\n]* ; +\n line_number++; char_number = 1; +"*"+"/" yy_pop_state(); want_id = save_wanted_id; + +;[^\n]* want_id = wanted_id; /* not really comment, but left-over c-junk */ +"//"[^\n]* want_id = wanted_id; if(!no_preprocess) yywarning("Found comments after preprocessing, please report"); + +\n { + want_id = wanted_id; + line_number++; + char_number = 1; + if(want_nl) + { + want_nl = 0; + return tNL; + } + } +{ws}+ want_id = wanted_id; /* Eat whitespace */ + +. return yytext[0]; + +<> { + if(YY_START == pp_strips || YY_START == pp_stripe || YY_START == pp_stripp || YY_START == pp_stripp_final) + yyerror("Unexpected end of file during c-junk scanning (started at %d)", cjunk_tagline); + else + yyterminate(); + } + +<*>.|\n { + /* Catch all rule to find any unmatched text */ + if(*yytext == '\n') + { + line_number++; + char_number = 1; + } + yywarning("Unmatched text '%c' (0x%02x) YY_START=%d stripslevel=%d", + isprint(*yytext & 0xff) ? *yytext : '.', *yytext, YY_START,stripslevel); + } + +%% + +#ifndef yywrap +int yywrap(void) +{ +#if 0 + if(bufferstackidx > 0) + { + return 0; + } +#endif + return 1; +} +#endif + +/* These dup functions copy the enclosed '\0' from + * the resource string. + */ +static void addcchar(char c) +{ + if(cbufidx >= cbufalloc) + { + cbufalloc += 1024; + cbuffer = xrealloc(cbuffer, cbufalloc * sizeof(cbuffer[0])); + if(cbufalloc > 65536) + yywarning("Reallocating string buffer larger than 64kB"); + } + cbuffer[cbufidx++] = c; +} + +static void addwchar(WCHAR s) +{ + if(wbufidx >= wbufalloc) + { + wbufalloc += 1024; + wbuffer = xrealloc(wbuffer, wbufalloc * sizeof(wbuffer[0])); + if(wbufalloc > 65536) + yywarning("Reallocating wide string buffer larger than 64kB"); + } + wbuffer[wbufidx++] = s; +} + +static string_t *get_buffered_cstring(void) +{ + string_t *str = new_string(); + + str->size = cbufidx; + str->type = str_char; + str->str.cstr = (char *)xmalloc(cbufidx+1); + memcpy(str->str.cstr, cbuffer, cbufidx); + str->str.cstr[cbufidx] = '\0'; + + if (!current_codepage || current_codepage == -1 || !win32) /* store as ANSI string */ + { + if (!current_codepage) yyerror("Codepage set to Unicode only, cannot use ASCII string here"); + return str; + } + else /* convert to Unicode before storing */ + { + string_t *str_w = convert_string( str, str_unicode, current_codepage ); + if (!check_unicode_conversion( str, str_w, current_codepage )) + yyerror("String %s does not convert identically to Unicode and back in codepage %d. " + "Try using a Unicode string instead.", str->str.cstr, current_codepage ); + free_string( str ); + return str_w; + } +} + +static string_t *get_buffered_wstring(void) +{ + string_t *str = new_string(); + str->size = wbufidx; + str->type = str_unicode; + str->str.wstr = xmalloc((wbufidx+1)*sizeof(WCHAR)); + memcpy(str->str.wstr, wbuffer, wbufidx*sizeof(WCHAR)); + str->str.wstr[wbufidx] = 0; + return str; +} + +static string_t *make_string(char *s) +{ + string_t *str = new_string(); + str->size = strlen(s); + str->type = str_char; + str->str.cstr = (char *)xmalloc(str->size+1); + memcpy(str->str.cstr, s, str->size+1); + return str; +} diff --git a/reactos/tools/wrc/parser.y b/reactos/tools/wrc/parser.y new file mode 100644 index 00000000000..ab11dcdb8e4 --- /dev/null +++ b/reactos/tools/wrc/parser.y @@ -0,0 +1,3027 @@ +%{ +/* + * Copyright 1994 Martin von Loewis + * Copyright 1998-2000 Bertho A. Stultiens (BS) + * 1999 Juergen Schmied (JS) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * History: + * 24-Jul-2000 BS - Made a fix for broken Berkeley yacc on + * non-terminals (see cjunk rule). + * 21-May-2000 BS - Partial implementation of font resources. + * - Corrected language propagation for binary + * resources such as bitmaps, icons, cursors, + * userres and rcdata. The language is now + * correct in .res files. + * - Fixed reading the resource name as ident, + * so that it may overlap keywords. + * 20-May-2000 BS - Implemented animated cursors and icons + * resource types. + * 30-Apr-2000 BS - Reintegration into the wine-tree + * 14-Jan-2000 BS - Redid the usertype resources so that they + * are compatible. + * 02-Jan-2000 BS - Removed the preprocessor from the grammar + * except for the # command (line numbers). + * + * 06-Nov-1999 JS - see CHANGES + * + * 29-Dec-1998 AdH - Grammar and function extensions. + * grammar: TOOLBAR resources, Named ICONs in + * DIALOGS + * functions: semantic actions for the grammar + * changes, resource files can now be anywhere + * on the include path instead of just in the + * current directory + * + * 20-Jun-1998 BS - Fixed a bug in load_file() where the name was not + * printed out correctly. + * + * 17-Jun-1998 BS - Fixed a bug in CLASS statement parsing which should + * also accept a tSTRING as argument. + * + * 25-May-1998 BS - Found out that I need to support language, version + * and characteristics in inline resources (bitmap, + * cursor, etc) but they can also be specified with + * a filename. This renders my filename-scanning scheme + * worthless. Need to build newline parsing to solve + * this one. + * It will come with version 1.1.0 (sigh). + * + * 19-May-1998 BS - Started to build a builtin preprocessor + * + * 30-Apr-1998 BS - Redid the stringtable parsing/handling. My previous + * ideas had some serious flaws. + * + * 27-Apr-1998 BS - Removed a lot of dead comments and put it in a doc + * file. + * + * 21-Apr-1998 BS - Added correct behavior for cursors and icons. + * - This file is growing too big. It is time to strip + * things and put it in a support file. + * + * 19-Apr-1998 BS - Tagged the stringtable resource so that only one + * resource will be created. This because the table + * has a different layout than other resources. The + * table has to be sorted, and divided into smaller + * resource entries (see comment in source). + * + * 17-Apr-1998 BS - Almost all strings, including identifiers, are parsed + * as string_t which include unicode strings upon + * input. + * - Parser now emits a warning when compiling win32 + * extensions in win16 mode. + * + * 16-Apr-1998 BS - Raw data elements are now *optionally* separated + * by commas. Read the comments in file sq2dq.l. + * - FIXME: there are instances in the source that rely + * on the fact that int==32bit and pointers are int size. + * - Fixed the conflict in menuex by changing a rule + * back into right recursion. See note in source. + * - UserType resources cannot have an expression as its + * typeclass. See note in source. + * + * 15-Apr-1998 BS - Changed all right recursion into left recursion to + * get reduction of the parsestack. + * This also helps communication between bison and flex. + * Main advantage is that the Empty rule gets reduced + * first, which is used to allocate/link things. + * It also added a shift/reduce conflict in the menuex + * handling, due to expression/option possibility, + * although not serious. + * + * 14-Apr-1998 BS - Redone almost the entire parser. We're not talking + * about making it more efficient, but readable (for me) + * and slightly easier to expand/change. + * This is done primarily by using more reduce states + * with many (intuitive) types for the various resource + * statements. + * - Added expression handling for all resources where a + * number is accepted (not only for win32). Also added + * multiply and division (not MS compatible, but handy). + * Unary minus introduced a shift/reduce conflict, but + * it is not serious. + * + * 13-Apr-1998 BS - Reordered a lot of things + * - Made the source more readable + * - Added Win32 resource definitions + * - Corrected syntax problems with an old yacc (;) + * - Added extra comment about grammar + */ +#include "config.h" + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_ALLOCA_H +#include +#endif + +#include "wrc.h" +#include "utils.h" +#include "newstruc.h" +#include "dumpres.h" +#include "wine/wpp.h" +#include "wine/unicode.h" +#include "parser.h" +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" + +#if defined(YYBYACC) + /* Berkeley yacc (byacc) doesn't seem to know about these */ + /* Some *BSD supplied versions do define these though */ +# ifndef YYEMPTY +# define YYEMPTY (-1) /* Empty lookahead value of yychar */ +# endif +# ifndef YYLEX +# define YYLEX yylex() +# endif + +#elif defined(YYBISON) + /* Bison was used for original development */ + /* #define YYEMPTY -2 */ + /* #define YYLEX yylex() */ + +#else + /* No yacc we know yet */ +# if !defined(YYEMPTY) || !defined(YYLEX) +# error Yacc version/type unknown. This version needs to be verified for settings of YYEMPTY and YYLEX. +# elif defined(__GNUC__) /* gcc defines the #warning directive */ +# warning Yacc version/type unknown. It defines YYEMPTY and YYLEX, but is not tested + /* #else we just take a chance that it works... */ +# endif +#endif + +int want_nl = 0; /* Signal flex that we need the next newline */ +int want_id = 0; /* Signal flex that we need the next identifier */ +stringtable_t *tagstt; /* Stringtable tag. + * It is set while parsing a stringtable to one of + * the stringtables in the sttres list or a new one + * if the language was not parsed before. + */ +stringtable_t *sttres; /* Stringtable resources. This holds the list of + * stringtables with different lanuages + */ +static int dont_want_id = 0; /* See language parsing for details */ + +/* Set to the current options of the currently scanning stringtable */ +static int *tagstt_memopt; +static characts_t *tagstt_characts; +static version_t *tagstt_version; + +static const char riff[4] = "RIFF"; /* RIFF file magic for animated cursor/icon */ + +/* Prototypes of here defined functions */ +static event_t *get_event_head(event_t *p); +static control_t *get_control_head(control_t *p); +static ver_value_t *get_ver_value_head(ver_value_t *p); +static ver_block_t *get_ver_block_head(ver_block_t *p); +static resource_t *get_resource_head(resource_t *p); +static menuex_item_t *get_itemex_head(menuex_item_t *p); +static menu_item_t *get_item_head(menu_item_t *p); +static raw_data_t *merge_raw_data_str(raw_data_t *r1, string_t *str); +static raw_data_t *merge_raw_data_int(raw_data_t *r1, int i); +static raw_data_t *merge_raw_data_long(raw_data_t *r1, int i); +static raw_data_t *merge_raw_data(raw_data_t *r1, raw_data_t *r2); +static raw_data_t *str2raw_data(string_t *str); +static raw_data_t *int2raw_data(int i); +static raw_data_t *long2raw_data(int i); +static raw_data_t *load_file(string_t *name, language_t *lang); +static itemex_opt_t *new_itemex_opt(int id, int type, int state, int helpid); +static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev); +static event_t *add_event(int key, int id, int flags, event_t *prev); +static dialogex_t *dialogex_version(version_t *v, dialogex_t *dlg); +static dialogex_t *dialogex_characteristics(characts_t *c, dialogex_t *dlg); +static dialogex_t *dialogex_language(language_t *l, dialogex_t *dlg); +static dialogex_t *dialogex_menu(name_id_t *m, dialogex_t *dlg); +static dialogex_t *dialogex_class(name_id_t *n, dialogex_t *dlg); +static dialogex_t *dialogex_font(font_id_t *f, dialogex_t *dlg); +static dialogex_t *dialogex_caption(string_t *s, dialogex_t *dlg); +static dialogex_t *dialogex_exstyle(style_t *st, dialogex_t *dlg); +static dialogex_t *dialogex_style(style_t *st, dialogex_t *dlg); +static name_id_t *convert_ctlclass(name_id_t *cls); +static control_t *ins_ctrl(int type, int special_style, control_t *ctrl, control_t *prev); +static dialog_t *dialog_version(version_t *v, dialog_t *dlg); +static dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg); +static dialog_t *dialog_language(language_t *l, dialog_t *dlg); +static dialog_t *dialog_menu(name_id_t *m, dialog_t *dlg); +static dialog_t *dialog_class(name_id_t *n, dialog_t *dlg); +static dialog_t *dialog_font(font_id_t *f, dialog_t *dlg); +static dialog_t *dialog_caption(string_t *s, dialog_t *dlg); +static dialog_t *dialog_exstyle(style_t * st, dialog_t *dlg); +static dialog_t *dialog_style(style_t * st, dialog_t *dlg); +static resource_t *build_stt_resources(stringtable_t *stthead); +static stringtable_t *find_stringtable(lvc_t *lvc); +static toolbar_item_t *ins_tlbr_button(toolbar_item_t *prev, toolbar_item_t *idrec); +static toolbar_item_t *get_tlbr_buttons_head(toolbar_item_t *p, int *nitems); +static string_t *make_filename(string_t *s); +static resource_t *build_fontdirs(resource_t *tail); +static resource_t *build_fontdir(resource_t **fnt, int nfnt); +static int rsrcid_to_token(int lookahead); + +%} +%union{ + string_t *str; + int num; + int *iptr; + char *cptr; + resource_t *res; + accelerator_t *acc; + bitmap_t *bmp; + dialog_t *dlg; + dialogex_t *dlgex; + font_t *fnt; + fontdir_t *fnd; + menu_t *men; + menuex_t *menex; + rcdata_t *rdt; + stringtable_t *stt; + stt_entry_t *stte; + user_t *usr; + messagetable_t *msg; + versioninfo_t *veri; + control_t *ctl; + name_id_t *nid; + font_id_t *fntid; + language_t *lan; + version_t *ver; + characts_t *chars; + event_t *event; + menu_item_t *menitm; + menuex_item_t *menexitm; + itemex_opt_t *exopt; + raw_data_t *raw; + lvc_t *lvc; + ver_value_t *val; + ver_block_t *blk; + ver_words_t *verw; + toolbar_t *tlbar; + toolbar_item_t *tlbarItems; + dlginit_t *dginit; + style_pair_t *styles; + style_t *style; + ani_any_t *ani; +} + +%token tNL +%token tNUMBER tLNUMBER +%token tSTRING tIDENT tFILENAME +%token tRAWDATA +%token tACCELERATORS tBITMAP tCURSOR tDIALOG tDIALOGEX tMENU tMENUEX tMESSAGETABLE +%token tRCDATA tVERSIONINFO tSTRINGTABLE tFONT tFONTDIR tICON +%token tAUTO3STATE tAUTOCHECKBOX tAUTORADIOBUTTON tCHECKBOX tDEFPUSHBUTTON +%token tPUSHBUTTON tRADIOBUTTON tSTATE3 /* PUSHBOX */ +%token tGROUPBOX tCOMBOBOX tLISTBOX tSCROLLBAR +%token tCONTROL tEDITTEXT +%token tRTEXT tCTEXT tLTEXT +%token tBLOCK tVALUE +%token tSHIFT tALT tASCII tVIRTKEY tGRAYED tCHECKED tINACTIVE tNOINVERT +%token tPURE tIMPURE tDISCARDABLE tLOADONCALL tPRELOAD tFIXED tMOVEABLE +%token tCLASS tCAPTION tCHARACTERISTICS tEXSTYLE tSTYLE tVERSION tLANGUAGE +%token tFILEVERSION tPRODUCTVERSION tFILEFLAGSMASK tFILEOS tFILETYPE tFILEFLAGS tFILESUBTYPE +%token tMENUBARBREAK tMENUBREAK tMENUITEM tPOPUP tSEPARATOR +%token tHELP +%token tSTRING tIDENT tRAWDATA +%token tTOOLBAR tBUTTON +%token tBEGIN tEND +%token tDLGINIT +%left '|' +%left '^' +%left '&' +%left '+' '-' +%left '*' '/' +%right '~' tNOT +%left pUPM + +%type resource_file resource resources resource_definition +%type stringtable strings +%type font +%type fontdir +%type accelerators +%type events +%type bitmap +%type cursor icon +%type dialog dlg_attributes +%type ctrls gen_ctrl lab_ctrl ctrl_desc iconinfo +%type helpid +%type dialogex dlgex_attribs +%type exctrls gen_exctrl lab_exctrl exctrl_desc +%type rcdata +%type raw_data raw_elements opt_data file_raw +%type versioninfo fix_version +%type ver_words +%type ver_blocks ver_block +%type ver_values ver_value +%type menu +%type item_definitions menu_body +%type menuex +%type itemex_definitions menuex_body +%type itemex_p_options itemex_options +%type messagetable +%type userres +%type item_options +%type nameid nameid_s ctlclass usertype +%type acc_opt acc accs +%type loadmemopts lamo lama +%type opt_font opt_exfont opt_expr +%type opt_lvc +%type opt_language +%type opt_characts +%type opt_version +%type expr xpr +%type e_expr +%type toolbar +%type toolbar_items +%type dlginit +%type optional_style_pair +%type any_num +%type