# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284701809 -10800 # Node ID 6a1564a2f3e60d89097b8eea335def781bf9cfba # Parent 2bd88482bfe541d3bf0b9945acba32c47508b6e2 Revision: 201037 Kit: 201037 diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/bwins/eglwindowu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/bwins/eglwindowu.def Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,24 @@ +EXPORTS + ?BackgroundColor@REglStandAloneWindow@@QBE?AVTRgb@@XZ @ 1 NONAME ; class TRgb REglStandAloneWindow::BackgroundColor(void) const + ?IsValid@REglStandAloneWindow@@UBEHXZ @ 2 NONAME ; int REglStandAloneWindow::IsValid(void) const + ?SetSizeInPixels@REglStandAloneWindow@@QAEXABVTSize@@@Z @ 3 NONAME ; void REglStandAloneWindow::SetSizeInPixels(class TSize const &) + ??0TEglWindowInterface@@QAE@PAX@Z @ 4 NONAME ; TEglWindowInterface::TEglWindowInterface(void *) + ?SizeInTwips@TEglWindowInterface@@QBE?AVTSize@@XZ @ 5 NONAME ; class TSize TEglWindowInterface::SizeInTwips(void) const + ?SetBackgroundSurface@TEglWindowInterface@@QAEHABVTSurfaceConfiguration@@H@Z @ 6 NONAME ; int TEglWindowInterface::SetBackgroundSurface(class TSurfaceConfiguration const &, int) + ?GetBackgroundSurface@REglStandAloneWindow@@QBEHAAVTSurfaceConfiguration@@@Z @ 7 NONAME ; int REglStandAloneWindow::GetBackgroundSurface(class TSurfaceConfiguration &) const + ?Close@REglStandAloneWindow@@QAEXXZ @ 8 NONAME ; void REglStandAloneWindow::Close(void) + ?SizeInPixels@TEglWindowInterface@@QBE?AVTSize@@XZ @ 9 NONAME ; class TSize TEglWindowInterface::SizeInPixels(void) const + ?SetBackgroundColor@REglStandAloneWindow@@UAEXVTRgb@@H@Z @ 10 NONAME ; void REglStandAloneWindow::SetBackgroundColor(class TRgb, int) + ?Create@REglStandAloneWindow@@QAEHABVTSize@@0HAAVMEglStandAloneWindowObserver@@@Z @ 11 NONAME ; int REglStandAloneWindow::Create(class TSize const &, class TSize const &, int, class MEglStandAloneWindowObserver &) + ?RemoveBackgroundSurface@TEglWindowInterface@@QAEXH@Z @ 12 NONAME ; void TEglWindowInterface::RemoveBackgroundSurface(int) + ?SizeInTwips@REglStandAloneWindow@@UBE?AVTSize@@XZ @ 13 NONAME ; class TSize REglStandAloneWindow::SizeInTwips(void) const + ??0REglStandAloneWindow@@QAE@XZ @ 14 NONAME ; REglStandAloneWindow::REglStandAloneWindow(void) + ?SetBackgroundSurface@REglStandAloneWindow@@UAEHABVTSurfaceConfiguration@@H@Z @ 15 NONAME ; int REglStandAloneWindow::SetBackgroundSurface(class TSurfaceConfiguration const &, int) + ?SizeInPixels@REglStandAloneWindow@@UBE?AVTSize@@XZ @ 16 NONAME ; class TSize REglStandAloneWindow::SizeInPixels(void) const + ?SetSizeInTwips@REglStandAloneWindow@@QAEXABVTSize@@@Z @ 17 NONAME ; void REglStandAloneWindow::SetSizeInTwips(class TSize const &) + ?RemoveBackgroundSurface@REglStandAloneWindow@@UAEXH@Z @ 18 NONAME ; void REglStandAloneWindow::RemoveBackgroundSurface(int) + ?ScreenNumber@TEglWindowInterface@@QBEHXZ @ 19 NONAME ; int TEglWindowInterface::ScreenNumber(void) const + ?ScreenNumber@REglStandAloneWindow@@UBEHXZ @ 20 NONAME ; int REglStandAloneWindow::ScreenNumber(void) const + ?SetBackgroundColor@TEglWindowInterface@@QAEXVTRgb@@H@Z @ 21 NONAME ; void TEglWindowInterface::SetBackgroundColor(class TRgb, int) + ?IsValid@TEglWindowInterface@@QBEHXZ @ 22 NONAME ; int TEglWindowInterface::IsValid(void) const + diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/eabi/eglwindowu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/eabi/eglwindowu.def Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,26 @@ +EXPORTS + _ZN19TEglWindowInterface18SetBackgroundColorE4TRgbi @ 1 NONAME + _ZN19TEglWindowInterface20SetBackgroundSurfaceERK21TSurfaceConfigurationi @ 2 NONAME + _ZN19TEglWindowInterface23RemoveBackgroundSurfaceEi @ 3 NONAME + _ZN19TEglWindowInterfaceC1EPv @ 4 NONAME + _ZN19TEglWindowInterfaceC2EPv @ 5 NONAME + _ZN20REglStandAloneWindow14SetSizeInTwipsERK5TSize @ 6 NONAME + _ZN20REglStandAloneWindow15SetSizeInPixelsERK5TSize @ 7 NONAME + _ZN20REglStandAloneWindow18SetBackgroundColorE4TRgbi @ 8 NONAME + _ZN20REglStandAloneWindow20SetBackgroundSurfaceERK21TSurfaceConfigurationi @ 9 NONAME + _ZN20REglStandAloneWindow23RemoveBackgroundSurfaceEi @ 10 NONAME + _ZN20REglStandAloneWindow5CloseEv @ 11 NONAME + _ZN20REglStandAloneWindow6CreateERK5TSizeS2_iR28MEglStandAloneWindowObserver @ 12 NONAME + _ZN20REglStandAloneWindowC1Ev @ 13 NONAME + _ZN20REglStandAloneWindowC2Ev @ 14 NONAME + _ZNK19TEglWindowInterface11SizeInTwipsEv @ 15 NONAME + _ZNK19TEglWindowInterface12ScreenNumberEv @ 16 NONAME + _ZNK19TEglWindowInterface12SizeInPixelsEv @ 17 NONAME + _ZNK19TEglWindowInterface7IsValidEv @ 18 NONAME + _ZNK20REglStandAloneWindow11SizeInTwipsEv @ 19 NONAME + _ZNK20REglStandAloneWindow12ScreenNumberEv @ 20 NONAME + _ZNK20REglStandAloneWindow12SizeInPixelsEv @ 21 NONAME + _ZNK20REglStandAloneWindow15BackgroundColorEv @ 22 NONAME + _ZNK20REglStandAloneWindow20GetBackgroundSurfaceER21TSurfaceConfiguration @ 23 NONAME + _ZNK20REglStandAloneWindow7IsValidEv @ 24 NONAME + diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/group/bld.inf --- a/egl/eglinterface/group/bld.inf Thu Sep 02 21:50:40 2010 +0300 +++ b/egl/eglinterface/group/bld.inf Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -19,11 +19,16 @@ PRJ_EXPORTS -egl.iby /epoc32/rom/include/egl.iby +egl.iby /epoc32/rom/include/egl.iby +eglwindow.iby /epoc32/rom/include/eglwindow.iby + +../include/egluids.hrh /epoc32/include/EGL/egluids.hrh -../include/egluids.hrh /epoc32/include/EGL/egluids.hrh +../include/khrplatform.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(KHR/khrplatform.h) -../include/khrplatform.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(KHR/khrplatform.h) +../include/eglwindowcommon.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/eglwindowcommon.h) +../include/eglwindow.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/eglwindow.h) +../include/eglwindowinterface.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/eglwindowinterface.h) #ifdef SYMBIAN_EGLHEADERS_API_VERSION_1_4 ../include/1.4/egl.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(EGL/egl.h) @@ -56,6 +61,7 @@ PRJ_MMPFILES egllib.mmp +eglwindow.mmp PRJ_TESTEXPORTS diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/group/egl.iby --- a/egl/eglinterface/group/egl.iby Thu Sep 02 21:50:40 2010 +0300 +++ b/egl/eglinterface/group/egl.iby Fri Sep 17 08:36:49 2010 +0300 @@ -18,6 +18,7 @@ #include +#include #include EGL_DRV #endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/group/eglwindow.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/group/eglwindow.iby Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,25 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __EGLWINDOW_IBY__ +#define __EGLWINDOW_IBY__ + + +ROM_IMAGE[0] { +file=ABI_DIR\BUILD_DIR\eglwindow.dll \sys\bin\eglwindow.dll +} + + +#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/group/eglwindow.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/group/eglwindow.mmp Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,34 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +TARGET eglwindow.dll +TARGETTYPE dll +UID 0x1000008d 0x20031CA8 +CAPABILITY All -Tcb + +USERINCLUDE ../include +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +SOURCEPATH ../src + +SOURCE eglwindow.cpp +SOURCE eglwindowinterface.cpp + +LIBRARY euser.lib +LIBRARY ws32.lib + +SMPSAFE + diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/include/eglwindow.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/include/eglwindow.h Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,168 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This file is intended for use by clients of EGL. It provides +// the window type that clients must use in order to create EGL +// window surfaces that have no dependency on the window server. + + +/** + @file + @publishedPartner + @prototype +*/ + + +#ifndef __EGLWINDOW_H__ +#define __EGLWINDOW_H__ + + +#include + + +/** +Base class for all EGL window types except for RWindow. If an +RWindow pointer is cast to this type, IsRWindow() will return true. +*/ +NONSHARABLE_CLASS(REglWindowBase) + { +public: + virtual TBool IsValid() const = 0; + virtual TSize SizeInPixels() const = 0; + virtual TSize SizeInTwips() const = 0; + virtual TInt ScreenNumber() const = 0; + virtual void SetBackgroundColor(TRgb aColor, TBool aTriggerRedraw) = 0; + virtual TInt SetBackgroundSurface(const TSurfaceConfiguration &aConfiguration, TBool aTriggerRedraw) = 0; + virtual void RemoveBackgroundSurface(TBool aTriggerRedraw) = 0; + +protected: + REglWindowBase(); + +private: + friend class TEglWindowInterface; + TBool IsRWindow() const; + +private: + //This is aligned with RWindow::iBuffer, which is at offset 4 in RWindow. + //Note that this class has virtual functions to the vptr occupies bytes 0-3. + TInt iIsRWindow; + }; + + +/** +Forward Declarations. +*/ +class MEglStandAloneWindowObserver; + + +/** +Concrete EGL window type that has mutable size. It informs its +delegate whenever a surface is attached and removed from it. It is +intended that render stages requiring an EGL window surface create a +window of this type, passing itself as the delegate. When creating +the EGL window surface, the render stage passes this window as the +EGLNativeWindowType. Whenever EGL attaches and removes surfaces, the +render stage is notified via the delegate and can act accordingly by +modifying the compositor's scene. The symbian composition surface +can be retrieved by calling GetBackgroundSurface(). This surface +is considered unmappable. Users must not call RSurfaceManager:: +MapSurface() for this surface. +*/ +NONSHARABLE_CLASS(REglStandAloneWindow) : public REglWindowBase + { +public: + IMPORT_C REglStandAloneWindow(); + IMPORT_C TInt Create(const TSize& aSizeInPixels, const TSize& aSizeInTwips, TInt aScreenNumber, MEglStandAloneWindowObserver& aObserver); + IMPORT_C void Close(); + + IMPORT_C void SetSizeInPixels(const TSize& aSize); + IMPORT_C void SetSizeInTwips(const TSize& aSize); + IMPORT_C TRgb BackgroundColor() const; + IMPORT_C TBool GetBackgroundSurface(TSurfaceConfiguration& aConfiguration) const; + +public: //From REglWindowBase. + IMPORT_C TBool IsValid() const; + IMPORT_C TSize SizeInPixels() const; + IMPORT_C TSize SizeInTwips() const; + IMPORT_C TInt ScreenNumber() const; + IMPORT_C void SetBackgroundColor(TRgb aColor, TBool aTriggerRedraw); + IMPORT_C TInt SetBackgroundSurface(const TSurfaceConfiguration& aConfiguration, TBool aTriggerRedraw); + IMPORT_C void RemoveBackgroundSurface(TBool aTriggerRedraw); + +private: + class TEglStandAloneWindowData; + TEglStandAloneWindowData* iData; + }; + + +/** +Delegate class intended for implementation by a render stage that +requires an EGL window surface. See REglStandAloneWindow. +*/ +class MEglStandAloneWindowObserver + { +public: + /** + This method is called by REglStandAloneWindow just after a new + background color was set for the REglStandAloneWindow instance. + It provides the observer with an oportunity to adjust the + compositor's scene to reflect this change. + + @param aWindow The instance of REglStandAloneWindow that + the background color was set upon. + + @param aTriggerRedraw If set, the client that set the + background surface expects that it will + appear on screen immediately. + */ + virtual void ColorWasSetForWindow(const REglStandAloneWindow& aWindow, TBool aTriggerRedraw) = 0; + + /** + This method is called by REglStandAloneWindow just after a new + background surface was set on the REglStandAloneWindow instance. + It provides the observer with an oportunity to adjust the + compositor's scene to include this new surface. + + @param aWindow The instance of REglStandAloneWindow that + the background surface was set upon. + + @param aTriggerRedraw If set, the client that set the + background surface expects that it will + appear on screen immediately. + + @return KErrNone on success or any system-wide error code. This + is reported back to the caller of REglStandAloneWindow:: + SetBackgroundSurface(). + */ + virtual TInt SurfaceWasSetForWindow(const REglStandAloneWindow& aWindow, TBool aTriggerRedraw) = 0; + + /** + This method is called by REglStandAloneWindow just before the + current background surface will be removed from the + REglStandAloneWindow instance. It provides the observer with an + oportunity to adjust the compositor's scene to exclude this + surface and unregister the surface with the compositor. + + @param aWindow The instance of REglStandAloneWindow that + the background surface was removed from. + + @param aTriggerRedraw If set, the client that removed the + background surface expects that the + changes will appear on screen + immediately. + */ + virtual void SurfaceWillBeRemovedForWindow(const REglStandAloneWindow& aWindow, TBool aTriggerRedraw) = 0; + }; + + +#endif //__EGLWINDOW_H__ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/include/eglwindowcommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/include/eglwindowcommon.h Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,58 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +/** + @file + @publishedPartner + @prototype +*/ + + +#ifndef __EGLWINDOWCOMMON_H__ +#define __EGLWINDOWCOMMON_H__ + + +#include +#include +#include + + +/** +EGL Window panic codes, panic function and assert macro. +*/ +enum TEglWindowPanicCode + { + EEglWindowPanicInvalidSurface = 0, + EEglWindowPanicInvalidScreenNumber = 1, + EEglWindowPanicSizeInPixelsIsNegative = 2, + EEglWindowPanicSizeInTwipsIsNegative = 3, + EEglWindowPanicREglStandAloneWindowNotCreated = 4, + EEglWindowPanicRWindowHasNoSession = 5, + }; + + +static inline void EglWindowPanic(TEglWindowPanicCode aPanicCode) + { + _LIT(KPanicCategory, "EglWindow"); + User::Panic(KPanicCategory, aPanicCode); + } + + +#define EGL_WINDOW_ASSERT_DEBUG(aAssert, aPanicCode) __ASSERT_DEBUG(aAssert, EglWindowPanic(aPanicCode)) +#define EGL_WINDOW_ASSERT_ALWAYS(aAssert, aPanicCode) __ASSERT_ALWAYS(aAssert, EglWindowPanic(aPanicCode)) + + +#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/include/eglwindowinterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/include/eglwindowinterface.h Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,169 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This file is intended for use by EGL implementations only. It +// provides a standardised mechanism for interfacing with window +// objects that are passed to EGL. + + +/** + @file + @publishedPartner + @prototype +*/ + + +#ifndef __EGLWINDOWINTERFACE_H__ +#define __EGLWINDOWINTERFACE_H__ + + +#include +#include + + +/** +Forward declarations. +*/ +class REglWindowBase; + + +/** +TEglWindowInterface exposes a proxy interface that forwards actions +to the NativeWindow that the instance is constructed from. The +interface consists of all the functionality that an EGL +implementation requires to implement EGL window surfaces. +*/ +NONSHARABLE_CLASS(TEglWindowInterface) + { +public: + /** + Constructs a TEglWindowInterface to provide an interface to the + EGLNativeWindowType handle passed in. + + @param aNativeWindow Pointer to the native window. + + @pre aNativeWindow is either an initialised RWindow or an + initialised REglWindowBase derived type. + + @error If aNativeWindow is not an RWindow or an REglWindowBase + derived type, behaviour is undefined. + */ + IMPORT_C TEglWindowInterface(EGLNativeWindowType aNativeWindow); + + /** + If the native window that is wrapped by the instance of + TEglWindowInterface is valid, this function returns ETrue, else + EFalse is returned. + */ + IMPORT_C TBool IsValid() const; + + /** + Returns the size in pixels of the native window. + */ + IMPORT_C TSize SizeInPixels() const; + + /** + Returns the size in twips of the native window. This can be used + in conjunction with SizeInPixels() to work out the dot pitch and + pixel aspect ratio of the EGL surface attached to this window. + These attributes are queryable by an EGL client. + */ + IMPORT_C TSize SizeInTwips() const; + + /** + Returns the screen number that the native window is displayed on + or KAllScreens to indicate that the window must be displayable on + all screens in the system. + */ + IMPORT_C TInt ScreenNumber() const; + + /** + Sets the window's background color. This is the area of the + window not covered by a background surface, either because it + has no background surface, or because the surface configuration + specifies that the surface does not cover the whole of the + window's area. + + @param aColor The color that the window's background + will be set to. + + @param aTriggerRedraw If set causes any affected portions of + the display to be redrawn. + + @note The appearance on screen may not change until the window + is redrawn and the next refresh occurs. The + aTriggerRedraw parameter can be set to trigger this + redrawing. + */ + IMPORT_C void SetBackgroundColor(TRgb aColor, TBool aTriggerRedraw); + + /** + This sets a surface to appear in front of the native window's + background within a given area of that window. The + TSurfaceConfiguration object contains the Surface ID and allows + various surface presentation attributes to be specified. This + describes the mapping from surface co-ordinates to screen + co-ordinates, allowing for scaling, cropping, and rotation. + + @param aConfiguration The set of configuration that applies to + the surface. + + @param aTriggerRedraw If set causes any affected portions of + the display to be redrawn. + + @pre The surface is opaque; otherwise results are not defined. + + @pre The surface must not be the null surface ID; otherwise + the client is panicked with code ENWPanicInvalidSurface. + + @note If the same surface ID is already set as the window + background surface, then only the configuration + parameters will be updated. + + @note If the window already has a background surface (that is + not same as the new surface) then that surface will be + removed and the new background surface will be set. The + Surface ID will be registered while attached to this + window, incrementing the registration count by one. + + @post The window has a new background surface set to be within + the given area. + + @return KErrNone on success or any system-wide error code. + */ + IMPORT_C TInt SetBackgroundSurface(const TSurfaceConfiguration &aConfiguration, TBool aTriggerRedraw); + + /** + This removes any background surface that has previously been set + to the window. The surface ID registration associated with the + window will be released. The aTriggerRedraw parameter triggers a + redraw of at least the affected areas of the window at the end of + this method. + + @param aTriggerRedraw If set causes any affected portions of + the display to be redrawn. + + @post Any background surface associated with this window has + been removed. The appearance on screen may not change + until the window is redrawn and the next refresh occurs. + The aTriggerRedraw parameter can be set to trigger this + redrawing. + */ + IMPORT_C void RemoveBackgroundSurface(TBool aTriggerRedraw); + +private: + REglWindowBase* iEglWindow; + }; + + +#endif //__EGLWINDOWINTERFACE_H__ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/src/eglwindow.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/src/eglwindow.cpp Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,256 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +/** + @file + @publishedPartner + @prototype +*/ + + +#include "eglwindow.h" +#include +#include + + +//REglWindowBase----------------------------------------------------- + +REglWindowBase::REglWindowBase() : + iIsRWindow(0xFFFFFFFF) + { + //Check that BC is not broken between RWindow and REglWindowBase. + __ASSERT_COMPILE(sizeof(MWsClientClass) == sizeof(REglWindowBase)); + } + + +TBool REglWindowBase::IsRWindow() const + { + //REglWindowBase works out whether it is really an RWindow or a class + //derived from REglWindowBase by checking the location where iWsBuffer + //would be in an RWindow (iIsRWindow in this class). If this is + //0xFFFFFFFF, it is not an RWindow. + return (iIsRWindow != 0xFFFFFFFF); + } + +//------------------------------------------------------------------- + + +//Static function used to copy one configuration to another. +static void CopySurfaceConfiguration(const TSurfaceConfiguration& aSrc, TSurfaceConfiguration& aDest) + { + TRect extent; + TRect viewport; + TSurfaceId surface; + aSrc.GetExtent(extent); + aDest.SetExtent(extent); + aSrc.GetSurfaceId(surface); + aDest.SetSurfaceId(surface); + aSrc.GetViewport(viewport); + aDest.SetViewport(viewport); + aDest.SetFlip(aSrc.Flip()); + aDest.SetOrientation(aSrc.Orientation()); + } + + +//REglStandAloneWindow----------------------------------------------- + +//Class used to hold surface window data to prevent the +//possibility of binary break if TSurfaceConfiguration grows. +NONSHARABLE_CLASS(REglStandAloneWindow::TEglStandAloneWindowData) + { +public: + TEglStandAloneWindowData(const TSize& aSizeInPixels, const TSize& aSizeInTwips, TInt aScreenNumber, MEglStandAloneWindowObserver& aObserver); + MEglStandAloneWindowObserver& iObserver; + TSize iSizeInPixels; + TSize iSizeInTwips; + TInt iScreenNumber; + TRgb iBackgroundColor; + TSurfaceConfiguration iSurfaceConfig; + }; + + +REglStandAloneWindow::TEglStandAloneWindowData::TEglStandAloneWindowData(const TSize& aSizeInPixels, const TSize& aSizeInTwips, TInt aScreenNumber, MEglStandAloneWindowObserver& aObserver) : + iObserver(aObserver), + iSizeInPixels(aSizeInPixels), + iSizeInTwips(aSizeInTwips), + iScreenNumber(aScreenNumber), + iBackgroundColor(0,0,0,0) //Transparent Black. + { + CopySurfaceConfiguration(TSurfaceConfiguration(), iSurfaceConfig); + } + + +EXPORT_C REglStandAloneWindow::REglStandAloneWindow() : + iData(NULL) + { + } + + +EXPORT_C TInt REglStandAloneWindow::Create(const TSize& aSizeInPixels, const TSize& aSizeInTwips, TInt aScreenNumber, MEglStandAloneWindowObserver& aObserver) + { + if(iData) + { + return KErrAlreadyExists; + } + + EGL_WINDOW_ASSERT_DEBUG(aSizeInPixels.iWidth >= 0, EEglWindowPanicSizeInPixelsIsNegative); + EGL_WINDOW_ASSERT_DEBUG(aSizeInPixels.iHeight >= 0, EEglWindowPanicSizeInPixelsIsNegative); + EGL_WINDOW_ASSERT_DEBUG(aSizeInTwips.iWidth >= 0, EEglWindowPanicSizeInTwipsIsNegative); + EGL_WINDOW_ASSERT_DEBUG(aSizeInTwips.iHeight >= 0, EEglWindowPanicSizeInTwipsIsNegative); + EGL_WINDOW_ASSERT_DEBUG(aScreenNumber >= 0 || aScreenNumber == KAllScreens, EEglWindowPanicInvalidScreenNumber); + + //Allocate and initialize data. + iData = new TEglStandAloneWindowData(aSizeInPixels, aSizeInTwips, aScreenNumber, aObserver); + if(!iData) + { + return KErrNoMemory; + } + + return KErrNone; + } + + +EXPORT_C void REglStandAloneWindow::Close() + { + if(!iData) + { + return; + } + + //Remove background surface with a forced redraw so that + //the contents immediately disappear from the screen. + RemoveBackgroundSurface(ETrue); + delete iData; + iData = NULL; + } + + +EXPORT_C void REglStandAloneWindow::SetSizeInPixels(const TSize& aSize) + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + EGL_WINDOW_ASSERT_DEBUG(aSize.iWidth >= 0, EEglWindowPanicSizeInPixelsIsNegative); + EGL_WINDOW_ASSERT_DEBUG(aSize.iHeight >= 0, EEglWindowPanicSizeInPixelsIsNegative); + iData->iSizeInPixels = aSize; + } + + +EXPORT_C void REglStandAloneWindow::SetSizeInTwips(const TSize& aSize) + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + EGL_WINDOW_ASSERT_DEBUG(aSize.iWidth >= 0, EEglWindowPanicSizeInTwipsIsNegative); + EGL_WINDOW_ASSERT_DEBUG(aSize.iHeight >= 0, EEglWindowPanicSizeInTwipsIsNegative); + iData->iSizeInTwips = aSize; + } + + +EXPORT_C TRgb REglStandAloneWindow::BackgroundColor() const + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + return iData->iBackgroundColor; + } + + +EXPORT_C TBool REglStandAloneWindow::GetBackgroundSurface(TSurfaceConfiguration& aConfiguration) const + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + + TSurfaceId surface; + iData->iSurfaceConfig.GetSurfaceId(surface); + if(surface.IsNull()) + { + return EFalse; + } + + CopySurfaceConfiguration(iData->iSurfaceConfig, aConfiguration); + return ETrue; + } + + +EXPORT_C TBool REglStandAloneWindow::IsValid() const + { + return iData != NULL; + } + + +EXPORT_C TSize REglStandAloneWindow::SizeInPixels() const + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + return iData->iSizeInPixels; + } + + +EXPORT_C TSize REglStandAloneWindow::SizeInTwips() const + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + return iData->iSizeInTwips; + } + + +EXPORT_C TInt REglStandAloneWindow::ScreenNumber() const + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + return iData->iScreenNumber; + } + + +EXPORT_C void REglStandAloneWindow::SetBackgroundColor(TRgb aColor, TBool aTriggerRedraw) + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + iData->iBackgroundColor = aColor; + iData->iObserver.ColorWasSetForWindow(*this, aTriggerRedraw); + } + + +EXPORT_C TInt REglStandAloneWindow::SetBackgroundSurface(const TSurfaceConfiguration& aConfiguration, TBool aTriggerRedraw) + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + +#ifdef _DEBUG + //Assert that the surface is not null. + TSurfaceId surface; + aConfiguration.GetSurfaceId(surface); + EGL_WINDOW_ASSERT_DEBUG(!surface.IsNull(), EEglWindowPanicInvalidSurface); +#endif + + //Remove the old surface if one exists. + RemoveBackgroundSurface(EFalse); + + //Save the new configuration and alert the observer that a new surface was set. + TInt err = KErrNone; + CopySurfaceConfiguration(aConfiguration, iData->iSurfaceConfig); + err = iData->iObserver.SurfaceWasSetForWindow(*this, aTriggerRedraw); + + return err; + } + + +EXPORT_C void REglStandAloneWindow::RemoveBackgroundSurface(TBool aTriggerRedraw) + { + EGL_WINDOW_ASSERT_ALWAYS(iData, EEglWindowPanicREglStandAloneWindowNotCreated); + + //If there is a valid config, alert the observer that it will be removed. + TSurfaceId surface; + iData->iSurfaceConfig.GetSurfaceId(surface); + if(!surface.IsNull()) + { + iData->iObserver.SurfaceWillBeRemovedForWindow(*this, aTriggerRedraw); + } + + //Zero the configuration. + CopySurfaceConfiguration(TSurfaceConfiguration(), iData->iSurfaceConfig); + } + +//------------------------------------------------------------------- diff -r 2bd88482bfe5 -r 6a1564a2f3e6 egl/eglinterface/src/eglwindowinterface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/egl/eglinterface/src/eglwindowinterface.cpp Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,174 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +/** + @file + @publishedPartner + @prototype +*/ + + +#include "eglwindowinterface.h" +#include "eglwindow.h" +#include +#include +#include + + +EXPORT_C TEglWindowInterface::TEglWindowInterface(EGLNativeWindowType aNativeWindow) : + iEglWindow(reinterpret_cast(aNativeWindow)) + { + } + + +EXPORT_C TBool TEglWindowInterface::IsValid() const + { + if(iEglWindow->IsRWindow()) + { + TInt wsHandle = reinterpret_cast(iEglWindow)->WsHandle(); + return (wsHandle != 0); + } + else + { + return iEglWindow->IsValid(); + } + } + + +EXPORT_C TSize TEglWindowInterface::SizeInPixels() const + { + if(iEglWindow->IsRWindow()) + { + return reinterpret_cast(iEglWindow)->Size(); + } + else + { + return iEglWindow->SizeInPixels(); + } + } + + +EXPORT_C TSize TEglWindowInterface::SizeInTwips() const + { + if(iEglWindow->IsRWindow()) + { + //This is a simple solution to get the twip size of an RWindow. + //A temporary CWsScreenDevice is constructed for the screen that + //the RWindow exists on and is used to convert the size in pixels + //to a size in twips. The temporary CWsScreenDevice is then destructed. + //If this is found to be non-performant, we could use a TLS thread + //singleton that lazily creates screen devices and maintains a list + //thoughout its lifetime. The singleton could be destroyed though a + //static function on TEglWindowInterface as part of eglReleaseThread(). + //This represents more complexity and should only be considered as an + //optimisation if it is found to be neccessary. Note that use of the HAL + //interface is not really an option, since we need to find the pixel + //size of the screen and this could be virtualised by the screen. + + const RWindow* window = reinterpret_cast(iEglWindow); + RWsSession* winSession = window->Session(); + EGL_WINDOW_ASSERT_DEBUG(winSession, EEglWindowPanicRWindowHasNoSession); + + //Do a placement new to avoid the possible KErrNoMemory error. + TUint8 screenDevMem[sizeof(CWsScreenDevice)]; + CWsScreenDevice* screenDev = new (screenDevMem) CWsScreenDevice(*winSession); + + //Nothing we can do about this error. + TInt err = screenDev->Construct(window->ScreenNumber()); + if(err != KErrNone) + { + screenDev->~CWsScreenDevice(); + return TSize(0,0); + } + + TSize pixelSize = window->Size(); + TInt twipWidth = screenDev->HorizontalPixelsToTwips(pixelSize.iWidth); + TInt twipHeight = screenDev->VerticalPixelsToTwips(pixelSize.iHeight); + TSize twipSize(twipWidth, twipHeight); + + screenDev->~CWsScreenDevice(); + return twipSize; + } + else + { + return iEglWindow->SizeInTwips(); + } + } + + +EXPORT_C TInt TEglWindowInterface::ScreenNumber() const + { + if(iEglWindow->IsRWindow()) + { + return reinterpret_cast(iEglWindow)->ScreenNumber(); + } + else + { + return iEglWindow->ScreenNumber(); + } + } + + +EXPORT_C void TEglWindowInterface::SetBackgroundColor(TRgb aColor, TBool aTriggerRedraw) + { + if(iEglWindow->IsRWindow()) + { + RWindow* window = reinterpret_cast(iEglWindow); + window->SetBackgroundColor(aColor); + if(aTriggerRedraw) + { + window->Invalidate(); + } + } + else + { + iEglWindow->SetBackgroundColor(aColor, aTriggerRedraw); + } + } + + +EXPORT_C TInt TEglWindowInterface::SetBackgroundSurface(const TSurfaceConfiguration &aConfiguration, TBool aTriggerRedraw) + { + if(iEglWindow->IsRWindow()) + { +#ifdef _DEBUG + TSurfaceId surface; + aConfiguration.GetSurfaceId(surface); + EGL_WINDOW_ASSERT_DEBUG(!surface.IsNull(), EEglWindowPanicInvalidSurface); +#endif + return reinterpret_cast(iEglWindow)->SetBackgroundSurface(aConfiguration, aTriggerRedraw); + } + else + { + return iEglWindow->SetBackgroundSurface(aConfiguration, aTriggerRedraw); + } + } + + +EXPORT_C void TEglWindowInterface::RemoveBackgroundSurface(TBool aTriggerRedraw) + { + if(iEglWindow->IsRWindow()) + { + RWindow* window = reinterpret_cast(iEglWindow); + RWsSession* winSession = window->Session(); + EGL_WINDOW_ASSERT_DEBUG(winSession, EEglWindowPanicRWindowHasNoSession); + window->RemoveBackgroundSurface(aTriggerRedraw); + } + else + { + iEglWindow->RemoveBackgroundSurface(aTriggerRedraw); + } + } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 fbs/fontandbitmapserver/sfbs/FBSCLI.CPP --- a/fbs/fontandbitmapserver/sfbs/FBSCLI.CPP Thu Sep 02 21:50:40 2010 +0300 +++ b/fbs/fontandbitmapserver/sfbs/FBSCLI.CPP Fri Sep 17 08:36:49 2010 +0300 @@ -105,6 +105,7 @@ CFbClient::~CFbClient() { + FBS_OST( OstTraceExt2( GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS, CFBCLIENT_DESTRUCTOR_INFO, "# Server session destroyed; rc=%d; iSSH=0x%08x;", iResourceCount, iSessionHandle);) /* Don't call any CFontStore functions if CFbClient::NewL has left, or if FBSERV has already deleted the font store, which happens in test programs like TFBS when FBSERV is closed before the client(s). @@ -117,15 +118,28 @@ } if (font_store) - { + { font_store->DeleteSessionCache(iSessionHandle); font_store->CleanupCacheOnFbsSessionTermination(iSessionHandle); // If the font store doesn't exist, neither will the shared heap owned by FBSERV. iHeap->Free(iOpenFontGlyphData); - } - - // delete fonts held by the client + } + + // output each bitmap that is about to be destroyed... + FBS_OST + ({ + for (TInt ii = iIx->Count() - 1; ii >= 0; --ii) + { + CObject* object = (*iIx)[ii]; + TInt localHandle = iIx->At(object); + if ((localHandle != KErrNotFound) && (iIx->At(localHandle, fbTop->BitmapConUniqueID()) != NULL)) + { + OstTraceExt3( GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS, CFBCLIENT_DESTRUCTOR_INFO2, "# Server resource destroyed; iSSH=0x%08x; rc=%d; iH=0x%08x;", iSessionHandle, iResourceCount, localHandle); + } + } + }) + // delete fonts and bitmaps held by the client delete iIx; // delete font files held by the client diff -r 2bd88482bfe5 -r 6a1564a2f3e6 fbs/fontandbitmapserver/traces_FBSERV/fixed_id.definitions --- a/fbs/fontandbitmapserver/traces_FBSERV/fixed_id.definitions Thu Sep 02 21:50:40 2010 +0300 +++ b/fbs/fontandbitmapserver/traces_FBSERV/fixed_id.definitions Fri Sep 17 08:36:49 2010 +0300 @@ -2,6 +2,8 @@ [GROUP]GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS=0xde [GROUP]TRACE_NORMAL=0x86 [TRACE]GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS[0xDE]_CFBCLIENT_COPYFONTINFOINTORETURNMESSAGE_INFO=0x3 +[TRACE]GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS[0xDE]_CFBCLIENT_DESTRUCTOR_INFO=0xd +[TRACE]GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS[0xDE]_CFBCLIENT_DESTRUCTOR_INFO2=0xc [TRACE]GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS[0xDE]_CFBCLIENT_HANDLEMESGFONTDUPLICATE_INFO=0x2 [TRACE]GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS[0xDE]_CFBCLIENT_PROCBITMAPMESSAGE_INFO=0x4 [TRACE]GRAPHICS_RESOURCE_MANAGEMENT_SEMANTICS[0xDE]_CFBCLIENT_PROCBITMAPMESSAGE_INFO2=0x5 diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicscomposition/surfaceupdate/group/surfaceupdatetest.iby --- a/graphicscomposition/surfaceupdate/group/surfaceupdatetest.iby Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicscomposition/surfaceupdate/group/surfaceupdatetest.iby Fri Sep 17 08:36:49 2010 +0300 @@ -19,6 +19,9 @@ #include +#include +#define WSERV_TEST_WSINI WSERV_TEST_WSINI_CSC + #ifdef SYMBIAN_GRAPHICS_USE_GCE // batch file that runs all automatic surface update tests //data=DATAZ_\surfaceupdatetest\surfaceupdatetest_run.bat \surfaceupdatetest_run.bat diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/bwins/LINEBREAKU.DEF --- a/graphicsdeviceinterface/gdi/bwins/LINEBREAKU.DEF Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -EXPORTS - ?GetLineBreak@MLineBreaker@@QBEHABVTDesC16@@HHHPAVMContingentLineBreaker@@AAH2@Z @ 1 NONAME ; public: int __thiscall MLineBreaker::GetLineBreak(class TDesC16 const &,int,int,int,class MContingentLineBreaker *,int &,int &)const - ?GetLineBreakInContext@MLineBreaker@@UBEHABVTDesC16@@HHHAAH@Z @ 2 NONAME ; public: virtual int __thiscall MLineBreaker::GetLineBreakInContext(class TDesC16 const &,int,int,int,int &)const - ?GetLineBreakL@MLineBreaker@@QBEHABVTDesC16@@HHHPAVMContingentLineBreakerL@@AAH2@Z @ 3 NONAME ; public: int __thiscall MLineBreaker::GetLineBreakL(class TDesC16 const &,int,int,int,class MContingentLineBreakerL *,int &,int &)const - ?IsHangingCharacter@MLineBreaker@@UBEHI@Z @ 4 NONAME ; public: virtual int __thiscall MLineBreaker::IsHangingCharacter(unsigned int)const - ?LineBreakClass@MLineBreaker@@UBEIIAAI0@Z @ 5 NONAME ; public: virtual unsigned int __thiscall MLineBreaker::LineBreakClass(unsigned int,unsigned int &,unsigned int &)const - ?LineBreakPossible@MLineBreaker@@UBEHIIH@Z @ 6 NONAME ; public: virtual int __thiscall MLineBreaker::LineBreakPossible(unsigned int,unsigned int,int)const - ?ExtendedInterface@MLineBreaker@@UBEPAXAAVTUid@@@Z @ 7 NONAME ; public: virtual void * __thiscall MLineBreaker::ExtendedInterface(class TUid &)const - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/eabi/LineBreakU.def --- a/graphicsdeviceinterface/gdi/eabi/LineBreakU.def Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -EXPORTS - _ZNK12MLineBreaker12GetLineBreakERK7TDesC16iiiP22MContingentLineBreakerRiS5_ @ 1 NONAME - _ZNK12MLineBreaker13GetLineBreakLERK7TDesC16iiiP23MContingentLineBreakerLRiS5_ @ 2 NONAME - _ZNK12MLineBreaker14LineBreakClassEjRjS0_ @ 3 NONAME - _ZNK12MLineBreaker17ExtendedInterfaceER4TUid @ 4 NONAME - _ZNK12MLineBreaker17LineBreakPossibleEjji @ 5 NONAME - _ZNK12MLineBreaker18IsHangingCharacterEj @ 6 NONAME - _ZNK12MLineBreaker21GetLineBreakInContextERK7TDesC16iiiRi @ 7 NONAME - _ZTI12MLineBreaker @ 8 NONAME ; ## - _ZTV12MLineBreaker @ 9 NONAME ; ## - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/group/BLD.INF --- a/graphicsdeviceinterface/gdi/group/BLD.INF Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/group/BLD.INF Fri Sep 17 08:36:49 2010 +0300 @@ -29,25 +29,13 @@ ../inc/GDI.H SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(gdi.h) ../inc/GDI.INL SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(gdi.inl) -../inc/BIDI.H SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bidi.h) -../inc/BidiText.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(biditext.h) -../inc/LineBreak.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(linebreak.h) -../inc/BidiVisual.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(bidivisual.h) -../inc/ShapeInfo.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(shapeinfo.h) -../inc/ShapeImpl.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/shapeimpl.h) ../lookuptable/lookuptable.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/lookuptable.h) ../inc/blendingalgorithms.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/blendingalgorithms.h) ../inc/blendingalgorithms.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/blendingalgorithms.inl) ../inc/displaymode.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(displaymode.h) -../inc/glyphsample.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/gdi/glyphsample.h) ../inc/gdistructs.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/gdi/gdistructs.h) ../inc/gdiconsts.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/gdi/gdiconsts.h) -../inc/gdiinline.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/gdi/gdiinline.inl) -../inc/gdiplatapi.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(graphics/gdi/gdiplatapi.h) - -../inc/hextree.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(hextree.h) -../inc/hextree.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(hextree.inl) ../group/gdi.iby /epoc32/rom/include/gdi.iby @@ -55,7 +43,6 @@ PRJ_MMPFILES ../group/GDI.MMP -../group/LineBreak.mmp ../group/lookuptable.mmp @@ -76,9 +63,3 @@ ../tgdi/scripts/gditest_T_All.script z:/gditest/gditest_t_all.script ../tgdi/scripts/gditest_T_Rgb.script z:/gditest/gditest_t_rgb.script -../tgdi/scripts/gditest_T_Types.script z:/gditest/gditest_t_types.script -../tgdi/scripts/gditest_T_BiDiDefect.script z:/gditest/gditest_t_bididefect.script -../tgdi/scripts/gditest_T_LineBreak.script z:/gditest/gditest_t_linebreak.script -../tgdi/scripts/gditest_T_GlyphSelection.script z:/gditest/gditest_t_glyphselection.script -../tgdi/scripts/gditest_T_BiDi.script z:/gditest/gditest_t_bidi.script - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/group/GDI.MMP --- a/graphicsdeviceinterface/gdi/group/GDI.MMP Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/group/GDI.MMP Fri Sep 17 08:36:49 2010 +0300 @@ -33,27 +33,15 @@ OS_LAYER_SYSTEMINCLUDE_SYMBIAN -SOURCE FONT.CPP SOURCE GDIMAIN.CPP SOURCE LINE.CPP SOURCE PALETTE.CPP SOURCE PICTURE.CPP SOURCE PRINTGDI.CPP SOURCE RGB.CPP -SOURCE TFSTORE.CPP SOURCE ZOOMFAC.CPP -SOURCE BIDI.CPP -SOURCE BidiCompact.cpp -SOURCE BidiText.cpp -SOURCE BidiCopy.cpp -SOURCE BidiVisual.cpp -SOURCE GlyphSel.cpp -SOURCE FontArabic.cpp -SOURCE FontThai.cpp -SOURCE FontIndic.cpp -SOURCE ShaperCli.cpp SOURCE GDI.CPP -SOURCE hextree.cpp +SOURCE TextBaseStub.cpp LIBRARY euser.lib LIBRARY efsrv.lib @@ -62,6 +50,7 @@ LIBRARY palette.lib LIBRARY linebreak.lib LIBRARY lookuptable.lib +STATICLIBRARY textbase.lib DEFFILE GDI2.def START WINS diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/group/GdiTest.iby --- a/graphicsdeviceinterface/gdi/group/GdiTest.iby Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/group/GdiTest.iby Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -28,11 +28,6 @@ //script file data=DATAZ_\gditest\gditest_T_All.script \gditest\gditest_T_All.script data=DATAZ_\gditest\gditest_T_Rgb.script \gditest\gditest_T_Rgb.script -data=DATAZ_\gditest\gditest_T_Types.script \gditest\gditest_T_Types.script -data=DATAZ_\gditest\gditest_T_BiDiDefect.script \gditest\gditest_T_BiDiDefect.script -data=DATAZ_\gditest\gditest_T_LineBreak.script \gditest\gditest_T_LineBreak.script -data=DATAZ_\gditest\gditest_T_GlyphSelection.script \gditest\gditest_T_GlyphSelection.script -data=DATAZ_\gditest\gditest_T_BiDi.script \gditest\gditest_T_BiDi.script // GDI test code file=ABI_DIR\DEBUG_DIR\TGdiServer.exe TEST\TGdiServer.exe diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/group/LineBreak.mmp --- a/graphicsdeviceinterface/gdi/group/LineBreak.mmp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// linebreak.dll Line-break support -// -// - -/** - @file -*/ - - -target linebreak.dll -CAPABILITY All -Tcb -targettype dll -uid 0x1000008D 0x101F747F -VENDORID 0x70000001 - -sourcepath ../sgdi - -userinclude ../inc ../sgdi -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -source LineBreak.cpp -source LinebreakComplex.cpp - -library euser.lib - - -#ifdef WINSCW -DEFFILE LINEBREAK.DEF -#else -DEFFILE LineBreak.def -#endif -SMPSAFE diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/group/TGdiServer.mmp --- a/graphicsdeviceinterface/gdi/group/TGdiServer.mmp Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/group/TGdiServer.mmp Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -34,20 +34,9 @@ SOURCE TLINEDDA.CPP SOURCE TPALETTE.CPP SOURCE TPICTURE.CPP -SOURCE TTFSTORE.CPP SOURCE TTYPES.CPP -SOURCE TBiDi.cpp SOURCE TGraphicsContext.cpp -SOURCE TBiDiDefect.cpp -SOURCE TLineBreak.cpp -SOURCE TGlyphSel.cpp -sourcepath ../sgdi -SOURCE BIDI.CPP -SOURCE BidiCompact.cpp -SOURCE BidiText.cpp -SOURCE BidiCopy.cpp -SOURCE BidiVisual.cpp LIBRARY euser.lib @@ -63,6 +52,7 @@ LIBRARY fntstr.lib LIBRARY bitgdi.lib LIBRARY fbscli.lib +STATICLIBRARY textbase.lib // We're quite heavy on the stack... 4k in WinS isn't enough... EPOCSTACKSIZE 0x10000 diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/BIDI.H --- a/graphicsdeviceinterface/gdi/inc/BIDI.H Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Definitions for bidirectional text reordering. -* -* -*/ - - - -#ifndef BIDI_H_ -#define BIDI_H_ - -#include - -class RWriteStream; -class RReadStream; - - -class TBidirectionalState -/** -The bidirectional state class. -This class contains functions that implement the Unicode Bidirectional Algorithm, -which changes text from logical order to display order for the correct display -of right-to-left scripts, like Arabic and Hebrew. A TBidirectionalState object -carries the embedding level and stack from one line to the next. On construction -it is in its 'start of paragraph' state. -@publishedAll -@released -*/ - { - friend class CTBiDi; - -public: - - class TRunInfo - /** - Information about a run of characters with the same bidirectional - category. - - An array of these representing a line is passed into, and reordered by, - ReorderLine(). - @publishedAll - @released - */ - { - public: - /** Category of a run of text: passed to ReorderLine(); these are - passed in as TChar::TBdCategory values but are modified for internal - use. */ - TUint iCategory; - /** Embedding level of this run: used internally by ReorderLine(). */ - TUint8 iEmbeddingLevel; - /** Resolved direction of this run: 0 for left to right, 1 for right - to left. */ - TUint8 iDirection; - /** Index of this run after reordering. */ - TInt iIndex; - /** Start of text; returned by ReorderText(). */ - TInt iStart; - /** Length of text; returned by ReorderText(). */ - TInt iLength; - }; - - IMPORT_C TBidirectionalState(); - IMPORT_C void ReorderLine(TRunInfo* aRunInfo,TInt aRuns,TBool aParStart,TBool aParEnd,TBool aParRightToLeft, - TChar::TBdCategory aNextCategory,TChar::TBdCategory aNextStrongCategory, - TBool& aVisualEndIsAmbiguous); - IMPORT_C void ReorderLine(TRunInfo* aRunInfo,TInt aRuns,TBool aParStart,TBool aParEnd,TBool aParRightToLeft, - TChar::TBdCategory aNextCategory,TChar::TBdCategory aNextStrongCategory); - IMPORT_C static TInt ReorderText(const TText* aText,TInt aLength,TBool aParRightToLeft,TText*& aNewText); - IMPORT_C static void ReverseGroups(TText* aStart,TInt aLength); - IMPORT_C void Reset(); - IMPORT_C TBool IsDefault() const; - IMPORT_C TBool operator==(const TBidirectionalState& aState) const; - IMPORT_C void ExternalizeL(RWriteStream& aDest); - IMPORT_C void InternalizeL(RReadStream& aSource); - TBool ParRightToLeft() const { return iStack[0].iEmbeddingLevel & 1; } - -private: - // Bidirectional categories coded as bit flags - enum TCategory - { - ELeftToRight = 1 << TChar::ELeftToRight, - ELeftToRightEmbedding = 1 << TChar::ELeftToRightEmbedding, - ELeftToRightOverride = 1 << TChar::ELeftToRightOverride, - ERightToLeft = 1 << TChar::ERightToLeft, - ERightToLeftArabic = 1 << TChar::ERightToLeftArabic, - ERightToLeftEmbedding = 1 << TChar::ERightToLeftEmbedding, - ERightToLeftOverride = 1 << TChar::ERightToLeftOverride, - EPopDirectionalFormat = 1 << TChar::EPopDirectionalFormat, - EEuropeanNumber = 1 << TChar::EEuropeanNumber, - EEuropeanNumberSeparator = 1 << TChar::EEuropeanNumberSeparator, - EEuropeanNumberTerminator = 1 << TChar::EEuropeanNumberTerminator, - EArabicNumber = 1 << TChar::EArabicNumber, - ECommonNumberSeparator = 1 << TChar::ECommonNumberSeparator, - ENonSpacingMark = 1 << TChar::ENonSpacingMark, - EBoundaryNeutral = 1 << TChar::EBoundaryNeutral, - EParagraphSeparator = 1 << TChar::EParagraphSeparator, - ESegmentSeparator = 1 << TChar::ESegmentSeparator, - EWhitespace = 1 << TChar::EWhitespace, - EOtherNeutral = 1 << TChar::EOtherNeutral, - - // useful groups - EBdControlsGroup = ELeftToRightEmbedding | ERightToLeftEmbedding | - ELeftToRightOverride | ERightToLeftOverride | EPopDirectionalFormat, - ELeftToRightGroup = ELeftToRight | EEuropeanNumber | ELeftToRightOverride | ELeftToRightEmbedding, - ERightToLeftGroup = ERightToLeft | EArabicNumber | ERightToLeftArabic | ERightToLeftOverride | - ERightToLeftEmbedding, - EStrongGroup = ELeftToRightEmbedding | ERightToLeftEmbedding - | ELeftToRightOverride | ERightToLeftOverride - | ELeftToRight | ERightToLeft | ERightToLeftArabic, - - ENoCategory = 0 - }; - - enum - { - EMaxExplicitLevel = 61, - EMaxLevel = 63, - EMaxStackLevels = 62 - }; - - enum TOverrideState - { - ENoOverrideState = 0, - ELeftToRightOverrideState = ELeftToRightOverride, - ERightToLeftOverrideState = ERightToLeftOverride - }; - - class TStackItem - { - public: - TUint8 iEmbeddingLevel; // embedding level - TOverrideState iOverrideState; // directional override state - TCategory iStartCategory; // category that started this level; EOtherNeutral if none - }; - -private: - /** The information needed during line reordering. - WARNING: Class for internal use ONLY. Compatibility is not guaranteed in future releases. - */ - class TReorderContext - { - public: - void SetNextCategory(TChar::TBdCategory aCat); - void SetNextStrongCategory(TChar::TBdCategory aCat); - public: - /** Category at start of next line, or ON if at the end of the - paragraph. */ - TCategory iNextCategory; - /** Which of L, R or AL appears first in the remainder of the - paragraph, or ON if none. */ - TCategory iNextStrongCategory; - /** The run array for this line. */ - TRunInfo* iRunInfo; - /** The length of iRunInfo. */ - TInt iRuns; - /** Bitmap of categories currently present in iRunInfo. */ - TUint32 iCategories; - /** Found by the algorithm to set iPreviousStrongCategory. */ - TCategory iLastStrongCategory; - }; - -public: - static TInt GenerateBdRunArray(const TText* aText, TInt aLength, - TBidirectionalState::TRunInfo* aRun, TInt aMaxRuns); - -private: - const TStackItem& State() const { return iStack[iStackLevel]; } - TCategory Push(TCategory aStartCategory); - TCategory Pop(); - -public: - TBidirectionalState(TChar::TBdCategory aPrevCat, - TChar::TBdCategory aPrevStrongCat, TBool aParRightToLeft); - void HandleBdControls(TReorderContext& aContext); - void ResolveWeakTypesW1W2W3(TReorderContext& aContext); - void ResolveWeakTypesW4W5W6(TReorderContext& aContext); - void ResolveWeakTypesW7(TReorderContext& aContext); - void ResolveNeutralTypes(TReorderContext& aContext); - void ResolveImplicitLevels(TReorderContext& aContext); - void PrepareForNextLine(const TReorderContext& aContext); - void ReorderRuns(TReorderContext& aContext); - static TInt CatToNumber(TInt aCat); - static TCategory CharToBdCat(TChar::TBdCategory aCat); - static TCategory UintToBdCat(TUint aCat); - static void DeneutralizeRuns(TRunInfo* aStart, TRunInfo* aEnd, - TCategory aStartCategory, TCategory aEndCategory); -private: - TCategory iPreviousCategory; // category at end of last line, or EStartOfParagraph if at start of par - TCategory iPreviousStrongCategory; // L or R; derived from embedding level if at start of par - TInt16 iStackLevel; // current stack level - TInt8 iPushesBeyond60; // number of times Push called with iStackLevel == 60 and Left-To-Right category - TInt8 iPushesBeyond61; // number of times Push called with iStackLevel == 61 - TStackItem iStack[EMaxStackLevels]; // the stack of embedding levels - }; - -#endif // BIDI_H_ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/BidiText.h --- a/graphicsdeviceinterface/gdi/inc/BidiText.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef BIDITEXT_H_ -#define BIDITEXT_H_ - -#include -#include -#include // class TBidirectionalState::TRunInfo -enum CGraphicsContext::TTextAlign; -class MLineBreaker; -class RRunInfoArray; -class CBidiTextTls; - - -/** -This enumeration holds the possible panic codes that may be raised -by the BidiText API on detecting an unrecoverable error. -@publishedAll -@released -*/ -enum TBidiPanic - { - /** The call to RRunInfoArray::OpenL() has not been made prior to this call to TBidiText::SetText() - @see TBidiText::SetText */ - EBidiPanic_RunArrayNull = 0, - - /** Maximum number of lines that the text will need to be split into is invalid i.e less than zero or negative. - @see TBidiText::NewL - @see TBidiText::MinimumSize */ - EBidiPanic_InvalidMaxline = 1, - - /** Maximum number of characters are invalid i.e less than zero or negative. - @see TBidiText::NewL */ - EBidiPanic_InvalidReservedMaxLength = 2, - - /** Maximum width of the text in pixels is invalid i.e zero or negative. - @see TBidiText::MinimumSize */ - EBidiPanic_InvalidWrappingWidth = 3, - - /** Number of empty pixels between two lines of text are invalid i.e zero or negative. - @see TBidiText::MinimumSize */ - EBidiPanic_InvalidLineGap = 4, - - /** Text length for display is invalid i.e zero or negative. - @see TBidiText::DisplayText - @see TBidiText::LineOfDisplayText */ - EBidiPanic_InvalidVisualOrderedTextLength = 5, - - /** Line number to retrieve is invalid i.e zero or negative. - @see TBidiText::LineOfDisplayText */ - EBidiPanic_InvalidLineNumber = 6 - }; - -/** -This class works as a replacement for HBufC in those cases where a small -amount of text is being formatted simply. The text must be all of one style -and broken into lines of all the same length. The number of lines and the text -itself is specified on construction, and the text may then be re-broken, -re-truncated and re-drawn with non-leaving functions. -@publishedAll -@released -*/ -class TBidiText - { -public: - /** Overall directionality of the text. */ - enum TDirectionality - { - /** Text reading begins on the left. */ - ELeftToRight = 0, - /** Text reading begins on the right. */ - ERightToLeft = 1 - }; - - /** Class specific panic codes - @deprecated This enum has been replaced by TBidiPanic. - */ - enum TPanicCodes - { - EPanicRunArrayNull, - }; - - IMPORT_C static TDirectionality ScriptDirectionality(TLanguage aLanguage); - IMPORT_C static TDirectionality TextDirectionality( - const TDesC& aText, TBool* aFound = 0); -protected: - TBidiText(); -public: - IMPORT_C static TBidiText* NewL(TInt aReservedMaxLength, TInt aMaxLines); - IMPORT_C static TBidiText* NewL(const TDesC& aText, TInt aMaxLines); - IMPORT_C static TBidiText* NewL(const TDesC& aText, TInt aMaxLines, - TDirectionality aDirectionality); - IMPORT_C TInt SetText(const TDesC& aText, RRunInfoArray& aRunInfoArray); - IMPORT_C TInt SetText(const TDesC& aText, TDirectionality aDirectionality, RRunInfoArray& aRunInfoArray); - IMPORT_C void SetTruncationChar(TChar aTruncateWith); - IMPORT_C void WrapText(TInt aWrappingWidth, const CFont& aFont, - const MLineBreaker* aBreaker, TInt aMaxLines); - IMPORT_C void WrapText(TInt aWrappingWidth, const CFont& aFont, - const MLineBreaker* aBreaker = NULL); - IMPORT_C TSize MinimumSize(TInt aWrappingWidth, const CFont& aFont, TInt aLineGap, TInt aMaxLines = -1, - const MLineBreaker* aBreaker = NULL) const; - IMPORT_C TPtrC Text() const; - IMPORT_C TPtrC DisplayText() const; - IMPORT_C TInt WrappingWidth() const; - IMPORT_C TDirectionality Directionality() const; - IMPORT_C TChar TruncationChar() const; - IMPORT_C TInt NumberOfLinesInDisplayText() const; - IMPORT_C TPtrC LineOfDisplayText(TInt aLine, TInt& aWidthInPixels) const; - IMPORT_C void DrawText(CGraphicsContext& aGc, const TPoint& aLeft) const; - IMPORT_C void DrawText(CGraphicsContext& aGc, - const TPoint& aLeft, TInt aBaseLineSpacing, - CGraphicsContext::TTextAlign aAlignment) const; - IMPORT_C void DrawText(CGraphicsContext& aGc, - const TPoint& aLeft, TInt aBaseLineSpacing) const; -private: - TInt DoWrapText(TInt aWrappingWidth, const CFont& aFont, const MLineBreaker* aBreaker, - TInt aMaxLines, TText*& aOutputText, TInt& aNumLines, TInt16* aLineWidthArray) const; - }; - - -/** -This class is used to keep track of the shared run info array. -Keep it open for as long as the TBidiText object is used. The same -RRunInfoArray object can be used with several different TBidiText objects. -@publishedAll -@released -*/ -class RRunInfoArray - { - friend class TBidiText; - -public: - IMPORT_C RRunInfoArray(); - IMPORT_C void OpenL(); - IMPORT_C void Close(); - -private: - TBidirectionalState::TRunInfo* RunArray() const; - -private: - CBidiTextTls* iTls; - }; - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/BidiVisual.h --- a/graphicsdeviceinterface/gdi/inc/BidiVisual.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef BIDIVISUAL_H_ -#define BIDIVISUAL_H_ - -#include - -class TBidiLogicalToVisual -/** -This class is a low-level class for bi-directionally reordering text. It -allows the re-ordering of text using no leaving functions at all, and provides -a finer degree of control than TBidiText. However, it should not be used -without understanding the basics of the Unicode Bi-directional Reordering -Algorithm. -@publishedAll -@released -*/ - { -public: - enum {KMinCharAvailable = 4}; - - IMPORT_C TBidiLogicalToVisual(const TDesC& aText, TBool aRightToLeft, - TBidirectionalState::TRunInfo* aRunInfoArray, TInt aRunInfoLength); - IMPORT_C TBidiLogicalToVisual(const TDesC& aText, - TBidirectionalState::TRunInfo* aRunInfoArray, TInt aRunInfoLength); - IMPORT_C TInt Reorder(); - IMPORT_C void GetVisualLine(TDes& aLine, TInt aStart, TInt aEnd, - TChar aTruncationChar); -private: - const TDesC& iText; - TBool iRightToLeft; - TBidirectionalState::TRunInfo* iRunInfoArray; - TInt iRunInfoArrayLength; - TInt iRuns; - TUint32 iSpare2; - }; - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/GDI.H --- a/graphicsdeviceinterface/gdi/inc/GDI.H Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/inc/GDI.H Fri Sep 17 08:36:49 2010 +0300 @@ -21,6 +21,8 @@ #include #include +#include + #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS #include #include @@ -442,49 +444,10 @@ TLineStatus iStatus; }; - -/** -Font posture flags. -Fonts can be either upright or italic. -@publishedAll -@released -*/ -enum TFontPosture - { - /** Font posture is normal (upright). */ - EPostureUpright, - /** Font posture is italic. */ - EPostureItalic - }; - -/** -Font stroke weight flags. -@publishedAll -@released -*/ -enum TFontStrokeWeight - { - /** Font stroke weight is normal. */ - EStrokeWeightNormal, - /** Font stroke weight is bold. */ - EStrokeWeightBold - }; - -/** -Font print position flags. -Fonts can be normal, superscript or subscript. -@publishedAll -@released -*/ -enum TFontPrintPosition - { - /** Font is normal. */ - EPrintPosNormal, - /** Font is superscript. */ - EPrintPosSuperscript, - /** Font is subscript. */ - EPrintPosSubscript - }; +// These types are moved from Gdi.h to TextBase.h. +// enum TFontPosture +// enum TFontStrokeWeight +// enum TFontPrintPosition /** Font underline flags. @@ -512,464 +475,22 @@ EStrikethroughOn }; -/** -The maximum length of a typeface name (in characters). -@publishedAll -@released -*/ -const TInt KMaxTypefaceNameLength=0x18; - - -/** Typeface name and attributes. - -This class identifies a typeface by name, and contains the combination of -attributes of the typeface. These attributes define whether it is a symbol -typeface, whether the typeface is proportional, and whether it is serif or -sans-serif. - -The combination of attributes for a typeface are stored in a bitmask, with -the various bits indicating different attributes. The bitmask is calculated -for any particular attribute combination by ORing the enumerated value for -each individual attribute. -@publishedAll -@released -*/ -class TTypeface - { -public: - enum - { - /** Typeface is a proportional typeface (e.g. Swiss) - */ - EProportional = 1, - /** Typeface is a serif typeface (e.g. Times) - */ - ESerif = 2, - /** Typeface is a symbol typeface (e.g. Symbol) - */ - ESymbol = 4, - }; -public: - IMPORT_C TTypeface(); - IMPORT_C TBool operator==(const TTypeface& aTypeface) const; - IMPORT_C void InternalizeL(RReadStream& aStream); - IMPORT_C void ExternalizeL(RWriteStream& aStream) const; - IMPORT_C void SetAttributes(TInt aAttributes); - IMPORT_C void SetIsProportional(TBool aIsProportional); - IMPORT_C void SetIsSerif(TBool aIsSerif); - IMPORT_C void SetIsSymbol(TBool aIsSymbol); - IMPORT_C TInt Attributes() const; - IMPORT_C TBool IsProportional() const; - IMPORT_C TBool IsSerif() const; - IMPORT_C TBool IsSymbol() const; - IMPORT_C void SetScriptTypeForMetrics(TLanguage aLanguage); - IMPORT_C void SetScriptTypeForMetrics(TInt aScript); - IMPORT_C TInt ScriptTypeForMetrics() const; - IMPORT_C void SetName(const TDesC& aName); - IMPORT_C const TDesC& Name() const; -private: - void ResetAttributes(); - void ResetScriptType(); -public: - /** The typeface name. */ - TBufC iName; -private: - TUint32 iFlags; - }; - - -/** -An enumerated type for the format of a glyph bitmap. This type is currently -used to indicate whether glyph bitmaps for scalable fonts are drawn anti-aliased. -Additional values may be defined in the future. - -@see TFontStyle::SetBitmapType() -@see CFbsTypefaceStore::SetDefaultBitmapType() -@publishedAll -@released -*/ -enum TGlyphBitmapType - { - /** The font store's default glyph bitmap format is used. */ - EDefaultGlyphBitmap = 0, - /** The standard monochrome format: no anti-aliasing, 1 bit per pixel, - run-length encoded. */ - EMonochromeGlyphBitmap, - /** Standard 8-bits-per-pixel with anti-aliasing. */ - EAntiAliasedGlyphBitmap, - /** The format used when sub-pixel font rendering is used. */ - ESubPixelGlyphBitmap, - /** The format used when outline and shadow font rendering is used. - - If the raterizer supports the outline and shadow fonts, it will set the bitmaptype as - EFourColourBlendGlyphBitmap but only when glyph bitmap type is set as EAntiAliasedGlyphBitmap and - when any of the EDropShadow or EOutline effect is on. Only rasterizer providers can use this enum. - */ - EFourColourBlendGlyphBitmap, - /** - This is used for glyphs, and not fonts, and is needed to inform the font drawing routines - that the character should be drawn using the overall font setting. - For Internal Use Only. - */ - EGlyphBitmapTypeNotDefined, - /** - This is used to inform the rasterizer that the best match should be - found for the bitmap type based upon its knowledge. - For Internal Use Only. - */ - EAntiAliasedOrMonochromeGlyphBitmap, - }; - -/** -Defines a set of font effects flags. - -@publishedAll -@released -WARNING: This Class is for use by system/UI software ONLY. -*/ -NONSHARABLE_CLASS(FontEffect) - { -public: - enum TEffect - { - ENone = 0x0, // No effects. - EAlgorithmicBold= 0x10, // Font is algorithmic bold (a.k.a pseudo bold.) - EDropShadow = 0x20, // Font has a drop shadow. - EOutline = 0x40, // Font is an outline font. - EEmbossed = 0x80, // Font is embossed. - EEngraved = 0x100, // Font is engraved. - ESoftEdge = 0x200, // Font is soft edged. - EReserved1 = 0x400, // Reserved for Symbian use. - EReserved2 = 0x800, // Reserved for Symbian use. - EReserved3 = 0x1000, // Reserved for Symbian use. - EReserved4 = 0x2000, // Reserved for Symbian use. - EReserved5 = 0x4000, // Reserved for Symbian use. - EReserved6 = 0x8000, // Reserved for Symbian use. - }; -public: - IMPORT_C static TBool IsEffectOn(TEffect aEffect, TUint32 aFontEffect); - IMPORT_C static void SetEffect(TEffect aEffect, TBool aOn, TUint32& aFontEffect); - }; - -/** Encapsulates a font style. - -The font style information is comprised of: - -the posture of the font upright or italic - -the stroke weight of the font normal or bold - -the print position of the font normal, subscript or superscript - -Note that the underline and strike-through attributes are not included in -this class, but are set in the graphics context. - -@see CGraphicsContext::SetUnderlineStyle() -@see CGraphicsContext::SetStrikethroughStyle() -@publishedAll -@released -*/ -class TFontStyle - { -public: - IMPORT_C TFontStyle(); - IMPORT_C TFontStyle(TFontPosture aPost,TFontStrokeWeight aStrWgt,TFontPrintPosition aPrintPos); - IMPORT_C void InternalizeL(RReadStream& aStream); - IMPORT_C void ExternalizeL(RWriteStream& aStream) const; - IMPORT_C TFontPosture Posture() const; - IMPORT_C TFontStrokeWeight StrokeWeight() const; - IMPORT_C TFontPrintPosition PrintPosition() const; - IMPORT_C void SetPosture(TFontPosture aPosture); - IMPORT_C void SetStrokeWeight(TFontStrokeWeight aStrokeWeight); - IMPORT_C void SetPrintPosition(TFontPrintPosition aPrintPosition); - inline TGlyphBitmapType BitmapType() const; - inline void SetBitmapType(TGlyphBitmapType aBitmapType); - IMPORT_C TBool operator==(const TFontStyle& aFontStyle) const; - IMPORT_C TUint32 Effects() const; - IMPORT_C TBool IsEffectOn(FontEffect::TEffect aEffect) const; - IMPORT_C void SetEffects(TUint32 aEffects); - IMPORT_C void SetEffects(FontEffect::TEffect aEffect, TBool aOn); -private: - enum - { - EItalic=0x1, - EBold=0x2, - ESuper=0x4, - ESub=0x8 - }; -private: - TUint32 iFlags; // bitmap type - 16 bits (high), font effects - 12 bits (middle), style - 4 bits (low) - TAny* iReserved1; - TAny* iReserved2; - }; - - - -/** -Specifies the font specification in device independent terms. -@publishedAll -@released -*/ -class TFontSpec - { -public: - IMPORT_C TFontSpec(); - IMPORT_C TFontSpec(const TDesC& aTypefaceName,TInt aHeight); - IMPORT_C TBool operator==(const TFontSpec& aFontSpec) const; - IMPORT_C void InternalizeL(RReadStream& aStream); - IMPORT_C void ExternalizeL(RWriteStream& aStream) const; - IMPORT_C void SetScriptTypeForMetrics(TLanguage aLanguage); - IMPORT_C TInt ScriptTypeForMetrics() const; -public: - /** The typeface. */ - TTypeface iTypeface; - /** The height of the typeface (in twips). */ - TInt iHeight; - /** The font style of the typeface. */ - TFontStyle iFontStyle; - }; - - - -/** Typeface family support information. -This data-only class includes the name and attributes of a typeface, how many -font heights are available, its minimum and maximum heights, and whether or -not it is scaleable a typeface is scaleable if it supports heights at -fixed intervals between the minimum and maximum heights. -@publishedAll -@released -*/ -class TTypefaceSupport - { -public: - /** The name and attributes of the typeface. */ - TTypeface iTypeface; - /** The number of distinct font heights available in the typeface. */ - TInt iNumHeights; - /** The typeface's minimum font height, in twips. */ - TInt iMinHeightInTwips; - /** The typeface's maximum font height, in twips. */ - TInt iMaxHeightInTwips; - /** Whether the typeface is scaleable. ETrue if it is scaleable, otherwise - EFalse. */ - TBool iIsScalable; // supports heights from min to max at fixed interval - }; - -/** -The percentage used to multiply a normal font height when calculating its -superscript or subscript height. -@publishedAll -@released -*/ -const TInt KSuperSubScalingPercentage=67; - -/** -The percentage of a font height used to calculate its baseline offset for a -superscript print position. -@publishedAll -@released -*/ -const TInt KSuperscriptOffsetPercentage=-28; - -/** -The percentage of a font height used to calculate its baseline offset for a -subscript print position. -@publishedAll -@released -*/ -const TInt KSubscriptOffsetPercentage=14; - -class CFont; - -/** Typeface store abstract base interface. - -This class provides the interface to a store for typefaces. - -See also CFontStore. -@publishedAll -@released -*/ -class CTypefaceStore : public CBase - { -public: - IMPORT_C ~CTypefaceStore(); - - /** - Gets the font which is the nearest to the given font specification. - - When the font is no longer needed, call @c ReleaseFont(). - - Note that this deprecated function is replaced by the new @c GetNearestFontToDesignHeightInTwips() - yielding (virtually) the same result. However clients are strongly encouraged to use the new - @c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every - character within any given text string will fit within the given amount of twips, whereas the design - height is an aesthetic unit decided by the font designer without strict physical meaning, which - may result in cropped characters. - - @param aFont On return, contains a pointer to the nearest font. - @param aFontSpec The specification of the font to be matched. - @return KErrNone if successful; a system-wide error code otherwise. - @publishedAll - @deprecated Use GetNearestFontToDesignHeightInTwips - */ - virtual TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0; - - /** - Gets the font which is the nearest to the given font specification. - - When the font is no longer needed, call @c ReleaseFont(). - - This new function replaces the deprecated @c GetNearestFontInTwips() yielding (virtually) the - same result. However clients are strongly encouraged to use the new - @c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every - character within any given text string will fit within the given amount of twips, whereas the design - height is an aesthetic unit decided by the font designer without strict physical meaning, which - may result in cropped characters. - - @param aFont On return, contains a pointer to the nearest font. - @param aFontSpec The specification of the font to be matched. - @return KErrNone if successful; a system-wide error code otherwise. - @publishedAll - @released - */ - virtual TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0; - - /** - Gets the font which is the nearest to the given font specification. - - When the font is no longer needed, call @c ReleaseFont(). - - The font and bitmap server returns a pointer to the nearest matching font - from those available. Matches to max height of font - this does its best - to return a font that will fit within the maximum height specified (but - note that variations due to hinting algorithms may rarely result in this - height being exceeded by up to one pixel). Problems can also be - encountered with bitmap fonts where the typeface exists but doesn't have - a font small enough. +// These types are moved from Gdi.h to TextBase.h. +// const KMaxTypefaceNameLength +// class TTypeface +// enum TGlyphBitmapType +// class FontEffect +// class TFontStyle +// class TFontSpec +// class TTypefaceSupport +// const KSuperSubScalingPercentage +// const KSuperscriptOffsetPercentage +// const KSubscriptOffsetPercentage +// class CTypefaceStore +// const KMaxFontCacheEntries +// class CFontCache - @param aFont On return, contains a pointer to the nearest font. - @param aFontSpec The specification of the font to be matched. - @param aMaxHeight The maximum height within which the font must fit. - @return KErrNone if successful; a system-wide error code otherwise. - @publishedAll - @released - */ - virtual TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight) = 0; - - /** Gets the number of typefaces supported by the typeface store. - - @return The number of supported typefaces. */ - virtual TInt NumTypefaces() const=0; - - /** Gets typeface information for a specified typeface index. - - This information is returned in aTypefaceSupport, and - includes the typeface name and typeface attributes, the number of font - heights, the maximum and minimum font heights, and whether it is a - scaleable typeface. - - @param aTypefaceSupport On return, if the function executed successfully, - this object contains the typeface information. - @param aTypefaceIndex A typeface index number, in the range: zero to - (NumTypefaces() - 1). */ - virtual void TypefaceSupport(TTypefaceSupport& aTypefaceSupport,TInt aTypefaceIndex) const=0; - - /** Gets the height of the font with specified height and typeface indices, - in twips. - - The value returned is rounded up or down to the nearest font height in twips. - - @param aTypefaceIndex A typeface index number, in the range: 0 to - (NumTypefaces() - 1). - @param aHeightIndex A font height index number. - @return The height of the font, in twips. */ - virtual TInt FontHeightInTwips(TInt aTypefaceIndex,TInt aHeightIndex) const=0; - IMPORT_C void ReleaseFont(CFont* aFont); - IMPORT_C static TInt BaselineOffset(TInt aHeight,TFontPrintPosition aPos); - IMPORT_C static TInt SuperSubHeight(TInt aHeight,TFontPrintPosition aPos); -protected: - IMPORT_C CTypefaceStore(); - IMPORT_C void ConstructL(); - IMPORT_C void AddFontL(CFont* aFont); - IMPORT_C TBool IncrementFontCount(const CFont* aFont); -private: - TBool FindFont(const CFont* aFont, TInt& aIdx) const; - NONSHARABLE_CLASS(TFontAccess) - /** - Pairs a font with a count of how many clients of the typeface store - are accessing that font. - */ - { - public: - /** A device specific font. */ - CFont* iFont; - /** The number of clients accessing the font. */ - TInt iAccessCount; - }; -protected: - /** A list of fonts accessed by clients of the typeface store, which pairs - a font with a count of the number of clients accessing the font. - - Implemented as an array of TFontAccess objects. - - An object is added to this array for every font accessed. If the font is - released by all clients, and the access count drops to zero, the font is - removed from the list. */ - CArrayFixFlat* iFontAccess; - }; - -/** The maximum number of entries in the font cache. - -@see CFontCache */ -const TInt KMaxFontCacheEntries=32; - -/** Font cache. - -When a CFont* needs to be found for a particular TFontSpec, the cache can -be searched to see if the TFontSpec is already in the cache. If the TFontSpec -is in the cache, its corresponding CFont* can be returned. Otherwise -GetNearestFontInTwips() must be used to search all of the available fonts for -the nearest CFont- a procedure which takes much longer than a simple cache -search. - -The current font cache should be destroyed and a new cache created whenever -the zoom factor or device map changes, as these changes break the relation -between CFont and TFontSpec. -@publishedAll -@released -*/ -class CFontCache : public CBase - { -public: - IMPORT_C CFontCache(); - IMPORT_C CFontCache(TInt aMaxEntries); - IMPORT_C ~CFontCache(); - IMPORT_C CFont* Search(const TFontSpec& aFontSpec); - IMPORT_C CFont* AddEntryL(CFont* aFont,const TFontSpec& aFontSpec); - IMPORT_C CFont* RemoveFirstEntry(); -public: - /** The number of cache hits since the font cache was created i.e. - successful results from CFontCache::Search(). */ - TInt iNumHits; - /** The number of cache misses since the font cache was created i.e. - unsuccessful results from CFontCache::Search(). */ - TInt iNumMisses; -private: - class CFontCacheEntry : public CBase - { - public: - CFontCacheEntry(CFont* aFont,const TFontSpec& aFontSpec,CFontCacheEntry* aNext); - public: - CFont* iFont; - TFontSpec iSpec; - CFontCacheEntry* iNext; - }; -private: - TInt iNumEntries; - TInt iMaxEntries; - CFontCacheEntry* iFirst; - }; /** Interface class for mapping between twips and device-specific units (pixels). @@ -1219,472 +740,17 @@ TInt iEnd; }; -/** -WARNING: this Class is for internal use ONLY. Compatibility is not guaranteed in future releases. -UIDs corresponding to the CFont API extension functions -@internalTechnology -*/ -const TUid KFontCapitalAscent = {0x1020498E}; -const TUid KFontMaxAscent = {0x10204B10}; -const TUid KFontStandardDescent = {0x10204B11}; -const TUid KFontMaxDescent = {0x10205AFC}; -const TUid KFontLineGap = {0x10204B12}; -const TUid KFontGetFontTable = {0x102872C1}; -const TUid KFontGetGlyphOutline = {0x102872C2}; -const TUid KFontReleaseGlyphOutline = {0x2002A1FD}; -const TUid KFontReleaseFontTable = {0x2002AC24}; - - -/** Abstract font interface. - -The CFont class provides a device-independent interface to a device-dependent -font usually obtained from a call to GetNearestFont...() on a graphics device. -It is used as a handle in CGraphicsContext::UseFont() and to obtain -device-dependent information about the font - notably the pixel width of a text -string. - -@see CFbsFont -@see CGraphicsContext::UseFont() -@publishedAll -@released -*/ -class CFont : public CBase - { - friend class CTypefaceStore; -public: - - /** Text direction flags. - - This enum is used in TMeasureTextInput and determines whether the text is - drawn horizontally or vertically. Note: text is drawn vertically in some - styles of Japanese, etc. - - @see TMeasureTextInput */ - enum TTextDirection - { - /** Text is drawn horizontally. */ - /** Text is drawn horizontally. */ - EHorizontal, - /** Text is drawn vertically. */ - EVertical - }; - - /** Complicated parameter block used for contextual glyph selection, - ligature creation and diacritic placement when drawing text in complex - scripts - - This class declares a constructor, another scoped class, and several other - enums. However this class is unlikely to be useful to third party developers. - - @see CFont::GetCharacterPosition() - @see CFont::GetCharacterPosition2() - @publishedAll - @released - */ - class TPositionParam - { - public: - /** Standard constructor. */ - TPositionParam(): - iDirection(EHorizontal), - iFlags(0), - iPosInText(0), - iOutputGlyphs(0) - { - } - - enum - { - EMaxInputChars = 18, // ligatures cannot be made from more than 18 components - EMaxOutputGlyphs = 8 // output can consist of up to 8 characters (one base and 7 combining characters) - }; - - /**Flags for TPositionParam::iFlags. */ - enum TFlags - { - /** Input text is logically ordered not visually ordered. */ - EFLogicalOrder = 1 - }; - - /** Input: Orientation (EHorizontal or EVertical) in which to draw - the text. */ - TInt16 iDirection; - /** Input: Flags from TFlags. */ - TUint16 iFlags; - /** Input: Text containing the characters to be positioned. */ - TPtrC iText; - - /** Input and output: Position within iText to shape. On exit - it will index the first character not positioned */ - TInt iPosInText; - /** Input and output: Pen position. */ - TPoint iPen; - - /** Output of GetCharacterPosition and GetCharacterPosition2. - @see CFont::GetCharacterPosition - @see CFont::GetCharacterPosition2 - @publishedAll - @released */ - class TOutput - { - public: - /** Standard constructor. */ - TOutput() : iBitmapSize(TSize::EUninitialized), - iBounds(TRect::EUninitialized) {} - /** Character or glyph code. */ - TUint iCode; - /** Bitmap data for the glyph, if available */ - const TUint8* iBitmap; - /** Size of the bitmap before algorithmic bolding, size - multiplication, etc. */ - TSize iBitmapSize; - /** Bitmap bounds relative to the original pen position. */ - TRect iBounds; - }; - - /** Information about the glyphs that were output. */ - TOutput iOutput[EMaxOutputGlyphs]; - /** Number of glyphs actually output. */ - TInt iOutputGlyphs; - }; - - - /** Input parameter block. - - This is optionally used by CFont::MeasureText(), which is the powerful text - measurement function underlying all the other text measurement functions. - - @see CFont::MeasureText() - @publishedAll - @released - */ - class TMeasureTextInput - { - public: - TMeasureTextInput(): - iStartInputChar(0), - iEndInputChar(KMaxTInt), - iDirection(EHorizontal), - iFlags(0), - iMaxAdvance(KMaxTInt), - iMaxBounds(KMaxTInt), - iCharJustNum(0), - iCharJustExcess(0), - iWordJustNum(0), - iWordJustExcess(0) - { - } - - /**Flags for TMeasureTextInput::iFlags. */ - enum TFlags - { - /** Input text is visually ordered left-to-right. */ - EFVisualOrder = 1, - /** Input text is visually ordered right-to-left. - Overrides EFVisualOrder. */ - EFVisualOrderRightToLeft = 2, - /** Flag to consider side bearings when checking bounds for line-break */ - EFIncludePenPositionInBoundsCheck = 4 - }; - - /** Starting index specifying first input character in iText. - - Together with iEndInputChar, this allows some context before and - after the measured text to be supplied so that shaping can work - properly. */ - TInt iStartInputChar; - - /** Index specifying the final input character. - - Together with iStartInputChar, this allows some context before and - after the measured text to be supplied so that shaping can work - properly. */ - TInt iEndInputChar; - - /** The direction in which to draw the text. */ - TUint16 iDirection; - - /** Flags from TFlags. */ - TUint16 iFlags; - - /** The maximum advance. */ - TInt iMaxAdvance; - - /** The maximum width (or height if drawing vertically) of bounds. */ - TInt iMaxBounds; - - /** The number of glyph groups to be letter-spaced. */ - TInt iCharJustNum; - - /** The amount of space to be used for letter spacing. */ - TInt iCharJustExcess; - - /** The number of spaces to be used for word spacing. */ - TInt iWordJustNum; - - /** The amount of space to be used for word spacing. */ - TInt iWordJustExcess; - }; - - /** Output parameter block. - - This is optionally used by CFont::MeasureText(), which is the powerful text - measurement function underlying all the other text measurement functions. - - @see CFont::MeasureText() - @publishedAll - @released - */ - class TMeasureTextOutput - { - public: - /** The number of input characters that would be drawn. - - This may be less than the length of the text if a maximum advance or bounding - box size is specified. */ - TInt iChars; - /** The number of glyphs that would be drawn. */ - TInt iGlyphs; - /** The number of groups that would be drawn. - - A group is a base glyph plus one or more combining characters. */ - TInt iGroups; - /** The number of word spaces (U+0020) that would be drawn. */ - TInt iSpaces; - /** The bounding box of all the glyphs that would be drawn. */ - TRect iBounds; - /** The maximum width and height of any glyph. */ - TSize iMaxGlyphSize; - }; - - /** - Data availability flags. - - Some fonts like printer fonts may only have width information and can return - ECharacterWidthOnly to show this: the text drawing routines in CFont synthesize - the rest of the data if necessary. - - @see GetCharacterData() - @publishedAll - @released - */ - enum TCharacterDataAvailability - { - /** No font information available. */ - ENoCharacterData, - /** Width information only is available. */ - ECharacterWidthOnly, - /** All character data is available. */ - EAllCharacterData - }; - -private: - // virtual functions have been made protected and public non-virtual ones - // added to convert CFont to a handle-body pattern. SC is kept throught the - // new functions and BC is kept by keeping the protected functions in the - // same place in the class, and therefore in the same place in the vtable - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TUid DoTypeUid() const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoHeightInPixels() const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoAscentInPixels() const=0; - IMPORT_C virtual TInt DoDescentInPixels() const; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoCharWidthInPixels(TChar aChar) const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoTextWidthInPixels(const TDesC& aText) const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoBaselineOffsetInPixels() const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels) const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoMaxCharWidthInPixels() const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TInt DoMaxNormalCharWidthInPixels() const=0; - /** - @publishedAll - WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation. - */ - virtual TFontSpec DoFontSpecInTwips() const=0; - -protected: - IMPORT_C virtual TCharacterDataAvailability DoGetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const; - IMPORT_C virtual TBool DoGetCharacterPosition(TPositionParam& aParam) const; - IMPORT_C virtual TInt DoExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const; - -protected: - IMPORT_C virtual ~CFont(); - -public: - inline TInt FontCapitalAscent() const; - inline TInt FontMaxAscent() const; - inline TInt FontStandardDescent() const; - inline TInt FontMaxDescent() const; - inline TInt FontLineGap() const; - inline TInt FontMaxHeight() const; - -public: - /** Gets run-time identity of the actual font type. This enables safe casting to - a derived type. - - For example, if the derived type is a CFbsFont, the return value is KCFbsFontUid. - You would need to cast to a CFbsFont to get a character bounding box. Similarly, - a CBitmapFont returns KCBitmapFontUidVal. - - @return The font-type identifier. */ - IMPORT_C TUid TypeUid() const; - - /** Gets the font height in pixels. - Note that this deprecated function is replaced by the new @c FontMaxHeight(). - - @return The font height in pixels. - @see FontMaxHeight() - @deprecated */ - IMPORT_C TInt HeightInPixels() const; - - /** Gets the font ascent in pixels. - Note that this deprecated function is replaced by the new @c FontMaxAscent() - or in some cases @c FontCapitalAscent(). - - @return The font ascent in pixels. - @see FontCapitalAscent() - @see FontMaxAscent() - @deprecated */ - IMPORT_C TInt AscentInPixels() const; - - /** Gets the font descent in pixels. - Note that this deprecated function is replaced by the new @c FontMaxDescent() - or in some cases @c FontStandardDescent(). - - @return The font descent in pixels. - @see FontStandardDescent() - @see FontMaxDescent() - @deprecated */ - IMPORT_C TInt DescentInPixels() const; - - /** Gets the width in pixels in this font of the specified character. - - Note: For OpenType fonts this function returns the horizontal advance of - the character, which may be different from the actual width. - - @param aChar The character whose width should be determined. - @return The width in pixels of the specified character in this font. */ - IMPORT_C TInt CharWidthInPixels(TChar aChar) const; - - /** Gets the width in pixels of the specified descriptor when displayed in this - font. - - @param aText The descriptor whose width should be determined. - @return The width of the specified descriptor when displayed in this font, - in pixels. */ - IMPORT_C TInt TextWidthInPixels(const TDesC& aText) const; - - /** Gets the baseline offset in pixels. - - The baseline offset is how far a font is raised or lowered from its normal - baseline. - - @return Offset from normal baseline, in pixels. */ - IMPORT_C TInt BaselineOffsetInPixels() const; - - /** Gets how much of the specified descriptor can be displayed in this font without - exceeding the specified width. - - Note: - - This function does not display any of the descriptor itself - it is used - before display, to test whether the whole descriptor can be displayed. - - @param aText The descriptor. - @param aWidthInPixels The available width for character display. - @return The number of characters which will be able to be displayed without - exceeding the specified width. The count starts from the beginning of the - descriptor. */ - IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels) const; - - /** Gets how much of the specified descriptor can be displayed in this font without - exceeding the specified width. - - It also returns the excess width - defined as the specified available width - minus the width of the portion of the descriptor which can be displayed without - exceeding the available width. - - @param aText The descriptor. - @param aWidthInPixels The available width for character display. - @param aExcessWidthInPixels The excess width after displaying the portion of - the descriptor, in pixels. - @return The number of characters which will be able to be displayed without - exceeding the specified width. The count starts from the beginning of the - descriptor. */ - IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const; - - /** Gets the width in pixels of the widest character in this font. - - @return The width of the maximum width character, in pixels. */ - IMPORT_C TInt MaxCharWidthInPixels() const; - - /** Gets the width in pixels of the widest normal character in this font. - - Normal characters include all character in a character set except non-alphabetic - characters (e.g. the copyright symbol, or a block graphics symbol, for example). - - @return The width of the maximum width normal character, in pixels. */ - IMPORT_C TInt MaxNormalCharWidthInPixels() const; - - /** Gets the font specification of this font in twips. - - @return The font specification of this font (in twips). */ - IMPORT_C TFontSpec FontSpecInTwips() const; - IMPORT_C TCharacterDataAvailability GetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const; - IMPORT_C TBool GetCharacterPosition(TPositionParam& aParam) const; - IMPORT_C TInt WidthZeroInPixels() const; - IMPORT_C TInt MeasureText(const TDesC& aText, const TMeasureTextInput* aInput = NULL, TMeasureTextOutput* aOutput = NULL) const; - IMPORT_C static TBool CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter); - IMPORT_C TInt ExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const; - IMPORT_C TBool GetCharacterPosition2(TPositionParam& aParam, RShapeInfo& aShapeInfo) const; - - /** Gets the width in pixels of the specified descriptor when displayed in this - font. - - @param aText The descriptor whose width should be determined. - @param aParam Parameter block that controls how much of aText is measured - @return The width of the specified descriptor when displayed in this font, - in pixels. */ - IMPORT_C TInt TextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam) const; - }; +// These types/consts are moved from Gdi.h to TextBase.h. +// const TUid KFontCapitalAscent +// const TUid KFontMaxAscent +// const TUid KFontStandardDescent +// const TUid KFontMaxDescent +// const TUid KFontLineGap +// const TUid KFontGetFontTable +// const TUid KFontGetGlyphOutline +// const TUid KFontReleaseGlyphOutline +// const TUid KFontReleaseFontTable +// class CFont class CFbsBitmap; class CWsBitmap; diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/GDI.INL --- a/graphicsdeviceinterface/gdi/inc/GDI.INL Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/inc/GDI.INL Fri Sep 17 08:36:49 2010 +0300 @@ -573,83 +573,3 @@ @return The graphics device map of the TZoomFactor. */ {return(iDevice);} - - - -/** Gets the ascent of an ANSI capital letter in the font whether or not -there are any ANSI capitals in the font. -@return The positive distance from the font baseline to the top of a -standard ANSI capital letter -@publishedAll -@released -*/ -inline TInt CFont::FontCapitalAscent() const - { - return ExtendedFunction(KFontCapitalAscent); - } - -/** Gets the max ascent of any pre-composed glyph in the font. This will -include accents or diacritics that form part of pre-composed glyphs. It is -not guaranteed to cover the max ascent of composite glyphs that have to be -created by a layout engine. This is also the recommended distance between -the top of a text box and the baseline of the first line of text. -@return The positive distance from the font baseline to the top of the -highest pre-composed glyph (including accents) above the baseline -@publishedAll -@released -*/ -inline TInt CFont::FontMaxAscent() const - { - return ExtendedFunction(KFontMaxAscent); - } - -/** Gets the descent of an ANSI descending character in the font. -Whether or not there are any ANSI descenders in the font. -@return The positive distance from the font baseline to the bottom of the -lowest ANSI descender -@publishedAll -@released -*/ -inline TInt CFont::FontStandardDescent() const - { - return ExtendedFunction(KFontStandardDescent); - } - -/** Gets the max descent of any pre-composed glyph in the font. This will -include accents or diacritics that form part of pre-composed glyphs. It is -not guaranteed to cover the max descent of composite glyphs that have to be -created by a layout engine. -@return The positive distance from the font baseline to the bottom of the -lowest pre-composed glyph (including accents) below the baseline -@publishedAll -@released -*/ -inline TInt CFont::FontMaxDescent() const - { - return ExtendedFunction(KFontMaxDescent); - } - -/** Gets the suggested line gap for the font. This is the recommended -baseline to baseline distance between successive lines of text in the font. -@return The positive recommended gap between successive lines -@publishedAll -@released -*/ -inline TInt CFont::FontLineGap() const - { - return ExtendedFunction(KFontLineGap); - } - -/** -Gets the (positive) maximum height in pixels of the font. -This may differ from the design height. - -@return The maximum height of the font. -@publishedAll -@released -*/ -inline TInt CFont::FontMaxHeight() const - { - return FontMaxAscent() + FontMaxDescent(); - } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/LineBreak.h --- a/graphicsdeviceinterface/gdi/inc/LineBreak.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,229 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef LINEBREAK_H_ -#define LINEBREAK_H_ - -#include -class MContingentLineBreaker; -class MContingentLineBreakerL; -class TDesC16; -class TUid; - - -/** - This enumeration holds the possible panic codes that may be raised - by the LineBreak API on detecting an unrecoverable error. -@publishedAll -@released -*/ -enum TLineBreakPanic - { - /** Not used */ - ELineBreakPanic_Unknown = 0, - /** Internal error, error found in data table */ - ELineBreakPanic_BadTable = 1, - /** One or more of the input parameters to the interface were invalid */ - ELineBreakPanic_InvalidInputParam = 2, - /** Raised when an output parameter breaks an API condition */ - ELineBreakPanic_InvalidOutputParam = 3, - }; - - - -class MLineBreaker -/** -Customizes the Unicode line-breaking algorithm. -@publishedAll -@released -*/ - { -public: - /** The Unicode line breaking classes; see Unicode Technical Report 14. - Not a named enumerated type, so that overriding classes may add new - line breaking classes freely. - The description of each constant gives the name of the line-breaking - class, an example and a brief, imprecise description of the default - behaviour of characters of that class. */ - enum - { - /** Opening Punctuation (e.g. '['). Breaking after prohibited. */ - EOpLineBreakClass, - /** Closing Punctuation (e.g. ']'). Breaking before prohibited. */ - EClLineBreakClass, - /** Ambiguous Quotes (e.g. '"'). Breaking before and after prohibited. */ - EQuLineBreakClass, - /** Glue (e.g. Non-breaking space). Breaking before and after prohibited - unless spaces are present. */ - EGlLineBreakClass, - /** Non-Starter (e.g. small Japanese kana). Breaking before prohibited - if no spaces present. */ - ENsLineBreakClass, - /** Exclamation or Interrogation (e.g. '?'). Like closing punctuation - except before Postfix or Non-starter. */ - EExLineBreakClass, - /** Symbol (e.g. '/'. Like Alphabetic, but allows breaking before - Alphabetic. */ - ESyLineBreakClass, - /** Numeric Infix Separator (e.g. ','). Forbids breaking after any and before - Numeric. */ - EIsLineBreakClass, - /** Numeric Prefix (e.g. '$'). Forbids breaking before Numeric. */ - EPrLineBreakClass, - /** Numeric Postfix (e.g. '%'). Forbids breaking after Numeric. */ - EPoLineBreakClass, - /** Numeric (e.g. '1'). */ - ENuLineBreakClass, - /** Alphabetic (e.g. 'a'). */ - EAlLineBreakClass, - /** Ideographic (e.g. Japanese Kanji). Generally break before or after */ - EIdLineBreakClass, - /** Inseparable (e.g. ellipsis). Forbid breaks between Inseparables. */ - EInLineBreakClass, - /** Hyphen (e.g. '-'). Allows a break after except before Numeric. */ - EHyLineBreakClass, - /** Break After. Generally allow a break after. Breaking between Break - Afters not separated by spaces is prohibited. */ - EBaLineBreakClass, - /** Break Before. Generally allow a break before. Breaking between Break - Befores not separated by spaces is prohibited. */ - EBbLineBreakClass, - /** Break Before and After. Generally allow a break before or after. - Breaking between Break Before and Afters is prohibited, even if spaces - are present. */ - EB2LineBreakClass, - /** Zero-Width Space. Allow a break. */ - EZwLineBreakClass, - /** Combining Mark. Takes on the class of its base class. */ - ECmLineBreakClass, - /** Mandatory Break. */ - EBkLineBreakClass, - /** Carriage Return. Break after unless part of a CRLF pair. */ - ECrLineBreakClass, - /** Line Feed. Break after. */ - ELfLineBreakClass, - /** Surrogate. Half of a surrogate pair. */ - ESgLineBreakClass, - /** Contingent Break (e.g. embedded pictures). Uses external - information */ - ECbLineBreakClass, - - /** Space. Intervening characters of class Space are indicated by - aHaveSpaces in LineBreakPossible. */ - ESpLineBreakClass, - - /** Complex Context (e.g. Thai). Runs of Complex Context are passed to - GetLineBreakInContext. */ - ESaLineBreakClass, - - /** Ambiguous. Characters of ambiguous East Asian width are treated - as Alphabetic, unless they are resolved as being "Wide", in which case - they are treated as Ideographic. */ - EAiLineBreakClass, - - /** The Xx class is used when the class is unknown; e.g.; outside the provided context. */ - EXxLineBreakClass, - - /** The number of Unicode line break classes. */ - ELineBreakClasses - }; - - IMPORT_C virtual TUint LineBreakClass(TUint aCode, - TUint& aRangeStart, TUint& aRangeEnd) const; - IMPORT_C virtual TBool LineBreakPossible(TUint aPrevClass, TUint aNextClass, - TBool aHaveSpaces) const; - IMPORT_C virtual TBool GetLineBreakInContext(const TDesC16& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards, - TInt& aBreakPos) const; - IMPORT_C virtual TBool IsHangingCharacter(TUint aChar) const; - IMPORT_C TBool GetLineBreak(const TDesC16& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards, - MContingentLineBreaker* aCbDelegate, - TInt& aBreakPos, TInt& aBreakPosAfterSpaces) const; - IMPORT_C TBool GetLineBreakL(const TDesC16& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards, - MContingentLineBreakerL* aCbDelegate, - TInt& aBreakPos, TInt& aBreakPosAfterSpaces) const; - IMPORT_C virtual void* ExtendedInterface(TUid& aUid) const; - }; - - -class MContingentLineBreaker -/** -Used to determine the line breaks around pictures and other characters with -the CB (contingent line break) class in situations where this operation cannot -leave. -@publishedAll -@released -*/ - { -public: - /** Determines if a break is legal before the picture at aTextPosition. - - @param aTextPosition The position of a character of line breaking class ECbLineBreakClass - in the text as supplied to MLineBreaker::GetLineBreak(), which may refer to - a picture. - @param aPrecedingClass The class of the character preceding aTextPosition. - @param aHasSpaces ETrue if spaces separate the preceding class from this. - @return ETrue if a line break is legal here. */ - virtual TBool IsLegalBreakBefore(TInt aTextPosition, TInt aPrecedingClass, - TBool aHasSpaces) = 0; - /** Determines if a break is legal after the picture at aTextPosition. - - @param aTextPosition The position of a character of line breaking class ECbLineBreakClass - in the text as supplied to MLineBreaker::GetLineBreak, which may refer to - a picture. - @param aFollowingClass The class of the character immediately following aTextPosition. - @param aHasSpaces ETrue if spaces separate the following class from this. - @return ETrue if a line break is legal here. */ - virtual TBool IsLegalBreakAfter(TInt aTextPosition, TInt aFollowingClass, - TBool aHasSpaces) = 0; - }; - - - -class MContingentLineBreakerL -/** -Used to determine the line breaks around pictures and other characters with -the CB (contingent line break) class in situations where this operation may -leave. -@publishedAll -@released -*/ - { -public: - /** Determines if a break is legal before the picture at aTextPosition. - - @param aTextPosition The position of a character of line breaking class ECbLineBreakClass - in the text as supplied to MLineBreaker::GetLineBreak(), which may refer to - a picture. - @param aPrecedingClass The class of the character preceding aTextPosition. - @param aHasSpaces ETrue if spaces separate the preceding class from this. - @return ETrue if a line break is legal here. */ - virtual TBool IsLegalBreakBeforeL(TInt aTextPosition, TInt aPrecedingClass, - TBool aHasSpaces) = 0; - /** Determines if a break is legal after the picture at aTextPosition. - - @param aTextPosition The position of a character of line breaking class ECbLineBreakClass - in the text as supplied to MLineBreaker::GetLineBreak(), which may refer to - a picture. - @param aFollowingClass The class of the character immediately following aTextPosition. - @param aHasSpaces ETrue if spaces separate the preceding class from this. - @return ETrue if a line break is legal here. */ - virtual TBool IsLegalBreakAfterL(TInt aTextPosition, TInt aFollowingClass, - TBool aHasSpaces) = 0; - }; - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/ShapeImpl.h --- a/graphicsdeviceinterface/gdi/inc/ShapeImpl.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef SHAPEIMPL_H_ -#define SHAPEIMPL_H_ - -#include - -/**@file -@internalTechnology -*/ - -class CFont; -class TDesC16; - -const TUid KFontGetShaping = {0x10274246}; -const TUid KFontDeleteShaping = {0x102744D7}; - -/** Internal class describing shaping information. */ -class TShapeHeader - { -public: - /** Number of glyphs output. */ - TInt iGlyphCount; - /** Number of characters consumed from the input. */ - TInt iCharacterCount; - /** Reserved for future expansion. */ - TInt iReserved0; - /** Reserved for future expansion. */ - TInt iReserved1; - /** The glyph, position and indices data. - - The first iGlyphCount * 4 bytes contain the glyph codes - as 2-byte values. The next iGlyphCount * 4 + 4 bytes contain the - positions in which these glyphs are to be drawn, in pixels, taking - the original pen position as origin, with the x axis going right and - the y axis going down. The next iGlyphCount * 2 bytes contain the - indices of the characters in the input string that correspond to the - glyphs in the output. - - The final entry in the position array is the total advance of the text. - - Therefore this buffer is actually iGlyphCount * 10 + 4 bytes long. */ - TInt8 iBuffer[1]; - }; - -/** For CFont::ExtendedFunctions aParam argument, with KFontGetShaping -function ID. */ -class TFontShapeFunctionParameters - { -public: - /** The text, including context. */ - const TDesC16* iText; - /** The start of the meat within iText. */ - TInt iStart; - /** The end of the meat within iText. */ - TInt iEnd; - /** Script code. */ - TInt iScript; - /** Language code. 0 for default. */ - TInt iLanguage; - /** Output from the shaper; a TShapeHeader on the shared heap. */ - const TShapeHeader* iShapeHeaderOutput; - }; - -/** For CFont::ExtendedFunctions aParam argument, with KFontDeleteShaping -function ID. */ -class TFontShapeDeleteFunctionParameters - { -public: - const TShapeHeader* iShapeHeader; - }; - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/ShapeInfo.h --- a/graphicsdeviceinterface/gdi/inc/ShapeInfo.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef SHAPEINFO_H_ -#define SHAPEINFO_H_ - -#include - -class CFont; -class TDesC16; -class TShapeHeader; - -/** Holds shaping information for text that requires it (for example Indic -text). -@publishedAll -@released -*/ -class RShapeInfo - { -public: - struct TPoint16 - { - TInt16 iX; - TInt16 iY; - }; - IMPORT_C RShapeInfo(); - TInt Open(const CFont* aFont, const TDesC16& aText, - TInt aStartOfTextToShape, TInt aEndOfTextToShape, - TInt aScriptCode, TInt aLanguageCode); - IMPORT_C void Close(); - TInt GlyphCount() const; - const TInt32* Glyphs() const; - const TPoint16* GlyphPositions() const; - TPoint16 Advance() const; - const TInt16* Indices() const; - TInt EndOfShapedText(); - IMPORT_C TBool IsOpen(); - void SetContext(TAny* aContextualProcessFunc); - TAny* GetContext(); -private: - const CFont* iFont; - const TShapeHeader* iHeader; - TInt iEndOfShapedText; - TAny* iContextualProcessFunc; - }; - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/gdiinline.inl --- a/graphicsdeviceinterface/gdi/inc/gdiinline.inl Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Contains the inline functions IsAlphaChannel, QuoteOrBracketPair and IsIgnoredCharacterForLocalisedProcFunc. -// -// -#ifndef GDIINLINE_INL -#define GDIINLINE_INL - - -/** Utility function to check if a display mode has Alpha channel information -@param aDisplayMode - the display mode being queried -@return ETrue if display mode contains Alpha information. -@internalTechnology -@released -*/ -inline TBool IsAlphaChannel(TDisplayMode aDisplayMode) - { - if(aDisplayMode == EColor16MAP || aDisplayMode == EColor16MA) - return ETrue; - else - return EFalse; - } - -/** -@internalTechnology -@released -*/ -inline TUint QuoteOrBracketPair(TUint code) - { - // given the opening/closing quote or bracket, return the corresponding closing/opening quote or bracket - switch(code) - { - case 0x0022: return 0x0022; // "..." - case 0x0027: return 0x0027; // '...' - case 0x0028: return 0x0029; // (...) - case 0x003c: return 0x003e; // <...> - case 0x005b: return 0x005d; // [...] - case 0x007b: return 0x007d; // {...} - case 0x2018: return 0x2019; // Single quotation marks - case 0x201b: return 0x2019; // Single high-reversed-9 quotation mark - case 0x201c: return 0x201d; // Double quotation marks - case 0x201f: return 0x201d; // Double high-reversed-9 quotation mark - case 0x2035: return 0x2032; // Single primes - case 0x2036: return 0x2033; // Double primes - case 0x2037: return 0x2034; // Triple primes - case 0x2039: return 0x203a; // Single left/right-pointing angle quotation marks - case 0x2045: return 0x2046; // Square brackets with quill - - case 0x0029: return 0x0028; // (...) - case 0x003e: return 0x003c; // <...> - case 0x005d: return 0x005b; // [...] - case 0x007d: return 0x007b; // {...} - case 0x2019: return 0x2018; // Single quotation marks - case 0x201d: return 0x201c; // Double quotation marks - case 0x2032: return 0x2035; // Single primes - case 0x2033: return 0x2036; // Double primes - case 0x2034: return 0x2037; // Triple primes - case 0x203a: return 0x2039; // Single left/right-pointing angle quotation marks - case 0x2046: return 0x2045; // Square brackets with quill - - default: return 0; - } - } - -/** -@internalTechnology -@released -*/ -inline TBool IsIgnoredCharacterForLocalisedProcFunc(TChar aCode) - { - TChar::TBdCategory cat = aCode.GetBdCategory(); - - if ((cat == TChar::ELeftToRight || - cat == TChar::ERightToLeft || - cat == TChar::ERightToLeftArabic) && aCode != 0 && aCode != 0xFFFF) - return EFalse; - - return ETrue; - } - - - - -#endif /* GDIINLINE_INL */ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/gdiplatapi.h --- a/graphicsdeviceinterface/gdi/inc/gdiplatapi.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __GDIPLATAPI_H__ -#define __GDIPLATAPI_H__ - -#include - -/* - * Please note that RFontTable API is officially supported from SymTB10.1. - * It is not guaranteed to work in SymTB9.2 or earlier. - * - * The class keeps the parameter 'aFont', and will use it in Close(). - * Destructing the CFont object before calling Close() can result in Panic. - * - * @publishedPartner - */ -class RFontTable - { -public: - IMPORT_C RFontTable(); - IMPORT_C TInt Open(CFont& aFont, TUint32 aTag); - IMPORT_C TInt TableLength() const; - IMPORT_C const TUint8* TableContent() const; - IMPORT_C void Close(); -private: - TAny* iTableContent; - TInt iLength; - - // need to remember font and table name, to be used in releasing the table - const CFont* iFont; - TUint32 iTag; - }; - - -/* - * Please note that RGlyphOutlineIterator API is officially supported - * from SymTB10.1. It is not guaranteed to work in SymTB9.2 or earlier. - * - * The class keeps the parameter 'aFont', and will use it in Close(). - * Destructing the CFont object before calling Close() can result in Panic. - * - * @publishedPartner - */ -class RGlyphOutlineIterator - { -public: - IMPORT_C RGlyphOutlineIterator(); - IMPORT_C TInt Open(CFont& aFont, const TUint* aCodes, TInt aCount, TBool aHinted = EFalse); - IMPORT_C TInt Next(); - IMPORT_C const TUint8 *Outline() const; - IMPORT_C TInt OutlineLength() const; - IMPORT_C void Close(); -private: - TAny** iOutlines; - TInt* iLengths; - TInt iCursor; - TInt iCount; - - // these information is needed in Close(). - const CFont* iFont; - TUint* iCodes; - TBool iHinted; - }; - - -#endif __GDIPLATAPI_H__ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/gdistructs.h --- a/graphicsdeviceinterface/gdi/inc/gdistructs.h Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/inc/gdistructs.h Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -57,45 +57,9 @@ TPtrC iText; }; - -/* -Structure used to pass input/output parameters between RFontTable and CFbsFont. -@internalTechnology -*/ -class TGetFontTableParam - { -public: - TUint32 iTag; - TAny *iContent; - TInt iLength; - }; - -/* -Structure used to pass input/output parameters between RGlyphOutlineIterator and CFbsFont. -Used when opening an outline iterator. -@internalTechnology -*/ -class TGetGlyphOutlineParam - { -public: - TInt iCount; - const TUint *iCodes; - TBool iHinted; - TAny **iOutlines; - TInt *iLengths; - }; - -/* -Structure used to pass input/output parameters between RGlyphOutlineIterator and CFbsFont. -Used when closing an outline iterator. -@internalTechnology -*/ -class TReleaseGlyphOutlineParam - { -public: - TInt iCount; - const TUint *iCodes; - TBool iHinted; - }; +// These types are moved from Gdi.h to TextBase.h. +// class TGetFontTableParam +// class TGetGlyphOutlineParam +// class TReleaseGlyphOutlineParam #endif /* GDISTRUCTS_H */ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/glyphsample.h --- a/graphicsdeviceinterface/gdi/inc/glyphsample.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// GlyphSample class. - -#ifndef GLYPHSAMPLE_H -#define GLYPHSAMPLE_H - -/** -Provides methods to map a TLanguage type to some pre-defined glyph samples. -Samples are defined per writing script, e.g. specifying ELangFrench or -ELangGerman will return the same set of samples. -These samples are typically the tallest and 'deep'est characters w.r.t -various scripts, useful for font rasterizers when calculating metrics. -@internalTechnology -*/ -NONSHARABLE_CLASS(GlyphSample) - { -public: - /** - Writing scripts defined according to Unicode. - */ - enum TScript - { - EScriptDefault = 0x0, // No script, can't be bothered - EScriptNone = 0x1, // No script, really - EScriptOther = 0x2, // Unsupported scripts - EScriptLatin = 0x3, // European - EScriptGreek = 0x4, // European - EScriptCyrillic = 0x5, // European - EScriptHebrew = 0x6, // Middle Eastern - EScriptArabic = 0x7, // Middle Eastern - EScriptDevanagari = 0x8, // Indic - EScriptThai = 0x9, // SE Asian - EScriptHanIdeographs = 0xA, // E Asian - }; -public: - IMPORT_C static TInt TLanguage2TScript(TLanguage aLanguage); - IMPORT_C static const TPtrC TScript2GlyphSample(TInt aScript); -private: - static const TInt KTLanguage2TScript[]; - static const TText* const KTScript2GlyphSample[]; - }; - -#endif /* GLYPHSAMPLE_H */ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/hextree.h --- a/graphicsdeviceinterface/gdi/inc/hextree.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Hexadecimal trees - declaration -// - -#ifndef HEXTREE_H -#define HEXTREE_H - -#include - -/** -Base class that provides the implementation for RHexTree, which is just a thin -template. - -An instance of this class can have up to eight 16-way prefix trees, with heights -from 1 to 8. All the values are stored in the leaves. To find a value from a -32-bit key, first the key is decomposed into 8 hexadecimal digits and then the -prefix tree with height matching the number of digits in the key (ignoring zeros -to the left) is traversed using the sequence of digits in the key as the -indexing string. Offsets are internally used instead of pointers to allow -instances to be placed in a heap shared between several processes. -*/ -class RHexTreeBase - { -public: - IMPORT_C void ResetAndDestroy(); -protected: - IMPORT_C RHexTreeBase(RHeap* aHeap); - IMPORT_C TInt SetAt(TUint aKey, TAny* aValue); - IMPORT_C TAny* At(TUint aKey) const; -private: - TInt SetAt(TUint aKey, TAny* aLeaf, TInt aHeight); - TInt SetAt(TUint aKey, TAny* aLeaf, TInt aHeight, TAny* aNode, TInt aLevel); - TAny* At(TUint aKey, TInt aHeight) const; - void ResetAndDestroy(TInt aHeight, TAny* aNode, TInt aLevel); -private: - enum { EMaxNumHexDigits = 8 }; -private: - RHeap* iHeap; - TInt iRootOffsets[EMaxNumHexDigits]; - }; - -/** -An associative array implementation optimised for the case where the keys are -32-bit codes with spatial locality of reference. The values can be of any -self-contained data type (that is, without destructor or clean-up functions). -It allows multiple-readers, single-writer concurrent access from different -processes in an SMP-safe manner without locking, excluding deletion of -individual key-value pairs. -*/ -template -class RHexTree : public RHexTreeBase - { -public: - inline RHexTree(RHeap* aHeap); - inline TInt SetAt(TUint aKey, T* aValue); - inline const T* At(TUint aKey) const; - inline T* At(TUint aKey); - }; - -#include - -#endif // HEXTREE_H diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/hextree.inl --- a/graphicsdeviceinterface/gdi/inc/hextree.inl Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Hexadecimal trees - inline functions -// - -#ifndef HEXTREE_INL -#define HEXTREE_INL - -/** -Constructor. It constructs an associative array with no key-value pairs. - -@param aHeap A pointer to the heap to be used by the associative array - implementation to allocate memory for internal data structures. This - heap can be shared between several processes. -*/ -template -inline RHexTree::RHexTree(RHeap* aHeap) - : RHexTreeBase(aHeap) - { - } - -/** -Adds a key-value pair to this associative array. - -@param aKey The 32-bit key to add to this associative array. -@param aValue A pointer to the value to associate with aKey. It must have been - allocated on the same heap as the one used by the associative array - implementation to allocate memory for internal data structures. Ownership - is transferred to this associative array. -@return KErrNone if the key-value pair was added successfully. KErrNoMemory if - there was not enough memory in the heap for internal data structures. - KErrAlreadyExists if an attempt was made to add a duplicate key. -*/ -template -inline TInt RHexTree::SetAt(TUint aKey, T* aValue) - { - return RHexTreeBase::SetAt(aKey, aValue); - } - -/** -Looks up a given key in this associative array and returns a pointer to the -corresponding value. - -@param aKey The 32-bit key to look up. -@return A pointer to the corresponding value in this associative array, if the - given key was found. The value may not be modified via this pointer. - NULL if the given key was not found. -*/ -template -inline const T* RHexTree::At(TUint aKey) const - { - return static_cast(RHexTreeBase::At(aKey)); - } - -/** -Looks up a given key in this associative array and returns a pointer to the -corresponding value. Note that if values are modified after being added to an -associative array, then the user is responsible for synchronisation when -concurrent access is needed. - -@param aKey The 32-bit key to look up. -@return A pointer to the corresponding value in this associative array, if the - given key was found. The value may be modified via this pointer. - NULL if the given key was not found. -*/ -template -inline T* RHexTree::At(TUint aKey) - { - return static_cast(RHexTreeBase::At(aKey)); - } - -#endif // HEXTREE_INL diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/mglyph/mglyphtool.pl --- a/graphicsdeviceinterface/gdi/mglyph/mglyphtool.pl Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,364 +0,0 @@ -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# - -use strict; - -## Used as global variables, probably need to change and pass variables through as parameters. -my %globalValues=(); -##initialise filenames -$globalValues{'inputFile'} = 'mglyphs.txt'; -$globalValues{'outputFileName'} = 'mglyphs.inl'; -$globalValues{'htmlFileName'} = 'mglyphs.html'; -$globalValues{'lgtablesize'} = 9; # Default tablesize value is 512 -$globalValues{'tablesize'} = 1 << $globalValues{'lgtablesize'}; -$globalValues{'storeashex'} = 0; -$globalValues{'stepOffset'} = 72; -$globalValues{'stepShift'} = 0; - -## die if the correct number of argumements have not been entered -&extractFlags(\@ARGV, \%globalValues); -&printDebug("Remainder:$globalValues{'tablesize'}\n"); -&printDebug("StoreAsHex:$globalValues{'storeashex'}\n"); - -if ($globalValues{"information"}) - { - &dieShowingUsage(); - } - -&printDebug("Creating HashTable....\n"); -my %hashTable = &createHashTable($globalValues{'inputFile'}); -if (!defined(%hashTable)) - { - die("ERROR: Hash table was not created\n"); - } -if ($globalValues{"outputtohtml"}) - { - my $htmlFileName = $globalValues{'htmlFileName'}; - &printDebug("Creating HTML output to file: $htmlFileName\n"); - &createHTMLOfMappings($htmlFileName, %hashTable); - } -my $outputFileName = $globalValues{'outputFileName'}; -&printDebug("Writing Hash table to file: $outputFileName\n"); -&writeHashTableToFile($outputFileName, %hashTable); -&printDebug("$outputFileName created."); - -##################### end of main section -sub extractFlags - { - my $aArgumentArray=shift; - my $aArguments=shift; - my $expectedArg = 'lgtablesize'; - my $expectedExtension; - foreach my $argument (@$aArgumentArray) - { - if ($argument =~ m!^[-/]([a-zA-Z].*)$!) - { - my $switch = $1; - $expectedArg = 'lgtablesize'; - $expectedExtension = undef; - if ($switch=~/^(x|hexoutput)$/i) - { - $$aArguments{'storeashex'}=1; - } - elsif ($switch=~/^(\?|help)$/i) - { - $$aArguments{'information'}=1; - } - elsif ($switch=~/^(v|verbose)$/i) - { - $$aArguments{'verbose'}=1; - } - elsif ($switch=~/^(h|outputtohtml)$/i) - { - $$aArguments{'outputtohtml'}=1; - $expectedArg = 'htmlFileName'; - $expectedExtension = '.html'; - } - elsif ($switch=~/^(i|input)$/i) - { - $expectedArg = 'inputFile'; - } - elsif ($switch=~/^(o|output)$/i) - { - $expectedArg = 'outputFileName'; - $expectedExtension = '.inl'; - } - elsif ($switch=~/^(offset)$/i) - { - $expectedArg = 'stepOffset'; - } - elsif ($switch=~/^(shift)$/i) - { - $expectedArg = 'stepShift'; - } - } - else - { - if (defined $expectedExtension && $argument !~ m!\.[^/\\]*$!) - { - $argument .= $expectedExtension; - } - $$aArguments{$expectedArg} = $argument; - $expectedArg = 'lgtablesize'; - } - } - $globalValues{'tablesize'} = 1 << $globalValues{'lgtablesize'}; - $globalValues{'stepOffset'} &= 0xFFFFFE; - } -##################### -sub dieShowingUsage - { - print <] [-x] [-i ] - [-o ] [-h [] [-shift ] - - the default log(base 2) table size is 9. This gives a table -size of 512 entries (2 to the power 9). So 7 gives a size of 128, 8 gives -256, 9 gives 512, 10 gives 1024 and so on. - -options: -x -o -i -h - - -? Shows help - - The -x flag stores values into the .inl file in hex format: - hex(OriginalKeyCodeMirrorGlyphCode), - By default the values are stored in string hex format i.e 0x220C2209 - - The -h flag generates a html file displaying hash table information. - This may be followed by the filename to be output. - Default is 'mglyphs.html' - - The -i file specifies input file name. Default is 'mglyphs.txt'. - - The -o file specifies output file name. Default is 'mglyphs.inl'. - - -shift and -offset alter the "step" hash algorithm. - -USAGE_EOF - exit 0; - } -######### -# -# Writes a hash table to file. -# Current format: -# Hex mode: "hex number created" -# Hex string mode: "Original keyMapped key" -##################### -sub writeHashTableToFile - { - &printDebug("Writing to .inl file"); - my ($aOutputFileName, %aHashTable) = @_; - open(OUTPUT_FILE, '> ' . $aOutputFileName) or die('Error: could not open $aOutputFileName to write to\n'); - ## Print comments at top of .inl file - printf(OUTPUT_FILE "\/\/ mGlyphs.inl\n"); - printf(OUTPUT_FILE "\/\/\n"); - printf(OUTPUT_FILE "\/\/ Generated by mglyphtool.pl from '$globalValues{'inputFile'}'\n"); - printf(OUTPUT_FILE "\/\/\n\n"); - ## Declare array and fill in values - printf(OUTPUT_FILE "const unsigned long mGlyphArray[] = {\n\t"); - for (my $counter = 0; $counter < $globalValues{'tablesize'}; $counter++) - { - my $storeValue = "00000000"; - if (defined($aHashTable{$counter})) - { - $storeValue = $aHashTable{$counter}; - } - $storeValue = ($globalValues{'storeashex'}) ? hex($storeValue) : "0x$storeValue"; - print OUTPUT_FILE $storeValue; - if (($counter+1) < $globalValues{'tablesize'}) - { - print OUTPUT_FILE (($counter + 1) % 8 == 0? ",\n\t" : ', '); - } - } - print(OUTPUT_FILE "};\n"); - print(OUTPUT_FILE "\nconst int KLgMirrorTableSize=$globalValues{'lgtablesize'};\n"); - print(OUTPUT_FILE "const int KMirrorTableSize=$globalValues{'tablesize'};\n"); - # Inline functions - # Get a Hash value from a given key - print(OUTPUT_FILE "\n// Returns the first index to probe for character aKey.\n"); - print(OUTPUT_FILE "inline long MirrorStart(long aKey)\n"); - print(OUTPUT_FILE "\t{ return aKey \& (KMirrorTableSize-1); }\n"); - print(OUTPUT_FILE "\n// Returns the offset for further probes for character aKey.\n"); - print(OUTPUT_FILE "inline long MirrorStep(long aKey)\n"); - my $stepShift = $globalValues{'stepShift'}; - print(OUTPUT_FILE "\t{ return ("); - if ($stepShift == 0) - { - print(OUTPUT_FILE "aKey"); - } - elsif (0 < $stepShift) - { - print(OUTPUT_FILE "(aKey >> $stepShift)"); - } - else - { - $stepShift = -$stepShift; - print(OUTPUT_FILE "(aKey << $stepShift)"); - } - print(OUTPUT_FILE " | 1) + $globalValues{'stepOffset'}; }\n\n"); - - close(OUTPUT_FILE); - } -##################### listing of hash indexes values for original and mirrored glyphs -sub createHTMLOfMappings - { - my ($aOutputFileName, %aHashTable )= @_; - open(OUTPUT_FILE, '> ' . $aOutputFileName) or die('Error: could not open $aOutputFileName to create HTML output'); - printf(OUTPUT_FILE "MirrorGlyph Hash Output<\/TITLE><\/HEAD><BODY>"); -## print hash table details - printf(OUTPUT_FILE "<P>Values in hash Table - <B>(Hash Function: Key mod $globalValues{'tablesize'})<\/B><\/P><TABLE border=1>"); - printf(OUTPUT_FILE "<TR><TD><B>---<\/B><\/TD><TD BGCOLOR=\#8888FF><B>Character code:<\/B><\/TD><TD><B>Hash Index:<\/B><\/TD><TD BGCOLOR=\#8888FF><B>Mirror Glyph Value:<\/B><\/TD><TD><b>Search Jump Count<\/b>"); - my %keySet; - foreach my $value (values %aHashTable) - { - $keySet{&getLower(hex $value)} = 1; - } - foreach my $key (32..127) - { - $keySet{$key} = 1; - } - my @keys = sort {$a <=> $b} (keys %keySet); - foreach my $key (@keys) - { - my $counter = 0; - my $HKey = &findHashTableIndex($key, \$counter, \%aHashTable); - my $stored = $aHashTable{$HKey}; - my $storedValue = 'no change'; - my $storedKey = $key; - if (defined $stored) - { - $storedValue = sprintf('%02x', &getLower(hex $stored)); - $storedKey = &getUpper(hex $stored); - } - if ($storedKey) - { - die('incorrect key found in hash table') unless ($storedKey == $key); - printf(OUTPUT_FILE "<TR><TD>---<\/TD><TD BGCOLOR=\#8888FF><B>%02x<\/B><\/TD><TD>%02x<\/TD><TD BGCOLOR=\#8888FF><B>%s<\/B><\/TD><TD>%d<\/TD><\/TR>", $key, $HKey, $storedValue, $counter); - } - } - printf(OUTPUT_FILE "<\/TABLE>"); - printf(OUTPUT_FILE "<\/BODY><\/HTML>"); - close(OUTPUT_FILE); - } -##################### -# Hash Table functions -##################### - -##################### -#Returns a new Hash Table -##################### -sub createHashTable - { - my $aInputFileName = shift; - my $lineNumber = 1; - my %newHashTable = (); - open(INPUT_FILE, '< ' . $aInputFileName) or die('ERROR: Could not open $aInputFileName to read from'); - while (my $line=<INPUT_FILE>) - { - if ($line=~/^(.*);\s(.*\w)\s\W.*$/) ## Grab Original glyph value and mirrored glyph value - { - &updateHashTable($1, $2, \%newHashTable); - } - $lineNumber++; - } - close(INPUT_FILE); - return %newHashTable; - } -##################### -# -# Retrieves a HashKey which is not currently being used in a given HashTable -# -##################### -sub findHashTableIndex - { - my ($aHashKey, $aCounter, $aHashTable) = @_; - my $current = &hashFunction($aHashKey); - my $step = &hashStepFunction($aHashKey); - my $tableSize = $globalValues{'tablesize'}; - while (defined($$aHashTable{$current}) && &getUpper(hex($$aHashTable{$current})) != $aHashKey) - { - ++$$aCounter; - $current += $step; - $current &= $tableSize - 1; - } - if (2 < $$aCounter) - { - printf STDERR ("WARNING: Jumped $$aCounter times, inefficient hash for %02x ($current, $step)\n", $aHashKey); - } - return $current; - } - -##################### -sub updateHashTable -{ - my ($aKey, $aValueToStore, $aHashTable) = @_; - my $counter = 0; - my $key = hex($aKey); - my $hashKey = &findHashTableIndex($key, \$counter, $aHashTable); - $$aHashTable{$hashKey} = "$aKey$aValueToStore"; - return $hashKey; -} -##################### -# Returns a hash key for a given key -# Currently using a simple hash function -##################### -sub hashFunction - { - my $aKey = shift; - return $aKey & ($globalValues{'tablesize'}-1); - } - -# Returns second hash value: used for the step size -sub hashStepFunction - { - my $aKey = shift; - my $stepShift = $globalValues{'stepShift'}; - if ($stepShift < 0) - { - $aKey <<= -$stepShift; - } - elsif (0 < $stepShift) - { - $aKey >>= $stepShift; - } - return ($aKey | 1) + $globalValues{'stepOffset'}; - } - -##################### -# Utility functions -##################### -sub getLower - { - my $aValue = shift; - return $aValue & hex("0000FFFF"); - } -sub getUpper - { - my $aValue = shift; - return ($aValue & hex("FFFF0000")) >> 16; - } -sub printDebug - { - my $string = shift; - if ($globalValues{'verbose'}) - { - print $string; - } - } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/mglyph/release.txt --- a/graphicsdeviceinterface/gdi/mglyph/release.txt Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Mirror Glyph Tool release 001 ----------- -Made by Michael Lang 08 August 2002 - - -- Features: -* The tool generates a hash table used to locate mirrorglyph characters, using the original character as a key. -The hash table is stored in C++ format in the form of a .inl file. - - -(Command line options can be found by calling the perl script with the -? option) - - -- Inputs: -* The script requires the use of an input file which should be named mglyphs.txt - - Points to note: - - The input data to place in the file can be found here: - http://www.unicode.org/Public/3.0-Update1/BidiMirroring-1.txt - - Take this file and rename it mglpyhs.txt, placing it in the same directory as the tool - - -- Outputs: - - A HTML file - - One of the command line options allows for a HTML file to be generated in - order to display output. - - This file is called mglyphs.html by default - - - A .INL file - - The tool generates a file called mglyphs.inl by default - (see command line options for output format) diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BIDI.CPP --- a/graphicsdeviceinterface/gdi/sgdi/BIDI.CPP Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1163 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Bidirectional text reordering; based on the Unicode Bidirectional Reordering Algorithm. -// -// - -#include <bidi.h> -#include "BidiCopy.h" -#include <s32std.h> - -const TInt KBidirectionalStateOverrideStreamValueNone = 0; -const TInt KBidirectionalStateOverrideStreamValueLeftToRight = 1; -const TInt KBidirectionalStateOverrideStreamValueRightToLeft = 2; - -inline TBool IsSupplementary(TUint aChar) -/** -@param aChar The 32-bit code point value of a Unicode character. - -@return True, if aChar is supplementary character; false, otherwise. -*/ - { - return (aChar > 0xFFFF); - } - -inline TBool IsHighSurrogate(TText16 aInt16) -/** -@return True, if aText16 is high surrogate; false, otherwise. -*/ - { - return (aInt16 & 0xFC00) == 0xD800; - } - -inline TBool IsLowSurrogate(TText16 aInt16) -/** -@return True, if aText16 is low surrogate; false, otherwise. -*/ - { - return (aInt16 & 0xFC00) == 0xDC00; - } - -inline TUint JoinSurrogate(TText16 aHighSurrogate, TText16 aLowSurrogate) -/** -Combine a high surrogate and a low surrogate into a supplementary character. - -@return The 32-bit code point value of the generated Unicode supplementary - character. -*/ - { - return ((aHighSurrogate - 0xD7F7) << 10) + aLowSurrogate; - } - -TBool TextDefaultsToRightToLeft(const TDesC& aText, TBool* aFound); - -TBidirectionalState::TCategory TBidirectionalState::CharToBdCat(TChar::TBdCategory aCat) - { - return static_cast<TBidirectionalState::TCategory>( - 1 << static_cast<TInt>(aCat)); - } - -TBidirectionalState::TCategory TBidirectionalState::UintToBdCat(TUint aCat) - { - return static_cast<TBidirectionalState::TCategory>(1 << aCat); - } - -void TBidirectionalState::TReorderContext::SetNextCategory( - TChar::TBdCategory aCat) - { - iNextCategory = CharToBdCat(aCat); - } - -void TBidirectionalState::TReorderContext::SetNextStrongCategory( - TChar::TBdCategory aCat) - { - iNextStrongCategory = CharToBdCat(aCat); - } - - -EXPORT_C void TBidirectionalState::ReverseGroups(TText* aStart,TInt aLength) -/** A utility to reverse text apart from combining characters, which remains after -their base characters. This is what is needed when drawing right-to-left text. - -@param aStart Start position of text to be reversed. -@param aLength Length of text to be reversed. */ - { - BidiCopy::ReverseCodes(aStart, aLength); - BidiCopy::DeleteUnreversedSurrogates(aStart, aLength); - BidiCopy::SubstituteMirrorImages(aStart, aLength); - BidiCopy::CorrectGroups(aStart, aLength); - BidiCopy::CorrectSurrogatePairs(aStart, aLength); - } - - -// A local helper function. Get the next character from a buffer. This -// function won't check buffer length. -// -// @param aText The text buffer to read character from. -// @param aCharacterIndex Count of characters to skip in aText. -// @return The character. -TUint GetOneCharacter(const TText16 *aText, TInt aCharacterIndex) - { - const TText16 *p = aText; - TUint c = 0xFFFF; - while (aCharacterIndex >= 0) - { - c = *p++; - ASSERT(!IsLowSurrogate(c)); - if (IsHighSurrogate(c)) - { - ASSERT(IsLowSurrogate(*p)); - c = JoinSurrogate(c, *p++); - } - --aCharacterIndex; - } - return c; - } - - -TInt TBidirectionalState::GenerateBdRunArray(const TText* aText, TInt aLength, - TBidirectionalState::TRunInfo* aRun, TInt aMaxRuns) -/** Analyse the input text for runs of characters that share the same -bidirectional class. Categories TChar::EEuropeanNumberSeparator and -TChar::ECommonNumberSeparator are kept as singletons due to a limitation in -the reordering logic. -@param aText The text to be analysed. -@param aLength The length of the text to be analysed. -@param aRun Output buffer for the runs after analysis. May be null if there -is to be no output. -@param aMaxRuns The size of the aRun array. No more than this number of runs -will be output. -@return The number of runs that are required for the full results of the -analysis. -@internalTechnology */ - { - if (aLength == 0) - { - if (aRun && 0 < aMaxRuns) - { - aRun[0].iCategory = TChar::EOtherNeutral; - aRun[0].iStart = 0; - aRun[0].iLength = 0; - } - return 1; - } - int runs = 0; - int run_start = 0; - int run_end = 1; - const TText* p = aText; - const TText* q = p + aLength; - - // get the character pointed by 'p', then move 'p' to next character, and adjust 'run_end' if need - TChar pc = ::GetOneCharacter(p, 0); - TChar::TBdCategory cur_cat = pc.GetBdCategory(); - ++p; - if (IsSupplementary(pc)) - { - ++p; - run_end = 2; // run_end points to "end" of current character - } - - while (p < q) - { - // get the character pointed by 'p' - pc = ::GetOneCharacter(p, 0); - - TChar::TBdCategory new_cat = pc.GetBdCategory(); - if (new_cat != cur_cat) - { - if (new_cat == TChar::ENonSpacingMark && - cur_cat != TChar::ELeftToRightEmbedding && - cur_cat != TChar::ELeftToRightOverride && - cur_cat != TChar::ERightToLeftEmbedding && - cur_cat != TChar::ERightToLeftOverride && - cur_cat != TChar::EPopDirectionalFormat) - new_cat = cur_cat; - else if (p < q - 1 && - (new_cat == TChar::EWhitespace || - new_cat == TChar::EEuropeanNumberSeparator || - new_cat == TChar::ECommonNumberSeparator)) - { - TChar nextChar = ::GetOneCharacter(p, 1); - TChar::TBdCategory next_cat = nextChar.GetBdCategory(); - if (new_cat == TChar::EWhitespace) - { - if ((cur_cat == TChar::ELeftToRight || - cur_cat == TChar::ERightToLeft || - cur_cat == TChar::ERightToLeftArabic) && cur_cat == next_cat) - new_cat = cur_cat; - } - else if (cur_cat == TChar::EEuropeanNumber && next_cat == TChar::EEuropeanNumber) - new_cat = TChar::EEuropeanNumber; - } - } - - if (new_cat != cur_cat || - cur_cat == TChar::EEuropeanNumberSeparator || - cur_cat == TChar::ECommonNumberSeparator) - { - if (aRun && runs < aMaxRuns) - { - aRun[runs].iCategory = cur_cat; - aRun[runs].iStart = run_start; - aRun[runs].iLength = run_end - run_start; - } - - runs++; - run_start = run_end; - } - - p++; - run_end++; - - // adjust 'p' and 'run_end' - if (IsSupplementary(pc)) - { - p++; - run_end++; - } - - cur_cat = new_cat; - } - - if (aRun && runs < aMaxRuns) - { - aRun[runs].iCategory = cur_cat; - aRun[runs].iStart = run_start; - aRun[runs].iLength = run_end - run_start; - } - - return runs + 1; - } - - -EXPORT_C TInt TBidirectionalState::ReorderText(const TText* aText,TInt aLength,TBool aParRightToLeft, - TText*& aNewText) -/** Reorders text according to the Unicode Bidirectional Reordering algorithm. - -Reorders the input text from logical order (which may be bidirectional) to -display order (strictly left to right). - -@param aText The input text in logical order. -@param aLength The length of the input text. -@param aParRightToLeft ETrue if the default directionality of the text to be -re-ordered is right-to-left. -@param aNewText Returns the re-ordered text. If the text did not need re-ordering, -or if there was an error, aText will be returned. Otherwise, ownership of -a newly allocated buffer will be returned to the caller. This buffer must -be deleted with delete[] (or CleanupArrayDeletePushL()) and not delete (or -CleanupStack::PushL()). -@return A system-wide error value if there has been an error; KErrNone if there -has not. */ - { - aNewText = const_cast<TText*>(aText); - if (aLength < 2) - return KErrNone; - - int error = KErrNone; - TBidirectionalState::TRunInfo run_info; - run_info.iDirection = 0; - run_info.iIndex = 0; - run_info.iStart = 0; - run_info.iLength = aLength; - TBidirectionalState::TRunInfo* run_info_array = &run_info; - TBidirectionalState::TRunInfo* allocated_run_info_array = 0; - int runs = GenerateBdRunArray(aText, aLength, run_info_array, 1); - if (runs > 1) - { - allocated_run_info_array = new TBidirectionalState::TRunInfo[runs]; - if (allocated_run_info_array) - { - run_info_array = allocated_run_info_array; - GenerateBdRunArray(aText, aLength, run_info_array, runs); - } - else - { - // the run cannot be allocated: stick with our single l-to-r run - error = KErrNoMemory; - runs = 1; - } - } - if (error == KErrNone) - { - TBidirectionalState state; - state.ReorderLine(run_info_array, runs, ETrue, ETrue, aParRightToLeft, - TChar::EOtherNeutral, TChar::EOtherNeutral); - } - - // If there was only one run and it's left-to-right, we've finished. - if (!allocated_run_info_array && run_info.iDirection == 0) - return error; - - // Reorder the text into a new buffer. - TText* buffer = new TText[aLength]; - if (!buffer) - { - delete [] allocated_run_info_array; - return KErrNoMemory; - } - const TBidirectionalState::TRunInfo* r = run_info_array; - TText* dest = buffer; - for (int i = 0; i < runs; i++, r++) - { - const TText* source = &aText[r->iStart]; - int length = r->iLength; - Mem::Copy(dest,source,length * sizeof(TText)); - if (r->iDirection) - ReverseGroups(dest,length); - dest += length; - } - - delete [] allocated_run_info_array; - aNewText = buffer; - return KErrNone; - } - - -EXPORT_C TBidirectionalState::TBidirectionalState() -/** Standard constructor. */ - { - Reset(); - } - - -/** Reorders a line of text and updates the bidirectional state for the next line. - -@param aRunInfo An array of objects representing runs of characters with the -same bidirectional category. Any number of characters can be combined into -a run if they have the same category, except for the categories TChar::EEuropeanNumberSeparator -and TChar::ECommonNumberSeparator, which should be put into single-character -runs because the reordering logic depends on this. -@param aRuns Number of 'run info' objects. -@param aParStart Tells the function whether the line is the first line of a -paragraph. -@param aParEnd Tells the function whether the line is the last line of a paragraph. -@param aParRightToLeft ETrue if the default directionality of the text to be -re-ordered is right-to-left. -@param aNextCategory The category of the character immediately after the end -of the line. This is ignored if aParEnd is ETrue. -@param aNextStrongCategory The category of the first strong character (one -of the categories ELeftToRight, ELeftToRightEmbedding, ELeftToRightOverride, -ERightToLeft, ERightToLeftArabic, ERightToLeftEmbedding or ERightToLeftOverride) -after the end of the line. This is ignored if aParEnd is ETrue. -@param aVisualEndIsAmbiguous EFalse if the logical end of this line is at the -visual end and the logical beginning of the next line is at the visual beginning. -*/ -EXPORT_C void TBidirectionalState::ReorderLine(TRunInfo* aRunInfo, TInt aRuns, - TBool aParStart, TBool aParEnd, TBool aParRightToLeft, - TChar::TBdCategory aNextCategory, TChar::TBdCategory aNextStrongCategory, - TBool& aVisualEndIsAmbiguous) - { - ReorderLine(aRunInfo, aRuns, aParStart, aParEnd, aParRightToLeft, - aNextCategory, aNextStrongCategory); - if (iStackLevel != 0) - { - aVisualEndIsAmbiguous = ETrue; - return; - } - TCategory nextCat = CharToBdCat(aNextCategory); - TCategory nextStrong = CharToBdCat(aNextStrongCategory); - const TUint KAllStrongLeftToRight = - ELeftToRight | ELeftToRightEmbedding | ELeftToRightOverride; - const TUint KAllStrongRightToLeft = - ERightToLeft | ERightToLeftArabic | ERightToLeftEmbedding | ERightToLeftOverride; - if (aParRightToLeft) - { - // Ambiguous if any of the surrounding categories are strongly left-to-right - aVisualEndIsAmbiguous = - (iPreviousStrongCategory | iPreviousCategory | nextCat | nextStrong) - & KAllStrongLeftToRight; - } - else - { - // Ambiguous if any of the surrounding categories are strongly right-to-left - aVisualEndIsAmbiguous = - (iPreviousStrongCategory | iPreviousCategory | nextCat | nextStrong) - & KAllStrongRightToLeft; - } - } -/** Reorders a line of text and updates the bidirectional state for the next line. - -@param aRunInfo An array of objects representing runs of characters with the -same bidirectional category. Any number of characters can be combined into -a run if they have the same category, except for the categories TChar::EEuropeanNumberSeparator -and TChar::ECommonNumberSeparator, which should be put into single-character -runs because the reordering logic depends on this. -@param aRuns Number of 'run info' objects. -@param aParStart Tells the function whether the line is the first line of a -paragraph. -@param aParEnd Tells the function whether the line is the last line of a paragraph. -@param aParRightToLeft ETrue if the default directionality of the text to be -re-ordered is right-to-left. -@param aNextCategory The category of the character immediately after the end -of the line. This is ignored if aParEnd is ETrue. -@param aNextStrongCategory The category of the first strong character (one -of the categories ELeftToRight, ELeftToRightEmbedding, ELeftToRightOverride, -ERightToLeft, ERightToLeftArabic, ERightToLeftEmbedding or ERightToLeftOverride) -after the end of the line. This is ignored if aParEnd is ETrue. */ -EXPORT_C void TBidirectionalState::ReorderLine(TRunInfo* aRunInfo, TInt aRuns, - TBool aParStart, TBool aParEnd, TBool aParRightToLeft, - TChar::TBdCategory aNextCategory, TChar::TBdCategory aNextStrongCategory) - { - // Reset if this is a new paragraph. - if (aParStart) - { - Reset(); - iPreviousCategory = EOtherNeutral; - if (aParRightToLeft) - { - iStack[0].iEmbeddingLevel = 1; - iPreviousStrongCategory = ERightToLeft; - } - } - - // Initialise the context object. - TReorderContext context; - context.iRunInfo = aRunInfo; - context.iRuns = aRuns; - context.iLastStrongCategory = iPreviousStrongCategory; - if (aParEnd) - context.iNextCategory = context.iNextStrongCategory = EOtherNeutral; - else - { - context.iNextCategory = CharToBdCat(aNextCategory); - context.iNextStrongCategory = CharToBdCat(aNextStrongCategory); - } - - // Initialise output data and find out what categories are present so that unnecessary steps can be skipped. - context.iCategories = iPreviousCategory | context.iNextCategory | context.iNextStrongCategory; - for (TInt i = 0; i != aRuns; ++i) - { - aRunInfo[i].iEmbeddingLevel = iStack[0].iEmbeddingLevel; - aRunInfo[i].iDirection = 0; - aRunInfo[i].iIndex = i; - aRunInfo[i].iCategory = UintToBdCat(aRunInfo[i].iCategory); - context.iCategories |= aRunInfo[i].iCategory; - } - - // Do nothing if no right-to-left material is present. - if (aRuns == 0 || - (iStackLevel == 0 && iStack[0].iEmbeddingLevel == 0 && - !(context.iCategories & (ERightToLeftGroup | EBdControlsGroup)))) - return; - - // Perform the bidirectional algorithm. - if ((context.iCategories & EBdControlsGroup) || - State().iOverrideState != ENoOverrideState) - HandleBdControls(context); - ResolveWeakTypesW1W2W3(context); - ResolveWeakTypesW4W5W6(context); - ResolveWeakTypesW7(context); - if (context.iCategories & EOtherNeutral) - ResolveNeutralTypes(context); - ResolveImplicitLevels(context); - PrepareForNextLine(context); - ReorderRuns(context); - } - - -void TBidirectionalState::PrepareForNextLine(const TReorderContext& aContext) -/** -Fold context information back into TBidirectionalState. -@internalComponent -*/ - { - if (aContext.iRuns != 0) - { - iPreviousCategory = static_cast<TCategory>( - aContext.iRunInfo[aContext.iRuns - 1].iCategory); - iPreviousStrongCategory = aContext.iLastStrongCategory; - } - } - - -void TBidirectionalState::HandleBdControls(TReorderContext& aContext) -/** -Handle LRO, RLO, LRE, RLE and PDF. After this phase, these categories will no -longer be found. - -This corresponds to Unicode(3.2) Bidirectional Algorithm phases X1-X7. -Phase X8 is not required as the run is assumed to be all in one paragraph. -Phases X9-X10 are implicit in other functions. - -@internalComponent -*/ - { - aContext.iCategories = iPreviousCategory | aContext.iNextCategory; - for (TInt i = 0; i != aContext.iRuns; ++i) - { - TRunInfo* r = aContext.iRunInfo + i; - TCategory nextCatInLine = i < aContext.iRuns - 1? - (TCategory)(r[1].iCategory) : ENoCategory; - - TBool was_pdf = FALSE; - if (r->iCategory & EBdControlsGroup) - { - if (r->iCategory == EPopDirectionalFormat) - { - if (iStackLevel > 0) - { - was_pdf = TRUE; - r->iEmbeddingLevel = State().iEmbeddingLevel; - if (nextCatInLine == State().iStartCategory) - // Ignore POP-PUSH pair with nothing between. - // This is surely wrong? Perhaps it is a hack to - // help other parts of the algorithm. Must investigate. - // TPB. - r->iCategory = r[1].iCategory = EBoundaryNeutral; - else - { - r->iCategory = Pop(); - } - } - else - r->iCategory = EBoundaryNeutral; - } - else - { - // Category is LRE, RLE, LRO or RLO. - if (nextCatInLine == EPopDirectionalFormat) - // Ignore PUSH-POP pair with nothing between. - r->iCategory = r[1].iCategory = EBoundaryNeutral; - else - r->iCategory = Push(static_cast<TCategory>(r->iCategory)); - } - } - - if (!was_pdf) - { - switch (State().iOverrideState) - { - case ELeftToRightOverrideState: - r->iCategory = ELeftToRight; - break; - case ERightToLeftOverrideState: - r->iCategory = ERightToLeft; - break; - default: - break; - } - r->iEmbeddingLevel = State().iEmbeddingLevel; - } - if (r->iCategory & EStrongGroup) - aContext.iLastStrongCategory = static_cast<TCategory>(r->iCategory); - aContext.iCategories |= r->iCategory; - } - } - - -void TBidirectionalState::ResolveWeakTypesW1W2W3(TReorderContext& aContext) -/** -Unicode(3.2) Bidirectional Algorithm phases W1, W2 and W3. -@internalComponent -*/ - { - if (!(aContext.iCategories - & (ENonSpacingMark | ERightToLeftArabic | EEuropeanNumber))) - return; - - TRunInfo* endOfRuns = aContext.iRunInfo + aContext.iRuns; - TCategory prev_cat = iPreviousCategory; - TBool european_to_arabic_number = iPreviousStrongCategory == ERightToLeftArabic; - - aContext.iCategories = iPreviousCategory | aContext.iNextCategory; - for (TRunInfo* r = aContext.iRunInfo; r != endOfRuns; r++) - { - switch (r->iCategory) - { - case ENonSpacingMark: // non-spacing marks change to the previous category - r->iCategory = prev_cat; - break; - case ELeftToRight: - european_to_arabic_number = EFalse; - break; - case ERightToLeft: - european_to_arabic_number = EFalse; - break; - case ERightToLeftArabic: // Arabic letters change to R - european_to_arabic_number = ETrue; - r->iCategory = ERightToLeft; - break; - case EEuropeanNumber: // European numbers change to Arabic if last strong category was R - if (european_to_arabic_number) - r->iCategory = EArabicNumber; - break; - default: - break; - } - aContext.iCategories |= r->iCategory; - prev_cat = static_cast<TCategory>(r->iCategory); - } - } -/** -This phase removes categories NSM, AL, ES, ET, CS, BS, S, WS and BN, leaving -only L, R, EN, AN and ON. -@internalComponent -*/ -void TBidirectionalState::ResolveWeakTypesW4W5W6(TReorderContext& aContext) - { - int i; - TRunInfo* r; - TCategory prev_cat = iPreviousCategory; - TCategory next_cat = EOtherNeutral; - - // Phase P0b. - prev_cat = iPreviousCategory; - if (aContext.iCategories & EBoundaryNeutral) - { - for (i = 0, aContext.iCategories = iPreviousCategory | aContext.iNextCategory, r = aContext.iRunInfo; - i < aContext.iRuns; - i++, aContext.iCategories |= r->iCategory, r++) - { - if (r->iCategory == EBoundaryNeutral) // runs of boundary neutrals change to EN, ET or AN if adjacent to - { // one of these, otherwise to ON - int end = i + 1; - while (end < aContext.iRuns && aContext.iRunInfo[end].iCategory == EBoundaryNeutral) - end++; - next_cat = end < aContext.iRuns ? (TCategory)(aContext.iRunInfo[end].iCategory) : aContext.iNextCategory; - TCategory c = EOtherNeutral; - if (prev_cat == EEuropeanNumber || next_cat == EEuropeanNumber) - c = EEuropeanNumber; - else if (prev_cat == EEuropeanNumberTerminator || next_cat == EEuropeanNumberTerminator) - c = EEuropeanNumberTerminator; - else if (prev_cat == EArabicNumber || next_cat == EArabicNumber) - c = EArabicNumber; - for (int j = i; j < end; j++) - aContext.iRunInfo[j].iCategory = c; - i = end - 1; - r = &aContext.iRunInfo[i]; - } - prev_cat = (TCategory)r->iCategory; - } - } - - // Phase P1. - prev_cat = iPreviousCategory; - if (aContext.iCategories & (EEuropeanNumberSeparator | ECommonNumberSeparator)) - { - for (i = 0, aContext.iCategories = iPreviousCategory | aContext.iNextCategory, r = aContext.iRunInfo; - i < aContext.iRuns; - i++, aContext.iCategories |= r->iCategory, r++) - { - next_cat = i < aContext.iRuns - 1 ? (TCategory)(r[1].iCategory) : aContext.iNextCategory; - switch (r->iCategory) - { - case EEuropeanNumberSeparator: // European separators change to EN if between two ENs, else to ON - if (prev_cat == EEuropeanNumber && next_cat == EEuropeanNumber) - r->iCategory = EEuropeanNumber; - else - r->iCategory = EOtherNeutral; - break; - case ECommonNumberSeparator: // CSs change to EN or AN if between two of the same, else to ON - if (prev_cat == EEuropeanNumber && next_cat == EEuropeanNumber) - r->iCategory = EEuropeanNumber; - else if (prev_cat == EArabicNumber && next_cat == EArabicNumber) - r->iCategory = EArabicNumber; - else - r->iCategory = EOtherNeutral; - break; - default: - break; - } - prev_cat = (TCategory)r->iCategory; - } - } - - /* - Phase L1: tabs, whitespace before tabs, and trailing whitespace, is set to the base embedding level. - We ought to do this just before the final reordering, but the whitespace and segment separator - categories have disappeared by then so we use the sentinel value 255 which tells - ResolveImplicitLevels what to do. - */ - TBool demote_whitespace = TRUE; - for (i = aContext.iRuns - 1, r = &aContext.iRunInfo[i]; i >= 0; i--, r--) - { - switch (r->iCategory) - { - case EWhitespace: - break; - case ESegmentSeparator: - demote_whitespace = TRUE; - break; - default: - demote_whitespace = FALSE; - break; - } - if (demote_whitespace) - r->iEmbeddingLevel = 255; - } - - // Phases P2 and P3. - prev_cat = iPreviousCategory; - if (aContext.iCategories & (EEuropeanNumberTerminator | ESegmentSeparator | EWhitespace)) - { - for (i = 0, aContext.iCategories = iPreviousCategory | aContext.iNextCategory, r = aContext.iRunInfo; - i < aContext.iRuns; - i++, aContext.iCategories |= r->iCategory, r++) - { - next_cat = i < aContext.iRuns - 1 ? (TCategory)(r[1].iCategory) : aContext.iNextCategory; - switch (r->iCategory) - { - case EEuropeanNumberTerminator: // runs of ETs change to ENs if next to an EN, else to ON - { - int end = i + 1; - while (end < aContext.iRuns && aContext.iRunInfo[end].iCategory == EEuropeanNumberTerminator) - end++; - next_cat = end < aContext.iRuns ? (TCategory)(aContext.iRunInfo[end].iCategory) : aContext.iNextCategory; - TCategory c = EOtherNeutral; - if (prev_cat == EEuropeanNumber || next_cat == EEuropeanNumber) - c = EEuropeanNumber; - for (int j = i; j < end; j++) - aContext.iRunInfo[j].iCategory = c; - i = end - 1; - r = &aContext.iRunInfo[i]; - } - break; - case ESegmentSeparator: // S and WS change to ON - case EWhitespace: - r->iCategory = EOtherNeutral; - break; - default: - break; - } - prev_cat = (TCategory)r->iCategory; - } - } - } - -void TBidirectionalState::ResolveWeakTypesW7(TReorderContext& aContext) - { - if (!(aContext.iCategories & EEuropeanNumber)) - return; - - TCategory prev_strong_cat = iPreviousStrongCategory; - - aContext.iCategories = iPreviousCategory | aContext.iNextCategory; - TRunInfo* endOfRuns = aContext.iRunInfo + aContext.iRuns; - for (TRunInfo* r = aContext.iRunInfo; r != endOfRuns; r++) - { - switch (r->iCategory) - { - case ELeftToRight: - prev_strong_cat = ELeftToRight; - break; - case ERightToLeft: - prev_strong_cat = ERightToLeft; - break; - case EEuropeanNumber: - if (prev_strong_cat == ELeftToRight) - r->iCategory = ELeftToRight; - break; - default: - break; - } - aContext.iCategories |= r->iCategory; - } - } - - - -void TBidirectionalState::DeneutralizeRuns(TRunInfo* aStart, TRunInfo* aEnd, - TCategory aStartCategory, TCategory aEndCategory) -/** -Turn all ON (Other Neutral) into non-neutrals according to the rules N1 and N2. -@param aStart The start of the run array to be altered. -@param aEnd One past the end of the run array to be altered. -@param aStartCategory - The last non-neutral before the run, must be ELeftToRight or ERightToLeft. -@param aEndCategory - The first non-neutral after the run, must be ELeftToRight or ERightToLeft. -@internalComponent -*/ { - // if sandwiched by the same category, neutrals become that. - if (aStartCategory == aEndCategory) - { - for (; aStart != aEnd; ++aStart) - aStart->iCategory = aStartCategory; - return; - } - // otherwise look at the embedding level in each case - for (; aStart != aEnd; ++aStart) - { - aStart->iCategory = aStart->iEmbeddingLevel & 1? - ERightToLeft : ELeftToRight; - } - } - - -void TBidirectionalState::ResolveNeutralTypes(TReorderContext& aContext) - /** -This phase removes the ON (Other Neutral) category, leaving only L, R, EN, and -AN; no need to update aContext.iCategories. -@internalComponent -*/ - { - // Really we should find if any number intervenes, but this would require - // a BC break. - TCategory prevNonNeutral = iPreviousStrongCategory; - if (prevNonNeutral & ELeftToRightGroup) - prevNonNeutral = ELeftToRight; - else if (prevNonNeutral & ERightToLeftGroup) - prevNonNeutral = ERightToLeft; - TRunInfo *prevNonNeutralRun = aContext.iRunInfo; // one past the last non-neutral found - TRunInfo *endOfRuns = aContext.iRunInfo + aContext.iRuns; - - // All neutrals have now been changed to ON; change them to L or R depending on context. - for (TRunInfo *p = aContext.iRunInfo; p != endOfRuns; ++p) - { - TCategory nonNeutral = EOtherNeutral; - switch (p->iCategory) - { - case ELeftToRight: - nonNeutral = ELeftToRight; - break; - case ERightToLeft: - nonNeutral = ERightToLeft; - break; - case EArabicNumber: - case EEuropeanNumber: - nonNeutral = ERightToLeft; - break; - default: - break; - } - if (nonNeutral != EOtherNeutral) - { - if (p != prevNonNeutralRun) - DeneutralizeRuns(prevNonNeutralRun, p, - prevNonNeutral, nonNeutral); - prevNonNeutral = nonNeutral; - prevNonNeutralRun = p + 1; - } - } - DeneutralizeRuns(prevNonNeutralRun, endOfRuns, prevNonNeutral, - aContext.iNextStrongCategory); - } - - -void TBidirectionalState::ResolveImplicitLevels(TReorderContext& aContext) -/** -Phases I1 and I2. -@internalComponent -*/ { - int i; - TRunInfo* r; - for (i = 0, r = aContext.iRunInfo; i < aContext.iRuns; i++, r++) - { - if (r->iEmbeddingLevel == 255) // sentinel indicating this is a tab or segment-final whitespace - r->iEmbeddingLevel = iStack[0].iEmbeddingLevel; - else switch (r->iCategory) - { - case ELeftToRight: - if (r->iEmbeddingLevel & 1) - r->iEmbeddingLevel++; - break; - case ERightToLeft: - if (!(r->iEmbeddingLevel & 1)) - r->iEmbeddingLevel++; - break; - case EEuropeanNumber: case EArabicNumber: - if (r->iEmbeddingLevel & 1) - r->iEmbeddingLevel++; - else - r->iEmbeddingLevel += 2; - break; - default: - break; - } - } - } - - -void TBidirectionalState::ReorderRuns(TReorderContext& aContext) -/** -Phase L2. -@internalComponent -*/ { - // Find the highest level and lowest odd level. - int i; - TRunInfo* r; - int highest = 0; - int lowest_odd = EMaxLevel; - int level = 0; - for (i = 0, r = aContext.iRunInfo; i < aContext.iRuns; i++, r++) - { - level = r->iEmbeddingLevel; - if (level > highest) - highest = level; - if ((level & 1) && level < lowest_odd) - lowest_odd = level; - } - - // From the highest level to the lowest odd level, reverse any run at that level or higher. - for (level = highest; level >= lowest_odd; level--) - { - int run_start = 0; - r = aContext.iRunInfo; - while (run_start < aContext.iRuns) - { - while (run_start < aContext.iRuns && r->iEmbeddingLevel < level) - { - run_start++; - r++; - } - int run_end = run_start; - while (run_end < aContext.iRuns && r->iEmbeddingLevel >= level) - { - r->iDirection = !r->iDirection; - run_end++; - r++; - } - TRunInfo* p = &aContext.iRunInfo[run_start]; - TRunInfo* q = &aContext.iRunInfo[run_end - 1]; - while (p < q) - { - TRunInfo temp = *p; - *p = *q; - *q = temp; - p++; - q--; - } - run_start = run_end; - } - } - } - - -TBidirectionalState::TCategory TBidirectionalState::Push(TCategory aStartCategory) -/** @internalComponent */ - { - TInt rightToLeftFlag = (static_cast<TInt>(aStartCategory) - & ERightToLeftGroup)? 1 : 0; - TInt oldLevel = State().iEmbeddingLevel; - TInt newLevel = oldLevel + 1; - // And add an extra one if the bottom bit is not correct. - newLevel += (newLevel & 1) ^ rightToLeftFlag; - - if (EMaxExplicitLevel < newLevel) - { - if (oldLevel == 60) - ++iPushesBeyond60; - else - ++iPushesBeyond61; - return EBoundaryNeutral; - } - - ++iStackLevel; - TStackItem& state = iStack[iStackLevel]; - state.iEmbeddingLevel = static_cast<TUint8>(newLevel); - state.iOverrideState = static_cast<TOverrideState>(aStartCategory - & (ELeftToRightOverride | ERightToLeftOverride)); - state.iStartCategory = aStartCategory; - - return rightToLeftFlag? ERightToLeft : ELeftToRight; - } - - -TBidirectionalState::TCategory TBidirectionalState::Pop() -/** @internalComponent */ - { - __ASSERT_DEBUG(0 < iStackLevel, User::Invariant()); - TInt level = State().iEmbeddingLevel; - if (level < 60) - --iStackLevel; - else if (iPushesBeyond61 != 0) - --iPushesBeyond61; - else if (level == 61) - --iStackLevel; - else if (iPushesBeyond60) - --iPushesBeyond60; - else - --iStackLevel; - return (level & 1)? ERightToLeft : ELeftToRight; - } - - -EXPORT_C void TBidirectionalState::Reset() -/** Sets the object to its default 'start of paragraph' state. */ - { - iStackLevel = 0; - iPushesBeyond60 = 0; - iPushesBeyond61 = 0; - iStack[0].iEmbeddingLevel = 0; - iStack[0].iOverrideState = ENoOverrideState; - iStack[0].iStartCategory = EOtherNeutral; - iPreviousCategory = ELeftToRight; - iPreviousStrongCategory = ELeftToRight; - } - - -EXPORT_C TBool TBidirectionalState::IsDefault() const -/** Returns Gets the default 'start of paragraph' state. - -@return ETrue if the object is in its default 'start of paragraph' state. */ - { - return iStackLevel == 0 && - iStack[0].iEmbeddingLevel == 0 && - iStack[0].iOverrideState == ENoOverrideState && - iStack[0].iStartCategory == EOtherNeutral && - iPreviousCategory == ELeftToRight && - iPreviousStrongCategory == ELeftToRight; - } - - -EXPORT_C TBool TBidirectionalState::operator==(const TBidirectionalState& aState) const -/** Return ETrue if two bidirectional states are identical. - -@param aState A bidirectional state. -@return ETrue if two bidirectional states are identical. */ - { - if (iPreviousCategory != aState.iPreviousCategory || - iPreviousStrongCategory != aState.iPreviousStrongCategory || - iStackLevel != aState.iStackLevel) - return FALSE; - const TStackItem* p = iStack; - const TStackItem* q = aState.iStack; - for (int i = 0; i <= iStackLevel; i++, p++, q++) - { - if (p->iStartCategory != q->iStartCategory || - p->iOverrideState != q->iOverrideState || - p->iEmbeddingLevel != q->iEmbeddingLevel) - return FALSE; - } - return TRUE; - } - - -TInt TBidirectionalState::CatToNumber(TInt aCat) -/** -Finds the highest bit set in the input. Used to convert -TBidirectionalState::TCategory into TChar::TBdCategory. -@param aCat a TBidirectionalState::TCategory. -@return The equivalent TChar::TBdCategory. -@internalComponent -*/ { - TInt shifts = 0; - TInt bits = 32; - TInt mask = ~0L; - while (bits != 0) - { - bits >>= 1; - mask <<= bits; - if ((aCat & mask) == 0) - { - aCat <<= bits; - shifts += bits; - } - } - return 31 - shifts; - } - - -EXPORT_C void TBidirectionalState::ExternalizeL(RWriteStream& aDest) -/** Serializes a bidirectional state to an output stream. - -@param aDest An output stream. */ - { - //+ put the prev cat, prev strong cat and stack levels in one number? - // Write the previous category and previous strong category. - aDest.WriteInt8L(CatToNumber(iPreviousCategory)); - aDest.WriteInt8L(CatToNumber(iPreviousStrongCategory)); - - // Write the number of stack levels - aDest.WriteInt8L(iStackLevel); - - /* - Write each stack level as a single number: 5 bits for the start category, 2 for the override state, - 6 for the embedding level. - */ - for (int i = 0; i <= iStackLevel; i++) - { - TInt x = CatToNumber(iStack[i].iStartCategory); - if (iStack[i].iOverrideState == ELeftToRightOverrideState) - { - x |= (KBidirectionalStateOverrideStreamValueLeftToRight << 5); - } - else if (iStack[i].iOverrideState == ERightToLeftOverrideState) - { - x |= (KBidirectionalStateOverrideStreamValueRightToLeft << 5); - } - x |= ((TInt)iStack[i].iEmbeddingLevel << 7); - aDest.WriteInt16L(x); - } - - TInt level = State().iEmbeddingLevel; - if (60 <= level) - { - aDest.WriteInt8L(iPushesBeyond60); - aDest.WriteInt8L(iPushesBeyond61); - } - } - - -EXPORT_C void TBidirectionalState::InternalizeL(RReadStream& aSource) -/** Reads a bidirectional state from an input stream, translating it from its serialized -form. - -@param aSource A source stream. */ - { - // Read the previous category and the previous strong category. - TInt x = aSource.ReadInt8L(); - iPreviousCategory = (TCategory)(1 << x); - x = aSource.ReadInt8L(); - iPreviousStrongCategory = (TCategory)(1 << x); - - // Read the number of stack levels. - iStackLevel = aSource.ReadInt8L(); - - // Read the stack levels. - for (int i = 0; i <= iStackLevel; i++) - { - x = aSource.ReadInt16L(); - iStack[i].iStartCategory = (TCategory)(1 << (x & 0x1F)); - switch ((x >> 5) & 3) - { - case KBidirectionalStateOverrideStreamValueLeftToRight: - iStack[i].iOverrideState = ELeftToRightOverrideState; - break; - case KBidirectionalStateOverrideStreamValueRightToLeft: - iStack[i].iOverrideState = ERightToLeftOverrideState; - break; - case KBidirectionalStateOverrideStreamValueNone: - default: iStack[i].iOverrideState = ENoOverrideState; break; - }; - iStack[i].iEmbeddingLevel = (TUint8)(x >> 7); - } - - TInt level = State().iEmbeddingLevel; - if (60 <= level) - { - iPushesBeyond60 = aSource.ReadInt8L(); - iPushesBeyond61 = aSource.ReadInt8L(); - } - else - { - iPushesBeyond60 = 0; - iPushesBeyond61 = 0; - } - } - - -TBidirectionalState::TBidirectionalState(TChar::TBdCategory aPrevCat, - TChar::TBdCategory aPrevStrongCat, - TBool aParRightToLeft) - /** -Constructor suitable for test code. -@internalComponent -*/ - { - Reset(); - iPreviousCategory = CharToBdCat(aPrevCat); - iPreviousStrongCategory = CharToBdCat(aPrevStrongCat); - iStack[0].iEmbeddingLevel = (TUint8) (aParRightToLeft? 1 : 0); - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BidiCompact.cpp --- a/graphicsdeviceinterface/gdi/sgdi/BidiCompact.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include "BidiCompact.h" -#include "BidiCopy.h" -#include <gdi.h> - -static const TInt KZeroWidthJoiner = 0x200D; -// This gets round the compiler warning about converting -// EFRightToLeft to unsigned long. -inline TUint FRightToLeft() { return static_cast<TUint>(TRunInfoCompact::EFRightToLeft); } - -/** -Constructs a run description without considering optimisations based -on the text itself. -@param aStart Index of the start of the run. -@param aLength Length of the run. -@param aReverse ETrue if the run is right-to-left. -@internalTechnology -*/ -TRunInfoCompact::TRunInfoCompact(TInt aStart, TInt aLength, - TBool aReverse) - : iStart(aStart), iLengthAndType(aLength) - { - if (aReverse) - iLengthAndType |= FRightToLeft(); - } - -/** -Constructs a run description. - -@param aStart Index of the start of the run. -@param aLength Length of the run. -@param aReverse ETrue if the run is right-to-left. -@param aText The text that this run refers to (starting at index 0, not -the start of the run). This is required only to determine if optimisations -to the re-ordering are possible. -@internalTechnology -*/ -TRunInfoCompact::TRunInfoCompact(TInt aStart, TInt aLength, - TBool aReverse, const TText* aText) - : iStart(aStart), iLengthAndType(aLength) - { - ASSERT(0 <= aLength); - ASSERT(aLength < 0x10000000); - ASSERT(0 <= aStart); - if (!aReverse) - return; - iLengthAndType |= FRightToLeft(); - TUint32 flags = EFNoPairsNoCombiners | EFNoMirroredCharacters; - aText += aStart; - - for (const TText* end = aText + aLength; aText < end && flags; ++aText) - { - TInt code = *aText; - if ((code & 0xF800) == 0xD800) - { - flags &= ~EFNoPairsNoCombiners; - if ((code & 0xFC00) == 0xDC00 - && aText + 1 < end - && (aText[1] & 0xFC00) == 0xD800) - { - code = (aText[1] << 10) + (code & 0x3FF) - + (0x10000 - 0xD800*0x400); - ++aText; - } - } - TChar c = code; - if (c.GetCombiningClass() != 0) - flags &= ~EFNoPairsNoCombiners; - if (BidiCopy::Mirror(code) != code) - flags &= ~EFNoMirroredCharacters; - } - iLengthAndType |= flags; - } - -/** -Attempts to extend a run. - -@param aToBeAdded The run to be merged. -@return ETrue if extension succeeded, EFalse if not. -@internalTechnology -*/ -TBool TRunInfoCompact::AddRun(const TRunInfoCompact& aToBeAdded) - { - TInt length = Length(); - if (length == 0) - { - *this = aToBeAdded; - return ETrue; - } - - // Are both runs in the same direction? - if ((iLengthAndType ^ aToBeAdded.iLengthAndType) & FRightToLeft()) - return EFalse; - - TBool rightToLeft = TypeFlags() & EFRightToLeft; - TInt end = rightToLeft? - Start() - Length() : Start() + Length(); - - if (end != aToBeAdded.Start()) - return EFalse; - - length += aToBeAdded.Length(); - - iLengthAndType = length | (TypeFlags() & aToBeAdded.TypeFlags()); - - if (rightToLeft) - iStart -= aToBeAdded.Length(); - - return ETrue; - } - -/** -Reorders text described by this run according to aContext. Allow 6 extra -bytes for a truncation. -@param aDestination Where to write this run of visually-ordered text to. -@param aContext The source of the text to be ordered. -@return The first byte not written to: in other words, what aDestination -should be updated to. -@internalTechnology -*/ -TText* TRunInfoCompact::Reorder(TText* aDestination, - const TRunInfoCompact::TReorderingContext& aContext) const - { - TInt start = Start(); - if (aContext.iEnd < start) - // does not overlap - return aDestination; - TInt end = Start() + Length(); - if (end <= aContext.iStart) - // does not overlap - return aDestination; - TBool startJoins = EFalse; - if (start <= aContext.iStart) - { - start = aContext.iStart; - startJoins = aContext.iJoinsAtStart; - } - TBool truncated = EFalse; - TBool endJoins = EFalse; - if (aContext.iEnd <= end) - { - if (aContext.iEnd < end - && aContext.iTruncation != 0xFFFF) - truncated = ETrue; - end = aContext.iEnd; - endJoins = aContext.iJoinsAtEnd; - } - TInt length = end - start; - if (length == 0 && !truncated) - return aDestination; - ASSERT(0 <= length); - const TText* source = aContext.iSource + start; - if (TypeFlags() & FRightToLeft()) - { - // Right-to-left - if (truncated) - aDestination = BidiCopy::OutputTChar(aDestination, aContext.iTruncation); - if (endJoins) - *(aDestination++) = KZeroWidthJoiner; - if (TypeFlags() & EFNoPairsNoCombiners) - { - // Simple - aDestination = TypeFlags() & EFNoMirroredCharacters? - BidiCopy::CopyBackwards(aDestination, source, length) - : BidiCopy::CopyBackwardsWithMirroring(aDestination, source, length); - } - else - // Respect groups - aDestination = BidiCopy::CopyGroupsBackwards(aDestination, source, length); - if (startJoins) - *aDestination++ = KZeroWidthJoiner; - return aDestination; - } - // Left-to-right - if (startJoins) - *aDestination++ = KZeroWidthJoiner; - Mem::Copy(aDestination, source, length * sizeof(TText)); - aDestination += length; - if (endJoins) - *aDestination++ = KZeroWidthJoiner; - if (truncated) - aDestination = BidiCopy::OutputTChar(aDestination, aContext.iTruncation); - return aDestination; - } - -/** -Converts an array of aArraySize TBidirectionalState::TRunInfos into a -compact form. - -@param aBuffer Memory to output to, or null just to find out how large the output -array will need to be. -@param aText The text that aRunArray refers to. -@param aRunArray The array to be converted. -@param aArraySize The length of aRunArray. -@return The length of the output array. -@internalTechnology -*/ -TInt TRunInfoCompact::Convert(TRunInfoCompact* aBuffer, const TDesC& aText, - const TBidirectionalState::TRunInfo* aRunArray, TInt aArraySize) - { - const TText* text = aText.Ptr(); - TInt outputSize = 0; - - TRunInfoCompact currentRun; - while (aArraySize) - { - TRunInfoCompact newRun(aRunArray->iStart, aRunArray->iLength, - aRunArray->iDirection, text); - --aArraySize; - if (!currentRun.AddRun(newRun)) - { - if (aBuffer) - *aBuffer++ = currentRun; - ++outputSize; - currentRun = newRun; - } - ++aRunArray; //point to next run - } - if (0 < currentRun.Length()) - { - if (aBuffer) - *aBuffer++ = currentRun; - ++outputSize; - } - - return outputSize; - } - -/** -Utility tells whether a character will form a join with the previous -base character. - -@param aText The text. -@param aIndex The index into aText of the character to test. -@return ETrue if there is a join before the character. -*/ -TBool TRunInfoCompact::JoinBefore(const TText* aText, TInt aIndex) - { - TInt charUnderTest = aText[aIndex]; - if (!CFont::CharactersJoin(charUnderTest, KZeroWidthJoiner)) - // Character does not join with anything, so we - // will not do any more work. - return EFalse; - while (aIndex != 0) - { - --aIndex; - TInt c = aText[aIndex]; - // If it is an Arabic point, we will skip it. - if (0x64B <= c && c < 0x671 - && !(0x656 <= c && c < 0x670)) - continue; - return CFont::CharactersJoin(charUnderTest, c); - } - return EFalse; - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BidiCompact.h --- a/graphicsdeviceinterface/gdi/sgdi/BidiCompact.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef BIDICOMPACT_H_ -#define BIDICOMPACT_H_ - -#include <e32std.h> -#include <bidi.h> - -class TRunInfoCompact -/** -Stores information about a run and how to re-order it. -@internalTechnology -*/ - { -public: - /** Describes text to be re-ordered. - @internalTechnology */ - class TReorderingContext - { - public: - /** Where the logical-order text starts. */ - const TText* iSource; - /** The start of the line. */ - TInt iStart; - /** One past the end of the line. */ - TInt iEnd; - /** - * Truncation character, if there is to be one on this line. Otherwise, - * 0xFFFF. - */ - TChar iTruncation; - /** ETrue if the line must join at its beginning. */ - TBool iJoinsAtStart; - /** ETrue if the line must join at its end. */ - TBool iJoinsAtEnd; - }; - - /** How to re-order the run. - @internalTechnology */ - enum TTypeFlags - { - /** Reverse the run, but not surrogate pairs or combining characters. */ - EFRightToLeft = 0x80000000, - /** Simply reverse the run, do not check for surrogates or combiners. */ - EFNoPairsNoCombiners = 0x40000000, - /** No mirrored characters are present. */ - EFNoMirroredCharacters = 0x20000000 - }; - - /** Sets up an empty run. - @internalTechnology */ - TRunInfoCompact() : iStart(0), iLengthAndType(0) {} - TRunInfoCompact(TInt aStart, TInt aLength, TBool aReverse, - const TText* aText); - TRunInfoCompact(TInt aStart, TInt aLength, TBool aReverse); - TBool AddRun(const TRunInfoCompact& aToBeAdded); - TText* Reorder(TText* aDestination, const TReorderingContext& aContext) const; - - /** @return The start of this run. - @internalTechnology */ - TInt Start() const { return iStart; } - - /**@return The length of this run. - @internalTechnology */ - TInt Length() const { return static_cast<TInt>(iLengthAndType & 0x0FFFFFFF); } - - /** @return The flags associated with this run. - @internalTechnology */ - TInt TypeFlags() const { return iLengthAndType & 0xF0000000; } - - static TInt Convert(TRunInfoCompact* aBuffer, const TDesC& aText, - const TBidirectionalState::TRunInfo* aRunArray, TInt aArraySize); - static TBool JoinBefore(const TText* aText, TInt aIndex); -private: - TInt iStart; - TUint iLengthAndType; - }; - -#endif - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BidiCopy.cpp --- a/graphicsdeviceinterface/gdi/sgdi/BidiCopy.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,341 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include "BidiCopy.h" -#include <e32std.h> -#include "mglyphs.inl" - -TInt BidiCopy::Mirror(TInt a) -/** -Find the mirror image of a character. -@internalComponent -*/ - { - TInt current = MirrorStart(a); - unsigned long v = mGlyphArray[current]; - TInt key = v >> 16; - // 1st easy-out: no steps at all for any at this key - if (key == 0) - return a; - // 2nd easy-out: no steps at all but we have found it - if (key == a) - return v & 0xFFFF; - TInt step = MirrorStep(a); - do { - current += step; - current &= (KMirrorTableSize-1); - key = mGlyphArray[current] >> 16; - if (key == a) - return mGlyphArray[current] & 0xFFFF; - } while (key != 0); - return a; - } - -void BidiCopy::ReverseCodes(TText* aText, TInt aLength) -/** -Reverse the contents of aText[0..aLength], so that aText[0] holds the -value previously found in aText[aLength - 1], aText[1] holds the value -previously held in aText[aLength - 2] and so on. -@internalComponent -*/ - { - TText *text = aText; // backup - - // reverse int16 by int16 (note: high surrogate + low surrogate will be reverse to low surrogate + high surrogate) - TText* end = aText + aLength - 1; - while (aText < end) - { - TText t = *aText; - *aText = *end; - *end = t; - ++aText; - --end; - } - - CorrectSurrogatePairs(text, aLength); - } - -void BidiCopy::DeleteUnreversedSurrogates(TText* aText, TInt aLength) -/** -Replaces all surrogates with 0xFFFF that are not paired up the wrong -way round. -@internalComponent -*/ - { - if (aLength < 1) - return; - TText* end = aText + aLength; - while (aText < end) - { - if ((aText[0] & 0xF800) == 0xD800) - { - if ((aText[0] & 0xFC00) == 0xD800 - && aText + 1 != end - && (aText[1] & 0xFC00) == 0xDC00) - ++aText; - else - aText[0] = 0xFFFF; - } - ++aText; - } - } - -void BidiCopy::CorrectSurrogatePairs(TText* aText, TInt aLength) -/** -Corrects all reversed surrogate pairs. Assumes that no unpaired -surrogates are present. -@internalComponent -*/ - { - TText* end = aText + aLength; - while (aText < end) - { - if ((aText[0] & 0xF800) == 0xD800) - { - // Surrogate pair discovered. - // Do we need to swap it? - ASSERT(aText + 1 < end); - ASSERT((aText[1] & 0xF800) == 0xD800); - if ((aText[0] & 0xFC00) == 0xDC00) - { - ASSERT((aText[1] & 0xFC00) == 0xD800); - TText t = aText[0]; - aText[0] = aText[1]; - aText[1] = t; - } - ++aText; - } - ++aText; - } - } - -void BidiCopy::CorrectGroups(TText* aText, TInt aLength) -/** -Correct all reversed groups (non-combiner followed by combining -characters). Surrogate pairs may be reversed by this operation. -Assumes that no unpaired surrogates are present. -Leading and trailing 0xFFFFs are left alone. -@internalComponent -*/ - { - TText *end = aText + aLength; - // Ignore leading 0xFFFFs. This helps Tagma's - // RTmTextCache::GetDisplayedText with its sentinels. - while (aText < end && *aText == 0xFFFF) - ++aText; - TText* groupStart = aText; - while (aText < end) - { - TText* next = aText + 1; - TInt c = aText[0]; - if ((c & 0xFC00) == 0xD800) - { - ASSERT(aText + 1 < end); - ASSERT((aText[1] & 0xFC00) == 0xDC00); - c = (c << 10) + (aText[1] & 0x3FF) - + (0x10000 - 0xD800*0x400); - ++next; - } - // ignore non-characters - if ((c & 0xFFFE) != 0xFFFE) - { - // non-marks represent the end of groups that may need to - // be reversed - TChar ch = c; - if ((ch.GetCategory() & 0xFFFFFFF0) != TChar::EMarkGroup) - { - if (aText != groupStart) - ReverseCodes(groupStart, aText - groupStart + 1); - groupStart = next; - } - } - aText = next; - } - } - -void BidiCopy::SubstituteMirrorImages(TText* aText, TInt aLength) -/** -Reverse all mirror image characters. Will not change characters -in the basic multilingual plane for surrogate pairs. Assumes -that no unpaired surrogates are present. -@internalComponent -*/ - { - TText *end = aText + aLength; - while (aText < end) - { - TText* next = aText + 1; - TInt c = aText[0]; - if ((c & 0xFC00) == 0xD800) - { - ASSERT(aText + 1 < end); - ASSERT((aText[1] & 0xFC00) == 0xDC00); - c = (c << 10) + (aText[1] & 0x3FF) - + (0x10000 - 0xD800*0x400); - ++next; - } - TInt m = Mirror(c); - if (m != c) - { - if (m <= 0xFFFF) - { - aText[0] = static_cast<TText>(m); - if (0xFFFF < c) - aText[1] = 0xFFFF; - } - else if (0xFFFF < c) - { - aText[0] = static_cast<TText>((c >> 10) + 0xD760); - aText[1] = static_cast<TText>((c & 0x3FF) + 0xDC00); - } - } - aText = next; - } - } - -TText* BidiCopy::CopyMirror(TText* aDestination, const TText* aSource, TInt length) -/** -Copy some text, substituting mirrored characters. - -@return aDestination + number of TText codes output. -@internalComponent -*/ - { - for (; length; --length, ++aDestination, ++aSource) - *aDestination = static_cast<TText>(Mirror(*aSource)); - return aDestination; - } - -TText* BidiCopy::OutputTChar(TText* aDestination, TInt aToOutput) -/** -Write out the input character as UTF16. - -@return aDestination + number of TText codes output. -@internalComponent -*/ - { - if (aToOutput > 0xFFFF) - { - TInt c = aToOutput; - aDestination[0] = static_cast<TText>((c >> 10) + 0xD760); - aDestination[1] = static_cast<TText>((c & 0x3FF) + 0xDC00); - return aDestination + 2; - } - *aDestination = static_cast<TText>(aToOutput); - return aDestination + 1; - } - -TText* BidiCopy::CopyBackwards(TText* aDestination, - const TText* aSource, TInt aLength) -/** -Copy the text backwards without substituting mirrored characters, -checking for surrogate pairs or combining characters. - -@return aDestination + number of TText codes output. -@internalComponent -*/ - { - TText *end = aDestination + aLength; - while (aDestination != end) - { - *--end = *aSource++; - } - return aDestination + aLength; - } - -TText* BidiCopy::CopyBackwardsWithMirroring(TText* aDestination, - const TText* aSource, TInt aLength) -/** -Copy the text backwards to the output without checking for surrogate -pairs or combining characters, substituting mirrored characters. - -@return aDestination + number of TText codes output. -@internalComponent -*/ - { - TText *end = aDestination + aLength; - while (aDestination != end) - { - *--end = static_cast<TText>(Mirror(*aSource++)); - } - return aDestination + aLength; - } - -TText* BidiCopy::CopyGroupsBackwards(TText* aDestination, - const TText* aSource, TInt aLength) -/** -Copy the text backwards, substituting mirrored characters and correctly -handling all surrogate pairs and combining characters. - -@return aDestination + number of TText codes output. -@internalComponent -*/ - { - TText* retval = CopyBackwards(aDestination, aSource, aLength); - DeleteUnreversedSurrogates(aDestination, aLength); - SubstituteMirrorImages(aDestination, aLength); - CorrectGroups(aDestination, aLength); - CorrectSurrogatePairs(aDestination, aLength); - return retval; - } - -TBool BidiCopy::ImplicitDirectionalityIsRightToLeft( - const TText* aText, TInt aLength, TBool* aFound) -/** -Find out if the implicit directionality of a piece of text is right to -left. - -@param aText Text to be examined, or the first portion of text to be examined. -@param aLength Length of the text. -@param aFound If non-null, returns ETrue if the directionality could be -determined from aText. If not, and there is more text beyond, the function -should be called with the next portion of text until aFound returns ETrue -or there is no more text. -@return ETrue if the directionality is right to left. If the directionality -cannot be determined solely from this text, EFalse is returned. This is the -implicit directionality of text that is composed entirely of neutrals. -@internalComponent -*/ - { - if (aFound) - *aFound = ETrue; - const TText* end = aText + aLength; - TInt lastUtf16 = 0; - while (aText != end) - { - TInt code = *aText++; - if ((code & 0xFFFFFC00) == 0xD800 - && (lastUtf16 & 0xFFFFFC00) == 0xDC00) - { - code = (code << 10) + (lastUtf16 & 0x3FF) - + (0x10000 - 0xD800*0x400); - } - lastUtf16 = code; - TChar c = code; - switch(c.GetBdCategory()) - { - case TChar::ELeftToRight: - return EFalse; - case TChar::ERightToLeft: - case TChar::ERightToLeftArabic: - return ETrue; - default: - break; - } - } - if (aFound) - *aFound = EFalse; - return EFalse; - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BidiCopy.h --- a/graphicsdeviceinterface/gdi/sgdi/BidiCopy.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef BIDICOPY_H_ -#define BIDICOPY_H_ - -#include <e32def.h> - -class BidiCopy -/** Text copying and reversal routines. -@internalTechnology */ - { -public: - static TInt Mirror(TInt a); - static void ReverseCodes(TText* aText, TInt aLength); - static TText* CopyBackwards(TText* aDestination, - const TText* aSource, TInt aLength); - static void DeleteUnreversedSurrogates(TText* aText, TInt aLength); - static void CorrectSurrogatePairs(TText* aText, TInt aLength); - static void CorrectGroups(TText* aText, TInt aLength); - static void SubstituteMirrorImages(TText* aText, TInt aLength); - static TText* CopyMirror(TText* aDestination, const TText* aSource, TInt length); - static TText* OutputTChar(TText* aDestination, TInt aToOutput); - static TText* CopyBackwardsWithMirroring(TText* aDestination, - const TText* aSource, TInt aLength); - static TText* CopyGroupsBackwards(TText* aDestination, - const TText* aSource, TInt aLength); - static TBool ImplicitDirectionalityIsRightToLeft( - const TText* aText, TInt aLength, TBool* aFound); - }; - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BidiText.cpp --- a/graphicsdeviceinterface/gdi/sgdi/BidiText.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,961 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include <e32svr.h> -#include "BidiTextImp.h" -#include "BidiCopy.h" -#include "BidiCompact.h" -#include <bidi.h> -#include <e32base.h> -#include <gdi.h> -#include <linebreak.h> - -_LIT(KBidiPanicCategory,"Bidi"); -static const TInt KLineSeparator = 0x2028; -static const TInt KParagraphSeparator = 0x2029; -static const TInt KCodeCR = 0x000D; -static const TInt KCodeLF = 0x000A; -static const TInt KCodeEllipsis = 0x2026; - -void DeleteTRunInfo(void* aRunInfo) - { - delete[] reinterpret_cast<TBidirectionalState::TRunInfo*>(aRunInfo); - } - -void BidiPanic(TInt aError) - { - User::Panic(KBidiPanicCategory, aError); - } - - -// One page-full of TRunInfos -const TInt KMaxRunInfoArraySize = 4*1024 / sizeof(TBidirectionalState::TRunInfo); -const TInt KBidiTlsHandle = 0x101F633D; - - -/* -* Ref-counted TLS for the shared run info array used by the SetText() method. -*/ -NONSHARABLE_CLASS(CBidiTextTls) : public CObject - { -public: - static CBidiTextTls* NewL(); - static CBidiTextTls* GetTls(); - ~CBidiTextTls(); - inline TUint MaxArraySize(); - inline TBidirectionalState::TRunInfo* RunArray(); - -private: - CBidiTextTls(); - void ConstructL(TUint aMaxArraySize); - -private: - TBidirectionalState::TRunInfo* iRunInfoArray; - TUint iMaxArraySize; - }; - - - -CBidiTextTls::CBidiTextTls() -: iRunInfoArray(NULL), - iMaxArraySize(0) - { - } - - -CBidiTextTls::~CBidiTextTls() - { - UserSvr::DllFreeTls(KBidiTlsHandle); - - if (iRunInfoArray) - { - delete [] iRunInfoArray; - } - } - - -TUint CBidiTextTls::MaxArraySize() - { - return iMaxArraySize; - } - - -TBidirectionalState::TRunInfo* CBidiTextTls::RunArray() - { - return iRunInfoArray; - } - - -/** - * Helper function provided to simplify reading the TLS data and improve the - * readability of the code - */ -CBidiTextTls* CBidiTextTls::GetTls() - { - return reinterpret_cast<CBidiTextTls*>(UserSvr::DllTls(KBidiTlsHandle)); - } - - -CBidiTextTls* CBidiTextTls::NewL() - { - CBidiTextTls* self = new (ELeave) CBidiTextTls; - CleanupClosePushL(*self); - self->ConstructL(KMaxRunInfoArraySize); - CleanupStack::Pop(self); - return self; - } - - -void CBidiTextTls::ConstructL(TUint aMaxArraySize) - { - iMaxArraySize = aMaxArraySize; - iRunInfoArray = new (ELeave) TBidirectionalState::TRunInfo[aMaxArraySize]; - User::LeaveIfError(UserSvr::DllSetTls(KBidiTlsHandle, this)); - } - - -EXPORT_C RRunInfoArray::RRunInfoArray() -: iTls(NULL) - { - } - - -/** -Creates the run array if necessary and increases the reference count on it. -RRunInfoArray::OpenL() must be called prior to calling TBidiText::SetText(). - */ -EXPORT_C void RRunInfoArray::OpenL() - { - if(!iTls) - { - iTls = CBidiTextTls::GetTls(); - if(iTls) - { - iTls->Open(); // Increase ref count - } - else - { - iTls = CBidiTextTls::NewL(); - } - } - } - - -/** -Decreases the reference count on the run array. The run array will be deleted -if the reference count reaches zero. The client application must ensure that -there is a matching call to Close() for every call to OpenL() or memory will -be leaked. - */ -EXPORT_C void RRunInfoArray::Close() - { - if(iTls) - { - iTls->Close(); - iTls = NULL; - } - } - - -/** -@return Pointer to the run array buffer -@internalComponent - */ -TBidirectionalState::TRunInfo* RRunInfoArray::RunArray() const - { - return iTls ? iTls->RunArray() : NULL; - } - - -/** -@return Number of bytes needed to hold the TBidiTextImp member variables, plus the - text data allocated off the end of the TBidiTextImp object. -@internalComponent -*/ -TInt TBidiTextImp::RequiredBytes(TInt aLength, TInt aMaxLines, TInt aBdRunArraySize) - { - // size of TBidiTextImp class - TInt bytes = TBidiTextImp::AlignedSizeOf(); - // size of text for logical and visual orderings. - // This includes aMaxLines - 1 line breaks with surrounding - // zero-width joiners, and a truncation character (possibly - // a surrogate pair) plus a zero-width joiner. - bytes += sizeof(TText) * (aLength * 2 + aMaxLines * 3); - // size of line length array - bytes += sizeof(TInt16*) * aMaxLines; - // alignment - bytes = (bytes + 3) & 0xFFFFFFFC; - // array of TRunInfoCompact - bytes += sizeof(TRunInfoCompact) * aBdRunArraySize; - - return bytes; - } - - -/** -@return A TBidiTextImp object of sufficient size to hold the amount of text data specified - by the the arguments. -@param aLength The number of characters in the text. -@param aMaxLines The maximum number of lines -@param aBdRunArraySize The size of the bidi run array. -@internalComponent -*/ -TBidiTextImp* TBidiTextImp::NewL(TInt aLength, TInt aMaxLines, TInt aBdRunArraySize) - { - const TInt bytes = RequiredBytes(aLength, aMaxLines, aBdRunArraySize); - TInt8* mem = static_cast<TInt8*>(User::AllocL(bytes)); - TBidiTextImp* me = reinterpret_cast<TBidiTextImp*>(mem); - - me->iTextLengthAndFlags = aLength; - me->iVisualOrderedTextLength = -1; - me->iWrappingWidth = 0xFFFF; - me->iBidiRunArrayLength = aBdRunArraySize; - me->iLines = static_cast<TUint8>(aMaxLines); - me->iTruncationCharPlane = 0; - me->iTruncationChar16 = KCodeEllipsis; - me->SetAllocatedTextDataBytes(bytes - TBidiTextImp::AlignedSizeOf() - (sizeof(TRunInfoCompact) * aBdRunArraySize)); - return me; - } - -/** -@return Position of logically-ordered text portion of the heap cell. -@internalComponent -*/ -TText* TBidiTextImp::LogicalText() - { - return reinterpret_cast<TText*>( - reinterpret_cast<TInt8*>(this) - + TBidiTextImp::AlignedSizeOf()); - } - -/** -@return Position of visually-ordered text portion of the heap cell. -@internalComponent -*/ -TText* TBidiTextImp::VisualText() - { - TInt bytes = TBidiTextImp::AlignedSizeOf(); - bytes += sizeof(TText) * TextLength(); - return reinterpret_cast<TText*>( - reinterpret_cast<TInt8*>(this) + bytes); - } - -/** -Returns a pointer to the array containing the width in pixels of each and every line. -@return Position of the array of line widths portion of the heap cell. -@internalComponent -*/ -TInt16* TBidiTextImp::LineWidthArray() - { - TInt bytes = TBidiTextImp::AlignedSizeOf(); - bytes += sizeof(TText) * (TextLength() * 2 + iLines + 2); - return reinterpret_cast<TInt16*>( - reinterpret_cast<TInt8*>(this) + bytes); - } - -/** -@return Position of the array of runs portion of the heap cell. -@internalComponent -*/ -TRunInfoCompact* TBidiTextImp::BidiRunArray() - { - TInt bytes = TBidiTextImp::AlignedSizeOf(); - bytes += sizeof(TText) * (TextLength() * 2 + iLines + 2); - bytes += sizeof(TInt16*) * iLines; - bytes = (bytes + 3) & 0xFFFFFFFC; - return reinterpret_cast<TRunInfoCompact*>( - reinterpret_cast<TInt8*>(this) + bytes); - } - -/** -Report if the current character is an explicit line break. Both -aText[0] and aText[1] must be part of the string. -@return Size of line break. -@internalComponent -*/ -TInt SizeLineBreak(const TText* aText, const TText* aTextEnd) - { - if (aText == aTextEnd ) - return 0; - - if (*aText == KLineSeparator || *aText == KParagraphSeparator - || *aText == KCodeLF) - return 1; - if (aText[0] == KCodeCR) - { - // first check for space before checking for LF - if (aText+1 < aTextEnd ) - { - return aText[1] == KCodeLF? 2 : 1; - } - else - return 1; - } - return 0; - } - -/** -Find the next line break character. -@internalComponent -*/ -const TText* FindEndOfThisLine(const TText* aStart, const TText* aEnd) - { - while (aStart != aEnd && *aStart != KLineSeparator - && *aStart != KParagraphSeparator && *aStart != KCodeLF - && *aStart != KCodeCR) - ++aStart; - return aStart; - } - -/** -Count number of lines in text. -@internalComponent -*/ -TInt NumberOfLines(const TText* aStart, const TText* aEnd) - { - TInt num = 0; - while (aStart != aEnd) - { - aStart = FindEndOfThisLine(aStart, aEnd); - aStart += SizeLineBreak(aStart, aEnd); - ++num; - } - return num; - } - -/** Returns the directionality of a given language. -@param aLanguage Language. -@return The directionality of the given language. */ -EXPORT_C TBidiText::TDirectionality TBidiText::ScriptDirectionality( - TLanguage aLanguage) - { - const TUint32 DirectionalityBitmap[] = - { - 0, - // Arabic, Farsi, Hebrew - 0x02040020, - // Urdu - 0x40000000 - }; - TUint index = aLanguage; - if (index < sizeof(DirectionalityBitmap) * 8) - { - index >>= 5; - TInt bit = aLanguage & 31; - return (DirectionalityBitmap[index] >> bit) & 1? - ERightToLeft : ELeftToRight; - } - return ELeftToRight; - } - - -/** Reports the implicit directionality of a piece of text. - -@param aText The text to be examined. -@param aFound If non-null, returns ETrue if there were any strongly directional -characters and EFalse if there were none. If a piece of text is spread over -several descriptors, They need to be queried in sequence until one returns -ETrue in aFound. -@return The directionality implicit in aText. 131 */ -EXPORT_C TBidiText::TDirectionality TBidiText::TextDirectionality( - const TDesC& aText, TBool* aFound) - { - return BidiCopy::ImplicitDirectionalityIsRightToLeft( - aText.Ptr(), aText.Length(), aFound)? - ERightToLeft : ELeftToRight; - } - -/** Creates a bidirectional text object with directionality determined by -aDirectionality. Use this for text that has come from user input. - -@param aText The text in logical order. -@param aMaxLines - The maximum number of lines that this text will need to be split into. Must - be at least 1, but should not be too large, as each potential line takes an - extra 8 bytes of memory. -@param aDirectionality Direction to use. -@return The newly constructed object. - */ -EXPORT_C TBidiText* TBidiText::NewL(const TDesC& aText, TInt aMaxLines, - TBidiText::TDirectionality aDirectionality) - { - __ASSERT_ALWAYS(0 < aMaxLines, BidiPanic(EBidiPanic_InvalidMaxline)); - const TText* text = aText.Ptr(); - const TInt length = aText.Length(); - TInt linesInOriginalText = NumberOfLines(text, text + length); - if (aMaxLines < linesInOriginalText) - aMaxLines = linesInOriginalText; - - const TInt arraySize = TBidirectionalState::GenerateBdRunArray(text, length, 0, 0); - TBidirectionalState::TRunInfo* runInfoArray = new(ELeave) TBidirectionalState::TRunInfo[arraySize]; - TCleanupItem ci(DeleteTRunInfo, runInfoArray); - CleanupStack::PushL(ci); - TBidirectionalState::GenerateBdRunArray(text, length, runInfoArray, arraySize); - TBidirectionalState state; - state.ReorderLine(runInfoArray, arraySize, ETrue, ETrue, aDirectionality, - TChar::EOtherNeutral, TChar::EOtherNeutral); - TInt compactArraySize = TRunInfoCompact::Convert(0, aText, runInfoArray, arraySize); - - // size of TBidiTextImp class - TBidiTextImp* me = TBidiTextImp::NewL(length, aMaxLines, compactArraySize); - me->SetRightToLeftDirectionality(aDirectionality != ELeftToRight); - - TRunInfoCompact::Convert(me->BidiRunArray(), aText, runInfoArray, arraySize); - CleanupStack::PopAndDestroy(runInfoArray); - - Mem::Copy(me->LogicalText(), text, length * sizeof(TText)); - return me; - } - -/** Creates a bidirectional text object with directionality determined by the text -itself. Use this for text that has been obtained from a resource file. - -@param aText The text in logical order. -@param aMaxLines The maximum number of lines that this text will need to be -split into. Must be at least 1, but should not be too large, as each potential -line takes an extra 8 bytes of memory. -@return The newly constructed object. */ -EXPORT_C TBidiText* TBidiText::NewL(const TDesC& aText, TInt aMaxLines) - { - return NewL(aText, aMaxLines, TextDirectionality(aText)); - } - - -/** Creates a bidirectional text object with enough room for up to aReservedMaxLength -number of characters. The number of characters that will actually fit (when calling -SetText()) might be slightly less than aReservedMaxLength, as each change between a -left-to-right and a right-to-left sub-string (and the other way around) needs about -two characters worth of memory. - -@param aReservedMaxLength The maximum number of characters. -@param aMaxLines The maximum number of lines that this text will need to be -split into. Must be at least 1, but should not be too large, as each potential -line takes an extra 8 bytes of memory. -@return The newly constructed object. */ -EXPORT_C TBidiText* TBidiText::NewL(TInt aReservedMaxLength, TInt aMaxLines) - { - __ASSERT_ALWAYS(0 < aReservedMaxLength, BidiPanic(EBidiPanic_InvalidReservedMaxLength)); - __ASSERT_ALWAYS(0 < aMaxLines, BidiPanic(EBidiPanic_InvalidMaxline)); - - const TInt compactArraySize = 1; // Always at least one needed - - TBidiTextImp* me = TBidiTextImp::NewL(aReservedMaxLength, aMaxLines, compactArraySize); - me->SetTextLength(0); // no text yet, just reserved memory - return me; - } - -/** Sets the text of the bidirectional text object with directionality determined -by the text itself. Use this for text that has been obtained from a resource file. - -@param aText The text in logical order. -@return The number of characters that didn't fit in the available buffer. -*/ -EXPORT_C TInt TBidiText::SetText(const TDesC& aText, RRunInfoArray& aRunInfoArray) - { - return SetText(aText, TextDirectionality(aText), aRunInfoArray); - } - - -/** Sets the text of the bidirectional text with directionality determined by -aDirectionality. Use this for text that has come from user input. - -@param aText The text in logical order. -@param aDirectionality Direction to use. -@return The number of characters that didn't fit in the available buffer. -@panic Bidi EBidiPanic_RunArrayNull The call to RRunInfoArray::OpenL() has not -been made prior to this call to TBidiText::SetText() -*/ -EXPORT_C TInt TBidiText::SetText(const TDesC& aText, - TDirectionality aDirectionality, - RRunInfoArray& aRunInfoArray) - { - TBidirectionalState::TRunInfo* const runArray = aRunInfoArray.RunArray(); - __ASSERT_ALWAYS(runArray, BidiPanic(EBidiPanic_RunArrayNull)); - - TBidiTextImp* me = TBidiTextImp::Imp(this); - const TInt maxLines = me->iLines; - const TText* text = aText.Ptr(); - TInt length = aText.Length(); - - TInt requiredArraySize = TBidirectionalState::GenerateBdRunArray(text, length, 0, 0); - const TInt actualArraySize = aRunInfoArray.iTls->MaxArraySize(); - - if (requiredArraySize > actualArraySize) - { - // Handle the case where we do not have enough space in the run array - // to cope with the input text. The text will be truncated to ensure - // we don't overrun the buffer and the number of excess characters - // returned as a negative number. - requiredArraySize = actualArraySize; - TBidirectionalState::GenerateBdRunArray(text, length, runArray, requiredArraySize); - - length = 0; - for (TInt index = 0; index < requiredArraySize; index++) - { - length += runArray[index].iLength; - } - } - else - { - TBidirectionalState::GenerateBdRunArray(text, length, runArray, requiredArraySize); - } - - - - TBidirectionalState state; - state.ReorderLine(runArray, - requiredArraySize, - ETrue, - ETrue, - aDirectionality, - TChar::EOtherNeutral, - TChar::EOtherNeutral); - const TInt compactArraySize = TRunInfoCompact::Convert(0, - aText, - runArray, - requiredArraySize); - - // Calculate number of bytes needed to keep text data - TInt requiredBytes = sizeof(TText) * (length * 2 + maxLines * 3); // size of text for logical & visual orderings. - requiredBytes += sizeof(TInt16*) * maxLines; // size of line length array - requiredBytes = (requiredBytes + 3) & 0xFFFFFFFC; // alignment - - TInt textLength = length; - const TInt excessData = Max(0, requiredBytes - me->AllocatedTextDataBytes()); - TInt excessChars = 0; - if(excessData) - { - // Calculate how much text data that can be fitted into the available bytes, - // given the bytes needed for run array data - excessChars = excessData / (sizeof(TText) * 2); - textLength -= excessChars; - } - else if (aText.Length() > length) - { - excessChars = aText.Length() - length; - } - - me->SetTextLength(textLength); - me->SetRightToLeftDirectionality(aDirectionality != ELeftToRight); - me->iVisualOrderedTextLength = -1; - me->iBidiRunArrayLength = static_cast<TUint16>(compactArraySize); - - TRunInfoCompact::Convert(me->BidiRunArray(), aText, runArray, requiredArraySize); - Mem::Copy(me->LogicalText(), text, textLength * sizeof(TText)); - - return excessChars; - } - -/** Sets the character that will be added at the end of the text if the whole text -cannot fit into the space specified. - -@param aTruncateWith The truncation char. */ -EXPORT_C void TBidiText::SetTruncationChar(TChar aTruncateWith) - { - TBidiTextImp* me = TBidiTextImp::Imp(this); - me->iTruncationCharPlane = static_cast<TUint8>(aTruncateWith >> 16); - me->iTruncationChar16 = static_cast<TUint16>(aTruncateWith); - } - -TInt RemoveTrailingSpaces(const MLineBreaker* aBreaker, - const TText* aInput, TInt aMinPos, TInt aEndPos) - { - // Ignore space characters at the end of the line. - // Don't bother to ignore spaces made of surrogate pairs: - // more processing than it's worth. - TUint dummy1, dummy2; - while (aEndPos != aMinPos && MLineBreaker::ESpLineBreakClass - == aBreaker->LineBreakClass(aInput[aEndPos - 1], dummy1, dummy2)) - { - --aEndPos; - } - return aEndPos; - } - -/** Prepares the visually-ordered text according to the wrapping width and font -specified. Text cannot be drawn until this has been done. -@param aWrappingWidth - The maximum width of the text in pixels. Note that this distance should be - slightly less than the available width to allow for characters such as "W" - which can have side-bearings that leak into the margins. -@param aFont The font that will provide the character metrics. -@param aBreaker - An object for breaking the lines. May be NULL for default behaviour. -@param aMaxLines - Number of lines to restrict wrapping to. The truncation character will be - used if the text is too long for this number of lines. The number of lines - wrapped to may not be greater than the figure passed to NewL. -*/ -EXPORT_C void TBidiText::WrapText(TInt aWrappingWidth, const CFont& aFont, - const MLineBreaker* aBreaker, TInt aMaxLines) - { - TBidiTextImp* me = TBidiTextImp::Imp(this); - me->iWrappingWidth = aWrappingWidth; - - TInt16* lineWidths = me->LineWidthArray(); - TText* output = me->VisualText(); - - TInt numLines = 0; - DoWrapText(aWrappingWidth, aFont, aBreaker, aMaxLines, output, numLines, lineWidths); - me->iVisualOrderedTextLength = output - me->VisualText(); - } - -/** Calculate the minimum size needed to draw the current text, given the specified -wrapping width, font, and line gap. Calling this method will not rewrap the object's -text. - -@param aWrappingWidth - The maximum width of the text in pixels. Note that this distance should be - slightly less than the available width to allow for characters such as "W" - which can have side-bearings that leak into the margins. -@param aFont The font that will provide the character metrics. -@param aLineGap The number of empty pixels between two lines of text. - Note that this is not the same as the baseline spacing, which is the font - height plus the line gap. -@param aMaxLines - Number of lines to restrict wrapping to. The truncation character will be - used if the text is too long for this number of lines. The number of lines - wrapped to may be greater than the figure passed to NewL, and that figure - will be used if the number of lines is specified as -1. If 0 (zero) is specified - no limit is applied. -@param aBreaker - An object for breaking the lines. May be NULL for default behaviour. -*/ -EXPORT_C TSize TBidiText::MinimumSize(TInt aWrappingWidth, const CFont& aFont, TInt aLineGap, - TInt aMaxLines, const MLineBreaker* aBreaker) const - { - __ASSERT_ALWAYS(0 <= aWrappingWidth, BidiPanic(EBidiPanic_InvalidWrappingWidth)); - __ASSERT_ALWAYS(0 <= aLineGap, BidiPanic(EBidiPanic_InvalidLineGap)); - __ASSERT_ALWAYS(-1 <= aMaxLines, BidiPanic(EBidiPanic_InvalidMaxline)); - - TInt numLines = 0; - TText* output = NULL; - const TInt minWidth = DoWrapText(aWrappingWidth, - aFont, - aBreaker, - (aMaxLines = 0 ? KMaxTInt : aMaxLines), - output, - numLines, - NULL); - const TInt minHeight = (aFont.FontMaxHeight() + aLineGap) * numLines - aLineGap; - return TSize(minWidth, minHeight); - } - - -TInt TBidiText::DoWrapText(TInt aWrappingWidth, const CFont& aFont, const MLineBreaker* aBreaker, - TInt aMaxLines, TText*& aOutputText, TInt& aNumLines, TInt16* aLineWidthArray) const - { - MLineBreaker defaultBreaker; - if (!aBreaker) - aBreaker = &defaultBreaker; - - const TBidiTextImp* me = TBidiTextImp::Imp(this); - if (me->iLines < aMaxLines) - aMaxLines = me->iLines; - - const TRunInfoCompact* runArray = me->BidiRunArray(); - const TRunInfoCompact* runArrayEnd = runArray + me->iBidiRunArrayLength; - - const TText* input = me->LogicalText(); - const TInt inputLength = me->TextLength(); - TPtrC textDes(input, inputLength); - const TText* output = me->VisualText(); - - TRunInfoCompact::TReorderingContext context; - context.iSource = input; - context.iTruncation = 0xFFFF; - context.iJoinsAtEnd = EFalse; - - TInt start = 0; - CFont::TMeasureTextInput measureInput; - measureInput.iMaxAdvance = aWrappingWidth; - measureInput.iEndInputChar = FindEndOfThisLine(input, input + inputLength) - input; - CFont::TMeasureTextOutput measureOutput; - TBool truncated; - - TInt widestLineWidth = 0; - TBool bLastLine = EFalse; - for (aNumLines = 0; aNumLines != aMaxLines && start < inputLength; ++aNumLines) - { - truncated=EFalse; - context.iJoinsAtStart = context.iJoinsAtEnd; - if(aNumLines != 0 && aOutputText) - *(aOutputText++) = KLineSeparator; - - measureInput.iStartInputChar = start; - TInt advance = aFont.MeasureText(textDes, &measureInput, &measureOutput); - TInt breakPos = measureOutput.iChars; - TInt endOfLine = breakPos; - // truncationCharWidth is the width of any truncation character on this - // line only. - TInt truncationCharWidth = 0; - if (endOfLine == measureInput.iEndInputChar) - { - //handle the dangling lines here - TInt sizeLineBreak = SizeLineBreak(input + endOfLine, input + inputLength); - if((measureInput.iEndInputChar < inputLength - sizeLineBreak) && (aNumLines == aMaxLines - 1)) - bLastLine = ETrue; - } - else if (aNumLines == aMaxLines - 1) - { - bLastLine = ETrue; - } - else - { // Not last line, so find a legal line break. - aBreaker->GetLineBreak(textDes, - start + 1, - measureOutput.iChars, - EFalse, - 0, - breakPos, - endOfLine); - } - - if (bLastLine) - { - // Last line, so re-measure leaving enough room for - // truncation character. - context.iTruncation = me->TruncationChar(); - truncationCharWidth = aFont.CharWidthInPixels(context.iTruncation); - measureInput.iMaxAdvance = aWrappingWidth - truncationCharWidth; - advance = aFont.MeasureText(textDes, &measureInput, &measureOutput) + truncationCharWidth; - breakPos = RemoveTrailingSpaces(aBreaker, input, start, measureOutput.iChars); - truncated=ETrue; - bLastLine = EFalse; - } - - // if the break position has changed, we need to remeasure - if (breakPos != measureOutput.iChars) - { - const TInt oldEnd = measureInput.iEndInputChar; - measureInput.iEndInputChar = breakPos; - advance = aFont.MeasureText(textDes, &measureInput, &measureOutput) + truncationCharWidth; - measureInput.iEndInputChar = oldEnd; - truncated=ETrue; - } - - //width may be greater than advance - advance = Max(advance,measureOutput.iBounds.Width()); - - if(widestLineWidth < advance) - widestLineWidth = advance; - - if(aLineWidthArray) - *(aLineWidthArray++) = static_cast<TInt16>(advance); - - context.iStart = start; - context.iEnd = breakPos; - if (truncated) - { - context.iJoinsAtEnd = breakPos < inputLength? - TRunInfoCompact::JoinBefore(input, breakPos) : EFalse; - } - else - { - context.iJoinsAtEnd = endOfLine < inputLength? - TRunInfoCompact::JoinBefore(input, endOfLine) : EFalse; - } - if (aOutputText) - { - for (const TRunInfoCompact* p = runArray; p != runArrayEnd; ++p) - aOutputText = p->Reorder(aOutputText, context); - } - // Set 'start' to the beginning of the next line... - start = endOfLine; - - // ...move it past any line break... - const TInt sizeOfLineBreak = SizeLineBreak(input + start, input + inputLength); - if (sizeOfLineBreak != 0) - { - start += sizeOfLineBreak; - // ...and find the end of this next line. - const TText* endLine = FindEndOfThisLine(input + start, input + inputLength); - measureInput.iEndInputChar = endLine - input; - } - } - - return widestLineWidth; - } - - -/** Prepares the visually-ordered text according to the wrapping width and font -specified. Text cannot be drawn until this has been done. - -@param aWrappingWidth The maximum width of the text in pixels. Note that this -distance should be slightly less than the available width to allow for characters -such as "W" which can have side-bearings that leak into the margins. -@param aFont The font that will provide the character metrics. -@param aBreaker An object for breaking the lines. May be NULL for default behaviour. */ -EXPORT_C void TBidiText::WrapText(TInt aWrappingWidth, const CFont& aFont, - const MLineBreaker* aBreaker) - { - WrapText(aWrappingWidth, aFont, aBreaker, KMaxTInt); - } - -/** Returns the original logically-ordered text supplied in the constructor. -@return The original logically-ordered text supplied in the constructor. */ -EXPORT_C TPtrC TBidiText::Text() const - { - const TBidiTextImp* me = TBidiTextImp::Imp(this); - const TText* text = me->LogicalText(); - return TPtrC(text, me->TextLength()); - } - -/** Returns the text as prepared for display, provided that WrapText has been called. -If WrapText has not been called, a panic will result. - -@return The text as prepared for display */ -EXPORT_C TPtrC TBidiText::DisplayText() const - { - const TBidiTextImp* me = TBidiTextImp::Imp(this); - __ASSERT_ALWAYS(me->iVisualOrderedTextLength >= 0, BidiPanic(EBidiPanic_InvalidVisualOrderedTextLength)); - const TText* text = me->VisualText(); - return TPtrC(text, me->iVisualOrderedTextLength); - } - -/** Returns the wrapping width previously supplied to WrapText. - -@return The wrapping. */ -EXPORT_C TInt TBidiText::WrappingWidth() const - { - const TBidiTextImp* me = TBidiTextImp::Imp(this); - return me->iWrappingWidth; - } - -/** Returns the directionality of the text. - -@return The directionality. */ -EXPORT_C TBidiText::TDirectionality TBidiText::Directionality() const - { - const TBidiTextImp* me = TBidiTextImp::Imp(this); - return me->HasRightToLeftDirectionality() ? ERightToLeft : ELeftToRight; - } - -/** Returns the truncation character used. - -@return The truncation character. */ -EXPORT_C TChar TBidiText::TruncationChar() const - { - const TBidiTextImp* me = TBidiTextImp::Imp(this); - return me->TruncationChar(); - } - -/** Reports the number of lines in the text to be drawn. - -WrapText must have been called already. -@return - The number of lines in the text which would be drawn by DrawText. -*/ -EXPORT_C TInt TBidiText::NumberOfLinesInDisplayText() const - { - const TBidiTextImp* me = TBidiTextImp::Imp(this); - if (me->iVisualOrderedTextLength <0) - { - return 0; - } - const TText* text = me->VisualText(); - const TText* textEnd = text + me->iVisualOrderedTextLength; - return NumberOfLines(text, textEnd); - } - -/** Returns the text as prepared for display, provided that WrapText has been called. -If WrapText has not been called, a panic will result. -@param aLine Line number to retrieve. -@param aWidth Returns the width in pixels of the line retrieved. -@return The text as prepared for display. */ -EXPORT_C TPtrC TBidiText::LineOfDisplayText(TInt aLine, TInt& aWidthInPixels) const - { - const TBidiTextImp* me = TBidiTextImp::Imp(this); - __ASSERT_ALWAYS(me->iVisualOrderedTextLength >= 0, BidiPanic(EBidiPanic_InvalidVisualOrderedTextLength)); - __ASSERT_ALWAYS(0 <= aLine && aLine < me->iLines, BidiPanic(EBidiPanic_InvalidLineNumber)); - aWidthInPixels = me->LineWidthArray()[aLine]; - const TText* text = me->VisualText(); - const TText* textEnd = text + me->iVisualOrderedTextLength; - for (; aLine != 0; --aLine) - { - text = FindEndOfThisLine(text, textEnd); - text += SizeLineBreak(text, textEnd); - } - const TText* endOfLine = FindEndOfThisLine(text, textEnd); - return TPtrC(text, endOfLine - text); - } - -/** Draws all of the text. WrapText must have been called already. - -@param aGc The graphics context to draw the text to. The graphics context's -font is assumed to have been set to the same font that was passed to the previous -call to WrapText. -@param aLeft The left extreme of the baseline. Note that this should not be -at the very edge of the available space, or characters such as "W" with left -side bearings may be truncated. -@param aBaseLineSpacing The spacing between each line. If 0, only the first -line is drawn. -@param aAlignment How to position the text horizontally. */ -EXPORT_C void TBidiText::DrawText(CGraphicsContext& aGc, const TPoint& aLeft, - TInt aBaseLineSpacing, CGraphicsContext::TTextAlign aAlignment) const - { - TPoint origin; - origin.iY = aLeft.iY; - TInt lines = aBaseLineSpacing == 0? 1 : NumberOfLinesInDisplayText(); - TInt wrappingWidth = WrappingWidth(); - for (TInt i = 0; i != lines; ++i) - { - TInt width; - TPtrC textLine = LineOfDisplayText(i, width); - origin.iX = aLeft.iX; - if (aAlignment != CGraphicsContext::ELeft) - { - TInt excess = wrappingWidth - width; - origin.iX += aAlignment != CGraphicsContext::ECenter? - excess : excess >> 1; - } - aGc.DrawText(textLine, origin); - origin.iY += aBaseLineSpacing; - } - } - -/** Draws all of the text. Alignment is taken from the directionality of the text. -WrapText must have been called already. - -@param aGc The graphics context to draw the text to. The graphics context's -font is assumed to have been set to the same font that was passed to the previous -call to WrapText. -@param aLeft The left extreme of the baseline. Note that this should not be -at the very edge of the available space, or characters such as "W" with left -side bearings may be truncated. -@param aBaseLineSpacing The spacing between each line. If 0, only the first -line is drawn. */ -EXPORT_C void TBidiText::DrawText(CGraphicsContext& aGc, const TPoint& aLeft, - TInt aBaseLineSpacing) const - { - DrawText(aGc, aLeft, aBaseLineSpacing, - Directionality() == ELeftToRight? - CGraphicsContext::ELeft : CGraphicsContext::ERight); - } - -/** Draws the first line of the text. WrapText must have been called already. Alignment -is taken from the directionality of the text. - -@param aGc The graphics context to draw the text to. The graphics context's -font is assumed to have been set to the same font that was passed to the previous -call to WrapText. -@param aLeft The left extreme of the baseline. Note that this should not be -at the very edge of the available space, or characters such as "W" with left -side bearings may be truncated. */ -EXPORT_C void TBidiText::DrawText(CGraphicsContext& aGc, const TPoint& aLeft) const - { - DrawText(aGc, aLeft, 0); - } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BidiTextImp.h --- a/graphicsdeviceinterface/gdi/sgdi/BidiTextImp.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef BIDITEXTIMP_H_ -#define BIDITEXTIMP_H_ - -#include "BidiText.h" - -class TRunInfoCompact; - -class TBidiTextImp : public TBidiText -/** This is the implementation for the class TBidiText. It is so designed so -that it only occupies a single heap cell. This means that it is efficient in -memory usage, and can be placed on the cleanup stack without being a C-class. -@internalComponent */ - { -public: - static TBidiTextImp* NewL(TInt aLength, TInt aMaxLines, TInt aBdRunArraySize); - static TBidiTextImp* Imp(TBidiText* aSelf); - static const TBidiTextImp* Imp(const TBidiText* aSelf); - static TInt AlignedSizeOf(); - TText* LogicalText(); - TText* VisualText(); - TInt16* LineWidthArray(); - TRunInfoCompact* BidiRunArray(); - const TText* LogicalText() const - { return const_cast<TBidiTextImp*>(this)->LogicalText(); } - const TText* VisualText() const - { return const_cast<TBidiTextImp*>(this)->VisualText(); } - const TInt16* LineWidthArray() const - { return const_cast<TBidiTextImp*>(this)->LineWidthArray(); } - const TRunInfoCompact* BidiRunArray() const - { return const_cast<TBidiTextImp*>(this)->BidiRunArray(); } - /** - @return Current truncation character. - @internalComponent */ - TChar TruncationChar() const - { return static_cast<TInt>(iTruncationCharPlane << 16) - + iTruncationChar16; } - - inline TInt TextLength() const; - inline void SetTextLength(TInt aLength); - inline TBool HasRightToLeftDirectionality() const; - inline void SetRightToLeftDirectionality(TBool aRightToLeftDirectionality); - - static TInt RequiredBytes(TInt aLendth, TInt aMaxLines, TInt aBdRunArraySize); - inline TInt AllocatedTextDataBytes() const; - -private: - inline void SetAllocatedTextDataBytes(TInt aMaxBytes); - enum TFlags - { - EFRightToLeft = 0x10000000, - EFTruncateAtBeginning = 0x20000000 - }; - - enum { ELengthMask = 0x0FFFFFFF }; - TInt iTextLengthAndFlags; - TInt iTextDataBytes; // Number of bytes allocated off the end of the object for text data -public: - TInt iVisualOrderedTextLength; - TUint16 iWrappingWidth; - TUint16 iBidiRunArrayLength; - TUint8 iLines; - TUint8 iTruncationCharPlane; - TUint16 iTruncationChar16; - }; - -TInt SizeLineBreak(const TText* aText); -const TText* FindEndOfThisLine(const TText* aStart, const TText* aEnd); -TInt NumberOfLines(const TText* aStart, const TText* aEnd); - -inline TBidiTextImp* TBidiTextImp::Imp(TBidiText* aSelf) - { return static_cast<TBidiTextImp*>(aSelf); } - -inline const TBidiTextImp* TBidiTextImp::Imp(const TBidiText* aSelf) - { return static_cast<const TBidiTextImp*>(aSelf); } - -inline TInt TBidiTextImp::AlignedSizeOf() - { return ((sizeof(TBidiTextImp) + 1) & 0xFFFFFFFE); } - -inline TInt TBidiTextImp::TextLength() const - { return iTextLengthAndFlags & TBidiTextImp::ELengthMask; } - -inline void TBidiTextImp::SetTextLength(TInt aLength) - { iTextLengthAndFlags &= ~ELengthMask; // clear old size bits - iTextLengthAndFlags |= (aLength&ELengthMask); } // set new size bits - -inline TBool TBidiTextImp::HasRightToLeftDirectionality() const - { return iTextLengthAndFlags&TBidiTextImp::EFRightToLeft; } - -inline void TBidiTextImp::SetRightToLeftDirectionality(TBool aRightToLeftDirectionality) - { - if (aRightToLeftDirectionality) - iTextLengthAndFlags |= TBidiTextImp::EFRightToLeft; - else - iTextLengthAndFlags &= ~TBidiTextImp::EFRightToLeft; - } - -inline TInt TBidiTextImp::AllocatedTextDataBytes() const - { return iTextDataBytes; } - -inline void TBidiTextImp::SetAllocatedTextDataBytes(TInt aTextDataBytes) - { iTextDataBytes = aTextDataBytes; } - - -/** -Bidi panic. -@internalComponent -*/ -void Panic(TInt aError); - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/BidiVisual.cpp --- a/graphicsdeviceinterface/gdi/sgdi/BidiVisual.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include "BidiVisual.h" -#include "BidiCopy.h" -#include "BidiTextImp.h" -#include "BidiCompact.h" - -extern void BidiPanic(TInt aError); - -/** Construct the class with a full paragraph of text and the run array to be used -to hold all the runs. - -@param aText The text to be analyzed. This must not be de-allocated until -all operations on it through this class have been completed. -@param aRightToLeft Paragraph directionality. -@param aRunInfoArray The array to be used to hold the run information. This -must not be de-allocated until all operations on it through this class have -been completed. Ownership is not passed. -@param aRunInfoLength The number of TRunInfo<\code> objects in aRunInfoArray. */ -EXPORT_C TBidiLogicalToVisual::TBidiLogicalToVisual( - const TDesC& aText, - TBool aRightToLeft, - TBidirectionalState::TRunInfo* aRunInfoArray, - TInt aRunInfoLength) - : iText(aText), iRightToLeft(aRightToLeft), - iRunInfoArray(aRunInfoArray), iRunInfoArrayLength(aRunInfoLength), iRuns(aRunInfoLength) - { - } - -/** Construct the class with a full paragraph of text and the run array to be used -to hold all the runs. Directionality is taken as the implicit directionality -of the text passed. - -@param aText The text to be analyzed. This must not be de-allocated until -all operations on it through this class have been completed. -@param aRunInfoArray The array to be used to hold the run information. This -must not be de-allocated until all operations on it through this class have -been completed. Ownership is not passed. -@param aRunInfoLength The number of TRunInfo objects in aRunInfoArray. */ -EXPORT_C TBidiLogicalToVisual::TBidiLogicalToVisual( - const TDesC& aText, - TBidirectionalState::TRunInfo* aRunInfoArray, - TInt aRunInfoLength) - : iText(aText), - iRunInfoArray(aRunInfoArray), iRunInfoArrayLength(aRunInfoLength), iRuns(aRunInfoLength) - { - iRightToLeft = BidiCopy::ImplicitDirectionalityIsRightToLeft( - aText.Ptr(), aText.Length(), 0); - } - -/** Process the text. This must be called before any call to GetVisualLine. - -@return The number of runs that were or would be required to reorder the complete -line. If this is less than the value passed into the constructor as aRunInfoLength, -the full text will not be able to be Reordered. */ -EXPORT_C TInt TBidiLogicalToVisual::Reorder() - { - TInt required = TBidirectionalState::GenerateBdRunArray( - iText.Ptr(), iText.Length(), iRunInfoArray, iRunInfoArrayLength); - iRuns = Min(required, iRunInfoArrayLength); - TBidirectionalState state; - state.ReorderLine(iRunInfoArray, iRuns, ETrue, ETrue, iRightToLeft, - TChar::EOtherNeutral, TChar::EOtherNeutral); - return required; - } - -/** Get a line of visually ordered text. - -@param aLine Line of text in visual order. There must be aEnd - aStart + 4 -characters available in the buffer. Only characters within the range aStart -to aEnd, plus perhaps a truncation character and up to two zero-width joiners -will be present in the string at the end. -@param aStart The first character in the text that is to be on the line. -@param aEnd One plus the last character in the test that is to be on the line. -@param aTruncationChar The character to mark the end of the text, if appropriate, -or 0xFFFF if no truncation character is to be used. */ -EXPORT_C void TBidiLogicalToVisual::GetVisualLine(TDes& aLine, - TInt aStart, TInt aEnd, TChar aTruncationChar) - { - __ASSERT_ALWAYS(aEnd - aStart + KMinCharAvailable <= aLine.MaxLength(), BidiPanic(KErrArgument)); - - if(iText.Length() == 0) - { - aLine.Zero(); - return;//We can't do anything with iText, if its length is 0. - } - - TRunInfoCompact::TReorderingContext context; - - const TText* input = &iText[0]; - context.iStart = aStart; - context.iEnd = aEnd; - context.iTruncation = aTruncationChar; - context.iSource = input; - context.iJoinsAtStart = TRunInfoCompact::JoinBefore(input, aStart); - context.iJoinsAtEnd = aEnd < iText.Length() ? TRunInfoCompact::JoinBefore(input, aEnd) : EFalse; - - aLine.FillZ(1); - TText* output = &aLine[0]; - TText* outputStart = output; - TBidirectionalState::TRunInfo* endInfo = iRunInfoArray + iRuns; - for (TBidirectionalState::TRunInfo* currentInfo = iRunInfoArray; - currentInfo != endInfo; ++currentInfo) - { - TRunInfoCompact info(currentInfo->iStart, - currentInfo->iLength, currentInfo->iDirection); - output = info.Reorder(output, context); - } - aLine.SetLength(output - outputStart); - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/FONT.CPP --- a/graphicsdeviceinterface/gdi/sgdi/FONT.CPP Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1810 +0,0 @@ -// Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include <gdi.h> -#include <openfont.h> -#include "GlyphSel.h" -#include "FontThai.h" -#include "FontArabic.h" -#include "FontIndic.h" -#include "GDIPANIC.h" -#include "glyphsample.h" -#include "gdiinline.inl" -#include "gdistructs.h" -#include "gdiconsts.h" -#include "gdiplatapi.h" - -/** - Names holds the types & data associated with the glyph selection - algorithm in CFont::GetCharacterPosition(). -@internalComponent -*/ -namespace GlyphSelection - { - - typedef TBool (*ProcessFunc)(TGlyphSelectionState& aGss, RShapeInfo&); - - /** - This structure defines the fields present in each row of the GlyphTable - datat table below. - @internalComponent - */ - struct TTableEntry - { - TUint iLow; - TUint iHigh; - ProcessFunc iProcessFunc; - }; - - /** - This table encodes the Unicode character ranges and the glyph selector - classes to be used for each character range when processing characters - into glyph clusters in CFont::GetCharacterPosition(). - New glyph selection classes must make sure they are listed in this - table to ensure they are invoked as required. - A '0' iProcessFunc entry tells the algorithm to skip the character. - @internalComponent - */ - static const TTableEntry Table[] = - { - // iLow, iHigh, iProcessFunc - { 0x0000, 0x00AC, GlyphSelector_Default::Process}, - { 0x00AD, 0x00AD, GlyphSelector_SoftHyphen::Process}, - { 0x00AE, 0x05FF, GlyphSelector_Default::Process}, - { 0x0600, 0x06FF, GlyphSelector_Arabic::Process}, - { 0x0700, 0x08FF, GlyphSelector_Default::Process}, - { 0x0900, 0x0970, GlyphSelector_Devanagari::Process}, - { 0x0980, 0x09FF, GlyphSelector_Bengali::Process}, - { 0x0A00, 0x0A7F, GlyphSelector_Gurmukhi::Process}, - { 0x0A80, 0x0AFF, GlyphSelector_Gujarati::Process}, - { 0x0B80, 0x0BFF, GlyphSelector_Tamil::Process}, - { 0x0C00, 0x0C7F, GlyphSelector_Telugu::Process}, - { 0x0C80, 0x0CFF, GlyphSelector_Kannada::Process}, - { 0x0D00, 0x0D7F, GlyphSelector_Malayalam::Process}, - { 0x0D80, 0x0DFF, GlyphSelector_Default::Process}, - { 0x0E00, 0x0E32, GlyphSelector_Thai::Process}, - { 0x0E33, 0x0E33, GlyphSelector_ThaiSaraAm::Process}, - { 0x0E34, 0x0E7F, GlyphSelector_Thai::Process}, - { 0x0E80, 0x200B, GlyphSelector_Default::Process}, - { 0x200C, 0x200F, 0}, - { 0x2010, 0x2029, GlyphSelector_Default::Process}, - { 0x202A, 0x202E, 0}, - { 0x202F, 0xFFFD, GlyphSelector_Default::Process}, - { 0xFFFE, 0xFFFF, 0}, - { 0x10000, 0x10FFFF, GlyphSelector_Default::Process}, - {0xFFFFFFFF,0xFFFFFFFF, 0} - }; - } - -/** Find appropriate processor function for the given character. -@param aChar Character for processing. -@return processor function or 0 if the character is to be skipped. -@internalComponent */ -GlyphSelection::ProcessFunc CharacterToProcessFunction(TInt aChar) - { - for (const GlyphSelection::TTableEntry* glyphSel = GlyphSelection::Table; - glyphSel->iLow != 0xFFFFFFFF; glyphSel++) - { - if ((glyphSel->iLow <= aChar) && (aChar <= glyphSel->iHigh)) - return glyphSel->iProcessFunc; - } - return 0; - } - -/** -@internalTechnology For use by TFontStyle/TOpenFontSpec. -*/ -EXPORT_C TBool FontEffect::IsEffectOn(TEffect aEffect, TUint32 aFontEffect) - { - return aEffect & aFontEffect; - } - -/** -@internalTechnology For use by TFontStyle/TOpenFontSpec. -*/ -EXPORT_C void FontEffect::SetEffect(TEffect aEffect, TBool aOn, TUint32& aFontEffect) - { - if (aOn) - aFontEffect |= aEffect; - else - aFontEffect &= ~aEffect; - } - - -// -// TFontStyle -// - -/** Default C++ constructor. */ -EXPORT_C TFontStyle::TFontStyle(): - iFlags(0), iReserved1(0), iReserved2(0) - {} - - -/** Constructs a TFontStyle object with the specified attributes. -@param aPost The posture attribute. -@param aStrWgt The stroke weight attribute. -@param aPrintPos The print position attribute. */ -EXPORT_C TFontStyle::TFontStyle(TFontPosture aPostr,TFontStrokeWeight aWgt,TFontPrintPosition aPos): - iFlags(0), iReserved1(0), iReserved2(0) - { - if (aPostr == EPostureItalic) - { - iFlags |= EItalic; - } - if (aWgt == EStrokeWeightBold) - { - iFlags |= EBold; - } - if (aPos == EPrintPosSuperscript) - { - iFlags |= ESuper; - } - else if (aPos == EPrintPosSubscript) - { - iFlags |= ESub; - } - } - - -EXPORT_C void TFontStyle::InternalizeL(RReadStream& aStream) -/** Internalises a font style from a read stream. - -The presence of this function means that the standard templated operator>>() -(defined in s32strm.h) is available to internalise objects of this class. - -@param aStream The stream from which the font style is to be internalised -@leave KErrNoMemory If there is a problem reading from the stream. -If internalisation causes an out of memory error. */ - { - iFlags = aStream.ReadUint32L(); - } - - -EXPORT_C void TFontStyle::ExternalizeL(RWriteStream& aStream) const -/** Externalises the font style to a write stream. - -The presence of this function means that the standard templated operator<<() -(defined in s32strm.h) is available to externalise objects of this class. - -@param aStream The stream to which the font style is to be externalised. -@leave KErrNoMemory This function may leave, if the write action causes the -stream's resources to be exhausted. */ - { - aStream.WriteUint32L(iFlags); - } - - -EXPORT_C TFontPosture TFontStyle::Posture() const -/** Gets the posture attribute. - -@return The font style's posture. */ - { - if(iFlags&EItalic) return(EPostureItalic); - return(EPostureUpright); - } - - -EXPORT_C TFontStrokeWeight TFontStyle::StrokeWeight() const -/** Gets the stroke weight attribute. - -@return The font style's stroke weight. */ - { - if(iFlags&EBold) return(EStrokeWeightBold); - return(EStrokeWeightNormal); - } - - -EXPORT_C TFontPrintPosition TFontStyle::PrintPosition() const -/** Gets the print position attribute. - -@return The font style's print position. */ - { - if((iFlags&ESuper) && !(iFlags&ESub)) return(EPrintPosSuperscript); - else if((iFlags&ESub) && !(iFlags&ESuper)) return(EPrintPosSubscript); - return(EPrintPosNormal); - } - - -EXPORT_C void TFontStyle::SetPosture(TFontPosture aPosture) -/** Sets the posture attribute. - -@param aPosture The posture to be set. */ - { - if(aPosture==EPostureItalic) iFlags|=EItalic; - else iFlags&=~EItalic; - } - - -EXPORT_C void TFontStyle::SetStrokeWeight(TFontStrokeWeight aStrokeWeight) -/** Sets the stroke weight attribute. - -@param aStrokeWeight The stroke weight to be set. */ - { - if(aStrokeWeight==EStrokeWeightBold) iFlags|=EBold; - else iFlags&=~EBold; - } - - -EXPORT_C void TFontStyle::SetPrintPosition(TFontPrintPosition aPrintPosition) -/** Sets the print position attribute. - -@param aPrintPosition The print position to be set. */ - { - switch(aPrintPosition) - { - case EPrintPosSuperscript: - { - iFlags|=ESuper; - iFlags&=~ESub; - break; - } - case EPrintPosSubscript: - { - iFlags&=~ESuper; - iFlags|=ESub; - break; - } - default: - { - iFlags&=~ESuper; - iFlags&=~ESub; - } - } - } - -/** Gets the font effects flags. -@publishedAll -@released -@return The font effects flags. -@see TFontStyle::SetEffects() -*/ -EXPORT_C TUint32 TFontStyle::Effects() const - { - return 0xFFF0 & iFlags; - } - -/** Checks if a font effect is on. -@publishedAll -@released -@return True represents the specified font effect is on, otherwise off. -@param aEffect The font effect to be checked. -@see TFontStyle::SetEffects() -*/ -EXPORT_C TBool TFontStyle::IsEffectOn(FontEffect::TEffect aEffect) const - { - return FontEffect::IsEffectOn(aEffect, iFlags); - } - -/** Sets the font effects flags. -@publishedAll -@released -@param aEffect The font effects flags to be set. -@see TFontStyle::Effects() -*/ -EXPORT_C void TFontStyle::SetEffects(TUint32 aEffects) - { - iFlags &= 0xFFFF000F; - iFlags |= 0xFFF0 & aEffects; - } - -/** Sets a font effect to the given state. -@publishedAll -@released -@param aEffect The font effect to be set. -@param aOn True represents on, otherwise off. -@see TFontStyle::IsEffectOn() -*/ -EXPORT_C void TFontStyle::SetEffects(FontEffect::TEffect aEffect, TBool aOn) - { - FontEffect::SetEffect(aEffect, aOn, iFlags); - } - -/** Compares a font style for equality. -@publishedAll -@released -@param aFontStyle The font style to be compared with this font style. -@return ETrue, if this TFontStyle is equal to aFontStyle, EFalse, otherwise. -*/ -EXPORT_C TBool TFontStyle::operator==(const TFontStyle& aFontStyle) const - { - return iFlags == aFontStyle.iFlags; - } - -// -// TFontSpec -// -EXPORT_C TFontSpec::TFontSpec(): - iTypeface(), - iHeight(0), - iFontStyle() -/** Default constructor. - -The object's font style is set to the default: EPostureUpright, EStrokeWeightNormal, -and EPrintPosNormal. */ - {} - - -EXPORT_C TFontSpec::TFontSpec(const TDesC& aTypefaceName,TInt aHeight): - iTypeface(), - iHeight(aHeight), - iFontStyle(EPostureUpright,EStrokeWeightNormal,EPrintPosNormal) -/** Constructs a TFontSpec object with the specified typeface and height. - -The object's font style is set to the default: EPostureUpright, EStrokeWeightNormal, -and EPrintPosNormal. - -@param aTypefaceName The name of the typeface (e.g. "Roman"). It should be no - longer than KMaxTypefaceNameLength characters in length. -@param aHeight The height of the typeface, in twips. -@panic GDI 6, if aTypefaceName is more than KMaxTypefaceNameLength characters long. -*/ - { - iTypeface.SetName(aTypefaceName); - } - - -EXPORT_C TBool TFontSpec::operator==(const TFontSpec& aFontSpec) const -/** Compares this font specification with another. -@param aFontSpec The font specification to be compared with this one. -@return ETrue, if the TFontSpecs are identical, EFalse otherwise. -*/ - { - return - iHeight == aFontSpec.iHeight && - iFontStyle == aFontSpec.iFontStyle && - iTypeface == aFontSpec.iTypeface; - } - - -EXPORT_C void TFontSpec::InternalizeL(RReadStream& aStream) -/** Internalises a font specification from a read stream. - -The presence of this function means that the standard templated operator>>() -(defined in s32strm.h) is available to internalise objects of this class. - -@param aStream The stream from which the font specification is to be internalised. -@leave KErrNoMemory If internalisation causes an out of memory error. */ - { - iTypeface.InternalizeL(aStream); - iHeight=aStream.ReadUint16L(); - iFontStyle.InternalizeL(aStream); - } - - -EXPORT_C void TFontSpec::ExternalizeL(RWriteStream& aStream) const -/** Externalises the font specification to a write stream. - -The presence of this function means that the standard templated operator<<() -(defined in s32strm.h) is available to externalise objects of this class. - -@param aStream The stream to which the font specification is to be externalised - -@leave KErrNoMemory If the write action causes the stream's resources to be -exhausted. */ - { - iTypeface.ExternalizeL(aStream); - aStream.WriteUint16L(iHeight); - iFontStyle.ExternalizeL(aStream); - } - -EXPORT_C void TFontSpec::SetScriptTypeForMetrics(TLanguage aLanguage) -/** Specifies the script with which font metrics calculation will be based on. -@param aLanguage The language used to derive the required script. -@publishedAll -@released -*/ - { - iTypeface.SetScriptTypeForMetrics(aLanguage); - } - -EXPORT_C TInt TFontSpec::ScriptTypeForMetrics() const -/** Returns the script with which font metrics calculation will be based on. -@internalTechnology -*/ - { - return iTypeface.ScriptTypeForMetrics(); - } - -// -// TTypeface -// -static const TInt KTTypefaceBitsNumAttrib = 3; -static const TInt KTTypefaceBitsNumScript = 4; -static const TInt KTTypefaceMaskAttrib = (1 << KTTypefaceBitsNumAttrib) - 1; -static const TInt KTTypefaceMaskScript = ((1 << KTTypefaceBitsNumScript) - 1) << KTTypefaceBitsNumAttrib; -EXPORT_C TTypeface::TTypeface(): - iName(), - iFlags(0) -/** Default C++ constructor. */ - {} - -/** -@internalComponent -*/ -void TTypeface::ResetAttributes() - { - iFlags &= KTTypefaceMaskScript; - } - -/** -@internalComponent -*/ -void TTypeface::ResetScriptType() - { - iFlags &= KTTypefaceMaskAttrib; - } - -EXPORT_C void TTypeface::InternalizeL(RReadStream& aStream) -/** Internalises a typeface from a read stream. - -The presence of this function means that the standard templated operator>>() -(defined in s32strm.h) is available to internalise objects of this class. - -@param aStream Stream from which the typeface is to be internalised. */ - { - TBuf<KMaxTypefaceNameLength> tempname; - aStream >> tempname; - new(&iName) TBufC<KMaxTypefaceNameLength>(tempname); - iFlags = aStream.ReadInt8L(); - } - - -EXPORT_C void TTypeface::ExternalizeL(RWriteStream& aStream) const -/** Externalises a typeface to a write stream. - -The presence of this function means that the standard templated operator<<() -(defined in s32strm.h) is available to externalise objects of this class. - -@param aStream The stream to which the typeface is to be externalised. */ - { - aStream << iName; - aStream.WriteInt8L(static_cast<TInt8>(iFlags)); - } - - -EXPORT_C TBool TTypeface::operator==(const TTypeface& aTypeface) const -/** Compares two typefaces for equality. - -@param aTypeface The typeface to be compared with. -@return ETrue, if this TTypeface is equal to aTypeface, otherwise EFalse. */ - { - return - iFlags == aTypeface.iFlags && - iName == aTypeface.iName; - } - -EXPORT_C void TTypeface::SetAttributes(TInt aAttributes) -/** Set the combination of attributes for this typeface. - -@param aAttributes A bitmap defining the combination of attributes. */ - { - ResetAttributes(); - iFlags |= KTTypefaceMaskAttrib & aAttributes & (EProportional | ESerif | ESymbol); - } - - -EXPORT_C void TTypeface::SetIsProportional(TBool aIsProportional) -/** Sets the typeface's proportional attribute. - -@param aIsProportional ETrue if the typeface is a proportional typeface, otherwise -EFalse. */ - { - if (aIsProportional) - { - iFlags |= EProportional; - } - else - { - iFlags &= ~EProportional; - } - } - - -EXPORT_C void TTypeface::SetIsSerif(TBool aIsSerif) -/** Sets the typeface's serif attribute. - -@param aIsSerif ETrue if the typeface is a serif typeface, otherwise EFalse. */ - { - if (aIsSerif) - { - iFlags |= ESerif; - } - else - { - iFlags &= ~ESerif; - } - } - - -EXPORT_C void TTypeface::SetIsSymbol(TBool aIsSymbol) -/** Sets the typeface's symbol attribute. - -@param aIsSymbol ETrue if the typeface is a symbol typeface, otherwise EFalse. */ - { - if (aIsSymbol) - { - iFlags |= ESymbol; - } - else - { - iFlags &= ~ESymbol; - } - } - - -EXPORT_C TInt TTypeface::Attributes() const -/** Gets the combination of attributes of the typeface. - -@return The combination of attributes of the typeface. */ - { - return KTTypefaceMaskAttrib & iFlags; - } - - -EXPORT_C TBool TTypeface::IsProportional() const -/** Gets the typeface's proportional attribute. - -@return ETrue if the typeface is proportional, EFalse otherwise. */ - { - return KTTypefaceMaskAttrib & iFlags & EProportional; - } - - -EXPORT_C TBool TTypeface::IsSerif() const -/** Gets the typeface's serif attribute. - -@return ETrue if the typeface is a serif typeface, EFalse otherwise */ - { - return KTTypefaceMaskAttrib & iFlags & ESerif; - } - - -EXPORT_C TBool TTypeface::IsSymbol() const -/** Gets the typeface's symbol attribute. - -@return ETrue if the typeface is a symbol typeface, EFalse otherwise */ - { - return KTTypefaceMaskAttrib & iFlags & ESymbol; - } - - -/** Specifies the script with which font metrics calculation will be based on. -@param aLanguage The language used to derive the required script. -@internalTechnology -*/ -EXPORT_C void TTypeface::SetScriptTypeForMetrics(TLanguage aLanguage) - { - SetScriptTypeForMetrics(GlyphSample::TLanguage2TScript(aLanguage)); - } - -/** Specifies the script with which font metrics calculation will be based on. -@param aScript The script. -@internalTechnology -*/ -EXPORT_C void TTypeface::SetScriptTypeForMetrics(TInt aScript) - { - ResetScriptType(); - iFlags |= KTTypefaceMaskScript & (aScript << KTTypefaceBitsNumAttrib); - } - -/** Gets the script with which font metrics calculation will be based on. -@return The script. -@internalTechnology -*/ -EXPORT_C TInt TTypeface::ScriptTypeForMetrics() const - { - return (KTTypefaceMaskScript & iFlags) >> KTTypefaceBitsNumAttrib; - } - -/** -Sets the name of the typeface. This method should be used rather than -directly accessing the iName public member. -@param aName The name of the typeface (e.g. "Roman"). It should be no - longer than KMaxTypefaceNameLength characters in length. -@panic GDI 6, if aName is more than KMaxTypefaceNameLength characters - long. -*/ -EXPORT_C void TTypeface::SetName(const TDesC& aName) - { - GDI_ASSERT_ALWAYS(aName.Length() <= KMaxTypefaceNameLength, EGdiPanic_TypefaceNameOverflow); - iName=aName; - } - -/** -Returns the name of the typeface. -@return The name of the typeface. -*/ -EXPORT_C const TDesC& TTypeface::Name() const - { - return iName; - } - - -// -// CFont -// - -/** Default destructor. */ -EXPORT_C CFont::~CFont() - {} - -_LIT(KGdiZeroCharacter,"0"); - -/** Gets the width of the zero character of this font in pixels. - -This function is provided as the "0" character is roughly the average width -of the characters of any font. - -@return The width of the "0" character, in pixels. */ -EXPORT_C TInt CFont::WidthZeroInPixels() const - { - return(TextWidthInPixels(KGdiZeroCharacter)); - } - - -/** Gets the font descent in pixels. -It is defined to be HeightInPixels() minus AscentInPixels(). -Note that this deprecated function is replaced by the new @c FontMaxDescent() -or in some cases @c FontStandardDescent(). - -@return The font descent in pixels. -@see FontStandardDescent() -@see FontMaxDescent() -@deprecated */ -EXPORT_C TInt CFont::DoDescentInPixels() const - { - return HeightInPixels() - AscentInPixels(); - } - - -/** Checks to see if the pen position needs to be included in the bounds -calculation for purposes of considering side-bearings in the line break point - -@param aInput The input block. Contains the check flag and maxbounds. -@param aPenPos The current value of the pen position. -@param aBoundsBR Bottom-right bounds value. -@param aBoundsTL Top-left bounds value. -@return Whether or not MaxBounds has been exceeded -*/ -LOCAL_C TBool BoundsExceeded(const CFont::TMeasureTextInput& aInput, - const TInt& aPenPos, TInt& aBoundsBR, TInt& aBoundsTL) - { - if (aInput.iFlags & CFont::TMeasureTextInput::EFIncludePenPositionInBoundsCheck) - { - if (aInput.iFlags & CFont::TMeasureTextInput::EFVisualOrderRightToLeft) - { - aBoundsTL = Min(aBoundsTL, aPenPos); - } - else - { - aBoundsBR = Max(aBoundsBR, aPenPos); - } - } - return (aBoundsBR - aBoundsTL > aInput.iMaxBounds); - } - - -/** Text measurement function. - -This is a powerful text measurement function underlying all the -other text measurement functions. It takes optional input and output -parameter blocks, which may be null, and returns the advance -width (change in pen position when drawn horizontally) of the text, or the advance -height, if the text is drawn vertically. - -Some of the functions that can be performed using this -function are listed below. Many of them are used by the Text Views -API to do its typographic layout. -- Get the advance width or advance height (return value). -The advance width is the amount by which the pen advances when drawing -the text horizontally, while the advance height is the amount by which -the pen advances when drawing the text vertically. -- Measure some text in context, so that shaping behaviour -(e.g. in Arabic) can be affected by what comes before and after the -text. Do this using TMeasureTextInput::iStartInputChar and -TMeasureTextInput::iEndInputChar to tell the function where to start and end -in the supplied descriptor. -- Determine how much text fits a given size by setting -TMeasureTextInput::iMaxAdvance or TMeasureTextInput::iMaxBounds. -- Specify letter spacing and word spacing using TMeasureTextInput::iCharJustNum, -TMeasureTextInput::iCharJustExcess, -TMeasureTextInput::iWordJustNum and -TMeasureTextInput::iWordJustExcess. -- Get the number of characters drawn in TMeasureTextOutput::iChars -when applying the various constraints in TMeasureTextInput. -- Get the number of glyphs drawn in TMeasureTextOutput::iGlyphs. -- Get the number of groups (formed by ligation or diacritic placement) in -TMeasureTextOutput::iGroups. Groups are units of cursor -movement: the cursor hops over a character-plus-accent group or an -Arabic or other ligature in one go. -- Get the number of word spaces in TMeasureTextOutput::iSpaces. -- Get the bounds of the inked-in pixels in TMeasureTextOutput::iBounds. -- Get the size of the biggest glyph that would be drawn in TMeasureTextOutput::iMaxGlyphSize. - -@param aText The text to be measured. -@param aInput The input block. This may be NULL. -@param aOutput The output block. This may be NULL. -@return The advance width if the text is drawn horizontally or the advance -height if the text is drawn vertically. - -@panic GDI 1 In debug builds only, if TMeasureTextInput::iStartInputChar is negative. -*/ -EXPORT_C TInt CFont::MeasureText(const TDesC& aText,const TMeasureTextInput* aInput,TMeasureTextOutput* aOutput) const - { - TMeasureTextInput input; - if (aInput) - input = *aInput; - if (aOutput) - { - Mem::FillZ(aOutput,sizeof(*aOutput)); - aOutput->iChars = input.iStartInputChar; - } - TPositionParam param; - param.iDirection = input.iDirection; - - TBool vertical = param.iDirection == EVertical; - TBool penMovesLeft = EFalse; - if (input.iFlags & TMeasureTextInput::EFVisualOrderRightToLeft) - { - if (!vertical) - penMovesLeft = ETrue; - param.iFlags |= TPositionParam::EFLogicalOrder; - } - else if (!(input.iFlags & TMeasureTextInput::EFVisualOrder)) - param.iFlags |= TPositionParam::EFLogicalOrder; - - - param.iText.Set(aText); - - int advance = 0; - int groups = 0; - int spaces = 0; - param.iPosInText = input.iStartInputChar; - int end_char = Min(aText.Length(),input.iEndInputChar); - TRect bounds; - // Total advance if pen is moving left. Positive. - TInt rightToLeftAdvance = 0; - // Shaping information of the text - RShapeInfo shapeInfo; - while (param.iPosInText < end_char) - { - if (!GetCharacterPosition2(param, shapeInfo)) - { - if (aOutput) - aOutput->iChars = param.iPosInText; - continue; - } - - int new_advance = vertical ? param.iPen.iY : param.iPen.iX; - if (input.iCharJustExcess != 0) - new_advance += CGraphicsContext::JustificationInPixels(input.iCharJustExcess,input.iCharJustNum,groups,1); - groups++; - // Allow justification to occur at spaces - if (param.iOutput[0].iCode == 0x0020) - { - if (input.iWordJustExcess != 0) - new_advance += CGraphicsContext::JustificationInPixels(input.iWordJustExcess,input.iWordJustNum,spaces,1); - spaces++; - } - if (vertical) - param.iPen.iY = new_advance; - else - param.iPen.iX = new_advance; - - if (penMovesLeft) - { - // If the pen is moving left, we will begin each cluster at (0,0) - // and shift the bounds to the right to compensate. - bounds.iTl.iX += param.iPen.iX; - bounds.iBr.iX += param.iPen.iX; - bounds.iTl.iY += param.iPen.iY; - bounds.iBr.iY += param.iPen.iY; - rightToLeftAdvance += param.iPen.iX; - new_advance = rightToLeftAdvance; - param.iPen.iX = 0; - param.iPen.iY = 0; - } - - if (aInput || aOutput) - { - const TPositionParam::TOutput* output = param.iOutput; - for (int i = 0; i < param.iOutputGlyphs; i++, output++) - { - //if (!output->iBounds.IsEmpty()) -- optimized to: - if (output->iBounds.iTl.iX != output->iBounds.iBr.iX - || output->iBounds.iTl.iY != output->iBounds.iBr.iY) - { - if (aOutput) - { - // increase iMaxGlyphSize if either dimension smaller than - // current glyph - TInt boundsDim = output->iBounds.iBr.iX - output->iBounds.iTl.iX; - aOutput->iMaxGlyphSize.iWidth = aOutput->iMaxGlyphSize.iWidth < boundsDim? - boundsDim : aOutput->iMaxGlyphSize.iWidth; - boundsDim = output->iBounds.iBr.iY - output->iBounds.iTl.iY; - aOutput->iMaxGlyphSize.iHeight = aOutput->iMaxGlyphSize.iHeight < boundsDim? - boundsDim : aOutput->iMaxGlyphSize.iHeight; - } - //bounds.BoundingRect(output->iBounds); -- optimized to: - if (output->iBounds.iTl.iX < bounds.iTl.iX) - bounds.iTl.iX = output->iBounds.iTl.iX; - if (bounds.iBr.iX < output->iBounds.iBr.iX) - bounds.iBr.iX = output->iBounds.iBr.iX; - if (output->iBounds.iTl.iY < bounds.iTl.iY) - bounds.iTl.iY = output->iBounds.iTl.iY; - if (bounds.iBr.iY < output->iBounds.iBr.iY) - bounds.iBr.iY = output->iBounds.iBr.iY; - } - } - - // Would any limits be exceeded by adding this group? - if (param.iPosInText > end_char) - break; - if (new_advance > input.iMaxAdvance) - break; - if (vertical) - { - if (BoundsExceeded(input, param.iPen.iY, bounds.iBr.iY, bounds.iTl.iY)) - break; - } - else - { - if (BoundsExceeded(input, param.iPen.iX, bounds.iBr.iX, bounds.iTl.iX)) - break; - } - - if (aOutput) - { - aOutput->iChars = param.iPosInText; // should this not be aOutput->iChars = param.iPosInText - input.iShartInputChar;? - aOutput->iGlyphs += param.iOutputGlyphs; - aOutput->iGroups = groups; - aOutput->iSpaces = spaces; - aOutput->iBounds = bounds; - } - } - - advance = new_advance; - } - if(shapeInfo.IsOpen()) - shapeInfo.Close(); - return advance; - } - -// These 3 functions should probably be moved to E32/Euser as part of TChar or -// similar as there seem to be several local copies of similar functions in -// various OS modules so we should remove duplication - -TUint16 HighSurrogate(TUint aCode) - { - GDI_ASSERT_DEBUG(aCode > 0xFFFF, EGdiPanic_InvalidInputParam); - return STATIC_CAST(TUint16, 0xD7C0 + (aCode >> 10)); - } - -TUint16 LowSurrogate(TUint aCode) - { - GDI_ASSERT_DEBUG(aCode > 0xFFFF, EGdiPanic_InvalidInputParam); - return STATIC_CAST(TUint16, 0xDC00 | (aCode & 0x3FF)); - } - -TUint CombineSurrogates(TUint aHighSurrogate, TUint aLowSurrogate) - { - GDI_ASSERT_DEBUG((0xD800 == (aHighSurrogate & 0xF800)), EGdiPanic_InvalidInputParam); - GDI_ASSERT_DEBUG((0xD800 == (aHighSurrogate & 0xFC00)), EGdiPanic_InvalidInputParam); - GDI_ASSERT_DEBUG((0xDC00 == (aLowSurrogate & 0xFC00)), EGdiPanic_InvalidInputParam); - return ((aHighSurrogate - 0xD7F7) << 10) + aLowSurrogate; - } - - -/** Overridable function innards of GetCharacterPosition and -GetCharacterPosition2. It is generally not useful to override this function. -@publishedAll -@see GetCharacterPosition -@see GetCharacterPosition2 -*/ -EXPORT_C TBool CFont::DoGetCharacterPosition(TPositionParam& aParam) const - { - RShapeInfo shapeInfo; - TBool r = GetCharacterPosition2(aParam, shapeInfo); - if (shapeInfo.IsOpen()) - shapeInfo.Close(); - return r; - } - -// Find the script (and hence the correct process function) that any punctuation or digit may belong to -LOCAL_C GlyphSelection::ProcessFunc FindContextualProcessFunc(RShapeInfo& aShapeInfo, const TGlyphSelectionState aGss) - { - GlyphSelection::ProcessFunc processFunc = CharacterToProcessFunction(aGss.iCodeChar); - GlyphSelection::ProcessFunc contextProcessFunc = (GlyphSelection::ProcessFunc)aShapeInfo.GetContext(); - - // If context or prevCode is NULL, use processFunc, - // else use function of context or prevCode - if ((aGss.iCodeChar.IsDigit() || aGss.iCodeChar.IsPunctuation()) && !QuoteOrBracketPair(aGss.iCodeChar) && processFunc!=GlyphSelector_SoftHyphen::Process) - { - // If context is not set, check the previous char for context. - if (contextProcessFunc == NULL) - { - if (aGss.iParam.iPosInText > 0) - { - TChar prevCode = aGss.iText.Get(-1); - GlyphSelection::ProcessFunc prevProcessFunc = CharacterToProcessFunction(prevCode); - if (prevProcessFunc != NULL && (prevCode.IsAlpha() || prevProcessFunc != GlyphSelector_Default::Process)) - { - aShapeInfo.SetContext((TAny *)prevProcessFunc); - return prevProcessFunc; - } - } - } - else - return contextProcessFunc; - - return processFunc; - } - - // set the context with current processFunc only if current char is not ignored for context. - if (processFunc != NULL && (aGss.iCodeChar.IsAlpha() || processFunc != GlyphSelector_Default::Process)) - aShapeInfo.SetContext((TAny *)processFunc); - return processFunc; - } - -/** Takes Unicode text and produces the glyph cluster for the first character -in that text plus any combining mark characters, or for the first indic -syllable. It is responsible for contextual glyph selection, ligature creation -and diacritic placement. - -@param aParam - The input/output parameter of the text/glyph data for the algorithm. -@param aShapeInfo - The function will cache "shaped" text (e.g. complex scripts such as - Devanagari) here. aShapeInfo must be freshly-constructed or closed for each - new piece of text in aParam.iText. If aParam.iText is unchanged between - calls, aShapeInfo should be passed back in unchanged as well. -@return - ETrue if glyphs for supplied text have been produced, EFalse in failure. -@see CFont::TPositionParam -@publishedAll -@released */ -EXPORT_C TBool CFont::GetCharacterPosition2(TPositionParam& aParam, RShapeInfo& aShapeInfo) const - { - GDI_ASSERT_DEBUG(aParam.iPosInText>=0, EGdiPanic_InvalidInputParam); - GDI_ASSERT_DEBUG(aParam.iText.Ptr(), EGdiPanic_InvalidInputParam); - - aParam.iOutputGlyphs = 0; - TInt textLen = aParam.iText.Length(); - TBool outputOk = ETrue; - TPoint penCopy = aParam.iPen; - - // Verify input parameters are sane - if (aParam.iPosInText >= textLen) - return EFalse; - - // Setup glyph selection algorithm data - TUtf32Iterator textIter(aParam.iText.Ptr(), aParam.iText.Ptr()+textLen, aParam.iPosInText); - if (textIter.AtEnd()) - { - aParam.iPosInText = textIter.LengthToStart(); - return outputOk; - } - - // Process each character in the text in turn until we reach the end of - // the iterator, the next base (non-mark/combining) character or reach - // the limit in a glyph cluster. - GlyphSelection::ProcessFunc firstProcessFn = 0; - TGlyphSelectionState gss(textIter, this, aParam); - do - { - // Retrieve character info for processing. - gss.iCodePt = gss.iCodeChar = textIter.Get(); - gss.iCombCls = gss.iCodeChar.GetCombiningClass(); - gss.iCats = gss.iCodeChar.GetCategory(); - gss.iClusterState = TGlyphSelectionState::EGClusterNotComplete; - gss.iPen = TGlyphSelectionState::EPenAdvance_No; - - // Find the correct processesing function for the script being used. - // If gss.iCodePt is a strongly directional character, then simply map it in TTableEntry Table[] - // and use the returned process function pointer. - // If gss.iCodePt is a punctuation or a digit, then use a context character in the text (if - // available) to find the contextual script being rendered and use its process function pointer. - GlyphSelection::ProcessFunc processFn = FindContextualProcessFunc(aShapeInfo, gss); - - if (!firstProcessFn) - firstProcessFn = processFn; - - if (processFn) - { - if (firstProcessFn == processFn) - outputOk = processFn(gss, aShapeInfo); - else - break; - } - else - { - // Table entry blank, unicode char to be skipped - outputOk = ETrue; - textIter.Next(); - gss.iClusterState = - (!textIter.AtEnd() && - ((textIter.Get().GetCategory() & 0xF0) - == TChar::EMarkGroup)) ? - TGlyphSelectionState::EGClusterNotComplete : TGlyphSelectionState::EGClusterComplete; - } - - // Abort if no class was available to process the character or if - // processing failed. - if (!outputOk) - { - aParam.iPosInText = textIter.LengthToStart(); - return outputOk; - } - - // Did the glyph selector that processed the character want the - // pen to advance? - if (gss.iPen == TGlyphSelectionState::EPenAdvance_Yes) - { - aParam.iPen.iX += gss.iAdvance.iWidth; - aParam.iPen.iY += gss.iAdvance.iHeight; - gss.iPen = TGlyphSelectionState::EPenAdvance_No; - } - - // Here we assume the Process() methods have advanced the iterator as - // they consume characters they handle so that it now points to the - // character to process next time around the loop. - } - while (!textIter.AtEnd() // We still have more text to process - && (gss.iClusterState == TGlyphSelectionState::EGClusterNotComplete) // Glyph cluster !complete - && (aParam.iOutputGlyphs < TPositionParam::EMaxOutputGlyphs)); // Room for another glyph entry - - // If a complete glyph cluster has been identified then we should try to - // compose it as fully as possible. Obviously, if it only contains one - // character then it is already fully composed so we can ignore it. - // Skip this if any language-specific processing has taken place. - if (gss.iGlyphPostCombine == TGlyphSelectionState::EGPostCombine_Yes - && gss.iClusterState == TGlyphSelectionState::EGClusterComplete) - { - // Leave room to handle surrogates - Decompose() outputs UTF-16 - // The max that can come out of the previous stage is TPositionParam::EMaxOutputGlyphs - // long with only one base char at the start. Even if that base char decomposed to the - // max it could only be MaxOutputGlyphs long, giving a total of (2 * MaxOutputGlyphs)-1 - // Conceivably the use of surrogates throughout could double that when converting to UTF-16 - TBuf<TPositionParam::EMaxOutputGlyphs * 4> decomposeArray; - TBool success = ETrue; - // Go through the glyph cluster one char at a time - for (TInt i = 0; i < aParam.iOutputGlyphs; i++) - { - TChar singleChar(aParam.iOutput[i].iCode); - // If first character try to decompose it otherwise just take the character - TBool decomposed = EFalse; - TPtrC16 decomposition; - if (i == 0) - decomposed = singleChar.Decompose(decomposition); - if (decomposed) - { // Pick up the sequence of characters - decomposeArray.Append(decomposition); - } - else - { // Keep the original character - if (singleChar > 0xFFFF) - { // Above the BMP so we need a surrogate pair for UTF-16 - // This calculation really ought to go into a separate routine - probably part of TChar - decomposeArray.Append(HighSurrogate(singleChar)); - decomposeArray.Append(LowSurrogate(singleChar)); - } - else - { // It's not a surrogate so we just need to cast it down (since it's safe) - decomposeArray.Append(singleChar); - } - } - // Guard against bad input overflowing the array and causing a panic - if (decomposeArray.Length() > (TPositionParam::EMaxOutputGlyphs * 4) - 2) - { // too long to be a viable composition so don't try - success = EFalse; - break; - } - } - TUint composedChar = 0; - TOpenFontCharMetrics metrics; - TPositionParam::TOutput output; - TSize advance; // gets initialized to 0,0 - if (success) - { - //Now try and compose the string to a single character - success = TChar::Compose(composedChar, decomposeArray); - } - if (success) - { - // if single char is not in font or can't get char metrics for it - // N.B. This will probably always return metrics because if the - // char is not in the font this will usually return the substitute - // "missing" glyph (and its metrics). There should be a function to - // really tell you if a glyph is in the font - but there isn't. - if (GetCharacterData(composedChar, metrics, output.iBitmap, output.iBitmapSize) == CFont::ENoCharacterData) - success = EFalse; - } - if (success) - { - // We should replace the glyph cluster made from multiple chars - // with the correct single char and fix up the rest of the output - // parameters as well - output.iCode = composedChar; - // Set the glyph's bounds and record pen advancement. - if (aParam.iDirection == CFont::EVertical) - { - metrics.GetVertBounds(output.iBounds); - advance.iHeight = metrics.VertAdvance(); - } - else - { - metrics.GetHorizBounds(output.iBounds); - advance.iWidth = metrics.HorizAdvance(); - } - // Adjust the glyph's bounding box to offset it from the pen - // position (origin of drawing). For speed increment directly. - output.iBounds.iTl.iX += penCopy.iX; - output.iBounds.iBr.iX += penCopy.iX; - output.iBounds.iTl.iY += penCopy.iY; - output.iBounds.iBr.iY += penCopy.iY; - // Set penCopy, the copy of aParam.iPen that we made - penCopy.iX += advance.iWidth; - penCopy.iY += advance.iHeight; - // Overwrite the original output parameters for the glyph cluster - // with the values for the single composed character - aParam.iOutput[0] = output; - aParam.iOutputGlyphs = 1; - aParam.iPen = penCopy; - } - } - - // Exit routine with result and increment position in text to - // where we reached during processing to avoid any caller loops from - // infinite execution. - aParam.iPosInText = textIter.LengthToStart(); - return outputOk; - } - -/** Gets the character metrics for a character. - -@param aCode The character code. -@param aMetrics On return, contains the character bitmap. -@param aBitmap On return, this points to NULL. -@param aBitmapSize On return, this has a size of (0,0). -@return ECharacterWidthOnly -*/ -EXPORT_C CFont::TCharacterDataAvailability CFont::DoGetCharacterData(TUint aCode,TOpenFontCharMetrics& aMetrics, - const TUint8*& aBinaryData,TSize& aBitmapSize) const - { - int width = CharWidthInPixels(aCode); - aMetrics.SetHorizAdvance(width); - aBinaryData = NULL; - // For speed set to 0 directly rather than call SetSize() - aBitmapSize.iWidth = 0; - aBitmapSize.iHeight = 0; - - /* - Set the other metrics using the width and font metrics. - This allows derived classes that don't override this function, like CInfoFont, - to give usable results for TextWidthInPixels and MeasureText. - */ - aMetrics.SetWidth(width); - int height = HeightInPixels(); - aMetrics.SetHeight(height); - aMetrics.SetVertAdvance(height); - aMetrics.SetHorizBearingX(0); - aMetrics.SetHorizBearingY(AscentInPixels()); - aMetrics.SetVertBearingX(0); - aMetrics.SetVertBearingY(0); - - return CFont::ECharacterWidthOnly; - } - - -/** Determines if aLeftCharacter and aRightCharacter affect each other's -contextual glyph form if placed next to each other. If either character -is a combining character, EFalse will be returned, which is not generally -useful information. Pass in base characters ignoring intervening combining -characters. -@param aLeftCharacter Unicode code for the character that stands on the left. -@param aRightCharacter Unicode code for the character that stands on the right. -@return EFalse if the characters do not affect the contextual glyphs that are -be chosen when the two are rendered together, compared to being separated -(for example by a space). */ -EXPORT_C TBool CFont::CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter) - { - return GlyphSelector_Arabic::CharactersJoin(aLeftCharacter, aRightCharacter); - } - -/** API extension system that enables the caller to access a particular API -extension function. N.B. Any overload of this function in a derived class -should call its immediate parent implementation for any extension function Uid -that it does not recognize and handle. -@param aInterfaceId UID of the required extension function -@param aParam Pointer to an arbitrary parameter block that can be used to -provide and/or return information to/from the particular extension function, -defaults to NULL. -@return Integer return value from extension function -@internalTechnology -@released -*/ -EXPORT_C TInt CFont::DoExtendedFunction(TUid aFunctionId, TAny* /* aParam */) const - { - if (KFontCapitalAscent == aFunctionId || - KFontMaxAscent == aFunctionId) - { - return AscentInPixels(); - } - else if (KFontStandardDescent == aFunctionId || - KFontMaxDescent == aFunctionId) - { - return DescentInPixels(); - } - else if (KFontLineGap == aFunctionId) - { // 1.2 of em height (rounded) is reasonable approximation of interline gap - return (HeightInPixels() * 12 + 5) / 10; - } - return KErrNotFound; - } - -EXPORT_C TUid CFont::TypeUid() const - { - return DoTypeUid(); - } - -EXPORT_C TInt CFont::HeightInPixels() const - { - return DoHeightInPixels(); - } - -EXPORT_C TInt CFont::AscentInPixels() const - { - return DoAscentInPixels(); - } - -EXPORT_C TInt CFont::DescentInPixels() const - { - return DoDescentInPixels(); - } - -EXPORT_C TInt CFont::CharWidthInPixels(TChar aChar) const - { - return DoCharWidthInPixels(aChar); - } - -EXPORT_C TInt CFont::TextWidthInPixels(const TDesC& aText) const - { - return DoTextWidthInPixels(aText); - } - -EXPORT_C TInt CFont::BaselineOffsetInPixels() const - { - return DoBaselineOffsetInPixels(); - } - -EXPORT_C TInt CFont::TextCount(const TDesC& aText,TInt aWidthInPixels) const - { - return DoTextCount(aText, aWidthInPixels); - } - -EXPORT_C TInt CFont::TextCount(const TDesC& aText, TInt aWidthInPixels, TInt& aExcessWidthInPixels) const - { - return DoTextCount(aText, aWidthInPixels, aExcessWidthInPixels); - } - -EXPORT_C TInt CFont::MaxCharWidthInPixels() const - { - return DoMaxCharWidthInPixels(); - } - -EXPORT_C TInt CFont::MaxNormalCharWidthInPixels() const - { - return DoMaxNormalCharWidthInPixels(); - } - -EXPORT_C TFontSpec CFont::FontSpecInTwips() const - { - return DoFontSpecInTwips(); - } - -/** Gets the character metrics for a character. - -@param aCode The character code. -@param aMetrics On return, contains the character bitmap. -@param aBitmap On return, this points to NULL. -@param aBitmapSize On return, this has a size of (0,0). -@return ECharacterWidthOnly -*/ -EXPORT_C CFont::TCharacterDataAvailability CFont::GetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics, const TUint8*& aBitmap, TSize& aBitmapSize) const - { - return DoGetCharacterData(aCode, aMetrics, aBitmap, aBitmapSize); - } - -/** Transforms one cluster of characters (base character plus combining marks, -ligature or indic syllable) into one cluster of glyphs together with their -positions. Repeated calls of this function (for the same input text) are -considerably slower than repeated calls of GetCharacterPosition2 for Indic text -(such as Hindi), as GetCharacterPosition2 can cache information between calls. -@param aParam Input and output parameters -@return True for success -@see GetCharacterPosition2 -@publishedAll */ -EXPORT_C TBool CFont::GetCharacterPosition(TPositionParam& aParam) const - { - return DoGetCharacterPosition(aParam); - } - -/** Enables the caller to access a particular API -extension function. N.B. Any overload of this function in a derived class -should call its immediate parent implementation for any extension function UID -that it does not recognize and handle. -@param aFunctionId UID of the required extension function -@param aParam Pointer to an arbitrary parameter block that can be used to -provide and/or return information to/from the particular extension function, -defaults to NULL. -@return Integer return value from extension function -*/ -EXPORT_C TInt CFont::ExtendedFunction(TUid aFunctionId, TAny* aParam) const - { - return DoExtendedFunction(aFunctionId, aParam); - } - -EXPORT_C TInt CFont::TextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam) const - { - TTextWidthInternal context; - TTextWidthInternal* contextPtr = &context; - contextPtr->iText.Set(aText); - contextPtr->iParam.iStartInputChar = aParam->iStartInputChar; - contextPtr->iParam.iEndInputChar = aParam->iEndInputChar; - return DoExtendedFunction(KTextInContextWidthInPixelsUid, (TAny*)contextPtr); - } - -/** -Maps TLanguage to TScript. - -EScriptOther represents languages not yet supported in KTScript2GlyphSample. -This array does not handle ELangNone and ELangMaximum to save storage space. -*/ -const TInt GlyphSample::KTLanguage2TScript[] = - { - EScriptNone, // 00 ELangTest - EScriptLatin, // 01 ELangEnglish - EScriptLatin, // 02 ELangFrench - EScriptLatin, // 03 ELangGerman - EScriptLatin, // 04 ELangSpanish - EScriptLatin, // 05 ELangItalian - EScriptLatin, // 06 ELangSwedish - EScriptLatin, // 07 ELangDanish - EScriptLatin, // 08 ELangNorwegian - EScriptLatin, // 09 ELangFinnish - EScriptLatin, // 10 ELangAmerican - EScriptLatin, // 11 ELangSwissFrench - EScriptLatin, // 12 ELangSwissGerman - EScriptLatin, // 13 ELangPortuguese - EScriptLatin, // 14 ELangTurkish - EScriptLatin, // 15 ELangIcelandic - EScriptCyrillic, // 16 ELangRussian - EScriptLatin, // 17 ELangHungarian - EScriptLatin, // 18 ELangDutch - EScriptLatin, // 19 ELangBelgianFlemish - EScriptLatin, // 20 ELangAustralian - EScriptLatin, // 21 ELangBelgianFrench - EScriptLatin, // 22 ELangAustrian - EScriptLatin, // 23 ELangNewZealand - EScriptLatin, // 24 ELangInternationalFrench - EScriptLatin, // 25 ELangCzech - EScriptLatin, // 26 ELangSlovak - EScriptLatin, // 27 ELangPolish - EScriptLatin, // 28 ELangSlovenian - EScriptHanIdeographs, // 29 ELangTaiwanChinese - EScriptHanIdeographs, // 30 ELangHongKongChinese - EScriptHanIdeographs, // 31 ELangPrcChinese - EScriptHanIdeographs, // 32 ELangJapanese - EScriptThai, // 33 ELangThai - EScriptLatin, // 34 ELangAfrikaans - EScriptLatin, // 35 ELangAlbanian - EScriptOther, // 36 ELangAmharic - EScriptArabic, // 37 ELangArabic - EScriptOther, // 38 ELangArmenian - EScriptOther, // 39 ELangTagalog - EScriptCyrillic, // 40 ELangBelarussian - EScriptOther, // 41 ELangBengali - EScriptCyrillic, // 42 ELangBulgarian - EScriptOther, // 43 ELangBurmese - EScriptLatin, // 44 ELangCatalan - EScriptLatin, // 45 ELangCroatian - EScriptLatin, // 46 ELangCanadianEnglish - EScriptLatin, // 47 ELangInternationalEnglish - EScriptLatin, // 48 ELangSouthAfricanEnglish - EScriptLatin, // 49 ELangEstonian - EScriptArabic, // 50 ELangFarsi - EScriptLatin, // 51 ELangCanadianFrench - EScriptLatin, // 52 ELangScotsGaelic - EScriptOther, // 53 ELangGeorgian - EScriptGreek, // 54 ELangGreek - EScriptGreek, // 55 ELangCyprusGreek - EScriptOther, // 56 ELangGujarati - EScriptHebrew, // 57 ELangHebrew - EScriptDevanagari, // 58 ELangHindi - EScriptLatin, // 59 ELangIndonesian - EScriptLatin, // 60 ELangIrish - EScriptLatin, // 61 ELangSwissItalian - EScriptOther, // 62 ELangKannada - EScriptCyrillic, // 63 ELangKazakh - EScriptOther, // 64 ELangKhmer - EScriptHanIdeographs, // 65 ELangKorean - EScriptOther, // 66 ELangLao - EScriptLatin, // 67 ELangLatvian - EScriptLatin, // 68 ELangLithuanian - EScriptCyrillic, // 69 ELangMacedonian - EScriptLatin, // 70 ELangMalay - EScriptOther, // 71 ELangMalayalam - EScriptDevanagari, // 72 ELangMarathi - EScriptLatin, // 73 ELangMoldavian - EScriptOther, // 74 ELangMongolian - EScriptLatin, // 75 ELangNorwegianNynorsk - EScriptLatin, // 76 ELangBrazilianPortuguese - EScriptOther, // 77 ELangPunjabi - EScriptLatin, // 78 ELangRomanian - EScriptCyrillic, // 79 ELangSerbian - EScriptOther, // 80 ELangSinhalese - EScriptLatin, // 81 ELangSomali - EScriptLatin, // 82 ELangInternationalSpanish - EScriptLatin, // 83 ELangLatinAmericanSpanish - EScriptLatin, // 84 ELangSwahili - EScriptLatin, // 85 ELangFinlandSwedish - EScriptNone, // 86 ELangReserved1 - EScriptOther, // 87 ELangTamil - EScriptOther, // 88 ELangTelugu - EScriptOther, // 89 ELangTibetan - EScriptOther, // 90 ELangTigrinya - EScriptLatin, // 91 ELangCyprusTurkish - EScriptCyrillic, // 92 ELangTurkmen - EScriptCyrillic, // 93 ELangUkrainian - EScriptArabic, // 94 ELangUrdu - EScriptNone, // 95 ELangReserved2 - EScriptLatin, // 96 ELangVietnamese - EScriptLatin, // 97 ELangWelsh - EScriptLatin, // 98 ELangZulu - }; - -/** -Maps TScript to glyph samples. - -The order of samples definition has to follow the script order in TScript. - -Supported scripts Fonts used to experiment/determine glyph samples - -Latin Arial, Times, Century -Greek Ditto -Cyrillic Ditto -Hebrew Aharoni, David, FrankRuehl, Levenim MT, Miriam, Narkisim, Rod -Arabic Andalus, Arabic Transparent, Simplified Arabic, Traditional Arabic -Devanagari Mangal -Thai Angsana New, Browallia, Cordia New, DilleniaUPC, EucrosiaUPC, - FreesiaUPC, IrisUPC, JasmineUPC, KodchiangUPC, LilyUPC -HanIdeographs Chinese : SimSun, SimHei (Simplified) / MingLiU (Traditional) - Japanese: MS Mincho, MS Gothic - Korean : Batang, Gulim -*/ -const TText* const GlyphSample::KTScript2GlyphSample[] = - { - // - // 02 EScriptLatin - // - // 0x00C0 - Ascent : Capital letter A with grave (Latin-1 Supplement) - // 0x013A - Ascent : Small letter l with acute (Latin Extended A) - // 0x1EA2 - Ascent : Capital letter A with hook above (Latin Extended Additional) - // 0x00C7 - Descent: Capital letter C with cedilla (Latin-1 Supplement) - // 0x0163 - Descent: Small letter t with cedilla (Latin Extended A) - // - _S("\x00C0\x013A\x1EA2\x00C7\x0163"), - // - // 03 EScriptGreek - // - // 0x03AA - Ascent : Capital letter iota with dialytika - // 0x03AB - Ascent : Capital letter upsilon with dialytika - // 0x03AE - Descent: Small letter eta with tonos - // 0x03B2 - Descent: Small letter beta - // 0x03C8 - Descent: Small letter psi - // - _S("\x03AA\x03AB\x03AE\x03B2\x03C8"), - // - // 04 EScriptCyrillic - // - // 0x0403 - Ascent : Capital letter gje - // 0x0419 - Ascent : Capital letter short i - // 0x0440 - Descent: Small letter er - // 0x0452 - Descent: Small letter dje - // 0x0458 - Descent: Small letter je - // - _S("\x0403\x0419\x0440\x0452\x0458"), - // - // 05 EScriptHebrew - // - // 0x05BE - Ascent : Punctuation maqaf - // 0x05DC - Ascent : Letter lamed - // 0x05B0 - Descent: Point sheva - // 0x05BD - Descent: Point meteg - // 0x05E7 - Descent: Letter qof - // - _S("\x05BE\x05DC\x05B0\x05BD\x05E7"), - // - // 06 EScriptArabic - // - // 0x0670 - Ascent : Alef above (Arabic) - // 0x0671 - Ascent : Hamzat Wasl on Alef isolated form - // 0x064D - Descent: Kasratan (Arabic) - // 0xFB7B - Descent: Final form of 0686 - // 0xFBF2 - Descent: Final form of 064A - // - //PDEF120737: EScriptArabic value has been changed for this defect & tested using the font file provided by client (i.e. kamelion arabic font). - //The client's font file can't be used for IPR reasons. Thus the test code to demonstrate this defect - //is not added. Also, there was no other font file available that reproduces this defect. - // - _S("\x0670\x0671\x064D\xFB7B\xFBF2"), - // - // 07 EScriptDevanagari - // - // 0x0914 - Ascent : Letter au - // 0x0951 - Ascent : Stress sign udatta - // 0x0941 - Descent: Vowel sign u - // 0x0944 - Descent: Vowel sign rr - // 0x0963 - Descent: Vowel sign vocalic ll - // - _S("\x0914\x0951\x0941\x0944\x0963"), - // - // 08 EScriptThai - // - // 0x0E49 - Ascent : Character mai tho - // 0x0E4B - Ascent : Character mai chattawa - // 0x0E0E - Descent: Character do chada - // 0x0E24 - Descent: Character ru - // 0x0E39 - Descent: Character sara uu - // - _S("\x0E49\x0E4B\x0E0E\x0E24\x0E39"), - // - // 09 EScriptHanIdeographs - // - // 0x1100 - Ascent/Descent: Korean - // 0x4E1C - Ascent/Descent: Chinese Simplified - // 0x5283 - Ascent/Descent: Japanese - // 0x758A - Ascent : Chinese Traditional - // 0x7BEA - Descent: Chinese Traditional - // - _S("\x1100\x4E1C\x5283\x758A\x7BEA"), - }; - -/** -Maps a TLanguage type to the TScript type. -@internalTechnology -@param aLanguage The language. -@return A TInt representing the script, or -EScriptNone if its not defined for aLanguage. -*/ -EXPORT_C TInt GlyphSample::TLanguage2TScript(TLanguage aLanguage) - { - if (ELangNone == aLanguage || ELangMaximum == aLanguage || aLanguage >= (sizeof(KTLanguage2TScript)/sizeof(KTLanguage2TScript[0]))) - { - return EScriptNone; - } - return KTLanguage2TScript[aLanguage]; - } - -/** -Maps a TScript type to some glyph samples which are stored as Unicode. -@internalTechnology -@param aScript The script. -@return A TPtrC pointing to the first glyph sample, -or empty if no samples is defined for aScript. -*/ -EXPORT_C const TPtrC GlyphSample::TScript2GlyphSample(TInt aScript) - { - if (EScriptOther >= aScript) - { - return TPtrC(); - } - // -3 to offset EScriptDefault, EScriptNone and EScriptOther - // being the first three elements in TScript. - return TPtrC(KTScript2GlyphSample[aScript - 3]); - } - - -EXPORT_C RFontTable::RFontTable():iTableContent(0), iLength(0), - iFont(NULL), iTag(0) - { - // a null constructor. - } - -EXPORT_C TInt -RFontTable::Open(CFont& aFont, TUint32 aTag) - { - TGetFontTableParam param; - param.iTag = aTag; - - // remember the parameters, to be used when releasing the font table. - iFont = &aFont; - iTag = aTag; - - TInt ret = aFont.ExtendedFunction(KFontGetFontTable, (TAny *)¶m); - if (KErrNone == ret) - { - iTableContent = (TAny *)param.iContent; - iLength = param.iLength; - } - return ret; - } - -EXPORT_C TInt -RFontTable::TableLength() const - { - return iLength; - } - -EXPORT_C const TUint8* -RFontTable::TableContent() const - { - return (TUint8*)iTableContent; - } - -EXPORT_C void -RFontTable::Close() - { - if (NULL != iFont) - { - (void)iFont->ExtendedFunction(KFontReleaseFontTable, (TAny *)&iTag); - } - iTableContent = 0; - iLength = 0; - iFont = NULL; - iTag = 0; - } - -EXPORT_C -RGlyphOutlineIterator::RGlyphOutlineIterator():iOutlines(0), iLengths(0), - iCursor(-1), iCount(0), iFont(NULL), iCodes(NULL), iHinted(EFalse) - { - // a null constructor. - } - -EXPORT_C TInt -RGlyphOutlineIterator::Open(CFont& aFont, const TUint* aCodes, TInt aCount, TBool aHinted) - { - if (NULL == aCodes || 0 == aCount) - { - return KErrArgument; - } - TGetGlyphOutlineParam param; - iLengths = (TInt *)User::Alloc(sizeof(TInt) * aCount); - if (NULL == iLengths) - { - return KErrNoMemory; - } - iOutlines = (TAny **)User::Alloc(sizeof(TAny *) * aCount); - if (NULL == iOutlines) - { - User::Free(iLengths); - iLengths = NULL; - return KErrNoMemory; - } - - param.iLengths = iLengths; - param.iCount = aCount; - param.iCodes = aCodes; - param.iHinted = aHinted; - param.iOutlines = iOutlines; - - /* information needed in Close() */ - iCodes = (TUint *)User::Alloc(sizeof(TUint) * aCount); - if (NULL == iCodes) - { - User::Free(iLengths); - User::Free(iOutlines); - iLengths = NULL; - iOutlines = NULL; - return KErrNoMemory; - } - Mem::Copy(iCodes, aCodes, aCount*sizeof(TUint)); - iFont = &aFont; - iHinted = aHinted; - iCount = aCount; - - TInt ret = aFont.ExtendedFunction(KFontGetGlyphOutline, (TAny *)¶m); - if (KErrNone != ret) - { - User::Free(iLengths); - User::Free(iOutlines); - User::Free(iCodes); - iLengths = NULL; - iOutlines = NULL; - iCodes = NULL; - iFont = NULL; - } - else - { - iCursor = 0; - } - - return ret; - } - -EXPORT_C const TUint8* -RGlyphOutlineIterator::Outline() const - { - GDI_ASSERT_ALWAYS(iCursor >= 0, EGdiPanic_Unknown); - - if (iLengths[iCursor] < 0) - { - return NULL; - } - else - { - return (const TUint8*)iOutlines[iCursor]; - } - } - -EXPORT_C TInt -RGlyphOutlineIterator::OutlineLength() const - { - GDI_ASSERT_ALWAYS(iCursor >= 0, EGdiPanic_Unknown); - - if (iLengths[iCursor] < 0) - { - return KErrGeneral; - } - else - { - return iLengths[iCursor]; - } - } - -EXPORT_C TInt -RGlyphOutlineIterator::Next() - { - if (iCursor >= 0 && iCursor < iCount-1) - { - ++iCursor; - return KErrNone; - } - else - { - iCursor = -1; - // if the iterator goes beyond the last element [when - // Next() returns KErrNotFound], the next call - // to Outline() or OutlineLength() will panic. - - return KErrNotFound; - } - } - -EXPORT_C void -RGlyphOutlineIterator::Close() - { - TReleaseGlyphOutlineParam param; - param.iCount = iCount; - param.iHinted = iHinted; - param.iCodes = iCodes; - - if (NULL != iFont) - { - iFont->ExtendedFunction(KFontReleaseGlyphOutline, (TAny *)¶m); - } - - iFont = NULL; - iCount = 0; - User::Free(iLengths); - iLengths = NULL; - iCursor = -1; - User::Free(iCodes); - iCodes = NULL; - User::Free(iOutlines); - iOutlines = NULL; - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/FontArabic.cpp --- a/graphicsdeviceinterface/gdi/sgdi/FontArabic.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,449 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -/** - @file - @internalComponent -*/ - - -#include <gdi.h> -#include "FontArabic.h" -#include "GDIPANIC.h" - - -// -// Arabic Presentation Forms. -// - - -/** - The contextual forms of each character in the range 0621 - 064A, in - the order final, initial, medial; followed by the forms of - the lam-alef ligatures (lam with 0622, 0623, 0625 and 0627); - followed by the forms of the characters in the range 0671 - 06D3 -*/ -LOCAL_D const TUint16 TheArabicShapeTable[] = - { - // Contextual forms for standard Arabic letters - 0x621, 0x621, 0x621, // 621 - 0xfe82, 0x622, 0x622, // 622 - 0xfe84, 0x623, 0x623, // 623 - 0xfe86, 0x624, 0x624, // 624 - 0xfe88, 0x625, 0x625, // 625 - 0xfe8a, 0xfe8b, 0xfe8c, // 626 - 0xfe8e, 0x627, 0x627, // 627 - 0xfe90, 0xfe91, 0xfe92, // 628 - 0xfe94, 0x629, 0x629, // 629 - 0xfe96, 0xfe97, 0xfe98, // 62a - 0xfe9a, 0xfe9b, 0xfe9c, // 62b - 0xfe9e, 0xfe9f, 0xfea0, // 62c - 0xfea2, 0xfea3, 0xfea4, // 62d - 0xfea6, 0xfea7, 0xfea8, // 62e - 0xfeaa, 0x62f, 0x62f, // 62f - 0xfeac, 0x630, 0x630, // 630 - 0xfeae, 0x631, 0x631, // 631 - 0xfeb0, 0x632, 0x632, // 632 - 0xfeb2, 0xfeb3, 0xfeb4, // 633 - 0xfeb6, 0xfeb7, 0xfeb8, // 634 - 0xfeba, 0xfebb, 0xfebc, // 635 - 0xfebe, 0xfebf, 0xfec0, // 636 - 0xfec2, 0xfec3, 0xfec4, // 637 - 0xfec6, 0xfec7, 0xfec8, // 638 - 0xfeca, 0xfecb, 0xfecc, // 639 - 0xfece, 0xfecf, 0xfed0, // 63a - 0x63b, 0x63b, 0x63b, // placeholder - 0x63c, 0x63c, 0x63c, // placeholder - 0x63d, 0x63d, 0x63d, // placeholder - 0x63e, 0x63e, 0x63e, // placeholder - 0x63f, 0x63f, 0x63f, // placeholder - 0x640, 0x640, 0x640, // 640 - 0xfed2, 0xfed3, 0xfed4, // 641 - 0xfed6, 0xfed7, 0xfed8, // 642 - 0xfeda, 0xfedb, 0xfedc, // 643 - 0xfede, 0xfedf, 0xfee0, // 644 - 0xfee2, 0xfee3, 0xfee4, // 645 - 0xfee6, 0xfee7, 0xfee8, // 646 - 0xfeea, 0xfeeb, 0xfeec, // 647 - 0xfeee, 0x648, 0x648, // 648 - 0xfef0, 0xfbe8, 0xfbe9, // 649 - 0xfef2, 0xfef3, 0xfef4, // 64A - - // Contextual forms for lam-alef ligatures - 0xfef6, 0xfef5, 0xfef5, // 644 + 622 - 0xfef8, 0xfef7, 0xfef7, // 644 + 623 - 0xfefa, 0xfef9, 0xfef9, // 644 + 625 - 0xfefc, 0xfefb, 0xfefb, // 644 + 627 - - // Contextual forms for extended Arabic letters for Persian, Urdu, Sindhi, etc. - 0xfb51, 0x0671, 0x0671, // 671 - 0x0672, 0x0672, 0x0672, // placeholder - 0x0673, 0x0673, 0x0673, // placeholder - 0x0674, 0x0674, 0x0674, // placeholder - 0x0675, 0x0675, 0x0675, // placeholder - 0x0676, 0x0676, 0x0676, // placeholder - 0x0677, 0x0677, 0x0677, // placeholder - 0x0678, 0x0678, 0x0678, // placeholder - 0xfb67, 0xfb68, 0xfb69, // 679 - 0xfb5f, 0xfb60, 0xfb61, // 67a - 0xfb53, 0xfb54, 0xfb55, // 67b - 0x067c, 0x067c, 0x067c, // placeholder - 0x067d, 0x067d, 0x067d, // placeholder - 0xfb57, 0xfb58, 0xfb59, // 67e - 0xfb63, 0xfb64, 0xfb65, // 67f - - 0xfb5b, 0xfb5c, 0xfb5d, // 680 - 0x0681, 0x0681, 0x0681, // placeholder - 0x0682, 0x0682, 0x0682, // placeholder - 0xfb77, 0xfb78, 0xfb79, // 683 - 0xfb73, 0xfb74, 0xfb75, // 684 - 0x0685, 0x0685, 0x0685, // placeholder - 0xfb7b, 0xfb7c, 0xfb7d, // 686 - 0xfb7f, 0xfb80, 0xfb81, // 687 - 0xfb89, 0x0688, 0x0688, // 688 - 0x0689, 0x0689, 0x0689, // placeholder - 0x068a, 0x068a, 0x068a, // placeholder - 0x068b, 0x068b, 0x068b, // placeholder - 0xfb85, 0x068c, 0x068c, // 68c - 0xfb83, 0x068d, 0x068d, // 68d - 0xfb87, 0x068e, 0x068e, // 68e - 0x068f, 0x068f, 0x068f, // placeholder - - 0x0690, 0x0690, 0x0690, // placeholder - 0xfb8d, 0x0691, 0x0691, // 691 - 0x0692, 0x0692, 0x0692, // placeholder - 0x0693, 0x0693, 0x0693, // placeholder - 0x0694, 0x0694, 0x0694, // placeholder - 0x0695, 0x0695, 0x0695, // placeholder - 0x0696, 0x0696, 0x0696, // placeholder - 0x0697, 0x0697, 0x0697, // placeholder - 0xfb8b, 0x0698, 0x0698, // 698 - 0x0699, 0x0699, 0x0699, // placeholder - 0x069a, 0x069a, 0x069a, // placeholder - 0x069b, 0x069b, 0x069b, // placeholder - 0x069c, 0x069c, 0x069c, // placeholder - 0x069d, 0x069d, 0x069d, // placeholder - 0x069e, 0x069e, 0x069e, // placeholder - 0x069f, 0x069f, 0x069f, // placeholder - - 0x06a0, 0x06a0, 0x06a0, // placeholder - 0x06a1, 0x06a1, 0x06a1, // placeholder - 0x06a2, 0x06a2, 0x06a2, // placeholder - 0x06a3, 0x06a3, 0x06a3, // placeholder - 0xfb6b, 0xfb6c, 0xfb6d, // 6a4 - 0x06a5, 0x06a5, 0x06a5, // placeholder - 0xfb6f, 0xfb70, 0xfb71, // 6a6 - 0x06a7, 0x06a7, 0x06a7, // placeholder - 0x06a8, 0x06a8, 0x06a8, // placeholder - 0xfb8f, 0xfb90, 0xfb91, // 6a9 - 0x06aa, 0x06aa, 0x06aa, // 6aa - 0x06ab, 0x06ab, 0x06ab, // 6ab - 0x06ac, 0x06ac, 0x06ac, // 6ac - 0xfbd4, 0xfbd5, 0xfbd6, // 6ad - 0x06ae, 0x06ae, 0x06ae, // 6ae - 0xfb93, 0xfb94, 0xfb95, // 6af - - 0x06b0, 0x06b0, 0x06b0, // placeholder - 0xfb9b, 0xfb9c, 0xfb9d, // 6b1 - 0x06b2, 0x06b2, 0x06b2, // 6b2 - 0xfb97, 0xfb98, 0xfb99, // 6b3 - 0x06b4, 0x06b4, 0x06b4, // placeholder - 0x06b5, 0x06b5, 0x06b5, // placeholder - 0x06b6, 0x06b6, 0x06b6, // placeholder - 0x06b7, 0x06b7, 0x06b7, // placeholder - 0x06b8, 0x06b8, 0x06b8, // placeholder - 0x06b9, 0x06b9, 0x06b9, // placeholder - 0xfb9f, 0x06ba, 0x06ba, // 6ba - 0xfba1, 0xfba2, 0xfba3, // 6bb - 0x06bc, 0x06bc, 0x06bc, // placeholder - 0x06bd, 0x06bd, 0x06bd, // placeholder - 0xfbab, 0xfbac, 0xfbad, // 6be - 0x06bf, 0x06bf, 0x06bf, // placeholder - - 0xfba5, 0x06c0, 0x06c0, // 6c0 - 0xfba7, 0xfba8, 0xfba9, // 6c1 - 0x06c2, 0x06c2, 0x06c2, // placeholder - 0x06c3, 0x06c3, 0x06c3, // placeholder - 0x06c4, 0x06c4, 0x06c4, // placeholder - 0xfbe1, 0x06c5, 0x06c5, // 6c5 - 0xfbda, 0x06c6, 0x06c6, // 6c6 - 0xfbd8, 0x06c7, 0x06c7, // 6c7 - 0xfbdc, 0x06c8, 0x06c8, // 6c8 - 0xfbe3, 0x06c9, 0x06c9, // 6c9 - 0x06ca, 0x06ca, 0x06ca, // placeholder - 0xfbdf, 0x06cb, 0x06cb, // 6cb - 0xfbfd, 0xfbfe, 0xfbff, // 6cc - 0x06cd, 0x06cd, 0x06cd, // placeholder - 0x06ce, 0x06ce, 0x06ce, // placeholder - 0x06cf, 0x06cf, 0x06cf, // placeholder - - 0xfbe5, 0xfbe6, 0xfbe7, // 6d0 - 0x06d1, 0x06d1, 0x06d1, // placeholder - 0xfbaf, 0x06d2, 0x06d2, // 6d2 - 0xfbb1, 0x06d3, 0x06d3 // 6d3 - }; - - -static const int KFinal = 0; -static const int KInitial = 1; -static const int KMedial = 2; -static const int KStandardShapeTableOffset = 0x621; -static const int KLamAlefShapeTableStart = 0x64B - 0x621; -static const int KExtendedShapeTableOffset = 0x671 - (0x64f - 0x621); - - -static inline TInt ArabicShapeTableIndex(TInt aCode) - { - if (aCode >= 0x621 && aCode <= 0x64a) - return (aCode - KStandardShapeTableOffset) * 3; - if (aCode >= 0x671 && aCode <= 0x6d3) - return (aCode - KExtendedShapeTableOffset) * 3; - return KErrNotFound; - } - - -static inline TBool IsArabicPoint(TInt aCode) - { - return (aCode >= 0x64B && aCode <= 0x655) || aCode == 0x670; - } - -TInt ConsumeCharsAndDeterminePresentationForm(const TUtf32Iterator& aText, - TUint aFlags, TInt& aLigaturePortionsRemaining) -/** - Get the Arabic or other presentation form, consuming as many characters - as necessary. This function can cope with text that has already been - reversed. -@internalComponent -*/ - { - TUint c = aText.Get(); - TInt index = ArabicShapeTableIndex(c); - if (index != -1) - { - if (aLigaturePortionsRemaining != 0) - { - --aLigaturePortionsRemaining; - GDI_ASSERT_DEBUG(!aText.AtEnd(), EGdiPanic_Invariant); - return 0xFFFF; - } - - int position = -1; - - // Find previous and next character, skipping Arabic points. - TUtf32Iterator tmpText(aText); - tmpText.Prev(); - TUint prev = 0xFFFF; - while (!tmpText.BeforeStart() && (prev == 0xFFFF || IsArabicPoint(prev))) - prev = tmpText.GetThenPrev(); - - tmpText = aText; - tmpText.Next(); - TUint next = 0xFFFF; - while (!tmpText.AtEnd() && (next == 0xFFFF || IsArabicPoint(next))) - next = tmpText.GetThenNext(); - - TInt possible_lam = (aFlags & CFont::TPositionParam::EFLogicalOrder)? - c : next; - TInt possible_alef = (aFlags & CFont::TPositionParam::EFLogicalOrder)? - next : c; - - // Perform lam-alef ligation if necessary. - if (possible_lam == 0x644 && - (possible_alef == 0x622 || possible_alef == 0x623 || possible_alef == 0x625 || possible_alef == 0x627)) - { - switch(possible_alef) - { - case 0x622: - { - c = 0xfef5; - index = KLamAlefShapeTableStart; - break; - } - case 0x623: - { - c = 0xfef7; - index = KLamAlefShapeTableStart + 1; - break; - } - case 0x625: - { - c = 0xfef9; - index = KLamAlefShapeTableStart + 2; - break; - } - default: - { - c = 0xfefb; - index = KLamAlefShapeTableStart + 3; - } - } - index *= 3; - aLigaturePortionsRemaining = 2; - - next = 0xFFFF; - while (!tmpText.AtEnd() && (next == 0xFFFF || IsArabicPoint(next))) - { - next = tmpText.Get(); - tmpText.Next(); - } - } - - TInt left = (aFlags & CFont::TPositionParam::EFLogicalOrder)? prev : next; - TInt right = (aFlags & CFont::TPositionParam::EFLogicalOrder)? next : prev; - - TBool prefix = FALSE; - if (left == 0x640 || left == 0x200D) // kashida or Zero-Width Joiner - prefix = TRUE; - else - { - TInt left_index = ArabicShapeTableIndex(left); - if (left_index != -1) - { - if (static_cast<TInt>(TheArabicShapeTable[left_index + KInitial]) != left || - static_cast<TInt>(TheArabicShapeTable[left_index + KMedial]) != left) - prefix = TRUE; - } - } - TBool suffix = FALSE; - if (right == 0x640 || right == 0x200D) // kashida or Zero-Width Joiner - suffix = TRUE; - else - { - TInt right_index = ArabicShapeTableIndex(right); - if (right_index != -1) - { - if (static_cast<TInt>(TheArabicShapeTable[right_index + KFinal]) != right || - static_cast<TInt>(TheArabicShapeTable[right_index + KMedial]) != right) - suffix = TRUE; - } - } - TBool medial = static_cast<TUint>(TheArabicShapeTable[index + KMedial]) != c; - if (medial) - { - if (prefix && suffix) - position = KMedial; - else if (prefix) - position = KFinal; - else if (suffix) - position = KInitial; - } - else - { - if (prefix) - position = KFinal; - else if (suffix) - position = KInitial; - } - if (position >= 0) - c = TheArabicShapeTable[index + position]; - } - - return c; - } - - -// -// -// GlyphSelector_Arabic Class definition -// -// - -TBool GlyphSelector_Arabic::Process(TGlyphSelectionState& aGss, RShapeInfo&) - { - // Select glyph - use presentation form if applicable. - TInt ligaturePortions = aGss.iLigaturePortionsRemaining; - TUint flags = aGss.iParam.iFlags; - TUint code = ConsumeCharsAndDeterminePresentationForm(aGss.iText, - flags, ligaturePortions); - - aGss.iText.Next(); - aGss.iClusterState = !aGss.iText.AtEnd() && - (aGss.iText.Get().GetCategory() & 0xF0) == TChar::EMarkGroup? - TGlyphSelectionState::EGClusterNotComplete - : TGlyphSelectionState::EGClusterComplete; - - // If we are beginning a new portion of a ligature, we must set the state. - if (ligaturePortions != aGss.iLigaturePortionsRemaining) - { - if (ligaturePortions != 1) - aGss.iClusterState = TGlyphSelectionState::EGClusterNotComplete; - aGss.iLigaturePortionFirstMark = aGss.iParam.iOutputGlyphs; - if (ligaturePortions < aGss.iLigaturePortionsRemaining) - { - aGss.iLigaturePortionsRemaining = ligaturePortions; - // We have just swallowed a non-initial part of the ligature, which - // must not be drawn. - GDI_ASSERT_DEBUG(code == 0xFFFF, EGdiPanic_Invariant); - return ETrue; - } - aGss.iLigaturePortionsRemaining = ligaturePortions; - } - - // In this method we always output the glyph code calculate previously. - if (!aGss.AppendGlyphToCluster(code)) - return EFalse; - - if (!aGss.IsCombiningClass()) - { - aGss.iPen = TGlyphSelectionState::EPenAdvance_Yes; - return ETrue; - } - - // Adjust glyph's bounds further to position this character. - aGss.iPen = TGlyphSelectionState::EPenAdvance_No; - TRect baseBounds = aGss.iParam.iOutput[0].iBounds; - TInt firstMark = 1; - if (aGss.iLigaturePortionsRemaining != 0) - { - TInt centre = (baseBounds.iBr.iX + baseBounds.iTl.iX) >> 1; - TBool firstHalf = aGss.iLigaturePortionsRemaining == 2; - TBool rightHandSide = flags & CFont::TPositionParam::EFLogicalOrder? - firstHalf : !firstHalf; - if (rightHandSide) - baseBounds.iTl.iX = centre; - else - baseBounds.iBr.iX = centre; - if (firstHalf) - aGss.iClusterState = TGlyphSelectionState::EGClusterNotComplete; - firstMark = aGss.iLigaturePortionFirstMark; - } - aGss.CombineLastGlyphToBase(baseBounds, firstMark); - - return ETrue; - } - - -TBool GlyphSelector_Arabic::CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter) - { - // All the characters join to the right, so we don't need to look them up. - // as long as they are there at all, it is OK. - TBool leftIsFixedJoiner = aLeftCharacter == 0x640 || aLeftCharacter == 0x200D; - if (!leftIsFixedJoiner) - { - TInt leftIndex = ArabicShapeTableIndex(aLeftCharacter); - if (leftIndex == -1) - return EFalse; - if (static_cast<TInt>(TheArabicShapeTable[leftIndex + KFinal]) - == aLeftCharacter) - return EFalse; - } - if (aRightCharacter == 0x640 || aRightCharacter == 0x200D) - return !leftIsFixedJoiner; - TInt rightIndex = ArabicShapeTableIndex(aRightCharacter); - return rightIndex != -1 - && static_cast<TInt>(TheArabicShapeTable[rightIndex + KInitial]) - != aRightCharacter; - } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/FontArabic.h --- a/graphicsdeviceinterface/gdi/sgdi/FontArabic.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __FONTARABIC_H__ -#define __FONTARABIC_H__ - - -#include <e32std.h> -#include "GlyphSel.h" - - -// -// -// GlyphSelector_Arabic Class declaration -// -// - - -class GlyphSelector_Arabic -/** - This is the default glyph selector class for Arabic characters in the range - 0x0600..0x06FF. It is able to process Arabic base characters and combining - marks to construct the necessary output glyph cluster. -@internalComponent -*/ - { -public: - - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&) ; - - static TBool CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter); - - }; - - - -#endif // __FONTARABIC_H__ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/FontIndic.cpp --- a/graphicsdeviceinterface/gdi/sgdi/FontIndic.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,432 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#include "FontIndic.h" -#include <gdi.h> -#include "GlyphSel.h" -#include "ShapeInfo.h" -#include "gdiinline.inl" - -// State machine for determining syllable boundaries. -// Key: D = Dependent vowel. V = Virama. N = Nukta -// I = Independent Vowel. S = Candrabindu/Anusvara/Visarga -// C = Consonant. J = zero-width joiner. X = Other -// A = Addak (double the following constant) -enum TSyllableState - { - EReject = -1, - // Begin + I: add and move to IndependentVowel - // Begin + C: add and move to Consonant - // Begin + V/N/D/S/J/X: add and close syllable - EBegin = 0, - // Consonant + D: add and move to ConsonantVowel - // Consonant + N: add - // Consonant + V: add and move to Virama - // Consonant + S: add and close syllable - // Consonant + C/I/J/X: close syllable - EConsonant = 1, - // Consonant2 + D: add and move to ConsonantVowel - // Consonant2 + N: add - // Consonant2 + V: add and move to Virama2 - // Consonant2 + S: add and close syllable - // Consonant2 + C/I/J/X: close syllable - EConsonant2 = 2, - // Consonant3 + D: add and move to ConsonantVowel - // Consonant3 + N: add - // Consonant3 + V: add and move to Virama3 - // Consonant3 + S: add and close syllable - // Consonant3 + C/I/J/X: close syllable - EConsonant3 = 3, - // Consonant + D: add and move to ConsonantVowel - // Consonant + N: add - // Consonant + V: add and close syllable - // Consonant + S: add and close syllable - // Consonant + C/I/J/X: close syllable - EConsonant4 = 4, - // IndependentVowel + S: add - // IndependentVowel + D/V/N/I/C/J/X: close syllable - EIndependentVowel = 5, - // Virama + C: add and move to Consonant - // Virama + J: add and close syllable - // Virama + N/V/D/I/S/X: close syllable - EVirama = 6, - // Virama2 + C: add and move to Consonant3 - // Virama2 + J: add and close syllable - // Virama2 + N/V/D/I/S/X: close syllable - EVirama2 = 7, - // Virama3 + C: add and move to Consonant4 - // Virama3 + J: add and close syllable - // Virama3 + N/V/D/I/S/X: close syllable - EVirama3 = 8, - // Virama4 + J: add and close syllable - // Virama4 + CN/V/D/I/S/X: close syllable - EVirama4 = 9, - // ConsonantVowel + S: add - // ConsonantVowel + D/V/N/I/C/J/X: close syllable - EConsonantVowel = 10, - // NuktaConsonant + D/V: add - // NuktaConsonant + S/N/I/C/J/X: close syllable - ENuktaConsonant = 11, - // NuktaConsonant + D/V: add - // NuktaConsonant + S/N/I/C/J/X: close syllable - ENuktaConsonant2 = 12, - // NuktaConsonant + D/V: add - // NuktaConsonant + S/N/I/C/J/X: close syllable - ENuktaConsonant3 = 13, - // NuktaConsonant + D: add - // NuktaConsonant + V/S/N/I/C/J/X: close syllable - ENuktaConsonant4 = 14, - // IndependentVowelA + CANDRA E: add - // IndependentVowelA + anything else: close syllable - EIndependentVowelA = 15, - // ZeroWidthJoinerC + V: add - // ZeroWidthJoinerC + C/S/N/I/J/X/D: close syllable - EZeroWidthJoinerC = 16, - // ZeroWidthJoinerA + CANDRA E: add - // ZeroWidthJoinerA +anything else: close syllable - EZeroWidthJoinerA = 17, - // ZeroWidthJoinerV + C/N: add - // ZeroWidthJoinerV + anything else: close syllable - EZeroWidthJoinerV = 18, - // ZeroWidthJoinerV2 + C/N: add - // ZeroWidthJoinerV2 + anything else: close syllable - EZeroWidthJoinerV2 = 19, - // ZeroWidthJoinerV3 + C/N: add - // ZeroWidthJoinerV3 + anything else: close syllable - EZeroWidthJoinerV3 =20, - // EKannadaRa + C/N/V/ZWJ(C): add - EKannadaRa = 21, - // ESplitVowel1 + SV2: add and close syllable - // ESPlitVowel1 + anything else: close syllable - ESplitVowel1 = 22, - //EGurBearerA + EIndicCodeGurDependentVowelA: add and move to EIndependentVowel - //EGurBearerA + modifier: add and close syllable - //EGurBearerA + anything else: close syllable - EGurBearerA = 23, - //EGurBearerU + EIndicCodeGurDependentVowelU: add and move to EIndependentVowel - //EGurBearerU + anything else: close syllable - EGurBearerU = 24, - //EGurBearerI + EIndicCodeGurDependentVowelI: add and move to EIndependentVowel - //EGurBearerI + anything else: close syllable - EGurBearerI = 25, - - EConsonantMalaChillu = 26, - EConsonantMalaChillu2 = 27, - EConsonantMalaChillu3 = 28, - EViramaMalaChillu = 29, - EViramaMalaChillu2 = 30, - EViramaMalaChillu3 = 31, - EConsonantMalaChilluNA = 32, - EConsonantMalaChilluNA2 = 33, - EConsonantMalaChilluNA3 = 34, - EViramaMalaChilluNA = 35, - EViramaMalaChilluNA2 = 36, - EViramaMalaChilluNA3 = 37, - EZeroWidthJoinerMalaChilluNA = 38, - EZeroWidthJoinerMalaChilluNA2 = 39, - EZeroWidthJoinerMalaChilluNA3 = 40, - // Add and close acceptances go here. - EAccept = 41 - }; - -/** Defines the transitions for a state machine for determining syllable -boundaries. The machine starts in state 0. On receiving a character of type t -while in state s, moves to state KStateResponse[s][t]. */ -const TSyllableState KStateResponse[42][24] = - { - // EBegin -- nothing added yet - {EAccept, EAccept, EIndependentVowel, EConsonant, EAccept, EAccept, EAccept, EAccept, ENuktaConsonant, EIndependentVowelA, EAccept, EKannadaRa, EAccept, EAccept, EAccept, EGurBearerA, EGurBearerU, EGurBearerI, EAccept, EAccept, EAccept, EConsonantMalaChillu,EConsonantMalaChilluNA,EConsonant}, - // EConsonant -- seen a consonant either at the start or after virama - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama, ENuktaConsonant, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // EConsonant2 -- seen a consonant after virama - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama2, ENuktaConsonant2, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // EConsonant3 -- seen a consonant after virama2 - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama3, ENuktaConsonant3, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // EConsonant4 -- seen a consonant after virama3 - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama4, ENuktaConsonant4, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // EIndependentVowel -- possibly nasalized. I haven't bothered to distinguish between - // nasalization and visarga. - {EReject, EAccept, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonantVowel, EReject, EReject, EReject, EReject, EReject, EReject, EReject,EReject,EReject}, - // EVirama -- just seen a virama in a legal context. Must be consonant or ZWJ next - {EReject, EReject, EReject, EConsonant2, EReject, EReject, EReject, EZeroWidthJoinerV, ENuktaConsonant2, EReject, EReject, EConsonant2, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonantMalaChillu2,EConsonantMalaChilluNA2,EConsonant2}, - // EVirama2 -- just seen a virama in a legal context. Must be consonant2 - {EReject, EReject, EReject, EConsonant3, EReject, EReject, EReject, EZeroWidthJoinerV2, ENuktaConsonant3, EReject, EReject, EConsonant3, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonantMalaChillu3,EConsonantMalaChilluNA3,EConsonant3}, - // EVirama3 -- just seen a virama in a legal context. Must be consonant3 - {EReject, EReject, EReject, EConsonant4, EReject, EReject, EReject, EZeroWidthJoinerV3, ENuktaConsonant4, EReject, EReject, EConsonant4, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonant4,EConsonant4,EConsonant4}, - // EVirama4 -- just seen a virama in a legal context. Must be consonant4 - {EReject, EReject, EReject, EReject, EReject, EReject, EReject, EAccept, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject,EReject,EReject}, - // EConsonantVowel -- Just seen a consonant with matra. Can only nasalize or visarg - {EReject, EAccept, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject,EReject,EReject}, - // ENuktaConsonant -- Just seen a consonant with Nukta. Can only accept a dependant vowel or a Virama at this stage. - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama, EReject, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // ENuktaConsonant2 -- Just seen a consonant with Nukta after a virama. - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama2, EReject, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // ENuktaConsonant3 -- Just seen a consonant with Nukta after Virama2. - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama3, EReject, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // ENuktaConsonant4 -- Just seen a consonant with Nukta after Virama3. - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama4, EReject, EReject, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // EIndependentVowelA -- Special case Devanagari independent vowel - {EReject, EAccept, EReject, EReject, EReject, EReject, EReject, EZeroWidthJoinerA, EReject, EReject, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // EZeroWidthJoinerC -- Just seen a ZWJ after a consonant - {EReject, EReject, EReject, EReject, EReject, EVirama, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject,EReject,EReject}, - // EZeroWidthJoinerA -- Just seen a ZWJ after the dependent Vowel A - {EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EAccept, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject,EReject,EReject}, - // EZeroWidthJoinerV -- Just seen the ZWJ after the first pair of consonant + virama - {EReject, EAccept, EReject, EConsonant2, EReject, EReject, EReject, EReject, ENuktaConsonant2, EReject, EReject, EConsonant2, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonantMalaChillu2,EConsonantMalaChilluNA2,EConsonant2}, - // EZeroWidthJoinerV2 -- Just seen the ZWJ after consonant + virama + consonant + virama - {EReject, EAccept, EReject, EConsonant3, EReject, EReject, EReject, EReject, ENuktaConsonant3, EReject, EReject, EConsonant3, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonantMalaChillu3,EConsonantMalaChilluNA3,EConsonant3}, - // EZeroWidthJoinerV3 -- Just seen the ZWJ after consonant + virama + consonant + virama + consonant + virama - {EReject, EAccept, EReject, EConsonant4, EReject, EReject, EReject, EReject, ENuktaConsonant4, EReject, EReject, EConsonant4, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonant4,EConsonant4,EConsonant4}, - // EKannadaRa -- Special case consonant - {EReject, EAccept, EReject, EReject, EConsonantVowel, EVirama, ENuktaConsonant, EZeroWidthJoinerC, EReject, EReject, EConsonantVowel, EReject, ESplitVowel1, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EConsonantVowel, EReject,EReject,EReject}, - // ESplitVowel1 -- Just seen a consonant with first part of a split vowel. Can only nasalize, visarg or add second part of splt vowel - {EReject, EAccept, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EConsonantVowel, EConsonantVowel, EReject, EReject, EReject, EReject, EReject, EReject, EReject,EReject,EReject}, - // EGurBearerA -- Just seen a dependent Vowel EIndicCodeGurDependentVowelA and modifier - {EReject, EAccept, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EIndependentVowel, EReject, EReject, EReject,EReject,EReject}, - // EGurBearerU -- Just seen a dependent Vowel EIndicCodeGurDependentVowelU - {EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EIndependentVowel, EReject, EReject,EReject,EReject}, - // EGurBearerI -- Just seen a dependent Vowel EIndicCodeGurDependentVowelI - {EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EIndependentVowel, EReject,EReject,EReject}, - - {EReject,EAccept,EReject,EReject,EConsonantVowel,EViramaMalaChillu,EReject,EReject,EReject,EReject,EReject,EReject,ESplitVowel1,EConsonantVowel,EConsonantVowel,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject}, - {EReject,EAccept,EReject,EReject,EConsonantVowel,EViramaMalaChillu2,EReject,EReject,EReject,EReject,EReject,EReject,ESplitVowel1,EConsonantVowel,EConsonantVowel,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject}, - {EReject,EAccept,EReject,EReject,EConsonantVowel,EViramaMalaChillu3,EReject,EReject,EReject,EReject,EReject,EReject,ESplitVowel1,EConsonantVowel,EConsonantVowel,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject}, - {EReject,EReject,EReject,EConsonant2,EReject,EReject,EReject,EAccept,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonantMalaChillu2,EConsonantMalaChilluNA2,EConsonant2}, - {EReject,EReject,EReject,EConsonant3,EReject,EReject,EReject,EAccept,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonantMalaChillu3,EConsonantMalaChilluNA3,EConsonant3}, - {EReject,EReject,EReject,EConsonant4,EReject,EReject,EReject,EAccept,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonant4,EConsonant4,EConsonant4}, - {EReject,EAccept,EReject,EReject,EConsonantVowel,EViramaMalaChilluNA,EReject,EReject,EReject,EReject,EReject,EReject,ESplitVowel1,EConsonantVowel,EConsonantVowel,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject}, - {EReject,EAccept,EReject,EReject,EConsonantVowel,EViramaMalaChilluNA2,EReject,EReject,EReject,EReject,EReject,EReject,ESplitVowel1,EConsonantVowel,EConsonantVowel,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject}, - {EReject,EAccept,EReject,EReject,EConsonantVowel,EViramaMalaChilluNA3,EReject,EReject,EReject,EReject,EReject,EReject,ESplitVowel1,EConsonantVowel,EConsonantVowel,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject}, - {EReject,EReject,EReject,EConsonant2,EReject,EReject,EReject,EZeroWidthJoinerMalaChilluNA,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonantMalaChillu2,EConsonantMalaChilluNA2,EConsonant2}, - {EReject,EReject,EReject,EConsonant3,EReject,EReject,EReject,EZeroWidthJoinerMalaChilluNA2,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonantMalaChillu3,EConsonantMalaChilluNA3,EConsonant3}, - {EReject,EReject,EReject,EConsonant4,EReject,EReject,EReject,EZeroWidthJoinerMalaChilluNA3,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonant4,EConsonant4,EConsonant4}, - {EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonant2}, - {EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonant3}, - {EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EReject,EConsonant4}, - - // EAccept -- this one is added but anything further is rejected - {EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject, EReject} - }; - -TIndicCodeType CodeType(TInt aCode, const TIndicCodeMapping aCodeMap[], TInt aMapLen) - { - TInt start = 0; - TInt end = aMapLen - 1; - while (start != end) - { - const TInt mid = (start + end + 1) >> 1; - if (aCodeMap[mid].iFirstCodeInRange <= aCode) - start = mid; - else - end = mid - 1; - } - return static_cast<TIndicCodeType>(aCodeMap[start].iCodeType); - } - -const TText16* SyllableEnd(const TText16* aCurrentPosition, - const TText16* aEnd, const TIndicCodeMapping aCodeMap[], TInt aMapLen) - { - TSyllableState state = EBegin; - while (aCurrentPosition != aEnd) - { - const TIndicCodeType ct = CodeType(*aCurrentPosition, aCodeMap, aMapLen); - state = KStateResponse[state][ct]; - if (state == EReject) - return aCurrentPosition; - ++aCurrentPosition; - } - return aCurrentPosition; - } - -/** -Common function for all Indic scripts. -Performs the shaping operation on Indic script text up to KMaxTextToShape. -*/ -TInt IndicShapingProcess(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo, - const TIndicCodeMapping aCodeMap[], TInt aMapLen, const TUint aHighChar, - const TUint aLowChar, const TUint32 aScript, const TUint32 aLang) - { - const TText16* startCharacter = aGss.iParam.iText.Ptr(); - const TText16* endCharacter = startCharacter + aGss.iParam.iText.Length(); - const TText16* currentCharacter = aGss.iText.CurrentPosition(); - TInt currentPosition = currentCharacter - startCharacter; - - // Do some new shaping - - // First close the existing RShapeInfo - if(aShapeInfo.IsOpen()) - aShapeInfo.Close(); - - // Find the end of Indic text whilst limiting the amount of text to be shaped to - // KMaxTextToShape. When finding the end of end position of the text to be shaped, - // include numerals, punctuations and other control characters. - const TText16* endIndic = currentCharacter; - TChar endIndicChar = *endIndic; - while((endIndic <= endCharacter || endIndic - currentCharacter <= KMaxTextToShape) && - ((*endIndic >= aLowChar && *endIndic <= aHighChar) || - ((endIndicChar.IsDigit() || endIndicChar.IsPunctuation()) && !QuoteOrBracketPair(*endIndic)))) - { - if (endIndic == endCharacter || endIndic - currentCharacter > KMaxTextToShape) - break; - endIndic = SyllableEnd(endIndic, endCharacter, aCodeMap, aMapLen); - endIndicChar = *endIndic; - } - - TInt endPosForShaping = endIndic - startCharacter; - - //Now shape from current position to the end of Hindi - return aShapeInfo.Open(aGss.iFont, aGss.iParam.iText, - currentPosition, endPosForShaping, aScript, aLang); - } - -/** -Common function for all Indic scripts. Adds the shaped glyphs to the glyph cluster. -This function is called regardless of whether shaping was done or skipped in this -iteration of the Default Process -*/ -TBool IndicPostShapingProcess(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo, - TInt aCurrPos, TInt aSyllEndPos, const TText16* aSyllableEnd) - { - // Now get all the shaped values - // Get the number of glyphs, glyphs, positions and indices after shaping. - TInt numGlyphs = aShapeInfo.GlyphCount(); - const TInt32* glyph = aShapeInfo.Glyphs(); - const RShapeInfo::TPoint16* position = aShapeInfo.GlyphPositions(); - const TInt16* indices = aShapeInfo.Indices(); - TPoint origin; - - // Shift the indices and positions until the current poisition is reached. This done so that the - // origin can be set back to the original co-ordinates at the start of this Hindi text - while (*indices < aCurrPos) - { - position++; - indices++; - } - // Set the origin back by subtracting the current position co-ordinates from the current pen position - origin.iX = aGss.iParam.iPen.iX - position->iX; - origin.iY = aGss.iParam.iPen.iY - position->iY; - - // No re-initialise the indices and positions to start appending the glyphs to clusters from the beginning - indices = aShapeInfo.Indices(); - position = aShapeInfo.GlyphPositions(); - - // Now do some post shaping syllable chopping - for (TInt i = 0; i < numGlyphs; i++, glyph++, position++, indices++) - { - if(*indices >= aSyllEndPos) - break; - if(*indices >= aCurrPos && *indices < aSyllEndPos) - { - aGss.iParam.iPen.iX = origin.iX + position->iX; - aGss.iParam.iPen.iY = origin.iY + position->iY; - - //Just skip the non-existing glyph and continue handling other glyphs if AppendGlyphToCluster return false. - // The "continue" statement is for avoiding the potential risk of handling the non-existing glyph. - if (!aGss.AppendGlyphToCluster(0x80000000UL | *glyph)) - continue; - } - } - - // We'll do pen advance ourselves, thanks. - aGss.iPen = TGlyphSelectionState::EPenAdvance_No; - aGss.iParam.iPen.iX = origin.iX + position->iX; - aGss.iParam.iPen.iY = origin.iY + position->iY; - aGss.iClusterState = TGlyphSelectionState::EGClusterComplete; - aGss.iText.SetCurrentPosition(aSyllableEnd); - return ETrue; - } - -/** -Common function for all Indic scripts. -Performs shaping and Rasterizing operation on Indic script text -*/ -TBool DoProcess(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo, const TIndicScriptProcessorParameters& aScriptSpecificParameters){ - const TText16* startCharacter = aGss.iParam.iText.Ptr(); - const TText16* endCharacter = startCharacter + aGss.iParam.iText.Length(); - const TText16* currentCharacter = aGss.iText.CurrentPosition(); - TInt currentPosition = currentCharacter - startCharacter; - - // Get the logical end of the syllable from the input text. We will use this later to chop - // syllables from the glyph values we get. - const TText16* syllableEnd = SyllableEnd(currentCharacter, endCharacter, aScriptSpecificParameters.iCodeMap, - aScriptSpecificParameters.iMapLen); - TInt syllableEndPos = syllableEnd - startCharacter; - - TInt ret = KErrNone; - if(currentPosition >= aShapeInfo.EndOfShapedText()) - ret = IndicShapingProcess(aGss, aShapeInfo, aScriptSpecificParameters.iCodeMap, aScriptSpecificParameters.iMapLen, - aScriptSpecificParameters.iUCHigh, aScriptSpecificParameters.iUCLow, aScriptSpecificParameters.iScriptCode, aScriptSpecificParameters.iLanguageCode); - - // If an RShapeInfo could not be opened, call the default process - if (ret != KErrNone) - return GlyphSelector_Default::Process(aGss, aShapeInfo); - - // Now call the post shaping process to add glyphs to the glyph cluster - return IndicPostShapingProcess(aGss, aShapeInfo, currentPosition, syllableEndPos, syllableEnd); -} - -/*************************************************** D E V A N A G A R I ***************************************************/ -TBool GlyphSelector_Devanagari::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo) - { - return DoProcess(aGss, aShapeInfo, KIndicDevParameters); - } - -/***************************************************** K A N N A D A ******************************************************/ -TBool GlyphSelector_Kannada::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo) - { - return DoProcess(aGss, aShapeInfo, KIndicKanParameters); - } - -/***************************************************** G U J A R A T I ******************************************************/ -TBool GlyphSelector_Gujarati::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo) - { - return DoProcess(aGss, aShapeInfo, KIndicGujParameters); - } - -/***************************************************** B E N G A L I ******************************************************/ -TBool GlyphSelector_Bengali::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo) - { - return DoProcess(aGss, aShapeInfo, KIndicBenParameters); - } - -/***************************************************** T A M I L ******************************************************/ -TBool GlyphSelector_Tamil::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo) - { - return DoProcess(aGss, aShapeInfo, KIndicTamParameters); - } - -/***************************************************** T E L U G U ******************************************************/ -TBool GlyphSelector_Telugu::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo) - { - return DoProcess(aGss, aShapeInfo, KIndicTelParameters); - } - -/***************************************************** G U R M U K H I ******************************************************/ -TBool GlyphSelector_Gurmukhi::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo)\ - { - return DoProcess(aGss, aShapeInfo, KIndicGurParameters); - } - -/***************************************************** M A L A Y A L A M ******************************************************/ -TBool GlyphSelector_Malayalam::Process(TGlyphSelectionState& aGss, RShapeInfo& aShapeInfo) - { - return DoProcess(aGss, aShapeInfo, KIndicMalParameters); - } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/FontIndic.h --- a/graphicsdeviceinterface/gdi/sgdi/FontIndic.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,487 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __FONTINDIC_H__ -#define __FONTINDIC_H__ - -#include "GlyphSel.h" - -/** Defines the maximum ammount of text thats can be shaped at one time. -Change this number to suit optimisation, as increasing it or decreasing it may -make Devanagari text faster/slower.*/ -const TInt KMaxTextToShape = 16; - -enum TIndicCodeType - { - // These values must not change without also changing - // KStateResponse table accordingly - EIndicCodeOther = 0, - EIndicCodeCombiningSign = 1, - EIndicCodeIndependentVowel = 2, - EIndicCodeConsonant = 3, - EIndicCodeDependentVowel = 4, - EIndicCodeVirama = 5, - EIndicCodeNukta = 6, - EIndicCodeZWJ = 7, - EIndicCodeNuktaConsonant = 8, - EIndicCodeIndependentVowelA = 9, - EIndicCodeDependentVowelCandraE = 10, - EIndicCodeConsonantKannadaBengaliRa = 11, - EIndicCodeSplitVowel1 = 12, - EIndicCodeSplitVowel2 = 13, - EIndicCodeTamilLengthMarkAU = 14, - //Gurmukhi specific types: EIndicCodeGurBeraer* for specific bearer - //EIndicCodeGurDependentVowel* for dependent vowles which can be combined - //with corresponding bearer to form an independent vowlel - EIndicCodeGurBearerA = 15, - EIndicCodeGurBearerU = 16, - EIndicCodeGurBearerI = 17, - EIndicCodeGurDependentVowelA = 18, - EIndicCodeGurDependentVowelU = 19, - EIndicCodeGurDependentVowelI = 20, - EIndicCodeConsonantMalaChillu = 21, - EIndicCodeConsonantMalaChilluNA = 22, - EIndicCodeConsonantMalaRRA = 23 - }; - -struct TIndicCodeMapping - { - TInt16 iFirstCodeInRange; - TInt16 iCodeType; // From TIndicCodeType - }; - -/** Holds the types of all the symbols in the devanagari range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KDevCodeMap[] = - { - {0, EIndicCodeOther}, - {0x901, EIndicCodeCombiningSign}, - {0x904, EIndicCodeIndependentVowel}, - {0x905, EIndicCodeIndependentVowelA}, - {0x906, EIndicCodeIndependentVowel}, - {0x915, EIndicCodeConsonant}, - {0x929, EIndicCodeNuktaConsonant}, - {0x92A, EIndicCodeConsonant}, - {0x931, EIndicCodeNuktaConsonant}, - {0x932, EIndicCodeConsonant}, - {0x934, EIndicCodeNuktaConsonant}, - {0x935, EIndicCodeConsonant}, - {0x93A, EIndicCodeOther}, - {0x93C, EIndicCodeNukta}, - {0x93D, EIndicCodeOther}, - {0x93E, EIndicCodeDependentVowel}, - {0x945, EIndicCodeDependentVowelCandraE}, - {0x946, EIndicCodeDependentVowel}, - {0x94D, EIndicCodeVirama}, - {0x94E, EIndicCodeOther}, - {0x951, EIndicCodeCombiningSign}, - {0x955, EIndicCodeConsonant}, - {0x958, EIndicCodeNuktaConsonant}, - {0x960, EIndicCodeIndependentVowel}, - {0x962, EIndicCodeDependentVowel}, - {0x964, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Kannada range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KKanCodeMap[] = - { - {0, EIndicCodeOther}, - {0xC82, EIndicCodeCombiningSign}, - {0xC85, EIndicCodeIndependentVowel}, - {0xC95, EIndicCodeConsonant}, - {0xCB0, EIndicCodeConsonantKannadaBengaliRa}, - {0xCB1, EIndicCodeConsonant}, - {0xCB4, EIndicCodeOther}, - {0xCB5, EIndicCodeConsonant}, - {0xCBA, EIndicCodeOther}, - {0xCBC, EIndicCodeNukta}, - {0xCBD, EIndicCodeOther}, - {0xCBE, EIndicCodeDependentVowel}, - {0xCC5, EIndicCodeOther}, - {0xCC6, EIndicCodeDependentVowel}, - {0xCCD, EIndicCodeVirama}, - {0xCD5, EIndicCodeCombiningSign}, - {0xCDE, EIndicCodeConsonant}, - {0xCE0, EIndicCodeIndependentVowel}, - {0xCE2, EIndicCodeDependentVowel}, - {0xCE4, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Gujarati range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KGujCodeMap[] = - { - {0, EIndicCodeOther}, - {0xA81, EIndicCodeCombiningSign}, - {0xA85, EIndicCodeIndependentVowel}, - {0xA8E, EIndicCodeOther}, - {0xA8F, EIndicCodeIndependentVowel}, - {0xA92, EIndicCodeOther}, - {0xA93, EIndicCodeIndependentVowel}, - {0xA95, EIndicCodeConsonant}, - {0xAA9, EIndicCodeOther}, - {0xAAA, EIndicCodeConsonant}, - {0xAB1, EIndicCodeOther}, - {0xAB2, EIndicCodeConsonant}, - {0xAB4, EIndicCodeOther}, - {0xAB5, EIndicCodeConsonant}, - {0xABC, EIndicCodeNukta}, - {0xABD, EIndicCodeOther}, - {0xABE, EIndicCodeDependentVowel}, - {0xAC6, EIndicCodeOther}, - {0xAC7, EIndicCodeDependentVowel}, - {0xACA, EIndicCodeOther}, - {0xACB, EIndicCodeDependentVowel}, - {0xACD, EIndicCodeVirama}, - {0xACE, EIndicCodeOther}, - {0xAE0, EIndicCodeIndependentVowel}, - {0xAE2, EIndicCodeDependentVowel}, - {0xAE4, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Gurmukhi range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KGurCodeMap[] = - { - {0, EIndicCodeOther}, - {0xA01, EIndicCodeCombiningSign}, - {0xA04, EIndicCodeOther}, - {0xA05, EIndicCodeGurBearerA}, - {0xA06, EIndicCodeIndependentVowel}, - {0xA0B, EIndicCodeOther}, - {0xA0F, EIndicCodeIndependentVowel}, - {0xA11, EIndicCodeOther}, - {0xA13, EIndicCodeIndependentVowel}, - {0xA15, EIndicCodeConsonant}, - {0xA29, EIndicCodeOther}, - {0xA2A, EIndicCodeConsonant}, - {0xA31, EIndicCodeOther}, - {0xA32, EIndicCodeConsonant}, - {0xA33, EIndicCodeNuktaConsonant}, - {0xA34, EIndicCodeOther}, - {0xA35, EIndicCodeConsonant}, - {0xA36, EIndicCodeNuktaConsonant}, - {0xA37, EIndicCodeOther}, - {0xA38, EIndicCodeConsonant}, - {0xA3A, EIndicCodeOther}, - {0xA3C, EIndicCodeNukta}, - {0xA3D, EIndicCodeOther}, - {0xA3E, EIndicCodeGurDependentVowelA}, - {0xA3F, EIndicCodeGurDependentVowelI}, - {0xA41, EIndicCodeGurDependentVowelU}, - {0xA43, EIndicCodeOther}, - {0xA47, EIndicCodeGurDependentVowelI}, - {0xA48, EIndicCodeGurDependentVowelA}, - {0xA49, EIndicCodeOther}, - {0xA4B, EIndicCodeGurDependentVowelU}, - {0xA4C, EIndicCodeGurDependentVowelA}, - {0xA4D, EIndicCodeVirama}, - {0xA4E, EIndicCodeOther}, - {0xA59, EIndicCodeNuktaConsonant}, - {0xA5C, EIndicCodeConsonant}, - {0xA5D, EIndicCodeOther}, - {0xA5E, EIndicCodeNuktaConsonant}, - {0xA5F, EIndicCodeOther}, - {0xA70, EIndicCodeCombiningSign}, - {0xA71, EIndicCodeCombiningSign}, - {0xA72, EIndicCodeGurBearerI}, - {0xA73, EIndicCodeGurBearerU}, - {0xA74, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Bengali range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KBenCodeMap[] = - { - {0, EIndicCodeOther}, - {0x981 , EIndicCodeCombiningSign}, - {0x985 , EIndicCodeIndependentVowel}, - {0x995 , EIndicCodeConsonant}, - {0x9B0 , EIndicCodeConsonantKannadaBengaliRa}, - {0x9B1 , EIndicCodeConsonant}, - {0x9BA , EIndicCodeOther}, - {0x9BC , EIndicCodeNukta}, - {0x9BD , EIndicCodeOther}, - {0x9BE , EIndicCodeDependentVowel}, - {0x9C9 , EIndicCodeOther}, - {0x9CB , EIndicCodeDependentVowel}, - {0x9CD , EIndicCodeVirama}, - {0x9CE , EIndicCodeOther}, - {0x9D7 , EIndicCodeDependentVowel}, - {0x9DC , EIndicCodeConsonant}, - {0x9E0 , EIndicCodeIndependentVowel}, - {0x9E2 , EIndicCodeDependentVowel}, - {0x9E4 , EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Tamil range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KTamCodeMap[] = - { - {0, EIndicCodeOther}, - {0xB82 , EIndicCodeCombiningSign}, - {0xB83 , EIndicCodeIndependentVowel}, - {0xB84 , EIndicCodeOther}, - {0xB85 , EIndicCodeIndependentVowel}, - {0xB92 , EIndicCodeIndependentVowelA}, - {0xB93 , EIndicCodeIndependentVowel}, - {0xB95 , EIndicCodeConsonant}, - {0xBBE , EIndicCodeSplitVowel2}, - {0xBBF , EIndicCodeDependentVowel}, - {0xBC6 , EIndicCodeSplitVowel1}, - {0xBC8 , EIndicCodeDependentVowel}, - {0xBCD , EIndicCodeVirama}, - {0xBCE , EIndicCodeOther}, - {0xBD7 , EIndicCodeTamilLengthMarkAU}, - {0xBE4 , EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Telugu range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KTelCodeMap[] = - { - {0, EIndicCodeOther}, - {0xC01, EIndicCodeCombiningSign}, - {0xC04, EIndicCodeOther}, - {0xC05, EIndicCodeIndependentVowel}, - {0xC15, EIndicCodeConsonant}, - {0xC3A, EIndicCodeOther}, - {0xC3E, EIndicCodeDependentVowel}, - {0xC4D, EIndicCodeVirama}, - {0xC4E, EIndicCodeOther}, - {0xC55, EIndicCodeDependentVowel}, - {0xC57, EIndicCodeOther}, - {0xC60, EIndicCodeIndependentVowel}, - {0xC62, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Malayalam range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KMalaCodeMap[] = - { - {0, EIndicCodeOther}, // NOT USED D00 - D01 - {0xD02, EIndicCodeCombiningSign}, // Modifiers - {0xD04, EIndicCodeOther}, // NOT USED - {0xD05, EIndicCodeIndependentVowel}, -// {0xD0D, EIndicCodeOther}, // Reserved -// {0xD0E, EIndicCodeIndependentVowel}, -// {0xD11, EIndicCodeOther}, // Reserved -// {0xD12, EIndicCodeIndependentVowel}, - {0xD15, EIndicCodeConsonant}, - {0xD23, EIndicCodeConsonantMalaChillu}, // NNA - {0xD24, EIndicCodeConsonant}, - {0xD28, EIndicCodeConsonantMalaChilluNA}, // NA - {0xD29, EIndicCodeOther}, // Reserved - {0xD2A, EIndicCodeConsonant}, - {0xD30, EIndicCodeConsonantMalaChillu}, // RA - {0xD31, EIndicCodeConsonantMalaRRA}, // RRA - {0xD32, EIndicCodeConsonantMalaChillu}, // LA, LLA - {0xD34, EIndicCodeConsonant}, - {0xD3A, EIndicCodeOther}, // NOT USED D3A - D3D - {0xD3E, EIndicCodeSplitVowel2}, - {0xD3F, EIndicCodeDependentVowel}, -// {0xD44, EIndicCodeOther}, // Reserved D44 - D45 - {0xD46, EIndicCodeSplitVowel1}, - {0xD48, EIndicCodeDependentVowel}, -// {0xD49, EIndicCodeOther}, // Reserved D49 -// {0xD4A, EIndicCodeDependentVowel}, - {0xD4D, EIndicCodeVirama}, - {0xD4E, EIndicCodeOther}, //Reserved D4E - D56 - {0xD57, EIndicCodeTamilLengthMarkAU}, // EIndicCodeDependentVowel for Telugu ??? - {0xD58, EIndicCodeOther}, // NOT USED D58 - D5F - {0xD60, EIndicCodeIndependentVowel}, // RR, LL - {0xD62, EIndicCodeOther}, // NOT USED D62 - D65, digits D66 - D6F - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/* Holds all parameters specific to scripts */ -struct TIndicScriptProcessorParameters{ - TUint32 iLanguageCode; - TUint32 iScriptCode; - TUint iUCLow; - TUint iUCHigh; - TUint iMapLen; - const TIndicCodeMapping *iCodeMap; -}; - -static const TIndicScriptProcessorParameters KIndicDevParameters = { - 0x48494E20, //KHindiLanguageCode, - 0x64657661, //KDevanagariScriptCode, - 0x0900, //KDevLow, - 0x0970, //KDevHigh, - sizeof(KDevCodeMap)/sizeof(KDevCodeMap[0]), - KDevCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicKanParameters = { - 0x4B414E20, //KKannadaLanguageCode, - 0x6B6E6461, //KKannadaScriptCode, - 0x0C80, //KKanLow, - 0x0CFF, //KKanHigh, - sizeof(KKanCodeMap)/sizeof(KKanCodeMap[0]), - KKanCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicGujParameters = { - 0x47554A20, //KGujaratiLanguageCode, - 0x67756A72, //KGujaratiScriptCode, - 0x0A80, //KGujLow, - 0x0AFF, //KGujHigh, - sizeof(KGujCodeMap)/sizeof(KGujCodeMap[0]), - KGujCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicBenParameters = { - 0x42454E20, //KBengaliLanguageCode, - 0x62656E67, //KBengaliScriptCode, - 0x0980, //KBenLow, - 0x09FF, //KBenHigh, - sizeof(KBenCodeMap)/sizeof(KBenCodeMap[0]), - KBenCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicTamParameters = { - 0x54414D20, //KTamilLanguageCode, - 0x74616D6C, //KTamilScriptCode, - 0x0B80, //KTamLow, - 0x0BFF, //KTamHigh, - sizeof(KTamCodeMap)/sizeof(KTamCodeMap[0]), - KTamCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicTelParameters = { - 0x54454C20, //KTeluguLanguageCode, - 0x74656C75, //KTeluguScriptCode, - 0x0C00, //KTelLow, - 0x0C7F, //KTelHigh, - sizeof(KTelCodeMap)/sizeof(KTelCodeMap[0]), - KTelCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicGurParameters = { - 0x00000000, //KGurmukhiLanguageCode, - 0x67757275, //KGurmukhiScriptCode, - 0x0A00, //KGurLow, - 0x0A7F, //KGurHigh, - sizeof(KGurCodeMap)/sizeof(KGurCodeMap[0]), - KGurCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicMalParameters = { - 0x4D4C5220, //KMalayalamLanguageCode, - 0x6D6C796D, //KMalayalamScriptCode, - 0x0D00, //KMalaLow, - 0x0D7F, //KMalaHigh, - sizeof(KMalaCodeMap)/sizeof(KMalaCodeMap[0]), - KMalaCodeMap -}; - -/** This is the default glyph selector class for Devanagari characters in the -range 0x0900..0x097F. -@internalComponent -*/ -class GlyphSelector_Devanagari - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -/** This is the default glyph selector class for Kannada characters in the -range 0x0C80..0x0CFF. -@internalComponent -*/ -class GlyphSelector_Kannada - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -/** This is the default glyph selector class for Gujarati characters in the -range 0x0A80..0x0AFF. -@internalComponent -*/ -class GlyphSelector_Gujarati - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Bengali characters in the -range 0x0980..0x09FF. -@internalComponent -*/ -class GlyphSelector_Bengali - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Tamil characters in the -range 0x0B80..0x0BFF. -@internalComponent -*/ -class GlyphSelector_Tamil - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Telugu characters in the -range 0x0C00..0x0C7F. -@internalComponent -*/ -class GlyphSelector_Telugu - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Gurmukhi characters in the -range 0x0A00..0x0A7F. -@internalComponent -*/ -class GlyphSelector_Gurmukhi - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Malayalam characters in the -range 0x0D00..0x0D7F. -@internalComponent -*/ -class GlyphSelector_Malayalam - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/FontThai.cpp --- a/graphicsdeviceinterface/gdi/sgdi/FontThai.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,968 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -/** - @file - @internalComponent -*/ - - -#include <gdi.h> -#include "FontThai.h" - - -// -// ThaiGlyph Namespace definition -// - - -/** - This namespace holds functions used to evaluate a glyph character code - against a given Thai related prediciate. The 'code' argument is a glyph - from the current output cluster and so may be a Thai glyph, Thai PUA glyph, - the dotted circle glyph or 0xffff. Therefore it was decided not to implement - these routines using a data driven table approach as it would be inefficient. -@internalComponent. -*/ -namespace ThaiGlyph - { - const TText16 KYoYing = 0x0E0D; - const TText16 KYoYingPua = 0xF70F; - const TText16 KThoThan = 0x0E10; - const TText16 KThoThanPua = 0xF700; - const TText16 KNikhahit = 0x0E4D; - const TText16 KNikhahitPua = 0xF711; - const TText16 KSaraAa = 0x0E32; - const TText16 KSaraAm = 0x0E33; - - - TBool IsThaiGlyph(TUint code) - { - return ((code > 0x0E00 && code < 0x0E3B) || - (code > 0x0E3E && code < 0x0E5C) || - (code >= 0xF700 && code <= 0xF71A)); - } - - TBool IsThaiConsonant(TUint code) - { - return (code >= 0x0E01 && code <= 0x0E2E); - } - - TBool IsThaiTallConsonant(TUint code) - { - return (//code == 0x0E0A || // CHO CHANG not tall at all - //code == 0x0E0B || // SO SO not tall at all - code == 0x0E1B || // PO PLA - code == 0x0E1D || // FO FA - code == 0x0E1F || // FO FAN - code == 0x0E2C); // LO CHULA in some fonts, Unicode tables show it as tall - } - - TBool IsThaiShortConsonant(TUint code) - { - return (((code >= 0x0E01 && code <= 0x0E2E) || (code == KUnicodeDottedCircle)) && - code != 0x0E1B && // PO PLA - code != 0x0E1D && // FO FA - code != 0x0E1F && // FO FAN - code != 0x0E2C); // LO CHULA in some fonts, Unicode tables show it as tall - } - - TBool IsThaiConsonantWithDisjointDescender(TUint code) - { - return (code == ThaiGlyph::KYoYing || code == ThaiGlyph::KThoThan); - } - - TBool IsThaiConsonantWithJointDescender(TUint code) - { - return (code == 0x0E0E || // DO CHADA - code == 0x0E0F || // PO PATAK - code == 0x0E24 || // RU - code == 0x0E26); // LU - } - - TBool IsThaiVowel(TUint code) - { - return ((code >= 0x0E30 && code <= 0x0E3A) || - (code >= 0x0E40 && code <= 0x0E44) || - code == 0x0E47); // MAITAIKHU - } - - TBool IsThaiDepVowel(TUint code) - { - return (code == 0x0E31 || // MAI HAN-AKAT - (code >= 0x0E34 && code <= 0x0E3A) || - code == 0x0E47); // MAITAIKHU - } - - TBool IsThaiDepVowelAbove(TUint code) - { - return (code == 0x0E31 || // MAI HAN-AKAT - (code >= 0x0E34 && code <= 0x0E37) || - code == 0x0E47); // MAITAIKHU - } - - TBool IsThaiDepVowelAbovePUA(TUint code) - { - return (code == 0xF710 || // MAI HAN-AKAT - (code >= 0xF701 && code <= 0xF704) || - code == 0xF712); // MAITAIKHU - } - - TBool IsThaiDepVowelBelow(TUint code) - { - return (code >= 0x0E38 && code <= 0x0E3A); - } - - TBool IsThaiIndepVowel(TUint code) - { - return (code == 0x0E30 || // SARA A - code == 0x0E32 || // SARA AA - code == 0x0E33 || // SARA AM - (code >= 0x0E40 && code <= 0x0E44)); - } - - TBool IsThaiToneMark(TUint code) - { - return (code >= 0x0E48 && code <= 0x0E4B); - } - } - - -// -// -// ThaiCharRules Namespace definition -// -// - - -/** - ThaiCharRules namespace holds the data and lookup methods - implementing the WTT 2.0 input/output validation matrix. -@internalComponent -*/ -namespace ThaiCharRules - { - const TUint KThaiCodePageStart = 0x0E00; - const TUint KThaiCodePageEnd = 0x0E5C; - const TUint KNumThaiCharacters = KThaiCodePageEnd-KThaiCodePageStart; - - enum Wtt2Rule - { - EUndefined, - EAccept, - EComposite, - EReject, - ERejectStrict, - }; - - /** - This enumeration holds the set of classification values a Thai - character can be categorised as in the WTT2.0 specification. - */ - enum CharClassification - { - ENull, - EControl, - ENonPrintable, - EConsonant, - ELeadingVowel, - EOrdinaryFollowingVowel, - EDependentFollowingVowel, - ESpecialFollowingVowel, - EShortBelowVowel, - ELongBelowVowel, - EBelowDiacritic, - EToneMark, - EAboveDiacritic0, - EAboveDiacritic1, - EAboveDiacritic2, - EAboveDiacritic3, - EAboveVowel1, - EAboveVowel2, - EAboveVowel3, - // marker for end - EMaxClassification - }; - - - /** - Data table holding the classification of each character. - */ - static const TUint8 iCharClassifications[KNumThaiCharacters] = - { - ENull, // No entry in code page - EConsonant, // 0x0E01 - EConsonant, // 0x0E02 - EConsonant, // 0x0E03 - EConsonant, // 0x0E04 - EConsonant, // 0x0E05 - EConsonant, // 0x0E06 - EConsonant, // 0x0E07 - EConsonant, // 0x0E08 - EConsonant, // 0x0E09 - EConsonant, // 0x0E0A - EConsonant, // 0x0E0B - EConsonant, // 0x0E0C - EConsonant, // 0x0E0D - EConsonant, // 0x0E0E - EConsonant, // 0x0E0F - - EConsonant, // 0x0E10 - EConsonant, // 0x0E11 - EConsonant, // 0x0E12 - EConsonant, // 0x0E13 - EConsonant, // 0x0E14 - EConsonant, // 0x0E15 - EConsonant, // 0x0E16 - EConsonant, // 0x0E17 - EConsonant, // 0x0E18 - EConsonant, // 0x0E19 - EConsonant, // 0x0E1A - EConsonant, // 0x0E1B - EConsonant, // 0x0E1C - EConsonant, // 0x0E1D - EConsonant, // 0x0E1E - EConsonant, // 0x0E1F - - EConsonant, // 0x0E20 - EConsonant, // 0x0E21 - EConsonant, // 0x0E22 - EConsonant, // 0x0E23 - EConsonant, // 0x0E24 - EConsonant, // 0x0E25 - EConsonant, // 0x0E26 - EConsonant, // 0x0E27 - EConsonant, // 0x0E28 - EConsonant, // 0x0E29 - EConsonant, // 0x0E2A - EConsonant, // 0x0E2B - EConsonant, // 0x0E2C - EConsonant, // 0x0E2D - EConsonant, // 0x0E2E - ENonPrintable, // 0x0E2F - - EOrdinaryFollowingVowel,// 0x0E30 - EAboveVowel2, // 0x0E31 - EOrdinaryFollowingVowel,// 0x0E32 - EOrdinaryFollowingVowel,// 0x0E33 - EAboveVowel1, // 0x0E34 - EAboveVowel3, // 0x0E35 - EAboveVowel2, // 0x0E36 - EAboveVowel3, // 0x0E37 - EShortBelowVowel, // 0x0E38 - ELongBelowVowel, // 0x0E39 - EBelowDiacritic, // 0x0E3A - ENull, // 0x0E3B - ENull, // 0x0E3C - ENull, // 0x0E3D - ENull, // 0x0E3E - ENonPrintable, // 0x0E3F - - ELeadingVowel, // 0x0E40 - ELeadingVowel, // 0x0E41 - ELeadingVowel, // 0x0E42 - ELeadingVowel, // 0x0E43 - ELeadingVowel, // 0x0E44 - EDependentFollowingVowel,//0x0E45 - ENonPrintable, // 0x0E46 - EAboveDiacritic2, // 0x0E47 - EToneMark, // 0x0E48 - EToneMark, // 0x0E49 - EToneMark, // 0x0E4A - EToneMark, // 0x0E4B - EAboveDiacritic1, // 0x0E4C - EAboveDiacritic0, // 0x0E4D - EAboveDiacritic3, // 0x0E4E - ENonPrintable, // 0x0E4F - - ENonPrintable, // 0x0E50 - ENonPrintable, // 0x0E51 - ENonPrintable, // 0x0E52 - ENonPrintable, // 0x0E53 - ENonPrintable, // 0x0E54 - ENonPrintable, // 0x0E55 - ENonPrintable, // 0x0E56 - ENonPrintable, // 0x0E57 - ENonPrintable, // 0x0E58 - ENonPrintable, // 0x0E59 - ENonPrintable, // 0x0E5A - ENonPrintable, // 0x0E5B - - // Value at last measurement was 92 bytes. 27/6/2003 - }; - - - /** - WTT 2.0 Rules data table of prev to next character - */ - static const TUint8 iInputRules[EMaxClassification][EMaxClassification] = - { - /* Previous character ENull */ - { - EUndefined, EUndefined, EUndefined, EUndefined, EUndefined, - EUndefined, EUndefined, EUndefined, EUndefined, EUndefined, - EUndefined, EUndefined, EUndefined, EUndefined, EUndefined, - EUndefined, EUndefined, EUndefined, EUndefined - }, - - /* Previous character EControl */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - EAccept, EAccept, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character ENonPrintable */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EConsonant */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - EAccept, ERejectStrict, EAccept, EComposite, EComposite, - EComposite, EComposite, EComposite, EComposite, EComposite, EComposite, - EComposite, EComposite, EComposite, - }, - - /* Previous character ELeadingVowel */ - { - EUndefined, EUndefined, ERejectStrict, EAccept, ERejectStrict, - ERejectStrict, ERejectStrict, ERejectStrict, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EOrdinaryFollowingVowel */ - { - EUndefined, EUndefined, ERejectStrict, EAccept, ERejectStrict, - EAccept, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EDependentFollowingVowel */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - EAccept, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character ESpecialFollowingVowel */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, EAccept, ERejectStrict, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EShortBelowVowel */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - EAccept, ERejectStrict, EAccept, EReject, EReject, - EReject, EComposite, EComposite, EComposite, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character ELongBelowVowel */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EComposite, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EBelowDiacritic */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EToneMark */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - EAccept, EAccept, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EAboveDiacritic0 */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EAboveDiacritic1 */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EAboveDiacritic2 */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EAboveDiacritic3 */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EReject, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EAboveVowel1 */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EComposite, EReject, EComposite, EReject, EReject, -// EReject, EComposite, EComposite, EComposite, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EAboveVowel2 */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EComposite, EReject, EReject, EReject, EReject, - EReject, EReject, EReject, - }, - - /* Previous character EAboveVowel3 */ - { - EUndefined, EUndefined, EAccept, EAccept, EAccept, - ERejectStrict, ERejectStrict, EAccept, EReject, EReject, - EReject, EComposite, EReject, EReject, EReject, EReject, -// EReject, EComposite, EReject, EComposite, EReject, - EReject, EReject, EReject, - }, - - // Value at last measurement was 324 bytes. 27/6/2003 - }; - - - /** - This routine looks up the WTT 2.0 rule for the given - Thai character codes provided in the WTT 2.0 data table. - @param aPrevChar - Unicode character code preceding the assumed position. - @param aChar - Unicode character code proceeding the assumed position. - @return Wtt2Rule - The rule value found in data table. - */ - Wtt2Rule LookupWtt2Rule(TUint aPrevChar, TUint aChar) - { - const CharClassification prevCharClassification = - static_cast<CharClassification>( - (aPrevChar > KThaiCodePageStart && aPrevChar < KThaiCodePageEnd) ? - iCharClassifications[aPrevChar - KThaiCodePageStart] : - ENonPrintable); - const CharClassification charClassification = - static_cast<CharClassification>( - (aChar > KThaiCodePageStart && aChar < KThaiCodePageEnd) ? - iCharClassifications[aChar - KThaiCodePageStart] : - ENonPrintable); - - return static_cast<Wtt2Rule> - (iInputRules[prevCharClassification][charClassification]); - } - - } - -using namespace ThaiCharRules; - - -// -// -// ThaiGlyphPUASubstitution Namespace definition -// -// - - -/** - This utility namespace holds the data and lookup mechanisms to support - the GlyphSelector_Thai glyph selection class in choosing Private User - Area (PUA) Thai character positional variant glyphs. Use of the PUA glyphs - results in a satisfactory rendition of Thai writing in Symbian OS. -@internalComponent -*/ -namespace ThaiGlyphPUASubstitution - { - - typedef TBool (*UnicodeCharValidator)(const TGlyphSelectionState& aGss); - - struct PUASubstTableEntry - { - TUint iOrigGlyph; - TUint iPUAGlyph; - UnicodeCharValidator iRuleFunc; - }; - - - /** - ThaiGlyphPUASubstitution rule method which checks the context for - short consonant preceding char OR - short consonant & dependent vowel below preceding char. - @param aGss - Container object holds the glyph selection context for the method. - @return TBool - ETrue when the rule context is satisfied, EFalse if not. - */ - TBool RuleShortConsonant(const TGlyphSelectionState& aGss) - { - if (aGss.iParam.iOutputGlyphs == 1) { - //check the context for short consonant preceding char - TUint consonantGss = aGss.iParam.iOutput[0].iCode; - if (ThaiGlyph::IsThaiShortConsonant(consonantGss) || - consonantGss == ThaiGlyph::KYoYingPua || - consonantGss == ThaiGlyph::KThoThanPua) - return ETrue; - else - return EFalse; - } - if (aGss.iParam.iOutputGlyphs == 2) { - //check the context for short consonant & dependent vowel below preceding char - TUint consonantGss = aGss.iParam.iOutput[0].iCode; - TUint depVowelGss = aGss.iParam.iOutput[1].iCode; - if ((ThaiGlyph::IsThaiShortConsonant(consonantGss) || - consonantGss == ThaiGlyph::KYoYingPua || - consonantGss == ThaiGlyph::KThoThanPua) && - (ThaiGlyph::IsThaiDepVowelBelow(depVowelGss) || - (depVowelGss >= 0xF718 && - depVowelGss <= 0xF71A))) - return ETrue; - else - return EFalse; - } - return EFalse; - } - - /** - ThaiGlyphPUASubstitution rule method which checks the context for - tall consonant preceding char. - @param aGss - Container object holds the glyph selection context for the method. - @return TBool - ETrue when the rule context is satisfied, EFalse if not. - */ - TBool RuleTallConsonant(const TGlyphSelectionState& aGss) - { - if ((aGss.iParam.iOutputGlyphs == 1) && - ThaiGlyph::IsThaiTallConsonant(aGss.iParam.iOutput[0].iCode)) - return ETrue; - else - return EFalse; - } - - /** - ThaiGlyphPUASubstitution rule method which checks the context for a tall - consonant which does not have a dependent vowel above or a nikhahit or a - following sara am. - @param aGss - Container object holds the glyph selection context for the method. - @return TBool - ETrue when the rule context is satisfied, EFalse if not. - */ - TBool RuleTallConsonantNoVowelAbove(const TGlyphSelectionState& aGss) - { - if (aGss.iParam.iOutputGlyphs == 0) - return EFalse; - if (!ThaiGlyph::IsThaiTallConsonant(aGss.iParam.iOutput[0].iCode)) - return EFalse; - if (aGss.iParam.iOutputGlyphs == 1) - return ETrue; - if (aGss.iParam.iOutputGlyphs != 2) - return EFalse; - TUint wantDepVowel = aGss.iParam.iOutput[1].iCode; - if (ThaiGlyph::IsThaiDepVowelAbove(wantDepVowel) - || ThaiGlyph::IsThaiDepVowelAbovePUA(wantDepVowel) - || wantDepVowel == ThaiGlyph::KNikhahit - || wantDepVowel == ThaiGlyph::KNikhahitPua) - return EFalse; - return ETrue; - } - - /** - ThaiGlyphPUASubstitution rule method which checks the context for tall - consonant with either a dependent vowel above or nikhahit. - @param aGss - Container object holds the glyph selection context for the method. - @return TBool - ETrue when the rule context is satisfied, EFalse if not. - */ - TBool RuleTallConsonantVowelAbove(const TGlyphSelectionState& aGss) - { - if ((aGss.iParam.iOutputGlyphs == 2) && - ThaiGlyph::IsThaiTallConsonant(aGss.iParam.iOutput[0].iCode) && - (ThaiGlyph::IsThaiDepVowelAbovePUA(aGss.iParam.iOutput[1].iCode)) - || aGss.iParam.iOutput[1].iCode == ThaiGlyph::KNikhahitPua) - return ETrue; - else - return EFalse; - } - - /** - ThaiGlyphPUASubstitution rule method which checks the context for - consonant with joined descender preceding char. - @param aGss - Container object holds the glyph selection context for the method. - @return TBool - ETrue when the rule context is satisfied, EFalse if not. - */ - TBool RuleConsonantWithJointDescender(const TGlyphSelectionState& aGss) - { - if ((aGss.iParam.iOutputGlyphs == 1) && - ThaiGlyph::IsThaiConsonantWithJointDescender(aGss.iParam.iOutput[0].iCode)) - return ETrue; - else - return EFalse; - } - - - const PUASubstTableEntry RuleTable[] = { - /** - This data member of the ThaiGlyphPUASubstitution class holds rules - on when a given PUA glyph should be substituted for the original - 0x0Exx glyph. Table lookup returns the first match found from the - start of the table, therefore duplicate match situations must be - avoided in the rule set logic. - */ - /* iOrigGlyph, iPUAGlyph, iRuleFunc */ - - // Substitutions for a tone or sign mark above a short consonant - { 0x0E48, 0xF70A, RuleShortConsonant }, - { 0x0E49, 0xF70B, RuleShortConsonant }, - { 0x0E4A, 0xF70C, RuleShortConsonant }, - { 0x0E4B, 0xF70D, RuleShortConsonant }, - { 0x0E4C, 0xF70E, RuleShortConsonant }, - - // Substitutions for a vowel or sign mark above a tall consonant - { 0x0E34, 0xF701, RuleTallConsonant }, - { 0x0E35, 0xF702, RuleTallConsonant }, - { 0x0E36, 0xF703, RuleTallConsonant }, - { 0x0E37, 0xF704, RuleTallConsonant }, - { 0x0E31, 0xF710, RuleTallConsonant }, - { 0x0E4D, 0xF711, RuleTallConsonant }, - { 0x0E47, 0xF712, RuleTallConsonant }, - - // Substitutions for a tone or sign mark above a tall consonant - { 0x0E48, 0xF705, RuleTallConsonantNoVowelAbove }, - { 0x0E49, 0xF706, RuleTallConsonantNoVowelAbove }, - { 0x0E4A, 0xF707, RuleTallConsonantNoVowelAbove }, - { 0x0E4B, 0xF708, RuleTallConsonantNoVowelAbove }, - { 0x0E4C, 0xF709, RuleTallConsonantNoVowelAbove }, - - // Substitutions for a tone or sign mark above a vowel which is - // above a tall consonant - { 0x0E48, 0xF713, RuleTallConsonantVowelAbove }, - { 0x0E49, 0xF714, RuleTallConsonantVowelAbove }, - { 0x0E4A, 0xF715, RuleTallConsonantVowelAbove }, - { 0x0E4B, 0xF716, RuleTallConsonantVowelAbove }, - { 0x0E4C, 0xF717, RuleTallConsonantVowelAbove }, - - // Substitutions for a vowel or sign mark below a consonant with a - // joined descender - { 0x0E38, 0xF718, RuleConsonantWithJointDescender }, - { 0x0E39, 0xF719, RuleConsonantWithJointDescender }, - { 0x0E3A, 0xF71A, RuleConsonantWithJointDescender }, - - { 0, 0, 0} - - // Size of table at last measurement was 312 bytes. 27/6/2003 - }; - - - /** - This is the lookup method to determine if the current character being - processed needs to be substituted for a glyph in the PUA area given the - supplied context. It scans the rule table and returns when it finds it's - first match. Therefore duplicate match situations must be avoided in - the rule set logic. - @param aCode - On input it is the character to lookup, on exit it is either unchanged - or a code in the PUA 0xF700..0xF71A. - @param aGss - Container object holds the glyph selection context for the method. - @return TBool - ETrue when a match is found and aCode has changed, EFalse otherwise. - */ - TBool Lookup(TUint& aCode, const TGlyphSelectionState& aGss) - { - const PUASubstTableEntry* tablePtr = RuleTable; - while (tablePtr->iOrigGlyph) - { - if ((aCode == tablePtr->iOrigGlyph) && tablePtr->iRuleFunc(aGss)) - { - aCode = tablePtr->iPUAGlyph; - return ETrue; // Rule match, substitute glyph code - } - tablePtr++; - } - return EFalse; // No match in table - } - } - - -// -// -// GlyphSelector_Thai Class definition -// -// - - -/** - This is the default glyph processing method for the Thai characters in the - range 0x0E00..0x0E7F and is invoked from the Glyph selection algorithm in - CFont::GetCharacterPosition() method. It is capable of processing base - Thai characters as well as Thai combining vowels, signs a tone marks. -@param aGss - Container object holds the input/output parameters of the method. -@return TBool - ETrue when glyph cluster updated successfully, EFalse on error condition. -@see - The method GlyphSelector_Thai::Process() also handles it for other cases. -*/ -TBool GlyphSelector_Thai::Process(TGlyphSelectionState& aGss, RShapeInfo&) - { - // Get the Unicode character codes we need to process the current - // glyph and increment the iterator onto th next character. - TUint prevCode = (aGss.iText.LengthToStart() > 0) ? aGss.iText.Get(-1) : 0xFFFF; - TUint code = aGss.iText.GetThenNext(); // Inc to next char - TUint nextCode = !aGss.iText.AtEnd() ? aGss.iText.Get(0) : 0xFFFF; - - // Is it a Thai base char or a mark (combining) char? - if ((aGss.iCats & 0xF0) == TChar::EMarkGroup) - { - - // Thai character is combining mark but first check to see if it - // follows a Thai base character before processing it. - if ((aGss.iParam.iOutputGlyphs > 0) && - !ThaiGlyph::IsThaiGlyph(prevCode)) - { - (void) aGss.iText.Prev(); - aGss.iClusterState = TGlyphSelectionState::EGClusterComplete; - return ETrue; - } - - // Missing base glyph? Insert a dotted circle glyph if true. - if (aGss.iParam.iOutputGlyphs == 0) - { - if (!aGss.AppendGlyphToCluster(KUnicodeDottedCircle)) - return EFalse; - aGss.iParam.iPen += aGss.iAdvance; - } - - // Test if SARA AM follows this current Thai mark, since it is - // a SPECIAL CASE. If present we need NIKHAHIT glyph before this - // current Thai mark char. - if (nextCode == ThaiGlyph::KSaraAm && - (aGss.iParam.iOutputGlyphs == 1) && ThaiGlyph::IsThaiToneMark(code)) - { - TUint nikhahit = ThaiGlyph::KNikhahit; - // Check and do PUA glyph substitution on Nikhahit - ThaiGlyphPUASubstitution::Lookup(nikhahit, aGss); - - if (!aGss.AppendGlyphToCluster(nikhahit)) - return EFalse; - - // Check and do PUA glyph substitution on combining mark - ThaiGlyphPUASubstitution::Lookup(code, aGss); - - // Append the curernt Thai Mark to the output stack of glyphs. - if (!aGss.AppendGlyphToCluster(code)) - return EFalse; - - // We now need to add SARA AA glyph after the current Thai mark char. - aGss.iAdvance.iWidth = aGss.iAdvance.iHeight = 0; - if (!aGss.AppendGlyphToCluster(ThaiGlyph::KSaraAa)) - return EFalse; - - // Skip the following SARA AM character since we've added - // its glyphs to it's previous character's glyph cluster. - // As we've added a base char to the end of the glyph cluster - // make sure the pen is moved on by the caller. - (void) aGss.iText.Next(); - aGss.iPen = TGlyphSelectionState::EPenAdvance_Yes; - } - else - { - // Check and do PUA glyph substitution on combining mark - ThaiGlyphPUASubstitution::Lookup(code, aGss); - - // Append the curernt Thai Mark to the output stack of glyphs. - if (!aGss.AppendGlyphToCluster(code)) - return EFalse; - - aGss.iPen = TGlyphSelectionState::EPenAdvance_No; - } - } - else - - { - // Thai character is an independent consonant, digit or sign - - // Handle disjoint descender consonants followed by below vowel. - // In these two cases we substitute consonant with PUA - // consonant that the descender removed. Check code not last one. - if (code == ThaiGlyph::KYoYing && nextCode != 0xffff && - ThaiGlyph::IsThaiDepVowelBelow(nextCode)) - code = ThaiGlyph::KYoYingPua; - else if (code == ThaiGlyph::KThoThan && nextCode != 0xffff && - ThaiGlyph::IsThaiDepVowelBelow(nextCode)) - code = ThaiGlyph::KThoThanPua; - - // Append the glyph details for the Thai character onto the output - // stack of glyphs. - if (!aGss.AppendGlyphToCluster(code)) - return EFalse; - - // Make sure the caller advances the pen for a base char! - aGss.iPen = TGlyphSelectionState::EPenAdvance_Yes; - } - - // Lookup in rule table to determine if the current glyph and cluster is - // now complete? - if (ThaiCharRules::LookupWtt2Rule(aGss.iCodePt, nextCode) == ThaiCharRules::EComposite) - aGss.iClusterState = TGlyphSelectionState::EGClusterNotComplete; - else - aGss.iClusterState = TGlyphSelectionState::EGClusterComplete; - - return ETrue; - } - - -// -// -// GlyphSelector_ThaiSaraAm Class definition -// -// - - -/** - This is the glyph processing method for the Thai SARA AM (U+0E33) character - which is handled as a special case since it is decomposed into two glyphs - - the combining NIKHAHIT mark & SARA AA following vowel in some cases. - It is invoked from the Glyph selection algorithm in - CFont::GetCharacterPosition() method for all cases where SARA AM is not - following a tone mark and thus be a glyph cluster of its own. -@param aGss - Container object holds the input/output parameters of the method. -@return TBool - ETrue when glyph cluster updated successfully, EFalse on error condition. -@see - The method GlyphSelector_Thai::Process() also handles it for other cases. -*/ -TBool GlyphSelector_ThaiSaraAm::Process(TGlyphSelectionState& aGss, RShapeInfo&) - { - if (aGss.iCodePt != ThaiGlyph::KSaraAm) //could have got here via - { //FindLocalisedProcessFunc in font.cpp - RShapeInfo dummy; - return GlyphSelector_Thai::Process(aGss, dummy); - } - - // Pen advance accumulator local variable - TSize compoundAdvance; - - if (aGss.iText.LengthToStart() == 0) - { - // If at the start of a line then render it with a preceding - // dotted circle as this is invalid positioning for SARA AM. - - if (!aGss.AppendGlyphToCluster(KUnicodeDottedCircle)) - return EFalse; - aGss.iParam.iPen += aGss.iAdvance; - - aGss.iAdvance.iWidth = aGss.iAdvance.iHeight = 0; - if (!aGss.AppendGlyphToCluster(ThaiGlyph::KSaraAm)) - return EFalse; - compoundAdvance += aGss.iAdvance; - } - else - { - // Normal condition - text iterator now some way into the text line - // being processed. - - TUint prevChar = aGss.iText.Get(-1); - if (ThaiGlyph::IsThaiShortConsonant(prevChar)) - { - // SARA AM is following normal height consonant so we can output - // non-decomposed SARA AM glyph. - - if (!aGss.AppendGlyphToCluster(ThaiGlyph::KSaraAm)) - return EFalse; - compoundAdvance = aGss.iAdvance; - } - else if (ThaiGlyph::IsThaiTallConsonant(prevChar)) - { - // SARA AM is following tall consonant so we output decomposed - // version of SARA AM but with NIKHAHIT taken from the PUA. - - if (!aGss.AppendGlyphToCluster(ThaiGlyph::KNikhahitPua)) - return EFalse; - compoundAdvance = aGss.iAdvance; - aGss.iAdvance.iWidth = aGss.iAdvance.iHeight = 0; - if (!aGss.AppendGlyphToCluster(ThaiGlyph::KSaraAa)) - return EFalse; - compoundAdvance += aGss.iAdvance; - } - else - { - // SARA AM is a following vowel but is not following a valid - // consonant char and so default is to render with dotted circle. - if (!aGss.AppendGlyphToCluster(KUnicodeDottedCircle)) - return EFalse; - aGss.iParam.iPen += aGss.iAdvance; - - aGss.iAdvance.iWidth = aGss.iAdvance.iHeight = 0; - if (!aGss.AppendGlyphToCluster(ThaiGlyph::KSaraAm)) - return EFalse; - compoundAdvance += aGss.iAdvance; - } - - } - - // Update output parameters resulting from above processing. - // Move text iterator onto next character to process. - aGss.iText.Next(); - - // Advance pen just for the SARA AA char as advance for dotted - // circle is done above. - aGss.iAdvance = compoundAdvance; - aGss.iPen = TGlyphSelectionState::EPenAdvance_Yes; - - if (!aGss.iText.AtEnd() && - (ThaiCharRules::LookupWtt2Rule(aGss.iCodePt, aGss.iText.Get()) == - ThaiCharRules::EComposite)) - aGss.iClusterState = TGlyphSelectionState::EGClusterNotComplete; - else - aGss.iClusterState = TGlyphSelectionState::EGClusterComplete; - - return ETrue; - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/FontThai.h --- a/graphicsdeviceinterface/gdi/sgdi/FontThai.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __FONTTHAI_H__ -#define __FONTTHAI_H__ - - -#include "GlyphSel.h" - - -// -// -// GlyphSelector_Thai Class declaration -// -// - - -class GlyphSelector_Thai -/** - This is the default glyph selector class for Thai characters in the range - 0x0E00..0x0E7F. It is able to process Thai base characters and combining - marks to construct the necessary output glyph cluster. -@internalComponent -*/ - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -// -// -// GlyphSelector_ThaiSaraAm Class declaration -// -// - - -class GlyphSelector_ThaiSaraAm -/** - This is the glyph selector class for the decomposable Thai character - SARA AM (0x0E33). It is special because depending on the surrounding - text it may be rendered using 1, 2, or 3 (dotted circle) glyphs. -@internalComponent -*/ - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -#endif // __FONTTHAI_H__ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/GlyphSel.cpp --- a/graphicsdeviceinterface/gdi/sgdi/GlyphSel.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,593 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -/** - @file - @internalComponent -*/ - - -#include <gdi.h> -#include <openfont.h> -#include "GlyphSel.h" -#include "GDIPANIC.h" - - -static const TText16 KLatinGlyph_SoftHyphen = 0x00AD; - - -// -// -// TUtf32Iterator Class definition -// -// - - -TUint TUtf32Iterator::UTF16ToTChar(const TText16* a) -/** - This routine takes an encoded UTF16 byte array and decodes the - first character at the start of the array and returns it as a TChar. - If the char is "not a char" character 0xFFFF results. -@param a - UTF16 byte array to be decoded. -@param aPr - Position pointer 'a' derived from, incremented if surragote pairs decoded. -@return - The character value in UTF32 format or 0xFFFF it not a character. -*/ - { - // Is next char a surrogate? - if (0xD800 == (a[0] & 0xF800)) - { - // Is it a high surrogate in the range D800..DBFF? - if (0xD800 == (a[0] & 0xFC00)) - { - // Its a high surrogate, is the next char a low surrogate? - if (0xDC00 == (a[1] & 0xFC00)) - { - // It's a low surrogate - return ((a[0] - 0xd7f7) << 10) + a[1]; - } - else - return 0xFFFF; - } - else - return 0xFFFF; - } - else - return a[0]; - } - - -TUtf32Iterator::TUtf32Iterator(const TText16* aStart, const TText16* aEnd, TInt aStartingIndex) -/** - Construct iterator given UTF16 encoded byte array. -@param aStart - Start address of the array. -@param aEnd - Address of the byte just beyond the end of the array. -@param aStartingIndex - Optional UTF16 offset into the array to initialise the current position to. -@panic EGdiPanic_InvalidInputParam - Raised when array start if passed the array end. -*/ -: iStart(aStart), iCurrent(aStart+aStartingIndex), iEnd(aEnd), iChar(0xffff) - { - GDI_ASSERT_DEBUG(iStart < iEnd, EGdiPanic_InvalidInputParam); - - if (iCurrent > iEnd) - iCurrent = iEnd; - else if (iCurrent < iStart) - iCurrent = iStart; - else - { - // Sanatise array end checking for an unpaired surrogate value - // so that UTF16ToTChar() does not read off the end of the array. - if (0xD800 == (iEnd[-1] & 0xFC00)) - { - if (iCurrent == iEnd-1) - ++iCurrent; - else - --iEnd; - } - - // Setup initial position UTF32 character value - iChar = UTF16ToTChar(iCurrent); - } - } - - -TChar TUtf32Iterator::Next() -/** -Moves the iterator forward to the next valid UTF32 character value. -@return TChar The next character in the text towards the end. -@panic EGdiPanic_OutOfText -Raised when there is no next position to move to. -*/ - { - GDI_ASSERT_DEBUG(iCurrent < iEnd, EGdiPanic_OutOfText); - - iCurrent += (iChar > 0xffff) ? 2 : 1; - if (iCurrent < iEnd) - iChar = UTF16ToTChar(iCurrent); - else - iChar = 0xFFFF; - return iChar; - } - - -TChar TUtf32Iterator::Prev() -/** -Moves the iterator backwards to the next valid UTF32 character value. -@return TChar The prev character in the text towards the start. -@panic EGdiPanic_OutOfText Raised when there is no next position to move to. -*/ - { - GDI_ASSERT_DEBUG(iCurrent >= iStart, EGdiPanic_OutOfText); - - --iCurrent; - if (iCurrent >= iStart) - iChar = UTF16ToTChar(iCurrent); - else - iChar = 0xFFFF; - return iChar; - } - - -void TUtf32Iterator::SetPos(TInt aPos) -/** - Moves the iterator to the position specified by array start+offset. -@param aPos - UTF16 offset into the array to set the current position to. -@panic EGdiPanic_OutOfText - Raised when there is no next position to move to. -*/ - { - GDI_ASSERT_DEBUG(iStart+aPos <= iEnd, EGdiPanic_OutOfText); - GDI_ASSERT_DEBUG(iStart+aPos >= iStart, EGdiPanic_OutOfText); - - iCurrent = iStart+aPos; - iChar = UTF16ToTChar(iCurrent); - } - - -TUint TUtf32Iterator::Get(TInt offset) -/** - Returns the UTF32 char value at the offset specified. 0xFFFF may be returned - for unpaired surrogate and noncharacters. Does not change the current - position. -@param offset - UTF16 offset from current iterator position to get UTF32 char form. -@return TChar - UTF32 char value found at the iterator+offset, or 0xFFFF in error. -@panic EGdiPanic_OutOfText - Raised when offset found to be outside the bounds of the original text array. -*/ - { - GDI_ASSERT_DEBUG(iCurrent+offset >= iStart, EGdiPanic_OutOfText); - GDI_ASSERT_DEBUG(iCurrent+offset < iEnd, EGdiPanic_OutOfText); - - return UTF16ToTChar(iCurrent+offset); - } - - -TChar TUtf32Iterator::GetThenNext() -/** - Return the UTF32 value at the current position. -@return TChar - UTF32 value currently pointed to by iterator. -@panic EGdiPanic_EndOfText - Raised when current iterator position is not valid. -*/ - { - GDI_ASSERT_DEBUG(iCurrent < iEnd, EGdiPanic_OutOfText); - - TChar current(iChar); - iCurrent += (iChar > 0xffff) ? 2 : 1; - if (iCurrent < iEnd) - iChar = UTF16ToTChar(iCurrent); - else - iChar = 0xFFFF; - return current; - } - - -TChar TUtf32Iterator::GetThenPrev() -/** - Return the UTF32 value at the current position. -@return TChar - UTF32 value currently pointed to by iterator. -@panic EGdiPanic_EndOfText - Raised when current iterator position is not valid. -*/ - { - GDI_ASSERT_DEBUG(iCurrent >= iStart, EGdiPanic_OutOfText); - - TChar current(iChar); - --iCurrent; - if (iCurrent >= iStart) - iChar = UTF16ToTChar(iCurrent); - else - iChar = 0xFFFF; - return current; - } - - -TInt TUtf32Iterator::LengthToStart() const -/** - Returns the number of TText16 codes between the start point and its - current position. -@return TInt - Number of TText16 characters between array start and current iterator - position. -*/ - { - return iCurrent-iStart; - } - - -TInt TUtf32Iterator::LengthToEnd() const -/** - Returns the number of remaining TText16 codes still ahead of the - iterator. -@return TInt - Number of TText16 characters between array current iterator position - and the end of the array. -*/ - { - return iEnd - iCurrent; - } - -const TText16* TUtf32Iterator::CurrentPosition() const - { - return iCurrent; - } - -void TUtf32Iterator::SetCurrentPosition(const TText16* a) - { - iCurrent = a; - } - -// -// -// TGlyphSelectionState Class definition -// -// - - -/** - The Unicode Combining Class values recognised by the - GlyphSelUtils::CombineLastGlyphToBase method. -@internalComponent -*/ -enum TCombiningClass - { - EArabicFathatan = 27, - EArabicDammatan = 28, - EArabicKasratan = 29, - EArabicFatha = 30, - EArabicDamma = 31, - EArabicKasra = 32, - EArabicShadda = 33, - EArabicSukun = 34, - ECombineBelowLeftAttached = 200, - ECombineBelowAttached = 202, - ECombineBelowRightAttached = 204, - ECombineLeftAttached = 208, - ECombineRightAttached = 210, - ECombineAboveLeftAttached = 212, - ECombineAboveAttached = 214, - ECombineAboveRightAttached = 216, - ECombineBelowLeft = 218, - ECombineBelow = 220, - ECombineBelowRight = 222, - ECombineLeft = 224, - ECombineRight = 226, - ECombineAboveLeft = 228, - ECombineAbove = 230, - ECombineAboveRight = 232 - }; - - -/** - This method is called to attach (by adjusing its bounding box) the current end - glyph in the output array of iParam to the base glyph bounding box based on - the Unicode combining class of the character. -@param aGss - The general input/output glyph selection data for the routine. -@param aGss.iOutput - Input: Glyph cluster with last glyph an actual combining character. Output: - Bounding box of last glyph adjusted according to char combining class. -@param aFirstDiacritic - Which character in the output array to treat as the first diacritic of the - cluster. Usually 1, but can be more if the base class is a ligature. -*/ -void TGlyphSelectionState::CombineLastGlyphToBase(const TRect& aBase, TInt aFirstDiacritic) - { - // Get the bounds of all the base characters. - TRect base = aBase; - int last = iParam.iOutputGlyphs-1; - for (int i = aFirstDiacritic; i < last; i++) - base.BoundingRect(iParam.iOutput[i].iBounds); - - // Calculate the attachment points. - TRect& r = iParam.iOutput[last].iBounds; - int w = r.Width(); - int h = r.Height(); - int t = r.iTl.iY; - int l = r.iTl.iX; - int left = base.iTl.iX; - int center = base.iTl.iX + (base.Width() - w) / 2; - int right = base.iBr.iX - w; - int below = base.iBr.iY; - int above = base.iTl.iY - h; - int left_of = left - w; - int right_of = right + w; - int xGap = 1; - int yGap = iFont->HeightInPixels()/10; - - // Select attachment based on combining class. - switch (iCombCls) - { - case ECombineBelowLeftAttached: - t = below; - l = left; - break; - case ECombineBelowAttached: - t = below; - l = center; - break; - case ECombineBelowRightAttached: - t = below; - l = right; - break; - case ECombineLeftAttached: - l = left_of; - break; - case ECombineRightAttached: - l = right_of; - break; - case ECombineAboveLeftAttached: - t = above; - l = left; - break; - case ECombineAboveAttached: - t = above; - l = center; - break; - case ECombineAboveRightAttached: - t = above; - l = right; - break; - case ECombineBelowLeft: - t = below + yGap; - l = left; - break; - case ECombineBelow: - case EArabicKasratan: - case EArabicKasra: - t = below + yGap; - l = center; - break; - case ECombineBelowRight: - t = below + yGap; - l = right; - break; - case ECombineLeft: - l = left_of - xGap; - break; - case ECombineRight: - l = right_of + xGap; - break; - case ECombineAboveLeft: - t = above - yGap; - l = left; - break; - case ECombineAbove: - case EArabicFathatan: - case EArabicDammatan: - case EArabicFatha: - case EArabicDamma: - case EArabicShadda: - case EArabicSukun: - t = above - yGap; - l = center; - break; - case ECombineAboveRight: - t = above - yGap; - l = right; - break; - default: - l = center; - break; - } - - // Adjust the bounding box of the last glyph to fix position - // based on the characters combining class. For speed, do directly. - // r.SetRect(l,t,l + w,t + h); - r.iTl.iX = l; - r.iTl.iY = t; - r.iBr.iX = l+w; - r.iBr.iY = t+h; - } - - -TBool TGlyphSelectionState::AppendGlyphToCluster(TUint aCode) -/** - This common method is used by glyph selector classes to add a glyph to - the end of the aGss.iParam output field filling in all the glyph info - needed. -@param aCode - The Unicode character for which a glyph should be appended. -@param aGss - The general input/output glyph selection data for the routine. -@return TBool - ETrue when successful, EFalse when failure occurs e..g no char data, overflow -*/ - { - // Setup reference to next free glyph record we need to update. - GDI_ASSERT_DEBUG(iParam.iOutputGlyphs < CFont::TPositionParam::EMaxOutputGlyphs, - EGdiPanic_InvalidInputParam); - - CFont::TPositionParam::TOutput* output = iParam.iOutput+iParam.iOutputGlyphs; - - // Retrieve the glyph details from the Font. Essential to proceed, abort - // if not available. - TOpenFontCharMetrics metrics; - if (iFont->GetCharacterData(aCode, metrics, output->iBitmap, - output->iBitmapSize) == CFont::ENoCharacterData) - return EFalse; - - // Set code point of glyph in output record. - output->iCode = aCode; - - // Set the glyph's bounds in the output record and record pen advancement. - if (iParam.iDirection == CFont::EVertical) - { - metrics.GetVertBounds(output->iBounds); - iAdvance.iHeight = Max(iAdvance.iHeight, metrics.VertAdvance()); - } - else - { - metrics.GetHorizBounds(output->iBounds); - iAdvance.iWidth = Max(iAdvance.iWidth, metrics.HorizAdvance()); - } - - // Next adjust the glyph's bounding box to offset it from the pen - // position (origin of drawing). For speed increment attributes directly. - // output->iBounds.Move(aGss.iParam.iPen); - output->iBounds.iTl.iX += iParam.iPen.iX; - output->iBounds.iBr.iX += iParam.iPen.iX; - output->iBounds.iTl.iY += iParam.iPen.iY; - output->iBounds.iBr.iY += iParam.iPen.iY; - - // Before we exit with success, increment the glyph array counter. - // for the new glyph we've added here. - iParam.iOutputGlyphs++; - return ETrue; - } - - -// -// -// GlyphSelector_SoftHyphen Class definition -// -// - -TBool GlyphSelector_SoftHyphen::Process(TGlyphSelectionState& aGss, RShapeInfo&) -/** -@see GlyphSelUtils - See this class for the method description. -*/ - { - aGss.iText.Next(); - if (!aGss.iText.AtEnd()) - { - // Here we skip & don't output hyphen since its not at the end a line. - aGss.iPen = TGlyphSelectionState::EPenAdvance_No; - } - else - { - // If we reach here we must output hyphen. - if (!aGss.AppendGlyphToCluster(KLatinGlyph_SoftHyphen)) - return EFalse; - - aGss.iPen = TGlyphSelectionState::EPenAdvance_Yes; - } - - // Logic to determine if we are now at the end of the glyph cluster. - // Default logic, based on whether a combining mark follows or not. - aGss.iClusterState = - (!aGss.iText.AtEnd() && - ((aGss.iText.Get().GetCategory() & 0xF0) == TChar::EMarkGroup)) ? - TGlyphSelectionState::EGClusterNotComplete : TGlyphSelectionState::EGClusterComplete; - - return ETrue; - } - - -// -// -// GlyphSelector_Default Class definition -// -// - - -TBool GlyphSelector_Default::Process(TGlyphSelectionState& aGss, RShapeInfo&) -/** -@see GlyphSelUtils - See this class for the method description. -*/ - { - - // In this method we always output the glyph. - if (!aGss.AppendGlyphToCluster(aGss.iText.GetThenNext())) - return EFalse; - - // Adjust glyph's bounds further to position this character if it is a - // combining mark - if (aGss.IsCombiningClass()) - { - aGss.iPen = TGlyphSelectionState::EPenAdvance_No; - - TRect baseBounds(aGss.iParam.iOutput[0].iBounds); - // Get first character in this glyph cluster. In this default process function, the iCode should - // be Unicode Point Code. - TChar startChar = TChar(aGss.iParam.iOutput[0].iCode); - // Character index in the output array to treat as the first diacritic of the - // cluster. It will be used as first character for combine to. usually 1, but when - // the cluster starts with a combining mark, it should be set to 0. - TInt indexOfFirstCombining = 1; - TInt startCharCat = startChar.GetCategory() & 0xF0; - - // if the first character in this cluster is a combining mark or a graphically empty character, - // (such as a space Character0x0020), a fake bound, formed from the Ascent of the font, will be - // used for combining - if ((startCharCat == TChar::EMarkGroup) || baseBounds.Size() == TSize(0,0)) - { - // Determine the height of the combining glyph. - TInt glyphHeight = 0; - if (aGss.iParam.iOutputGlyphs == 1) - { - glyphHeight = aGss.iParam.iOutput[0].iBitmapSize.iHeight; - } - else - { - glyphHeight = aGss.iParam.iOutput[1].iBitmapSize.iHeight; - } - // Adjust Y values to a ficticious but reasonable range for it to combine to using the glyph height to adjust correctly below the font ascent. - baseBounds.iTl.iY = aGss.iParam.iPen.iY - aGss.iFont->AscentInPixels() + glyphHeight; //modest ascender - baseBounds.iBr.iY = aGss.iParam.iPen.iY; //No descender - } - - if (startCharCat == TChar::EMarkGroup) - indexOfFirstCombining = 0; - - aGss.CombineLastGlyphToBase(baseBounds, indexOfFirstCombining); - aGss.iGlyphPostCombine = TGlyphSelectionState::EGPostCombine_Yes; - } - else - aGss.iPen = TGlyphSelectionState::EPenAdvance_Yes; - - // Logic to determine if we are now at the end of the glyph cluster. - // Default logic, based on whether a combining mark follows or not. - aGss.iClusterState = - (!aGss.iText.AtEnd() && - ((aGss.iText.Get().GetCategory() & 0xF0) == TChar::EMarkGroup)) ? - TGlyphSelectionState::EGClusterNotComplete : TGlyphSelectionState::EGClusterComplete; - - return ETrue; - } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/GlyphSel.h --- a/graphicsdeviceinterface/gdi/sgdi/GlyphSel.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,292 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __GLYPHSEL_H__ -#define __GLYPHSEL_H__ - - -#include <e32std.h> -#include <gdi.h> -#include "ShapeInfo.h" - -/** -Forward declarations. -@internalComponent -*/ -void Panic(TGdiPanic aError); - -class TGlyphSelectionState; - - -/** - The Unicode char to use for glyph cluster without a base char -@internalComponent -*/ -#define KUnicodeDottedCircle 0x25CC - -// -// -// TUtf32Iterator Class declaration -// -// - -class TUtf32Iterator -/* - Converts UTF16 encoded array of bytes into UTF32 characters, - ignoring non-characters and unpaired surrogates and - combining paired surrogates. -@internalComponent -*/ - { -public: - TUtf32Iterator(const TText16* aStart, const TText16* aEnd, TInt aOffset=0); - - inline TBool AtEnd() const; - inline TBool BeforeStart() const; - TChar Next(); - TChar Prev(); - void SetPos(TInt aOffset); - inline TChar Get() const; - TUint Get(TInt offset); - TChar GetThenNext(); - TChar GetThenPrev(); - const TText16* CurrentPosition() const; - void SetCurrentPosition(const TText16*); - - TInt LengthToStart() const; - TInt LengthToEnd() const; - -private: - TUint UTF16ToTChar(const TText16* a); - -private: - /** Start address of the UTF16 array */ - const TText16* iStart; - /** Address of current position in array */ - const TText16* iCurrent; - /** Address of the first entry past the end of the array */ - const TText16* iEnd; - - /** UTF32 value of the character at the current iterator position */ - TChar iChar; - }; - - -// -// -// GlyphSelUtils Namespace declaration -// -// - - -namespace GlyphSelUtils -/** - This namespace holds a collection of useful common utility - functions used in glyph selection. These functions are intended to be - used by the glyph selector classes. -@internalComponent -*/ - { - inline TBool IsSurrogate(TText a) - { - return 0xD800 == (a & 0xF800); - } - - inline TBool IsHighSurrogate(TText a) - { - return 0xD800 == (a & 0xFC00); - } - - inline TBool IsLowSurrogate(TText a) - { - return 0xDC00 == (a & 0xFC00); - } - - inline TChar PairSurrogates(TText aHigh, TText aLow) - { - return ((aHigh - 0xd7f7) << 10) + aLow; - } - - inline TBool IsThaiCharacter(TUint code) - { - return ((code > 0x0E00 && code < 0x0E3B) || - (code > 0x0E3E && code < 0x0E5C)); - } - - } - - -// -// -// TGlyphSelectionState Class declaration -// -// - - -class TGlyphSelectionState -/** - This container class holds the data for glyph selection algorithm and is - used to pass this data around the algorithm methods. -@internalComponent -*/ - { -public: - enum TPenAdvance - /** - Enum used in glyph selection code indicating if a pen advance is needed following - the processing of the current glyph. - */ - { - EPenAdvance_No, - EPenAdvance_Yes, - }; - - enum TGlyphClusterStateOverride - /** - These enumeration values are used by the glyph selector classes to indicated - back to the glyph selection algorithm when they find a cluster complete. - */ - { - EGClusterComplete, - EGClusterNotComplete - }; - - enum TGlyphPostCombine - /** - These enumeration values are used by the glyph selector classes to decide whether - post combining is needed to combine the diacritic to the base character. - */ - { - EGPostCombine_No, - EGPostCombine_Yes - }; - - - TGlyphSelectionState(TUtf32Iterator& aIter, const CFont* aFont, CFont::TPositionParam& aParam) - : iCodePt(0xFFFF), iCodeChar(0xFFFF), iCombCls(-1), iCats(0), - iText(aIter), iFont(aFont), iParam(aParam), - iClusterState(EGClusterNotComplete), iPen(EPenAdvance_No), - iAdvance(), iLigaturePortionsRemaining(0), iGlyphPostCombine(EGPostCombine_No) { }; - - TBool IsCombiningClass() { return (iCats & 0xF0) == TChar::EMarkGroup; } - void CombineLastGlyphToBase(const TRect& aBase, TInt aFirstDiacritic); - - TBool AppendGlyphToCluster(TUint code); - -public: - /** The properties of the current character being processed */ - TUint iCodePt; - TChar iCodeChar; - TInt iCombCls; - TUint iCats; - - /** The Unicode iterator to the text processed */ - TUtf32Iterator& iText; - - /** The font to select glyphs from */ - const CFont* iFont; - - /** The in/out parameter data to the glyph selection code from outside */ - CFont::TPositionParam& iParam; - - /** Result from the glyph selector class as to whether it thinks the - cluster is complete or incomplete. - */ - TGlyphClusterStateOverride iClusterState; - - /** These hold the possible pen advance and if it should be applied */ - TPenAdvance iPen; - TSize iAdvance; - - /** Can be used in any way or not at all by the processing function. It is - set to 0 on intitialisation. Suggested use is to pass information about - which part of a ligature is currently having diacritics attatched to it. */ - TInt iLigaturePortionsRemaining; - /** Can be used in any way or not at all by the processing function. It is - not initialised. Suggested use is to record the position in the output - glyph array of the first diacritic on this portion of the ligature. */ - TInt iLigaturePortionFirstMark; - - /** - Result from the glyph selector class as to whether it needs to - combine the diacritic with the base character. - */ - TGlyphPostCombine iGlyphPostCombine; - }; - - -// -// -// GlyphSelector_SoftHyphen Class declaration -// -// - -class GlyphSelector_SoftHyphen -/** - This glyph selector class processes the Unicode soft hyphen U+00AD - character. - This is a discretionary hyphen, i.e. it is only rendered when required - and in Symbian OS that is when it is found at the end of a line. -@internalComponent -*/ - { -public: - - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -// -// -// GlyphSelector_Default Class declaration -// -// - -class GlyphSelector_Default -/** - This is the default glyph selector class which has the behaviour of outputting - all glyphs it is invoked to process. -@internalComponent -*/ - { -public: - - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -// -// TUtf32Iterator inline Function definitions. -// - - -inline TBool TUtf32Iterator::AtEnd() const - { - return iEnd == iCurrent; - } - -inline TBool TUtf32Iterator::BeforeStart() const - { - return iStart > iCurrent; - } - -inline TChar TUtf32Iterator::Get() const - { - __ASSERT_DEBUG(iCurrent >= iStart && iCurrent < iEnd, Panic(EGdiPanic_OutOfText)); - - return iChar; - } - -#endif // __GLYPHSEL_H__ diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/LineBreak-5.0.txt --- a/graphicsdeviceinterface/gdi/sgdi/LineBreak-5.0.txt Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18542 +0,0 @@ -# LineBreak-5.0.0.txt -# Date: 2006-05-23, 11:43:00 PST [KW] -# -# Line Break Properties -# -# This file is a normative contributory data file in the -# Unicode Character Database. -# It contains both normative and informative data. -# -# Copyright (c) 1991-2006 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# The format is two fields separated by a semicolon. -# Field 0: Unicode value -# Field 1: LineBreak property, consisting of one of the following values: -# Normative: -# "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW", -# "NL", "WJ", "JL", "JV", "JT", "H2", "H3" -# Informative: -# "XX", "OP", "CL", "QU", "NS", "EX", "SY", -# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY", -# "BB", "BA", "SA", "AI", "B2" -# - All code points, assigned and unassigned, that are not listed -# explicitly are given the value "XX". -# - Characters ranges are specified as for other property files in -# the Unicode Character Database. -# -# The Unicode name of each character is provided in a comment for help -# in identifying the characters. -# -# See UAX #14: Line Breaking Properties, for more information -# -# @missing: 0000..10FFFF; XX -0000;CM # <control> -0001;CM # <control> -0002;CM # <control> -0003;CM # <control> -0004;CM # <control> -0005;CM # <control> -0006;CM # <control> -0007;CM # <control> -0008;CM # <control> -0009;BA # <control> -000A;LF # <control> -000B;BK # <control> -000C;BK # <control> -000D;CR # <control> -000E;CM # <control> -000F;CM # <control> -0010;CM # <control> -0011;CM # <control> -0012;CM # <control> -0013;CM # <control> -0014;CM # <control> -0015;CM # <control> -0016;CM # <control> -0017;CM # <control> -0018;CM # <control> -0019;CM # <control> -001A;CM # <control> -001B;CM # <control> -001C;CM # <control> -001D;CM # <control> -001E;CM # <control> -001F;CM # <control> -0020;SP # SPACE -0021;EX # EXCLAMATION MARK -0022;QU # QUOTATION MARK -0023;AL # NUMBER SIGN -0024;PR # DOLLAR SIGN -0025;PO # PERCENT SIGN -0026;AL # AMPERSAND -0027;QU # APOSTROPHE -0028;OP # LEFT PARENTHESIS -0029;CL # RIGHT PARENTHESIS -002A;AL # ASTERISK -002B;PR # PLUS SIGN -002C;IS # COMMA -002D;HY # HYPHEN-MINUS -002E;IS # FULL STOP -002F;SY # SOLIDUS -0030;NU # DIGIT ZERO -0031;NU # DIGIT ONE -0032;NU # DIGIT TWO -0033;NU # DIGIT THREE -0034;NU # DIGIT FOUR -0035;NU # DIGIT FIVE -0036;NU # DIGIT SIX -0037;NU # DIGIT SEVEN -0038;NU # DIGIT EIGHT -0039;NU # DIGIT NINE -003A;IS # COLON -003B;IS # SEMICOLON -003C;AL # LESS-THAN SIGN -003D;AL # EQUALS SIGN -003E;AL # GREATER-THAN SIGN -003F;EX # QUESTION MARK -0040;AL # COMMERCIAL AT -0041;AL # LATIN CAPITAL LETTER A -0042;AL # LATIN CAPITAL LETTER B -0043;AL # LATIN CAPITAL LETTER C -0044;AL # LATIN CAPITAL LETTER D -0045;AL # LATIN CAPITAL LETTER E -0046;AL # LATIN CAPITAL LETTER F -0047;AL # LATIN CAPITAL LETTER G -0048;AL # LATIN CAPITAL LETTER H -0049;AL # LATIN CAPITAL LETTER I -004A;AL # LATIN CAPITAL LETTER J -004B;AL # LATIN CAPITAL LETTER K -004C;AL # LATIN CAPITAL LETTER L -004D;AL # LATIN CAPITAL LETTER M -004E;AL # LATIN CAPITAL LETTER N -004F;AL # LATIN CAPITAL LETTER O -0050;AL # LATIN CAPITAL LETTER P -0051;AL # LATIN CAPITAL LETTER Q -0052;AL # LATIN CAPITAL LETTER R -0053;AL # LATIN CAPITAL LETTER S -0054;AL # LATIN CAPITAL LETTER T -0055;AL # LATIN CAPITAL LETTER U -0056;AL # LATIN CAPITAL LETTER V -0057;AL # LATIN CAPITAL LETTER W -0058;AL # LATIN CAPITAL LETTER X -0059;AL # LATIN CAPITAL LETTER Y -005A;AL # LATIN CAPITAL LETTER Z -005B;OP # LEFT SQUARE BRACKET -005C;PR # REVERSE SOLIDUS -005D;CL # RIGHT SQUARE BRACKET -005E;AL # CIRCUMFLEX ACCENT -005F;AL # LOW LINE -0060;AL # GRAVE ACCENT -0061;AL # LATIN SMALL LETTER A -0062;AL # LATIN SMALL LETTER B -0063;AL # LATIN SMALL LETTER C -0064;AL # LATIN SMALL LETTER D -0065;AL # LATIN SMALL LETTER E -0066;AL # LATIN SMALL LETTER F -0067;AL # LATIN SMALL LETTER G -0068;AL # LATIN SMALL LETTER H -0069;AL # LATIN SMALL LETTER I -006A;AL # LATIN SMALL LETTER J -006B;AL # LATIN SMALL LETTER K -006C;AL # LATIN SMALL LETTER L -006D;AL # LATIN SMALL LETTER M -006E;AL # LATIN SMALL LETTER N -006F;AL # LATIN SMALL LETTER O -0070;AL # LATIN SMALL LETTER P -0071;AL # LATIN SMALL LETTER Q -0072;AL # LATIN SMALL LETTER R -0073;AL # LATIN SMALL LETTER S -0074;AL # LATIN SMALL LETTER T -0075;AL # LATIN SMALL LETTER U -0076;AL # LATIN SMALL LETTER V -0077;AL # LATIN SMALL LETTER W -0078;AL # LATIN SMALL LETTER X -0079;AL # LATIN SMALL LETTER Y -007A;AL # LATIN SMALL LETTER Z -007B;OP # LEFT CURLY BRACKET -007C;BA # VERTICAL LINE -007D;CL # RIGHT CURLY BRACKET -007E;AL # TILDE -007F;CM # <control> -0080;CM # <control> -0081;CM # <control> -0082;CM # <control> -0083;CM # <control> -0084;CM # <control> -0085;NL # <control> -0086;CM # <control> -0087;CM # <control> -0088;CM # <control> -0089;CM # <control> -008A;CM # <control> -008B;CM # <control> -008C;CM # <control> -008D;CM # <control> -008E;CM # <control> -008F;CM # <control> -0090;CM # <control> -0091;CM # <control> -0092;CM # <control> -0093;CM # <control> -0094;CM # <control> -0095;CM # <control> -0096;CM # <control> -0097;CM # <control> -0098;CM # <control> -0099;CM # <control> -009A;CM # <control> -009B;CM # <control> -009C;CM # <control> -009D;CM # <control> -009E;CM # <control> -009F;CM # <control> -00A0;GL # NO-BREAK SPACE -00A1;AI # INVERTED EXCLAMATION MARK -00A2;PO # CENT SIGN -00A3;PR # POUND SIGN -00A4;PR # CURRENCY SIGN -00A5;PR # YEN SIGN -00A6;AL # BROKEN BAR -00A7;AI # SECTION SIGN -00A8;AI # DIAERESIS -00A9;AL # COPYRIGHT SIGN -00AA;AI # FEMININE ORDINAL INDICATOR -00AB;QU # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC;AL # NOT SIGN -00AD;BA # SOFT HYPHEN -00AE;AL # REGISTERED SIGN -00AF;AL # MACRON -00B0;PO # DEGREE SIGN -00B1;PR # PLUS-MINUS SIGN -00B2;AI # SUPERSCRIPT TWO -00B3;AI # SUPERSCRIPT THREE -00B4;BB # ACUTE ACCENT -00B5;AL # MICRO SIGN -00B6;AI # PILCROW SIGN -00B7;AI # MIDDLE DOT -00B8;AI # CEDILLA -00B9;AI # SUPERSCRIPT ONE -00BA;AI # MASCULINE ORDINAL INDICATOR -00BB;QU # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BC;AI # VULGAR FRACTION ONE QUARTER -00BD;AI # VULGAR FRACTION ONE HALF -00BE;AI # VULGAR FRACTION THREE QUARTERS -00BF;AI # INVERTED QUESTION MARK -00C0;AL # LATIN CAPITAL LETTER A WITH GRAVE -00C1;AL # LATIN CAPITAL LETTER A WITH ACUTE -00C2;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -00C3;AL # LATIN CAPITAL LETTER A WITH TILDE -00C4;AL # LATIN CAPITAL LETTER A WITH DIAERESIS -00C5;AL # LATIN CAPITAL LETTER A WITH RING ABOVE -00C6;AL # LATIN CAPITAL LETTER AE -00C7;AL # LATIN CAPITAL LETTER C WITH CEDILLA -00C8;AL # LATIN CAPITAL LETTER E WITH GRAVE -00C9;AL # LATIN CAPITAL LETTER E WITH ACUTE -00CA;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -00CB;AL # LATIN CAPITAL LETTER E WITH DIAERESIS -00CC;AL # LATIN CAPITAL LETTER I WITH GRAVE -00CD;AL # LATIN CAPITAL LETTER I WITH ACUTE -00CE;AL # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00CF;AL # LATIN CAPITAL LETTER I WITH DIAERESIS -00D0;AL # LATIN CAPITAL LETTER ETH -00D1;AL # LATIN CAPITAL LETTER N WITH TILDE -00D2;AL # LATIN CAPITAL LETTER O WITH GRAVE -00D3;AL # LATIN CAPITAL LETTER O WITH ACUTE -00D4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -00D5;AL # LATIN CAPITAL LETTER O WITH TILDE -00D6;AL # LATIN CAPITAL LETTER O WITH DIAERESIS -00D7;AI # MULTIPLICATION SIGN -00D8;AL # LATIN CAPITAL LETTER O WITH STROKE -00D9;AL # LATIN CAPITAL LETTER U WITH GRAVE -00DA;AL # LATIN CAPITAL LETTER U WITH ACUTE -00DB;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX -00DC;AL # LATIN CAPITAL LETTER U WITH DIAERESIS -00DD;AL # LATIN CAPITAL LETTER Y WITH ACUTE -00DE;AL # LATIN CAPITAL LETTER THORN -00DF;AL # LATIN SMALL LETTER SHARP S -00E0;AL # LATIN SMALL LETTER A WITH GRAVE -00E1;AL # LATIN SMALL LETTER A WITH ACUTE -00E2;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX -00E3;AL # LATIN SMALL LETTER A WITH TILDE -00E4;AL # LATIN SMALL LETTER A WITH DIAERESIS -00E5;AL # LATIN SMALL LETTER A WITH RING ABOVE -00E6;AL # LATIN SMALL LETTER AE -00E7;AL # LATIN SMALL LETTER C WITH CEDILLA -00E8;AL # LATIN SMALL LETTER E WITH GRAVE -00E9;AL # LATIN SMALL LETTER E WITH ACUTE -00EA;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX -00EB;AL # LATIN SMALL LETTER E WITH DIAERESIS -00EC;AL # LATIN SMALL LETTER I WITH GRAVE -00ED;AL # LATIN SMALL LETTER I WITH ACUTE -00EE;AL # LATIN SMALL LETTER I WITH CIRCUMFLEX -00EF;AL # LATIN SMALL LETTER I WITH DIAERESIS -00F0;AL # LATIN SMALL LETTER ETH -00F1;AL # LATIN SMALL LETTER N WITH TILDE -00F2;AL # LATIN SMALL LETTER O WITH GRAVE -00F3;AL # LATIN SMALL LETTER O WITH ACUTE -00F4;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX -00F5;AL # LATIN SMALL LETTER O WITH TILDE -00F6;AL # LATIN SMALL LETTER O WITH DIAERESIS -00F7;AI # DIVISION SIGN -00F8;AL # LATIN SMALL LETTER O WITH STROKE -00F9;AL # LATIN SMALL LETTER U WITH GRAVE -00FA;AL # LATIN SMALL LETTER U WITH ACUTE -00FB;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX -00FC;AL # LATIN SMALL LETTER U WITH DIAERESIS -00FD;AL # LATIN SMALL LETTER Y WITH ACUTE -00FE;AL # LATIN SMALL LETTER THORN -00FF;AL # LATIN SMALL LETTER Y WITH DIAERESIS -0100;AL # LATIN CAPITAL LETTER A WITH MACRON -0101;AL # LATIN SMALL LETTER A WITH MACRON -0102;AL # LATIN CAPITAL LETTER A WITH BREVE -0103;AL # LATIN SMALL LETTER A WITH BREVE -0104;AL # LATIN CAPITAL LETTER A WITH OGONEK -0105;AL # LATIN SMALL LETTER A WITH OGONEK -0106;AL # LATIN CAPITAL LETTER C WITH ACUTE -0107;AL # LATIN SMALL LETTER C WITH ACUTE -0108;AL # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -0109;AL # LATIN SMALL LETTER C WITH CIRCUMFLEX -010A;AL # LATIN CAPITAL LETTER C WITH DOT ABOVE -010B;AL # LATIN SMALL LETTER C WITH DOT ABOVE -010C;AL # LATIN CAPITAL LETTER C WITH CARON -010D;AL # LATIN SMALL LETTER C WITH CARON -010E;AL # LATIN CAPITAL LETTER D WITH CARON -010F;AL # LATIN SMALL LETTER D WITH CARON -0110;AL # LATIN CAPITAL LETTER D WITH STROKE -0111;AL # LATIN SMALL LETTER D WITH STROKE -0112;AL # LATIN CAPITAL LETTER E WITH MACRON -0113;AL # LATIN SMALL LETTER E WITH MACRON -0114;AL # LATIN CAPITAL LETTER E WITH BREVE -0115;AL # LATIN SMALL LETTER E WITH BREVE -0116;AL # LATIN CAPITAL LETTER E WITH DOT ABOVE -0117;AL # LATIN SMALL LETTER E WITH DOT ABOVE -0118;AL # LATIN CAPITAL LETTER E WITH OGONEK -0119;AL # LATIN SMALL LETTER E WITH OGONEK -011A;AL # LATIN CAPITAL LETTER E WITH CARON -011B;AL # LATIN SMALL LETTER E WITH CARON -011C;AL # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -011D;AL # LATIN SMALL LETTER G WITH CIRCUMFLEX -011E;AL # LATIN CAPITAL LETTER G WITH BREVE -011F;AL # LATIN SMALL LETTER G WITH BREVE -0120;AL # LATIN CAPITAL LETTER G WITH DOT ABOVE -0121;AL # LATIN SMALL LETTER G WITH DOT ABOVE -0122;AL # LATIN CAPITAL LETTER G WITH CEDILLA -0123;AL # LATIN SMALL LETTER G WITH CEDILLA -0124;AL # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -0125;AL # LATIN SMALL LETTER H WITH CIRCUMFLEX -0126;AL # LATIN CAPITAL LETTER H WITH STROKE -0127;AL # LATIN SMALL LETTER H WITH STROKE -0128;AL # LATIN CAPITAL LETTER I WITH TILDE -0129;AL # LATIN SMALL LETTER I WITH TILDE -012A;AL # LATIN CAPITAL LETTER I WITH MACRON -012B;AL # LATIN SMALL LETTER I WITH MACRON -012C;AL # LATIN CAPITAL LETTER I WITH BREVE -012D;AL # LATIN SMALL LETTER I WITH BREVE -012E;AL # LATIN CAPITAL LETTER I WITH OGONEK -012F;AL # LATIN SMALL LETTER I WITH OGONEK -0130;AL # LATIN CAPITAL LETTER I WITH DOT ABOVE -0131;AL # LATIN SMALL LETTER DOTLESS I -0132;AL # LATIN CAPITAL LIGATURE IJ -0133;AL # LATIN SMALL LIGATURE IJ -0134;AL # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -0135;AL # LATIN SMALL LETTER J WITH CIRCUMFLEX -0136;AL # LATIN CAPITAL LETTER K WITH CEDILLA -0137;AL # LATIN SMALL LETTER K WITH CEDILLA -0138;AL # LATIN SMALL LETTER KRA -0139;AL # LATIN CAPITAL LETTER L WITH ACUTE -013A;AL # LATIN SMALL LETTER L WITH ACUTE -013B;AL # LATIN CAPITAL LETTER L WITH CEDILLA -013C;AL # LATIN SMALL LETTER L WITH CEDILLA -013D;AL # LATIN CAPITAL LETTER L WITH CARON -013E;AL # LATIN SMALL LETTER L WITH CARON -013F;AL # LATIN CAPITAL LETTER L WITH MIDDLE DOT -0140;AL # LATIN SMALL LETTER L WITH MIDDLE DOT -0141;AL # LATIN CAPITAL LETTER L WITH STROKE -0142;AL # LATIN SMALL LETTER L WITH STROKE -0143;AL # LATIN CAPITAL LETTER N WITH ACUTE -0144;AL # LATIN SMALL LETTER N WITH ACUTE -0145;AL # LATIN CAPITAL LETTER N WITH CEDILLA -0146;AL # LATIN SMALL LETTER N WITH CEDILLA -0147;AL # LATIN CAPITAL LETTER N WITH CARON -0148;AL # LATIN SMALL LETTER N WITH CARON -0149;AL # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -014A;AL # LATIN CAPITAL LETTER ENG -014B;AL # LATIN SMALL LETTER ENG -014C;AL # LATIN CAPITAL LETTER O WITH MACRON -014D;AL # LATIN SMALL LETTER O WITH MACRON -014E;AL # LATIN CAPITAL LETTER O WITH BREVE -014F;AL # LATIN SMALL LETTER O WITH BREVE -0150;AL # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0151;AL # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0152;AL # LATIN CAPITAL LIGATURE OE -0153;AL # LATIN SMALL LIGATURE OE -0154;AL # LATIN CAPITAL LETTER R WITH ACUTE -0155;AL # LATIN SMALL LETTER R WITH ACUTE -0156;AL # LATIN CAPITAL LETTER R WITH CEDILLA -0157;AL # LATIN SMALL LETTER R WITH CEDILLA -0158;AL # LATIN CAPITAL LETTER R WITH CARON -0159;AL # LATIN SMALL LETTER R WITH CARON -015A;AL # LATIN CAPITAL LETTER S WITH ACUTE -015B;AL # LATIN SMALL LETTER S WITH ACUTE -015C;AL # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -015D;AL # LATIN SMALL LETTER S WITH CIRCUMFLEX -015E;AL # LATIN CAPITAL LETTER S WITH CEDILLA -015F;AL # LATIN SMALL LETTER S WITH CEDILLA -0160;AL # LATIN CAPITAL LETTER S WITH CARON -0161;AL # LATIN SMALL LETTER S WITH CARON -0162;AL # LATIN CAPITAL LETTER T WITH CEDILLA -0163;AL # LATIN SMALL LETTER T WITH CEDILLA -0164;AL # LATIN CAPITAL LETTER T WITH CARON -0165;AL # LATIN SMALL LETTER T WITH CARON -0166;AL # LATIN CAPITAL LETTER T WITH STROKE -0167;AL # LATIN SMALL LETTER T WITH STROKE -0168;AL # LATIN CAPITAL LETTER U WITH TILDE -0169;AL # LATIN SMALL LETTER U WITH TILDE -016A;AL # LATIN CAPITAL LETTER U WITH MACRON -016B;AL # LATIN SMALL LETTER U WITH MACRON -016C;AL # LATIN CAPITAL LETTER U WITH BREVE -016D;AL # LATIN SMALL LETTER U WITH BREVE -016E;AL # LATIN CAPITAL LETTER U WITH RING ABOVE -016F;AL # LATIN SMALL LETTER U WITH RING ABOVE -0170;AL # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0171;AL # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0172;AL # LATIN CAPITAL LETTER U WITH OGONEK -0173;AL # LATIN SMALL LETTER U WITH OGONEK -0174;AL # LATIN CAPITAL LETTER W WITH CIRCUMFLEX -0175;AL # LATIN SMALL LETTER W WITH CIRCUMFLEX -0176;AL # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -0177;AL # LATIN SMALL LETTER Y WITH CIRCUMFLEX -0178;AL # LATIN CAPITAL LETTER Y WITH DIAERESIS -0179;AL # LATIN CAPITAL LETTER Z WITH ACUTE -017A;AL # LATIN SMALL LETTER Z WITH ACUTE -017B;AL # LATIN CAPITAL LETTER Z WITH DOT ABOVE -017C;AL # LATIN SMALL LETTER Z WITH DOT ABOVE -017D;AL # LATIN CAPITAL LETTER Z WITH CARON -017E;AL # LATIN SMALL LETTER Z WITH CARON -017F;AL # LATIN SMALL LETTER LONG S -0180;AL # LATIN SMALL LETTER B WITH STROKE -0181;AL # LATIN CAPITAL LETTER B WITH HOOK -0182;AL # LATIN CAPITAL LETTER B WITH TOPBAR -0183;AL # LATIN SMALL LETTER B WITH TOPBAR -0184;AL # LATIN CAPITAL LETTER TONE SIX -0185;AL # LATIN SMALL LETTER TONE SIX -0186;AL # LATIN CAPITAL LETTER OPEN O -0187;AL # LATIN CAPITAL LETTER C WITH HOOK -0188;AL # LATIN SMALL LETTER C WITH HOOK -0189;AL # LATIN CAPITAL LETTER AFRICAN D -018A;AL # LATIN CAPITAL LETTER D WITH HOOK -018B;AL # LATIN CAPITAL LETTER D WITH TOPBAR -018C;AL # LATIN SMALL LETTER D WITH TOPBAR -018D;AL # LATIN SMALL LETTER TURNED DELTA -018E;AL # LATIN CAPITAL LETTER REVERSED E -018F;AL # LATIN CAPITAL LETTER SCHWA -0190;AL # LATIN CAPITAL LETTER OPEN E -0191;AL # LATIN CAPITAL LETTER F WITH HOOK -0192;AL # LATIN SMALL LETTER F WITH HOOK -0193;AL # LATIN CAPITAL LETTER G WITH HOOK -0194;AL # LATIN CAPITAL LETTER GAMMA -0195;AL # LATIN SMALL LETTER HV -0196;AL # LATIN CAPITAL LETTER IOTA -0197;AL # LATIN CAPITAL LETTER I WITH STROKE -0198;AL # LATIN CAPITAL LETTER K WITH HOOK -0199;AL # LATIN SMALL LETTER K WITH HOOK -019A;AL # LATIN SMALL LETTER L WITH BAR -019B;AL # LATIN SMALL LETTER LAMBDA WITH STROKE -019C;AL # LATIN CAPITAL LETTER TURNED M -019D;AL # LATIN CAPITAL LETTER N WITH LEFT HOOK -019E;AL # LATIN SMALL LETTER N WITH LONG RIGHT LEG -019F;AL # LATIN CAPITAL LETTER O WITH MIDDLE TILDE -01A0;AL # LATIN CAPITAL LETTER O WITH HORN -01A1;AL # LATIN SMALL LETTER O WITH HORN -01A2;AL # LATIN CAPITAL LETTER OI -01A3;AL # LATIN SMALL LETTER OI -01A4;AL # LATIN CAPITAL LETTER P WITH HOOK -01A5;AL # LATIN SMALL LETTER P WITH HOOK -01A6;AL # LATIN LETTER YR -01A7;AL # LATIN CAPITAL LETTER TONE TWO -01A8;AL # LATIN SMALL LETTER TONE TWO -01A9;AL # LATIN CAPITAL LETTER ESH -01AA;AL # LATIN LETTER REVERSED ESH LOOP -01AB;AL # LATIN SMALL LETTER T WITH PALATAL HOOK -01AC;AL # LATIN CAPITAL LETTER T WITH HOOK -01AD;AL # LATIN SMALL LETTER T WITH HOOK -01AE;AL # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK -01AF;AL # LATIN CAPITAL LETTER U WITH HORN -01B0;AL # LATIN SMALL LETTER U WITH HORN -01B1;AL # LATIN CAPITAL LETTER UPSILON -01B2;AL # LATIN CAPITAL LETTER V WITH HOOK -01B3;AL # LATIN CAPITAL LETTER Y WITH HOOK -01B4;AL # LATIN SMALL LETTER Y WITH HOOK -01B5;AL # LATIN CAPITAL LETTER Z WITH STROKE -01B6;AL # LATIN SMALL LETTER Z WITH STROKE -01B7;AL # LATIN CAPITAL LETTER EZH -01B8;AL # LATIN CAPITAL LETTER EZH REVERSED -01B9;AL # LATIN SMALL LETTER EZH REVERSED -01BA;AL # LATIN SMALL LETTER EZH WITH TAIL -01BB;AL # LATIN LETTER TWO WITH STROKE -01BC;AL # LATIN CAPITAL LETTER TONE FIVE -01BD;AL # LATIN SMALL LETTER TONE FIVE -01BE;AL # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE -01BF;AL # LATIN LETTER WYNN -01C0;AL # LATIN LETTER DENTAL CLICK -01C1;AL # LATIN LETTER LATERAL CLICK -01C2;AL # LATIN LETTER ALVEOLAR CLICK -01C3;AL # LATIN LETTER RETROFLEX CLICK -01C4;AL # LATIN CAPITAL LETTER DZ WITH CARON -01C5;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON -01C6;AL # LATIN SMALL LETTER DZ WITH CARON -01C7;AL # LATIN CAPITAL LETTER LJ -01C8;AL # LATIN CAPITAL LETTER L WITH SMALL LETTER J -01C9;AL # LATIN SMALL LETTER LJ -01CA;AL # LATIN CAPITAL LETTER NJ -01CB;AL # LATIN CAPITAL LETTER N WITH SMALL LETTER J -01CC;AL # LATIN SMALL LETTER NJ -01CD;AL # LATIN CAPITAL LETTER A WITH CARON -01CE;AL # LATIN SMALL LETTER A WITH CARON -01CF;AL # LATIN CAPITAL LETTER I WITH CARON -01D0;AL # LATIN SMALL LETTER I WITH CARON -01D1;AL # LATIN CAPITAL LETTER O WITH CARON -01D2;AL # LATIN SMALL LETTER O WITH CARON -01D3;AL # LATIN CAPITAL LETTER U WITH CARON -01D4;AL # LATIN SMALL LETTER U WITH CARON -01D5;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01D6;AL # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D7;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D8;AL # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D9;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -01DA;AL # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01DB;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01DC;AL # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DD;AL # LATIN SMALL LETTER TURNED E -01DE;AL # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -01DF;AL # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01E0;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON -01E1;AL # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON -01E2;AL # LATIN CAPITAL LETTER AE WITH MACRON -01E3;AL # LATIN SMALL LETTER AE WITH MACRON -01E4;AL # LATIN CAPITAL LETTER G WITH STROKE -01E5;AL # LATIN SMALL LETTER G WITH STROKE -01E6;AL # LATIN CAPITAL LETTER G WITH CARON -01E7;AL # LATIN SMALL LETTER G WITH CARON -01E8;AL # LATIN CAPITAL LETTER K WITH CARON -01E9;AL # LATIN SMALL LETTER K WITH CARON -01EA;AL # LATIN CAPITAL LETTER O WITH OGONEK -01EB;AL # LATIN SMALL LETTER O WITH OGONEK -01EC;AL # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON -01ED;AL # LATIN SMALL LETTER O WITH OGONEK AND MACRON -01EE;AL # LATIN CAPITAL LETTER EZH WITH CARON -01EF;AL # LATIN SMALL LETTER EZH WITH CARON -01F0;AL # LATIN SMALL LETTER J WITH CARON -01F1;AL # LATIN CAPITAL LETTER DZ -01F2;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z -01F3;AL # LATIN SMALL LETTER DZ -01F4;AL # LATIN CAPITAL LETTER G WITH ACUTE -01F5;AL # LATIN SMALL LETTER G WITH ACUTE -01F6;AL # LATIN CAPITAL LETTER HWAIR -01F7;AL # LATIN CAPITAL LETTER WYNN -01F8;AL # LATIN CAPITAL LETTER N WITH GRAVE -01F9;AL # LATIN SMALL LETTER N WITH GRAVE -01FA;AL # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -01FB;AL # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FC;AL # LATIN CAPITAL LETTER AE WITH ACUTE -01FD;AL # LATIN SMALL LETTER AE WITH ACUTE -01FE;AL # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -01FF;AL # LATIN SMALL LETTER O WITH STROKE AND ACUTE -0200;AL # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE -0201;AL # LATIN SMALL LETTER A WITH DOUBLE GRAVE -0202;AL # LATIN CAPITAL LETTER A WITH INVERTED BREVE -0203;AL # LATIN SMALL LETTER A WITH INVERTED BREVE -0204;AL # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE -0205;AL # LATIN SMALL LETTER E WITH DOUBLE GRAVE -0206;AL # LATIN CAPITAL LETTER E WITH INVERTED BREVE -0207;AL # LATIN SMALL LETTER E WITH INVERTED BREVE -0208;AL # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE -0209;AL # LATIN SMALL LETTER I WITH DOUBLE GRAVE -020A;AL # LATIN CAPITAL LETTER I WITH INVERTED BREVE -020B;AL # LATIN SMALL LETTER I WITH INVERTED BREVE -020C;AL # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE -020D;AL # LATIN SMALL LETTER O WITH DOUBLE GRAVE -020E;AL # LATIN CAPITAL LETTER O WITH INVERTED BREVE -020F;AL # LATIN SMALL LETTER O WITH INVERTED BREVE -0210;AL # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE -0211;AL # LATIN SMALL LETTER R WITH DOUBLE GRAVE -0212;AL # LATIN CAPITAL LETTER R WITH INVERTED BREVE -0213;AL # LATIN SMALL LETTER R WITH INVERTED BREVE -0214;AL # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE -0215;AL # LATIN SMALL LETTER U WITH DOUBLE GRAVE -0216;AL # LATIN CAPITAL LETTER U WITH INVERTED BREVE -0217;AL # LATIN SMALL LETTER U WITH INVERTED BREVE -0218;AL # LATIN CAPITAL LETTER S WITH COMMA BELOW -0219;AL # LATIN SMALL LETTER S WITH COMMA BELOW -021A;AL # LATIN CAPITAL LETTER T WITH COMMA BELOW -021B;AL # LATIN SMALL LETTER T WITH COMMA BELOW -021C;AL # LATIN CAPITAL LETTER YOGH -021D;AL # LATIN SMALL LETTER YOGH -021E;AL # LATIN CAPITAL LETTER H WITH CARON -021F;AL # LATIN SMALL LETTER H WITH CARON -0220;AL # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG -0221;AL # LATIN SMALL LETTER D WITH CURL -0222;AL # LATIN CAPITAL LETTER OU -0223;AL # LATIN SMALL LETTER OU -0224;AL # LATIN CAPITAL LETTER Z WITH HOOK -0225;AL # LATIN SMALL LETTER Z WITH HOOK -0226;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE -0227;AL # LATIN SMALL LETTER A WITH DOT ABOVE -0228;AL # LATIN CAPITAL LETTER E WITH CEDILLA -0229;AL # LATIN SMALL LETTER E WITH CEDILLA -022A;AL # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -022B;AL # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022C;AL # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -022D;AL # LATIN SMALL LETTER O WITH TILDE AND MACRON -022E;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE -022F;AL # LATIN SMALL LETTER O WITH DOT ABOVE -0230;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON -0231;AL # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON -0232;AL # LATIN CAPITAL LETTER Y WITH MACRON -0233;AL # LATIN SMALL LETTER Y WITH MACRON -0234;AL # LATIN SMALL LETTER L WITH CURL -0235;AL # LATIN SMALL LETTER N WITH CURL -0236;AL # LATIN SMALL LETTER T WITH CURL -0237;AL # LATIN SMALL LETTER DOTLESS J -0238;AL # LATIN SMALL LETTER DB DIGRAPH -0239;AL # LATIN SMALL LETTER QP DIGRAPH -023A;AL # LATIN CAPITAL LETTER A WITH STROKE -023B;AL # LATIN CAPITAL LETTER C WITH STROKE -023C;AL # LATIN SMALL LETTER C WITH STROKE -023D;AL # LATIN CAPITAL LETTER L WITH BAR -023E;AL # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE -023F;AL # LATIN SMALL LETTER S WITH SWASH TAIL -0240;AL # LATIN SMALL LETTER Z WITH SWASH TAIL -0241;AL # LATIN CAPITAL LETTER GLOTTAL STOP -0242;AL # LATIN SMALL LETTER GLOTTAL STOP -0243;AL # LATIN CAPITAL LETTER B WITH STROKE -0244;AL # LATIN CAPITAL LETTER U BAR -0245;AL # LATIN CAPITAL LETTER TURNED V -0246;AL # LATIN CAPITAL LETTER E WITH STROKE -0247;AL # LATIN SMALL LETTER E WITH STROKE -0248;AL # LATIN CAPITAL LETTER J WITH STROKE -0249;AL # LATIN SMALL LETTER J WITH STROKE -024A;AL # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL -024B;AL # LATIN SMALL LETTER Q WITH HOOK TAIL -024C;AL # LATIN CAPITAL LETTER R WITH STROKE -024D;AL # LATIN SMALL LETTER R WITH STROKE -024E;AL # LATIN CAPITAL LETTER Y WITH STROKE -024F;AL # LATIN SMALL LETTER Y WITH STROKE -0250;AL # LATIN SMALL LETTER TURNED A -0251;AL # LATIN SMALL LETTER ALPHA -0252;AL # LATIN SMALL LETTER TURNED ALPHA -0253;AL # LATIN SMALL LETTER B WITH HOOK -0254;AL # LATIN SMALL LETTER OPEN O -0255;AL # LATIN SMALL LETTER C WITH CURL -0256;AL # LATIN SMALL LETTER D WITH TAIL -0257;AL # LATIN SMALL LETTER D WITH HOOK -0258;AL # LATIN SMALL LETTER REVERSED E -0259;AL # LATIN SMALL LETTER SCHWA -025A;AL # LATIN SMALL LETTER SCHWA WITH HOOK -025B;AL # LATIN SMALL LETTER OPEN E -025C;AL # LATIN SMALL LETTER REVERSED OPEN E -025D;AL # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK -025E;AL # LATIN SMALL LETTER CLOSED REVERSED OPEN E -025F;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE -0260;AL # LATIN SMALL LETTER G WITH HOOK -0261;AL # LATIN SMALL LETTER SCRIPT G -0262;AL # LATIN LETTER SMALL CAPITAL G -0263;AL # LATIN SMALL LETTER GAMMA -0264;AL # LATIN SMALL LETTER RAMS HORN -0265;AL # LATIN SMALL LETTER TURNED H -0266;AL # LATIN SMALL LETTER H WITH HOOK -0267;AL # LATIN SMALL LETTER HENG WITH HOOK -0268;AL # LATIN SMALL LETTER I WITH STROKE -0269;AL # LATIN SMALL LETTER IOTA -026A;AL # LATIN LETTER SMALL CAPITAL I -026B;AL # LATIN SMALL LETTER L WITH MIDDLE TILDE -026C;AL # LATIN SMALL LETTER L WITH BELT -026D;AL # LATIN SMALL LETTER L WITH RETROFLEX HOOK -026E;AL # LATIN SMALL LETTER LEZH -026F;AL # LATIN SMALL LETTER TURNED M -0270;AL # LATIN SMALL LETTER TURNED M WITH LONG LEG -0271;AL # LATIN SMALL LETTER M WITH HOOK -0272;AL # LATIN SMALL LETTER N WITH LEFT HOOK -0273;AL # LATIN SMALL LETTER N WITH RETROFLEX HOOK -0274;AL # LATIN LETTER SMALL CAPITAL N -0275;AL # LATIN SMALL LETTER BARRED O -0276;AL # LATIN LETTER SMALL CAPITAL OE -0277;AL # LATIN SMALL LETTER CLOSED OMEGA -0278;AL # LATIN SMALL LETTER PHI -0279;AL # LATIN SMALL LETTER TURNED R -027A;AL # LATIN SMALL LETTER TURNED R WITH LONG LEG -027B;AL # LATIN SMALL LETTER TURNED R WITH HOOK -027C;AL # LATIN SMALL LETTER R WITH LONG LEG -027D;AL # LATIN SMALL LETTER R WITH TAIL -027E;AL # LATIN SMALL LETTER R WITH FISHHOOK -027F;AL # LATIN SMALL LETTER REVERSED R WITH FISHHOOK -0280;AL # LATIN LETTER SMALL CAPITAL R -0281;AL # LATIN LETTER SMALL CAPITAL INVERTED R -0282;AL # LATIN SMALL LETTER S WITH HOOK -0283;AL # LATIN SMALL LETTER ESH -0284;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK -0285;AL # LATIN SMALL LETTER SQUAT REVERSED ESH -0286;AL # LATIN SMALL LETTER ESH WITH CURL -0287;AL # LATIN SMALL LETTER TURNED T -0288;AL # LATIN SMALL LETTER T WITH RETROFLEX HOOK -0289;AL # LATIN SMALL LETTER U BAR -028A;AL # LATIN SMALL LETTER UPSILON -028B;AL # LATIN SMALL LETTER V WITH HOOK -028C;AL # LATIN SMALL LETTER TURNED V -028D;AL # LATIN SMALL LETTER TURNED W -028E;AL # LATIN SMALL LETTER TURNED Y -028F;AL # LATIN LETTER SMALL CAPITAL Y -0290;AL # LATIN SMALL LETTER Z WITH RETROFLEX HOOK -0291;AL # LATIN SMALL LETTER Z WITH CURL -0292;AL # LATIN SMALL LETTER EZH -0293;AL # LATIN SMALL LETTER EZH WITH CURL -0294;AL # LATIN LETTER GLOTTAL STOP -0295;AL # LATIN LETTER PHARYNGEAL VOICED FRICATIVE -0296;AL # LATIN LETTER INVERTED GLOTTAL STOP -0297;AL # LATIN LETTER STRETCHED C -0298;AL # LATIN LETTER BILABIAL CLICK -0299;AL # LATIN LETTER SMALL CAPITAL B -029A;AL # LATIN SMALL LETTER CLOSED OPEN E -029B;AL # LATIN LETTER SMALL CAPITAL G WITH HOOK -029C;AL # LATIN LETTER SMALL CAPITAL H -029D;AL # LATIN SMALL LETTER J WITH CROSSED-TAIL -029E;AL # LATIN SMALL LETTER TURNED K -029F;AL # LATIN LETTER SMALL CAPITAL L -02A0;AL # LATIN SMALL LETTER Q WITH HOOK -02A1;AL # LATIN LETTER GLOTTAL STOP WITH STROKE -02A2;AL # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE -02A3;AL # LATIN SMALL LETTER DZ DIGRAPH -02A4;AL # LATIN SMALL LETTER DEZH DIGRAPH -02A5;AL # LATIN SMALL LETTER DZ DIGRAPH WITH CURL -02A6;AL # LATIN SMALL LETTER TS DIGRAPH -02A7;AL # LATIN SMALL LETTER TESH DIGRAPH -02A8;AL # LATIN SMALL LETTER TC DIGRAPH WITH CURL -02A9;AL # LATIN SMALL LETTER FENG DIGRAPH -02AA;AL # LATIN SMALL LETTER LS DIGRAPH -02AB;AL # LATIN SMALL LETTER LZ DIGRAPH -02AC;AL # LATIN LETTER BILABIAL PERCUSSIVE -02AD;AL # LATIN LETTER BIDENTAL PERCUSSIVE -02AE;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK -02AF;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -02B0;AL # MODIFIER LETTER SMALL H -02B1;AL # MODIFIER LETTER SMALL H WITH HOOK -02B2;AL # MODIFIER LETTER SMALL J -02B3;AL # MODIFIER LETTER SMALL R -02B4;AL # MODIFIER LETTER SMALL TURNED R -02B5;AL # MODIFIER LETTER SMALL TURNED R WITH HOOK -02B6;AL # MODIFIER LETTER SMALL CAPITAL INVERTED R -02B7;AL # MODIFIER LETTER SMALL W -02B8;AL # MODIFIER LETTER SMALL Y -02B9;AL # MODIFIER LETTER PRIME -02BA;AL # MODIFIER LETTER DOUBLE PRIME -02BB;AL # MODIFIER LETTER TURNED COMMA -02BC;AL # MODIFIER LETTER APOSTROPHE -02BD;AL # MODIFIER LETTER REVERSED COMMA -02BE;AL # MODIFIER LETTER RIGHT HALF RING -02BF;AL # MODIFIER LETTER LEFT HALF RING -02C0;AL # MODIFIER LETTER GLOTTAL STOP -02C1;AL # MODIFIER LETTER REVERSED GLOTTAL STOP -02C2;AL # MODIFIER LETTER LEFT ARROWHEAD -02C3;AL # MODIFIER LETTER RIGHT ARROWHEAD -02C4;AL # MODIFIER LETTER UP ARROWHEAD -02C5;AL # MODIFIER LETTER DOWN ARROWHEAD -02C6;AL # MODIFIER LETTER CIRCUMFLEX ACCENT -02C7;AI # CARON -02C8;BB # MODIFIER LETTER VERTICAL LINE -02C9;AI # MODIFIER LETTER MACRON -02CA;AI # MODIFIER LETTER ACUTE ACCENT -02CB;AI # MODIFIER LETTER GRAVE ACCENT -02CC;BB # MODIFIER LETTER LOW VERTICAL LINE -02CD;AI # MODIFIER LETTER LOW MACRON -02CE;AL # MODIFIER LETTER LOW GRAVE ACCENT -02CF;AL # MODIFIER LETTER LOW ACUTE ACCENT -02D0;AI # MODIFIER LETTER TRIANGULAR COLON -02D1;AL # MODIFIER LETTER HALF TRIANGULAR COLON -02D2;AL # MODIFIER LETTER CENTRED RIGHT HALF RING -02D3;AL # MODIFIER LETTER CENTRED LEFT HALF RING -02D4;AL # MODIFIER LETTER UP TACK -02D5;AL # MODIFIER LETTER DOWN TACK -02D6;AL # MODIFIER LETTER PLUS SIGN -02D7;AL # MODIFIER LETTER MINUS SIGN -02D8;AI # BREVE -02D9;AI # DOT ABOVE -02DA;AI # RING ABOVE -02DB;AI # OGONEK -02DC;AL # SMALL TILDE -02DD;AI # DOUBLE ACUTE ACCENT -02DE;AL # MODIFIER LETTER RHOTIC HOOK -02DF;AL # MODIFIER LETTER CROSS ACCENT -02E0;AL # MODIFIER LETTER SMALL GAMMA -02E1;AL # MODIFIER LETTER SMALL L -02E2;AL # MODIFIER LETTER SMALL S -02E3;AL # MODIFIER LETTER SMALL X -02E4;AL # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -02E5;AL # MODIFIER LETTER EXTRA-HIGH TONE BAR -02E6;AL # MODIFIER LETTER HIGH TONE BAR -02E7;AL # MODIFIER LETTER MID TONE BAR -02E8;AL # MODIFIER LETTER LOW TONE BAR -02E9;AL # MODIFIER LETTER EXTRA-LOW TONE BAR -02EA;AL # MODIFIER LETTER YIN DEPARTING TONE MARK -02EB;AL # MODIFIER LETTER YANG DEPARTING TONE MARK -02EC;AL # MODIFIER LETTER VOICING -02ED;AL # MODIFIER LETTER UNASPIRATED -02EE;AL # MODIFIER LETTER DOUBLE APOSTROPHE -02EF;AL # MODIFIER LETTER LOW DOWN ARROWHEAD -02F0;AL # MODIFIER LETTER LOW UP ARROWHEAD -02F1;AL # MODIFIER LETTER LOW LEFT ARROWHEAD -02F2;AL # MODIFIER LETTER LOW RIGHT ARROWHEAD -02F3;AL # MODIFIER LETTER LOW RING -02F4;AL # MODIFIER LETTER MIDDLE GRAVE ACCENT -02F5;AL # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT -02F6;AL # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT -02F7;AL # MODIFIER LETTER LOW TILDE -02F8;AL # MODIFIER LETTER RAISED COLON -02F9;AL # MODIFIER LETTER BEGIN HIGH TONE -02FA;AL # MODIFIER LETTER END HIGH TONE -02FB;AL # MODIFIER LETTER BEGIN LOW TONE -02FC;AL # MODIFIER LETTER END LOW TONE -02FD;AL # MODIFIER LETTER SHELF -02FE;AL # MODIFIER LETTER OPEN SHELF -02FF;AL # MODIFIER LETTER LOW LEFT ARROW -0300;CM # COMBINING GRAVE ACCENT -0301;CM # COMBINING ACUTE ACCENT -0302;CM # COMBINING CIRCUMFLEX ACCENT -0303;CM # COMBINING TILDE -0304;CM # COMBINING MACRON -0305;CM # COMBINING OVERLINE -0306;CM # COMBINING BREVE -0307;CM # COMBINING DOT ABOVE -0308;CM # COMBINING DIAERESIS -0309;CM # COMBINING HOOK ABOVE -030A;CM # COMBINING RING ABOVE -030B;CM # COMBINING DOUBLE ACUTE ACCENT -030C;CM # COMBINING CARON -030D;CM # COMBINING VERTICAL LINE ABOVE -030E;CM # COMBINING DOUBLE VERTICAL LINE ABOVE -030F;CM # COMBINING DOUBLE GRAVE ACCENT -0310;CM # COMBINING CANDRABINDU -0311;CM # COMBINING INVERTED BREVE -0312;CM # COMBINING TURNED COMMA ABOVE -0313;CM # COMBINING COMMA ABOVE -0314;CM # COMBINING REVERSED COMMA ABOVE -0315;CM # COMBINING COMMA ABOVE RIGHT -0316;CM # COMBINING GRAVE ACCENT BELOW -0317;CM # COMBINING ACUTE ACCENT BELOW -0318;CM # COMBINING LEFT TACK BELOW -0319;CM # COMBINING RIGHT TACK BELOW -031A;CM # COMBINING LEFT ANGLE ABOVE -031B;CM # COMBINING HORN -031C;CM # COMBINING LEFT HALF RING BELOW -031D;CM # COMBINING UP TACK BELOW -031E;CM # COMBINING DOWN TACK BELOW -031F;CM # COMBINING PLUS SIGN BELOW -0320;CM # COMBINING MINUS SIGN BELOW -0321;CM # COMBINING PALATALIZED HOOK BELOW -0322;CM # COMBINING RETROFLEX HOOK BELOW -0323;CM # COMBINING DOT BELOW -0324;CM # COMBINING DIAERESIS BELOW -0325;CM # COMBINING RING BELOW -0326;CM # COMBINING COMMA BELOW -0327;CM # COMBINING CEDILLA -0328;CM # COMBINING OGONEK -0329;CM # COMBINING VERTICAL LINE BELOW -032A;CM # COMBINING BRIDGE BELOW -032B;CM # COMBINING INVERTED DOUBLE ARCH BELOW -032C;CM # COMBINING CARON BELOW -032D;CM # COMBINING CIRCUMFLEX ACCENT BELOW -032E;CM # COMBINING BREVE BELOW -032F;CM # COMBINING INVERTED BREVE BELOW -0330;CM # COMBINING TILDE BELOW -0331;CM # COMBINING MACRON BELOW -0332;CM # COMBINING LOW LINE -0333;CM # COMBINING DOUBLE LOW LINE -0334;CM # COMBINING TILDE OVERLAY -0335;CM # COMBINING SHORT STROKE OVERLAY -0336;CM # COMBINING LONG STROKE OVERLAY -0337;CM # COMBINING SHORT SOLIDUS OVERLAY -0338;CM # COMBINING LONG SOLIDUS OVERLAY -0339;CM # COMBINING RIGHT HALF RING BELOW -033A;CM # COMBINING INVERTED BRIDGE BELOW -033B;CM # COMBINING SQUARE BELOW -033C;CM # COMBINING SEAGULL BELOW -033D;CM # COMBINING X ABOVE -033E;CM # COMBINING VERTICAL TILDE -033F;CM # COMBINING DOUBLE OVERLINE -0340;CM # COMBINING GRAVE TONE MARK -0341;CM # COMBINING ACUTE TONE MARK -0342;CM # COMBINING GREEK PERISPOMENI -0343;CM # COMBINING GREEK KORONIS -0344;CM # COMBINING GREEK DIALYTIKA TONOS -0345;CM # COMBINING GREEK YPOGEGRAMMENI -0346;CM # COMBINING BRIDGE ABOVE -0347;CM # COMBINING EQUALS SIGN BELOW -0348;CM # COMBINING DOUBLE VERTICAL LINE BELOW -0349;CM # COMBINING LEFT ANGLE BELOW -034A;CM # COMBINING NOT TILDE ABOVE -034B;CM # COMBINING HOMOTHETIC ABOVE -034C;CM # COMBINING ALMOST EQUAL TO ABOVE -034D;CM # COMBINING LEFT RIGHT ARROW BELOW -034E;CM # COMBINING UPWARDS ARROW BELOW -034F;GL # COMBINING GRAPHEME JOINER -0350;CM # COMBINING RIGHT ARROWHEAD ABOVE -0351;CM # COMBINING LEFT HALF RING ABOVE -0352;CM # COMBINING FERMATA -0353;CM # COMBINING X BELOW -0354;CM # COMBINING LEFT ARROWHEAD BELOW -0355;CM # COMBINING RIGHT ARROWHEAD BELOW -0356;CM # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW -0357;CM # COMBINING RIGHT HALF RING ABOVE -0358;CM # COMBINING DOT ABOVE RIGHT -0359;CM # COMBINING ASTERISK BELOW -035A;CM # COMBINING DOUBLE RING BELOW -035B;CM # COMBINING ZIGZAG ABOVE -035C;GL # COMBINING DOUBLE BREVE BELOW -035D;GL # COMBINING DOUBLE BREVE -035E;GL # COMBINING DOUBLE MACRON -035F;GL # COMBINING DOUBLE MACRON BELOW -0360;GL # COMBINING DOUBLE TILDE -0361;GL # COMBINING DOUBLE INVERTED BREVE -0362;GL # COMBINING DOUBLE RIGHTWARDS ARROW BELOW -0363;CM # COMBINING LATIN SMALL LETTER A -0364;CM # COMBINING LATIN SMALL LETTER E -0365;CM # COMBINING LATIN SMALL LETTER I -0366;CM # COMBINING LATIN SMALL LETTER O -0367;CM # COMBINING LATIN SMALL LETTER U -0368;CM # COMBINING LATIN SMALL LETTER C -0369;CM # COMBINING LATIN SMALL LETTER D -036A;CM # COMBINING LATIN SMALL LETTER H -036B;CM # COMBINING LATIN SMALL LETTER M -036C;CM # COMBINING LATIN SMALL LETTER R -036D;CM # COMBINING LATIN SMALL LETTER T -036E;CM # COMBINING LATIN SMALL LETTER V -036F;CM # COMBINING LATIN SMALL LETTER X -0374;AL # GREEK NUMERAL SIGN -0375;AL # GREEK LOWER NUMERAL SIGN -037A;AL # GREEK YPOGEGRAMMENI -037B;AL # GREEK SMALL REVERSED LUNATE SIGMA SYMBOL -037C;AL # GREEK SMALL DOTTED LUNATE SIGMA SYMBOL -037D;AL # GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL -037E;IS # GREEK QUESTION MARK -0384;AL # GREEK TONOS -0385;AL # GREEK DIALYTIKA TONOS -0386;AL # GREEK CAPITAL LETTER ALPHA WITH TONOS -0387;AL # GREEK ANO TELEIA -0388;AL # GREEK CAPITAL LETTER EPSILON WITH TONOS -0389;AL # GREEK CAPITAL LETTER ETA WITH TONOS -038A;AL # GREEK CAPITAL LETTER IOTA WITH TONOS -038C;AL # GREEK CAPITAL LETTER OMICRON WITH TONOS -038E;AL # GREEK CAPITAL LETTER UPSILON WITH TONOS -038F;AL # GREEK CAPITAL LETTER OMEGA WITH TONOS -0390;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -0391;AL # GREEK CAPITAL LETTER ALPHA -0392;AL # GREEK CAPITAL LETTER BETA -0393;AL # GREEK CAPITAL LETTER GAMMA -0394;AL # GREEK CAPITAL LETTER DELTA -0395;AL # GREEK CAPITAL LETTER EPSILON -0396;AL # GREEK CAPITAL LETTER ZETA -0397;AL # GREEK CAPITAL LETTER ETA -0398;AL # GREEK CAPITAL LETTER THETA -0399;AL # GREEK CAPITAL LETTER IOTA -039A;AL # GREEK CAPITAL LETTER KAPPA -039B;AL # GREEK CAPITAL LETTER LAMDA -039C;AL # GREEK CAPITAL LETTER MU -039D;AL # GREEK CAPITAL LETTER NU -039E;AL # GREEK CAPITAL LETTER XI -039F;AL # GREEK CAPITAL LETTER OMICRON -03A0;AL # GREEK CAPITAL LETTER PI -03A1;AL # GREEK CAPITAL LETTER RHO -03A3;AL # GREEK CAPITAL LETTER SIGMA -03A4;AL # GREEK CAPITAL LETTER TAU -03A5;AL # GREEK CAPITAL LETTER UPSILON -03A6;AL # GREEK CAPITAL LETTER PHI -03A7;AL # GREEK CAPITAL LETTER CHI -03A8;AL # GREEK CAPITAL LETTER PSI -03A9;AL # GREEK CAPITAL LETTER OMEGA -03AA;AL # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -03AB;AL # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -03AC;AL # GREEK SMALL LETTER ALPHA WITH TONOS -03AD;AL # GREEK SMALL LETTER EPSILON WITH TONOS -03AE;AL # GREEK SMALL LETTER ETA WITH TONOS -03AF;AL # GREEK SMALL LETTER IOTA WITH TONOS -03B0;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -03B1;AL # GREEK SMALL LETTER ALPHA -03B2;AL # GREEK SMALL LETTER BETA -03B3;AL # GREEK SMALL LETTER GAMMA -03B4;AL # GREEK SMALL LETTER DELTA -03B5;AL # GREEK SMALL LETTER EPSILON -03B6;AL # GREEK SMALL LETTER ZETA -03B7;AL # GREEK SMALL LETTER ETA -03B8;AL # GREEK SMALL LETTER THETA -03B9;AL # GREEK SMALL LETTER IOTA -03BA;AL # GREEK SMALL LETTER KAPPA -03BB;AL # GREEK SMALL LETTER LAMDA -03BC;AL # GREEK SMALL LETTER MU -03BD;AL # GREEK SMALL LETTER NU -03BE;AL # GREEK SMALL LETTER XI -03BF;AL # GREEK SMALL LETTER OMICRON -03C0;AL # GREEK SMALL LETTER PI -03C1;AL # GREEK SMALL LETTER RHO -03C2;AL # GREEK SMALL LETTER FINAL SIGMA -03C3;AL # GREEK SMALL LETTER SIGMA -03C4;AL # GREEK SMALL LETTER TAU -03C5;AL # GREEK SMALL LETTER UPSILON -03C6;AL # GREEK SMALL LETTER PHI -03C7;AL # GREEK SMALL LETTER CHI -03C8;AL # GREEK SMALL LETTER PSI -03C9;AL # GREEK SMALL LETTER OMEGA -03CA;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA -03CB;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA -03CC;AL # GREEK SMALL LETTER OMICRON WITH TONOS -03CD;AL # GREEK SMALL LETTER UPSILON WITH TONOS -03CE;AL # GREEK SMALL LETTER OMEGA WITH TONOS -03D0;AL # GREEK BETA SYMBOL -03D1;AL # GREEK THETA SYMBOL -03D2;AL # GREEK UPSILON WITH HOOK SYMBOL -03D3;AL # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL -03D4;AL # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL -03D5;AL # GREEK PHI SYMBOL -03D6;AL # GREEK PI SYMBOL -03D7;AL # GREEK KAI SYMBOL -03D8;AL # GREEK LETTER ARCHAIC KOPPA -03D9;AL # GREEK SMALL LETTER ARCHAIC KOPPA -03DA;AL # GREEK LETTER STIGMA -03DB;AL # GREEK SMALL LETTER STIGMA -03DC;AL # GREEK LETTER DIGAMMA -03DD;AL # GREEK SMALL LETTER DIGAMMA -03DE;AL # GREEK LETTER KOPPA -03DF;AL # GREEK SMALL LETTER KOPPA -03E0;AL # GREEK LETTER SAMPI -03E1;AL # GREEK SMALL LETTER SAMPI -03E2;AL # COPTIC CAPITAL LETTER SHEI -03E3;AL # COPTIC SMALL LETTER SHEI -03E4;AL # COPTIC CAPITAL LETTER FEI -03E5;AL # COPTIC SMALL LETTER FEI -03E6;AL # COPTIC CAPITAL LETTER KHEI -03E7;AL # COPTIC SMALL LETTER KHEI -03E8;AL # COPTIC CAPITAL LETTER HORI -03E9;AL # COPTIC SMALL LETTER HORI -03EA;AL # COPTIC CAPITAL LETTER GANGIA -03EB;AL # COPTIC SMALL LETTER GANGIA -03EC;AL # COPTIC CAPITAL LETTER SHIMA -03ED;AL # COPTIC SMALL LETTER SHIMA -03EE;AL # COPTIC CAPITAL LETTER DEI -03EF;AL # COPTIC SMALL LETTER DEI -03F0;AL # GREEK KAPPA SYMBOL -03F1;AL # GREEK RHO SYMBOL -03F2;AL # GREEK LUNATE SIGMA SYMBOL -03F3;AL # GREEK LETTER YOT -03F4;AL # GREEK CAPITAL THETA SYMBOL -03F5;AL # GREEK LUNATE EPSILON SYMBOL -03F6;AL # GREEK REVERSED LUNATE EPSILON SYMBOL -03F7;AL # GREEK CAPITAL LETTER SHO -03F8;AL # GREEK SMALL LETTER SHO -03F9;AL # GREEK CAPITAL LUNATE SIGMA SYMBOL -03FA;AL # GREEK CAPITAL LETTER SAN -03FB;AL # GREEK SMALL LETTER SAN -03FC;AL # GREEK RHO WITH STROKE SYMBOL -03FD;AL # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL -03FE;AL # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL -03FF;AL # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL -0400;AL # CYRILLIC CAPITAL LETTER IE WITH GRAVE -0401;AL # CYRILLIC CAPITAL LETTER IO -0402;AL # CYRILLIC CAPITAL LETTER DJE -0403;AL # CYRILLIC CAPITAL LETTER GJE -0404;AL # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0405;AL # CYRILLIC CAPITAL LETTER DZE -0406;AL # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0407;AL # CYRILLIC CAPITAL LETTER YI -0408;AL # CYRILLIC CAPITAL LETTER JE -0409;AL # CYRILLIC CAPITAL LETTER LJE -040A;AL # CYRILLIC CAPITAL LETTER NJE -040B;AL # CYRILLIC CAPITAL LETTER TSHE -040C;AL # CYRILLIC CAPITAL LETTER KJE -040D;AL # CYRILLIC CAPITAL LETTER I WITH GRAVE -040E;AL # CYRILLIC CAPITAL LETTER SHORT U -040F;AL # CYRILLIC CAPITAL LETTER DZHE -0410;AL # CYRILLIC CAPITAL LETTER A -0411;AL # CYRILLIC CAPITAL LETTER BE -0412;AL # CYRILLIC CAPITAL LETTER VE -0413;AL # CYRILLIC CAPITAL LETTER GHE -0414;AL # CYRILLIC CAPITAL LETTER DE -0415;AL # CYRILLIC CAPITAL LETTER IE -0416;AL # CYRILLIC CAPITAL LETTER ZHE -0417;AL # CYRILLIC CAPITAL LETTER ZE -0418;AL # CYRILLIC CAPITAL LETTER I -0419;AL # CYRILLIC CAPITAL LETTER SHORT I -041A;AL # CYRILLIC CAPITAL LETTER KA -041B;AL # CYRILLIC CAPITAL LETTER EL -041C;AL # CYRILLIC CAPITAL LETTER EM -041D;AL # CYRILLIC CAPITAL LETTER EN -041E;AL # CYRILLIC CAPITAL LETTER O -041F;AL # CYRILLIC CAPITAL LETTER PE -0420;AL # CYRILLIC CAPITAL LETTER ER -0421;AL # CYRILLIC CAPITAL LETTER ES -0422;AL # CYRILLIC CAPITAL LETTER TE -0423;AL # CYRILLIC CAPITAL LETTER U -0424;AL # CYRILLIC CAPITAL LETTER EF -0425;AL # CYRILLIC CAPITAL LETTER HA -0426;AL # CYRILLIC CAPITAL LETTER TSE -0427;AL # CYRILLIC CAPITAL LETTER CHE -0428;AL # CYRILLIC CAPITAL LETTER SHA -0429;AL # CYRILLIC CAPITAL LETTER SHCHA -042A;AL # CYRILLIC CAPITAL LETTER HARD SIGN -042B;AL # CYRILLIC CAPITAL LETTER YERU -042C;AL # CYRILLIC CAPITAL LETTER SOFT SIGN -042D;AL # CYRILLIC CAPITAL LETTER E -042E;AL # CYRILLIC CAPITAL LETTER YU -042F;AL # CYRILLIC CAPITAL LETTER YA -0430;AL # CYRILLIC SMALL LETTER A -0431;AL # CYRILLIC SMALL LETTER BE -0432;AL # CYRILLIC SMALL LETTER VE -0433;AL # CYRILLIC SMALL LETTER GHE -0434;AL # CYRILLIC SMALL LETTER DE -0435;AL # CYRILLIC SMALL LETTER IE -0436;AL # CYRILLIC SMALL LETTER ZHE -0437;AL # CYRILLIC SMALL LETTER ZE -0438;AL # CYRILLIC SMALL LETTER I -0439;AL # CYRILLIC SMALL LETTER SHORT I -043A;AL # CYRILLIC SMALL LETTER KA -043B;AL # CYRILLIC SMALL LETTER EL -043C;AL # CYRILLIC SMALL LETTER EM -043D;AL # CYRILLIC SMALL LETTER EN -043E;AL # CYRILLIC SMALL LETTER O -043F;AL # CYRILLIC SMALL LETTER PE -0440;AL # CYRILLIC SMALL LETTER ER -0441;AL # CYRILLIC SMALL LETTER ES -0442;AL # CYRILLIC SMALL LETTER TE -0443;AL # CYRILLIC SMALL LETTER U -0444;AL # CYRILLIC SMALL LETTER EF -0445;AL # CYRILLIC SMALL LETTER HA -0446;AL # CYRILLIC SMALL LETTER TSE -0447;AL # CYRILLIC SMALL LETTER CHE -0448;AL # CYRILLIC SMALL LETTER SHA -0449;AL # CYRILLIC SMALL LETTER SHCHA -044A;AL # CYRILLIC SMALL LETTER HARD SIGN -044B;AL # CYRILLIC SMALL LETTER YERU -044C;AL # CYRILLIC SMALL LETTER SOFT SIGN -044D;AL # CYRILLIC SMALL LETTER E -044E;AL # CYRILLIC SMALL LETTER YU -044F;AL # CYRILLIC SMALL LETTER YA -0450;AL # CYRILLIC SMALL LETTER IE WITH GRAVE -0451;AL # CYRILLIC SMALL LETTER IO -0452;AL # CYRILLIC SMALL LETTER DJE -0453;AL # CYRILLIC SMALL LETTER GJE -0454;AL # CYRILLIC SMALL LETTER UKRAINIAN IE -0455;AL # CYRILLIC SMALL LETTER DZE -0456;AL # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0457;AL # CYRILLIC SMALL LETTER YI -0458;AL # CYRILLIC SMALL LETTER JE -0459;AL # CYRILLIC SMALL LETTER LJE -045A;AL # CYRILLIC SMALL LETTER NJE -045B;AL # CYRILLIC SMALL LETTER TSHE -045C;AL # CYRILLIC SMALL LETTER KJE -045D;AL # CYRILLIC SMALL LETTER I WITH GRAVE -045E;AL # CYRILLIC SMALL LETTER SHORT U -045F;AL # CYRILLIC SMALL LETTER DZHE -0460;AL # CYRILLIC CAPITAL LETTER OMEGA -0461;AL # CYRILLIC SMALL LETTER OMEGA -0462;AL # CYRILLIC CAPITAL LETTER YAT -0463;AL # CYRILLIC SMALL LETTER YAT -0464;AL # CYRILLIC CAPITAL LETTER IOTIFIED E -0465;AL # CYRILLIC SMALL LETTER IOTIFIED E -0466;AL # CYRILLIC CAPITAL LETTER LITTLE YUS -0467;AL # CYRILLIC SMALL LETTER LITTLE YUS -0468;AL # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS -0469;AL # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS -046A;AL # CYRILLIC CAPITAL LETTER BIG YUS -046B;AL # CYRILLIC SMALL LETTER BIG YUS -046C;AL # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS -046D;AL # CYRILLIC SMALL LETTER IOTIFIED BIG YUS -046E;AL # CYRILLIC CAPITAL LETTER KSI -046F;AL # CYRILLIC SMALL LETTER KSI -0470;AL # CYRILLIC CAPITAL LETTER PSI -0471;AL # CYRILLIC SMALL LETTER PSI -0472;AL # CYRILLIC CAPITAL LETTER FITA -0473;AL # CYRILLIC SMALL LETTER FITA -0474;AL # CYRILLIC CAPITAL LETTER IZHITSA -0475;AL # CYRILLIC SMALL LETTER IZHITSA -0476;AL # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0477;AL # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0478;AL # CYRILLIC CAPITAL LETTER UK -0479;AL # CYRILLIC SMALL LETTER UK -047A;AL # CYRILLIC CAPITAL LETTER ROUND OMEGA -047B;AL # CYRILLIC SMALL LETTER ROUND OMEGA -047C;AL # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047D;AL # CYRILLIC SMALL LETTER OMEGA WITH TITLO -047E;AL # CYRILLIC CAPITAL LETTER OT -047F;AL # CYRILLIC SMALL LETTER OT -0480;AL # CYRILLIC CAPITAL LETTER KOPPA -0481;AL # CYRILLIC SMALL LETTER KOPPA -0482;AL # CYRILLIC THOUSANDS SIGN -0483;CM # COMBINING CYRILLIC TITLO -0484;CM # COMBINING CYRILLIC PALATALIZATION -0485;CM # COMBINING CYRILLIC DASIA PNEUMATA -0486;CM # COMBINING CYRILLIC PSILI PNEUMATA -0488;CM # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN -0489;CM # COMBINING CYRILLIC MILLIONS SIGN -048A;AL # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL -048B;AL # CYRILLIC SMALL LETTER SHORT I WITH TAIL -048C;AL # CYRILLIC CAPITAL LETTER SEMISOFT SIGN -048D;AL # CYRILLIC SMALL LETTER SEMISOFT SIGN -048E;AL # CYRILLIC CAPITAL LETTER ER WITH TICK -048F;AL # CYRILLIC SMALL LETTER ER WITH TICK -0490;AL # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0491;AL # CYRILLIC SMALL LETTER GHE WITH UPTURN -0492;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE -0493;AL # CYRILLIC SMALL LETTER GHE WITH STROKE -0494;AL # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK -0495;AL # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK -0496;AL # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER -0497;AL # CYRILLIC SMALL LETTER ZHE WITH DESCENDER -0498;AL # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER -0499;AL # CYRILLIC SMALL LETTER ZE WITH DESCENDER -049A;AL # CYRILLIC CAPITAL LETTER KA WITH DESCENDER -049B;AL # CYRILLIC SMALL LETTER KA WITH DESCENDER -049C;AL # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE -049D;AL # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE -049E;AL # CYRILLIC CAPITAL LETTER KA WITH STROKE -049F;AL # CYRILLIC SMALL LETTER KA WITH STROKE -04A0;AL # CYRILLIC CAPITAL LETTER BASHKIR KA -04A1;AL # CYRILLIC SMALL LETTER BASHKIR KA -04A2;AL # CYRILLIC CAPITAL LETTER EN WITH DESCENDER -04A3;AL # CYRILLIC SMALL LETTER EN WITH DESCENDER -04A4;AL # CYRILLIC CAPITAL LIGATURE EN GHE -04A5;AL # CYRILLIC SMALL LIGATURE EN GHE -04A6;AL # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK -04A7;AL # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK -04A8;AL # CYRILLIC CAPITAL LETTER ABKHASIAN HA -04A9;AL # CYRILLIC SMALL LETTER ABKHASIAN HA -04AA;AL # CYRILLIC CAPITAL LETTER ES WITH DESCENDER -04AB;AL # CYRILLIC SMALL LETTER ES WITH DESCENDER -04AC;AL # CYRILLIC CAPITAL LETTER TE WITH DESCENDER -04AD;AL # CYRILLIC SMALL LETTER TE WITH DESCENDER -04AE;AL # CYRILLIC CAPITAL LETTER STRAIGHT U -04AF;AL # CYRILLIC SMALL LETTER STRAIGHT U -04B0;AL # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE -04B1;AL # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE -04B2;AL # CYRILLIC CAPITAL LETTER HA WITH DESCENDER -04B3;AL # CYRILLIC SMALL LETTER HA WITH DESCENDER -04B4;AL # CYRILLIC CAPITAL LIGATURE TE TSE -04B5;AL # CYRILLIC SMALL LIGATURE TE TSE -04B6;AL # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER -04B7;AL # CYRILLIC SMALL LETTER CHE WITH DESCENDER -04B8;AL # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE -04B9;AL # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE -04BA;AL # CYRILLIC CAPITAL LETTER SHHA -04BB;AL # CYRILLIC SMALL LETTER SHHA -04BC;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BD;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE -04BE;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER -04BF;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER -04C0;AL # CYRILLIC LETTER PALOCHKA -04C1;AL # CYRILLIC CAPITAL LETTER ZHE WITH BREVE -04C2;AL # CYRILLIC SMALL LETTER ZHE WITH BREVE -04C3;AL # CYRILLIC CAPITAL LETTER KA WITH HOOK -04C4;AL # CYRILLIC SMALL LETTER KA WITH HOOK -04C5;AL # CYRILLIC CAPITAL LETTER EL WITH TAIL -04C6;AL # CYRILLIC SMALL LETTER EL WITH TAIL -04C7;AL # CYRILLIC CAPITAL LETTER EN WITH HOOK -04C8;AL # CYRILLIC SMALL LETTER EN WITH HOOK -04C9;AL # CYRILLIC CAPITAL LETTER EN WITH TAIL -04CA;AL # CYRILLIC SMALL LETTER EN WITH TAIL -04CB;AL # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE -04CC;AL # CYRILLIC SMALL LETTER KHAKASSIAN CHE -04CD;AL # CYRILLIC CAPITAL LETTER EM WITH TAIL -04CE;AL # CYRILLIC SMALL LETTER EM WITH TAIL -04CF;AL # CYRILLIC SMALL LETTER PALOCHKA -04D0;AL # CYRILLIC CAPITAL LETTER A WITH BREVE -04D1;AL # CYRILLIC SMALL LETTER A WITH BREVE -04D2;AL # CYRILLIC CAPITAL LETTER A WITH DIAERESIS -04D3;AL # CYRILLIC SMALL LETTER A WITH DIAERESIS -04D4;AL # CYRILLIC CAPITAL LIGATURE A IE -04D5;AL # CYRILLIC SMALL LIGATURE A IE -04D6;AL # CYRILLIC CAPITAL LETTER IE WITH BREVE -04D7;AL # CYRILLIC SMALL LETTER IE WITH BREVE -04D8;AL # CYRILLIC CAPITAL LETTER SCHWA -04D9;AL # CYRILLIC SMALL LETTER SCHWA -04DA;AL # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS -04DB;AL # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS -04DC;AL # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS -04DD;AL # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS -04DE;AL # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS -04DF;AL # CYRILLIC SMALL LETTER ZE WITH DIAERESIS -04E0;AL # CYRILLIC CAPITAL LETTER ABKHASIAN DZE -04E1;AL # CYRILLIC SMALL LETTER ABKHASIAN DZE -04E2;AL # CYRILLIC CAPITAL LETTER I WITH MACRON -04E3;AL # CYRILLIC SMALL LETTER I WITH MACRON -04E4;AL # CYRILLIC CAPITAL LETTER I WITH DIAERESIS -04E5;AL # CYRILLIC SMALL LETTER I WITH DIAERESIS -04E6;AL # CYRILLIC CAPITAL LETTER O WITH DIAERESIS -04E7;AL # CYRILLIC SMALL LETTER O WITH DIAERESIS -04E8;AL # CYRILLIC CAPITAL LETTER BARRED O -04E9;AL # CYRILLIC SMALL LETTER BARRED O -04EA;AL # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS -04EB;AL # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS -04EC;AL # CYRILLIC CAPITAL LETTER E WITH DIAERESIS -04ED;AL # CYRILLIC SMALL LETTER E WITH DIAERESIS -04EE;AL # CYRILLIC CAPITAL LETTER U WITH MACRON -04EF;AL # CYRILLIC SMALL LETTER U WITH MACRON -04F0;AL # CYRILLIC CAPITAL LETTER U WITH DIAERESIS -04F1;AL # CYRILLIC SMALL LETTER U WITH DIAERESIS -04F2;AL # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE -04F3;AL # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE -04F4;AL # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS -04F5;AL # CYRILLIC SMALL LETTER CHE WITH DIAERESIS -04F6;AL # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -04F7;AL # CYRILLIC SMALL LETTER GHE WITH DESCENDER -04F8;AL # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS -04F9;AL # CYRILLIC SMALL LETTER YERU WITH DIAERESIS -04FA;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK -04FB;AL # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK -04FC;AL # CYRILLIC CAPITAL LETTER HA WITH HOOK -04FD;AL # CYRILLIC SMALL LETTER HA WITH HOOK -04FE;AL # CYRILLIC CAPITAL LETTER HA WITH STROKE -04FF;AL # CYRILLIC SMALL LETTER HA WITH STROKE -0500;AL # CYRILLIC CAPITAL LETTER KOMI DE -0501;AL # CYRILLIC SMALL LETTER KOMI DE -0502;AL # CYRILLIC CAPITAL LETTER KOMI DJE -0503;AL # CYRILLIC SMALL LETTER KOMI DJE -0504;AL # CYRILLIC CAPITAL LETTER KOMI ZJE -0505;AL # CYRILLIC SMALL LETTER KOMI ZJE -0506;AL # CYRILLIC CAPITAL LETTER KOMI DZJE -0507;AL # CYRILLIC SMALL LETTER KOMI DZJE -0508;AL # CYRILLIC CAPITAL LETTER KOMI LJE -0509;AL # CYRILLIC SMALL LETTER KOMI LJE -050A;AL # CYRILLIC CAPITAL LETTER KOMI NJE -050B;AL # CYRILLIC SMALL LETTER KOMI NJE -050C;AL # CYRILLIC CAPITAL LETTER KOMI SJE -050D;AL # CYRILLIC SMALL LETTER KOMI SJE -050E;AL # CYRILLIC CAPITAL LETTER KOMI TJE -050F;AL # CYRILLIC SMALL LETTER KOMI TJE -0510;AL # CYRILLIC CAPITAL LETTER REVERSED ZE -0511;AL # CYRILLIC SMALL LETTER REVERSED ZE -0512;AL # CYRILLIC CAPITAL LETTER EL WITH HOOK -0513;AL # CYRILLIC SMALL LETTER EL WITH HOOK -0531;AL # ARMENIAN CAPITAL LETTER AYB -0532;AL # ARMENIAN CAPITAL LETTER BEN -0533;AL # ARMENIAN CAPITAL LETTER GIM -0534;AL # ARMENIAN CAPITAL LETTER DA -0535;AL # ARMENIAN CAPITAL LETTER ECH -0536;AL # ARMENIAN CAPITAL LETTER ZA -0537;AL # ARMENIAN CAPITAL LETTER EH -0538;AL # ARMENIAN CAPITAL LETTER ET -0539;AL # ARMENIAN CAPITAL LETTER TO -053A;AL # ARMENIAN CAPITAL LETTER ZHE -053B;AL # ARMENIAN CAPITAL LETTER INI -053C;AL # ARMENIAN CAPITAL LETTER LIWN -053D;AL # ARMENIAN CAPITAL LETTER XEH -053E;AL # ARMENIAN CAPITAL LETTER CA -053F;AL # ARMENIAN CAPITAL LETTER KEN -0540;AL # ARMENIAN CAPITAL LETTER HO -0541;AL # ARMENIAN CAPITAL LETTER JA -0542;AL # ARMENIAN CAPITAL LETTER GHAD -0543;AL # ARMENIAN CAPITAL LETTER CHEH -0544;AL # ARMENIAN CAPITAL LETTER MEN -0545;AL # ARMENIAN CAPITAL LETTER YI -0546;AL # ARMENIAN CAPITAL LETTER NOW -0547;AL # ARMENIAN CAPITAL LETTER SHA -0548;AL # ARMENIAN CAPITAL LETTER VO -0549;AL # ARMENIAN CAPITAL LETTER CHA -054A;AL # ARMENIAN CAPITAL LETTER PEH -054B;AL # ARMENIAN CAPITAL LETTER JHEH -054C;AL # ARMENIAN CAPITAL LETTER RA -054D;AL # ARMENIAN CAPITAL LETTER SEH -054E;AL # ARMENIAN CAPITAL LETTER VEW -054F;AL # ARMENIAN CAPITAL LETTER TIWN -0550;AL # ARMENIAN CAPITAL LETTER REH -0551;AL # ARMENIAN CAPITAL LETTER CO -0552;AL # ARMENIAN CAPITAL LETTER YIWN -0553;AL # ARMENIAN CAPITAL LETTER PIWR -0554;AL # ARMENIAN CAPITAL LETTER KEH -0555;AL # ARMENIAN CAPITAL LETTER OH -0556;AL # ARMENIAN CAPITAL LETTER FEH -0559;AL # ARMENIAN MODIFIER LETTER LEFT HALF RING -055A;AL # ARMENIAN APOSTROPHE -055B;AL # ARMENIAN EMPHASIS MARK -055C;AL # ARMENIAN EXCLAMATION MARK -055D;AL # ARMENIAN COMMA -055E;AL # ARMENIAN QUESTION MARK -055F;AL # ARMENIAN ABBREVIATION MARK -0561;AL # ARMENIAN SMALL LETTER AYB -0562;AL # ARMENIAN SMALL LETTER BEN -0563;AL # ARMENIAN SMALL LETTER GIM -0564;AL # ARMENIAN SMALL LETTER DA -0565;AL # ARMENIAN SMALL LETTER ECH -0566;AL # ARMENIAN SMALL LETTER ZA -0567;AL # ARMENIAN SMALL LETTER EH -0568;AL # ARMENIAN SMALL LETTER ET -0569;AL # ARMENIAN SMALL LETTER TO -056A;AL # ARMENIAN SMALL LETTER ZHE -056B;AL # ARMENIAN SMALL LETTER INI -056C;AL # ARMENIAN SMALL LETTER LIWN -056D;AL # ARMENIAN SMALL LETTER XEH -056E;AL # ARMENIAN SMALL LETTER CA -056F;AL # ARMENIAN SMALL LETTER KEN -0570;AL # ARMENIAN SMALL LETTER HO -0571;AL # ARMENIAN SMALL LETTER JA -0572;AL # ARMENIAN SMALL LETTER GHAD -0573;AL # ARMENIAN SMALL LETTER CHEH -0574;AL # ARMENIAN SMALL LETTER MEN -0575;AL # ARMENIAN SMALL LETTER YI -0576;AL # ARMENIAN SMALL LETTER NOW -0577;AL # ARMENIAN SMALL LETTER SHA -0578;AL # ARMENIAN SMALL LETTER VO -0579;AL # ARMENIAN SMALL LETTER CHA -057A;AL # ARMENIAN SMALL LETTER PEH -057B;AL # ARMENIAN SMALL LETTER JHEH -057C;AL # ARMENIAN SMALL LETTER RA -057D;AL # ARMENIAN SMALL LETTER SEH -057E;AL # ARMENIAN SMALL LETTER VEW -057F;AL # ARMENIAN SMALL LETTER TIWN -0580;AL # ARMENIAN SMALL LETTER REH -0581;AL # ARMENIAN SMALL LETTER CO -0582;AL # ARMENIAN SMALL LETTER YIWN -0583;AL # ARMENIAN SMALL LETTER PIWR -0584;AL # ARMENIAN SMALL LETTER KEH -0585;AL # ARMENIAN SMALL LETTER OH -0586;AL # ARMENIAN SMALL LETTER FEH -0587;AL # ARMENIAN SMALL LIGATURE ECH YIWN -0589;IS # ARMENIAN FULL STOP -058A;BA # ARMENIAN HYPHEN -0591;CM # HEBREW ACCENT ETNAHTA -0592;CM # HEBREW ACCENT SEGOL -0593;CM # HEBREW ACCENT SHALSHELET -0594;CM # HEBREW ACCENT ZAQEF QATAN -0595;CM # HEBREW ACCENT ZAQEF GADOL -0596;CM # HEBREW ACCENT TIPEHA -0597;CM # HEBREW ACCENT REVIA -0598;CM # HEBREW ACCENT ZARQA -0599;CM # HEBREW ACCENT PASHTA -059A;CM # HEBREW ACCENT YETIV -059B;CM # HEBREW ACCENT TEVIR -059C;CM # HEBREW ACCENT GERESH -059D;CM # HEBREW ACCENT GERESH MUQDAM -059E;CM # HEBREW ACCENT GERSHAYIM -059F;CM # HEBREW ACCENT QARNEY PARA -05A0;CM # HEBREW ACCENT TELISHA GEDOLA -05A1;CM # HEBREW ACCENT PAZER -05A2;CM # HEBREW ACCENT ATNAH HAFUKH -05A3;CM # HEBREW ACCENT MUNAH -05A4;CM # HEBREW ACCENT MAHAPAKH -05A5;CM # HEBREW ACCENT MERKHA -05A6;CM # HEBREW ACCENT MERKHA KEFULA -05A7;CM # HEBREW ACCENT DARGA -05A8;CM # HEBREW ACCENT QADMA -05A9;CM # HEBREW ACCENT TELISHA QETANA -05AA;CM # HEBREW ACCENT YERAH BEN YOMO -05AB;CM # HEBREW ACCENT OLE -05AC;CM # HEBREW ACCENT ILUY -05AD;CM # HEBREW ACCENT DEHI -05AE;CM # HEBREW ACCENT ZINOR -05AF;CM # HEBREW MARK MASORA CIRCLE -05B0;CM # HEBREW POINT SHEVA -05B1;CM # HEBREW POINT HATAF SEGOL -05B2;CM # HEBREW POINT HATAF PATAH -05B3;CM # HEBREW POINT HATAF QAMATS -05B4;CM # HEBREW POINT HIRIQ -05B5;CM # HEBREW POINT TSERE -05B6;CM # HEBREW POINT SEGOL -05B7;CM # HEBREW POINT PATAH -05B8;CM # HEBREW POINT QAMATS -05B9;CM # HEBREW POINT HOLAM -05BA;CM # HEBREW POINT HOLAM HASER FOR VAV -05BB;CM # HEBREW POINT QUBUTS -05BC;CM # HEBREW POINT DAGESH OR MAPIQ -05BD;CM # HEBREW POINT METEG -05BE;BA # HEBREW PUNCTUATION MAQAF -05BF;CM # HEBREW POINT RAFE -05C0;AL # HEBREW PUNCTUATION PASEQ -05C1;CM # HEBREW POINT SHIN DOT -05C2;CM # HEBREW POINT SIN DOT -05C3;AL # HEBREW PUNCTUATION SOF PASUQ -05C4;CM # HEBREW MARK UPPER DOT -05C5;CM # HEBREW MARK LOWER DOT -05C6;EX # HEBREW PUNCTUATION NUN HAFUKHA -05C7;CM # HEBREW POINT QAMATS QATAN -05D0;AL # HEBREW LETTER ALEF -05D1;AL # HEBREW LETTER BET -05D2;AL # HEBREW LETTER GIMEL -05D3;AL # HEBREW LETTER DALET -05D4;AL # HEBREW LETTER HE -05D5;AL # HEBREW LETTER VAV -05D6;AL # HEBREW LETTER ZAYIN -05D7;AL # HEBREW LETTER HET -05D8;AL # HEBREW LETTER TET -05D9;AL # HEBREW LETTER YOD -05DA;AL # HEBREW LETTER FINAL KAF -05DB;AL # HEBREW LETTER KAF -05DC;AL # HEBREW LETTER LAMED -05DD;AL # HEBREW LETTER FINAL MEM -05DE;AL # HEBREW LETTER MEM -05DF;AL # HEBREW LETTER FINAL NUN -05E0;AL # HEBREW LETTER NUN -05E1;AL # HEBREW LETTER SAMEKH -05E2;AL # HEBREW LETTER AYIN -05E3;AL # HEBREW LETTER FINAL PE -05E4;AL # HEBREW LETTER PE -05E5;AL # HEBREW LETTER FINAL TSADI -05E6;AL # HEBREW LETTER TSADI -05E7;AL # HEBREW LETTER QOF -05E8;AL # HEBREW LETTER RESH -05E9;AL # HEBREW LETTER SHIN -05EA;AL # HEBREW LETTER TAV -05F0;AL # HEBREW LIGATURE YIDDISH DOUBLE VAV -05F1;AL # HEBREW LIGATURE YIDDISH VAV YOD -05F2;AL # HEBREW LIGATURE YIDDISH DOUBLE YOD -05F3;AL # HEBREW PUNCTUATION GERESH -05F4;AL # HEBREW PUNCTUATION GERSHAYIM -0600;AL # ARABIC NUMBER SIGN -0601;AL # ARABIC SIGN SANAH -0602;AL # ARABIC FOOTNOTE MARKER -0603;AL # ARABIC SIGN SAFHA -060B;PO # AFGHANI SIGN -060C;EX # ARABIC COMMA -060D;IS # ARABIC DATE SEPARATOR -060E;AL # ARABIC POETIC VERSE SIGN -060F;AL # ARABIC SIGN MISRA -0610;CM # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM -0611;CM # ARABIC SIGN ALAYHE ASSALLAM -0612;CM # ARABIC SIGN RAHMATULLAH ALAYHE -0613;CM # ARABIC SIGN RADI ALLAHOU ANHU -0614;CM # ARABIC SIGN TAKHALLUS -0615;CM # ARABIC SMALL HIGH TAH -061B;EX # ARABIC SEMICOLON -061E;EX # ARABIC TRIPLE DOT PUNCTUATION MARK -061F;EX # ARABIC QUESTION MARK -0621;AL # ARABIC LETTER HAMZA -0622;AL # ARABIC LETTER ALEF WITH MADDA ABOVE -0623;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE -0624;AL # ARABIC LETTER WAW WITH HAMZA ABOVE -0625;AL # ARABIC LETTER ALEF WITH HAMZA BELOW -0626;AL # ARABIC LETTER YEH WITH HAMZA ABOVE -0627;AL # ARABIC LETTER ALEF -0628;AL # ARABIC LETTER BEH -0629;AL # ARABIC LETTER TEH MARBUTA -062A;AL # ARABIC LETTER TEH -062B;AL # ARABIC LETTER THEH -062C;AL # ARABIC LETTER JEEM -062D;AL # ARABIC LETTER HAH -062E;AL # ARABIC LETTER KHAH -062F;AL # ARABIC LETTER DAL -0630;AL # ARABIC LETTER THAL -0631;AL # ARABIC LETTER REH -0632;AL # ARABIC LETTER ZAIN -0633;AL # ARABIC LETTER SEEN -0634;AL # ARABIC LETTER SHEEN -0635;AL # ARABIC LETTER SAD -0636;AL # ARABIC LETTER DAD -0637;AL # ARABIC LETTER TAH -0638;AL # ARABIC LETTER ZAH -0639;AL # ARABIC LETTER AIN -063A;AL # ARABIC LETTER GHAIN -0640;AL # ARABIC TATWEEL -0641;AL # ARABIC LETTER FEH -0642;AL # ARABIC LETTER QAF -0643;AL # ARABIC LETTER KAF -0644;AL # ARABIC LETTER LAM -0645;AL # ARABIC LETTER MEEM -0646;AL # ARABIC LETTER NOON -0647;AL # ARABIC LETTER HEH -0648;AL # ARABIC LETTER WAW -0649;AL # ARABIC LETTER ALEF MAKSURA -064A;AL # ARABIC LETTER YEH -064B;CM # ARABIC FATHATAN -064C;CM # ARABIC DAMMATAN -064D;CM # ARABIC KASRATAN -064E;CM # ARABIC FATHA -064F;CM # ARABIC DAMMA -0650;CM # ARABIC KASRA -0651;CM # ARABIC SHADDA -0652;CM # ARABIC SUKUN -0653;CM # ARABIC MADDAH ABOVE -0654;CM # ARABIC HAMZA ABOVE -0655;CM # ARABIC HAMZA BELOW -0656;CM # ARABIC SUBSCRIPT ALEF -0657;CM # ARABIC INVERTED DAMMA -0658;CM # ARABIC MARK NOON GHUNNA -0659;CM # ARABIC ZWARAKAY -065A;CM # ARABIC VOWEL SIGN SMALL V ABOVE -065B;CM # ARABIC VOWEL SIGN INVERTED SMALL V ABOVE -065C;CM # ARABIC VOWEL SIGN DOT BELOW -065D;CM # ARABIC REVERSED DAMMA -065E;CM # ARABIC FATHA WITH TWO DOTS -0660;NU # ARABIC-INDIC DIGIT ZERO -0661;NU # ARABIC-INDIC DIGIT ONE -0662;NU # ARABIC-INDIC DIGIT TWO -0663;NU # ARABIC-INDIC DIGIT THREE -0664;NU # ARABIC-INDIC DIGIT FOUR -0665;NU # ARABIC-INDIC DIGIT FIVE -0666;NU # ARABIC-INDIC DIGIT SIX -0667;NU # ARABIC-INDIC DIGIT SEVEN -0668;NU # ARABIC-INDIC DIGIT EIGHT -0669;NU # ARABIC-INDIC DIGIT NINE -066A;EX # ARABIC PERCENT SIGN -066B;NU # ARABIC DECIMAL SEPARATOR -066C;NU # ARABIC THOUSANDS SEPARATOR -066D;AL # ARABIC FIVE POINTED STAR -066E;AL # ARABIC LETTER DOTLESS BEH -066F;AL # ARABIC LETTER DOTLESS QAF -0670;CM # ARABIC LETTER SUPERSCRIPT ALEF -0671;AL # ARABIC LETTER ALEF WASLA -0672;AL # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE -0673;AL # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW -0674;AL # ARABIC LETTER HIGH HAMZA -0675;AL # ARABIC LETTER HIGH HAMZA ALEF -0676;AL # ARABIC LETTER HIGH HAMZA WAW -0677;AL # ARABIC LETTER U WITH HAMZA ABOVE -0678;AL # ARABIC LETTER HIGH HAMZA YEH -0679;AL # ARABIC LETTER TTEH -067A;AL # ARABIC LETTER TTEHEH -067B;AL # ARABIC LETTER BEEH -067C;AL # ARABIC LETTER TEH WITH RING -067D;AL # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS -067E;AL # ARABIC LETTER PEH -067F;AL # ARABIC LETTER TEHEH -0680;AL # ARABIC LETTER BEHEH -0681;AL # ARABIC LETTER HAH WITH HAMZA ABOVE -0682;AL # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE -0683;AL # ARABIC LETTER NYEH -0684;AL # ARABIC LETTER DYEH -0685;AL # ARABIC LETTER HAH WITH THREE DOTS ABOVE -0686;AL # ARABIC LETTER TCHEH -0687;AL # ARABIC LETTER TCHEHEH -0688;AL # ARABIC LETTER DDAL -0689;AL # ARABIC LETTER DAL WITH RING -068A;AL # ARABIC LETTER DAL WITH DOT BELOW -068B;AL # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH -068C;AL # ARABIC LETTER DAHAL -068D;AL # ARABIC LETTER DDAHAL -068E;AL # ARABIC LETTER DUL -068F;AL # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS -0690;AL # ARABIC LETTER DAL WITH FOUR DOTS ABOVE -0691;AL # ARABIC LETTER RREH -0692;AL # ARABIC LETTER REH WITH SMALL V -0693;AL # ARABIC LETTER REH WITH RING -0694;AL # ARABIC LETTER REH WITH DOT BELOW -0695;AL # ARABIC LETTER REH WITH SMALL V BELOW -0696;AL # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE -0697;AL # ARABIC LETTER REH WITH TWO DOTS ABOVE -0698;AL # ARABIC LETTER JEH -0699;AL # ARABIC LETTER REH WITH FOUR DOTS ABOVE -069A;AL # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE -069B;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW -069C;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE -069D;AL # ARABIC LETTER SAD WITH TWO DOTS BELOW -069E;AL # ARABIC LETTER SAD WITH THREE DOTS ABOVE -069F;AL # ARABIC LETTER TAH WITH THREE DOTS ABOVE -06A0;AL # ARABIC LETTER AIN WITH THREE DOTS ABOVE -06A1;AL # ARABIC LETTER DOTLESS FEH -06A2;AL # ARABIC LETTER FEH WITH DOT MOVED BELOW -06A3;AL # ARABIC LETTER FEH WITH DOT BELOW -06A4;AL # ARABIC LETTER VEH -06A5;AL # ARABIC LETTER FEH WITH THREE DOTS BELOW -06A6;AL # ARABIC LETTER PEHEH -06A7;AL # ARABIC LETTER QAF WITH DOT ABOVE -06A8;AL # ARABIC LETTER QAF WITH THREE DOTS ABOVE -06A9;AL # ARABIC LETTER KEHEH -06AA;AL # ARABIC LETTER SWASH KAF -06AB;AL # ARABIC LETTER KAF WITH RING -06AC;AL # ARABIC LETTER KAF WITH DOT ABOVE -06AD;AL # ARABIC LETTER NG -06AE;AL # ARABIC LETTER KAF WITH THREE DOTS BELOW -06AF;AL # ARABIC LETTER GAF -06B0;AL # ARABIC LETTER GAF WITH RING -06B1;AL # ARABIC LETTER NGOEH -06B2;AL # ARABIC LETTER GAF WITH TWO DOTS BELOW -06B3;AL # ARABIC LETTER GUEH -06B4;AL # ARABIC LETTER GAF WITH THREE DOTS ABOVE -06B5;AL # ARABIC LETTER LAM WITH SMALL V -06B6;AL # ARABIC LETTER LAM WITH DOT ABOVE -06B7;AL # ARABIC LETTER LAM WITH THREE DOTS ABOVE -06B8;AL # ARABIC LETTER LAM WITH THREE DOTS BELOW -06B9;AL # ARABIC LETTER NOON WITH DOT BELOW -06BA;AL # ARABIC LETTER NOON GHUNNA -06BB;AL # ARABIC LETTER RNOON -06BC;AL # ARABIC LETTER NOON WITH RING -06BD;AL # ARABIC LETTER NOON WITH THREE DOTS ABOVE -06BE;AL # ARABIC LETTER HEH DOACHASHMEE -06BF;AL # ARABIC LETTER TCHEH WITH DOT ABOVE -06C0;AL # ARABIC LETTER HEH WITH YEH ABOVE -06C1;AL # ARABIC LETTER HEH GOAL -06C2;AL # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -06C3;AL # ARABIC LETTER TEH MARBUTA GOAL -06C4;AL # ARABIC LETTER WAW WITH RING -06C5;AL # ARABIC LETTER KIRGHIZ OE -06C6;AL # ARABIC LETTER OE -06C7;AL # ARABIC LETTER U -06C8;AL # ARABIC LETTER YU -06C9;AL # ARABIC LETTER KIRGHIZ YU -06CA;AL # ARABIC LETTER WAW WITH TWO DOTS ABOVE -06CB;AL # ARABIC LETTER VE -06CC;AL # ARABIC LETTER FARSI YEH -06CD;AL # ARABIC LETTER YEH WITH TAIL -06CE;AL # ARABIC LETTER YEH WITH SMALL V -06CF;AL # ARABIC LETTER WAW WITH DOT ABOVE -06D0;AL # ARABIC LETTER E -06D1;AL # ARABIC LETTER YEH WITH THREE DOTS BELOW -06D2;AL # ARABIC LETTER YEH BARREE -06D3;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -06D4;EX # ARABIC FULL STOP -06D5;AL # ARABIC LETTER AE -06D6;CM # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA -06D7;CM # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA -06D8;CM # ARABIC SMALL HIGH MEEM INITIAL FORM -06D9;CM # ARABIC SMALL HIGH LAM ALEF -06DA;CM # ARABIC SMALL HIGH JEEM -06DB;CM # ARABIC SMALL HIGH THREE DOTS -06DC;CM # ARABIC SMALL HIGH SEEN -06DD;AL # ARABIC END OF AYAH -06DE;CM # ARABIC START OF RUB EL HIZB -06DF;CM # ARABIC SMALL HIGH ROUNDED ZERO -06E0;CM # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO -06E1;CM # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH -06E2;CM # ARABIC SMALL HIGH MEEM ISOLATED FORM -06E3;CM # ARABIC SMALL LOW SEEN -06E4;CM # ARABIC SMALL HIGH MADDA -06E5;AL # ARABIC SMALL WAW -06E6;AL # ARABIC SMALL YEH -06E7;CM # ARABIC SMALL HIGH YEH -06E8;CM # ARABIC SMALL HIGH NOON -06E9;AL # ARABIC PLACE OF SAJDAH -06EA;CM # ARABIC EMPTY CENTRE LOW STOP -06EB;CM # ARABIC EMPTY CENTRE HIGH STOP -06EC;CM # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE -06ED;CM # ARABIC SMALL LOW MEEM -06EE;AL # ARABIC LETTER DAL WITH INVERTED V -06EF;AL # ARABIC LETTER REH WITH INVERTED V -06F0;NU # EXTENDED ARABIC-INDIC DIGIT ZERO -06F1;NU # EXTENDED ARABIC-INDIC DIGIT ONE -06F2;NU # EXTENDED ARABIC-INDIC DIGIT TWO -06F3;NU # EXTENDED ARABIC-INDIC DIGIT THREE -06F4;NU # EXTENDED ARABIC-INDIC DIGIT FOUR -06F5;NU # EXTENDED ARABIC-INDIC DIGIT FIVE -06F6;NU # EXTENDED ARABIC-INDIC DIGIT SIX -06F7;NU # EXTENDED ARABIC-INDIC DIGIT SEVEN -06F8;NU # EXTENDED ARABIC-INDIC DIGIT EIGHT -06F9;NU # EXTENDED ARABIC-INDIC DIGIT NINE -06FA;AL # ARABIC LETTER SHEEN WITH DOT BELOW -06FB;AL # ARABIC LETTER DAD WITH DOT BELOW -06FC;AL # ARABIC LETTER GHAIN WITH DOT BELOW -06FD;AL # ARABIC SIGN SINDHI AMPERSAND -06FE;AL # ARABIC SIGN SINDHI POSTPOSITION MEN -06FF;AL # ARABIC LETTER HEH WITH INVERTED V -0700;AL # SYRIAC END OF PARAGRAPH -0701;AL # SYRIAC SUPRALINEAR FULL STOP -0702;AL # SYRIAC SUBLINEAR FULL STOP -0703;AL # SYRIAC SUPRALINEAR COLON -0704;AL # SYRIAC SUBLINEAR COLON -0705;AL # SYRIAC HORIZONTAL COLON -0706;AL # SYRIAC COLON SKEWED LEFT -0707;AL # SYRIAC COLON SKEWED RIGHT -0708;AL # SYRIAC SUPRALINEAR COLON SKEWED LEFT -0709;AL # SYRIAC SUBLINEAR COLON SKEWED RIGHT -070A;AL # SYRIAC CONTRACTION -070B;AL # SYRIAC HARKLEAN OBELUS -070C;AL # SYRIAC HARKLEAN METOBELUS -070D;AL # SYRIAC HARKLEAN ASTERISCUS -070F;AL # SYRIAC ABBREVIATION MARK -0710;AL # SYRIAC LETTER ALAPH -0711;CM # SYRIAC LETTER SUPERSCRIPT ALAPH -0712;AL # SYRIAC LETTER BETH -0713;AL # SYRIAC LETTER GAMAL -0714;AL # SYRIAC LETTER GAMAL GARSHUNI -0715;AL # SYRIAC LETTER DALATH -0716;AL # SYRIAC LETTER DOTLESS DALATH RISH -0717;AL # SYRIAC LETTER HE -0718;AL # SYRIAC LETTER WAW -0719;AL # SYRIAC LETTER ZAIN -071A;AL # SYRIAC LETTER HETH -071B;AL # SYRIAC LETTER TETH -071C;AL # SYRIAC LETTER TETH GARSHUNI -071D;AL # SYRIAC LETTER YUDH -071E;AL # SYRIAC LETTER YUDH HE -071F;AL # SYRIAC LETTER KAPH -0720;AL # SYRIAC LETTER LAMADH -0721;AL # SYRIAC LETTER MIM -0722;AL # SYRIAC LETTER NUN -0723;AL # SYRIAC LETTER SEMKATH -0724;AL # SYRIAC LETTER FINAL SEMKATH -0725;AL # SYRIAC LETTER E -0726;AL # SYRIAC LETTER PE -0727;AL # SYRIAC LETTER REVERSED PE -0728;AL # SYRIAC LETTER SADHE -0729;AL # SYRIAC LETTER QAPH -072A;AL # SYRIAC LETTER RISH -072B;AL # SYRIAC LETTER SHIN -072C;AL # SYRIAC LETTER TAW -072D;AL # SYRIAC LETTER PERSIAN BHETH -072E;AL # SYRIAC LETTER PERSIAN GHAMAL -072F;AL # SYRIAC LETTER PERSIAN DHALATH -0730;CM # SYRIAC PTHAHA ABOVE -0731;CM # SYRIAC PTHAHA BELOW -0732;CM # SYRIAC PTHAHA DOTTED -0733;CM # SYRIAC ZQAPHA ABOVE -0734;CM # SYRIAC ZQAPHA BELOW -0735;CM # SYRIAC ZQAPHA DOTTED -0736;CM # SYRIAC RBASA ABOVE -0737;CM # SYRIAC RBASA BELOW -0738;CM # SYRIAC DOTTED ZLAMA HORIZONTAL -0739;CM # SYRIAC DOTTED ZLAMA ANGULAR -073A;CM # SYRIAC HBASA ABOVE -073B;CM # SYRIAC HBASA BELOW -073C;CM # SYRIAC HBASA-ESASA DOTTED -073D;CM # SYRIAC ESASA ABOVE -073E;CM # SYRIAC ESASA BELOW -073F;CM # SYRIAC RWAHA -0740;CM # SYRIAC FEMININE DOT -0741;CM # SYRIAC QUSHSHAYA -0742;CM # SYRIAC RUKKAKHA -0743;CM # SYRIAC TWO VERTICAL DOTS ABOVE -0744;CM # SYRIAC TWO VERTICAL DOTS BELOW -0745;CM # SYRIAC THREE DOTS ABOVE -0746;CM # SYRIAC THREE DOTS BELOW -0747;CM # SYRIAC OBLIQUE LINE ABOVE -0748;CM # SYRIAC OBLIQUE LINE BELOW -0749;CM # SYRIAC MUSIC -074A;CM # SYRIAC BARREKH -074D;AL # SYRIAC LETTER SOGDIAN ZHAIN -074E;AL # SYRIAC LETTER SOGDIAN KHAPH -074F;AL # SYRIAC LETTER SOGDIAN FE -0750;AL # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW -0751;AL # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE -0752;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW -0753;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE -0754;AL # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE -0755;AL # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW -0756;AL # ARABIC LETTER BEH WITH SMALL V -0757;AL # ARABIC LETTER HAH WITH TWO DOTS ABOVE -0758;AL # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW -0759;AL # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH -075A;AL # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW -075B;AL # ARABIC LETTER REH WITH STROKE -075C;AL # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE -075D;AL # ARABIC LETTER AIN WITH TWO DOTS ABOVE -075E;AL # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE -075F;AL # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE -0760;AL # ARABIC LETTER FEH WITH TWO DOTS BELOW -0761;AL # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW -0762;AL # ARABIC LETTER KEHEH WITH DOT ABOVE -0763;AL # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE -0764;AL # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW -0765;AL # ARABIC LETTER MEEM WITH DOT ABOVE -0766;AL # ARABIC LETTER MEEM WITH DOT BELOW -0767;AL # ARABIC LETTER NOON WITH TWO DOTS BELOW -0768;AL # ARABIC LETTER NOON WITH SMALL TAH -0769;AL # ARABIC LETTER NOON WITH SMALL V -076A;AL # ARABIC LETTER LAM WITH BAR -076B;AL # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE -076C;AL # ARABIC LETTER REH WITH HAMZA ABOVE -076D;AL # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE -0780;AL # THAANA LETTER HAA -0781;AL # THAANA LETTER SHAVIYANI -0782;AL # THAANA LETTER NOONU -0783;AL # THAANA LETTER RAA -0784;AL # THAANA LETTER BAA -0785;AL # THAANA LETTER LHAVIYANI -0786;AL # THAANA LETTER KAAFU -0787;AL # THAANA LETTER ALIFU -0788;AL # THAANA LETTER VAAVU -0789;AL # THAANA LETTER MEEMU -078A;AL # THAANA LETTER FAAFU -078B;AL # THAANA LETTER DHAALU -078C;AL # THAANA LETTER THAA -078D;AL # THAANA LETTER LAAMU -078E;AL # THAANA LETTER GAAFU -078F;AL # THAANA LETTER GNAVIYANI -0790;AL # THAANA LETTER SEENU -0791;AL # THAANA LETTER DAVIYANI -0792;AL # THAANA LETTER ZAVIYANI -0793;AL # THAANA LETTER TAVIYANI -0794;AL # THAANA LETTER YAA -0795;AL # THAANA LETTER PAVIYANI -0796;AL # THAANA LETTER JAVIYANI -0797;AL # THAANA LETTER CHAVIYANI -0798;AL # THAANA LETTER TTAA -0799;AL # THAANA LETTER HHAA -079A;AL # THAANA LETTER KHAA -079B;AL # THAANA LETTER THAALU -079C;AL # THAANA LETTER ZAA -079D;AL # THAANA LETTER SHEENU -079E;AL # THAANA LETTER SAADHU -079F;AL # THAANA LETTER DAADHU -07A0;AL # THAANA LETTER TO -07A1;AL # THAANA LETTER ZO -07A2;AL # THAANA LETTER AINU -07A3;AL # THAANA LETTER GHAINU -07A4;AL # THAANA LETTER QAAFU -07A5;AL # THAANA LETTER WAAVU -07A6;CM # THAANA ABAFILI -07A7;CM # THAANA AABAAFILI -07A8;CM # THAANA IBIFILI -07A9;CM # THAANA EEBEEFILI -07AA;CM # THAANA UBUFILI -07AB;CM # THAANA OOBOOFILI -07AC;CM # THAANA EBEFILI -07AD;CM # THAANA EYBEYFILI -07AE;CM # THAANA OBOFILI -07AF;CM # THAANA OABOAFILI -07B0;CM # THAANA SUKUN -07B1;AL # THAANA LETTER NAA -07C0;NU # NKO DIGIT ZERO -07C1;NU # NKO DIGIT ONE -07C2;NU # NKO DIGIT TWO -07C3;NU # NKO DIGIT THREE -07C4;NU # NKO DIGIT FOUR -07C5;NU # NKO DIGIT FIVE -07C6;NU # NKO DIGIT SIX -07C7;NU # NKO DIGIT SEVEN -07C8;NU # NKO DIGIT EIGHT -07C9;NU # NKO DIGIT NINE -07CA;AL # NKO LETTER A -07CB;AL # NKO LETTER EE -07CC;AL # NKO LETTER I -07CD;AL # NKO LETTER E -07CE;AL # NKO LETTER U -07CF;AL # NKO LETTER OO -07D0;AL # NKO LETTER O -07D1;AL # NKO LETTER DAGBASINNA -07D2;AL # NKO LETTER N -07D3;AL # NKO LETTER BA -07D4;AL # NKO LETTER PA -07D5;AL # NKO LETTER TA -07D6;AL # NKO LETTER JA -07D7;AL # NKO LETTER CHA -07D8;AL # NKO LETTER DA -07D9;AL # NKO LETTER RA -07DA;AL # NKO LETTER RRA -07DB;AL # NKO LETTER SA -07DC;AL # NKO LETTER GBA -07DD;AL # NKO LETTER FA -07DE;AL # NKO LETTER KA -07DF;AL # NKO LETTER LA -07E0;AL # NKO LETTER NA WOLOSO -07E1;AL # NKO LETTER MA -07E2;AL # NKO LETTER NYA -07E3;AL # NKO LETTER NA -07E4;AL # NKO LETTER HA -07E5;AL # NKO LETTER WA -07E6;AL # NKO LETTER YA -07E7;AL # NKO LETTER NYA WOLOSO -07E8;AL # NKO LETTER JONA JA -07E9;AL # NKO LETTER JONA CHA -07EA;AL # NKO LETTER JONA RA -07EB;CM # NKO COMBINING SHORT HIGH TONE -07EC;CM # NKO COMBINING SHORT LOW TONE -07ED;CM # NKO COMBINING SHORT RISING TONE -07EE;CM # NKO COMBINING LONG DESCENDING TONE -07EF;CM # NKO COMBINING LONG HIGH TONE -07F0;CM # NKO COMBINING LONG LOW TONE -07F1;CM # NKO COMBINING LONG RISING TONE -07F2;CM # NKO COMBINING NASALIZATION MARK -07F3;CM # NKO COMBINING DOUBLE DOT ABOVE -07F4;AL # NKO HIGH TONE APOSTROPHE -07F5;AL # NKO LOW TONE APOSTROPHE -07F6;AL # NKO SYMBOL OO DENNEN -07F7;AL # NKO SYMBOL GBAKURUNEN -07F8;IS # NKO COMMA -07F9;EX # NKO EXCLAMATION MARK -07FA;AL # NKO LAJANYALAN -0901;CM # DEVANAGARI SIGN CANDRABINDU -0902;CM # DEVANAGARI SIGN ANUSVARA -0903;CM # DEVANAGARI SIGN VISARGA -0904;AL # DEVANAGARI LETTER SHORT A -0905;AL # DEVANAGARI LETTER A -0906;AL # DEVANAGARI LETTER AA -0907;AL # DEVANAGARI LETTER I -0908;AL # DEVANAGARI LETTER II -0909;AL # DEVANAGARI LETTER U -090A;AL # DEVANAGARI LETTER UU -090B;AL # DEVANAGARI LETTER VOCALIC R -090C;AL # DEVANAGARI LETTER VOCALIC L -090D;AL # DEVANAGARI LETTER CANDRA E -090E;AL # DEVANAGARI LETTER SHORT E -090F;AL # DEVANAGARI LETTER E -0910;AL # DEVANAGARI LETTER AI -0911;AL # DEVANAGARI LETTER CANDRA O -0912;AL # DEVANAGARI LETTER SHORT O -0913;AL # DEVANAGARI LETTER O -0914;AL # DEVANAGARI LETTER AU -0915;AL # DEVANAGARI LETTER KA -0916;AL # DEVANAGARI LETTER KHA -0917;AL # DEVANAGARI LETTER GA -0918;AL # DEVANAGARI LETTER GHA -0919;AL # DEVANAGARI LETTER NGA -091A;AL # DEVANAGARI LETTER CA -091B;AL # DEVANAGARI LETTER CHA -091C;AL # DEVANAGARI LETTER JA -091D;AL # DEVANAGARI LETTER JHA -091E;AL # DEVANAGARI LETTER NYA -091F;AL # DEVANAGARI LETTER TTA -0920;AL # DEVANAGARI LETTER TTHA -0921;AL # DEVANAGARI LETTER DDA -0922;AL # DEVANAGARI LETTER DDHA -0923;AL # DEVANAGARI LETTER NNA -0924;AL # DEVANAGARI LETTER TA -0925;AL # DEVANAGARI LETTER THA -0926;AL # DEVANAGARI LETTER DA -0927;AL # DEVANAGARI LETTER DHA -0928;AL # DEVANAGARI LETTER NA -0929;AL # DEVANAGARI LETTER NNNA -092A;AL # DEVANAGARI LETTER PA -092B;AL # DEVANAGARI LETTER PHA -092C;AL # DEVANAGARI LETTER BA -092D;AL # DEVANAGARI LETTER BHA -092E;AL # DEVANAGARI LETTER MA -092F;AL # DEVANAGARI LETTER YA -0930;AL # DEVANAGARI LETTER RA -0931;AL # DEVANAGARI LETTER RRA -0932;AL # DEVANAGARI LETTER LA -0933;AL # DEVANAGARI LETTER LLA -0934;AL # DEVANAGARI LETTER LLLA -0935;AL # DEVANAGARI LETTER VA -0936;AL # DEVANAGARI LETTER SHA -0937;AL # DEVANAGARI LETTER SSA -0938;AL # DEVANAGARI LETTER SA -0939;AL # DEVANAGARI LETTER HA -093C;CM # DEVANAGARI SIGN NUKTA -093D;AL # DEVANAGARI SIGN AVAGRAHA -093E;CM # DEVANAGARI VOWEL SIGN AA -093F;CM # DEVANAGARI VOWEL SIGN I -0940;CM # DEVANAGARI VOWEL SIGN II -0941;CM # DEVANAGARI VOWEL SIGN U -0942;CM # DEVANAGARI VOWEL SIGN UU -0943;CM # DEVANAGARI VOWEL SIGN VOCALIC R -0944;CM # DEVANAGARI VOWEL SIGN VOCALIC RR -0945;CM # DEVANAGARI VOWEL SIGN CANDRA E -0946;CM # DEVANAGARI VOWEL SIGN SHORT E -0947;CM # DEVANAGARI VOWEL SIGN E -0948;CM # DEVANAGARI VOWEL SIGN AI -0949;CM # DEVANAGARI VOWEL SIGN CANDRA O -094A;CM # DEVANAGARI VOWEL SIGN SHORT O -094B;CM # DEVANAGARI VOWEL SIGN O -094C;CM # DEVANAGARI VOWEL SIGN AU -094D;CM # DEVANAGARI SIGN VIRAMA -0950;AL # DEVANAGARI OM -0951;CM # DEVANAGARI STRESS SIGN UDATTA -0952;CM # DEVANAGARI STRESS SIGN ANUDATTA -0953;CM # DEVANAGARI GRAVE ACCENT -0954;CM # DEVANAGARI ACUTE ACCENT -0958;AL # DEVANAGARI LETTER QA -0959;AL # DEVANAGARI LETTER KHHA -095A;AL # DEVANAGARI LETTER GHHA -095B;AL # DEVANAGARI LETTER ZA -095C;AL # DEVANAGARI LETTER DDDHA -095D;AL # DEVANAGARI LETTER RHA -095E;AL # DEVANAGARI LETTER FA -095F;AL # DEVANAGARI LETTER YYA -0960;AL # DEVANAGARI LETTER VOCALIC RR -0961;AL # DEVANAGARI LETTER VOCALIC LL -0962;CM # DEVANAGARI VOWEL SIGN VOCALIC L -0963;CM # DEVANAGARI VOWEL SIGN VOCALIC LL -0964;BA # DEVANAGARI DANDA -0965;BA # DEVANAGARI DOUBLE DANDA -0966;NU # DEVANAGARI DIGIT ZERO -0967;NU # DEVANAGARI DIGIT ONE -0968;NU # DEVANAGARI DIGIT TWO -0969;NU # DEVANAGARI DIGIT THREE -096A;NU # DEVANAGARI DIGIT FOUR -096B;NU # DEVANAGARI DIGIT FIVE -096C;NU # DEVANAGARI DIGIT SIX -096D;NU # DEVANAGARI DIGIT SEVEN -096E;NU # DEVANAGARI DIGIT EIGHT -096F;NU # DEVANAGARI DIGIT NINE -0970;AL # DEVANAGARI ABBREVIATION SIGN -097B;AL # DEVANAGARI LETTER GGA -097C;AL # DEVANAGARI LETTER JJA -097D;AL # DEVANAGARI LETTER GLOTTAL STOP -097E;AL # DEVANAGARI LETTER DDDA -097F;AL # DEVANAGARI LETTER BBA -0981;CM # BENGALI SIGN CANDRABINDU -0982;CM # BENGALI SIGN ANUSVARA -0983;CM # BENGALI SIGN VISARGA -0985;AL # BENGALI LETTER A -0986;AL # BENGALI LETTER AA -0987;AL # BENGALI LETTER I -0988;AL # BENGALI LETTER II -0989;AL # BENGALI LETTER U -098A;AL # BENGALI LETTER UU -098B;AL # BENGALI LETTER VOCALIC R -098C;AL # BENGALI LETTER VOCALIC L -098F;AL # BENGALI LETTER E -0990;AL # BENGALI LETTER AI -0993;AL # BENGALI LETTER O -0994;AL # BENGALI LETTER AU -0995;AL # BENGALI LETTER KA -0996;AL # BENGALI LETTER KHA -0997;AL # BENGALI LETTER GA -0998;AL # BENGALI LETTER GHA -0999;AL # BENGALI LETTER NGA -099A;AL # BENGALI LETTER CA -099B;AL # BENGALI LETTER CHA -099C;AL # BENGALI LETTER JA -099D;AL # BENGALI LETTER JHA -099E;AL # BENGALI LETTER NYA -099F;AL # BENGALI LETTER TTA -09A0;AL # BENGALI LETTER TTHA -09A1;AL # BENGALI LETTER DDA -09A2;AL # BENGALI LETTER DDHA -09A3;AL # BENGALI LETTER NNA -09A4;AL # BENGALI LETTER TA -09A5;AL # BENGALI LETTER THA -09A6;AL # BENGALI LETTER DA -09A7;AL # BENGALI LETTER DHA -09A8;AL # BENGALI LETTER NA -09AA;AL # BENGALI LETTER PA -09AB;AL # BENGALI LETTER PHA -09AC;AL # BENGALI LETTER BA -09AD;AL # BENGALI LETTER BHA -09AE;AL # BENGALI LETTER MA -09AF;AL # BENGALI LETTER YA -09B0;AL # BENGALI LETTER RA -09B2;AL # BENGALI LETTER LA -09B6;AL # BENGALI LETTER SHA -09B7;AL # BENGALI LETTER SSA -09B8;AL # BENGALI LETTER SA -09B9;AL # BENGALI LETTER HA -09BC;CM # BENGALI SIGN NUKTA -09BD;AL # BENGALI SIGN AVAGRAHA -09BE;CM # BENGALI VOWEL SIGN AA -09BF;CM # BENGALI VOWEL SIGN I -09C0;CM # BENGALI VOWEL SIGN II -09C1;CM # BENGALI VOWEL SIGN U -09C2;CM # BENGALI VOWEL SIGN UU -09C3;CM # BENGALI VOWEL SIGN VOCALIC R -09C4;CM # BENGALI VOWEL SIGN VOCALIC RR -09C7;CM # BENGALI VOWEL SIGN E -09C8;CM # BENGALI VOWEL SIGN AI -09CB;CM # BENGALI VOWEL SIGN O -09CC;CM # BENGALI VOWEL SIGN AU -09CD;CM # BENGALI SIGN VIRAMA -09CE;AL # BENGALI LETTER KHANDA TA -09D7;CM # BENGALI AU LENGTH MARK -09DC;AL # BENGALI LETTER RRA -09DD;AL # BENGALI LETTER RHA -09DF;AL # BENGALI LETTER YYA -09E0;AL # BENGALI LETTER VOCALIC RR -09E1;AL # BENGALI LETTER VOCALIC LL -09E2;CM # BENGALI VOWEL SIGN VOCALIC L -09E3;CM # BENGALI VOWEL SIGN VOCALIC LL -09E6;NU # BENGALI DIGIT ZERO -09E7;NU # BENGALI DIGIT ONE -09E8;NU # BENGALI DIGIT TWO -09E9;NU # BENGALI DIGIT THREE -09EA;NU # BENGALI DIGIT FOUR -09EB;NU # BENGALI DIGIT FIVE -09EC;NU # BENGALI DIGIT SIX -09ED;NU # BENGALI DIGIT SEVEN -09EE;NU # BENGALI DIGIT EIGHT -09EF;NU # BENGALI DIGIT NINE -09F0;AL # BENGALI LETTER RA WITH MIDDLE DIAGONAL -09F1;AL # BENGALI LETTER RA WITH LOWER DIAGONAL -09F2;PR # BENGALI RUPEE MARK -09F3;PR # BENGALI RUPEE SIGN -09F4;AL # BENGALI CURRENCY NUMERATOR ONE -09F5;AL # BENGALI CURRENCY NUMERATOR TWO -09F6;AL # BENGALI CURRENCY NUMERATOR THREE -09F7;AL # BENGALI CURRENCY NUMERATOR FOUR -09F8;AL # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR -09F9;AL # BENGALI CURRENCY DENOMINATOR SIXTEEN -09FA;AL # BENGALI ISSHAR -0A01;CM # GURMUKHI SIGN ADAK BINDI -0A02;CM # GURMUKHI SIGN BINDI -0A03;CM # GURMUKHI SIGN VISARGA -0A05;AL # GURMUKHI LETTER A -0A06;AL # GURMUKHI LETTER AA -0A07;AL # GURMUKHI LETTER I -0A08;AL # GURMUKHI LETTER II -0A09;AL # GURMUKHI LETTER U -0A0A;AL # GURMUKHI LETTER UU -0A0F;AL # GURMUKHI LETTER EE -0A10;AL # GURMUKHI LETTER AI -0A13;AL # GURMUKHI LETTER OO -0A14;AL # GURMUKHI LETTER AU -0A15;AL # GURMUKHI LETTER KA -0A16;AL # GURMUKHI LETTER KHA -0A17;AL # GURMUKHI LETTER GA -0A18;AL # GURMUKHI LETTER GHA -0A19;AL # GURMUKHI LETTER NGA -0A1A;AL # GURMUKHI LETTER CA -0A1B;AL # GURMUKHI LETTER CHA -0A1C;AL # GURMUKHI LETTER JA -0A1D;AL # GURMUKHI LETTER JHA -0A1E;AL # GURMUKHI LETTER NYA -0A1F;AL # GURMUKHI LETTER TTA -0A20;AL # GURMUKHI LETTER TTHA -0A21;AL # GURMUKHI LETTER DDA -0A22;AL # GURMUKHI LETTER DDHA -0A23;AL # GURMUKHI LETTER NNA -0A24;AL # GURMUKHI LETTER TA -0A25;AL # GURMUKHI LETTER THA -0A26;AL # GURMUKHI LETTER DA -0A27;AL # GURMUKHI LETTER DHA -0A28;AL # GURMUKHI LETTER NA -0A2A;AL # GURMUKHI LETTER PA -0A2B;AL # GURMUKHI LETTER PHA -0A2C;AL # GURMUKHI LETTER BA -0A2D;AL # GURMUKHI LETTER BHA -0A2E;AL # GURMUKHI LETTER MA -0A2F;AL # GURMUKHI LETTER YA -0A30;AL # GURMUKHI LETTER RA -0A32;AL # GURMUKHI LETTER LA -0A33;AL # GURMUKHI LETTER LLA -0A35;AL # GURMUKHI LETTER VA -0A36;AL # GURMUKHI LETTER SHA -0A38;AL # GURMUKHI LETTER SA -0A39;AL # GURMUKHI LETTER HA -0A3C;CM # GURMUKHI SIGN NUKTA -0A3E;CM # GURMUKHI VOWEL SIGN AA -0A3F;CM # GURMUKHI VOWEL SIGN I -0A40;CM # GURMUKHI VOWEL SIGN II -0A41;CM # GURMUKHI VOWEL SIGN U -0A42;CM # GURMUKHI VOWEL SIGN UU -0A47;CM # GURMUKHI VOWEL SIGN EE -0A48;CM # GURMUKHI VOWEL SIGN AI -0A4B;CM # GURMUKHI VOWEL SIGN OO -0A4C;CM # GURMUKHI VOWEL SIGN AU -0A4D;CM # GURMUKHI SIGN VIRAMA -0A59;AL # GURMUKHI LETTER KHHA -0A5A;AL # GURMUKHI LETTER GHHA -0A5B;AL # GURMUKHI LETTER ZA -0A5C;AL # GURMUKHI LETTER RRA -0A5E;AL # GURMUKHI LETTER FA -0A66;NU # GURMUKHI DIGIT ZERO -0A67;NU # GURMUKHI DIGIT ONE -0A68;NU # GURMUKHI DIGIT TWO -0A69;NU # GURMUKHI DIGIT THREE -0A6A;NU # GURMUKHI DIGIT FOUR -0A6B;NU # GURMUKHI DIGIT FIVE -0A6C;NU # GURMUKHI DIGIT SIX -0A6D;NU # GURMUKHI DIGIT SEVEN -0A6E;NU # GURMUKHI DIGIT EIGHT -0A6F;NU # GURMUKHI DIGIT NINE -0A70;CM # GURMUKHI TIPPI -0A71;CM # GURMUKHI ADDAK -0A72;AL # GURMUKHI IRI -0A73;AL # GURMUKHI URA -0A74;AL # GURMUKHI EK ONKAR -0A81;CM # GUJARATI SIGN CANDRABINDU -0A82;CM # GUJARATI SIGN ANUSVARA -0A83;CM # GUJARATI SIGN VISARGA -0A85;AL # GUJARATI LETTER A -0A86;AL # GUJARATI LETTER AA -0A87;AL # GUJARATI LETTER I -0A88;AL # GUJARATI LETTER II -0A89;AL # GUJARATI LETTER U -0A8A;AL # GUJARATI LETTER UU -0A8B;AL # GUJARATI LETTER VOCALIC R -0A8C;AL # GUJARATI LETTER VOCALIC L -0A8D;AL # GUJARATI VOWEL CANDRA E -0A8F;AL # GUJARATI LETTER E -0A90;AL # GUJARATI LETTER AI -0A91;AL # GUJARATI VOWEL CANDRA O -0A93;AL # GUJARATI LETTER O -0A94;AL # GUJARATI LETTER AU -0A95;AL # GUJARATI LETTER KA -0A96;AL # GUJARATI LETTER KHA -0A97;AL # GUJARATI LETTER GA -0A98;AL # GUJARATI LETTER GHA -0A99;AL # GUJARATI LETTER NGA -0A9A;AL # GUJARATI LETTER CA -0A9B;AL # GUJARATI LETTER CHA -0A9C;AL # GUJARATI LETTER JA -0A9D;AL # GUJARATI LETTER JHA -0A9E;AL # GUJARATI LETTER NYA -0A9F;AL # GUJARATI LETTER TTA -0AA0;AL # GUJARATI LETTER TTHA -0AA1;AL # GUJARATI LETTER DDA -0AA2;AL # GUJARATI LETTER DDHA -0AA3;AL # GUJARATI LETTER NNA -0AA4;AL # GUJARATI LETTER TA -0AA5;AL # GUJARATI LETTER THA -0AA6;AL # GUJARATI LETTER DA -0AA7;AL # GUJARATI LETTER DHA -0AA8;AL # GUJARATI LETTER NA -0AAA;AL # GUJARATI LETTER PA -0AAB;AL # GUJARATI LETTER PHA -0AAC;AL # GUJARATI LETTER BA -0AAD;AL # GUJARATI LETTER BHA -0AAE;AL # GUJARATI LETTER MA -0AAF;AL # GUJARATI LETTER YA -0AB0;AL # GUJARATI LETTER RA -0AB2;AL # GUJARATI LETTER LA -0AB3;AL # GUJARATI LETTER LLA -0AB5;AL # GUJARATI LETTER VA -0AB6;AL # GUJARATI LETTER SHA -0AB7;AL # GUJARATI LETTER SSA -0AB8;AL # GUJARATI LETTER SA -0AB9;AL # GUJARATI LETTER HA -0ABC;CM # GUJARATI SIGN NUKTA -0ABD;AL # GUJARATI SIGN AVAGRAHA -0ABE;CM # GUJARATI VOWEL SIGN AA -0ABF;CM # GUJARATI VOWEL SIGN I -0AC0;CM # GUJARATI VOWEL SIGN II -0AC1;CM # GUJARATI VOWEL SIGN U -0AC2;CM # GUJARATI VOWEL SIGN UU -0AC3;CM # GUJARATI VOWEL SIGN VOCALIC R -0AC4;CM # GUJARATI VOWEL SIGN VOCALIC RR -0AC5;CM # GUJARATI VOWEL SIGN CANDRA E -0AC7;CM # GUJARATI VOWEL SIGN E -0AC8;CM # GUJARATI VOWEL SIGN AI -0AC9;CM # GUJARATI VOWEL SIGN CANDRA O -0ACB;CM # GUJARATI VOWEL SIGN O -0ACC;CM # GUJARATI VOWEL SIGN AU -0ACD;CM # GUJARATI SIGN VIRAMA -0AD0;AL # GUJARATI OM -0AE0;AL # GUJARATI LETTER VOCALIC RR -0AE1;AL # GUJARATI LETTER VOCALIC LL -0AE2;CM # GUJARATI VOWEL SIGN VOCALIC L -0AE3;CM # GUJARATI VOWEL SIGN VOCALIC LL -0AE6;NU # GUJARATI DIGIT ZERO -0AE7;NU # GUJARATI DIGIT ONE -0AE8;NU # GUJARATI DIGIT TWO -0AE9;NU # GUJARATI DIGIT THREE -0AEA;NU # GUJARATI DIGIT FOUR -0AEB;NU # GUJARATI DIGIT FIVE -0AEC;NU # GUJARATI DIGIT SIX -0AED;NU # GUJARATI DIGIT SEVEN -0AEE;NU # GUJARATI DIGIT EIGHT -0AEF;NU # GUJARATI DIGIT NINE -0AF1;PR # GUJARATI RUPEE SIGN -0B01;CM # ORIYA SIGN CANDRABINDU -0B02;CM # ORIYA SIGN ANUSVARA -0B03;CM # ORIYA SIGN VISARGA -0B05;AL # ORIYA LETTER A -0B06;AL # ORIYA LETTER AA -0B07;AL # ORIYA LETTER I -0B08;AL # ORIYA LETTER II -0B09;AL # ORIYA LETTER U -0B0A;AL # ORIYA LETTER UU -0B0B;AL # ORIYA LETTER VOCALIC R -0B0C;AL # ORIYA LETTER VOCALIC L -0B0F;AL # ORIYA LETTER E -0B10;AL # ORIYA LETTER AI -0B13;AL # ORIYA LETTER O -0B14;AL # ORIYA LETTER AU -0B15;AL # ORIYA LETTER KA -0B16;AL # ORIYA LETTER KHA -0B17;AL # ORIYA LETTER GA -0B18;AL # ORIYA LETTER GHA -0B19;AL # ORIYA LETTER NGA -0B1A;AL # ORIYA LETTER CA -0B1B;AL # ORIYA LETTER CHA -0B1C;AL # ORIYA LETTER JA -0B1D;AL # ORIYA LETTER JHA -0B1E;AL # ORIYA LETTER NYA -0B1F;AL # ORIYA LETTER TTA -0B20;AL # ORIYA LETTER TTHA -0B21;AL # ORIYA LETTER DDA -0B22;AL # ORIYA LETTER DDHA -0B23;AL # ORIYA LETTER NNA -0B24;AL # ORIYA LETTER TA -0B25;AL # ORIYA LETTER THA -0B26;AL # ORIYA LETTER DA -0B27;AL # ORIYA LETTER DHA -0B28;AL # ORIYA LETTER NA -0B2A;AL # ORIYA LETTER PA -0B2B;AL # ORIYA LETTER PHA -0B2C;AL # ORIYA LETTER BA -0B2D;AL # ORIYA LETTER BHA -0B2E;AL # ORIYA LETTER MA -0B2F;AL # ORIYA LETTER YA -0B30;AL # ORIYA LETTER RA -0B32;AL # ORIYA LETTER LA -0B33;AL # ORIYA LETTER LLA -0B35;AL # ORIYA LETTER VA -0B36;AL # ORIYA LETTER SHA -0B37;AL # ORIYA LETTER SSA -0B38;AL # ORIYA LETTER SA -0B39;AL # ORIYA LETTER HA -0B3C;CM # ORIYA SIGN NUKTA -0B3D;AL # ORIYA SIGN AVAGRAHA -0B3E;CM # ORIYA VOWEL SIGN AA -0B3F;CM # ORIYA VOWEL SIGN I -0B40;CM # ORIYA VOWEL SIGN II -0B41;CM # ORIYA VOWEL SIGN U -0B42;CM # ORIYA VOWEL SIGN UU -0B43;CM # ORIYA VOWEL SIGN VOCALIC R -0B47;CM # ORIYA VOWEL SIGN E -0B48;CM # ORIYA VOWEL SIGN AI -0B4B;CM # ORIYA VOWEL SIGN O -0B4C;CM # ORIYA VOWEL SIGN AU -0B4D;CM # ORIYA SIGN VIRAMA -0B56;CM # ORIYA AI LENGTH MARK -0B57;CM # ORIYA AU LENGTH MARK -0B5C;AL # ORIYA LETTER RRA -0B5D;AL # ORIYA LETTER RHA -0B5F;AL # ORIYA LETTER YYA -0B60;AL # ORIYA LETTER VOCALIC RR -0B61;AL # ORIYA LETTER VOCALIC LL -0B66;NU # ORIYA DIGIT ZERO -0B67;NU # ORIYA DIGIT ONE -0B68;NU # ORIYA DIGIT TWO -0B69;NU # ORIYA DIGIT THREE -0B6A;NU # ORIYA DIGIT FOUR -0B6B;NU # ORIYA DIGIT FIVE -0B6C;NU # ORIYA DIGIT SIX -0B6D;NU # ORIYA DIGIT SEVEN -0B6E;NU # ORIYA DIGIT EIGHT -0B6F;NU # ORIYA DIGIT NINE -0B70;AL # ORIYA ISSHAR -0B71;AL # ORIYA LETTER WA -0B82;CM # TAMIL SIGN ANUSVARA -0B83;AL # TAMIL SIGN VISARGA -0B85;AL # TAMIL LETTER A -0B86;AL # TAMIL LETTER AA -0B87;AL # TAMIL LETTER I -0B88;AL # TAMIL LETTER II -0B89;AL # TAMIL LETTER U -0B8A;AL # TAMIL LETTER UU -0B8E;AL # TAMIL LETTER E -0B8F;AL # TAMIL LETTER EE -0B90;AL # TAMIL LETTER AI -0B92;AL # TAMIL LETTER O -0B93;AL # TAMIL LETTER OO -0B94;AL # TAMIL LETTER AU -0B95;AL # TAMIL LETTER KA -0B99;AL # TAMIL LETTER NGA -0B9A;AL # TAMIL LETTER CA -0B9C;AL # TAMIL LETTER JA -0B9E;AL # TAMIL LETTER NYA -0B9F;AL # TAMIL LETTER TTA -0BA3;AL # TAMIL LETTER NNA -0BA4;AL # TAMIL LETTER TA -0BA8;AL # TAMIL LETTER NA -0BA9;AL # TAMIL LETTER NNNA -0BAA;AL # TAMIL LETTER PA -0BAE;AL # TAMIL LETTER MA -0BAF;AL # TAMIL LETTER YA -0BB0;AL # TAMIL LETTER RA -0BB1;AL # TAMIL LETTER RRA -0BB2;AL # TAMIL LETTER LA -0BB3;AL # TAMIL LETTER LLA -0BB4;AL # TAMIL LETTER LLLA -0BB5;AL # TAMIL LETTER VA -0BB6;AL # TAMIL LETTER SHA -0BB7;AL # TAMIL LETTER SSA -0BB8;AL # TAMIL LETTER SA -0BB9;AL # TAMIL LETTER HA -0BBE;CM # TAMIL VOWEL SIGN AA -0BBF;CM # TAMIL VOWEL SIGN I -0BC0;CM # TAMIL VOWEL SIGN II -0BC1;CM # TAMIL VOWEL SIGN U -0BC2;CM # TAMIL VOWEL SIGN UU -0BC6;CM # TAMIL VOWEL SIGN E -0BC7;CM # TAMIL VOWEL SIGN EE -0BC8;CM # TAMIL VOWEL SIGN AI -0BCA;CM # TAMIL VOWEL SIGN O -0BCB;CM # TAMIL VOWEL SIGN OO -0BCC;CM # TAMIL VOWEL SIGN AU -0BCD;CM # TAMIL SIGN VIRAMA -0BD7;CM # TAMIL AU LENGTH MARK -0BE6;NU # TAMIL DIGIT ZERO -0BE7;NU # TAMIL DIGIT ONE -0BE8;NU # TAMIL DIGIT TWO -0BE9;NU # TAMIL DIGIT THREE -0BEA;NU # TAMIL DIGIT FOUR -0BEB;NU # TAMIL DIGIT FIVE -0BEC;NU # TAMIL DIGIT SIX -0BED;NU # TAMIL DIGIT SEVEN -0BEE;NU # TAMIL DIGIT EIGHT -0BEF;NU # TAMIL DIGIT NINE -0BF0;AL # TAMIL NUMBER TEN -0BF1;AL # TAMIL NUMBER ONE HUNDRED -0BF2;AL # TAMIL NUMBER ONE THOUSAND -0BF3;AL # TAMIL DAY SIGN -0BF4;AL # TAMIL MONTH SIGN -0BF5;AL # TAMIL YEAR SIGN -0BF6;AL # TAMIL DEBIT SIGN -0BF7;AL # TAMIL CREDIT SIGN -0BF8;AL # TAMIL AS ABOVE SIGN -0BF9;PR # TAMIL RUPEE SIGN -0BFA;AL # TAMIL NUMBER SIGN -0C01;CM # TELUGU SIGN CANDRABINDU -0C02;CM # TELUGU SIGN ANUSVARA -0C03;CM # TELUGU SIGN VISARGA -0C05;AL # TELUGU LETTER A -0C06;AL # TELUGU LETTER AA -0C07;AL # TELUGU LETTER I -0C08;AL # TELUGU LETTER II -0C09;AL # TELUGU LETTER U -0C0A;AL # TELUGU LETTER UU -0C0B;AL # TELUGU LETTER VOCALIC R -0C0C;AL # TELUGU LETTER VOCALIC L -0C0E;AL # TELUGU LETTER E -0C0F;AL # TELUGU LETTER EE -0C10;AL # TELUGU LETTER AI -0C12;AL # TELUGU LETTER O -0C13;AL # TELUGU LETTER OO -0C14;AL # TELUGU LETTER AU -0C15;AL # TELUGU LETTER KA -0C16;AL # TELUGU LETTER KHA -0C17;AL # TELUGU LETTER GA -0C18;AL # TELUGU LETTER GHA -0C19;AL # TELUGU LETTER NGA -0C1A;AL # TELUGU LETTER CA -0C1B;AL # TELUGU LETTER CHA -0C1C;AL # TELUGU LETTER JA -0C1D;AL # TELUGU LETTER JHA -0C1E;AL # TELUGU LETTER NYA -0C1F;AL # TELUGU LETTER TTA -0C20;AL # TELUGU LETTER TTHA -0C21;AL # TELUGU LETTER DDA -0C22;AL # TELUGU LETTER DDHA -0C23;AL # TELUGU LETTER NNA -0C24;AL # TELUGU LETTER TA -0C25;AL # TELUGU LETTER THA -0C26;AL # TELUGU LETTER DA -0C27;AL # TELUGU LETTER DHA -0C28;AL # TELUGU LETTER NA -0C2A;AL # TELUGU LETTER PA -0C2B;AL # TELUGU LETTER PHA -0C2C;AL # TELUGU LETTER BA -0C2D;AL # TELUGU LETTER BHA -0C2E;AL # TELUGU LETTER MA -0C2F;AL # TELUGU LETTER YA -0C30;AL # TELUGU LETTER RA -0C31;AL # TELUGU LETTER RRA -0C32;AL # TELUGU LETTER LA -0C33;AL # TELUGU LETTER LLA -0C35;AL # TELUGU LETTER VA -0C36;AL # TELUGU LETTER SHA -0C37;AL # TELUGU LETTER SSA -0C38;AL # TELUGU LETTER SA -0C39;AL # TELUGU LETTER HA -0C3E;CM # TELUGU VOWEL SIGN AA -0C3F;CM # TELUGU VOWEL SIGN I -0C40;CM # TELUGU VOWEL SIGN II -0C41;CM # TELUGU VOWEL SIGN U -0C42;CM # TELUGU VOWEL SIGN UU -0C43;CM # TELUGU VOWEL SIGN VOCALIC R -0C44;CM # TELUGU VOWEL SIGN VOCALIC RR -0C46;CM # TELUGU VOWEL SIGN E -0C47;CM # TELUGU VOWEL SIGN EE -0C48;CM # TELUGU VOWEL SIGN AI -0C4A;CM # TELUGU VOWEL SIGN O -0C4B;CM # TELUGU VOWEL SIGN OO -0C4C;CM # TELUGU VOWEL SIGN AU -0C4D;CM # TELUGU SIGN VIRAMA -0C55;CM # TELUGU LENGTH MARK -0C56;CM # TELUGU AI LENGTH MARK -0C60;AL # TELUGU LETTER VOCALIC RR -0C61;AL # TELUGU LETTER VOCALIC LL -0C66;NU # TELUGU DIGIT ZERO -0C67;NU # TELUGU DIGIT ONE -0C68;NU # TELUGU DIGIT TWO -0C69;NU # TELUGU DIGIT THREE -0C6A;NU # TELUGU DIGIT FOUR -0C6B;NU # TELUGU DIGIT FIVE -0C6C;NU # TELUGU DIGIT SIX -0C6D;NU # TELUGU DIGIT SEVEN -0C6E;NU # TELUGU DIGIT EIGHT -0C6F;NU # TELUGU DIGIT NINE -0C82;CM # KANNADA SIGN ANUSVARA -0C83;CM # KANNADA SIGN VISARGA -0C85;AL # KANNADA LETTER A -0C86;AL # KANNADA LETTER AA -0C87;AL # KANNADA LETTER I -0C88;AL # KANNADA LETTER II -0C89;AL # KANNADA LETTER U -0C8A;AL # KANNADA LETTER UU -0C8B;AL # KANNADA LETTER VOCALIC R -0C8C;AL # KANNADA LETTER VOCALIC L -0C8E;AL # KANNADA LETTER E -0C8F;AL # KANNADA LETTER EE -0C90;AL # KANNADA LETTER AI -0C92;AL # KANNADA LETTER O -0C93;AL # KANNADA LETTER OO -0C94;AL # KANNADA LETTER AU -0C95;AL # KANNADA LETTER KA -0C96;AL # KANNADA LETTER KHA -0C97;AL # KANNADA LETTER GA -0C98;AL # KANNADA LETTER GHA -0C99;AL # KANNADA LETTER NGA -0C9A;AL # KANNADA LETTER CA -0C9B;AL # KANNADA LETTER CHA -0C9C;AL # KANNADA LETTER JA -0C9D;AL # KANNADA LETTER JHA -0C9E;AL # KANNADA LETTER NYA -0C9F;AL # KANNADA LETTER TTA -0CA0;AL # KANNADA LETTER TTHA -0CA1;AL # KANNADA LETTER DDA -0CA2;AL # KANNADA LETTER DDHA -0CA3;AL # KANNADA LETTER NNA -0CA4;AL # KANNADA LETTER TA -0CA5;AL # KANNADA LETTER THA -0CA6;AL # KANNADA LETTER DA -0CA7;AL # KANNADA LETTER DHA -0CA8;AL # KANNADA LETTER NA -0CAA;AL # KANNADA LETTER PA -0CAB;AL # KANNADA LETTER PHA -0CAC;AL # KANNADA LETTER BA -0CAD;AL # KANNADA LETTER BHA -0CAE;AL # KANNADA LETTER MA -0CAF;AL # KANNADA LETTER YA -0CB0;AL # KANNADA LETTER RA -0CB1;AL # KANNADA LETTER RRA -0CB2;AL # KANNADA LETTER LA -0CB3;AL # KANNADA LETTER LLA -0CB5;AL # KANNADA LETTER VA -0CB6;AL # KANNADA LETTER SHA -0CB7;AL # KANNADA LETTER SSA -0CB8;AL # KANNADA LETTER SA -0CB9;AL # KANNADA LETTER HA -0CBC;CM # KANNADA SIGN NUKTA -0CBD;AL # KANNADA SIGN AVAGRAHA -0CBE;CM # KANNADA VOWEL SIGN AA -0CBF;CM # KANNADA VOWEL SIGN I -0CC0;CM # KANNADA VOWEL SIGN II -0CC1;CM # KANNADA VOWEL SIGN U -0CC2;CM # KANNADA VOWEL SIGN UU -0CC3;CM # KANNADA VOWEL SIGN VOCALIC R -0CC4;CM # KANNADA VOWEL SIGN VOCALIC RR -0CC6;CM # KANNADA VOWEL SIGN E -0CC7;CM # KANNADA VOWEL SIGN EE -0CC8;CM # KANNADA VOWEL SIGN AI -0CCA;CM # KANNADA VOWEL SIGN O -0CCB;CM # KANNADA VOWEL SIGN OO -0CCC;CM # KANNADA VOWEL SIGN AU -0CCD;CM # KANNADA SIGN VIRAMA -0CD5;CM # KANNADA LENGTH MARK -0CD6;CM # KANNADA AI LENGTH MARK -0CDE;AL # KANNADA LETTER FA -0CE0;AL # KANNADA LETTER VOCALIC RR -0CE1;AL # KANNADA LETTER VOCALIC LL -0CE2;CM # KANNADA VOWEL SIGN VOCALIC L -0CE3;CM # KANNADA VOWEL SIGN VOCALIC LL -0CE6;NU # KANNADA DIGIT ZERO -0CE7;NU # KANNADA DIGIT ONE -0CE8;NU # KANNADA DIGIT TWO -0CE9;NU # KANNADA DIGIT THREE -0CEA;NU # KANNADA DIGIT FOUR -0CEB;NU # KANNADA DIGIT FIVE -0CEC;NU # KANNADA DIGIT SIX -0CED;NU # KANNADA DIGIT SEVEN -0CEE;NU # KANNADA DIGIT EIGHT -0CEF;NU # KANNADA DIGIT NINE -0CF1;AL # KANNADA SIGN JIHVAMULIYA -0CF2;AL # KANNADA SIGN UPADHMANIYA -0D02;CM # MALAYALAM SIGN ANUSVARA -0D03;CM # MALAYALAM SIGN VISARGA -0D05;AL # MALAYALAM LETTER A -0D06;AL # MALAYALAM LETTER AA -0D07;AL # MALAYALAM LETTER I -0D08;AL # MALAYALAM LETTER II -0D09;AL # MALAYALAM LETTER U -0D0A;AL # MALAYALAM LETTER UU -0D0B;AL # MALAYALAM LETTER VOCALIC R -0D0C;AL # MALAYALAM LETTER VOCALIC L -0D0E;AL # MALAYALAM LETTER E -0D0F;AL # MALAYALAM LETTER EE -0D10;AL # MALAYALAM LETTER AI -0D12;AL # MALAYALAM LETTER O -0D13;AL # MALAYALAM LETTER OO -0D14;AL # MALAYALAM LETTER AU -0D15;AL # MALAYALAM LETTER KA -0D16;AL # MALAYALAM LETTER KHA -0D17;AL # MALAYALAM LETTER GA -0D18;AL # MALAYALAM LETTER GHA -0D19;AL # MALAYALAM LETTER NGA -0D1A;AL # MALAYALAM LETTER CA -0D1B;AL # MALAYALAM LETTER CHA -0D1C;AL # MALAYALAM LETTER JA -0D1D;AL # MALAYALAM LETTER JHA -0D1E;AL # MALAYALAM LETTER NYA -0D1F;AL # MALAYALAM LETTER TTA -0D20;AL # MALAYALAM LETTER TTHA -0D21;AL # MALAYALAM LETTER DDA -0D22;AL # MALAYALAM LETTER DDHA -0D23;AL # MALAYALAM LETTER NNA -0D24;AL # MALAYALAM LETTER TA -0D25;AL # MALAYALAM LETTER THA -0D26;AL # MALAYALAM LETTER DA -0D27;AL # MALAYALAM LETTER DHA -0D28;AL # MALAYALAM LETTER NA -0D2A;AL # MALAYALAM LETTER PA -0D2B;AL # MALAYALAM LETTER PHA -0D2C;AL # MALAYALAM LETTER BA -0D2D;AL # MALAYALAM LETTER BHA -0D2E;AL # MALAYALAM LETTER MA -0D2F;AL # MALAYALAM LETTER YA -0D30;AL # MALAYALAM LETTER RA -0D31;AL # MALAYALAM LETTER RRA -0D32;AL # MALAYALAM LETTER LA -0D33;AL # MALAYALAM LETTER LLA -0D34;AL # MALAYALAM LETTER LLLA -0D35;AL # MALAYALAM LETTER VA -0D36;AL # MALAYALAM LETTER SHA -0D37;AL # MALAYALAM LETTER SSA -0D38;AL # MALAYALAM LETTER SA -0D39;AL # MALAYALAM LETTER HA -0D3E;CM # MALAYALAM VOWEL SIGN AA -0D3F;CM # MALAYALAM VOWEL SIGN I -0D40;CM # MALAYALAM VOWEL SIGN II -0D41;CM # MALAYALAM VOWEL SIGN U -0D42;CM # MALAYALAM VOWEL SIGN UU -0D43;CM # MALAYALAM VOWEL SIGN VOCALIC R -0D46;CM # MALAYALAM VOWEL SIGN E -0D47;CM # MALAYALAM VOWEL SIGN EE -0D48;CM # MALAYALAM VOWEL SIGN AI -0D4A;CM # MALAYALAM VOWEL SIGN O -0D4B;CM # MALAYALAM VOWEL SIGN OO -0D4C;CM # MALAYALAM VOWEL SIGN AU -0D4D;CM # MALAYALAM SIGN VIRAMA -0D57;CM # MALAYALAM AU LENGTH MARK -0D60;AL # MALAYALAM LETTER VOCALIC RR -0D61;AL # MALAYALAM LETTER VOCALIC LL -0D66;NU # MALAYALAM DIGIT ZERO -0D67;NU # MALAYALAM DIGIT ONE -0D68;NU # MALAYALAM DIGIT TWO -0D69;NU # MALAYALAM DIGIT THREE -0D6A;NU # MALAYALAM DIGIT FOUR -0D6B;NU # MALAYALAM DIGIT FIVE -0D6C;NU # MALAYALAM DIGIT SIX -0D6D;NU # MALAYALAM DIGIT SEVEN -0D6E;NU # MALAYALAM DIGIT EIGHT -0D6F;NU # MALAYALAM DIGIT NINE -0D82;CM # SINHALA SIGN ANUSVARAYA -0D83;CM # SINHALA SIGN VISARGAYA -0D85;AL # SINHALA LETTER AYANNA -0D86;AL # SINHALA LETTER AAYANNA -0D87;AL # SINHALA LETTER AEYANNA -0D88;AL # SINHALA LETTER AEEYANNA -0D89;AL # SINHALA LETTER IYANNA -0D8A;AL # SINHALA LETTER IIYANNA -0D8B;AL # SINHALA LETTER UYANNA -0D8C;AL # SINHALA LETTER UUYANNA -0D8D;AL # SINHALA LETTER IRUYANNA -0D8E;AL # SINHALA LETTER IRUUYANNA -0D8F;AL # SINHALA LETTER ILUYANNA -0D90;AL # SINHALA LETTER ILUUYANNA -0D91;AL # SINHALA LETTER EYANNA -0D92;AL # SINHALA LETTER EEYANNA -0D93;AL # SINHALA LETTER AIYANNA -0D94;AL # SINHALA LETTER OYANNA -0D95;AL # SINHALA LETTER OOYANNA -0D96;AL # SINHALA LETTER AUYANNA -0D9A;AL # SINHALA LETTER ALPAPRAANA KAYANNA -0D9B;AL # SINHALA LETTER MAHAAPRAANA KAYANNA -0D9C;AL # SINHALA LETTER ALPAPRAANA GAYANNA -0D9D;AL # SINHALA LETTER MAHAAPRAANA GAYANNA -0D9E;AL # SINHALA LETTER KANTAJA NAASIKYAYA -0D9F;AL # SINHALA LETTER SANYAKA GAYANNA -0DA0;AL # SINHALA LETTER ALPAPRAANA CAYANNA -0DA1;AL # SINHALA LETTER MAHAAPRAANA CAYANNA -0DA2;AL # SINHALA LETTER ALPAPRAANA JAYANNA -0DA3;AL # SINHALA LETTER MAHAAPRAANA JAYANNA -0DA4;AL # SINHALA LETTER TAALUJA NAASIKYAYA -0DA5;AL # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA -0DA6;AL # SINHALA LETTER SANYAKA JAYANNA -0DA7;AL # SINHALA LETTER ALPAPRAANA TTAYANNA -0DA8;AL # SINHALA LETTER MAHAAPRAANA TTAYANNA -0DA9;AL # SINHALA LETTER ALPAPRAANA DDAYANNA -0DAA;AL # SINHALA LETTER MAHAAPRAANA DDAYANNA -0DAB;AL # SINHALA LETTER MUURDHAJA NAYANNA -0DAC;AL # SINHALA LETTER SANYAKA DDAYANNA -0DAD;AL # SINHALA LETTER ALPAPRAANA TAYANNA -0DAE;AL # SINHALA LETTER MAHAAPRAANA TAYANNA -0DAF;AL # SINHALA LETTER ALPAPRAANA DAYANNA -0DB0;AL # SINHALA LETTER MAHAAPRAANA DAYANNA -0DB1;AL # SINHALA LETTER DANTAJA NAYANNA -0DB3;AL # SINHALA LETTER SANYAKA DAYANNA -0DB4;AL # SINHALA LETTER ALPAPRAANA PAYANNA -0DB5;AL # SINHALA LETTER MAHAAPRAANA PAYANNA -0DB6;AL # SINHALA LETTER ALPAPRAANA BAYANNA -0DB7;AL # SINHALA LETTER MAHAAPRAANA BAYANNA -0DB8;AL # SINHALA LETTER MAYANNA -0DB9;AL # SINHALA LETTER AMBA BAYANNA -0DBA;AL # SINHALA LETTER YAYANNA -0DBB;AL # SINHALA LETTER RAYANNA -0DBD;AL # SINHALA LETTER DANTAJA LAYANNA -0DC0;AL # SINHALA LETTER VAYANNA -0DC1;AL # SINHALA LETTER TAALUJA SAYANNA -0DC2;AL # SINHALA LETTER MUURDHAJA SAYANNA -0DC3;AL # SINHALA LETTER DANTAJA SAYANNA -0DC4;AL # SINHALA LETTER HAYANNA -0DC5;AL # SINHALA LETTER MUURDHAJA LAYANNA -0DC6;AL # SINHALA LETTER FAYANNA -0DCA;CM # SINHALA SIGN AL-LAKUNA -0DCF;CM # SINHALA VOWEL SIGN AELA-PILLA -0DD0;CM # SINHALA VOWEL SIGN KETTI AEDA-PILLA -0DD1;CM # SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2;CM # SINHALA VOWEL SIGN KETTI IS-PILLA -0DD3;CM # SINHALA VOWEL SIGN DIGA IS-PILLA -0DD4;CM # SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6;CM # SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8;CM # SINHALA VOWEL SIGN GAETTA-PILLA -0DD9;CM # SINHALA VOWEL SIGN KOMBUVA -0DDA;CM # SINHALA VOWEL SIGN DIGA KOMBUVA -0DDB;CM # SINHALA VOWEL SIGN KOMBU DEKA -0DDC;CM # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA -0DDD;CM # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA -0DDE;CM # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA -0DDF;CM # SINHALA VOWEL SIGN GAYANUKITTA -0DF2;CM # SINHALA VOWEL SIGN DIGA GAETTA-PILLA -0DF3;CM # SINHALA VOWEL SIGN DIGA GAYANUKITTA -0DF4;AL # SINHALA PUNCTUATION KUNDDALIYA -0E01;SA # THAI CHARACTER KO KAI -0E02;SA # THAI CHARACTER KHO KHAI -0E03;SA # THAI CHARACTER KHO KHUAT -0E04;SA # THAI CHARACTER KHO KHWAI -0E05;SA # THAI CHARACTER KHO KHON -0E06;SA # THAI CHARACTER KHO RAKHANG -0E07;SA # THAI CHARACTER NGO NGU -0E08;SA # THAI CHARACTER CHO CHAN -0E09;SA # THAI CHARACTER CHO CHING -0E0A;SA # THAI CHARACTER CHO CHANG -0E0B;SA # THAI CHARACTER SO SO -0E0C;SA # THAI CHARACTER CHO CHOE -0E0D;SA # THAI CHARACTER YO YING -0E0E;SA # THAI CHARACTER DO CHADA -0E0F;SA # THAI CHARACTER TO PATAK -0E10;SA # THAI CHARACTER THO THAN -0E11;SA # THAI CHARACTER THO NANGMONTHO -0E12;SA # THAI CHARACTER THO PHUTHAO -0E13;SA # THAI CHARACTER NO NEN -0E14;SA # THAI CHARACTER DO DEK -0E15;SA # THAI CHARACTER TO TAO -0E16;SA # THAI CHARACTER THO THUNG -0E17;SA # THAI CHARACTER THO THAHAN -0E18;SA # THAI CHARACTER THO THONG -0E19;SA # THAI CHARACTER NO NU -0E1A;SA # THAI CHARACTER BO BAIMAI -0E1B;SA # THAI CHARACTER PO PLA -0E1C;SA # THAI CHARACTER PHO PHUNG -0E1D;SA # THAI CHARACTER FO FA -0E1E;SA # THAI CHARACTER PHO PHAN -0E1F;SA # THAI CHARACTER FO FAN -0E20;SA # THAI CHARACTER PHO SAMPHAO -0E21;SA # THAI CHARACTER MO MA -0E22;SA # THAI CHARACTER YO YAK -0E23;SA # THAI CHARACTER RO RUA -0E24;SA # THAI CHARACTER RU -0E25;SA # THAI CHARACTER LO LING -0E26;SA # THAI CHARACTER LU -0E27;SA # THAI CHARACTER WO WAEN -0E28;SA # THAI CHARACTER SO SALA -0E29;SA # THAI CHARACTER SO RUSI -0E2A;SA # THAI CHARACTER SO SUA -0E2B;SA # THAI CHARACTER HO HIP -0E2C;SA # THAI CHARACTER LO CHULA -0E2D;SA # THAI CHARACTER O ANG -0E2E;SA # THAI CHARACTER HO NOKHUK -0E2F;SA # THAI CHARACTER PAIYANNOI -0E30;SA # THAI CHARACTER SARA A -0E31;SA # THAI CHARACTER MAI HAN-AKAT -0E32;SA # THAI CHARACTER SARA AA -0E33;SA # THAI CHARACTER SARA AM -0E34;SA # THAI CHARACTER SARA I -0E35;SA # THAI CHARACTER SARA II -0E36;SA # THAI CHARACTER SARA UE -0E37;SA # THAI CHARACTER SARA UEE -0E38;SA # THAI CHARACTER SARA U -0E39;SA # THAI CHARACTER SARA UU -0E3A;SA # THAI CHARACTER PHINTHU -0E3F;PR # THAI CURRENCY SYMBOL BAHT -0E40;SA # THAI CHARACTER SARA E -0E41;SA # THAI CHARACTER SARA AE -0E42;SA # THAI CHARACTER SARA O -0E43;SA # THAI CHARACTER SARA AI MAIMUAN -0E44;SA # THAI CHARACTER SARA AI MAIMALAI -0E45;SA # THAI CHARACTER LAKKHANGYAO -0E46;SA # THAI CHARACTER MAIYAMOK -0E47;SA # THAI CHARACTER MAITAIKHU -0E48;SA # THAI CHARACTER MAI EK -0E49;SA # THAI CHARACTER MAI THO -0E4A;SA # THAI CHARACTER MAI TRI -0E4B;SA # THAI CHARACTER MAI CHATTAWA -0E4C;SA # THAI CHARACTER THANTHAKHAT -0E4D;SA # THAI CHARACTER NIKHAHIT -0E4E;SA # THAI CHARACTER YAMAKKAN -0E4F;AL # THAI CHARACTER FONGMAN -0E50;NU # THAI DIGIT ZERO -0E51;NU # THAI DIGIT ONE -0E52;NU # THAI DIGIT TWO -0E53;NU # THAI DIGIT THREE -0E54;NU # THAI DIGIT FOUR -0E55;NU # THAI DIGIT FIVE -0E56;NU # THAI DIGIT SIX -0E57;NU # THAI DIGIT SEVEN -0E58;NU # THAI DIGIT EIGHT -0E59;NU # THAI DIGIT NINE -0E5A;BA # THAI CHARACTER ANGKHANKHU -0E5B;BA # THAI CHARACTER KHOMUT -0E81;SA # LAO LETTER KO -0E82;SA # LAO LETTER KHO SUNG -0E84;SA # LAO LETTER KHO TAM -0E87;SA # LAO LETTER NGO -0E88;SA # LAO LETTER CO -0E8A;SA # LAO LETTER SO TAM -0E8D;SA # LAO LETTER NYO -0E94;SA # LAO LETTER DO -0E95;SA # LAO LETTER TO -0E96;SA # LAO LETTER THO SUNG -0E97;SA # LAO LETTER THO TAM -0E99;SA # LAO LETTER NO -0E9A;SA # LAO LETTER BO -0E9B;SA # LAO LETTER PO -0E9C;SA # LAO LETTER PHO SUNG -0E9D;SA # LAO LETTER FO TAM -0E9E;SA # LAO LETTER PHO TAM -0E9F;SA # LAO LETTER FO SUNG -0EA1;SA # LAO LETTER MO -0EA2;SA # LAO LETTER YO -0EA3;SA # LAO LETTER LO LING -0EA5;SA # LAO LETTER LO LOOT -0EA7;SA # LAO LETTER WO -0EAA;SA # LAO LETTER SO SUNG -0EAB;SA # LAO LETTER HO SUNG -0EAD;SA # LAO LETTER O -0EAE;SA # LAO LETTER HO TAM -0EAF;SA # LAO ELLIPSIS -0EB0;SA # LAO VOWEL SIGN A -0EB1;SA # LAO VOWEL SIGN MAI KAN -0EB2;SA # LAO VOWEL SIGN AA -0EB3;SA # LAO VOWEL SIGN AM -0EB4;SA # LAO VOWEL SIGN I -0EB5;SA # LAO VOWEL SIGN II -0EB6;SA # LAO VOWEL SIGN Y -0EB7;SA # LAO VOWEL SIGN YY -0EB8;SA # LAO VOWEL SIGN U -0EB9;SA # LAO VOWEL SIGN UU -0EBB;SA # LAO VOWEL SIGN MAI KON -0EBC;SA # LAO SEMIVOWEL SIGN LO -0EBD;SA # LAO SEMIVOWEL SIGN NYO -0EC0;SA # LAO VOWEL SIGN E -0EC1;SA # LAO VOWEL SIGN EI -0EC2;SA # LAO VOWEL SIGN O -0EC3;SA # LAO VOWEL SIGN AY -0EC4;SA # LAO VOWEL SIGN AI -0EC6;SA # LAO KO LA -0EC8;SA # LAO TONE MAI EK -0EC9;SA # LAO TONE MAI THO -0ECA;SA # LAO TONE MAI TI -0ECB;SA # LAO TONE MAI CATAWA -0ECC;SA # LAO CANCELLATION MARK -0ECD;SA # LAO NIGGAHITA -0ED0;NU # LAO DIGIT ZERO -0ED1;NU # LAO DIGIT ONE -0ED2;NU # LAO DIGIT TWO -0ED3;NU # LAO DIGIT THREE -0ED4;NU # LAO DIGIT FOUR -0ED5;NU # LAO DIGIT FIVE -0ED6;NU # LAO DIGIT SIX -0ED7;NU # LAO DIGIT SEVEN -0ED8;NU # LAO DIGIT EIGHT -0ED9;NU # LAO DIGIT NINE -0EDC;SA # LAO HO NO -0EDD;SA # LAO HO MO -0F00;AL # TIBETAN SYLLABLE OM -0F01;BB # TIBETAN MARK GTER YIG MGO TRUNCATED A -0F02;BB # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA -0F03;BB # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA -0F04;BB # TIBETAN MARK INITIAL YIG MGO MDUN MA -0F05;AL # TIBETAN MARK CLOSING YIG MGO SGAB MA -0F06;BB # TIBETAN MARK CARET YIG MGO PHUR SHAD MA -0F07;BB # TIBETAN MARK YIG MGO TSHEG SHAD MA -0F08;GL # TIBETAN MARK SBRUL SHAD -0F09;BB # TIBETAN MARK BSKUR YIG MGO -0F0A;BB # TIBETAN MARK BKA- SHOG YIG MGO -0F0B;BA # TIBETAN MARK INTERSYLLABIC TSHEG -0F0C;GL # TIBETAN MARK DELIMITER TSHEG BSTAR -0F0D;EX # TIBETAN MARK SHAD -0F0E;EX # TIBETAN MARK NYIS SHAD -0F0F;EX # TIBETAN MARK TSHEG SHAD -0F10;EX # TIBETAN MARK NYIS TSHEG SHAD -0F11;EX # TIBETAN MARK RIN CHEN SPUNGS SHAD -0F12;GL # TIBETAN MARK RGYA GRAM SHAD -0F13;AL # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN -0F14;EX # TIBETAN MARK GTER TSHEG -0F15;AL # TIBETAN LOGOTYPE SIGN CHAD RTAGS -0F16;AL # TIBETAN LOGOTYPE SIGN LHAG RTAGS -0F17;AL # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS -0F18;CM # TIBETAN ASTROLOGICAL SIGN -KHYUD PA -0F19;CM # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F1A;AL # TIBETAN SIGN RDEL DKAR GCIG -0F1B;AL # TIBETAN SIGN RDEL DKAR GNYIS -0F1C;AL # TIBETAN SIGN RDEL DKAR GSUM -0F1D;AL # TIBETAN SIGN RDEL NAG GCIG -0F1E;AL # TIBETAN SIGN RDEL NAG GNYIS -0F1F;AL # TIBETAN SIGN RDEL DKAR RDEL NAG -0F20;NU # TIBETAN DIGIT ZERO -0F21;NU # TIBETAN DIGIT ONE -0F22;NU # TIBETAN DIGIT TWO -0F23;NU # TIBETAN DIGIT THREE -0F24;NU # TIBETAN DIGIT FOUR -0F25;NU # TIBETAN DIGIT FIVE -0F26;NU # TIBETAN DIGIT SIX -0F27;NU # TIBETAN DIGIT SEVEN -0F28;NU # TIBETAN DIGIT EIGHT -0F29;NU # TIBETAN DIGIT NINE -0F2A;AL # TIBETAN DIGIT HALF ONE -0F2B;AL # TIBETAN DIGIT HALF TWO -0F2C;AL # TIBETAN DIGIT HALF THREE -0F2D;AL # TIBETAN DIGIT HALF FOUR -0F2E;AL # TIBETAN DIGIT HALF FIVE -0F2F;AL # TIBETAN DIGIT HALF SIX -0F30;AL # TIBETAN DIGIT HALF SEVEN -0F31;AL # TIBETAN DIGIT HALF EIGHT -0F32;AL # TIBETAN DIGIT HALF NINE -0F33;AL # TIBETAN DIGIT HALF ZERO -0F34;BA # TIBETAN MARK BSDUS RTAGS -0F35;CM # TIBETAN MARK NGAS BZUNG NYI ZLA -0F36;AL # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN -0F37;CM # TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F38;AL # TIBETAN MARK CHE MGO -0F39;CM # TIBETAN MARK TSA -PHRU -0F3A;OP # TIBETAN MARK GUG RTAGS GYON -0F3B;CL # TIBETAN MARK GUG RTAGS GYAS -0F3C;OP # TIBETAN MARK ANG KHANG GYON -0F3D;CL # TIBETAN MARK ANG KHANG GYAS -0F3E;CM # TIBETAN SIGN YAR TSHES -0F3F;CM # TIBETAN SIGN MAR TSHES -0F40;AL # TIBETAN LETTER KA -0F41;AL # TIBETAN LETTER KHA -0F42;AL # TIBETAN LETTER GA -0F43;AL # TIBETAN LETTER GHA -0F44;AL # TIBETAN LETTER NGA -0F45;AL # TIBETAN LETTER CA -0F46;AL # TIBETAN LETTER CHA -0F47;AL # TIBETAN LETTER JA -0F49;AL # TIBETAN LETTER NYA -0F4A;AL # TIBETAN LETTER TTA -0F4B;AL # TIBETAN LETTER TTHA -0F4C;AL # TIBETAN LETTER DDA -0F4D;AL # TIBETAN LETTER DDHA -0F4E;AL # TIBETAN LETTER NNA -0F4F;AL # TIBETAN LETTER TA -0F50;AL # TIBETAN LETTER THA -0F51;AL # TIBETAN LETTER DA -0F52;AL # TIBETAN LETTER DHA -0F53;AL # TIBETAN LETTER NA -0F54;AL # TIBETAN LETTER PA -0F55;AL # TIBETAN LETTER PHA -0F56;AL # TIBETAN LETTER BA -0F57;AL # TIBETAN LETTER BHA -0F58;AL # TIBETAN LETTER MA -0F59;AL # TIBETAN LETTER TSA -0F5A;AL # TIBETAN LETTER TSHA -0F5B;AL # TIBETAN LETTER DZA -0F5C;AL # TIBETAN LETTER DZHA -0F5D;AL # TIBETAN LETTER WA -0F5E;AL # TIBETAN LETTER ZHA -0F5F;AL # TIBETAN LETTER ZA -0F60;AL # TIBETAN LETTER -A -0F61;AL # TIBETAN LETTER YA -0F62;AL # TIBETAN LETTER RA -0F63;AL # TIBETAN LETTER LA -0F64;AL # TIBETAN LETTER SHA -0F65;AL # TIBETAN LETTER SSA -0F66;AL # TIBETAN LETTER SA -0F67;AL # TIBETAN LETTER HA -0F68;AL # TIBETAN LETTER A -0F69;AL # TIBETAN LETTER KSSA -0F6A;AL # TIBETAN LETTER FIXED-FORM RA -0F71;CM # TIBETAN VOWEL SIGN AA -0F72;CM # TIBETAN VOWEL SIGN I -0F73;CM # TIBETAN VOWEL SIGN II -0F74;CM # TIBETAN VOWEL SIGN U -0F75;CM # TIBETAN VOWEL SIGN UU -0F76;CM # TIBETAN VOWEL SIGN VOCALIC R -0F77;CM # TIBETAN VOWEL SIGN VOCALIC RR -0F78;CM # TIBETAN VOWEL SIGN VOCALIC L -0F79;CM # TIBETAN VOWEL SIGN VOCALIC LL -0F7A;CM # TIBETAN VOWEL SIGN E -0F7B;CM # TIBETAN VOWEL SIGN EE -0F7C;CM # TIBETAN VOWEL SIGN O -0F7D;CM # TIBETAN VOWEL SIGN OO -0F7E;CM # TIBETAN SIGN RJES SU NGA RO -0F7F;BA # TIBETAN SIGN RNAM BCAD -0F80;CM # TIBETAN VOWEL SIGN REVERSED I -0F81;CM # TIBETAN VOWEL SIGN REVERSED II -0F82;CM # TIBETAN SIGN NYI ZLA NAA DA -0F83;CM # TIBETAN SIGN SNA LDAN -0F84;CM # TIBETAN MARK HALANTA -0F85;BA # TIBETAN MARK PALUTA -0F86;CM # TIBETAN SIGN LCI RTAGS -0F87;CM # TIBETAN SIGN YANG RTAGS -0F88;AL # TIBETAN SIGN LCE TSA CAN -0F89;AL # TIBETAN SIGN MCHU CAN -0F8A;AL # TIBETAN SIGN GRU CAN RGYINGS -0F8B;AL # TIBETAN SIGN GRU MED RGYINGS -0F90;CM # TIBETAN SUBJOINED LETTER KA -0F91;CM # TIBETAN SUBJOINED LETTER KHA -0F92;CM # TIBETAN SUBJOINED LETTER GA -0F93;CM # TIBETAN SUBJOINED LETTER GHA -0F94;CM # TIBETAN SUBJOINED LETTER NGA -0F95;CM # TIBETAN SUBJOINED LETTER CA -0F96;CM # TIBETAN SUBJOINED LETTER CHA -0F97;CM # TIBETAN SUBJOINED LETTER JA -0F99;CM # TIBETAN SUBJOINED LETTER NYA -0F9A;CM # TIBETAN SUBJOINED LETTER TTA -0F9B;CM # TIBETAN SUBJOINED LETTER TTHA -0F9C;CM # TIBETAN SUBJOINED LETTER DDA -0F9D;CM # TIBETAN SUBJOINED LETTER DDHA -0F9E;CM # TIBETAN SUBJOINED LETTER NNA -0F9F;CM # TIBETAN SUBJOINED LETTER TA -0FA0;CM # TIBETAN SUBJOINED LETTER THA -0FA1;CM # TIBETAN SUBJOINED LETTER DA -0FA2;CM # TIBETAN SUBJOINED LETTER DHA -0FA3;CM # TIBETAN SUBJOINED LETTER NA -0FA4;CM # TIBETAN SUBJOINED LETTER PA -0FA5;CM # TIBETAN SUBJOINED LETTER PHA -0FA6;CM # TIBETAN SUBJOINED LETTER BA -0FA7;CM # TIBETAN SUBJOINED LETTER BHA -0FA8;CM # TIBETAN SUBJOINED LETTER MA -0FA9;CM # TIBETAN SUBJOINED LETTER TSA -0FAA;CM # TIBETAN SUBJOINED LETTER TSHA -0FAB;CM # TIBETAN SUBJOINED LETTER DZA -0FAC;CM # TIBETAN SUBJOINED LETTER DZHA -0FAD;CM # TIBETAN SUBJOINED LETTER WA -0FAE;CM # TIBETAN SUBJOINED LETTER ZHA -0FAF;CM # TIBETAN SUBJOINED LETTER ZA -0FB0;CM # TIBETAN SUBJOINED LETTER -A -0FB1;CM # TIBETAN SUBJOINED LETTER YA -0FB2;CM # TIBETAN SUBJOINED LETTER RA -0FB3;CM # TIBETAN SUBJOINED LETTER LA -0FB4;CM # TIBETAN SUBJOINED LETTER SHA -0FB5;CM # TIBETAN SUBJOINED LETTER SSA -0FB6;CM # TIBETAN SUBJOINED LETTER SA -0FB7;CM # TIBETAN SUBJOINED LETTER HA -0FB8;CM # TIBETAN SUBJOINED LETTER A -0FB9;CM # TIBETAN SUBJOINED LETTER KSSA -0FBA;CM # TIBETAN SUBJOINED LETTER FIXED-FORM WA -0FBB;CM # TIBETAN SUBJOINED LETTER FIXED-FORM YA -0FBC;CM # TIBETAN SUBJOINED LETTER FIXED-FORM RA -0FBE;BA # TIBETAN KU RU KHA -0FBF;BA # TIBETAN KU RU KHA BZHI MIG CAN -0FC0;AL # TIBETAN CANTILLATION SIGN HEAVY BEAT -0FC1;AL # TIBETAN CANTILLATION SIGN LIGHT BEAT -0FC2;AL # TIBETAN CANTILLATION SIGN CANG TE-U -0FC3;AL # TIBETAN CANTILLATION SIGN SBUB -CHAL -0FC4;AL # TIBETAN SYMBOL DRIL BU -0FC5;AL # TIBETAN SYMBOL RDO RJE -0FC6;CM # TIBETAN SYMBOL PADMA GDAN -0FC7;AL # TIBETAN SYMBOL RDO RJE RGYA GRAM -0FC8;AL # TIBETAN SYMBOL PHUR PA -0FC9;AL # TIBETAN SYMBOL NOR BU -0FCA;AL # TIBETAN SYMBOL NOR BU NYIS -KHYIL -0FCB;AL # TIBETAN SYMBOL NOR BU GSUM -KHYIL -0FCC;AL # TIBETAN SYMBOL NOR BU BZHI -KHYIL -0FCF;AL # TIBETAN SIGN RDEL NAG GSUM -0FD0;BB # TIBETAN MARK BSKA- SHOG GI MGO RGYAN -0FD1;BB # TIBETAN MARK MNYAM YIG GI MGO RGYAN -1000;SA # MYANMAR LETTER KA -1001;SA # MYANMAR LETTER KHA -1002;SA # MYANMAR LETTER GA -1003;SA # MYANMAR LETTER GHA -1004;SA # MYANMAR LETTER NGA -1005;SA # MYANMAR LETTER CA -1006;SA # MYANMAR LETTER CHA -1007;SA # MYANMAR LETTER JA -1008;SA # MYANMAR LETTER JHA -1009;SA # MYANMAR LETTER NYA -100A;SA # MYANMAR LETTER NNYA -100B;SA # MYANMAR LETTER TTA -100C;SA # MYANMAR LETTER TTHA -100D;SA # MYANMAR LETTER DDA -100E;SA # MYANMAR LETTER DDHA -100F;SA # MYANMAR LETTER NNA -1010;SA # MYANMAR LETTER TA -1011;SA # MYANMAR LETTER THA -1012;SA # MYANMAR LETTER DA -1013;SA # MYANMAR LETTER DHA -1014;SA # MYANMAR LETTER NA -1015;SA # MYANMAR LETTER PA -1016;SA # MYANMAR LETTER PHA -1017;SA # MYANMAR LETTER BA -1018;SA # MYANMAR LETTER BHA -1019;SA # MYANMAR LETTER MA -101A;SA # MYANMAR LETTER YA -101B;SA # MYANMAR LETTER RA -101C;SA # MYANMAR LETTER LA -101D;SA # MYANMAR LETTER WA -101E;SA # MYANMAR LETTER SA -101F;SA # MYANMAR LETTER HA -1020;SA # MYANMAR LETTER LLA -1021;SA # MYANMAR LETTER A -1023;SA # MYANMAR LETTER I -1024;SA # MYANMAR LETTER II -1025;SA # MYANMAR LETTER U -1026;SA # MYANMAR LETTER UU -1027;SA # MYANMAR LETTER E -1029;SA # MYANMAR LETTER O -102A;SA # MYANMAR LETTER AU -102C;SA # MYANMAR VOWEL SIGN AA -102D;SA # MYANMAR VOWEL SIGN I -102E;SA # MYANMAR VOWEL SIGN II -102F;SA # MYANMAR VOWEL SIGN U -1030;SA # MYANMAR VOWEL SIGN UU -1031;SA # MYANMAR VOWEL SIGN E -1032;SA # MYANMAR VOWEL SIGN AI -1036;SA # MYANMAR SIGN ANUSVARA -1037;SA # MYANMAR SIGN DOT BELOW -1038;SA # MYANMAR SIGN VISARGA -1039;SA # MYANMAR SIGN VIRAMA -1040;NU # MYANMAR DIGIT ZERO -1041;NU # MYANMAR DIGIT ONE -1042;NU # MYANMAR DIGIT TWO -1043;NU # MYANMAR DIGIT THREE -1044;NU # MYANMAR DIGIT FOUR -1045;NU # MYANMAR DIGIT FIVE -1046;NU # MYANMAR DIGIT SIX -1047;NU # MYANMAR DIGIT SEVEN -1048;NU # MYANMAR DIGIT EIGHT -1049;NU # MYANMAR DIGIT NINE -104A;BA # MYANMAR SIGN LITTLE SECTION -104B;BA # MYANMAR SIGN SECTION -104C;AL # MYANMAR SYMBOL LOCATIVE -104D;AL # MYANMAR SYMBOL COMPLETED -104E;AL # MYANMAR SYMBOL AFOREMENTIONED -104F;AL # MYANMAR SYMBOL GENITIVE -1050;SA # MYANMAR LETTER SHA -1051;SA # MYANMAR LETTER SSA -1052;SA # MYANMAR LETTER VOCALIC R -1053;SA # MYANMAR LETTER VOCALIC RR -1054;SA # MYANMAR LETTER VOCALIC L -1055;SA # MYANMAR LETTER VOCALIC LL -1056;SA # MYANMAR VOWEL SIGN VOCALIC R -1057;SA # MYANMAR VOWEL SIGN VOCALIC RR -1058;SA # MYANMAR VOWEL SIGN VOCALIC L -1059;SA # MYANMAR VOWEL SIGN VOCALIC LL -10A0;AL # GEORGIAN CAPITAL LETTER AN -10A1;AL # GEORGIAN CAPITAL LETTER BAN -10A2;AL # GEORGIAN CAPITAL LETTER GAN -10A3;AL # GEORGIAN CAPITAL LETTER DON -10A4;AL # GEORGIAN CAPITAL LETTER EN -10A5;AL # GEORGIAN CAPITAL LETTER VIN -10A6;AL # GEORGIAN CAPITAL LETTER ZEN -10A7;AL # GEORGIAN CAPITAL LETTER TAN -10A8;AL # GEORGIAN CAPITAL LETTER IN -10A9;AL # GEORGIAN CAPITAL LETTER KAN -10AA;AL # GEORGIAN CAPITAL LETTER LAS -10AB;AL # GEORGIAN CAPITAL LETTER MAN -10AC;AL # GEORGIAN CAPITAL LETTER NAR -10AD;AL # GEORGIAN CAPITAL LETTER ON -10AE;AL # GEORGIAN CAPITAL LETTER PAR -10AF;AL # GEORGIAN CAPITAL LETTER ZHAR -10B0;AL # GEORGIAN CAPITAL LETTER RAE -10B1;AL # GEORGIAN CAPITAL LETTER SAN -10B2;AL # GEORGIAN CAPITAL LETTER TAR -10B3;AL # GEORGIAN CAPITAL LETTER UN -10B4;AL # GEORGIAN CAPITAL LETTER PHAR -10B5;AL # GEORGIAN CAPITAL LETTER KHAR -10B6;AL # GEORGIAN CAPITAL LETTER GHAN -10B7;AL # GEORGIAN CAPITAL LETTER QAR -10B8;AL # GEORGIAN CAPITAL LETTER SHIN -10B9;AL # GEORGIAN CAPITAL LETTER CHIN -10BA;AL # GEORGIAN CAPITAL LETTER CAN -10BB;AL # GEORGIAN CAPITAL LETTER JIL -10BC;AL # GEORGIAN CAPITAL LETTER CIL -10BD;AL # GEORGIAN CAPITAL LETTER CHAR -10BE;AL # GEORGIAN CAPITAL LETTER XAN -10BF;AL # GEORGIAN CAPITAL LETTER JHAN -10C0;AL # GEORGIAN CAPITAL LETTER HAE -10C1;AL # GEORGIAN CAPITAL LETTER HE -10C2;AL # GEORGIAN CAPITAL LETTER HIE -10C3;AL # GEORGIAN CAPITAL LETTER WE -10C4;AL # GEORGIAN CAPITAL LETTER HAR -10C5;AL # GEORGIAN CAPITAL LETTER HOE -10D0;AL # GEORGIAN LETTER AN -10D1;AL # GEORGIAN LETTER BAN -10D2;AL # GEORGIAN LETTER GAN -10D3;AL # GEORGIAN LETTER DON -10D4;AL # GEORGIAN LETTER EN -10D5;AL # GEORGIAN LETTER VIN -10D6;AL # GEORGIAN LETTER ZEN -10D7;AL # GEORGIAN LETTER TAN -10D8;AL # GEORGIAN LETTER IN -10D9;AL # GEORGIAN LETTER KAN -10DA;AL # GEORGIAN LETTER LAS -10DB;AL # GEORGIAN LETTER MAN -10DC;AL # GEORGIAN LETTER NAR -10DD;AL # GEORGIAN LETTER ON -10DE;AL # GEORGIAN LETTER PAR -10DF;AL # GEORGIAN LETTER ZHAR -10E0;AL # GEORGIAN LETTER RAE -10E1;AL # GEORGIAN LETTER SAN -10E2;AL # GEORGIAN LETTER TAR -10E3;AL # GEORGIAN LETTER UN -10E4;AL # GEORGIAN LETTER PHAR -10E5;AL # GEORGIAN LETTER KHAR -10E6;AL # GEORGIAN LETTER GHAN -10E7;AL # GEORGIAN LETTER QAR -10E8;AL # GEORGIAN LETTER SHIN -10E9;AL # GEORGIAN LETTER CHIN -10EA;AL # GEORGIAN LETTER CAN -10EB;AL # GEORGIAN LETTER JIL -10EC;AL # GEORGIAN LETTER CIL -10ED;AL # GEORGIAN LETTER CHAR -10EE;AL # GEORGIAN LETTER XAN -10EF;AL # GEORGIAN LETTER JHAN -10F0;AL # GEORGIAN LETTER HAE -10F1;AL # GEORGIAN LETTER HE -10F2;AL # GEORGIAN LETTER HIE -10F3;AL # GEORGIAN LETTER WE -10F4;AL # GEORGIAN LETTER HAR -10F5;AL # GEORGIAN LETTER HOE -10F6;AL # GEORGIAN LETTER FI -10F7;AL # GEORGIAN LETTER YN -10F8;AL # GEORGIAN LETTER ELIFI -10F9;AL # GEORGIAN LETTER TURNED GAN -10FA;AL # GEORGIAN LETTER AIN -10FB;AL # GEORGIAN PARAGRAPH SEPARATOR -10FC;AL # MODIFIER LETTER GEORGIAN NAR -1100;JL # HANGUL CHOSEONG KIYEOK -1101;JL # HANGUL CHOSEONG SSANGKIYEOK -1102;JL # HANGUL CHOSEONG NIEUN -1103;JL # HANGUL CHOSEONG TIKEUT -1104;JL # HANGUL CHOSEONG SSANGTIKEUT -1105;JL # HANGUL CHOSEONG RIEUL -1106;JL # HANGUL CHOSEONG MIEUM -1107;JL # HANGUL CHOSEONG PIEUP -1108;JL # HANGUL CHOSEONG SSANGPIEUP -1109;JL # HANGUL CHOSEONG SIOS -110A;JL # HANGUL CHOSEONG SSANGSIOS -110B;JL # HANGUL CHOSEONG IEUNG -110C;JL # HANGUL CHOSEONG CIEUC -110D;JL # HANGUL CHOSEONG SSANGCIEUC -110E;JL # HANGUL CHOSEONG CHIEUCH -110F;JL # HANGUL CHOSEONG KHIEUKH -1110;JL # HANGUL CHOSEONG THIEUTH -1111;JL # HANGUL CHOSEONG PHIEUPH -1112;JL # HANGUL CHOSEONG HIEUH -1113;JL # HANGUL CHOSEONG NIEUN-KIYEOK -1114;JL # HANGUL CHOSEONG SSANGNIEUN -1115;JL # HANGUL CHOSEONG NIEUN-TIKEUT -1116;JL # HANGUL CHOSEONG NIEUN-PIEUP -1117;JL # HANGUL CHOSEONG TIKEUT-KIYEOK -1118;JL # HANGUL CHOSEONG RIEUL-NIEUN -1119;JL # HANGUL CHOSEONG SSANGRIEUL -111A;JL # HANGUL CHOSEONG RIEUL-HIEUH -111B;JL # HANGUL CHOSEONG KAPYEOUNRIEUL -111C;JL # HANGUL CHOSEONG MIEUM-PIEUP -111D;JL # HANGUL CHOSEONG KAPYEOUNMIEUM -111E;JL # HANGUL CHOSEONG PIEUP-KIYEOK -111F;JL # HANGUL CHOSEONG PIEUP-NIEUN -1120;JL # HANGUL CHOSEONG PIEUP-TIKEUT -1121;JL # HANGUL CHOSEONG PIEUP-SIOS -1122;JL # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK -1123;JL # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT -1124;JL # HANGUL CHOSEONG PIEUP-SIOS-PIEUP -1125;JL # HANGUL CHOSEONG PIEUP-SSANGSIOS -1126;JL # HANGUL CHOSEONG PIEUP-SIOS-CIEUC -1127;JL # HANGUL CHOSEONG PIEUP-CIEUC -1128;JL # HANGUL CHOSEONG PIEUP-CHIEUCH -1129;JL # HANGUL CHOSEONG PIEUP-THIEUTH -112A;JL # HANGUL CHOSEONG PIEUP-PHIEUPH -112B;JL # HANGUL CHOSEONG KAPYEOUNPIEUP -112C;JL # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP -112D;JL # HANGUL CHOSEONG SIOS-KIYEOK -112E;JL # HANGUL CHOSEONG SIOS-NIEUN -112F;JL # HANGUL CHOSEONG SIOS-TIKEUT -1130;JL # HANGUL CHOSEONG SIOS-RIEUL -1131;JL # HANGUL CHOSEONG SIOS-MIEUM -1132;JL # HANGUL CHOSEONG SIOS-PIEUP -1133;JL # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK -1134;JL # HANGUL CHOSEONG SIOS-SSANGSIOS -1135;JL # HANGUL CHOSEONG SIOS-IEUNG -1136;JL # HANGUL CHOSEONG SIOS-CIEUC -1137;JL # HANGUL CHOSEONG SIOS-CHIEUCH -1138;JL # HANGUL CHOSEONG SIOS-KHIEUKH -1139;JL # HANGUL CHOSEONG SIOS-THIEUTH -113A;JL # HANGUL CHOSEONG SIOS-PHIEUPH -113B;JL # HANGUL CHOSEONG SIOS-HIEUH -113C;JL # HANGUL CHOSEONG CHITUEUMSIOS -113D;JL # HANGUL CHOSEONG CHITUEUMSSANGSIOS -113E;JL # HANGUL CHOSEONG CEONGCHIEUMSIOS -113F;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS -1140;JL # HANGUL CHOSEONG PANSIOS -1141;JL # HANGUL CHOSEONG IEUNG-KIYEOK -1142;JL # HANGUL CHOSEONG IEUNG-TIKEUT -1143;JL # HANGUL CHOSEONG IEUNG-MIEUM -1144;JL # HANGUL CHOSEONG IEUNG-PIEUP -1145;JL # HANGUL CHOSEONG IEUNG-SIOS -1146;JL # HANGUL CHOSEONG IEUNG-PANSIOS -1147;JL # HANGUL CHOSEONG SSANGIEUNG -1148;JL # HANGUL CHOSEONG IEUNG-CIEUC -1149;JL # HANGUL CHOSEONG IEUNG-CHIEUCH -114A;JL # HANGUL CHOSEONG IEUNG-THIEUTH -114B;JL # HANGUL CHOSEONG IEUNG-PHIEUPH -114C;JL # HANGUL CHOSEONG YESIEUNG -114D;JL # HANGUL CHOSEONG CIEUC-IEUNG -114E;JL # HANGUL CHOSEONG CHITUEUMCIEUC -114F;JL # HANGUL CHOSEONG CHITUEUMSSANGCIEUC -1150;JL # HANGUL CHOSEONG CEONGCHIEUMCIEUC -1151;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC -1152;JL # HANGUL CHOSEONG CHIEUCH-KHIEUKH -1153;JL # HANGUL CHOSEONG CHIEUCH-HIEUH -1154;JL # HANGUL CHOSEONG CHITUEUMCHIEUCH -1155;JL # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH -1156;JL # HANGUL CHOSEONG PHIEUPH-PIEUP -1157;JL # HANGUL CHOSEONG KAPYEOUNPHIEUPH -1158;JL # HANGUL CHOSEONG SSANGHIEUH -1159;JL # HANGUL CHOSEONG YEORINHIEUH -115F;JL # HANGUL CHOSEONG FILLER -1160;JV # HANGUL JUNGSEONG FILLER -1161;JV # HANGUL JUNGSEONG A -1162;JV # HANGUL JUNGSEONG AE -1163;JV # HANGUL JUNGSEONG YA -1164;JV # HANGUL JUNGSEONG YAE -1165;JV # HANGUL JUNGSEONG EO -1166;JV # HANGUL JUNGSEONG E -1167;JV # HANGUL JUNGSEONG YEO -1168;JV # HANGUL JUNGSEONG YE -1169;JV # HANGUL JUNGSEONG O -116A;JV # HANGUL JUNGSEONG WA -116B;JV # HANGUL JUNGSEONG WAE -116C;JV # HANGUL JUNGSEONG OE -116D;JV # HANGUL JUNGSEONG YO -116E;JV # HANGUL JUNGSEONG U -116F;JV # HANGUL JUNGSEONG WEO -1170;JV # HANGUL JUNGSEONG WE -1171;JV # HANGUL JUNGSEONG WI -1172;JV # HANGUL JUNGSEONG YU -1173;JV # HANGUL JUNGSEONG EU -1174;JV # HANGUL JUNGSEONG YI -1175;JV # HANGUL JUNGSEONG I -1176;JV # HANGUL JUNGSEONG A-O -1177;JV # HANGUL JUNGSEONG A-U -1178;JV # HANGUL JUNGSEONG YA-O -1179;JV # HANGUL JUNGSEONG YA-YO -117A;JV # HANGUL JUNGSEONG EO-O -117B;JV # HANGUL JUNGSEONG EO-U -117C;JV # HANGUL JUNGSEONG EO-EU -117D;JV # HANGUL JUNGSEONG YEO-O -117E;JV # HANGUL JUNGSEONG YEO-U -117F;JV # HANGUL JUNGSEONG O-EO -1180;JV # HANGUL JUNGSEONG O-E -1181;JV # HANGUL JUNGSEONG O-YE -1182;JV # HANGUL JUNGSEONG O-O -1183;JV # HANGUL JUNGSEONG O-U -1184;JV # HANGUL JUNGSEONG YO-YA -1185;JV # HANGUL JUNGSEONG YO-YAE -1186;JV # HANGUL JUNGSEONG YO-YEO -1187;JV # HANGUL JUNGSEONG YO-O -1188;JV # HANGUL JUNGSEONG YO-I -1189;JV # HANGUL JUNGSEONG U-A -118A;JV # HANGUL JUNGSEONG U-AE -118B;JV # HANGUL JUNGSEONG U-EO-EU -118C;JV # HANGUL JUNGSEONG U-YE -118D;JV # HANGUL JUNGSEONG U-U -118E;JV # HANGUL JUNGSEONG YU-A -118F;JV # HANGUL JUNGSEONG YU-EO -1190;JV # HANGUL JUNGSEONG YU-E -1191;JV # HANGUL JUNGSEONG YU-YEO -1192;JV # HANGUL JUNGSEONG YU-YE -1193;JV # HANGUL JUNGSEONG YU-U -1194;JV # HANGUL JUNGSEONG YU-I -1195;JV # HANGUL JUNGSEONG EU-U -1196;JV # HANGUL JUNGSEONG EU-EU -1197;JV # HANGUL JUNGSEONG YI-U -1198;JV # HANGUL JUNGSEONG I-A -1199;JV # HANGUL JUNGSEONG I-YA -119A;JV # HANGUL JUNGSEONG I-O -119B;JV # HANGUL JUNGSEONG I-U -119C;JV # HANGUL JUNGSEONG I-EU -119D;JV # HANGUL JUNGSEONG I-ARAEA -119E;JV # HANGUL JUNGSEONG ARAEA -119F;JV # HANGUL JUNGSEONG ARAEA-EO -11A0;JV # HANGUL JUNGSEONG ARAEA-U -11A1;JV # HANGUL JUNGSEONG ARAEA-I -11A2;JV # HANGUL JUNGSEONG SSANGARAEA -11A8;JT # HANGUL JONGSEONG KIYEOK -11A9;JT # HANGUL JONGSEONG SSANGKIYEOK -11AA;JT # HANGUL JONGSEONG KIYEOK-SIOS -11AB;JT # HANGUL JONGSEONG NIEUN -11AC;JT # HANGUL JONGSEONG NIEUN-CIEUC -11AD;JT # HANGUL JONGSEONG NIEUN-HIEUH -11AE;JT # HANGUL JONGSEONG TIKEUT -11AF;JT # HANGUL JONGSEONG RIEUL -11B0;JT # HANGUL JONGSEONG RIEUL-KIYEOK -11B1;JT # HANGUL JONGSEONG RIEUL-MIEUM -11B2;JT # HANGUL JONGSEONG RIEUL-PIEUP -11B3;JT # HANGUL JONGSEONG RIEUL-SIOS -11B4;JT # HANGUL JONGSEONG RIEUL-THIEUTH -11B5;JT # HANGUL JONGSEONG RIEUL-PHIEUPH -11B6;JT # HANGUL JONGSEONG RIEUL-HIEUH -11B7;JT # HANGUL JONGSEONG MIEUM -11B8;JT # HANGUL JONGSEONG PIEUP -11B9;JT # HANGUL JONGSEONG PIEUP-SIOS -11BA;JT # HANGUL JONGSEONG SIOS -11BB;JT # HANGUL JONGSEONG SSANGSIOS -11BC;JT # HANGUL JONGSEONG IEUNG -11BD;JT # HANGUL JONGSEONG CIEUC -11BE;JT # HANGUL JONGSEONG CHIEUCH -11BF;JT # HANGUL JONGSEONG KHIEUKH -11C0;JT # HANGUL JONGSEONG THIEUTH -11C1;JT # HANGUL JONGSEONG PHIEUPH -11C2;JT # HANGUL JONGSEONG HIEUH -11C3;JT # HANGUL JONGSEONG KIYEOK-RIEUL -11C4;JT # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK -11C5;JT # HANGUL JONGSEONG NIEUN-KIYEOK -11C6;JT # HANGUL JONGSEONG NIEUN-TIKEUT -11C7;JT # HANGUL JONGSEONG NIEUN-SIOS -11C8;JT # HANGUL JONGSEONG NIEUN-PANSIOS -11C9;JT # HANGUL JONGSEONG NIEUN-THIEUTH -11CA;JT # HANGUL JONGSEONG TIKEUT-KIYEOK -11CB;JT # HANGUL JONGSEONG TIKEUT-RIEUL -11CC;JT # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS -11CD;JT # HANGUL JONGSEONG RIEUL-NIEUN -11CE;JT # HANGUL JONGSEONG RIEUL-TIKEUT -11CF;JT # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH -11D0;JT # HANGUL JONGSEONG SSANGRIEUL -11D1;JT # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK -11D2;JT # HANGUL JONGSEONG RIEUL-MIEUM-SIOS -11D3;JT # HANGUL JONGSEONG RIEUL-PIEUP-SIOS -11D4;JT # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH -11D5;JT # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP -11D6;JT # HANGUL JONGSEONG RIEUL-SSANGSIOS -11D7;JT # HANGUL JONGSEONG RIEUL-PANSIOS -11D8;JT # HANGUL JONGSEONG RIEUL-KHIEUKH -11D9;JT # HANGUL JONGSEONG RIEUL-YEORINHIEUH -11DA;JT # HANGUL JONGSEONG MIEUM-KIYEOK -11DB;JT # HANGUL JONGSEONG MIEUM-RIEUL -11DC;JT # HANGUL JONGSEONG MIEUM-PIEUP -11DD;JT # HANGUL JONGSEONG MIEUM-SIOS -11DE;JT # HANGUL JONGSEONG MIEUM-SSANGSIOS -11DF;JT # HANGUL JONGSEONG MIEUM-PANSIOS -11E0;JT # HANGUL JONGSEONG MIEUM-CHIEUCH -11E1;JT # HANGUL JONGSEONG MIEUM-HIEUH -11E2;JT # HANGUL JONGSEONG KAPYEOUNMIEUM -11E3;JT # HANGUL JONGSEONG PIEUP-RIEUL -11E4;JT # HANGUL JONGSEONG PIEUP-PHIEUPH -11E5;JT # HANGUL JONGSEONG PIEUP-HIEUH -11E6;JT # HANGUL JONGSEONG KAPYEOUNPIEUP -11E7;JT # HANGUL JONGSEONG SIOS-KIYEOK -11E8;JT # HANGUL JONGSEONG SIOS-TIKEUT -11E9;JT # HANGUL JONGSEONG SIOS-RIEUL -11EA;JT # HANGUL JONGSEONG SIOS-PIEUP -11EB;JT # HANGUL JONGSEONG PANSIOS -11EC;JT # HANGUL JONGSEONG IEUNG-KIYEOK -11ED;JT # HANGUL JONGSEONG IEUNG-SSANGKIYEOK -11EE;JT # HANGUL JONGSEONG SSANGIEUNG -11EF;JT # HANGUL JONGSEONG IEUNG-KHIEUKH -11F0;JT # HANGUL JONGSEONG YESIEUNG -11F1;JT # HANGUL JONGSEONG YESIEUNG-SIOS -11F2;JT # HANGUL JONGSEONG YESIEUNG-PANSIOS -11F3;JT # HANGUL JONGSEONG PHIEUPH-PIEUP -11F4;JT # HANGUL JONGSEONG KAPYEOUNPHIEUPH -11F5;JT # HANGUL JONGSEONG HIEUH-NIEUN -11F6;JT # HANGUL JONGSEONG HIEUH-RIEUL -11F7;JT # HANGUL JONGSEONG HIEUH-MIEUM -11F8;JT # HANGUL JONGSEONG HIEUH-PIEUP -11F9;JT # HANGUL JONGSEONG YEORINHIEUH -1200;AL # ETHIOPIC SYLLABLE HA -1201;AL # ETHIOPIC SYLLABLE HU -1202;AL # ETHIOPIC SYLLABLE HI -1203;AL # ETHIOPIC SYLLABLE HAA -1204;AL # ETHIOPIC SYLLABLE HEE -1205;AL # ETHIOPIC SYLLABLE HE -1206;AL # ETHIOPIC SYLLABLE HO -1207;AL # ETHIOPIC SYLLABLE HOA -1208;AL # ETHIOPIC SYLLABLE LA -1209;AL # ETHIOPIC SYLLABLE LU -120A;AL # ETHIOPIC SYLLABLE LI -120B;AL # ETHIOPIC SYLLABLE LAA -120C;AL # ETHIOPIC SYLLABLE LEE -120D;AL # ETHIOPIC SYLLABLE LE -120E;AL # ETHIOPIC SYLLABLE LO -120F;AL # ETHIOPIC SYLLABLE LWA -1210;AL # ETHIOPIC SYLLABLE HHA -1211;AL # ETHIOPIC SYLLABLE HHU -1212;AL # ETHIOPIC SYLLABLE HHI -1213;AL # ETHIOPIC SYLLABLE HHAA -1214;AL # ETHIOPIC SYLLABLE HHEE -1215;AL # ETHIOPIC SYLLABLE HHE -1216;AL # ETHIOPIC SYLLABLE HHO -1217;AL # ETHIOPIC SYLLABLE HHWA -1218;AL # ETHIOPIC SYLLABLE MA -1219;AL # ETHIOPIC SYLLABLE MU -121A;AL # ETHIOPIC SYLLABLE MI -121B;AL # ETHIOPIC SYLLABLE MAA -121C;AL # ETHIOPIC SYLLABLE MEE -121D;AL # ETHIOPIC SYLLABLE ME -121E;AL # ETHIOPIC SYLLABLE MO -121F;AL # ETHIOPIC SYLLABLE MWA -1220;AL # ETHIOPIC SYLLABLE SZA -1221;AL # ETHIOPIC SYLLABLE SZU -1222;AL # ETHIOPIC SYLLABLE SZI -1223;AL # ETHIOPIC SYLLABLE SZAA -1224;AL # ETHIOPIC SYLLABLE SZEE -1225;AL # ETHIOPIC SYLLABLE SZE -1226;AL # ETHIOPIC SYLLABLE SZO -1227;AL # ETHIOPIC SYLLABLE SZWA -1228;AL # ETHIOPIC SYLLABLE RA -1229;AL # ETHIOPIC SYLLABLE RU -122A;AL # ETHIOPIC SYLLABLE RI -122B;AL # ETHIOPIC SYLLABLE RAA -122C;AL # ETHIOPIC SYLLABLE REE -122D;AL # ETHIOPIC SYLLABLE RE -122E;AL # ETHIOPIC SYLLABLE RO -122F;AL # ETHIOPIC SYLLABLE RWA -1230;AL # ETHIOPIC SYLLABLE SA -1231;AL # ETHIOPIC SYLLABLE SU -1232;AL # ETHIOPIC SYLLABLE SI -1233;AL # ETHIOPIC SYLLABLE SAA -1234;AL # ETHIOPIC SYLLABLE SEE -1235;AL # ETHIOPIC SYLLABLE SE -1236;AL # ETHIOPIC SYLLABLE SO -1237;AL # ETHIOPIC SYLLABLE SWA -1238;AL # ETHIOPIC SYLLABLE SHA -1239;AL # ETHIOPIC SYLLABLE SHU -123A;AL # ETHIOPIC SYLLABLE SHI -123B;AL # ETHIOPIC SYLLABLE SHAA -123C;AL # ETHIOPIC SYLLABLE SHEE -123D;AL # ETHIOPIC SYLLABLE SHE -123E;AL # ETHIOPIC SYLLABLE SHO -123F;AL # ETHIOPIC SYLLABLE SHWA -1240;AL # ETHIOPIC SYLLABLE QA -1241;AL # ETHIOPIC SYLLABLE QU -1242;AL # ETHIOPIC SYLLABLE QI -1243;AL # ETHIOPIC SYLLABLE QAA -1244;AL # ETHIOPIC SYLLABLE QEE -1245;AL # ETHIOPIC SYLLABLE QE -1246;AL # ETHIOPIC SYLLABLE QO -1247;AL # ETHIOPIC SYLLABLE QOA -1248;AL # ETHIOPIC SYLLABLE QWA -124A;AL # ETHIOPIC SYLLABLE QWI -124B;AL # ETHIOPIC SYLLABLE QWAA -124C;AL # ETHIOPIC SYLLABLE QWEE -124D;AL # ETHIOPIC SYLLABLE QWE -1250;AL # ETHIOPIC SYLLABLE QHA -1251;AL # ETHIOPIC SYLLABLE QHU -1252;AL # ETHIOPIC SYLLABLE QHI -1253;AL # ETHIOPIC SYLLABLE QHAA -1254;AL # ETHIOPIC SYLLABLE QHEE -1255;AL # ETHIOPIC SYLLABLE QHE -1256;AL # ETHIOPIC SYLLABLE QHO -1258;AL # ETHIOPIC SYLLABLE QHWA -125A;AL # ETHIOPIC SYLLABLE QHWI -125B;AL # ETHIOPIC SYLLABLE QHWAA -125C;AL # ETHIOPIC SYLLABLE QHWEE -125D;AL # ETHIOPIC SYLLABLE QHWE -1260;AL # ETHIOPIC SYLLABLE BA -1261;AL # ETHIOPIC SYLLABLE BU -1262;AL # ETHIOPIC SYLLABLE BI -1263;AL # ETHIOPIC SYLLABLE BAA -1264;AL # ETHIOPIC SYLLABLE BEE -1265;AL # ETHIOPIC SYLLABLE BE -1266;AL # ETHIOPIC SYLLABLE BO -1267;AL # ETHIOPIC SYLLABLE BWA -1268;AL # ETHIOPIC SYLLABLE VA -1269;AL # ETHIOPIC SYLLABLE VU -126A;AL # ETHIOPIC SYLLABLE VI -126B;AL # ETHIOPIC SYLLABLE VAA -126C;AL # ETHIOPIC SYLLABLE VEE -126D;AL # ETHIOPIC SYLLABLE VE -126E;AL # ETHIOPIC SYLLABLE VO -126F;AL # ETHIOPIC SYLLABLE VWA -1270;AL # ETHIOPIC SYLLABLE TA -1271;AL # ETHIOPIC SYLLABLE TU -1272;AL # ETHIOPIC SYLLABLE TI -1273;AL # ETHIOPIC SYLLABLE TAA -1274;AL # ETHIOPIC SYLLABLE TEE -1275;AL # ETHIOPIC SYLLABLE TE -1276;AL # ETHIOPIC SYLLABLE TO -1277;AL # ETHIOPIC SYLLABLE TWA -1278;AL # ETHIOPIC SYLLABLE CA -1279;AL # ETHIOPIC SYLLABLE CU -127A;AL # ETHIOPIC SYLLABLE CI -127B;AL # ETHIOPIC SYLLABLE CAA -127C;AL # ETHIOPIC SYLLABLE CEE -127D;AL # ETHIOPIC SYLLABLE CE -127E;AL # ETHIOPIC SYLLABLE CO -127F;AL # ETHIOPIC SYLLABLE CWA -1280;AL # ETHIOPIC SYLLABLE XA -1281;AL # ETHIOPIC SYLLABLE XU -1282;AL # ETHIOPIC SYLLABLE XI -1283;AL # ETHIOPIC SYLLABLE XAA -1284;AL # ETHIOPIC SYLLABLE XEE -1285;AL # ETHIOPIC SYLLABLE XE -1286;AL # ETHIOPIC SYLLABLE XO -1287;AL # ETHIOPIC SYLLABLE XOA -1288;AL # ETHIOPIC SYLLABLE XWA -128A;AL # ETHIOPIC SYLLABLE XWI -128B;AL # ETHIOPIC SYLLABLE XWAA -128C;AL # ETHIOPIC SYLLABLE XWEE -128D;AL # ETHIOPIC SYLLABLE XWE -1290;AL # ETHIOPIC SYLLABLE NA -1291;AL # ETHIOPIC SYLLABLE NU -1292;AL # ETHIOPIC SYLLABLE NI -1293;AL # ETHIOPIC SYLLABLE NAA -1294;AL # ETHIOPIC SYLLABLE NEE -1295;AL # ETHIOPIC SYLLABLE NE -1296;AL # ETHIOPIC SYLLABLE NO -1297;AL # ETHIOPIC SYLLABLE NWA -1298;AL # ETHIOPIC SYLLABLE NYA -1299;AL # ETHIOPIC SYLLABLE NYU -129A;AL # ETHIOPIC SYLLABLE NYI -129B;AL # ETHIOPIC SYLLABLE NYAA -129C;AL # ETHIOPIC SYLLABLE NYEE -129D;AL # ETHIOPIC SYLLABLE NYE -129E;AL # ETHIOPIC SYLLABLE NYO -129F;AL # ETHIOPIC SYLLABLE NYWA -12A0;AL # ETHIOPIC SYLLABLE GLOTTAL A -12A1;AL # ETHIOPIC SYLLABLE GLOTTAL U -12A2;AL # ETHIOPIC SYLLABLE GLOTTAL I -12A3;AL # ETHIOPIC SYLLABLE GLOTTAL AA -12A4;AL # ETHIOPIC SYLLABLE GLOTTAL EE -12A5;AL # ETHIOPIC SYLLABLE GLOTTAL E -12A6;AL # ETHIOPIC SYLLABLE GLOTTAL O -12A7;AL # ETHIOPIC SYLLABLE GLOTTAL WA -12A8;AL # ETHIOPIC SYLLABLE KA -12A9;AL # ETHIOPIC SYLLABLE KU -12AA;AL # ETHIOPIC SYLLABLE KI -12AB;AL # ETHIOPIC SYLLABLE KAA -12AC;AL # ETHIOPIC SYLLABLE KEE -12AD;AL # ETHIOPIC SYLLABLE KE -12AE;AL # ETHIOPIC SYLLABLE KO -12AF;AL # ETHIOPIC SYLLABLE KOA -12B0;AL # ETHIOPIC SYLLABLE KWA -12B2;AL # ETHIOPIC SYLLABLE KWI -12B3;AL # ETHIOPIC SYLLABLE KWAA -12B4;AL # ETHIOPIC SYLLABLE KWEE -12B5;AL # ETHIOPIC SYLLABLE KWE -12B8;AL # ETHIOPIC SYLLABLE KXA -12B9;AL # ETHIOPIC SYLLABLE KXU -12BA;AL # ETHIOPIC SYLLABLE KXI -12BB;AL # ETHIOPIC SYLLABLE KXAA -12BC;AL # ETHIOPIC SYLLABLE KXEE -12BD;AL # ETHIOPIC SYLLABLE KXE -12BE;AL # ETHIOPIC SYLLABLE KXO -12C0;AL # ETHIOPIC SYLLABLE KXWA -12C2;AL # ETHIOPIC SYLLABLE KXWI -12C3;AL # ETHIOPIC SYLLABLE KXWAA -12C4;AL # ETHIOPIC SYLLABLE KXWEE -12C5;AL # ETHIOPIC SYLLABLE KXWE -12C8;AL # ETHIOPIC SYLLABLE WA -12C9;AL # ETHIOPIC SYLLABLE WU -12CA;AL # ETHIOPIC SYLLABLE WI -12CB;AL # ETHIOPIC SYLLABLE WAA -12CC;AL # ETHIOPIC SYLLABLE WEE -12CD;AL # ETHIOPIC SYLLABLE WE -12CE;AL # ETHIOPIC SYLLABLE WO -12CF;AL # ETHIOPIC SYLLABLE WOA -12D0;AL # ETHIOPIC SYLLABLE PHARYNGEAL A -12D1;AL # ETHIOPIC SYLLABLE PHARYNGEAL U -12D2;AL # ETHIOPIC SYLLABLE PHARYNGEAL I -12D3;AL # ETHIOPIC SYLLABLE PHARYNGEAL AA -12D4;AL # ETHIOPIC SYLLABLE PHARYNGEAL EE -12D5;AL # ETHIOPIC SYLLABLE PHARYNGEAL E -12D6;AL # ETHIOPIC SYLLABLE PHARYNGEAL O -12D8;AL # ETHIOPIC SYLLABLE ZA -12D9;AL # ETHIOPIC SYLLABLE ZU -12DA;AL # ETHIOPIC SYLLABLE ZI -12DB;AL # ETHIOPIC SYLLABLE ZAA -12DC;AL # ETHIOPIC SYLLABLE ZEE -12DD;AL # ETHIOPIC SYLLABLE ZE -12DE;AL # ETHIOPIC SYLLABLE ZO -12DF;AL # ETHIOPIC SYLLABLE ZWA -12E0;AL # ETHIOPIC SYLLABLE ZHA -12E1;AL # ETHIOPIC SYLLABLE ZHU -12E2;AL # ETHIOPIC SYLLABLE ZHI -12E3;AL # ETHIOPIC SYLLABLE ZHAA -12E4;AL # ETHIOPIC SYLLABLE ZHEE -12E5;AL # ETHIOPIC SYLLABLE ZHE -12E6;AL # ETHIOPIC SYLLABLE ZHO -12E7;AL # ETHIOPIC SYLLABLE ZHWA -12E8;AL # ETHIOPIC SYLLABLE YA -12E9;AL # ETHIOPIC SYLLABLE YU -12EA;AL # ETHIOPIC SYLLABLE YI -12EB;AL # ETHIOPIC SYLLABLE YAA -12EC;AL # ETHIOPIC SYLLABLE YEE -12ED;AL # ETHIOPIC SYLLABLE YE -12EE;AL # ETHIOPIC SYLLABLE YO -12EF;AL # ETHIOPIC SYLLABLE YOA -12F0;AL # ETHIOPIC SYLLABLE DA -12F1;AL # ETHIOPIC SYLLABLE DU -12F2;AL # ETHIOPIC SYLLABLE DI -12F3;AL # ETHIOPIC SYLLABLE DAA -12F4;AL # ETHIOPIC SYLLABLE DEE -12F5;AL # ETHIOPIC SYLLABLE DE -12F6;AL # ETHIOPIC SYLLABLE DO -12F7;AL # ETHIOPIC SYLLABLE DWA -12F8;AL # ETHIOPIC SYLLABLE DDA -12F9;AL # ETHIOPIC SYLLABLE DDU -12FA;AL # ETHIOPIC SYLLABLE DDI -12FB;AL # ETHIOPIC SYLLABLE DDAA -12FC;AL # ETHIOPIC SYLLABLE DDEE -12FD;AL # ETHIOPIC SYLLABLE DDE -12FE;AL # ETHIOPIC SYLLABLE DDO -12FF;AL # ETHIOPIC SYLLABLE DDWA -1300;AL # ETHIOPIC SYLLABLE JA -1301;AL # ETHIOPIC SYLLABLE JU -1302;AL # ETHIOPIC SYLLABLE JI -1303;AL # ETHIOPIC SYLLABLE JAA -1304;AL # ETHIOPIC SYLLABLE JEE -1305;AL # ETHIOPIC SYLLABLE JE -1306;AL # ETHIOPIC SYLLABLE JO -1307;AL # ETHIOPIC SYLLABLE JWA -1308;AL # ETHIOPIC SYLLABLE GA -1309;AL # ETHIOPIC SYLLABLE GU -130A;AL # ETHIOPIC SYLLABLE GI -130B;AL # ETHIOPIC SYLLABLE GAA -130C;AL # ETHIOPIC SYLLABLE GEE -130D;AL # ETHIOPIC SYLLABLE GE -130E;AL # ETHIOPIC SYLLABLE GO -130F;AL # ETHIOPIC SYLLABLE GOA -1310;AL # ETHIOPIC SYLLABLE GWA -1312;AL # ETHIOPIC SYLLABLE GWI -1313;AL # ETHIOPIC SYLLABLE GWAA -1314;AL # ETHIOPIC SYLLABLE GWEE -1315;AL # ETHIOPIC SYLLABLE GWE -1318;AL # ETHIOPIC SYLLABLE GGA -1319;AL # ETHIOPIC SYLLABLE GGU -131A;AL # ETHIOPIC SYLLABLE GGI -131B;AL # ETHIOPIC SYLLABLE GGAA -131C;AL # ETHIOPIC SYLLABLE GGEE -131D;AL # ETHIOPIC SYLLABLE GGE -131E;AL # ETHIOPIC SYLLABLE GGO -131F;AL # ETHIOPIC SYLLABLE GGWAA -1320;AL # ETHIOPIC SYLLABLE THA -1321;AL # ETHIOPIC SYLLABLE THU -1322;AL # ETHIOPIC SYLLABLE THI -1323;AL # ETHIOPIC SYLLABLE THAA -1324;AL # ETHIOPIC SYLLABLE THEE -1325;AL # ETHIOPIC SYLLABLE THE -1326;AL # ETHIOPIC SYLLABLE THO -1327;AL # ETHIOPIC SYLLABLE THWA -1328;AL # ETHIOPIC SYLLABLE CHA -1329;AL # ETHIOPIC SYLLABLE CHU -132A;AL # ETHIOPIC SYLLABLE CHI -132B;AL # ETHIOPIC SYLLABLE CHAA -132C;AL # ETHIOPIC SYLLABLE CHEE -132D;AL # ETHIOPIC SYLLABLE CHE -132E;AL # ETHIOPIC SYLLABLE CHO -132F;AL # ETHIOPIC SYLLABLE CHWA -1330;AL # ETHIOPIC SYLLABLE PHA -1331;AL # ETHIOPIC SYLLABLE PHU -1332;AL # ETHIOPIC SYLLABLE PHI -1333;AL # ETHIOPIC SYLLABLE PHAA -1334;AL # ETHIOPIC SYLLABLE PHEE -1335;AL # ETHIOPIC SYLLABLE PHE -1336;AL # ETHIOPIC SYLLABLE PHO -1337;AL # ETHIOPIC SYLLABLE PHWA -1338;AL # ETHIOPIC SYLLABLE TSA -1339;AL # ETHIOPIC SYLLABLE TSU -133A;AL # ETHIOPIC SYLLABLE TSI -133B;AL # ETHIOPIC SYLLABLE TSAA -133C;AL # ETHIOPIC SYLLABLE TSEE -133D;AL # ETHIOPIC SYLLABLE TSE -133E;AL # ETHIOPIC SYLLABLE TSO -133F;AL # ETHIOPIC SYLLABLE TSWA -1340;AL # ETHIOPIC SYLLABLE TZA -1341;AL # ETHIOPIC SYLLABLE TZU -1342;AL # ETHIOPIC SYLLABLE TZI -1343;AL # ETHIOPIC SYLLABLE TZAA -1344;AL # ETHIOPIC SYLLABLE TZEE -1345;AL # ETHIOPIC SYLLABLE TZE -1346;AL # ETHIOPIC SYLLABLE TZO -1347;AL # ETHIOPIC SYLLABLE TZOA -1348;AL # ETHIOPIC SYLLABLE FA -1349;AL # ETHIOPIC SYLLABLE FU -134A;AL # ETHIOPIC SYLLABLE FI -134B;AL # ETHIOPIC SYLLABLE FAA -134C;AL # ETHIOPIC SYLLABLE FEE -134D;AL # ETHIOPIC SYLLABLE FE -134E;AL # ETHIOPIC SYLLABLE FO -134F;AL # ETHIOPIC SYLLABLE FWA -1350;AL # ETHIOPIC SYLLABLE PA -1351;AL # ETHIOPIC SYLLABLE PU -1352;AL # ETHIOPIC SYLLABLE PI -1353;AL # ETHIOPIC SYLLABLE PAA -1354;AL # ETHIOPIC SYLLABLE PEE -1355;AL # ETHIOPIC SYLLABLE PE -1356;AL # ETHIOPIC SYLLABLE PO -1357;AL # ETHIOPIC SYLLABLE PWA -1358;AL # ETHIOPIC SYLLABLE RYA -1359;AL # ETHIOPIC SYLLABLE MYA -135A;AL # ETHIOPIC SYLLABLE FYA -135F;CM # ETHIOPIC COMBINING GEMINATION MARK -1360;AL # ETHIOPIC SECTION MARK -1361;BA # ETHIOPIC WORDSPACE -1362;AL # ETHIOPIC FULL STOP -1363;AL # ETHIOPIC COMMA -1364;AL # ETHIOPIC SEMICOLON -1365;AL # ETHIOPIC COLON -1366;AL # ETHIOPIC PREFACE COLON -1367;AL # ETHIOPIC QUESTION MARK -1368;AL # ETHIOPIC PARAGRAPH SEPARATOR -1369;AL # ETHIOPIC DIGIT ONE -136A;AL # ETHIOPIC DIGIT TWO -136B;AL # ETHIOPIC DIGIT THREE -136C;AL # ETHIOPIC DIGIT FOUR -136D;AL # ETHIOPIC DIGIT FIVE -136E;AL # ETHIOPIC DIGIT SIX -136F;AL # ETHIOPIC DIGIT SEVEN -1370;AL # ETHIOPIC DIGIT EIGHT -1371;AL # ETHIOPIC DIGIT NINE -1372;AL # ETHIOPIC NUMBER TEN -1373;AL # ETHIOPIC NUMBER TWENTY -1374;AL # ETHIOPIC NUMBER THIRTY -1375;AL # ETHIOPIC NUMBER FORTY -1376;AL # ETHIOPIC NUMBER FIFTY -1377;AL # ETHIOPIC NUMBER SIXTY -1378;AL # ETHIOPIC NUMBER SEVENTY -1379;AL # ETHIOPIC NUMBER EIGHTY -137A;AL # ETHIOPIC NUMBER NINETY -137B;AL # ETHIOPIC NUMBER HUNDRED -137C;AL # ETHIOPIC NUMBER TEN THOUSAND -1380;AL # ETHIOPIC SYLLABLE SEBATBEIT MWA -1381;AL # ETHIOPIC SYLLABLE MWI -1382;AL # ETHIOPIC SYLLABLE MWEE -1383;AL # ETHIOPIC SYLLABLE MWE -1384;AL # ETHIOPIC SYLLABLE SEBATBEIT BWA -1385;AL # ETHIOPIC SYLLABLE BWI -1386;AL # ETHIOPIC SYLLABLE BWEE -1387;AL # ETHIOPIC SYLLABLE BWE -1388;AL # ETHIOPIC SYLLABLE SEBATBEIT FWA -1389;AL # ETHIOPIC SYLLABLE FWI -138A;AL # ETHIOPIC SYLLABLE FWEE -138B;AL # ETHIOPIC SYLLABLE FWE -138C;AL # ETHIOPIC SYLLABLE SEBATBEIT PWA -138D;AL # ETHIOPIC SYLLABLE PWI -138E;AL # ETHIOPIC SYLLABLE PWEE -138F;AL # ETHIOPIC SYLLABLE PWE -1390;AL # ETHIOPIC TONAL MARK YIZET -1391;AL # ETHIOPIC TONAL MARK DERET -1392;AL # ETHIOPIC TONAL MARK RIKRIK -1393;AL # ETHIOPIC TONAL MARK SHORT RIKRIK -1394;AL # ETHIOPIC TONAL MARK DIFAT -1395;AL # ETHIOPIC TONAL MARK KENAT -1396;AL # ETHIOPIC TONAL MARK CHIRET -1397;AL # ETHIOPIC TONAL MARK HIDET -1398;AL # ETHIOPIC TONAL MARK DERET-HIDET -1399;AL # ETHIOPIC TONAL MARK KURT -13A0;AL # CHEROKEE LETTER A -13A1;AL # CHEROKEE LETTER E -13A2;AL # CHEROKEE LETTER I -13A3;AL # CHEROKEE LETTER O -13A4;AL # CHEROKEE LETTER U -13A5;AL # CHEROKEE LETTER V -13A6;AL # CHEROKEE LETTER GA -13A7;AL # CHEROKEE LETTER KA -13A8;AL # CHEROKEE LETTER GE -13A9;AL # CHEROKEE LETTER GI -13AA;AL # CHEROKEE LETTER GO -13AB;AL # CHEROKEE LETTER GU -13AC;AL # CHEROKEE LETTER GV -13AD;AL # CHEROKEE LETTER HA -13AE;AL # CHEROKEE LETTER HE -13AF;AL # CHEROKEE LETTER HI -13B0;AL # CHEROKEE LETTER HO -13B1;AL # CHEROKEE LETTER HU -13B2;AL # CHEROKEE LETTER HV -13B3;AL # CHEROKEE LETTER LA -13B4;AL # CHEROKEE LETTER LE -13B5;AL # CHEROKEE LETTER LI -13B6;AL # CHEROKEE LETTER LO -13B7;AL # CHEROKEE LETTER LU -13B8;AL # CHEROKEE LETTER LV -13B9;AL # CHEROKEE LETTER MA -13BA;AL # CHEROKEE LETTER ME -13BB;AL # CHEROKEE LETTER MI -13BC;AL # CHEROKEE LETTER MO -13BD;AL # CHEROKEE LETTER MU -13BE;AL # CHEROKEE LETTER NA -13BF;AL # CHEROKEE LETTER HNA -13C0;AL # CHEROKEE LETTER NAH -13C1;AL # CHEROKEE LETTER NE -13C2;AL # CHEROKEE LETTER NI -13C3;AL # CHEROKEE LETTER NO -13C4;AL # CHEROKEE LETTER NU -13C5;AL # CHEROKEE LETTER NV -13C6;AL # CHEROKEE LETTER QUA -13C7;AL # CHEROKEE LETTER QUE -13C8;AL # CHEROKEE LETTER QUI -13C9;AL # CHEROKEE LETTER QUO -13CA;AL # CHEROKEE LETTER QUU -13CB;AL # CHEROKEE LETTER QUV -13CC;AL # CHEROKEE LETTER SA -13CD;AL # CHEROKEE LETTER S -13CE;AL # CHEROKEE LETTER SE -13CF;AL # CHEROKEE LETTER SI -13D0;AL # CHEROKEE LETTER SO -13D1;AL # CHEROKEE LETTER SU -13D2;AL # CHEROKEE LETTER SV -13D3;AL # CHEROKEE LETTER DA -13D4;AL # CHEROKEE LETTER TA -13D5;AL # CHEROKEE LETTER DE -13D6;AL # CHEROKEE LETTER TE -13D7;AL # CHEROKEE LETTER DI -13D8;AL # CHEROKEE LETTER TI -13D9;AL # CHEROKEE LETTER DO -13DA;AL # CHEROKEE LETTER DU -13DB;AL # CHEROKEE LETTER DV -13DC;AL # CHEROKEE LETTER DLA -13DD;AL # CHEROKEE LETTER TLA -13DE;AL # CHEROKEE LETTER TLE -13DF;AL # CHEROKEE LETTER TLI -13E0;AL # CHEROKEE LETTER TLO -13E1;AL # CHEROKEE LETTER TLU -13E2;AL # CHEROKEE LETTER TLV -13E3;AL # CHEROKEE LETTER TSA -13E4;AL # CHEROKEE LETTER TSE -13E5;AL # CHEROKEE LETTER TSI -13E6;AL # CHEROKEE LETTER TSO -13E7;AL # CHEROKEE LETTER TSU -13E8;AL # CHEROKEE LETTER TSV -13E9;AL # CHEROKEE LETTER WA -13EA;AL # CHEROKEE LETTER WE -13EB;AL # CHEROKEE LETTER WI -13EC;AL # CHEROKEE LETTER WO -13ED;AL # CHEROKEE LETTER WU -13EE;AL # CHEROKEE LETTER WV -13EF;AL # CHEROKEE LETTER YA -13F0;AL # CHEROKEE LETTER YE -13F1;AL # CHEROKEE LETTER YI -13F2;AL # CHEROKEE LETTER YO -13F3;AL # CHEROKEE LETTER YU -13F4;AL # CHEROKEE LETTER YV -1401;AL # CANADIAN SYLLABICS E -1402;AL # CANADIAN SYLLABICS AAI -1403;AL # CANADIAN SYLLABICS I -1404;AL # CANADIAN SYLLABICS II -1405;AL # CANADIAN SYLLABICS O -1406;AL # CANADIAN SYLLABICS OO -1407;AL # CANADIAN SYLLABICS Y-CREE OO -1408;AL # CANADIAN SYLLABICS CARRIER EE -1409;AL # CANADIAN SYLLABICS CARRIER I -140A;AL # CANADIAN SYLLABICS A -140B;AL # CANADIAN SYLLABICS AA -140C;AL # CANADIAN SYLLABICS WE -140D;AL # CANADIAN SYLLABICS WEST-CREE WE -140E;AL # CANADIAN SYLLABICS WI -140F;AL # CANADIAN SYLLABICS WEST-CREE WI -1410;AL # CANADIAN SYLLABICS WII -1411;AL # CANADIAN SYLLABICS WEST-CREE WII -1412;AL # CANADIAN SYLLABICS WO -1413;AL # CANADIAN SYLLABICS WEST-CREE WO -1414;AL # CANADIAN SYLLABICS WOO -1415;AL # CANADIAN SYLLABICS WEST-CREE WOO -1416;AL # CANADIAN SYLLABICS NASKAPI WOO -1417;AL # CANADIAN SYLLABICS WA -1418;AL # CANADIAN SYLLABICS WEST-CREE WA -1419;AL # CANADIAN SYLLABICS WAA -141A;AL # CANADIAN SYLLABICS WEST-CREE WAA -141B;AL # CANADIAN SYLLABICS NASKAPI WAA -141C;AL # CANADIAN SYLLABICS AI -141D;AL # CANADIAN SYLLABICS Y-CREE W -141E;AL # CANADIAN SYLLABICS GLOTTAL STOP -141F;AL # CANADIAN SYLLABICS FINAL ACUTE -1420;AL # CANADIAN SYLLABICS FINAL GRAVE -1421;AL # CANADIAN SYLLABICS FINAL BOTTOM HALF RING -1422;AL # CANADIAN SYLLABICS FINAL TOP HALF RING -1423;AL # CANADIAN SYLLABICS FINAL RIGHT HALF RING -1424;AL # CANADIAN SYLLABICS FINAL RING -1425;AL # CANADIAN SYLLABICS FINAL DOUBLE ACUTE -1426;AL # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES -1427;AL # CANADIAN SYLLABICS FINAL MIDDLE DOT -1428;AL # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE -1429;AL # CANADIAN SYLLABICS FINAL PLUS -142A;AL # CANADIAN SYLLABICS FINAL DOWN TACK -142B;AL # CANADIAN SYLLABICS EN -142C;AL # CANADIAN SYLLABICS IN -142D;AL # CANADIAN SYLLABICS ON -142E;AL # CANADIAN SYLLABICS AN -142F;AL # CANADIAN SYLLABICS PE -1430;AL # CANADIAN SYLLABICS PAAI -1431;AL # CANADIAN SYLLABICS PI -1432;AL # CANADIAN SYLLABICS PII -1433;AL # CANADIAN SYLLABICS PO -1434;AL # CANADIAN SYLLABICS POO -1435;AL # CANADIAN SYLLABICS Y-CREE POO -1436;AL # CANADIAN SYLLABICS CARRIER HEE -1437;AL # CANADIAN SYLLABICS CARRIER HI -1438;AL # CANADIAN SYLLABICS PA -1439;AL # CANADIAN SYLLABICS PAA -143A;AL # CANADIAN SYLLABICS PWE -143B;AL # CANADIAN SYLLABICS WEST-CREE PWE -143C;AL # CANADIAN SYLLABICS PWI -143D;AL # CANADIAN SYLLABICS WEST-CREE PWI -143E;AL # CANADIAN SYLLABICS PWII -143F;AL # CANADIAN SYLLABICS WEST-CREE PWII -1440;AL # CANADIAN SYLLABICS PWO -1441;AL # CANADIAN SYLLABICS WEST-CREE PWO -1442;AL # CANADIAN SYLLABICS PWOO -1443;AL # CANADIAN SYLLABICS WEST-CREE PWOO -1444;AL # CANADIAN SYLLABICS PWA -1445;AL # CANADIAN SYLLABICS WEST-CREE PWA -1446;AL # CANADIAN SYLLABICS PWAA -1447;AL # CANADIAN SYLLABICS WEST-CREE PWAA -1448;AL # CANADIAN SYLLABICS Y-CREE PWAA -1449;AL # CANADIAN SYLLABICS P -144A;AL # CANADIAN SYLLABICS WEST-CREE P -144B;AL # CANADIAN SYLLABICS CARRIER H -144C;AL # CANADIAN SYLLABICS TE -144D;AL # CANADIAN SYLLABICS TAAI -144E;AL # CANADIAN SYLLABICS TI -144F;AL # CANADIAN SYLLABICS TII -1450;AL # CANADIAN SYLLABICS TO -1451;AL # CANADIAN SYLLABICS TOO -1452;AL # CANADIAN SYLLABICS Y-CREE TOO -1453;AL # CANADIAN SYLLABICS CARRIER DEE -1454;AL # CANADIAN SYLLABICS CARRIER DI -1455;AL # CANADIAN SYLLABICS TA -1456;AL # CANADIAN SYLLABICS TAA -1457;AL # CANADIAN SYLLABICS TWE -1458;AL # CANADIAN SYLLABICS WEST-CREE TWE -1459;AL # CANADIAN SYLLABICS TWI -145A;AL # CANADIAN SYLLABICS WEST-CREE TWI -145B;AL # CANADIAN SYLLABICS TWII -145C;AL # CANADIAN SYLLABICS WEST-CREE TWII -145D;AL # CANADIAN SYLLABICS TWO -145E;AL # CANADIAN SYLLABICS WEST-CREE TWO -145F;AL # CANADIAN SYLLABICS TWOO -1460;AL # CANADIAN SYLLABICS WEST-CREE TWOO -1461;AL # CANADIAN SYLLABICS TWA -1462;AL # CANADIAN SYLLABICS WEST-CREE TWA -1463;AL # CANADIAN SYLLABICS TWAA -1464;AL # CANADIAN SYLLABICS WEST-CREE TWAA -1465;AL # CANADIAN SYLLABICS NASKAPI TWAA -1466;AL # CANADIAN SYLLABICS T -1467;AL # CANADIAN SYLLABICS TTE -1468;AL # CANADIAN SYLLABICS TTI -1469;AL # CANADIAN SYLLABICS TTO -146A;AL # CANADIAN SYLLABICS TTA -146B;AL # CANADIAN SYLLABICS KE -146C;AL # CANADIAN SYLLABICS KAAI -146D;AL # CANADIAN SYLLABICS KI -146E;AL # CANADIAN SYLLABICS KII -146F;AL # CANADIAN SYLLABICS KO -1470;AL # CANADIAN SYLLABICS KOO -1471;AL # CANADIAN SYLLABICS Y-CREE KOO -1472;AL # CANADIAN SYLLABICS KA -1473;AL # CANADIAN SYLLABICS KAA -1474;AL # CANADIAN SYLLABICS KWE -1475;AL # CANADIAN SYLLABICS WEST-CREE KWE -1476;AL # CANADIAN SYLLABICS KWI -1477;AL # CANADIAN SYLLABICS WEST-CREE KWI -1478;AL # CANADIAN SYLLABICS KWII -1479;AL # CANADIAN SYLLABICS WEST-CREE KWII -147A;AL # CANADIAN SYLLABICS KWO -147B;AL # CANADIAN SYLLABICS WEST-CREE KWO -147C;AL # CANADIAN SYLLABICS KWOO -147D;AL # CANADIAN SYLLABICS WEST-CREE KWOO -147E;AL # CANADIAN SYLLABICS KWA -147F;AL # CANADIAN SYLLABICS WEST-CREE KWA -1480;AL # CANADIAN SYLLABICS KWAA -1481;AL # CANADIAN SYLLABICS WEST-CREE KWAA -1482;AL # CANADIAN SYLLABICS NASKAPI KWAA -1483;AL # CANADIAN SYLLABICS K -1484;AL # CANADIAN SYLLABICS KW -1485;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KEH -1486;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KIH -1487;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KOH -1488;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KAH -1489;AL # CANADIAN SYLLABICS CE -148A;AL # CANADIAN SYLLABICS CAAI -148B;AL # CANADIAN SYLLABICS CI -148C;AL # CANADIAN SYLLABICS CII -148D;AL # CANADIAN SYLLABICS CO -148E;AL # CANADIAN SYLLABICS COO -148F;AL # CANADIAN SYLLABICS Y-CREE COO -1490;AL # CANADIAN SYLLABICS CA -1491;AL # CANADIAN SYLLABICS CAA -1492;AL # CANADIAN SYLLABICS CWE -1493;AL # CANADIAN SYLLABICS WEST-CREE CWE -1494;AL # CANADIAN SYLLABICS CWI -1495;AL # CANADIAN SYLLABICS WEST-CREE CWI -1496;AL # CANADIAN SYLLABICS CWII -1497;AL # CANADIAN SYLLABICS WEST-CREE CWII -1498;AL # CANADIAN SYLLABICS CWO -1499;AL # CANADIAN SYLLABICS WEST-CREE CWO -149A;AL # CANADIAN SYLLABICS CWOO -149B;AL # CANADIAN SYLLABICS WEST-CREE CWOO -149C;AL # CANADIAN SYLLABICS CWA -149D;AL # CANADIAN SYLLABICS WEST-CREE CWA -149E;AL # CANADIAN SYLLABICS CWAA -149F;AL # CANADIAN SYLLABICS WEST-CREE CWAA -14A0;AL # CANADIAN SYLLABICS NASKAPI CWAA -14A1;AL # CANADIAN SYLLABICS C -14A2;AL # CANADIAN SYLLABICS SAYISI TH -14A3;AL # CANADIAN SYLLABICS ME -14A4;AL # CANADIAN SYLLABICS MAAI -14A5;AL # CANADIAN SYLLABICS MI -14A6;AL # CANADIAN SYLLABICS MII -14A7;AL # CANADIAN SYLLABICS MO -14A8;AL # CANADIAN SYLLABICS MOO -14A9;AL # CANADIAN SYLLABICS Y-CREE MOO -14AA;AL # CANADIAN SYLLABICS MA -14AB;AL # CANADIAN SYLLABICS MAA -14AC;AL # CANADIAN SYLLABICS MWE -14AD;AL # CANADIAN SYLLABICS WEST-CREE MWE -14AE;AL # CANADIAN SYLLABICS MWI -14AF;AL # CANADIAN SYLLABICS WEST-CREE MWI -14B0;AL # CANADIAN SYLLABICS MWII -14B1;AL # CANADIAN SYLLABICS WEST-CREE MWII -14B2;AL # CANADIAN SYLLABICS MWO -14B3;AL # CANADIAN SYLLABICS WEST-CREE MWO -14B4;AL # CANADIAN SYLLABICS MWOO -14B5;AL # CANADIAN SYLLABICS WEST-CREE MWOO -14B6;AL # CANADIAN SYLLABICS MWA -14B7;AL # CANADIAN SYLLABICS WEST-CREE MWA -14B8;AL # CANADIAN SYLLABICS MWAA -14B9;AL # CANADIAN SYLLABICS WEST-CREE MWAA -14BA;AL # CANADIAN SYLLABICS NASKAPI MWAA -14BB;AL # CANADIAN SYLLABICS M -14BC;AL # CANADIAN SYLLABICS WEST-CREE M -14BD;AL # CANADIAN SYLLABICS MH -14BE;AL # CANADIAN SYLLABICS ATHAPASCAN M -14BF;AL # CANADIAN SYLLABICS SAYISI M -14C0;AL # CANADIAN SYLLABICS NE -14C1;AL # CANADIAN SYLLABICS NAAI -14C2;AL # CANADIAN SYLLABICS NI -14C3;AL # CANADIAN SYLLABICS NII -14C4;AL # CANADIAN SYLLABICS NO -14C5;AL # CANADIAN SYLLABICS NOO -14C6;AL # CANADIAN SYLLABICS Y-CREE NOO -14C7;AL # CANADIAN SYLLABICS NA -14C8;AL # CANADIAN SYLLABICS NAA -14C9;AL # CANADIAN SYLLABICS NWE -14CA;AL # CANADIAN SYLLABICS WEST-CREE NWE -14CB;AL # CANADIAN SYLLABICS NWA -14CC;AL # CANADIAN SYLLABICS WEST-CREE NWA -14CD;AL # CANADIAN SYLLABICS NWAA -14CE;AL # CANADIAN SYLLABICS WEST-CREE NWAA -14CF;AL # CANADIAN SYLLABICS NASKAPI NWAA -14D0;AL # CANADIAN SYLLABICS N -14D1;AL # CANADIAN SYLLABICS CARRIER NG -14D2;AL # CANADIAN SYLLABICS NH -14D3;AL # CANADIAN SYLLABICS LE -14D4;AL # CANADIAN SYLLABICS LAAI -14D5;AL # CANADIAN SYLLABICS LI -14D6;AL # CANADIAN SYLLABICS LII -14D7;AL # CANADIAN SYLLABICS LO -14D8;AL # CANADIAN SYLLABICS LOO -14D9;AL # CANADIAN SYLLABICS Y-CREE LOO -14DA;AL # CANADIAN SYLLABICS LA -14DB;AL # CANADIAN SYLLABICS LAA -14DC;AL # CANADIAN SYLLABICS LWE -14DD;AL # CANADIAN SYLLABICS WEST-CREE LWE -14DE;AL # CANADIAN SYLLABICS LWI -14DF;AL # CANADIAN SYLLABICS WEST-CREE LWI -14E0;AL # CANADIAN SYLLABICS LWII -14E1;AL # CANADIAN SYLLABICS WEST-CREE LWII -14E2;AL # CANADIAN SYLLABICS LWO -14E3;AL # CANADIAN SYLLABICS WEST-CREE LWO -14E4;AL # CANADIAN SYLLABICS LWOO -14E5;AL # CANADIAN SYLLABICS WEST-CREE LWOO -14E6;AL # CANADIAN SYLLABICS LWA -14E7;AL # CANADIAN SYLLABICS WEST-CREE LWA -14E8;AL # CANADIAN SYLLABICS LWAA -14E9;AL # CANADIAN SYLLABICS WEST-CREE LWAA -14EA;AL # CANADIAN SYLLABICS L -14EB;AL # CANADIAN SYLLABICS WEST-CREE L -14EC;AL # CANADIAN SYLLABICS MEDIAL L -14ED;AL # CANADIAN SYLLABICS SE -14EE;AL # CANADIAN SYLLABICS SAAI -14EF;AL # CANADIAN SYLLABICS SI -14F0;AL # CANADIAN SYLLABICS SII -14F1;AL # CANADIAN SYLLABICS SO -14F2;AL # CANADIAN SYLLABICS SOO -14F3;AL # CANADIAN SYLLABICS Y-CREE SOO -14F4;AL # CANADIAN SYLLABICS SA -14F5;AL # CANADIAN SYLLABICS SAA -14F6;AL # CANADIAN SYLLABICS SWE -14F7;AL # CANADIAN SYLLABICS WEST-CREE SWE -14F8;AL # CANADIAN SYLLABICS SWI -14F9;AL # CANADIAN SYLLABICS WEST-CREE SWI -14FA;AL # CANADIAN SYLLABICS SWII -14FB;AL # CANADIAN SYLLABICS WEST-CREE SWII -14FC;AL # CANADIAN SYLLABICS SWO -14FD;AL # CANADIAN SYLLABICS WEST-CREE SWO -14FE;AL # CANADIAN SYLLABICS SWOO -14FF;AL # CANADIAN SYLLABICS WEST-CREE SWOO -1500;AL # CANADIAN SYLLABICS SWA -1501;AL # CANADIAN SYLLABICS WEST-CREE SWA -1502;AL # CANADIAN SYLLABICS SWAA -1503;AL # CANADIAN SYLLABICS WEST-CREE SWAA -1504;AL # CANADIAN SYLLABICS NASKAPI SWAA -1505;AL # CANADIAN SYLLABICS S -1506;AL # CANADIAN SYLLABICS ATHAPASCAN S -1507;AL # CANADIAN SYLLABICS SW -1508;AL # CANADIAN SYLLABICS BLACKFOOT S -1509;AL # CANADIAN SYLLABICS MOOSE-CREE SK -150A;AL # CANADIAN SYLLABICS NASKAPI SKW -150B;AL # CANADIAN SYLLABICS NASKAPI S-W -150C;AL # CANADIAN SYLLABICS NASKAPI SPWA -150D;AL # CANADIAN SYLLABICS NASKAPI STWA -150E;AL # CANADIAN SYLLABICS NASKAPI SKWA -150F;AL # CANADIAN SYLLABICS NASKAPI SCWA -1510;AL # CANADIAN SYLLABICS SHE -1511;AL # CANADIAN SYLLABICS SHI -1512;AL # CANADIAN SYLLABICS SHII -1513;AL # CANADIAN SYLLABICS SHO -1514;AL # CANADIAN SYLLABICS SHOO -1515;AL # CANADIAN SYLLABICS SHA -1516;AL # CANADIAN SYLLABICS SHAA -1517;AL # CANADIAN SYLLABICS SHWE -1518;AL # CANADIAN SYLLABICS WEST-CREE SHWE -1519;AL # CANADIAN SYLLABICS SHWI -151A;AL # CANADIAN SYLLABICS WEST-CREE SHWI -151B;AL # CANADIAN SYLLABICS SHWII -151C;AL # CANADIAN SYLLABICS WEST-CREE SHWII -151D;AL # CANADIAN SYLLABICS SHWO -151E;AL # CANADIAN SYLLABICS WEST-CREE SHWO -151F;AL # CANADIAN SYLLABICS SHWOO -1520;AL # CANADIAN SYLLABICS WEST-CREE SHWOO -1521;AL # CANADIAN SYLLABICS SHWA -1522;AL # CANADIAN SYLLABICS WEST-CREE SHWA -1523;AL # CANADIAN SYLLABICS SHWAA -1524;AL # CANADIAN SYLLABICS WEST-CREE SHWAA -1525;AL # CANADIAN SYLLABICS SH -1526;AL # CANADIAN SYLLABICS YE -1527;AL # CANADIAN SYLLABICS YAAI -1528;AL # CANADIAN SYLLABICS YI -1529;AL # CANADIAN SYLLABICS YII -152A;AL # CANADIAN SYLLABICS YO -152B;AL # CANADIAN SYLLABICS YOO -152C;AL # CANADIAN SYLLABICS Y-CREE YOO -152D;AL # CANADIAN SYLLABICS YA -152E;AL # CANADIAN SYLLABICS YAA -152F;AL # CANADIAN SYLLABICS YWE -1530;AL # CANADIAN SYLLABICS WEST-CREE YWE -1531;AL # CANADIAN SYLLABICS YWI -1532;AL # CANADIAN SYLLABICS WEST-CREE YWI -1533;AL # CANADIAN SYLLABICS YWII -1534;AL # CANADIAN SYLLABICS WEST-CREE YWII -1535;AL # CANADIAN SYLLABICS YWO -1536;AL # CANADIAN SYLLABICS WEST-CREE YWO -1537;AL # CANADIAN SYLLABICS YWOO -1538;AL # CANADIAN SYLLABICS WEST-CREE YWOO -1539;AL # CANADIAN SYLLABICS YWA -153A;AL # CANADIAN SYLLABICS WEST-CREE YWA -153B;AL # CANADIAN SYLLABICS YWAA -153C;AL # CANADIAN SYLLABICS WEST-CREE YWAA -153D;AL # CANADIAN SYLLABICS NASKAPI YWAA -153E;AL # CANADIAN SYLLABICS Y -153F;AL # CANADIAN SYLLABICS BIBLE-CREE Y -1540;AL # CANADIAN SYLLABICS WEST-CREE Y -1541;AL # CANADIAN SYLLABICS SAYISI YI -1542;AL # CANADIAN SYLLABICS RE -1543;AL # CANADIAN SYLLABICS R-CREE RE -1544;AL # CANADIAN SYLLABICS WEST-CREE LE -1545;AL # CANADIAN SYLLABICS RAAI -1546;AL # CANADIAN SYLLABICS RI -1547;AL # CANADIAN SYLLABICS RII -1548;AL # CANADIAN SYLLABICS RO -1549;AL # CANADIAN SYLLABICS ROO -154A;AL # CANADIAN SYLLABICS WEST-CREE LO -154B;AL # CANADIAN SYLLABICS RA -154C;AL # CANADIAN SYLLABICS RAA -154D;AL # CANADIAN SYLLABICS WEST-CREE LA -154E;AL # CANADIAN SYLLABICS RWAA -154F;AL # CANADIAN SYLLABICS WEST-CREE RWAA -1550;AL # CANADIAN SYLLABICS R -1551;AL # CANADIAN SYLLABICS WEST-CREE R -1552;AL # CANADIAN SYLLABICS MEDIAL R -1553;AL # CANADIAN SYLLABICS FE -1554;AL # CANADIAN SYLLABICS FAAI -1555;AL # CANADIAN SYLLABICS FI -1556;AL # CANADIAN SYLLABICS FII -1557;AL # CANADIAN SYLLABICS FO -1558;AL # CANADIAN SYLLABICS FOO -1559;AL # CANADIAN SYLLABICS FA -155A;AL # CANADIAN SYLLABICS FAA -155B;AL # CANADIAN SYLLABICS FWAA -155C;AL # CANADIAN SYLLABICS WEST-CREE FWAA -155D;AL # CANADIAN SYLLABICS F -155E;AL # CANADIAN SYLLABICS THE -155F;AL # CANADIAN SYLLABICS N-CREE THE -1560;AL # CANADIAN SYLLABICS THI -1561;AL # CANADIAN SYLLABICS N-CREE THI -1562;AL # CANADIAN SYLLABICS THII -1563;AL # CANADIAN SYLLABICS N-CREE THII -1564;AL # CANADIAN SYLLABICS THO -1565;AL # CANADIAN SYLLABICS THOO -1566;AL # CANADIAN SYLLABICS THA -1567;AL # CANADIAN SYLLABICS THAA -1568;AL # CANADIAN SYLLABICS THWAA -1569;AL # CANADIAN SYLLABICS WEST-CREE THWAA -156A;AL # CANADIAN SYLLABICS TH -156B;AL # CANADIAN SYLLABICS TTHE -156C;AL # CANADIAN SYLLABICS TTHI -156D;AL # CANADIAN SYLLABICS TTHO -156E;AL # CANADIAN SYLLABICS TTHA -156F;AL # CANADIAN SYLLABICS TTH -1570;AL # CANADIAN SYLLABICS TYE -1571;AL # CANADIAN SYLLABICS TYI -1572;AL # CANADIAN SYLLABICS TYO -1573;AL # CANADIAN SYLLABICS TYA -1574;AL # CANADIAN SYLLABICS NUNAVIK HE -1575;AL # CANADIAN SYLLABICS NUNAVIK HI -1576;AL # CANADIAN SYLLABICS NUNAVIK HII -1577;AL # CANADIAN SYLLABICS NUNAVIK HO -1578;AL # CANADIAN SYLLABICS NUNAVIK HOO -1579;AL # CANADIAN SYLLABICS NUNAVIK HA -157A;AL # CANADIAN SYLLABICS NUNAVIK HAA -157B;AL # CANADIAN SYLLABICS NUNAVIK H -157C;AL # CANADIAN SYLLABICS NUNAVUT H -157D;AL # CANADIAN SYLLABICS HK -157E;AL # CANADIAN SYLLABICS QAAI -157F;AL # CANADIAN SYLLABICS QI -1580;AL # CANADIAN SYLLABICS QII -1581;AL # CANADIAN SYLLABICS QO -1582;AL # CANADIAN SYLLABICS QOO -1583;AL # CANADIAN SYLLABICS QA -1584;AL # CANADIAN SYLLABICS QAA -1585;AL # CANADIAN SYLLABICS Q -1586;AL # CANADIAN SYLLABICS TLHE -1587;AL # CANADIAN SYLLABICS TLHI -1588;AL # CANADIAN SYLLABICS TLHO -1589;AL # CANADIAN SYLLABICS TLHA -158A;AL # CANADIAN SYLLABICS WEST-CREE RE -158B;AL # CANADIAN SYLLABICS WEST-CREE RI -158C;AL # CANADIAN SYLLABICS WEST-CREE RO -158D;AL # CANADIAN SYLLABICS WEST-CREE RA -158E;AL # CANADIAN SYLLABICS NGAAI -158F;AL # CANADIAN SYLLABICS NGI -1590;AL # CANADIAN SYLLABICS NGII -1591;AL # CANADIAN SYLLABICS NGO -1592;AL # CANADIAN SYLLABICS NGOO -1593;AL # CANADIAN SYLLABICS NGA -1594;AL # CANADIAN SYLLABICS NGAA -1595;AL # CANADIAN SYLLABICS NG -1596;AL # CANADIAN SYLLABICS NNG -1597;AL # CANADIAN SYLLABICS SAYISI SHE -1598;AL # CANADIAN SYLLABICS SAYISI SHI -1599;AL # CANADIAN SYLLABICS SAYISI SHO -159A;AL # CANADIAN SYLLABICS SAYISI SHA -159B;AL # CANADIAN SYLLABICS WOODS-CREE THE -159C;AL # CANADIAN SYLLABICS WOODS-CREE THI -159D;AL # CANADIAN SYLLABICS WOODS-CREE THO -159E;AL # CANADIAN SYLLABICS WOODS-CREE THA -159F;AL # CANADIAN SYLLABICS WOODS-CREE TH -15A0;AL # CANADIAN SYLLABICS LHI -15A1;AL # CANADIAN SYLLABICS LHII -15A2;AL # CANADIAN SYLLABICS LHO -15A3;AL # CANADIAN SYLLABICS LHOO -15A4;AL # CANADIAN SYLLABICS LHA -15A5;AL # CANADIAN SYLLABICS LHAA -15A6;AL # CANADIAN SYLLABICS LH -15A7;AL # CANADIAN SYLLABICS TH-CREE THE -15A8;AL # CANADIAN SYLLABICS TH-CREE THI -15A9;AL # CANADIAN SYLLABICS TH-CREE THII -15AA;AL # CANADIAN SYLLABICS TH-CREE THO -15AB;AL # CANADIAN SYLLABICS TH-CREE THOO -15AC;AL # CANADIAN SYLLABICS TH-CREE THA -15AD;AL # CANADIAN SYLLABICS TH-CREE THAA -15AE;AL # CANADIAN SYLLABICS TH-CREE TH -15AF;AL # CANADIAN SYLLABICS AIVILIK B -15B0;AL # CANADIAN SYLLABICS BLACKFOOT E -15B1;AL # CANADIAN SYLLABICS BLACKFOOT I -15B2;AL # CANADIAN SYLLABICS BLACKFOOT O -15B3;AL # CANADIAN SYLLABICS BLACKFOOT A -15B4;AL # CANADIAN SYLLABICS BLACKFOOT WE -15B5;AL # CANADIAN SYLLABICS BLACKFOOT WI -15B6;AL # CANADIAN SYLLABICS BLACKFOOT WO -15B7;AL # CANADIAN SYLLABICS BLACKFOOT WA -15B8;AL # CANADIAN SYLLABICS BLACKFOOT NE -15B9;AL # CANADIAN SYLLABICS BLACKFOOT NI -15BA;AL # CANADIAN SYLLABICS BLACKFOOT NO -15BB;AL # CANADIAN SYLLABICS BLACKFOOT NA -15BC;AL # CANADIAN SYLLABICS BLACKFOOT KE -15BD;AL # CANADIAN SYLLABICS BLACKFOOT KI -15BE;AL # CANADIAN SYLLABICS BLACKFOOT KO -15BF;AL # CANADIAN SYLLABICS BLACKFOOT KA -15C0;AL # CANADIAN SYLLABICS SAYISI HE -15C1;AL # CANADIAN SYLLABICS SAYISI HI -15C2;AL # CANADIAN SYLLABICS SAYISI HO -15C3;AL # CANADIAN SYLLABICS SAYISI HA -15C4;AL # CANADIAN SYLLABICS CARRIER GHU -15C5;AL # CANADIAN SYLLABICS CARRIER GHO -15C6;AL # CANADIAN SYLLABICS CARRIER GHE -15C7;AL # CANADIAN SYLLABICS CARRIER GHEE -15C8;AL # CANADIAN SYLLABICS CARRIER GHI -15C9;AL # CANADIAN SYLLABICS CARRIER GHA -15CA;AL # CANADIAN SYLLABICS CARRIER RU -15CB;AL # CANADIAN SYLLABICS CARRIER RO -15CC;AL # CANADIAN SYLLABICS CARRIER RE -15CD;AL # CANADIAN SYLLABICS CARRIER REE -15CE;AL # CANADIAN SYLLABICS CARRIER RI -15CF;AL # CANADIAN SYLLABICS CARRIER RA -15D0;AL # CANADIAN SYLLABICS CARRIER WU -15D1;AL # CANADIAN SYLLABICS CARRIER WO -15D2;AL # CANADIAN SYLLABICS CARRIER WE -15D3;AL # CANADIAN SYLLABICS CARRIER WEE -15D4;AL # CANADIAN SYLLABICS CARRIER WI -15D5;AL # CANADIAN SYLLABICS CARRIER WA -15D6;AL # CANADIAN SYLLABICS CARRIER HWU -15D7;AL # CANADIAN SYLLABICS CARRIER HWO -15D8;AL # CANADIAN SYLLABICS CARRIER HWE -15D9;AL # CANADIAN SYLLABICS CARRIER HWEE -15DA;AL # CANADIAN SYLLABICS CARRIER HWI -15DB;AL # CANADIAN SYLLABICS CARRIER HWA -15DC;AL # CANADIAN SYLLABICS CARRIER THU -15DD;AL # CANADIAN SYLLABICS CARRIER THO -15DE;AL # CANADIAN SYLLABICS CARRIER THE -15DF;AL # CANADIAN SYLLABICS CARRIER THEE -15E0;AL # CANADIAN SYLLABICS CARRIER THI -15E1;AL # CANADIAN SYLLABICS CARRIER THA -15E2;AL # CANADIAN SYLLABICS CARRIER TTU -15E3;AL # CANADIAN SYLLABICS CARRIER TTO -15E4;AL # CANADIAN SYLLABICS CARRIER TTE -15E5;AL # CANADIAN SYLLABICS CARRIER TTEE -15E6;AL # CANADIAN SYLLABICS CARRIER TTI -15E7;AL # CANADIAN SYLLABICS CARRIER TTA -15E8;AL # CANADIAN SYLLABICS CARRIER PU -15E9;AL # CANADIAN SYLLABICS CARRIER PO -15EA;AL # CANADIAN SYLLABICS CARRIER PE -15EB;AL # CANADIAN SYLLABICS CARRIER PEE -15EC;AL # CANADIAN SYLLABICS CARRIER PI -15ED;AL # CANADIAN SYLLABICS CARRIER PA -15EE;AL # CANADIAN SYLLABICS CARRIER P -15EF;AL # CANADIAN SYLLABICS CARRIER GU -15F0;AL # CANADIAN SYLLABICS CARRIER GO -15F1;AL # CANADIAN SYLLABICS CARRIER GE -15F2;AL # CANADIAN SYLLABICS CARRIER GEE -15F3;AL # CANADIAN SYLLABICS CARRIER GI -15F4;AL # CANADIAN SYLLABICS CARRIER GA -15F5;AL # CANADIAN SYLLABICS CARRIER KHU -15F6;AL # CANADIAN SYLLABICS CARRIER KHO -15F7;AL # CANADIAN SYLLABICS CARRIER KHE -15F8;AL # CANADIAN SYLLABICS CARRIER KHEE -15F9;AL # CANADIAN SYLLABICS CARRIER KHI -15FA;AL # CANADIAN SYLLABICS CARRIER KHA -15FB;AL # CANADIAN SYLLABICS CARRIER KKU -15FC;AL # CANADIAN SYLLABICS CARRIER KKO -15FD;AL # CANADIAN SYLLABICS CARRIER KKE -15FE;AL # CANADIAN SYLLABICS CARRIER KKEE -15FF;AL # CANADIAN SYLLABICS CARRIER KKI -1600;AL # CANADIAN SYLLABICS CARRIER KKA -1601;AL # CANADIAN SYLLABICS CARRIER KK -1602;AL # CANADIAN SYLLABICS CARRIER NU -1603;AL # CANADIAN SYLLABICS CARRIER NO -1604;AL # CANADIAN SYLLABICS CARRIER NE -1605;AL # CANADIAN SYLLABICS CARRIER NEE -1606;AL # CANADIAN SYLLABICS CARRIER NI -1607;AL # CANADIAN SYLLABICS CARRIER NA -1608;AL # CANADIAN SYLLABICS CARRIER MU -1609;AL # CANADIAN SYLLABICS CARRIER MO -160A;AL # CANADIAN SYLLABICS CARRIER ME -160B;AL # CANADIAN SYLLABICS CARRIER MEE -160C;AL # CANADIAN SYLLABICS CARRIER MI -160D;AL # CANADIAN SYLLABICS CARRIER MA -160E;AL # CANADIAN SYLLABICS CARRIER YU -160F;AL # CANADIAN SYLLABICS CARRIER YO -1610;AL # CANADIAN SYLLABICS CARRIER YE -1611;AL # CANADIAN SYLLABICS CARRIER YEE -1612;AL # CANADIAN SYLLABICS CARRIER YI -1613;AL # CANADIAN SYLLABICS CARRIER YA -1614;AL # CANADIAN SYLLABICS CARRIER JU -1615;AL # CANADIAN SYLLABICS SAYISI JU -1616;AL # CANADIAN SYLLABICS CARRIER JO -1617;AL # CANADIAN SYLLABICS CARRIER JE -1618;AL # CANADIAN SYLLABICS CARRIER JEE -1619;AL # CANADIAN SYLLABICS CARRIER JI -161A;AL # CANADIAN SYLLABICS SAYISI JI -161B;AL # CANADIAN SYLLABICS CARRIER JA -161C;AL # CANADIAN SYLLABICS CARRIER JJU -161D;AL # CANADIAN SYLLABICS CARRIER JJO -161E;AL # CANADIAN SYLLABICS CARRIER JJE -161F;AL # CANADIAN SYLLABICS CARRIER JJEE -1620;AL # CANADIAN SYLLABICS CARRIER JJI -1621;AL # CANADIAN SYLLABICS CARRIER JJA -1622;AL # CANADIAN SYLLABICS CARRIER LU -1623;AL # CANADIAN SYLLABICS CARRIER LO -1624;AL # CANADIAN SYLLABICS CARRIER LE -1625;AL # CANADIAN SYLLABICS CARRIER LEE -1626;AL # CANADIAN SYLLABICS CARRIER LI -1627;AL # CANADIAN SYLLABICS CARRIER LA -1628;AL # CANADIAN SYLLABICS CARRIER DLU -1629;AL # CANADIAN SYLLABICS CARRIER DLO -162A;AL # CANADIAN SYLLABICS CARRIER DLE -162B;AL # CANADIAN SYLLABICS CARRIER DLEE -162C;AL # CANADIAN SYLLABICS CARRIER DLI -162D;AL # CANADIAN SYLLABICS CARRIER DLA -162E;AL # CANADIAN SYLLABICS CARRIER LHU -162F;AL # CANADIAN SYLLABICS CARRIER LHO -1630;AL # CANADIAN SYLLABICS CARRIER LHE -1631;AL # CANADIAN SYLLABICS CARRIER LHEE -1632;AL # CANADIAN SYLLABICS CARRIER LHI -1633;AL # CANADIAN SYLLABICS CARRIER LHA -1634;AL # CANADIAN SYLLABICS CARRIER TLHU -1635;AL # CANADIAN SYLLABICS CARRIER TLHO -1636;AL # CANADIAN SYLLABICS CARRIER TLHE -1637;AL # CANADIAN SYLLABICS CARRIER TLHEE -1638;AL # CANADIAN SYLLABICS CARRIER TLHI -1639;AL # CANADIAN SYLLABICS CARRIER TLHA -163A;AL # CANADIAN SYLLABICS CARRIER TLU -163B;AL # CANADIAN SYLLABICS CARRIER TLO -163C;AL # CANADIAN SYLLABICS CARRIER TLE -163D;AL # CANADIAN SYLLABICS CARRIER TLEE -163E;AL # CANADIAN SYLLABICS CARRIER TLI -163F;AL # CANADIAN SYLLABICS CARRIER TLA -1640;AL # CANADIAN SYLLABICS CARRIER ZU -1641;AL # CANADIAN SYLLABICS CARRIER ZO -1642;AL # CANADIAN SYLLABICS CARRIER ZE -1643;AL # CANADIAN SYLLABICS CARRIER ZEE -1644;AL # CANADIAN SYLLABICS CARRIER ZI -1645;AL # CANADIAN SYLLABICS CARRIER ZA -1646;AL # CANADIAN SYLLABICS CARRIER Z -1647;AL # CANADIAN SYLLABICS CARRIER INITIAL Z -1648;AL # CANADIAN SYLLABICS CARRIER DZU -1649;AL # CANADIAN SYLLABICS CARRIER DZO -164A;AL # CANADIAN SYLLABICS CARRIER DZE -164B;AL # CANADIAN SYLLABICS CARRIER DZEE -164C;AL # CANADIAN SYLLABICS CARRIER DZI -164D;AL # CANADIAN SYLLABICS CARRIER DZA -164E;AL # CANADIAN SYLLABICS CARRIER SU -164F;AL # CANADIAN SYLLABICS CARRIER SO -1650;AL # CANADIAN SYLLABICS CARRIER SE -1651;AL # CANADIAN SYLLABICS CARRIER SEE -1652;AL # CANADIAN SYLLABICS CARRIER SI -1653;AL # CANADIAN SYLLABICS CARRIER SA -1654;AL # CANADIAN SYLLABICS CARRIER SHU -1655;AL # CANADIAN SYLLABICS CARRIER SHO -1656;AL # CANADIAN SYLLABICS CARRIER SHE -1657;AL # CANADIAN SYLLABICS CARRIER SHEE -1658;AL # CANADIAN SYLLABICS CARRIER SHI -1659;AL # CANADIAN SYLLABICS CARRIER SHA -165A;AL # CANADIAN SYLLABICS CARRIER SH -165B;AL # CANADIAN SYLLABICS CARRIER TSU -165C;AL # CANADIAN SYLLABICS CARRIER TSO -165D;AL # CANADIAN SYLLABICS CARRIER TSE -165E;AL # CANADIAN SYLLABICS CARRIER TSEE -165F;AL # CANADIAN SYLLABICS CARRIER TSI -1660;AL # CANADIAN SYLLABICS CARRIER TSA -1661;AL # CANADIAN SYLLABICS CARRIER CHU -1662;AL # CANADIAN SYLLABICS CARRIER CHO -1663;AL # CANADIAN SYLLABICS CARRIER CHE -1664;AL # CANADIAN SYLLABICS CARRIER CHEE -1665;AL # CANADIAN SYLLABICS CARRIER CHI -1666;AL # CANADIAN SYLLABICS CARRIER CHA -1667;AL # CANADIAN SYLLABICS CARRIER TTSU -1668;AL # CANADIAN SYLLABICS CARRIER TTSO -1669;AL # CANADIAN SYLLABICS CARRIER TTSE -166A;AL # CANADIAN SYLLABICS CARRIER TTSEE -166B;AL # CANADIAN SYLLABICS CARRIER TTSI -166C;AL # CANADIAN SYLLABICS CARRIER TTSA -166D;AL # CANADIAN SYLLABICS CHI SIGN -166E;AL # CANADIAN SYLLABICS FULL STOP -166F;AL # CANADIAN SYLLABICS QAI -1670;AL # CANADIAN SYLLABICS NGAI -1671;AL # CANADIAN SYLLABICS NNGI -1672;AL # CANADIAN SYLLABICS NNGII -1673;AL # CANADIAN SYLLABICS NNGO -1674;AL # CANADIAN SYLLABICS NNGOO -1675;AL # CANADIAN SYLLABICS NNGA -1676;AL # CANADIAN SYLLABICS NNGAA -1680;BA # OGHAM SPACE MARK -1681;AL # OGHAM LETTER BEITH -1682;AL # OGHAM LETTER LUIS -1683;AL # OGHAM LETTER FEARN -1684;AL # OGHAM LETTER SAIL -1685;AL # OGHAM LETTER NION -1686;AL # OGHAM LETTER UATH -1687;AL # OGHAM LETTER DAIR -1688;AL # OGHAM LETTER TINNE -1689;AL # OGHAM LETTER COLL -168A;AL # OGHAM LETTER CEIRT -168B;AL # OGHAM LETTER MUIN -168C;AL # OGHAM LETTER GORT -168D;AL # OGHAM LETTER NGEADAL -168E;AL # OGHAM LETTER STRAIF -168F;AL # OGHAM LETTER RUIS -1690;AL # OGHAM LETTER AILM -1691;AL # OGHAM LETTER ONN -1692;AL # OGHAM LETTER UR -1693;AL # OGHAM LETTER EADHADH -1694;AL # OGHAM LETTER IODHADH -1695;AL # OGHAM LETTER EABHADH -1696;AL # OGHAM LETTER OR -1697;AL # OGHAM LETTER UILLEANN -1698;AL # OGHAM LETTER IFIN -1699;AL # OGHAM LETTER EAMHANCHOLL -169A;AL # OGHAM LETTER PEITH -169B;OP # OGHAM FEATHER MARK -169C;CL # OGHAM REVERSED FEATHER MARK -16A0;AL # RUNIC LETTER FEHU FEOH FE F -16A1;AL # RUNIC LETTER V -16A2;AL # RUNIC LETTER URUZ UR U -16A3;AL # RUNIC LETTER YR -16A4;AL # RUNIC LETTER Y -16A5;AL # RUNIC LETTER W -16A6;AL # RUNIC LETTER THURISAZ THURS THORN -16A7;AL # RUNIC LETTER ETH -16A8;AL # RUNIC LETTER ANSUZ A -16A9;AL # RUNIC LETTER OS O -16AA;AL # RUNIC LETTER AC A -16AB;AL # RUNIC LETTER AESC -16AC;AL # RUNIC LETTER LONG-BRANCH-OSS O -16AD;AL # RUNIC LETTER SHORT-TWIG-OSS O -16AE;AL # RUNIC LETTER O -16AF;AL # RUNIC LETTER OE -16B0;AL # RUNIC LETTER ON -16B1;AL # RUNIC LETTER RAIDO RAD REID R -16B2;AL # RUNIC LETTER KAUNA -16B3;AL # RUNIC LETTER CEN -16B4;AL # RUNIC LETTER KAUN K -16B5;AL # RUNIC LETTER G -16B6;AL # RUNIC LETTER ENG -16B7;AL # RUNIC LETTER GEBO GYFU G -16B8;AL # RUNIC LETTER GAR -16B9;AL # RUNIC LETTER WUNJO WYNN W -16BA;AL # RUNIC LETTER HAGLAZ H -16BB;AL # RUNIC LETTER HAEGL H -16BC;AL # RUNIC LETTER LONG-BRANCH-HAGALL H -16BD;AL # RUNIC LETTER SHORT-TWIG-HAGALL H -16BE;AL # RUNIC LETTER NAUDIZ NYD NAUD N -16BF;AL # RUNIC LETTER SHORT-TWIG-NAUD N -16C0;AL # RUNIC LETTER DOTTED-N -16C1;AL # RUNIC LETTER ISAZ IS ISS I -16C2;AL # RUNIC LETTER E -16C3;AL # RUNIC LETTER JERAN J -16C4;AL # RUNIC LETTER GER -16C5;AL # RUNIC LETTER LONG-BRANCH-AR AE -16C6;AL # RUNIC LETTER SHORT-TWIG-AR A -16C7;AL # RUNIC LETTER IWAZ EOH -16C8;AL # RUNIC LETTER PERTHO PEORTH P -16C9;AL # RUNIC LETTER ALGIZ EOLHX -16CA;AL # RUNIC LETTER SOWILO S -16CB;AL # RUNIC LETTER SIGEL LONG-BRANCH-SOL S -16CC;AL # RUNIC LETTER SHORT-TWIG-SOL S -16CD;AL # RUNIC LETTER C -16CE;AL # RUNIC LETTER Z -16CF;AL # RUNIC LETTER TIWAZ TIR TYR T -16D0;AL # RUNIC LETTER SHORT-TWIG-TYR T -16D1;AL # RUNIC LETTER D -16D2;AL # RUNIC LETTER BERKANAN BEORC BJARKAN B -16D3;AL # RUNIC LETTER SHORT-TWIG-BJARKAN B -16D4;AL # RUNIC LETTER DOTTED-P -16D5;AL # RUNIC LETTER OPEN-P -16D6;AL # RUNIC LETTER EHWAZ EH E -16D7;AL # RUNIC LETTER MANNAZ MAN M -16D8;AL # RUNIC LETTER LONG-BRANCH-MADR M -16D9;AL # RUNIC LETTER SHORT-TWIG-MADR M -16DA;AL # RUNIC LETTER LAUKAZ LAGU LOGR L -16DB;AL # RUNIC LETTER DOTTED-L -16DC;AL # RUNIC LETTER INGWAZ -16DD;AL # RUNIC LETTER ING -16DE;AL # RUNIC LETTER DAGAZ DAEG D -16DF;AL # RUNIC LETTER OTHALAN ETHEL O -16E0;AL # RUNIC LETTER EAR -16E1;AL # RUNIC LETTER IOR -16E2;AL # RUNIC LETTER CWEORTH -16E3;AL # RUNIC LETTER CALC -16E4;AL # RUNIC LETTER CEALC -16E5;AL # RUNIC LETTER STAN -16E6;AL # RUNIC LETTER LONG-BRANCH-YR -16E7;AL # RUNIC LETTER SHORT-TWIG-YR -16E8;AL # RUNIC LETTER ICELANDIC-YR -16E9;AL # RUNIC LETTER Q -16EA;AL # RUNIC LETTER X -16EB;BA # RUNIC SINGLE PUNCTUATION -16EC;BA # RUNIC MULTIPLE PUNCTUATION -16ED;BA # RUNIC CROSS PUNCTUATION -16EE;AL # RUNIC ARLAUG SYMBOL -16EF;AL # RUNIC TVIMADUR SYMBOL -16F0;AL # RUNIC BELGTHOR SYMBOL -1700;AL # TAGALOG LETTER A -1701;AL # TAGALOG LETTER I -1702;AL # TAGALOG LETTER U -1703;AL # TAGALOG LETTER KA -1704;AL # TAGALOG LETTER GA -1705;AL # TAGALOG LETTER NGA -1706;AL # TAGALOG LETTER TA -1707;AL # TAGALOG LETTER DA -1708;AL # TAGALOG LETTER NA -1709;AL # TAGALOG LETTER PA -170A;AL # TAGALOG LETTER BA -170B;AL # TAGALOG LETTER MA -170C;AL # TAGALOG LETTER YA -170E;AL # TAGALOG LETTER LA -170F;AL # TAGALOG LETTER WA -1710;AL # TAGALOG LETTER SA -1711;AL # TAGALOG LETTER HA -1712;CM # TAGALOG VOWEL SIGN I -1713;CM # TAGALOG VOWEL SIGN U -1714;CM # TAGALOG SIGN VIRAMA -1720;AL # HANUNOO LETTER A -1721;AL # HANUNOO LETTER I -1722;AL # HANUNOO LETTER U -1723;AL # HANUNOO LETTER KA -1724;AL # HANUNOO LETTER GA -1725;AL # HANUNOO LETTER NGA -1726;AL # HANUNOO LETTER TA -1727;AL # HANUNOO LETTER DA -1728;AL # HANUNOO LETTER NA -1729;AL # HANUNOO LETTER PA -172A;AL # HANUNOO LETTER BA -172B;AL # HANUNOO LETTER MA -172C;AL # HANUNOO LETTER YA -172D;AL # HANUNOO LETTER RA -172E;AL # HANUNOO LETTER LA -172F;AL # HANUNOO LETTER WA -1730;AL # HANUNOO LETTER SA -1731;AL # HANUNOO LETTER HA -1732;CM # HANUNOO VOWEL SIGN I -1733;CM # HANUNOO VOWEL SIGN U -1734;CM # HANUNOO SIGN PAMUDPOD -1735;BA # PHILIPPINE SINGLE PUNCTUATION -1736;BA # PHILIPPINE DOUBLE PUNCTUATION -1740;AL # BUHID LETTER A -1741;AL # BUHID LETTER I -1742;AL # BUHID LETTER U -1743;AL # BUHID LETTER KA -1744;AL # BUHID LETTER GA -1745;AL # BUHID LETTER NGA -1746;AL # BUHID LETTER TA -1747;AL # BUHID LETTER DA -1748;AL # BUHID LETTER NA -1749;AL # BUHID LETTER PA -174A;AL # BUHID LETTER BA -174B;AL # BUHID LETTER MA -174C;AL # BUHID LETTER YA -174D;AL # BUHID LETTER RA -174E;AL # BUHID LETTER LA -174F;AL # BUHID LETTER WA -1750;AL # BUHID LETTER SA -1751;AL # BUHID LETTER HA -1752;CM # BUHID VOWEL SIGN I -1753;CM # BUHID VOWEL SIGN U -1760;AL # TAGBANWA LETTER A -1761;AL # TAGBANWA LETTER I -1762;AL # TAGBANWA LETTER U -1763;AL # TAGBANWA LETTER KA -1764;AL # TAGBANWA LETTER GA -1765;AL # TAGBANWA LETTER NGA -1766;AL # TAGBANWA LETTER TA -1767;AL # TAGBANWA LETTER DA -1768;AL # TAGBANWA LETTER NA -1769;AL # TAGBANWA LETTER PA -176A;AL # TAGBANWA LETTER BA -176B;AL # TAGBANWA LETTER MA -176C;AL # TAGBANWA LETTER YA -176E;AL # TAGBANWA LETTER LA -176F;AL # TAGBANWA LETTER WA -1770;AL # TAGBANWA LETTER SA -1772;CM # TAGBANWA VOWEL SIGN I -1773;CM # TAGBANWA VOWEL SIGN U -1780;SA # KHMER LETTER KA -1781;SA # KHMER LETTER KHA -1782;SA # KHMER LETTER KO -1783;SA # KHMER LETTER KHO -1784;SA # KHMER LETTER NGO -1785;SA # KHMER LETTER CA -1786;SA # KHMER LETTER CHA -1787;SA # KHMER LETTER CO -1788;SA # KHMER LETTER CHO -1789;SA # KHMER LETTER NYO -178A;SA # KHMER LETTER DA -178B;SA # KHMER LETTER TTHA -178C;SA # KHMER LETTER DO -178D;SA # KHMER LETTER TTHO -178E;SA # KHMER LETTER NNO -178F;SA # KHMER LETTER TA -1790;SA # KHMER LETTER THA -1791;SA # KHMER LETTER TO -1792;SA # KHMER LETTER THO -1793;SA # KHMER LETTER NO -1794;SA # KHMER LETTER BA -1795;SA # KHMER LETTER PHA -1796;SA # KHMER LETTER PO -1797;SA # KHMER LETTER PHO -1798;SA # KHMER LETTER MO -1799;SA # KHMER LETTER YO -179A;SA # KHMER LETTER RO -179B;SA # KHMER LETTER LO -179C;SA # KHMER LETTER VO -179D;SA # KHMER LETTER SHA -179E;SA # KHMER LETTER SSO -179F;SA # KHMER LETTER SA -17A0;SA # KHMER LETTER HA -17A1;SA # KHMER LETTER LA -17A2;SA # KHMER LETTER QA -17A3;SA # KHMER INDEPENDENT VOWEL QAQ -17A4;SA # KHMER INDEPENDENT VOWEL QAA -17A5;SA # KHMER INDEPENDENT VOWEL QI -17A6;SA # KHMER INDEPENDENT VOWEL QII -17A7;SA # KHMER INDEPENDENT VOWEL QU -17A8;SA # KHMER INDEPENDENT VOWEL QUK -17A9;SA # KHMER INDEPENDENT VOWEL QUU -17AA;SA # KHMER INDEPENDENT VOWEL QUUV -17AB;SA # KHMER INDEPENDENT VOWEL RY -17AC;SA # KHMER INDEPENDENT VOWEL RYY -17AD;SA # KHMER INDEPENDENT VOWEL LY -17AE;SA # KHMER INDEPENDENT VOWEL LYY -17AF;SA # KHMER INDEPENDENT VOWEL QE -17B0;SA # KHMER INDEPENDENT VOWEL QAI -17B1;SA # KHMER INDEPENDENT VOWEL QOO TYPE ONE -17B2;SA # KHMER INDEPENDENT VOWEL QOO TYPE TWO -17B3;SA # KHMER INDEPENDENT VOWEL QAU -17B4;SA # KHMER VOWEL INHERENT AQ -17B5;SA # KHMER VOWEL INHERENT AA -17B6;SA # KHMER VOWEL SIGN AA -17B7;SA # KHMER VOWEL SIGN I -17B8;SA # KHMER VOWEL SIGN II -17B9;SA # KHMER VOWEL SIGN Y -17BA;SA # KHMER VOWEL SIGN YY -17BB;SA # KHMER VOWEL SIGN U -17BC;SA # KHMER VOWEL SIGN UU -17BD;SA # KHMER VOWEL SIGN UA -17BE;SA # KHMER VOWEL SIGN OE -17BF;SA # KHMER VOWEL SIGN YA -17C0;SA # KHMER VOWEL SIGN IE -17C1;SA # KHMER VOWEL SIGN E -17C2;SA # KHMER VOWEL SIGN AE -17C3;SA # KHMER VOWEL SIGN AI -17C4;SA # KHMER VOWEL SIGN OO -17C5;SA # KHMER VOWEL SIGN AU -17C6;SA # KHMER SIGN NIKAHIT -17C7;SA # KHMER SIGN REAHMUK -17C8;SA # KHMER SIGN YUUKALEAPINTU -17C9;SA # KHMER SIGN MUUSIKATOAN -17CA;SA # KHMER SIGN TRIISAP -17CB;SA # KHMER SIGN BANTOC -17CC;SA # KHMER SIGN ROBAT -17CD;SA # KHMER SIGN TOANDAKHIAT -17CE;SA # KHMER SIGN KAKABAT -17CF;SA # KHMER SIGN AHSDA -17D0;SA # KHMER SIGN SAMYOK SANNYA -17D1;SA # KHMER SIGN VIRIAM -17D2;SA # KHMER SIGN COENG -17D3;SA # KHMER SIGN BATHAMASAT -17D4;BA # KHMER SIGN KHAN -17D5;BA # KHMER SIGN BARIYOOSAN -17D6;NS # KHMER SIGN CAMNUC PII KUUH -17D7;SA # KHMER SIGN LEK TOO -17D8;BA # KHMER SIGN BEYYAL -17D9;AL # KHMER SIGN PHNAEK MUAN -17DA;BA # KHMER SIGN KOOMUUT -17DB;PR # KHMER CURRENCY SYMBOL RIEL -17DC;SA # KHMER SIGN AVAKRAHASANYA -17DD;SA # KHMER SIGN ATTHACAN -17E0;NU # KHMER DIGIT ZERO -17E1;NU # KHMER DIGIT ONE -17E2;NU # KHMER DIGIT TWO -17E3;NU # KHMER DIGIT THREE -17E4;NU # KHMER DIGIT FOUR -17E5;NU # KHMER DIGIT FIVE -17E6;NU # KHMER DIGIT SIX -17E7;NU # KHMER DIGIT SEVEN -17E8;NU # KHMER DIGIT EIGHT -17E9;NU # KHMER DIGIT NINE -17F0;AL # KHMER SYMBOL LEK ATTAK SON -17F1;AL # KHMER SYMBOL LEK ATTAK MUOY -17F2;AL # KHMER SYMBOL LEK ATTAK PII -17F3;AL # KHMER SYMBOL LEK ATTAK BEI -17F4;AL # KHMER SYMBOL LEK ATTAK BUON -17F5;AL # KHMER SYMBOL LEK ATTAK PRAM -17F6;AL # KHMER SYMBOL LEK ATTAK PRAM-MUOY -17F7;AL # KHMER SYMBOL LEK ATTAK PRAM-PII -17F8;AL # KHMER SYMBOL LEK ATTAK PRAM-BEI -17F9;AL # KHMER SYMBOL LEK ATTAK PRAM-BUON -1800;AL # MONGOLIAN BIRGA -1801;AL # MONGOLIAN ELLIPSIS -1802;BA # MONGOLIAN COMMA -1803;BA # MONGOLIAN FULL STOP -1804;BA # MONGOLIAN COLON -1805;BA # MONGOLIAN FOUR DOTS -1806;BB # MONGOLIAN TODO SOFT HYPHEN -1807;AL # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER -1808;BA # MONGOLIAN MANCHU COMMA -1809;BA # MONGOLIAN MANCHU FULL STOP -180A;AL # MONGOLIAN NIRUGU -180B;CM # MONGOLIAN FREE VARIATION SELECTOR ONE -180C;CM # MONGOLIAN FREE VARIATION SELECTOR TWO -180D;CM # MONGOLIAN FREE VARIATION SELECTOR THREE -180E;GL # MONGOLIAN VOWEL SEPARATOR -1810;NU # MONGOLIAN DIGIT ZERO -1811;NU # MONGOLIAN DIGIT ONE -1812;NU # MONGOLIAN DIGIT TWO -1813;NU # MONGOLIAN DIGIT THREE -1814;NU # MONGOLIAN DIGIT FOUR -1815;NU # MONGOLIAN DIGIT FIVE -1816;NU # MONGOLIAN DIGIT SIX -1817;NU # MONGOLIAN DIGIT SEVEN -1818;NU # MONGOLIAN DIGIT EIGHT -1819;NU # MONGOLIAN DIGIT NINE -1820;AL # MONGOLIAN LETTER A -1821;AL # MONGOLIAN LETTER E -1822;AL # MONGOLIAN LETTER I -1823;AL # MONGOLIAN LETTER O -1824;AL # MONGOLIAN LETTER U -1825;AL # MONGOLIAN LETTER OE -1826;AL # MONGOLIAN LETTER UE -1827;AL # MONGOLIAN LETTER EE -1828;AL # MONGOLIAN LETTER NA -1829;AL # MONGOLIAN LETTER ANG -182A;AL # MONGOLIAN LETTER BA -182B;AL # MONGOLIAN LETTER PA -182C;AL # MONGOLIAN LETTER QA -182D;AL # MONGOLIAN LETTER GA -182E;AL # MONGOLIAN LETTER MA -182F;AL # MONGOLIAN LETTER LA -1830;AL # MONGOLIAN LETTER SA -1831;AL # MONGOLIAN LETTER SHA -1832;AL # MONGOLIAN LETTER TA -1833;AL # MONGOLIAN LETTER DA -1834;AL # MONGOLIAN LETTER CHA -1835;AL # MONGOLIAN LETTER JA -1836;AL # MONGOLIAN LETTER YA -1837;AL # MONGOLIAN LETTER RA -1838;AL # MONGOLIAN LETTER WA -1839;AL # MONGOLIAN LETTER FA -183A;AL # MONGOLIAN LETTER KA -183B;AL # MONGOLIAN LETTER KHA -183C;AL # MONGOLIAN LETTER TSA -183D;AL # MONGOLIAN LETTER ZA -183E;AL # MONGOLIAN LETTER HAA -183F;AL # MONGOLIAN LETTER ZRA -1840;AL # MONGOLIAN LETTER LHA -1841;AL # MONGOLIAN LETTER ZHI -1842;AL # MONGOLIAN LETTER CHI -1843;AL # MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844;AL # MONGOLIAN LETTER TODO E -1845;AL # MONGOLIAN LETTER TODO I -1846;AL # MONGOLIAN LETTER TODO O -1847;AL # MONGOLIAN LETTER TODO U -1848;AL # MONGOLIAN LETTER TODO OE -1849;AL # MONGOLIAN LETTER TODO UE -184A;AL # MONGOLIAN LETTER TODO ANG -184B;AL # MONGOLIAN LETTER TODO BA -184C;AL # MONGOLIAN LETTER TODO PA -184D;AL # MONGOLIAN LETTER TODO QA -184E;AL # MONGOLIAN LETTER TODO GA -184F;AL # MONGOLIAN LETTER TODO MA -1850;AL # MONGOLIAN LETTER TODO TA -1851;AL # MONGOLIAN LETTER TODO DA -1852;AL # MONGOLIAN LETTER TODO CHA -1853;AL # MONGOLIAN LETTER TODO JA -1854;AL # MONGOLIAN LETTER TODO TSA -1855;AL # MONGOLIAN LETTER TODO YA -1856;AL # MONGOLIAN LETTER TODO WA -1857;AL # MONGOLIAN LETTER TODO KA -1858;AL # MONGOLIAN LETTER TODO GAA -1859;AL # MONGOLIAN LETTER TODO HAA -185A;AL # MONGOLIAN LETTER TODO JIA -185B;AL # MONGOLIAN LETTER TODO NIA -185C;AL # MONGOLIAN LETTER TODO DZA -185D;AL # MONGOLIAN LETTER SIBE E -185E;AL # MONGOLIAN LETTER SIBE I -185F;AL # MONGOLIAN LETTER SIBE IY -1860;AL # MONGOLIAN LETTER SIBE UE -1861;AL # MONGOLIAN LETTER SIBE U -1862;AL # MONGOLIAN LETTER SIBE ANG -1863;AL # MONGOLIAN LETTER SIBE KA -1864;AL # MONGOLIAN LETTER SIBE GA -1865;AL # MONGOLIAN LETTER SIBE HA -1866;AL # MONGOLIAN LETTER SIBE PA -1867;AL # MONGOLIAN LETTER SIBE SHA -1868;AL # MONGOLIAN LETTER SIBE TA -1869;AL # MONGOLIAN LETTER SIBE DA -186A;AL # MONGOLIAN LETTER SIBE JA -186B;AL # MONGOLIAN LETTER SIBE FA -186C;AL # MONGOLIAN LETTER SIBE GAA -186D;AL # MONGOLIAN LETTER SIBE HAA -186E;AL # MONGOLIAN LETTER SIBE TSA -186F;AL # MONGOLIAN LETTER SIBE ZA -1870;AL # MONGOLIAN LETTER SIBE RAA -1871;AL # MONGOLIAN LETTER SIBE CHA -1872;AL # MONGOLIAN LETTER SIBE ZHA -1873;AL # MONGOLIAN LETTER MANCHU I -1874;AL # MONGOLIAN LETTER MANCHU KA -1875;AL # MONGOLIAN LETTER MANCHU RA -1876;AL # MONGOLIAN LETTER MANCHU FA -1877;AL # MONGOLIAN LETTER MANCHU ZHA -1880;AL # MONGOLIAN LETTER ALI GALI ANUSVARA ONE -1881;AL # MONGOLIAN LETTER ALI GALI VISARGA ONE -1882;AL # MONGOLIAN LETTER ALI GALI DAMARU -1883;AL # MONGOLIAN LETTER ALI GALI UBADAMA -1884;AL # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -1885;AL # MONGOLIAN LETTER ALI GALI BALUDA -1886;AL # MONGOLIAN LETTER ALI GALI THREE BALUDA -1887;AL # MONGOLIAN LETTER ALI GALI A -1888;AL # MONGOLIAN LETTER ALI GALI I -1889;AL # MONGOLIAN LETTER ALI GALI KA -188A;AL # MONGOLIAN LETTER ALI GALI NGA -188B;AL # MONGOLIAN LETTER ALI GALI CA -188C;AL # MONGOLIAN LETTER ALI GALI TTA -188D;AL # MONGOLIAN LETTER ALI GALI TTHA -188E;AL # MONGOLIAN LETTER ALI GALI DDA -188F;AL # MONGOLIAN LETTER ALI GALI NNA -1890;AL # MONGOLIAN LETTER ALI GALI TA -1891;AL # MONGOLIAN LETTER ALI GALI DA -1892;AL # MONGOLIAN LETTER ALI GALI PA -1893;AL # MONGOLIAN LETTER ALI GALI PHA -1894;AL # MONGOLIAN LETTER ALI GALI SSA -1895;AL # MONGOLIAN LETTER ALI GALI ZHA -1896;AL # MONGOLIAN LETTER ALI GALI ZA -1897;AL # MONGOLIAN LETTER ALI GALI AH -1898;AL # MONGOLIAN LETTER TODO ALI GALI TA -1899;AL # MONGOLIAN LETTER TODO ALI GALI ZHA -189A;AL # MONGOLIAN LETTER MANCHU ALI GALI GHA -189B;AL # MONGOLIAN LETTER MANCHU ALI GALI NGA -189C;AL # MONGOLIAN LETTER MANCHU ALI GALI CA -189D;AL # MONGOLIAN LETTER MANCHU ALI GALI JHA -189E;AL # MONGOLIAN LETTER MANCHU ALI GALI TTA -189F;AL # MONGOLIAN LETTER MANCHU ALI GALI DDHA -18A0;AL # MONGOLIAN LETTER MANCHU ALI GALI TA -18A1;AL # MONGOLIAN LETTER MANCHU ALI GALI DHA -18A2;AL # MONGOLIAN LETTER MANCHU ALI GALI SSA -18A3;AL # MONGOLIAN LETTER MANCHU ALI GALI CYA -18A4;AL # MONGOLIAN LETTER MANCHU ALI GALI ZHA -18A5;AL # MONGOLIAN LETTER MANCHU ALI GALI ZA -18A6;AL # MONGOLIAN LETTER ALI GALI HALF U -18A7;AL # MONGOLIAN LETTER ALI GALI HALF YA -18A8;AL # MONGOLIAN LETTER MANCHU ALI GALI BHA -18A9;CM # MONGOLIAN LETTER ALI GALI DAGALGA -1900;AL # LIMBU VOWEL-CARRIER LETTER -1901;AL # LIMBU LETTER KA -1902;AL # LIMBU LETTER KHA -1903;AL # LIMBU LETTER GA -1904;AL # LIMBU LETTER GHA -1905;AL # LIMBU LETTER NGA -1906;AL # LIMBU LETTER CA -1907;AL # LIMBU LETTER CHA -1908;AL # LIMBU LETTER JA -1909;AL # LIMBU LETTER JHA -190A;AL # LIMBU LETTER YAN -190B;AL # LIMBU LETTER TA -190C;AL # LIMBU LETTER THA -190D;AL # LIMBU LETTER DA -190E;AL # LIMBU LETTER DHA -190F;AL # LIMBU LETTER NA -1910;AL # LIMBU LETTER PA -1911;AL # LIMBU LETTER PHA -1912;AL # LIMBU LETTER BA -1913;AL # LIMBU LETTER BHA -1914;AL # LIMBU LETTER MA -1915;AL # LIMBU LETTER YA -1916;AL # LIMBU LETTER RA -1917;AL # LIMBU LETTER LA -1918;AL # LIMBU LETTER WA -1919;AL # LIMBU LETTER SHA -191A;AL # LIMBU LETTER SSA -191B;AL # LIMBU LETTER SA -191C;AL # LIMBU LETTER HA -1920;CM # LIMBU VOWEL SIGN A -1921;CM # LIMBU VOWEL SIGN I -1922;CM # LIMBU VOWEL SIGN U -1923;CM # LIMBU VOWEL SIGN EE -1924;CM # LIMBU VOWEL SIGN AI -1925;CM # LIMBU VOWEL SIGN OO -1926;CM # LIMBU VOWEL SIGN AU -1927;CM # LIMBU VOWEL SIGN E -1928;CM # LIMBU VOWEL SIGN O -1929;CM # LIMBU SUBJOINED LETTER YA -192A;CM # LIMBU SUBJOINED LETTER RA -192B;CM # LIMBU SUBJOINED LETTER WA -1930;CM # LIMBU SMALL LETTER KA -1931;CM # LIMBU SMALL LETTER NGA -1932;CM # LIMBU SMALL LETTER ANUSVARA -1933;CM # LIMBU SMALL LETTER TA -1934;CM # LIMBU SMALL LETTER NA -1935;CM # LIMBU SMALL LETTER PA -1936;CM # LIMBU SMALL LETTER MA -1937;CM # LIMBU SMALL LETTER RA -1938;CM # LIMBU SMALL LETTER LA -1939;CM # LIMBU SIGN MUKPHRENG -193A;CM # LIMBU SIGN KEMPHRENG -193B;CM # LIMBU SIGN SA-I -1940;AL # LIMBU SIGN LOO -1944;EX # LIMBU EXCLAMATION MARK -1945;EX # LIMBU QUESTION MARK -1946;NU # LIMBU DIGIT ZERO -1947;NU # LIMBU DIGIT ONE -1948;NU # LIMBU DIGIT TWO -1949;NU # LIMBU DIGIT THREE -194A;NU # LIMBU DIGIT FOUR -194B;NU # LIMBU DIGIT FIVE -194C;NU # LIMBU DIGIT SIX -194D;NU # LIMBU DIGIT SEVEN -194E;NU # LIMBU DIGIT EIGHT -194F;NU # LIMBU DIGIT NINE -1950;SA # TAI LE LETTER KA -1951;SA # TAI LE LETTER XA -1952;SA # TAI LE LETTER NGA -1953;SA # TAI LE LETTER TSA -1954;SA # TAI LE LETTER SA -1955;SA # TAI LE LETTER YA -1956;SA # TAI LE LETTER TA -1957;SA # TAI LE LETTER THA -1958;SA # TAI LE LETTER LA -1959;SA # TAI LE LETTER PA -195A;SA # TAI LE LETTER PHA -195B;SA # TAI LE LETTER MA -195C;SA # TAI LE LETTER FA -195D;SA # TAI LE LETTER VA -195E;SA # TAI LE LETTER HA -195F;SA # TAI LE LETTER QA -1960;SA # TAI LE LETTER KHA -1961;SA # TAI LE LETTER TSHA -1962;SA # TAI LE LETTER NA -1963;SA # TAI LE LETTER A -1964;SA # TAI LE LETTER I -1965;SA # TAI LE LETTER EE -1966;SA # TAI LE LETTER EH -1967;SA # TAI LE LETTER U -1968;SA # TAI LE LETTER OO -1969;SA # TAI LE LETTER O -196A;SA # TAI LE LETTER UE -196B;SA # TAI LE LETTER E -196C;SA # TAI LE LETTER AUE -196D;SA # TAI LE LETTER AI -1970;SA # TAI LE LETTER TONE-2 -1971;SA # TAI LE LETTER TONE-3 -1972;SA # TAI LE LETTER TONE-4 -1973;SA # TAI LE LETTER TONE-5 -1974;SA # TAI LE LETTER TONE-6 -1980;SA # NEW TAI LUE LETTER HIGH QA -1981;SA # NEW TAI LUE LETTER LOW QA -1982;SA # NEW TAI LUE LETTER HIGH KA -1983;SA # NEW TAI LUE LETTER HIGH XA -1984;SA # NEW TAI LUE LETTER HIGH NGA -1985;SA # NEW TAI LUE LETTER LOW KA -1986;SA # NEW TAI LUE LETTER LOW XA -1987;SA # NEW TAI LUE LETTER LOW NGA -1988;SA # NEW TAI LUE LETTER HIGH TSA -1989;SA # NEW TAI LUE LETTER HIGH SA -198A;SA # NEW TAI LUE LETTER HIGH YA -198B;SA # NEW TAI LUE LETTER LOW TSA -198C;SA # NEW TAI LUE LETTER LOW SA -198D;SA # NEW TAI LUE LETTER LOW YA -198E;SA # NEW TAI LUE LETTER HIGH TA -198F;SA # NEW TAI LUE LETTER HIGH THA -1990;SA # NEW TAI LUE LETTER HIGH NA -1991;SA # NEW TAI LUE LETTER LOW TA -1992;SA # NEW TAI LUE LETTER LOW THA -1993;SA # NEW TAI LUE LETTER LOW NA -1994;SA # NEW TAI LUE LETTER HIGH PA -1995;SA # NEW TAI LUE LETTER HIGH PHA -1996;SA # NEW TAI LUE LETTER HIGH MA -1997;SA # NEW TAI LUE LETTER LOW PA -1998;SA # NEW TAI LUE LETTER LOW PHA -1999;SA # NEW TAI LUE LETTER LOW MA -199A;SA # NEW TAI LUE LETTER HIGH FA -199B;SA # NEW TAI LUE LETTER HIGH VA -199C;SA # NEW TAI LUE LETTER HIGH LA -199D;SA # NEW TAI LUE LETTER LOW FA -199E;SA # NEW TAI LUE LETTER LOW VA -199F;SA # NEW TAI LUE LETTER LOW LA -19A0;SA # NEW TAI LUE LETTER HIGH HA -19A1;SA # NEW TAI LUE LETTER HIGH DA -19A2;SA # NEW TAI LUE LETTER HIGH BA -19A3;SA # NEW TAI LUE LETTER LOW HA -19A4;SA # NEW TAI LUE LETTER LOW DA -19A5;SA # NEW TAI LUE LETTER LOW BA -19A6;SA # NEW TAI LUE LETTER HIGH KVA -19A7;SA # NEW TAI LUE LETTER HIGH XVA -19A8;SA # NEW TAI LUE LETTER LOW KVA -19A9;SA # NEW TAI LUE LETTER LOW XVA -19B0;SA # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER -19B1;SA # NEW TAI LUE VOWEL SIGN AA -19B2;SA # NEW TAI LUE VOWEL SIGN II -19B3;SA # NEW TAI LUE VOWEL SIGN U -19B4;SA # NEW TAI LUE VOWEL SIGN UU -19B5;SA # NEW TAI LUE VOWEL SIGN E -19B6;SA # NEW TAI LUE VOWEL SIGN AE -19B7;SA # NEW TAI LUE VOWEL SIGN O -19B8;SA # NEW TAI LUE VOWEL SIGN OA -19B9;SA # NEW TAI LUE VOWEL SIGN UE -19BA;SA # NEW TAI LUE VOWEL SIGN AY -19BB;SA # NEW TAI LUE VOWEL SIGN AAY -19BC;SA # NEW TAI LUE VOWEL SIGN UY -19BD;SA # NEW TAI LUE VOWEL SIGN OY -19BE;SA # NEW TAI LUE VOWEL SIGN OAY -19BF;SA # NEW TAI LUE VOWEL SIGN UEY -19C0;SA # NEW TAI LUE VOWEL SIGN IY -19C1;SA # NEW TAI LUE LETTER FINAL V -19C2;SA # NEW TAI LUE LETTER FINAL NG -19C3;SA # NEW TAI LUE LETTER FINAL N -19C4;SA # NEW TAI LUE LETTER FINAL M -19C5;SA # NEW TAI LUE LETTER FINAL K -19C6;SA # NEW TAI LUE LETTER FINAL D -19C7;SA # NEW TAI LUE LETTER FINAL B -19C8;SA # NEW TAI LUE TONE MARK-1 -19C9;SA # NEW TAI LUE TONE MARK-2 -19D0;NU # NEW TAI LUE DIGIT ZERO -19D1;NU # NEW TAI LUE DIGIT ONE -19D2;NU # NEW TAI LUE DIGIT TWO -19D3;NU # NEW TAI LUE DIGIT THREE -19D4;NU # NEW TAI LUE DIGIT FOUR -19D5;NU # NEW TAI LUE DIGIT FIVE -19D6;NU # NEW TAI LUE DIGIT SIX -19D7;NU # NEW TAI LUE DIGIT SEVEN -19D8;NU # NEW TAI LUE DIGIT EIGHT -19D9;NU # NEW TAI LUE DIGIT NINE -19DE;SA # NEW TAI LUE SIGN LAE -19DF;SA # NEW TAI LUE SIGN LAEV -19E0;AL # KHMER SYMBOL PATHAMASAT -19E1;AL # KHMER SYMBOL MUOY KOET -19E2;AL # KHMER SYMBOL PII KOET -19E3;AL # KHMER SYMBOL BEI KOET -19E4;AL # KHMER SYMBOL BUON KOET -19E5;AL # KHMER SYMBOL PRAM KOET -19E6;AL # KHMER SYMBOL PRAM-MUOY KOET -19E7;AL # KHMER SYMBOL PRAM-PII KOET -19E8;AL # KHMER SYMBOL PRAM-BEI KOET -19E9;AL # KHMER SYMBOL PRAM-BUON KOET -19EA;AL # KHMER SYMBOL DAP KOET -19EB;AL # KHMER SYMBOL DAP-MUOY KOET -19EC;AL # KHMER SYMBOL DAP-PII KOET -19ED;AL # KHMER SYMBOL DAP-BEI KOET -19EE;AL # KHMER SYMBOL DAP-BUON KOET -19EF;AL # KHMER SYMBOL DAP-PRAM KOET -19F0;AL # KHMER SYMBOL TUTEYASAT -19F1;AL # KHMER SYMBOL MUOY ROC -19F2;AL # KHMER SYMBOL PII ROC -19F3;AL # KHMER SYMBOL BEI ROC -19F4;AL # KHMER SYMBOL BUON ROC -19F5;AL # KHMER SYMBOL PRAM ROC -19F6;AL # KHMER SYMBOL PRAM-MUOY ROC -19F7;AL # KHMER SYMBOL PRAM-PII ROC -19F8;AL # KHMER SYMBOL PRAM-BEI ROC -19F9;AL # KHMER SYMBOL PRAM-BUON ROC -19FA;AL # KHMER SYMBOL DAP ROC -19FB;AL # KHMER SYMBOL DAP-MUOY ROC -19FC;AL # KHMER SYMBOL DAP-PII ROC -19FD;AL # KHMER SYMBOL DAP-BEI ROC -19FE;AL # KHMER SYMBOL DAP-BUON ROC -19FF;AL # KHMER SYMBOL DAP-PRAM ROC -1A00;AL # BUGINESE LETTER KA -1A01;AL # BUGINESE LETTER GA -1A02;AL # BUGINESE LETTER NGA -1A03;AL # BUGINESE LETTER NGKA -1A04;AL # BUGINESE LETTER PA -1A05;AL # BUGINESE LETTER BA -1A06;AL # BUGINESE LETTER MA -1A07;AL # BUGINESE LETTER MPA -1A08;AL # BUGINESE LETTER TA -1A09;AL # BUGINESE LETTER DA -1A0A;AL # BUGINESE LETTER NA -1A0B;AL # BUGINESE LETTER NRA -1A0C;AL # BUGINESE LETTER CA -1A0D;AL # BUGINESE LETTER JA -1A0E;AL # BUGINESE LETTER NYA -1A0F;AL # BUGINESE LETTER NYCA -1A10;AL # BUGINESE LETTER YA -1A11;AL # BUGINESE LETTER RA -1A12;AL # BUGINESE LETTER LA -1A13;AL # BUGINESE LETTER VA -1A14;AL # BUGINESE LETTER SA -1A15;AL # BUGINESE LETTER A -1A16;AL # BUGINESE LETTER HA -1A17;CM # BUGINESE VOWEL SIGN I -1A18;CM # BUGINESE VOWEL SIGN U -1A19;CM # BUGINESE VOWEL SIGN E -1A1A;CM # BUGINESE VOWEL SIGN O -1A1B;CM # BUGINESE VOWEL SIGN AE -1A1E;BA # BUGINESE PALLAWA -1A1F;AL # BUGINESE END OF SECTION -1B00;CM # BALINESE SIGN ULU RICEM -1B01;CM # BALINESE SIGN ULU CANDRA -1B02;CM # BALINESE SIGN CECEK -1B03;CM # BALINESE SIGN SURANG -1B04;CM # BALINESE SIGN BISAH -1B05;AL # BALINESE LETTER AKARA -1B06;AL # BALINESE LETTER AKARA TEDUNG -1B07;AL # BALINESE LETTER IKARA -1B08;AL # BALINESE LETTER IKARA TEDUNG -1B09;AL # BALINESE LETTER UKARA -1B0A;AL # BALINESE LETTER UKARA TEDUNG -1B0B;AL # BALINESE LETTER RA REPA -1B0C;AL # BALINESE LETTER RA REPA TEDUNG -1B0D;AL # BALINESE LETTER LA LENGA -1B0E;AL # BALINESE LETTER LA LENGA TEDUNG -1B0F;AL # BALINESE LETTER EKARA -1B10;AL # BALINESE LETTER AIKARA -1B11;AL # BALINESE LETTER OKARA -1B12;AL # BALINESE LETTER OKARA TEDUNG -1B13;AL # BALINESE LETTER KA -1B14;AL # BALINESE LETTER KA MAHAPRANA -1B15;AL # BALINESE LETTER GA -1B16;AL # BALINESE LETTER GA GORA -1B17;AL # BALINESE LETTER NGA -1B18;AL # BALINESE LETTER CA -1B19;AL # BALINESE LETTER CA LACA -1B1A;AL # BALINESE LETTER JA -1B1B;AL # BALINESE LETTER JA JERA -1B1C;AL # BALINESE LETTER NYA -1B1D;AL # BALINESE LETTER TA LATIK -1B1E;AL # BALINESE LETTER TA MURDA MAHAPRANA -1B1F;AL # BALINESE LETTER DA MURDA ALPAPRANA -1B20;AL # BALINESE LETTER DA MURDA MAHAPRANA -1B21;AL # BALINESE LETTER NA RAMBAT -1B22;AL # BALINESE LETTER TA -1B23;AL # BALINESE LETTER TA TAWA -1B24;AL # BALINESE LETTER DA -1B25;AL # BALINESE LETTER DA MADU -1B26;AL # BALINESE LETTER NA -1B27;AL # BALINESE LETTER PA -1B28;AL # BALINESE LETTER PA KAPAL -1B29;AL # BALINESE LETTER BA -1B2A;AL # BALINESE LETTER BA KEMBANG -1B2B;AL # BALINESE LETTER MA -1B2C;AL # BALINESE LETTER YA -1B2D;AL # BALINESE LETTER RA -1B2E;AL # BALINESE LETTER LA -1B2F;AL # BALINESE LETTER WA -1B30;AL # BALINESE LETTER SA SAGA -1B31;AL # BALINESE LETTER SA SAPA -1B32;AL # BALINESE LETTER SA -1B33;AL # BALINESE LETTER HA -1B34;CM # BALINESE SIGN REREKAN -1B35;CM # BALINESE VOWEL SIGN TEDUNG -1B36;CM # BALINESE VOWEL SIGN ULU -1B37;CM # BALINESE VOWEL SIGN ULU SARI -1B38;CM # BALINESE VOWEL SIGN SUKU -1B39;CM # BALINESE VOWEL SIGN SUKU ILUT -1B3A;CM # BALINESE VOWEL SIGN RA REPA -1B3B;CM # BALINESE VOWEL SIGN RA REPA TEDUNG -1B3C;CM # BALINESE VOWEL SIGN LA LENGA -1B3D;CM # BALINESE VOWEL SIGN LA LENGA TEDUNG -1B3E;CM # BALINESE VOWEL SIGN TALING -1B3F;CM # BALINESE VOWEL SIGN TALING REPA -1B40;CM # BALINESE VOWEL SIGN TALING TEDUNG -1B41;CM # BALINESE VOWEL SIGN TALING REPA TEDUNG -1B42;CM # BALINESE VOWEL SIGN PEPET -1B43;CM # BALINESE VOWEL SIGN PEPET TEDUNG -1B44;CM # BALINESE ADEG ADEG -1B45;AL # BALINESE LETTER KAF SASAK -1B46;AL # BALINESE LETTER KHOT SASAK -1B47;AL # BALINESE LETTER TZIR SASAK -1B48;AL # BALINESE LETTER EF SASAK -1B49;AL # BALINESE LETTER VE SASAK -1B4A;AL # BALINESE LETTER ZAL SASAK -1B4B;AL # BALINESE LETTER ASYURA SASAK -1B50;NU # BALINESE DIGIT ZERO -1B51;NU # BALINESE DIGIT ONE -1B52;NU # BALINESE DIGIT TWO -1B53;NU # BALINESE DIGIT THREE -1B54;NU # BALINESE DIGIT FOUR -1B55;NU # BALINESE DIGIT FIVE -1B56;NU # BALINESE DIGIT SIX -1B57;NU # BALINESE DIGIT SEVEN -1B58;NU # BALINESE DIGIT EIGHT -1B59;NU # BALINESE DIGIT NINE -1B5A;BA # BALINESE PANTI -1B5B;BA # BALINESE PAMADA -1B5C;BA # BALINESE WINDU -1B5D;BA # BALINESE CARIK PAMUNGKAH -1B5E;BA # BALINESE CARIK SIKI -1B5F;BA # BALINESE CARIK PAREREN -1B60;BA # BALINESE PAMENENG -1B61;AL # BALINESE MUSICAL SYMBOL DONG -1B62;AL # BALINESE MUSICAL SYMBOL DENG -1B63;AL # BALINESE MUSICAL SYMBOL DUNG -1B64;AL # BALINESE MUSICAL SYMBOL DANG -1B65;AL # BALINESE MUSICAL SYMBOL DANG SURANG -1B66;AL # BALINESE MUSICAL SYMBOL DING -1B67;AL # BALINESE MUSICAL SYMBOL DAENG -1B68;AL # BALINESE MUSICAL SYMBOL DEUNG -1B69;AL # BALINESE MUSICAL SYMBOL DAING -1B6A;AL # BALINESE MUSICAL SYMBOL DANG GEDE -1B6B;CM # BALINESE MUSICAL SYMBOL COMBINING TEGEH -1B6C;CM # BALINESE MUSICAL SYMBOL COMBINING ENDEP -1B6D;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPUL -1B6E;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPLI -1B6F;CM # BALINESE MUSICAL SYMBOL COMBINING JEGOGAN -1B70;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN -1B71;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN -1B72;CM # BALINESE MUSICAL SYMBOL COMBINING BENDE -1B73;CM # BALINESE MUSICAL SYMBOL COMBINING GONG -1B74;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG -1B75;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG -1B76;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK -1B77;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK -1B78;AL # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG -1B79;AL # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG -1B7A;AL # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK -1B7B;AL # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK -1B7C;AL # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING -1D00;AL # LATIN LETTER SMALL CAPITAL A -1D01;AL # LATIN LETTER SMALL CAPITAL AE -1D02;AL # LATIN SMALL LETTER TURNED AE -1D03;AL # LATIN LETTER SMALL CAPITAL BARRED B -1D04;AL # LATIN LETTER SMALL CAPITAL C -1D05;AL # LATIN LETTER SMALL CAPITAL D -1D06;AL # LATIN LETTER SMALL CAPITAL ETH -1D07;AL # LATIN LETTER SMALL CAPITAL E -1D08;AL # LATIN SMALL LETTER TURNED OPEN E -1D09;AL # LATIN SMALL LETTER TURNED I -1D0A;AL # LATIN LETTER SMALL CAPITAL J -1D0B;AL # LATIN LETTER SMALL CAPITAL K -1D0C;AL # LATIN LETTER SMALL CAPITAL L WITH STROKE -1D0D;AL # LATIN LETTER SMALL CAPITAL M -1D0E;AL # LATIN LETTER SMALL CAPITAL REVERSED N -1D0F;AL # LATIN LETTER SMALL CAPITAL O -1D10;AL # LATIN LETTER SMALL CAPITAL OPEN O -1D11;AL # LATIN SMALL LETTER SIDEWAYS O -1D12;AL # LATIN SMALL LETTER SIDEWAYS OPEN O -1D13;AL # LATIN SMALL LETTER SIDEWAYS O WITH STROKE -1D14;AL # LATIN SMALL LETTER TURNED OE -1D15;AL # LATIN LETTER SMALL CAPITAL OU -1D16;AL # LATIN SMALL LETTER TOP HALF O -1D17;AL # LATIN SMALL LETTER BOTTOM HALF O -1D18;AL # LATIN LETTER SMALL CAPITAL P -1D19;AL # LATIN LETTER SMALL CAPITAL REVERSED R -1D1A;AL # LATIN LETTER SMALL CAPITAL TURNED R -1D1B;AL # LATIN LETTER SMALL CAPITAL T -1D1C;AL # LATIN LETTER SMALL CAPITAL U -1D1D;AL # LATIN SMALL LETTER SIDEWAYS U -1D1E;AL # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U -1D1F;AL # LATIN SMALL LETTER SIDEWAYS TURNED M -1D20;AL # LATIN LETTER SMALL CAPITAL V -1D21;AL # LATIN LETTER SMALL CAPITAL W -1D22;AL # LATIN LETTER SMALL CAPITAL Z -1D23;AL # LATIN LETTER SMALL CAPITAL EZH -1D24;AL # LATIN LETTER VOICED LARYNGEAL SPIRANT -1D25;AL # LATIN LETTER AIN -1D26;AL # GREEK LETTER SMALL CAPITAL GAMMA -1D27;AL # GREEK LETTER SMALL CAPITAL LAMDA -1D28;AL # GREEK LETTER SMALL CAPITAL PI -1D29;AL # GREEK LETTER SMALL CAPITAL RHO -1D2A;AL # GREEK LETTER SMALL CAPITAL PSI -1D2B;AL # CYRILLIC LETTER SMALL CAPITAL EL -1D2C;AL # MODIFIER LETTER CAPITAL A -1D2D;AL # MODIFIER LETTER CAPITAL AE -1D2E;AL # MODIFIER LETTER CAPITAL B -1D2F;AL # MODIFIER LETTER CAPITAL BARRED B -1D30;AL # MODIFIER LETTER CAPITAL D -1D31;AL # MODIFIER LETTER CAPITAL E -1D32;AL # MODIFIER LETTER CAPITAL REVERSED E -1D33;AL # MODIFIER LETTER CAPITAL G -1D34;AL # MODIFIER LETTER CAPITAL H -1D35;AL # MODIFIER LETTER CAPITAL I -1D36;AL # MODIFIER LETTER CAPITAL J -1D37;AL # MODIFIER LETTER CAPITAL K -1D38;AL # MODIFIER LETTER CAPITAL L -1D39;AL # MODIFIER LETTER CAPITAL M -1D3A;AL # MODIFIER LETTER CAPITAL N -1D3B;AL # MODIFIER LETTER CAPITAL REVERSED N -1D3C;AL # MODIFIER LETTER CAPITAL O -1D3D;AL # MODIFIER LETTER CAPITAL OU -1D3E;AL # MODIFIER LETTER CAPITAL P -1D3F;AL # MODIFIER LETTER CAPITAL R -1D40;AL # MODIFIER LETTER CAPITAL T -1D41;AL # MODIFIER LETTER CAPITAL U -1D42;AL # MODIFIER LETTER CAPITAL W -1D43;AL # MODIFIER LETTER SMALL A -1D44;AL # MODIFIER LETTER SMALL TURNED A -1D45;AL # MODIFIER LETTER SMALL ALPHA -1D46;AL # MODIFIER LETTER SMALL TURNED AE -1D47;AL # MODIFIER LETTER SMALL B -1D48;AL # MODIFIER LETTER SMALL D -1D49;AL # MODIFIER LETTER SMALL E -1D4A;AL # MODIFIER LETTER SMALL SCHWA -1D4B;AL # MODIFIER LETTER SMALL OPEN E -1D4C;AL # MODIFIER LETTER SMALL TURNED OPEN E -1D4D;AL # MODIFIER LETTER SMALL G -1D4E;AL # MODIFIER LETTER SMALL TURNED I -1D4F;AL # MODIFIER LETTER SMALL K -1D50;AL # MODIFIER LETTER SMALL M -1D51;AL # MODIFIER LETTER SMALL ENG -1D52;AL # MODIFIER LETTER SMALL O -1D53;AL # MODIFIER LETTER SMALL OPEN O -1D54;AL # MODIFIER LETTER SMALL TOP HALF O -1D55;AL # MODIFIER LETTER SMALL BOTTOM HALF O -1D56;AL # MODIFIER LETTER SMALL P -1D57;AL # MODIFIER LETTER SMALL T -1D58;AL # MODIFIER LETTER SMALL U -1D59;AL # MODIFIER LETTER SMALL SIDEWAYS U -1D5A;AL # MODIFIER LETTER SMALL TURNED M -1D5B;AL # MODIFIER LETTER SMALL V -1D5C;AL # MODIFIER LETTER SMALL AIN -1D5D;AL # MODIFIER LETTER SMALL BETA -1D5E;AL # MODIFIER LETTER SMALL GREEK GAMMA -1D5F;AL # MODIFIER LETTER SMALL DELTA -1D60;AL # MODIFIER LETTER SMALL GREEK PHI -1D61;AL # MODIFIER LETTER SMALL CHI -1D62;AL # LATIN SUBSCRIPT SMALL LETTER I -1D63;AL # LATIN SUBSCRIPT SMALL LETTER R -1D64;AL # LATIN SUBSCRIPT SMALL LETTER U -1D65;AL # LATIN SUBSCRIPT SMALL LETTER V -1D66;AL # GREEK SUBSCRIPT SMALL LETTER BETA -1D67;AL # GREEK SUBSCRIPT SMALL LETTER GAMMA -1D68;AL # GREEK SUBSCRIPT SMALL LETTER RHO -1D69;AL # GREEK SUBSCRIPT SMALL LETTER PHI -1D6A;AL # GREEK SUBSCRIPT SMALL LETTER CHI -1D6B;AL # LATIN SMALL LETTER UE -1D6C;AL # LATIN SMALL LETTER B WITH MIDDLE TILDE -1D6D;AL # LATIN SMALL LETTER D WITH MIDDLE TILDE -1D6E;AL # LATIN SMALL LETTER F WITH MIDDLE TILDE -1D6F;AL # LATIN SMALL LETTER M WITH MIDDLE TILDE -1D70;AL # LATIN SMALL LETTER N WITH MIDDLE TILDE -1D71;AL # LATIN SMALL LETTER P WITH MIDDLE TILDE -1D72;AL # LATIN SMALL LETTER R WITH MIDDLE TILDE -1D73;AL # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE -1D74;AL # LATIN SMALL LETTER S WITH MIDDLE TILDE -1D75;AL # LATIN SMALL LETTER T WITH MIDDLE TILDE -1D76;AL # LATIN SMALL LETTER Z WITH MIDDLE TILDE -1D77;AL # LATIN SMALL LETTER TURNED G -1D78;AL # MODIFIER LETTER CYRILLIC EN -1D79;AL # LATIN SMALL LETTER INSULAR G -1D7A;AL # LATIN SMALL LETTER TH WITH STRIKETHROUGH -1D7B;AL # LATIN SMALL CAPITAL LETTER I WITH STROKE -1D7C;AL # LATIN SMALL LETTER IOTA WITH STROKE -1D7D;AL # LATIN SMALL LETTER P WITH STROKE -1D7E;AL # LATIN SMALL CAPITAL LETTER U WITH STROKE -1D7F;AL # LATIN SMALL LETTER UPSILON WITH STROKE -1D80;AL # LATIN SMALL LETTER B WITH PALATAL HOOK -1D81;AL # LATIN SMALL LETTER D WITH PALATAL HOOK -1D82;AL # LATIN SMALL LETTER F WITH PALATAL HOOK -1D83;AL # LATIN SMALL LETTER G WITH PALATAL HOOK -1D84;AL # LATIN SMALL LETTER K WITH PALATAL HOOK -1D85;AL # LATIN SMALL LETTER L WITH PALATAL HOOK -1D86;AL # LATIN SMALL LETTER M WITH PALATAL HOOK -1D87;AL # LATIN SMALL LETTER N WITH PALATAL HOOK -1D88;AL # LATIN SMALL LETTER P WITH PALATAL HOOK -1D89;AL # LATIN SMALL LETTER R WITH PALATAL HOOK -1D8A;AL # LATIN SMALL LETTER S WITH PALATAL HOOK -1D8B;AL # LATIN SMALL LETTER ESH WITH PALATAL HOOK -1D8C;AL # LATIN SMALL LETTER V WITH PALATAL HOOK -1D8D;AL # LATIN SMALL LETTER X WITH PALATAL HOOK -1D8E;AL # LATIN SMALL LETTER Z WITH PALATAL HOOK -1D8F;AL # LATIN SMALL LETTER A WITH RETROFLEX HOOK -1D90;AL # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK -1D91;AL # LATIN SMALL LETTER D WITH HOOK AND TAIL -1D92;AL # LATIN SMALL LETTER E WITH RETROFLEX HOOK -1D93;AL # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK -1D94;AL # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK -1D95;AL # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK -1D96;AL # LATIN SMALL LETTER I WITH RETROFLEX HOOK -1D97;AL # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK -1D98;AL # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK -1D99;AL # LATIN SMALL LETTER U WITH RETROFLEX HOOK -1D9A;AL # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -1D9B;AL # MODIFIER LETTER SMALL TURNED ALPHA -1D9C;AL # MODIFIER LETTER SMALL C -1D9D;AL # MODIFIER LETTER SMALL C WITH CURL -1D9E;AL # MODIFIER LETTER SMALL ETH -1D9F;AL # MODIFIER LETTER SMALL REVERSED OPEN E -1DA0;AL # MODIFIER LETTER SMALL F -1DA1;AL # MODIFIER LETTER SMALL DOTLESS J WITH STROKE -1DA2;AL # MODIFIER LETTER SMALL SCRIPT G -1DA3;AL # MODIFIER LETTER SMALL TURNED H -1DA4;AL # MODIFIER LETTER SMALL I WITH STROKE -1DA5;AL # MODIFIER LETTER SMALL IOTA -1DA6;AL # MODIFIER LETTER SMALL CAPITAL I -1DA7;AL # MODIFIER LETTER SMALL CAPITAL I WITH STROKE -1DA8;AL # MODIFIER LETTER SMALL J WITH CROSSED-TAIL -1DA9;AL # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK -1DAA;AL # MODIFIER LETTER SMALL L WITH PALATAL HOOK -1DAB;AL # MODIFIER LETTER SMALL CAPITAL L -1DAC;AL # MODIFIER LETTER SMALL M WITH HOOK -1DAD;AL # MODIFIER LETTER SMALL TURNED M WITH LONG LEG -1DAE;AL # MODIFIER LETTER SMALL N WITH LEFT HOOK -1DAF;AL # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK -1DB0;AL # MODIFIER LETTER SMALL CAPITAL N -1DB1;AL # MODIFIER LETTER SMALL BARRED O -1DB2;AL # MODIFIER LETTER SMALL PHI -1DB3;AL # MODIFIER LETTER SMALL S WITH HOOK -1DB4;AL # MODIFIER LETTER SMALL ESH -1DB5;AL # MODIFIER LETTER SMALL T WITH PALATAL HOOK -1DB6;AL # MODIFIER LETTER SMALL U BAR -1DB7;AL # MODIFIER LETTER SMALL UPSILON -1DB8;AL # MODIFIER LETTER SMALL CAPITAL U -1DB9;AL # MODIFIER LETTER SMALL V WITH HOOK -1DBA;AL # MODIFIER LETTER SMALL TURNED V -1DBB;AL # MODIFIER LETTER SMALL Z -1DBC;AL # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK -1DBD;AL # MODIFIER LETTER SMALL Z WITH CURL -1DBE;AL # MODIFIER LETTER SMALL EZH -1DBF;AL # MODIFIER LETTER SMALL THETA -1DC0;CM # COMBINING DOTTED GRAVE ACCENT -1DC1;CM # COMBINING DOTTED ACUTE ACCENT -1DC2;CM # COMBINING SNAKE BELOW -1DC3;CM # COMBINING SUSPENSION MARK -1DC4;CM # COMBINING MACRON-ACUTE -1DC5;CM # COMBINING GRAVE-MACRON -1DC6;CM # COMBINING MACRON-GRAVE -1DC7;CM # COMBINING ACUTE-MACRON -1DC8;CM # COMBINING GRAVE-ACUTE-GRAVE -1DC9;CM # COMBINING ACUTE-GRAVE-ACUTE -1DCA;CM # COMBINING LATIN SMALL LETTER R BELOW -1DFE;CM # COMBINING LEFT ARROWHEAD ABOVE -1DFF;CM # COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW -1E00;AL # LATIN CAPITAL LETTER A WITH RING BELOW -1E01;AL # LATIN SMALL LETTER A WITH RING BELOW -1E02;AL # LATIN CAPITAL LETTER B WITH DOT ABOVE -1E03;AL # LATIN SMALL LETTER B WITH DOT ABOVE -1E04;AL # LATIN CAPITAL LETTER B WITH DOT BELOW -1E05;AL # LATIN SMALL LETTER B WITH DOT BELOW -1E06;AL # LATIN CAPITAL LETTER B WITH LINE BELOW -1E07;AL # LATIN SMALL LETTER B WITH LINE BELOW -1E08;AL # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE -1E09;AL # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE -1E0A;AL # LATIN CAPITAL LETTER D WITH DOT ABOVE -1E0B;AL # LATIN SMALL LETTER D WITH DOT ABOVE -1E0C;AL # LATIN CAPITAL LETTER D WITH DOT BELOW -1E0D;AL # LATIN SMALL LETTER D WITH DOT BELOW -1E0E;AL # LATIN CAPITAL LETTER D WITH LINE BELOW -1E0F;AL # LATIN SMALL LETTER D WITH LINE BELOW -1E10;AL # LATIN CAPITAL LETTER D WITH CEDILLA -1E11;AL # LATIN SMALL LETTER D WITH CEDILLA -1E12;AL # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW -1E13;AL # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW -1E14;AL # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE -1E15;AL # LATIN SMALL LETTER E WITH MACRON AND GRAVE -1E16;AL # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE -1E17;AL # LATIN SMALL LETTER E WITH MACRON AND ACUTE -1E18;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW -1E19;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW -1E1A;AL # LATIN CAPITAL LETTER E WITH TILDE BELOW -1E1B;AL # LATIN SMALL LETTER E WITH TILDE BELOW -1E1C;AL # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE -1E1D;AL # LATIN SMALL LETTER E WITH CEDILLA AND BREVE -1E1E;AL # LATIN CAPITAL LETTER F WITH DOT ABOVE -1E1F;AL # LATIN SMALL LETTER F WITH DOT ABOVE -1E20;AL # LATIN CAPITAL LETTER G WITH MACRON -1E21;AL # LATIN SMALL LETTER G WITH MACRON -1E22;AL # LATIN CAPITAL LETTER H WITH DOT ABOVE -1E23;AL # LATIN SMALL LETTER H WITH DOT ABOVE -1E24;AL # LATIN CAPITAL LETTER H WITH DOT BELOW -1E25;AL # LATIN SMALL LETTER H WITH DOT BELOW -1E26;AL # LATIN CAPITAL LETTER H WITH DIAERESIS -1E27;AL # LATIN SMALL LETTER H WITH DIAERESIS -1E28;AL # LATIN CAPITAL LETTER H WITH CEDILLA -1E29;AL # LATIN SMALL LETTER H WITH CEDILLA -1E2A;AL # LATIN CAPITAL LETTER H WITH BREVE BELOW -1E2B;AL # LATIN SMALL LETTER H WITH BREVE BELOW -1E2C;AL # LATIN CAPITAL LETTER I WITH TILDE BELOW -1E2D;AL # LATIN SMALL LETTER I WITH TILDE BELOW -1E2E;AL # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE -1E2F;AL # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE -1E30;AL # LATIN CAPITAL LETTER K WITH ACUTE -1E31;AL # LATIN SMALL LETTER K WITH ACUTE -1E32;AL # LATIN CAPITAL LETTER K WITH DOT BELOW -1E33;AL # LATIN SMALL LETTER K WITH DOT BELOW -1E34;AL # LATIN CAPITAL LETTER K WITH LINE BELOW -1E35;AL # LATIN SMALL LETTER K WITH LINE BELOW -1E36;AL # LATIN CAPITAL LETTER L WITH DOT BELOW -1E37;AL # LATIN SMALL LETTER L WITH DOT BELOW -1E38;AL # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON -1E39;AL # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON -1E3A;AL # LATIN CAPITAL LETTER L WITH LINE BELOW -1E3B;AL # LATIN SMALL LETTER L WITH LINE BELOW -1E3C;AL # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW -1E3D;AL # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW -1E3E;AL # LATIN CAPITAL LETTER M WITH ACUTE -1E3F;AL # LATIN SMALL LETTER M WITH ACUTE -1E40;AL # LATIN CAPITAL LETTER M WITH DOT ABOVE -1E41;AL # LATIN SMALL LETTER M WITH DOT ABOVE -1E42;AL # LATIN CAPITAL LETTER M WITH DOT BELOW -1E43;AL # LATIN SMALL LETTER M WITH DOT BELOW -1E44;AL # LATIN CAPITAL LETTER N WITH DOT ABOVE -1E45;AL # LATIN SMALL LETTER N WITH DOT ABOVE -1E46;AL # LATIN CAPITAL LETTER N WITH DOT BELOW -1E47;AL # LATIN SMALL LETTER N WITH DOT BELOW -1E48;AL # LATIN CAPITAL LETTER N WITH LINE BELOW -1E49;AL # LATIN SMALL LETTER N WITH LINE BELOW -1E4A;AL # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW -1E4B;AL # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW -1E4C;AL # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -1E4D;AL # LATIN SMALL LETTER O WITH TILDE AND ACUTE -1E4E;AL # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -1E4F;AL # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS -1E50;AL # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE -1E51;AL # LATIN SMALL LETTER O WITH MACRON AND GRAVE -1E52;AL # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE -1E53;AL # LATIN SMALL LETTER O WITH MACRON AND ACUTE -1E54;AL # LATIN CAPITAL LETTER P WITH ACUTE -1E55;AL # LATIN SMALL LETTER P WITH ACUTE -1E56;AL # LATIN CAPITAL LETTER P WITH DOT ABOVE -1E57;AL # LATIN SMALL LETTER P WITH DOT ABOVE -1E58;AL # LATIN CAPITAL LETTER R WITH DOT ABOVE -1E59;AL # LATIN SMALL LETTER R WITH DOT ABOVE -1E5A;AL # LATIN CAPITAL LETTER R WITH DOT BELOW -1E5B;AL # LATIN SMALL LETTER R WITH DOT BELOW -1E5C;AL # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON -1E5D;AL # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON -1E5E;AL # LATIN CAPITAL LETTER R WITH LINE BELOW -1E5F;AL # LATIN SMALL LETTER R WITH LINE BELOW -1E60;AL # LATIN CAPITAL LETTER S WITH DOT ABOVE -1E61;AL # LATIN SMALL LETTER S WITH DOT ABOVE -1E62;AL # LATIN CAPITAL LETTER S WITH DOT BELOW -1E63;AL # LATIN SMALL LETTER S WITH DOT BELOW -1E64;AL # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE -1E65;AL # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE -1E66;AL # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE -1E67;AL # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE -1E68;AL # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE -1E69;AL # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE -1E6A;AL # LATIN CAPITAL LETTER T WITH DOT ABOVE -1E6B;AL # LATIN SMALL LETTER T WITH DOT ABOVE -1E6C;AL # LATIN CAPITAL LETTER T WITH DOT BELOW -1E6D;AL # LATIN SMALL LETTER T WITH DOT BELOW -1E6E;AL # LATIN CAPITAL LETTER T WITH LINE BELOW -1E6F;AL # LATIN SMALL LETTER T WITH LINE BELOW -1E70;AL # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW -1E71;AL # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW -1E72;AL # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW -1E73;AL # LATIN SMALL LETTER U WITH DIAERESIS BELOW -1E74;AL # LATIN CAPITAL LETTER U WITH TILDE BELOW -1E75;AL # LATIN SMALL LETTER U WITH TILDE BELOW -1E76;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW -1E77;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW -1E78;AL # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE -1E79;AL # LATIN SMALL LETTER U WITH TILDE AND ACUTE -1E7A;AL # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS -1E7B;AL # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS -1E7C;AL # LATIN CAPITAL LETTER V WITH TILDE -1E7D;AL # LATIN SMALL LETTER V WITH TILDE -1E7E;AL # LATIN CAPITAL LETTER V WITH DOT BELOW -1E7F;AL # LATIN SMALL LETTER V WITH DOT BELOW -1E80;AL # LATIN CAPITAL LETTER W WITH GRAVE -1E81;AL # LATIN SMALL LETTER W WITH GRAVE -1E82;AL # LATIN CAPITAL LETTER W WITH ACUTE -1E83;AL # LATIN SMALL LETTER W WITH ACUTE -1E84;AL # LATIN CAPITAL LETTER W WITH DIAERESIS -1E85;AL # LATIN SMALL LETTER W WITH DIAERESIS -1E86;AL # LATIN CAPITAL LETTER W WITH DOT ABOVE -1E87;AL # LATIN SMALL LETTER W WITH DOT ABOVE -1E88;AL # LATIN CAPITAL LETTER W WITH DOT BELOW -1E89;AL # LATIN SMALL LETTER W WITH DOT BELOW -1E8A;AL # LATIN CAPITAL LETTER X WITH DOT ABOVE -1E8B;AL # LATIN SMALL LETTER X WITH DOT ABOVE -1E8C;AL # LATIN CAPITAL LETTER X WITH DIAERESIS -1E8D;AL # LATIN SMALL LETTER X WITH DIAERESIS -1E8E;AL # LATIN CAPITAL LETTER Y WITH DOT ABOVE -1E8F;AL # LATIN SMALL LETTER Y WITH DOT ABOVE -1E90;AL # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX -1E91;AL # LATIN SMALL LETTER Z WITH CIRCUMFLEX -1E92;AL # LATIN CAPITAL LETTER Z WITH DOT BELOW -1E93;AL # LATIN SMALL LETTER Z WITH DOT BELOW -1E94;AL # LATIN CAPITAL LETTER Z WITH LINE BELOW -1E95;AL # LATIN SMALL LETTER Z WITH LINE BELOW -1E96;AL # LATIN SMALL LETTER H WITH LINE BELOW -1E97;AL # LATIN SMALL LETTER T WITH DIAERESIS -1E98;AL # LATIN SMALL LETTER W WITH RING ABOVE -1E99;AL # LATIN SMALL LETTER Y WITH RING ABOVE -1E9A;AL # LATIN SMALL LETTER A WITH RIGHT HALF RING -1E9B;AL # LATIN SMALL LETTER LONG S WITH DOT ABOVE -1EA0;AL # LATIN CAPITAL LETTER A WITH DOT BELOW -1EA1;AL # LATIN SMALL LETTER A WITH DOT BELOW -1EA2;AL # LATIN CAPITAL LETTER A WITH HOOK ABOVE -1EA3;AL # LATIN SMALL LETTER A WITH HOOK ABOVE -1EA4;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA5;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA6;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA7;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA8;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EA9;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EAA;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EAB;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -1EAC;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAD;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAE;AL # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EAF;AL # LATIN SMALL LETTER A WITH BREVE AND ACUTE -1EB0;AL # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EB1;AL # LATIN SMALL LETTER A WITH BREVE AND GRAVE -1EB2;AL # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -1EB3;AL # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -1EB4;AL # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB5;AL # LATIN SMALL LETTER A WITH BREVE AND TILDE -1EB6;AL # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -1EB7;AL # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -1EB8;AL # LATIN CAPITAL LETTER E WITH DOT BELOW -1EB9;AL # LATIN SMALL LETTER E WITH DOT BELOW -1EBA;AL # LATIN CAPITAL LETTER E WITH HOOK ABOVE -1EBB;AL # LATIN SMALL LETTER E WITH HOOK ABOVE -1EBC;AL # LATIN CAPITAL LETTER E WITH TILDE -1EBD;AL # LATIN SMALL LETTER E WITH TILDE -1EBE;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBF;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC0;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC1;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC2;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC3;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC4;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC5;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC6;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC7;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC8;AL # LATIN CAPITAL LETTER I WITH HOOK ABOVE -1EC9;AL # LATIN SMALL LETTER I WITH HOOK ABOVE -1ECA;AL # LATIN CAPITAL LETTER I WITH DOT BELOW -1ECB;AL # LATIN SMALL LETTER I WITH DOT BELOW -1ECC;AL # LATIN CAPITAL LETTER O WITH DOT BELOW -1ECD;AL # LATIN SMALL LETTER O WITH DOT BELOW -1ECE;AL # LATIN CAPITAL LETTER O WITH HOOK ABOVE -1ECF;AL # LATIN SMALL LETTER O WITH HOOK ABOVE -1ED0;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED1;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED2;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED3;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED5;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED6;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED7;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED8;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED9;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1EDA;AL # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -1EDB;AL # LATIN SMALL LETTER O WITH HORN AND ACUTE -1EDC;AL # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -1EDD;AL # LATIN SMALL LETTER O WITH HORN AND GRAVE -1EDE;AL # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -1EDF;AL # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE -1EE0;AL # LATIN CAPITAL LETTER O WITH HORN AND TILDE -1EE1;AL # LATIN SMALL LETTER O WITH HORN AND TILDE -1EE2;AL # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -1EE3;AL # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -1EE4;AL # LATIN CAPITAL LETTER U WITH DOT BELOW -1EE5;AL # LATIN SMALL LETTER U WITH DOT BELOW -1EE6;AL # LATIN CAPITAL LETTER U WITH HOOK ABOVE -1EE7;AL # LATIN SMALL LETTER U WITH HOOK ABOVE -1EE8;AL # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -1EE9;AL # LATIN SMALL LETTER U WITH HORN AND ACUTE -1EEA;AL # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -1EEB;AL # LATIN SMALL LETTER U WITH HORN AND GRAVE -1EEC;AL # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -1EED;AL # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE -1EEE;AL # LATIN CAPITAL LETTER U WITH HORN AND TILDE -1EEF;AL # LATIN SMALL LETTER U WITH HORN AND TILDE -1EF0;AL # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -1EF1;AL # LATIN SMALL LETTER U WITH HORN AND DOT BELOW -1EF2;AL # LATIN CAPITAL LETTER Y WITH GRAVE -1EF3;AL # LATIN SMALL LETTER Y WITH GRAVE -1EF4;AL # LATIN CAPITAL LETTER Y WITH DOT BELOW -1EF5;AL # LATIN SMALL LETTER Y WITH DOT BELOW -1EF6;AL # LATIN CAPITAL LETTER Y WITH HOOK ABOVE -1EF7;AL # LATIN SMALL LETTER Y WITH HOOK ABOVE -1EF8;AL # LATIN CAPITAL LETTER Y WITH TILDE -1EF9;AL # LATIN SMALL LETTER Y WITH TILDE -1F00;AL # GREEK SMALL LETTER ALPHA WITH PSILI -1F01;AL # GREEK SMALL LETTER ALPHA WITH DASIA -1F02;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA -1F03;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA -1F04;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA -1F05;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA -1F06;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F07;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F08;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI -1F09;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA -1F0A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA -1F0B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA -1F0C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA -1F0D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA -1F0E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F0F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F10;AL # GREEK SMALL LETTER EPSILON WITH PSILI -1F11;AL # GREEK SMALL LETTER EPSILON WITH DASIA -1F12;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA -1F13;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA -1F14;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA -1F15;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA -1F18;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI -1F19;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA -1F1A;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA -1F1B;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA -1F1C;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA -1F1D;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F20;AL # GREEK SMALL LETTER ETA WITH PSILI -1F21;AL # GREEK SMALL LETTER ETA WITH DASIA -1F22;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA -1F23;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA -1F24;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA -1F25;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA -1F26;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI -1F27;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI -1F28;AL # GREEK CAPITAL LETTER ETA WITH PSILI -1F29;AL # GREEK CAPITAL LETTER ETA WITH DASIA -1F2A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA -1F2B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA -1F2C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA -1F2D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA -1F2E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI -1F2F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -1F30;AL # GREEK SMALL LETTER IOTA WITH PSILI -1F31;AL # GREEK SMALL LETTER IOTA WITH DASIA -1F32;AL # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA -1F33;AL # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA -1F34;AL # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA -1F35;AL # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA -1F36;AL # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI -1F37;AL # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI -1F38;AL # GREEK CAPITAL LETTER IOTA WITH PSILI -1F39;AL # GREEK CAPITAL LETTER IOTA WITH DASIA -1F3A;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA -1F3B;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA -1F3C;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA -1F3D;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA -1F3E;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI -1F3F;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI -1F40;AL # GREEK SMALL LETTER OMICRON WITH PSILI -1F41;AL # GREEK SMALL LETTER OMICRON WITH DASIA -1F42;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA -1F43;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA -1F44;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA -1F45;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -1F48;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI -1F49;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA -1F4A;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA -1F4B;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA -1F4C;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA -1F4D;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50;AL # GREEK SMALL LETTER UPSILON WITH PSILI -1F51;AL # GREEK SMALL LETTER UPSILON WITH DASIA -1F52;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -1F53;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA -1F54;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -1F55;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA -1F56;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -1F57;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F59;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F60;AL # GREEK SMALL LETTER OMEGA WITH PSILI -1F61;AL # GREEK SMALL LETTER OMEGA WITH DASIA -1F62;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA -1F63;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA -1F64;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA -1F65;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA -1F66;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F67;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F68;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI -1F69;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA -1F6A;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA -1F6B;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA -1F6C;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA -1F6D;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA -1F6E;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F6F;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F70;AL # GREEK SMALL LETTER ALPHA WITH VARIA -1F71;AL # GREEK SMALL LETTER ALPHA WITH OXIA -1F72;AL # GREEK SMALL LETTER EPSILON WITH VARIA -1F73;AL # GREEK SMALL LETTER EPSILON WITH OXIA -1F74;AL # GREEK SMALL LETTER ETA WITH VARIA -1F75;AL # GREEK SMALL LETTER ETA WITH OXIA -1F76;AL # GREEK SMALL LETTER IOTA WITH VARIA -1F77;AL # GREEK SMALL LETTER IOTA WITH OXIA -1F78;AL # GREEK SMALL LETTER OMICRON WITH VARIA -1F79;AL # GREEK SMALL LETTER OMICRON WITH OXIA -1F7A;AL # GREEK SMALL LETTER UPSILON WITH VARIA -1F7B;AL # GREEK SMALL LETTER UPSILON WITH OXIA -1F7C;AL # GREEK SMALL LETTER OMEGA WITH VARIA -1F7D;AL # GREEK SMALL LETTER OMEGA WITH OXIA -1F80;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -1F81;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -1F82;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F83;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F84;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F85;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F86;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F87;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F88;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F89;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F8A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F90;AL # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -1F91;AL # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -1F92;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F93;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F94;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F95;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F96;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F97;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F98;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F99;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F9A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FA0;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -1FA1;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -1FA2;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1FA3;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1FA4;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1FA5;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1FA6;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1FA7;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1FA8;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA9;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FAA;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAB;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAC;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAD;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAE;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAF;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FB0;AL # GREEK SMALL LETTER ALPHA WITH VRACHY -1FB1;AL # GREEK SMALL LETTER ALPHA WITH MACRON -1FB2;AL # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -1FB3;AL # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -1FB4;AL # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI -1FB7;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -1FB8;AL # GREEK CAPITAL LETTER ALPHA WITH VRACHY -1FB9;AL # GREEK CAPITAL LETTER ALPHA WITH MACRON -1FBA;AL # GREEK CAPITAL LETTER ALPHA WITH VARIA -1FBB;AL # GREEK CAPITAL LETTER ALPHA WITH OXIA -1FBC;AL # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBD;AL # GREEK KORONIS -1FBE;AL # GREEK PROSGEGRAMMENI -1FBF;AL # GREEK PSILI -1FC0;AL # GREEK PERISPOMENI -1FC1;AL # GREEK DIALYTIKA AND PERISPOMENI -1FC2;AL # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -1FC3;AL # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -1FC4;AL # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI -1FC7;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -1FC8;AL # GREEK CAPITAL LETTER EPSILON WITH VARIA -1FC9;AL # GREEK CAPITAL LETTER EPSILON WITH OXIA -1FCA;AL # GREEK CAPITAL LETTER ETA WITH VARIA -1FCB;AL # GREEK CAPITAL LETTER ETA WITH OXIA -1FCC;AL # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FCD;AL # GREEK PSILI AND VARIA -1FCE;AL # GREEK PSILI AND OXIA -1FCF;AL # GREEK PSILI AND PERISPOMENI -1FD0;AL # GREEK SMALL LETTER IOTA WITH VRACHY -1FD1;AL # GREEK SMALL LETTER IOTA WITH MACRON -1FD2;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -1FD3;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6;AL # GREEK SMALL LETTER IOTA WITH PERISPOMENI -1FD7;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -1FD8;AL # GREEK CAPITAL LETTER IOTA WITH VRACHY -1FD9;AL # GREEK CAPITAL LETTER IOTA WITH MACRON -1FDA;AL # GREEK CAPITAL LETTER IOTA WITH VARIA -1FDB;AL # GREEK CAPITAL LETTER IOTA WITH OXIA -1FDD;AL # GREEK DASIA AND VARIA -1FDE;AL # GREEK DASIA AND OXIA -1FDF;AL # GREEK DASIA AND PERISPOMENI -1FE0;AL # GREEK SMALL LETTER UPSILON WITH VRACHY -1FE1;AL # GREEK SMALL LETTER UPSILON WITH MACRON -1FE2;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -1FE3;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -1FE4;AL # GREEK SMALL LETTER RHO WITH PSILI -1FE5;AL # GREEK SMALL LETTER RHO WITH DASIA -1FE6;AL # GREEK SMALL LETTER UPSILON WITH PERISPOMENI -1FE7;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -1FE8;AL # GREEK CAPITAL LETTER UPSILON WITH VRACHY -1FE9;AL # GREEK CAPITAL LETTER UPSILON WITH MACRON -1FEA;AL # GREEK CAPITAL LETTER UPSILON WITH VARIA -1FEB;AL # GREEK CAPITAL LETTER UPSILON WITH OXIA -1FEC;AL # GREEK CAPITAL LETTER RHO WITH DASIA -1FED;AL # GREEK DIALYTIKA AND VARIA -1FEE;AL # GREEK DIALYTIKA AND OXIA -1FEF;AL # GREEK VARIA -1FF2;AL # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -1FF3;AL # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -1FF4;AL # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI -1FF7;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -1FF8;AL # GREEK CAPITAL LETTER OMICRON WITH VARIA -1FF9;AL # GREEK CAPITAL LETTER OMICRON WITH OXIA -1FFA;AL # GREEK CAPITAL LETTER OMEGA WITH VARIA -1FFB;AL # GREEK CAPITAL LETTER OMEGA WITH OXIA -1FFC;AL # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -1FFD;AL # GREEK OXIA -1FFE;AL # GREEK DASIA -2000;BA # EN QUAD -2001;BA # EM QUAD -2002;BA # EN SPACE -2003;BA # EM SPACE -2004;BA # THREE-PER-EM SPACE -2005;BA # FOUR-PER-EM SPACE -2006;BA # SIX-PER-EM SPACE -2007;GL # FIGURE SPACE -2008;BA # PUNCTUATION SPACE -2009;BA # THIN SPACE -200A;BA # HAIR SPACE -200B;ZW # ZERO WIDTH SPACE -200C;CM # ZERO WIDTH NON-JOINER -200D;CM # ZERO WIDTH JOINER -200E;CM # LEFT-TO-RIGHT MARK -200F;CM # RIGHT-TO-LEFT MARK -2010;BA # HYPHEN -2011;GL # NON-BREAKING HYPHEN -2012;BA # FIGURE DASH -2013;BA # EN DASH -2014;B2 # EM DASH -2015;AI # HORIZONTAL BAR -2016;AI # DOUBLE VERTICAL LINE -2017;AL # DOUBLE LOW LINE -2018;QU # LEFT SINGLE QUOTATION MARK -2019;QU # RIGHT SINGLE QUOTATION MARK -201A;OP # SINGLE LOW-9 QUOTATION MARK -201B;QU # SINGLE HIGH-REVERSED-9 QUOTATION MARK -201C;QU # LEFT DOUBLE QUOTATION MARK -201D;QU # RIGHT DOUBLE QUOTATION MARK -201E;OP # DOUBLE LOW-9 QUOTATION MARK -201F;QU # DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020;AI # DAGGER -2021;AI # DOUBLE DAGGER -2022;AL # BULLET -2023;AL # TRIANGULAR BULLET -2024;IN # ONE DOT LEADER -2025;IN # TWO DOT LEADER -2026;IN # HORIZONTAL ELLIPSIS -2027;BA # HYPHENATION POINT -2028;BK # LINE SEPARATOR -2029;BK # PARAGRAPH SEPARATOR -202A;CM # LEFT-TO-RIGHT EMBEDDING -202B;CM # RIGHT-TO-LEFT EMBEDDING -202C;CM # POP DIRECTIONAL FORMATTING -202D;CM # LEFT-TO-RIGHT OVERRIDE -202E;CM # RIGHT-TO-LEFT OVERRIDE -202F;GL # NARROW NO-BREAK SPACE -2030;PO # PER MILLE SIGN -2031;PO # PER TEN THOUSAND SIGN -2032;PO # PRIME -2033;PO # DOUBLE PRIME -2034;PO # TRIPLE PRIME -2035;PO # REVERSED PRIME -2036;PO # REVERSED DOUBLE PRIME -2037;PO # REVERSED TRIPLE PRIME -2038;AL # CARET -2039;QU # SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A;QU # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B;AI # REFERENCE MARK -203C;NS # DOUBLE EXCLAMATION MARK -203D;NS # INTERROBANG -203E;AL # OVERLINE -203F;AL # UNDERTIE -2040;AL # CHARACTER TIE -2041;AL # CARET INSERTION POINT -2042;AL # ASTERISM -2043;AL # HYPHEN BULLET -2044;IS # FRACTION SLASH -2045;OP # LEFT SQUARE BRACKET WITH QUILL -2046;CL # RIGHT SQUARE BRACKET WITH QUILL -2047;NS # DOUBLE QUESTION MARK -2048;NS # QUESTION EXCLAMATION MARK -2049;NS # EXCLAMATION QUESTION MARK -204A;AL # TIRONIAN SIGN ET -204B;AL # REVERSED PILCROW SIGN -204C;AL # BLACK LEFTWARDS BULLET -204D;AL # BLACK RIGHTWARDS BULLET -204E;AL # LOW ASTERISK -204F;AL # REVERSED SEMICOLON -2050;AL # CLOSE UP -2051;AL # TWO ASTERISKS ALIGNED VERTICALLY -2052;AL # COMMERCIAL MINUS SIGN -2053;AL # SWUNG DASH -2054;AL # INVERTED UNDERTIE -2055;AL # FLOWER PUNCTUATION MARK -2056;BA # THREE DOT PUNCTUATION -2057;AL # QUADRUPLE PRIME -2058;BA # FOUR DOT PUNCTUATION -2059;BA # FIVE DOT PUNCTUATION -205A;BA # TWO DOT PUNCTUATION -205B;BA # FOUR DOT MARK -205C;AL # DOTTED CROSS -205D;BA # TRICOLON -205E;BA # VERTICAL FOUR DOTS -205F;BA # MEDIUM MATHEMATICAL SPACE -2060;WJ # WORD JOINER -2061;AL # FUNCTION APPLICATION -2062;AL # INVISIBLE TIMES -2063;AL # INVISIBLE SEPARATOR -206A;CM # INHIBIT SYMMETRIC SWAPPING -206B;CM # ACTIVATE SYMMETRIC SWAPPING -206C;CM # INHIBIT ARABIC FORM SHAPING -206D;CM # ACTIVATE ARABIC FORM SHAPING -206E;CM # NATIONAL DIGIT SHAPES -206F;CM # NOMINAL DIGIT SHAPES -2070;AL # SUPERSCRIPT ZERO -2071;AL # SUPERSCRIPT LATIN SMALL LETTER I -2074;AI # SUPERSCRIPT FOUR -2075;AL # SUPERSCRIPT FIVE -2076;AL # SUPERSCRIPT SIX -2077;AL # SUPERSCRIPT SEVEN -2078;AL # SUPERSCRIPT EIGHT -2079;AL # SUPERSCRIPT NINE -207A;AL # SUPERSCRIPT PLUS SIGN -207B;AL # SUPERSCRIPT MINUS -207C;AL # SUPERSCRIPT EQUALS SIGN -207D;OP # SUPERSCRIPT LEFT PARENTHESIS -207E;CL # SUPERSCRIPT RIGHT PARENTHESIS -207F;AI # SUPERSCRIPT LATIN SMALL LETTER N -2080;AL # SUBSCRIPT ZERO -2081;AI # SUBSCRIPT ONE -2082;AI # SUBSCRIPT TWO -2083;AI # SUBSCRIPT THREE -2084;AI # SUBSCRIPT FOUR -2085;AL # SUBSCRIPT FIVE -2086;AL # SUBSCRIPT SIX -2087;AL # SUBSCRIPT SEVEN -2088;AL # SUBSCRIPT EIGHT -2089;AL # SUBSCRIPT NINE -208A;AL # SUBSCRIPT PLUS SIGN -208B;AL # SUBSCRIPT MINUS -208C;AL # SUBSCRIPT EQUALS SIGN -208D;OP # SUBSCRIPT LEFT PARENTHESIS -208E;CL # SUBSCRIPT RIGHT PARENTHESIS -2090;AL # LATIN SUBSCRIPT SMALL LETTER A -2091;AL # LATIN SUBSCRIPT SMALL LETTER E -2092;AL # LATIN SUBSCRIPT SMALL LETTER O -2093;AL # LATIN SUBSCRIPT SMALL LETTER X -2094;AL # LATIN SUBSCRIPT SMALL LETTER SCHWA -20A0;PR # EURO-CURRENCY SIGN -20A1;PR # COLON SIGN -20A2;PR # CRUZEIRO SIGN -20A3;PR # FRENCH FRANC SIGN -20A4;PR # LIRA SIGN -20A5;PR # MILL SIGN -20A6;PR # NAIRA SIGN -20A7;PO # PESETA SIGN -20A8;PR # RUPEE SIGN -20A9;PR # WON SIGN -20AA;PR # NEW SHEQEL SIGN -20AB;PR # DONG SIGN -20AC;PR # EURO SIGN -20AD;PR # KIP SIGN -20AE;PR # TUGRIK SIGN -20AF;PR # DRACHMA SIGN -20B0;PR # GERMAN PENNY SIGN -20B1;PR # PESO SIGN -20B2;PR # GUARANI SIGN -20B3;PR # AUSTRAL SIGN -20B4;PR # HRYVNIA SIGN -20B5;PR # CEDI SIGN -20D0;CM # COMBINING LEFT HARPOON ABOVE -20D1;CM # COMBINING RIGHT HARPOON ABOVE -20D2;CM # COMBINING LONG VERTICAL LINE OVERLAY -20D3;CM # COMBINING SHORT VERTICAL LINE OVERLAY -20D4;CM # COMBINING ANTICLOCKWISE ARROW ABOVE -20D5;CM # COMBINING CLOCKWISE ARROW ABOVE -20D6;CM # COMBINING LEFT ARROW ABOVE -20D7;CM # COMBINING RIGHT ARROW ABOVE -20D8;CM # COMBINING RING OVERLAY -20D9;CM # COMBINING CLOCKWISE RING OVERLAY -20DA;CM # COMBINING ANTICLOCKWISE RING OVERLAY -20DB;CM # COMBINING THREE DOTS ABOVE -20DC;CM # COMBINING FOUR DOTS ABOVE -20DD;CM # COMBINING ENCLOSING CIRCLE -20DE;CM # COMBINING ENCLOSING SQUARE -20DF;CM # COMBINING ENCLOSING DIAMOND -20E0;CM # COMBINING ENCLOSING CIRCLE BACKSLASH -20E1;CM # COMBINING LEFT RIGHT ARROW ABOVE -20E2;CM # COMBINING ENCLOSING SCREEN -20E3;CM # COMBINING ENCLOSING KEYCAP -20E4;CM # COMBINING ENCLOSING UPWARD POINTING TRIANGLE -20E5;CM # COMBINING REVERSE SOLIDUS OVERLAY -20E6;CM # COMBINING DOUBLE VERTICAL STROKE OVERLAY -20E7;CM # COMBINING ANNUITY SYMBOL -20E8;CM # COMBINING TRIPLE UNDERDOT -20E9;CM # COMBINING WIDE BRIDGE ABOVE -20EA;CM # COMBINING LEFTWARDS ARROW OVERLAY -20EB;CM # COMBINING LONG DOUBLE SOLIDUS OVERLAY -20EC;CM # COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS -20ED;CM # COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS -20EE;CM # COMBINING LEFT ARROW BELOW -20EF;CM # COMBINING RIGHT ARROW BELOW -2100;AL # ACCOUNT OF -2101;AL # ADDRESSED TO THE SUBJECT -2102;AL # DOUBLE-STRUCK CAPITAL C -2103;PO # DEGREE CELSIUS -2104;AL # CENTRE LINE SYMBOL -2105;AI # CARE OF -2106;AL # CADA UNA -2107;AL # EULER CONSTANT -2108;AL # SCRUPLE -2109;PO # DEGREE FAHRENHEIT -210A;AL # SCRIPT SMALL G -210B;AL # SCRIPT CAPITAL H -210C;AL # BLACK-LETTER CAPITAL H -210D;AL # DOUBLE-STRUCK CAPITAL H -210E;AL # PLANCK CONSTANT -210F;AL # PLANCK CONSTANT OVER TWO PI -2110;AL # SCRIPT CAPITAL I -2111;AL # BLACK-LETTER CAPITAL I -2112;AL # SCRIPT CAPITAL L -2113;AI # SCRIPT SMALL L -2114;AL # L B BAR SYMBOL -2115;AL # DOUBLE-STRUCK CAPITAL N -2116;PR # NUMERO SIGN -2117;AL # SOUND RECORDING COPYRIGHT -2118;AL # SCRIPT CAPITAL P -2119;AL # DOUBLE-STRUCK CAPITAL P -211A;AL # DOUBLE-STRUCK CAPITAL Q -211B;AL # SCRIPT CAPITAL R -211C;AL # BLACK-LETTER CAPITAL R -211D;AL # DOUBLE-STRUCK CAPITAL R -211E;AL # PRESCRIPTION TAKE -211F;AL # RESPONSE -2120;AL # SERVICE MARK -2121;AI # TELEPHONE SIGN -2122;AI # TRADE MARK SIGN -2123;AL # VERSICLE -2124;AL # DOUBLE-STRUCK CAPITAL Z -2125;AL # OUNCE SIGN -2126;AL # OHM SIGN -2127;AL # INVERTED OHM SIGN -2128;AL # BLACK-LETTER CAPITAL Z -2129;AL # TURNED GREEK SMALL LETTER IOTA -212A;AL # KELVIN SIGN -212B;AI # ANGSTROM SIGN -212C;AL # SCRIPT CAPITAL B -212D;AL # BLACK-LETTER CAPITAL C -212E;AL # ESTIMATED SYMBOL -212F;AL # SCRIPT SMALL E -2130;AL # SCRIPT CAPITAL E -2131;AL # SCRIPT CAPITAL F -2132;AL # TURNED CAPITAL F -2133;AL # SCRIPT CAPITAL M -2134;AL # SCRIPT SMALL O -2135;AL # ALEF SYMBOL -2136;AL # BET SYMBOL -2137;AL # GIMEL SYMBOL -2138;AL # DALET SYMBOL -2139;AL # INFORMATION SOURCE -213A;AL # ROTATED CAPITAL Q -213B;AL # FACSIMILE SIGN -213C;AL # DOUBLE-STRUCK SMALL PI -213D;AL # DOUBLE-STRUCK SMALL GAMMA -213E;AL # DOUBLE-STRUCK CAPITAL GAMMA -213F;AL # DOUBLE-STRUCK CAPITAL PI -2140;AL # DOUBLE-STRUCK N-ARY SUMMATION -2141;AL # TURNED SANS-SERIF CAPITAL G -2142;AL # TURNED SANS-SERIF CAPITAL L -2143;AL # REVERSED SANS-SERIF CAPITAL L -2144;AL # TURNED SANS-SERIF CAPITAL Y -2145;AL # DOUBLE-STRUCK ITALIC CAPITAL D -2146;AL # DOUBLE-STRUCK ITALIC SMALL D -2147;AL # DOUBLE-STRUCK ITALIC SMALL E -2148;AL # DOUBLE-STRUCK ITALIC SMALL I -2149;AL # DOUBLE-STRUCK ITALIC SMALL J -214A;AL # PROPERTY LINE -214B;AL # TURNED AMPERSAND -214C;AL # PER SIGN -214D;AL # AKTIESELSKAB -214E;AL # TURNED SMALL F -2153;AL # VULGAR FRACTION ONE THIRD -2154;AI # VULGAR FRACTION TWO THIRDS -2155;AI # VULGAR FRACTION ONE FIFTH -2156;AL # VULGAR FRACTION TWO FIFTHS -2157;AL # VULGAR FRACTION THREE FIFTHS -2158;AL # VULGAR FRACTION FOUR FIFTHS -2159;AL # VULGAR FRACTION ONE SIXTH -215A;AL # VULGAR FRACTION FIVE SIXTHS -215B;AI # VULGAR FRACTION ONE EIGHTH -215C;AL # VULGAR FRACTION THREE EIGHTHS -215D;AL # VULGAR FRACTION FIVE EIGHTHS -215E;AI # VULGAR FRACTION SEVEN EIGHTHS -215F;AL # FRACTION NUMERATOR ONE -2160;AI # ROMAN NUMERAL ONE -2161;AI # ROMAN NUMERAL TWO -2162;AI # ROMAN NUMERAL THREE -2163;AI # ROMAN NUMERAL FOUR -2164;AI # ROMAN NUMERAL FIVE -2165;AI # ROMAN NUMERAL SIX -2166;AI # ROMAN NUMERAL SEVEN -2167;AI # ROMAN NUMERAL EIGHT -2168;AI # ROMAN NUMERAL NINE -2169;AI # ROMAN NUMERAL TEN -216A;AI # ROMAN NUMERAL ELEVEN -216B;AI # ROMAN NUMERAL TWELVE -216C;AL # ROMAN NUMERAL FIFTY -216D;AL # ROMAN NUMERAL ONE HUNDRED -216E;AL # ROMAN NUMERAL FIVE HUNDRED -216F;AL # ROMAN NUMERAL ONE THOUSAND -2170;AI # SMALL ROMAN NUMERAL ONE -2171;AI # SMALL ROMAN NUMERAL TWO -2172;AI # SMALL ROMAN NUMERAL THREE -2173;AI # SMALL ROMAN NUMERAL FOUR -2174;AI # SMALL ROMAN NUMERAL FIVE -2175;AI # SMALL ROMAN NUMERAL SIX -2176;AI # SMALL ROMAN NUMERAL SEVEN -2177;AI # SMALL ROMAN NUMERAL EIGHT -2178;AI # SMALL ROMAN NUMERAL NINE -2179;AI # SMALL ROMAN NUMERAL TEN -217A;AL # SMALL ROMAN NUMERAL ELEVEN -217B;AL # SMALL ROMAN NUMERAL TWELVE -217C;AL # SMALL ROMAN NUMERAL FIFTY -217D;AL # SMALL ROMAN NUMERAL ONE HUNDRED -217E;AL # SMALL ROMAN NUMERAL FIVE HUNDRED -217F;AL # SMALL ROMAN NUMERAL ONE THOUSAND -2180;AL # ROMAN NUMERAL ONE THOUSAND C D -2181;AL # ROMAN NUMERAL FIVE THOUSAND -2182;AL # ROMAN NUMERAL TEN THOUSAND -2183;AL # ROMAN NUMERAL REVERSED ONE HUNDRED -2184;AL # LATIN SMALL LETTER REVERSED C -2190;AI # LEFTWARDS ARROW -2191;AI # UPWARDS ARROW -2192;AI # RIGHTWARDS ARROW -2193;AI # DOWNWARDS ARROW -2194;AI # LEFT RIGHT ARROW -2195;AI # UP DOWN ARROW -2196;AI # NORTH WEST ARROW -2197;AI # NORTH EAST ARROW -2198;AI # SOUTH EAST ARROW -2199;AI # SOUTH WEST ARROW -219A;AL # LEFTWARDS ARROW WITH STROKE -219B;AL # RIGHTWARDS ARROW WITH STROKE -219C;AL # LEFTWARDS WAVE ARROW -219D;AL # RIGHTWARDS WAVE ARROW -219E;AL # LEFTWARDS TWO HEADED ARROW -219F;AL # UPWARDS TWO HEADED ARROW -21A0;AL # RIGHTWARDS TWO HEADED ARROW -21A1;AL # DOWNWARDS TWO HEADED ARROW -21A2;AL # LEFTWARDS ARROW WITH TAIL -21A3;AL # RIGHTWARDS ARROW WITH TAIL -21A4;AL # LEFTWARDS ARROW FROM BAR -21A5;AL # UPWARDS ARROW FROM BAR -21A6;AL # RIGHTWARDS ARROW FROM BAR -21A7;AL # DOWNWARDS ARROW FROM BAR -21A8;AL # UP DOWN ARROW WITH BASE -21A9;AL # LEFTWARDS ARROW WITH HOOK -21AA;AL # RIGHTWARDS ARROW WITH HOOK -21AB;AL # LEFTWARDS ARROW WITH LOOP -21AC;AL # RIGHTWARDS ARROW WITH LOOP -21AD;AL # LEFT RIGHT WAVE ARROW -21AE;AL # LEFT RIGHT ARROW WITH STROKE -21AF;AL # DOWNWARDS ZIGZAG ARROW -21B0;AL # UPWARDS ARROW WITH TIP LEFTWARDS -21B1;AL # UPWARDS ARROW WITH TIP RIGHTWARDS -21B2;AL # DOWNWARDS ARROW WITH TIP LEFTWARDS -21B3;AL # DOWNWARDS ARROW WITH TIP RIGHTWARDS -21B4;AL # RIGHTWARDS ARROW WITH CORNER DOWNWARDS -21B5;AL # DOWNWARDS ARROW WITH CORNER LEFTWARDS -21B6;AL # ANTICLOCKWISE TOP SEMICIRCLE ARROW -21B7;AL # CLOCKWISE TOP SEMICIRCLE ARROW -21B8;AL # NORTH WEST ARROW TO LONG BAR -21B9;AL # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR -21BA;AL # ANTICLOCKWISE OPEN CIRCLE ARROW -21BB;AL # CLOCKWISE OPEN CIRCLE ARROW -21BC;AL # LEFTWARDS HARPOON WITH BARB UPWARDS -21BD;AL # LEFTWARDS HARPOON WITH BARB DOWNWARDS -21BE;AL # UPWARDS HARPOON WITH BARB RIGHTWARDS -21BF;AL # UPWARDS HARPOON WITH BARB LEFTWARDS -21C0;AL # RIGHTWARDS HARPOON WITH BARB UPWARDS -21C1;AL # RIGHTWARDS HARPOON WITH BARB DOWNWARDS -21C2;AL # DOWNWARDS HARPOON WITH BARB RIGHTWARDS -21C3;AL # DOWNWARDS HARPOON WITH BARB LEFTWARDS -21C4;AL # RIGHTWARDS ARROW OVER LEFTWARDS ARROW -21C5;AL # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW -21C6;AL # LEFTWARDS ARROW OVER RIGHTWARDS ARROW -21C7;AL # LEFTWARDS PAIRED ARROWS -21C8;AL # UPWARDS PAIRED ARROWS -21C9;AL # RIGHTWARDS PAIRED ARROWS -21CA;AL # DOWNWARDS PAIRED ARROWS -21CB;AL # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON -21CC;AL # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON -21CD;AL # LEFTWARDS DOUBLE ARROW WITH STROKE -21CE;AL # LEFT RIGHT DOUBLE ARROW WITH STROKE -21CF;AL # RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0;AL # LEFTWARDS DOUBLE ARROW -21D1;AL # UPWARDS DOUBLE ARROW -21D2;AI # RIGHTWARDS DOUBLE ARROW -21D3;AL # DOWNWARDS DOUBLE ARROW -21D4;AI # LEFT RIGHT DOUBLE ARROW -21D5;AL # UP DOWN DOUBLE ARROW -21D6;AL # NORTH WEST DOUBLE ARROW -21D7;AL # NORTH EAST DOUBLE ARROW -21D8;AL # SOUTH EAST DOUBLE ARROW -21D9;AL # SOUTH WEST DOUBLE ARROW -21DA;AL # LEFTWARDS TRIPLE ARROW -21DB;AL # RIGHTWARDS TRIPLE ARROW -21DC;AL # LEFTWARDS SQUIGGLE ARROW -21DD;AL # RIGHTWARDS SQUIGGLE ARROW -21DE;AL # UPWARDS ARROW WITH DOUBLE STROKE -21DF;AL # DOWNWARDS ARROW WITH DOUBLE STROKE -21E0;AL # LEFTWARDS DASHED ARROW -21E1;AL # UPWARDS DASHED ARROW -21E2;AL # RIGHTWARDS DASHED ARROW -21E3;AL # DOWNWARDS DASHED ARROW -21E4;AL # LEFTWARDS ARROW TO BAR -21E5;AL # RIGHTWARDS ARROW TO BAR -21E6;AL # LEFTWARDS WHITE ARROW -21E7;AL # UPWARDS WHITE ARROW -21E8;AL # RIGHTWARDS WHITE ARROW -21E9;AL # DOWNWARDS WHITE ARROW -21EA;AL # UPWARDS WHITE ARROW FROM BAR -21EB;AL # UPWARDS WHITE ARROW ON PEDESTAL -21EC;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR -21ED;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR -21EE;AL # UPWARDS WHITE DOUBLE ARROW -21EF;AL # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL -21F0;AL # RIGHTWARDS WHITE ARROW FROM WALL -21F1;AL # NORTH WEST ARROW TO CORNER -21F2;AL # SOUTH EAST ARROW TO CORNER -21F3;AL # UP DOWN WHITE ARROW -21F4;AL # RIGHT ARROW WITH SMALL CIRCLE -21F5;AL # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW -21F6;AL # THREE RIGHTWARDS ARROWS -21F7;AL # LEFTWARDS ARROW WITH VERTICAL STROKE -21F8;AL # RIGHTWARDS ARROW WITH VERTICAL STROKE -21F9;AL # LEFT RIGHT ARROW WITH VERTICAL STROKE -21FA;AL # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FB;AL # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FC;AL # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE -21FD;AL # LEFTWARDS OPEN-HEADED ARROW -21FE;AL # RIGHTWARDS OPEN-HEADED ARROW -21FF;AL # LEFT RIGHT OPEN-HEADED ARROW -2200;AI # FOR ALL -2201;AL # COMPLEMENT -2202;AI # PARTIAL DIFFERENTIAL -2203;AI # THERE EXISTS -2204;AL # THERE DOES NOT EXIST -2205;AL # EMPTY SET -2206;AL # INCREMENT -2207;AI # NABLA -2208;AI # ELEMENT OF -2209;AL # NOT AN ELEMENT OF -220A;AL # SMALL ELEMENT OF -220B;AI # CONTAINS AS MEMBER -220C;AL # DOES NOT CONTAIN AS MEMBER -220D;AL # SMALL CONTAINS AS MEMBER -220E;AL # END OF PROOF -220F;AI # N-ARY PRODUCT -2210;AL # N-ARY COPRODUCT -2211;AI # N-ARY SUMMATION -2212;PR # MINUS SIGN -2213;PR # MINUS-OR-PLUS SIGN -2214;AL # DOT PLUS -2215;AI # DIVISION SLASH -2216;AL # SET MINUS -2217;AL # ASTERISK OPERATOR -2218;AL # RING OPERATOR -2219;AL # BULLET OPERATOR -221A;AI # SQUARE ROOT -221B;AL # CUBE ROOT -221C;AL # FOURTH ROOT -221D;AI # PROPORTIONAL TO -221E;AI # INFINITY -221F;AI # RIGHT ANGLE -2220;AI # ANGLE -2221;AL # MEASURED ANGLE -2222;AL # SPHERICAL ANGLE -2223;AI # DIVIDES -2224;AL # DOES NOT DIVIDE -2225;AI # PARALLEL TO -2226;AL # NOT PARALLEL TO -2227;AI # LOGICAL AND -2228;AI # LOGICAL OR -2229;AI # INTERSECTION -222A;AI # UNION -222B;AI # INTEGRAL -222C;AI # DOUBLE INTEGRAL -222D;AL # TRIPLE INTEGRAL -222E;AI # CONTOUR INTEGRAL -222F;AL # SURFACE INTEGRAL -2230;AL # VOLUME INTEGRAL -2231;AL # CLOCKWISE INTEGRAL -2232;AL # CLOCKWISE CONTOUR INTEGRAL -2233;AL # ANTICLOCKWISE CONTOUR INTEGRAL -2234;AI # THEREFORE -2235;AI # BECAUSE -2236;AI # RATIO -2237;AI # PROPORTION -2238;AL # DOT MINUS -2239;AL # EXCESS -223A;AL # GEOMETRIC PROPORTION -223B;AL # HOMOTHETIC -223C;AI # TILDE OPERATOR -223D;AI # REVERSED TILDE -223E;AL # INVERTED LAZY S -223F;AL # SINE WAVE -2240;AL # WREATH PRODUCT -2241;AL # NOT TILDE -2242;AL # MINUS TILDE -2243;AL # ASYMPTOTICALLY EQUAL TO -2244;AL # NOT ASYMPTOTICALLY EQUAL TO -2245;AL # APPROXIMATELY EQUAL TO -2246;AL # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO -2247;AL # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO -2248;AI # ALMOST EQUAL TO -2249;AL # NOT ALMOST EQUAL TO -224A;AL # ALMOST EQUAL OR EQUAL TO -224B;AL # TRIPLE TILDE -224C;AI # ALL EQUAL TO -224D;AL # EQUIVALENT TO -224E;AL # GEOMETRICALLY EQUIVALENT TO -224F;AL # DIFFERENCE BETWEEN -2250;AL # APPROACHES THE LIMIT -2251;AL # GEOMETRICALLY EQUAL TO -2252;AI # APPROXIMATELY EQUAL TO OR THE IMAGE OF -2253;AL # IMAGE OF OR APPROXIMATELY EQUAL TO -2254;AL # COLON EQUALS -2255;AL # EQUALS COLON -2256;AL # RING IN EQUAL TO -2257;AL # RING EQUAL TO -2258;AL # CORRESPONDS TO -2259;AL # ESTIMATES -225A;AL # EQUIANGULAR TO -225B;AL # STAR EQUALS -225C;AL # DELTA EQUAL TO -225D;AL # EQUAL TO BY DEFINITION -225E;AL # MEASURED BY -225F;AL # QUESTIONED EQUAL TO -2260;AI # NOT EQUAL TO -2261;AI # IDENTICAL TO -2262;AL # NOT IDENTICAL TO -2263;AL # STRICTLY EQUIVALENT TO -2264;AI # LESS-THAN OR EQUAL TO -2265;AI # GREATER-THAN OR EQUAL TO -2266;AI # LESS-THAN OVER EQUAL TO -2267;AI # GREATER-THAN OVER EQUAL TO -2268;AL # LESS-THAN BUT NOT EQUAL TO -2269;AL # GREATER-THAN BUT NOT EQUAL TO -226A;AI # MUCH LESS-THAN -226B;AI # MUCH GREATER-THAN -226C;AL # BETWEEN -226D;AL # NOT EQUIVALENT TO -226E;AI # NOT LESS-THAN -226F;AI # NOT GREATER-THAN -2270;AL # NEITHER LESS-THAN NOR EQUAL TO -2271;AL # NEITHER GREATER-THAN NOR EQUAL TO -2272;AL # LESS-THAN OR EQUIVALENT TO -2273;AL # GREATER-THAN OR EQUIVALENT TO -2274;AL # NEITHER LESS-THAN NOR EQUIVALENT TO -2275;AL # NEITHER GREATER-THAN NOR EQUIVALENT TO -2276;AL # LESS-THAN OR GREATER-THAN -2277;AL # GREATER-THAN OR LESS-THAN -2278;AL # NEITHER LESS-THAN NOR GREATER-THAN -2279;AL # NEITHER GREATER-THAN NOR LESS-THAN -227A;AL # PRECEDES -227B;AL # SUCCEEDS -227C;AL # PRECEDES OR EQUAL TO -227D;AL # SUCCEEDS OR EQUAL TO -227E;AL # PRECEDES OR EQUIVALENT TO -227F;AL # SUCCEEDS OR EQUIVALENT TO -2280;AL # DOES NOT PRECEDE -2281;AL # DOES NOT SUCCEED -2282;AI # SUBSET OF -2283;AI # SUPERSET OF -2284;AL # NOT A SUBSET OF -2285;AL # NOT A SUPERSET OF -2286;AI # SUBSET OF OR EQUAL TO -2287;AI # SUPERSET OF OR EQUAL TO -2288;AL # NEITHER A SUBSET OF NOR EQUAL TO -2289;AL # NEITHER A SUPERSET OF NOR EQUAL TO -228A;AL # SUBSET OF WITH NOT EQUAL TO -228B;AL # SUPERSET OF WITH NOT EQUAL TO -228C;AL # MULTISET -228D;AL # MULTISET MULTIPLICATION -228E;AL # MULTISET UNION -228F;AL # SQUARE IMAGE OF -2290;AL # SQUARE ORIGINAL OF -2291;AL # SQUARE IMAGE OF OR EQUAL TO -2292;AL # SQUARE ORIGINAL OF OR EQUAL TO -2293;AL # SQUARE CAP -2294;AL # SQUARE CUP -2295;AI # CIRCLED PLUS -2296;AL # CIRCLED MINUS -2297;AL # CIRCLED TIMES -2298;AL # CIRCLED DIVISION SLASH -2299;AI # CIRCLED DOT OPERATOR -229A;AL # CIRCLED RING OPERATOR -229B;AL # CIRCLED ASTERISK OPERATOR -229C;AL # CIRCLED EQUALS -229D;AL # CIRCLED DASH -229E;AL # SQUARED PLUS -229F;AL # SQUARED MINUS -22A0;AL # SQUARED TIMES -22A1;AL # SQUARED DOT OPERATOR -22A2;AL # RIGHT TACK -22A3;AL # LEFT TACK -22A4;AL # DOWN TACK -22A5;AI # UP TACK -22A6;AL # ASSERTION -22A7;AL # MODELS -22A8;AL # TRUE -22A9;AL # FORCES -22AA;AL # TRIPLE VERTICAL BAR RIGHT TURNSTILE -22AB;AL # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22AC;AL # DOES NOT PROVE -22AD;AL # NOT TRUE -22AE;AL # DOES NOT FORCE -22AF;AL # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22B0;AL # PRECEDES UNDER RELATION -22B1;AL # SUCCEEDS UNDER RELATION -22B2;AL # NORMAL SUBGROUP OF -22B3;AL # CONTAINS AS NORMAL SUBGROUP -22B4;AL # NORMAL SUBGROUP OF OR EQUAL TO -22B5;AL # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO -22B6;AL # ORIGINAL OF -22B7;AL # IMAGE OF -22B8;AL # MULTIMAP -22B9;AL # HERMITIAN CONJUGATE MATRIX -22BA;AL # INTERCALATE -22BB;AL # XOR -22BC;AL # NAND -22BD;AL # NOR -22BE;AL # RIGHT ANGLE WITH ARC -22BF;AI # RIGHT TRIANGLE -22C0;AL # N-ARY LOGICAL AND -22C1;AL # N-ARY LOGICAL OR -22C2;AL # N-ARY INTERSECTION -22C3;AL # N-ARY UNION -22C4;AL # DIAMOND OPERATOR -22C5;AL # DOT OPERATOR -22C6;AL # STAR OPERATOR -22C7;AL # DIVISION TIMES -22C8;AL # BOWTIE -22C9;AL # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -22CA;AL # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -22CB;AL # LEFT SEMIDIRECT PRODUCT -22CC;AL # RIGHT SEMIDIRECT PRODUCT -22CD;AL # REVERSED TILDE EQUALS -22CE;AL # CURLY LOGICAL OR -22CF;AL # CURLY LOGICAL AND -22D0;AL # DOUBLE SUBSET -22D1;AL # DOUBLE SUPERSET -22D2;AL # DOUBLE INTERSECTION -22D3;AL # DOUBLE UNION -22D4;AL # PITCHFORK -22D5;AL # EQUAL AND PARALLEL TO -22D6;AL # LESS-THAN WITH DOT -22D7;AL # GREATER-THAN WITH DOT -22D8;AL # VERY MUCH LESS-THAN -22D9;AL # VERY MUCH GREATER-THAN -22DA;AL # LESS-THAN EQUAL TO OR GREATER-THAN -22DB;AL # GREATER-THAN EQUAL TO OR LESS-THAN -22DC;AL # EQUAL TO OR LESS-THAN -22DD;AL # EQUAL TO OR GREATER-THAN -22DE;AL # EQUAL TO OR PRECEDES -22DF;AL # EQUAL TO OR SUCCEEDS -22E0;AL # DOES NOT PRECEDE OR EQUAL -22E1;AL # DOES NOT SUCCEED OR EQUAL -22E2;AL # NOT SQUARE IMAGE OF OR EQUAL TO -22E3;AL # NOT SQUARE ORIGINAL OF OR EQUAL TO -22E4;AL # SQUARE IMAGE OF OR NOT EQUAL TO -22E5;AL # SQUARE ORIGINAL OF OR NOT EQUAL TO -22E6;AL # LESS-THAN BUT NOT EQUIVALENT TO -22E7;AL # GREATER-THAN BUT NOT EQUIVALENT TO -22E8;AL # PRECEDES BUT NOT EQUIVALENT TO -22E9;AL # SUCCEEDS BUT NOT EQUIVALENT TO -22EA;AL # NOT NORMAL SUBGROUP OF -22EB;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP -22EC;AL # NOT NORMAL SUBGROUP OF OR EQUAL TO -22ED;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL -22EE;AL # VERTICAL ELLIPSIS -22EF;AL # MIDLINE HORIZONTAL ELLIPSIS -22F0;AL # UP RIGHT DIAGONAL ELLIPSIS -22F1;AL # DOWN RIGHT DIAGONAL ELLIPSIS -22F2;AL # ELEMENT OF WITH LONG HORIZONTAL STROKE -22F3;AL # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F4;AL # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F5;AL # ELEMENT OF WITH DOT ABOVE -22F6;AL # ELEMENT OF WITH OVERBAR -22F7;AL # SMALL ELEMENT OF WITH OVERBAR -22F8;AL # ELEMENT OF WITH UNDERBAR -22F9;AL # ELEMENT OF WITH TWO HORIZONTAL STROKES -22FA;AL # CONTAINS WITH LONG HORIZONTAL STROKE -22FB;AL # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FC;AL # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FD;AL # CONTAINS WITH OVERBAR -22FE;AL # SMALL CONTAINS WITH OVERBAR -22FF;AL # Z NOTATION BAG MEMBERSHIP -2300;AL # DIAMETER SIGN -2301;AL # ELECTRIC ARROW -2302;AL # HOUSE -2303;AL # UP ARROWHEAD -2304;AL # DOWN ARROWHEAD -2305;AL # PROJECTIVE -2306;AL # PERSPECTIVE -2307;AL # WAVY LINE -2308;AL # LEFT CEILING -2309;AL # RIGHT CEILING -230A;AL # LEFT FLOOR -230B;AL # RIGHT FLOOR -230C;AL # BOTTOM RIGHT CROP -230D;AL # BOTTOM LEFT CROP -230E;AL # TOP RIGHT CROP -230F;AL # TOP LEFT CROP -2310;AL # REVERSED NOT SIGN -2311;AL # SQUARE LOZENGE -2312;AI # ARC -2313;AL # SEGMENT -2314;AL # SECTOR -2315;AL # TELEPHONE RECORDER -2316;AL # POSITION INDICATOR -2317;AL # VIEWDATA SQUARE -2318;AL # PLACE OF INTEREST SIGN -2319;AL # TURNED NOT SIGN -231A;AL # WATCH -231B;AL # HOURGLASS -231C;AL # TOP LEFT CORNER -231D;AL # TOP RIGHT CORNER -231E;AL # BOTTOM LEFT CORNER -231F;AL # BOTTOM RIGHT CORNER -2320;AL # TOP HALF INTEGRAL -2321;AL # BOTTOM HALF INTEGRAL -2322;AL # FROWN -2323;AL # SMILE -2324;AL # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS -2325;AL # OPTION KEY -2326;AL # ERASE TO THE RIGHT -2327;AL # X IN A RECTANGLE BOX -2328;AL # KEYBOARD -2329;OP # LEFT-POINTING ANGLE BRACKET -232A;CL # RIGHT-POINTING ANGLE BRACKET -232B;AL # ERASE TO THE LEFT -232C;AL # BENZENE RING -232D;AL # CYLINDRICITY -232E;AL # ALL AROUND-PROFILE -232F;AL # SYMMETRY -2330;AL # TOTAL RUNOUT -2331;AL # DIMENSION ORIGIN -2332;AL # CONICAL TAPER -2333;AL # SLOPE -2334;AL # COUNTERBORE -2335;AL # COUNTERSINK -2336;AL # APL FUNCTIONAL SYMBOL I-BEAM -2337;AL # APL FUNCTIONAL SYMBOL SQUISH QUAD -2338;AL # APL FUNCTIONAL SYMBOL QUAD EQUAL -2339;AL # APL FUNCTIONAL SYMBOL QUAD DIVIDE -233A;AL # APL FUNCTIONAL SYMBOL QUAD DIAMOND -233B;AL # APL FUNCTIONAL SYMBOL QUAD JOT -233C;AL # APL FUNCTIONAL SYMBOL QUAD CIRCLE -233D;AL # APL FUNCTIONAL SYMBOL CIRCLE STILE -233E;AL # APL FUNCTIONAL SYMBOL CIRCLE JOT -233F;AL # APL FUNCTIONAL SYMBOL SLASH BAR -2340;AL # APL FUNCTIONAL SYMBOL BACKSLASH BAR -2341;AL # APL FUNCTIONAL SYMBOL QUAD SLASH -2342;AL # APL FUNCTIONAL SYMBOL QUAD BACKSLASH -2343;AL # APL FUNCTIONAL SYMBOL QUAD LESS-THAN -2344;AL # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN -2345;AL # APL FUNCTIONAL SYMBOL LEFTWARDS VANE -2346;AL # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE -2347;AL # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW -2348;AL # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW -2349;AL # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH -234A;AL # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR -234B;AL # APL FUNCTIONAL SYMBOL DELTA STILE -234C;AL # APL FUNCTIONAL SYMBOL QUAD DOWN CARET -234D;AL # APL FUNCTIONAL SYMBOL QUAD DELTA -234E;AL # APL FUNCTIONAL SYMBOL DOWN TACK JOT -234F;AL # APL FUNCTIONAL SYMBOL UPWARDS VANE -2350;AL # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW -2351;AL # APL FUNCTIONAL SYMBOL UP TACK OVERBAR -2352;AL # APL FUNCTIONAL SYMBOL DEL STILE -2353;AL # APL FUNCTIONAL SYMBOL QUAD UP CARET -2354;AL # APL FUNCTIONAL SYMBOL QUAD DEL -2355;AL # APL FUNCTIONAL SYMBOL UP TACK JOT -2356;AL # APL FUNCTIONAL SYMBOL DOWNWARDS VANE -2357;AL # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW -2358;AL # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR -2359;AL # APL FUNCTIONAL SYMBOL DELTA UNDERBAR -235A;AL # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR -235B;AL # APL FUNCTIONAL SYMBOL JOT UNDERBAR -235C;AL # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR -235D;AL # APL FUNCTIONAL SYMBOL UP SHOE JOT -235E;AL # APL FUNCTIONAL SYMBOL QUOTE QUAD -235F;AL # APL FUNCTIONAL SYMBOL CIRCLE STAR -2360;AL # APL FUNCTIONAL SYMBOL QUAD COLON -2361;AL # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS -2362;AL # APL FUNCTIONAL SYMBOL DEL DIAERESIS -2363;AL # APL FUNCTIONAL SYMBOL STAR DIAERESIS -2364;AL # APL FUNCTIONAL SYMBOL JOT DIAERESIS -2365;AL # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS -2366;AL # APL FUNCTIONAL SYMBOL DOWN SHOE STILE -2367;AL # APL FUNCTIONAL SYMBOL LEFT SHOE STILE -2368;AL # APL FUNCTIONAL SYMBOL TILDE DIAERESIS -2369;AL # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS -236A;AL # APL FUNCTIONAL SYMBOL COMMA BAR -236B;AL # APL FUNCTIONAL SYMBOL DEL TILDE -236C;AL # APL FUNCTIONAL SYMBOL ZILDE -236D;AL # APL FUNCTIONAL SYMBOL STILE TILDE -236E;AL # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR -236F;AL # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL -2370;AL # APL FUNCTIONAL SYMBOL QUAD QUESTION -2371;AL # APL FUNCTIONAL SYMBOL DOWN CARET TILDE -2372;AL # APL FUNCTIONAL SYMBOL UP CARET TILDE -2373;AL # APL FUNCTIONAL SYMBOL IOTA -2374;AL # APL FUNCTIONAL SYMBOL RHO -2375;AL # APL FUNCTIONAL SYMBOL OMEGA -2376;AL # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR -2377;AL # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR -2378;AL # APL FUNCTIONAL SYMBOL IOTA UNDERBAR -2379;AL # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR -237A;AL # APL FUNCTIONAL SYMBOL ALPHA -237B;AL # NOT CHECK MARK -237C;AL # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D;AL # SHOULDERED OPEN BOX -237E;AL # BELL SYMBOL -237F;AL # VERTICAL LINE WITH MIDDLE DOT -2380;AL # INSERTION SYMBOL -2381;AL # CONTINUOUS UNDERLINE SYMBOL -2382;AL # DISCONTINUOUS UNDERLINE SYMBOL -2383;AL # EMPHASIS SYMBOL -2384;AL # COMPOSITION SYMBOL -2385;AL # WHITE SQUARE WITH CENTRE VERTICAL LINE -2386;AL # ENTER SYMBOL -2387;AL # ALTERNATIVE KEY SYMBOL -2388;AL # HELM SYMBOL -2389;AL # CIRCLED HORIZONTAL BAR WITH NOTCH -238A;AL # CIRCLED TRIANGLE DOWN -238B;AL # BROKEN CIRCLE WITH NORTHWEST ARROW -238C;AL # UNDO SYMBOL -238D;AL # MONOSTABLE SYMBOL -238E;AL # HYSTERESIS SYMBOL -238F;AL # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL -2390;AL # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL -2391;AL # PASSIVE-PULL-DOWN-OUTPUT SYMBOL -2392;AL # PASSIVE-PULL-UP-OUTPUT SYMBOL -2393;AL # DIRECT CURRENT SYMBOL FORM TWO -2394;AL # SOFTWARE-FUNCTION SYMBOL -2395;AL # APL FUNCTIONAL SYMBOL QUAD -2396;AL # DECIMAL SEPARATOR KEY SYMBOL -2397;AL # PREVIOUS PAGE -2398;AL # NEXT PAGE -2399;AL # PRINT SCREEN SYMBOL -239A;AL # CLEAR SCREEN SYMBOL -239B;AL # LEFT PARENTHESIS UPPER HOOK -239C;AL # LEFT PARENTHESIS EXTENSION -239D;AL # LEFT PARENTHESIS LOWER HOOK -239E;AL # RIGHT PARENTHESIS UPPER HOOK -239F;AL # RIGHT PARENTHESIS EXTENSION -23A0;AL # RIGHT PARENTHESIS LOWER HOOK -23A1;AL # LEFT SQUARE BRACKET UPPER CORNER -23A2;AL # LEFT SQUARE BRACKET EXTENSION -23A3;AL # LEFT SQUARE BRACKET LOWER CORNER -23A4;AL # RIGHT SQUARE BRACKET UPPER CORNER -23A5;AL # RIGHT SQUARE BRACKET EXTENSION -23A6;AL # RIGHT SQUARE BRACKET LOWER CORNER -23A7;AL # LEFT CURLY BRACKET UPPER HOOK -23A8;AL # LEFT CURLY BRACKET MIDDLE PIECE -23A9;AL # LEFT CURLY BRACKET LOWER HOOK -23AA;AL # CURLY BRACKET EXTENSION -23AB;AL # RIGHT CURLY BRACKET UPPER HOOK -23AC;AL # RIGHT CURLY BRACKET MIDDLE PIECE -23AD;AL # RIGHT CURLY BRACKET LOWER HOOK -23AE;AL # INTEGRAL EXTENSION -23AF;AL # HORIZONTAL LINE EXTENSION -23B0;AL # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION -23B1;AL # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION -23B2;AL # SUMMATION TOP -23B3;AL # SUMMATION BOTTOM -23B4;AL # TOP SQUARE BRACKET -23B5;AL # BOTTOM SQUARE BRACKET -23B6;AL # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET -23B7;AL # RADICAL SYMBOL BOTTOM -23B8;AL # LEFT VERTICAL BOX LINE -23B9;AL # RIGHT VERTICAL BOX LINE -23BA;AL # HORIZONTAL SCAN LINE-1 -23BB;AL # HORIZONTAL SCAN LINE-3 -23BC;AL # HORIZONTAL SCAN LINE-7 -23BD;AL # HORIZONTAL SCAN LINE-9 -23BE;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT -23BF;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT -23C0;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE -23C1;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE -23C2;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE -23C3;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE -23C4;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE -23C5;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE -23C6;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE -23C7;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE -23C8;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE -23C9;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL -23CA;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL -23CB;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT -23CC;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT -23CD;AL # SQUARE FOOT -23CE;AL # RETURN SYMBOL -23CF;AL # EJECT SYMBOL -23D0;AL # VERTICAL LINE EXTENSION -23D1;AL # METRICAL BREVE -23D2;AL # METRICAL LONG OVER SHORT -23D3;AL # METRICAL SHORT OVER LONG -23D4;AL # METRICAL LONG OVER TWO SHORTS -23D5;AL # METRICAL TWO SHORTS OVER LONG -23D6;AL # METRICAL TWO SHORTS JOINED -23D7;AL # METRICAL TRISEME -23D8;AL # METRICAL TETRASEME -23D9;AL # METRICAL PENTASEME -23DA;AL # EARTH GROUND -23DB;AL # FUSE -23DC;AL # TOP PARENTHESIS -23DD;AL # BOTTOM PARENTHESIS -23DE;AL # TOP CURLY BRACKET -23DF;AL # BOTTOM CURLY BRACKET -23E0;AL # TOP TORTOISE SHELL BRACKET -23E1;AL # BOTTOM TORTOISE SHELL BRACKET -23E2;AL # WHITE TRAPEZIUM -23E3;AL # BENZENE RING WITH CIRCLE -23E4;AL # STRAIGHTNESS -23E5;AL # FLATNESS -23E6;AL # AC CURRENT -23E7;AL # ELECTRICAL INTERSECTION -2400;AL # SYMBOL FOR NULL -2401;AL # SYMBOL FOR START OF HEADING -2402;AL # SYMBOL FOR START OF TEXT -2403;AL # SYMBOL FOR END OF TEXT -2404;AL # SYMBOL FOR END OF TRANSMISSION -2405;AL # SYMBOL FOR ENQUIRY -2406;AL # SYMBOL FOR ACKNOWLEDGE -2407;AL # SYMBOL FOR BELL -2408;AL # SYMBOL FOR BACKSPACE -2409;AL # SYMBOL FOR HORIZONTAL TABULATION -240A;AL # SYMBOL FOR LINE FEED -240B;AL # SYMBOL FOR VERTICAL TABULATION -240C;AL # SYMBOL FOR FORM FEED -240D;AL # SYMBOL FOR CARRIAGE RETURN -240E;AL # SYMBOL FOR SHIFT OUT -240F;AL # SYMBOL FOR SHIFT IN -2410;AL # SYMBOL FOR DATA LINK ESCAPE -2411;AL # SYMBOL FOR DEVICE CONTROL ONE -2412;AL # SYMBOL FOR DEVICE CONTROL TWO -2413;AL # SYMBOL FOR DEVICE CONTROL THREE -2414;AL # SYMBOL FOR DEVICE CONTROL FOUR -2415;AL # SYMBOL FOR NEGATIVE ACKNOWLEDGE -2416;AL # SYMBOL FOR SYNCHRONOUS IDLE -2417;AL # SYMBOL FOR END OF TRANSMISSION BLOCK -2418;AL # SYMBOL FOR CANCEL -2419;AL # SYMBOL FOR END OF MEDIUM -241A;AL # SYMBOL FOR SUBSTITUTE -241B;AL # SYMBOL FOR ESCAPE -241C;AL # SYMBOL FOR FILE SEPARATOR -241D;AL # SYMBOL FOR GROUP SEPARATOR -241E;AL # SYMBOL FOR RECORD SEPARATOR -241F;AL # SYMBOL FOR UNIT SEPARATOR -2420;AL # SYMBOL FOR SPACE -2421;AL # SYMBOL FOR DELETE -2422;AL # BLANK SYMBOL -2423;AL # OPEN BOX -2424;AL # SYMBOL FOR NEWLINE -2425;AL # SYMBOL FOR DELETE FORM TWO -2426;AL # SYMBOL FOR SUBSTITUTE FORM TWO -2440;AL # OCR HOOK -2441;AL # OCR CHAIR -2442;AL # OCR FORK -2443;AL # OCR INVERTED FORK -2444;AL # OCR BELT BUCKLE -2445;AL # OCR BOW TIE -2446;AL # OCR BRANCH BANK IDENTIFICATION -2447;AL # OCR AMOUNT OF CHECK -2448;AL # OCR DASH -2449;AL # OCR CUSTOMER ACCOUNT NUMBER -244A;AL # OCR DOUBLE BACKSLASH -2460;AI # CIRCLED DIGIT ONE -2461;AI # CIRCLED DIGIT TWO -2462;AI # CIRCLED DIGIT THREE -2463;AI # CIRCLED DIGIT FOUR -2464;AI # CIRCLED DIGIT FIVE -2465;AI # CIRCLED DIGIT SIX -2466;AI # CIRCLED DIGIT SEVEN -2467;AI # CIRCLED DIGIT EIGHT -2468;AI # CIRCLED DIGIT NINE -2469;AI # CIRCLED NUMBER TEN -246A;AI # CIRCLED NUMBER ELEVEN -246B;AI # CIRCLED NUMBER TWELVE -246C;AI # CIRCLED NUMBER THIRTEEN -246D;AI # CIRCLED NUMBER FOURTEEN -246E;AI # CIRCLED NUMBER FIFTEEN -246F;AI # CIRCLED NUMBER SIXTEEN -2470;AI # CIRCLED NUMBER SEVENTEEN -2471;AI # CIRCLED NUMBER EIGHTEEN -2472;AI # CIRCLED NUMBER NINETEEN -2473;AI # CIRCLED NUMBER TWENTY -2474;AI # PARENTHESIZED DIGIT ONE -2475;AI # PARENTHESIZED DIGIT TWO -2476;AI # PARENTHESIZED DIGIT THREE -2477;AI # PARENTHESIZED DIGIT FOUR -2478;AI # PARENTHESIZED DIGIT FIVE -2479;AI # PARENTHESIZED DIGIT SIX -247A;AI # PARENTHESIZED DIGIT SEVEN -247B;AI # PARENTHESIZED DIGIT EIGHT -247C;AI # PARENTHESIZED DIGIT NINE -247D;AI # PARENTHESIZED NUMBER TEN -247E;AI # PARENTHESIZED NUMBER ELEVEN -247F;AI # PARENTHESIZED NUMBER TWELVE -2480;AI # PARENTHESIZED NUMBER THIRTEEN -2481;AI # PARENTHESIZED NUMBER FOURTEEN -2482;AI # PARENTHESIZED NUMBER FIFTEEN -2483;AI # PARENTHESIZED NUMBER SIXTEEN -2484;AI # PARENTHESIZED NUMBER SEVENTEEN -2485;AI # PARENTHESIZED NUMBER EIGHTEEN -2486;AI # PARENTHESIZED NUMBER NINETEEN -2487;AI # PARENTHESIZED NUMBER TWENTY -2488;AI # DIGIT ONE FULL STOP -2489;AI # DIGIT TWO FULL STOP -248A;AI # DIGIT THREE FULL STOP -248B;AI # DIGIT FOUR FULL STOP -248C;AI # DIGIT FIVE FULL STOP -248D;AI # DIGIT SIX FULL STOP -248E;AI # DIGIT SEVEN FULL STOP -248F;AI # DIGIT EIGHT FULL STOP -2490;AI # DIGIT NINE FULL STOP -2491;AI # NUMBER TEN FULL STOP -2492;AI # NUMBER ELEVEN FULL STOP -2493;AI # NUMBER TWELVE FULL STOP -2494;AI # NUMBER THIRTEEN FULL STOP -2495;AI # NUMBER FOURTEEN FULL STOP -2496;AI # NUMBER FIFTEEN FULL STOP -2497;AI # NUMBER SIXTEEN FULL STOP -2498;AI # NUMBER SEVENTEEN FULL STOP -2499;AI # NUMBER EIGHTEEN FULL STOP -249A;AI # NUMBER NINETEEN FULL STOP -249B;AI # NUMBER TWENTY FULL STOP -249C;AI # PARENTHESIZED LATIN SMALL LETTER A -249D;AI # PARENTHESIZED LATIN SMALL LETTER B -249E;AI # PARENTHESIZED LATIN SMALL LETTER C -249F;AI # PARENTHESIZED LATIN SMALL LETTER D -24A0;AI # PARENTHESIZED LATIN SMALL LETTER E -24A1;AI # PARENTHESIZED LATIN SMALL LETTER F -24A2;AI # PARENTHESIZED LATIN SMALL LETTER G -24A3;AI # PARENTHESIZED LATIN SMALL LETTER H -24A4;AI # PARENTHESIZED LATIN SMALL LETTER I -24A5;AI # PARENTHESIZED LATIN SMALL LETTER J -24A6;AI # PARENTHESIZED LATIN SMALL LETTER K -24A7;AI # PARENTHESIZED LATIN SMALL LETTER L -24A8;AI # PARENTHESIZED LATIN SMALL LETTER M -24A9;AI # PARENTHESIZED LATIN SMALL LETTER N -24AA;AI # PARENTHESIZED LATIN SMALL LETTER O -24AB;AI # PARENTHESIZED LATIN SMALL LETTER P -24AC;AI # PARENTHESIZED LATIN SMALL LETTER Q -24AD;AI # PARENTHESIZED LATIN SMALL LETTER R -24AE;AI # PARENTHESIZED LATIN SMALL LETTER S -24AF;AI # PARENTHESIZED LATIN SMALL LETTER T -24B0;AI # PARENTHESIZED LATIN SMALL LETTER U -24B1;AI # PARENTHESIZED LATIN SMALL LETTER V -24B2;AI # PARENTHESIZED LATIN SMALL LETTER W -24B3;AI # PARENTHESIZED LATIN SMALL LETTER X -24B4;AI # PARENTHESIZED LATIN SMALL LETTER Y -24B5;AI # PARENTHESIZED LATIN SMALL LETTER Z -24B6;AI # CIRCLED LATIN CAPITAL LETTER A -24B7;AI # CIRCLED LATIN CAPITAL LETTER B -24B8;AI # CIRCLED LATIN CAPITAL LETTER C -24B9;AI # CIRCLED LATIN CAPITAL LETTER D -24BA;AI # CIRCLED LATIN CAPITAL LETTER E -24BB;AI # CIRCLED LATIN CAPITAL LETTER F -24BC;AI # CIRCLED LATIN CAPITAL LETTER G -24BD;AI # CIRCLED LATIN CAPITAL LETTER H -24BE;AI # CIRCLED LATIN CAPITAL LETTER I -24BF;AI # CIRCLED LATIN CAPITAL LETTER J -24C0;AI # CIRCLED LATIN CAPITAL LETTER K -24C1;AI # CIRCLED LATIN CAPITAL LETTER L -24C2;AI # CIRCLED LATIN CAPITAL LETTER M -24C3;AI # CIRCLED LATIN CAPITAL LETTER N -24C4;AI # CIRCLED LATIN CAPITAL LETTER O -24C5;AI # CIRCLED LATIN CAPITAL LETTER P -24C6;AI # CIRCLED LATIN CAPITAL LETTER Q -24C7;AI # CIRCLED LATIN CAPITAL LETTER R -24C8;AI # CIRCLED LATIN CAPITAL LETTER S -24C9;AI # CIRCLED LATIN CAPITAL LETTER T -24CA;AI # CIRCLED LATIN CAPITAL LETTER U -24CB;AI # CIRCLED LATIN CAPITAL LETTER V -24CC;AI # CIRCLED LATIN CAPITAL LETTER W -24CD;AI # CIRCLED LATIN CAPITAL LETTER X -24CE;AI # CIRCLED LATIN CAPITAL LETTER Y -24CF;AI # CIRCLED LATIN CAPITAL LETTER Z -24D0;AI # CIRCLED LATIN SMALL LETTER A -24D1;AI # CIRCLED LATIN SMALL LETTER B -24D2;AI # CIRCLED LATIN SMALL LETTER C -24D3;AI # CIRCLED LATIN SMALL LETTER D -24D4;AI # CIRCLED LATIN SMALL LETTER E -24D5;AI # CIRCLED LATIN SMALL LETTER F -24D6;AI # CIRCLED LATIN SMALL LETTER G -24D7;AI # CIRCLED LATIN SMALL LETTER H -24D8;AI # CIRCLED LATIN SMALL LETTER I -24D9;AI # CIRCLED LATIN SMALL LETTER J -24DA;AI # CIRCLED LATIN SMALL LETTER K -24DB;AI # CIRCLED LATIN SMALL LETTER L -24DC;AI # CIRCLED LATIN SMALL LETTER M -24DD;AI # CIRCLED LATIN SMALL LETTER N -24DE;AI # CIRCLED LATIN SMALL LETTER O -24DF;AI # CIRCLED LATIN SMALL LETTER P -24E0;AI # CIRCLED LATIN SMALL LETTER Q -24E1;AI # CIRCLED LATIN SMALL LETTER R -24E2;AI # CIRCLED LATIN SMALL LETTER S -24E3;AI # CIRCLED LATIN SMALL LETTER T -24E4;AI # CIRCLED LATIN SMALL LETTER U -24E5;AI # CIRCLED LATIN SMALL LETTER V -24E6;AI # CIRCLED LATIN SMALL LETTER W -24E7;AI # CIRCLED LATIN SMALL LETTER X -24E8;AI # CIRCLED LATIN SMALL LETTER Y -24E9;AI # CIRCLED LATIN SMALL LETTER Z -24EA;AI # CIRCLED DIGIT ZERO -24EB;AI # NEGATIVE CIRCLED NUMBER ELEVEN -24EC;AI # NEGATIVE CIRCLED NUMBER TWELVE -24ED;AI # NEGATIVE CIRCLED NUMBER THIRTEEN -24EE;AI # NEGATIVE CIRCLED NUMBER FOURTEEN -24EF;AI # NEGATIVE CIRCLED NUMBER FIFTEEN -24F0;AI # NEGATIVE CIRCLED NUMBER SIXTEEN -24F1;AI # NEGATIVE CIRCLED NUMBER SEVENTEEN -24F2;AI # NEGATIVE CIRCLED NUMBER EIGHTEEN -24F3;AI # NEGATIVE CIRCLED NUMBER NINETEEN -24F4;AI # NEGATIVE CIRCLED NUMBER TWENTY -24F5;AI # DOUBLE CIRCLED DIGIT ONE -24F6;AI # DOUBLE CIRCLED DIGIT TWO -24F7;AI # DOUBLE CIRCLED DIGIT THREE -24F8;AI # DOUBLE CIRCLED DIGIT FOUR -24F9;AI # DOUBLE CIRCLED DIGIT FIVE -24FA;AI # DOUBLE CIRCLED DIGIT SIX -24FB;AI # DOUBLE CIRCLED DIGIT SEVEN -24FC;AI # DOUBLE CIRCLED DIGIT EIGHT -24FD;AI # DOUBLE CIRCLED DIGIT NINE -24FE;AI # DOUBLE CIRCLED NUMBER TEN -24FF;AL # NEGATIVE CIRCLED DIGIT ZERO -2500;AI # BOX DRAWINGS LIGHT HORIZONTAL -2501;AI # BOX DRAWINGS HEAVY HORIZONTAL -2502;AI # BOX DRAWINGS LIGHT VERTICAL -2503;AI # BOX DRAWINGS HEAVY VERTICAL -2504;AI # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL -2505;AI # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL -2506;AI # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL -2507;AI # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL -2508;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL -2509;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL -250A;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL -250B;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL -250C;AI # BOX DRAWINGS LIGHT DOWN AND RIGHT -250D;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY -250E;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT -250F;AI # BOX DRAWINGS HEAVY DOWN AND RIGHT -2510;AI # BOX DRAWINGS LIGHT DOWN AND LEFT -2511;AI # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY -2512;AI # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT -2513;AI # BOX DRAWINGS HEAVY DOWN AND LEFT -2514;AI # BOX DRAWINGS LIGHT UP AND RIGHT -2515;AI # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY -2516;AI # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT -2517;AI # BOX DRAWINGS HEAVY UP AND RIGHT -2518;AI # BOX DRAWINGS LIGHT UP AND LEFT -2519;AI # BOX DRAWINGS UP LIGHT AND LEFT HEAVY -251A;AI # BOX DRAWINGS UP HEAVY AND LEFT LIGHT -251B;AI # BOX DRAWINGS HEAVY UP AND LEFT -251C;AI # BOX DRAWINGS LIGHT VERTICAL AND RIGHT -251D;AI # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY -251E;AI # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT -251F;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT -2520;AI # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT -2521;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY -2522;AI # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY -2523;AI # BOX DRAWINGS HEAVY VERTICAL AND RIGHT -2524;AI # BOX DRAWINGS LIGHT VERTICAL AND LEFT -2525;AI # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY -2526;AI # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT -2527;AI # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT -2528;AI # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT -2529;AI # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY -252A;AI # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY -252B;AI # BOX DRAWINGS HEAVY VERTICAL AND LEFT -252C;AI # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -252D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT -252E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT -252F;AI # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY -2530;AI # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT -2531;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY -2532;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY -2533;AI # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL -2534;AI # BOX DRAWINGS LIGHT UP AND HORIZONTAL -2535;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT -2536;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT -2537;AI # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY -2538;AI # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT -2539;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY -253A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY -253B;AI # BOX DRAWINGS HEAVY UP AND HORIZONTAL -253C;AI # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -253D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT -253E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT -253F;AI # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY -2540;AI # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT -2541;AI # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT -2542;AI # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT -2543;AI # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT -2544;AI # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT -2545;AI # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT -2546;AI # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT -2547;AI # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY -2548;AI # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY -2549;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY -254A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY -254B;AI # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL -254C;AL # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL -254D;AL # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL -254E;AL # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL -254F;AL # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL -2550;AI # BOX DRAWINGS DOUBLE HORIZONTAL -2551;AI # BOX DRAWINGS DOUBLE VERTICAL -2552;AI # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -2553;AI # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -2554;AI # BOX DRAWINGS DOUBLE DOWN AND RIGHT -2555;AI # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -2556;AI # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -2557;AI # BOX DRAWINGS DOUBLE DOWN AND LEFT -2558;AI # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -2559;AI # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -255A;AI # BOX DRAWINGS DOUBLE UP AND RIGHT -255B;AI # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -255C;AI # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -255D;AI # BOX DRAWINGS DOUBLE UP AND LEFT -255E;AI # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -255F;AI # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -2560;AI # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -2561;AI # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -2562;AI # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -2563;AI # BOX DRAWINGS DOUBLE VERTICAL AND LEFT -2564;AI # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -2565;AI # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -2566;AI # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -2567;AI # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -2568;AI # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -2569;AI # BOX DRAWINGS DOUBLE UP AND HORIZONTAL -256A;AI # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -256B;AI # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -256C;AI # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -256D;AI # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT -256E;AI # BOX DRAWINGS LIGHT ARC DOWN AND LEFT -256F;AI # BOX DRAWINGS LIGHT ARC UP AND LEFT -2570;AI # BOX DRAWINGS LIGHT ARC UP AND RIGHT -2571;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT -2572;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT -2573;AI # BOX DRAWINGS LIGHT DIAGONAL CROSS -2574;AI # BOX DRAWINGS LIGHT LEFT -2575;AL # BOX DRAWINGS LIGHT UP -2576;AL # BOX DRAWINGS LIGHT RIGHT -2577;AL # BOX DRAWINGS LIGHT DOWN -2578;AL # BOX DRAWINGS HEAVY LEFT -2579;AL # BOX DRAWINGS HEAVY UP -257A;AL # BOX DRAWINGS HEAVY RIGHT -257B;AL # BOX DRAWINGS HEAVY DOWN -257C;AL # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT -257D;AL # BOX DRAWINGS LIGHT UP AND HEAVY DOWN -257E;AL # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT -257F;AL # BOX DRAWINGS HEAVY UP AND LIGHT DOWN -2580;AI # UPPER HALF BLOCK -2581;AI # LOWER ONE EIGHTH BLOCK -2582;AI # LOWER ONE QUARTER BLOCK -2583;AI # LOWER THREE EIGHTHS BLOCK -2584;AI # LOWER HALF BLOCK -2585;AI # LOWER FIVE EIGHTHS BLOCK -2586;AI # LOWER THREE QUARTERS BLOCK -2587;AI # LOWER SEVEN EIGHTHS BLOCK -2588;AI # FULL BLOCK -2589;AI # LEFT SEVEN EIGHTHS BLOCK -258A;AI # LEFT THREE QUARTERS BLOCK -258B;AI # LEFT FIVE EIGHTHS BLOCK -258C;AI # LEFT HALF BLOCK -258D;AI # LEFT THREE EIGHTHS BLOCK -258E;AI # LEFT ONE QUARTER BLOCK -258F;AI # LEFT ONE EIGHTH BLOCK -2590;AL # RIGHT HALF BLOCK -2591;AL # LIGHT SHADE -2592;AI # MEDIUM SHADE -2593;AI # DARK SHADE -2594;AI # UPPER ONE EIGHTH BLOCK -2595;AI # RIGHT ONE EIGHTH BLOCK -2596;AL # QUADRANT LOWER LEFT -2597;AL # QUADRANT LOWER RIGHT -2598;AL # QUADRANT UPPER LEFT -2599;AL # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT -259A;AL # QUADRANT UPPER LEFT AND LOWER RIGHT -259B;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT -259C;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT -259D;AL # QUADRANT UPPER RIGHT -259E;AL # QUADRANT UPPER RIGHT AND LOWER LEFT -259F;AL # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT -25A0;AI # BLACK SQUARE -25A1;AI # WHITE SQUARE -25A2;AL # WHITE SQUARE WITH ROUNDED CORNERS -25A3;AI # WHITE SQUARE CONTAINING BLACK SMALL SQUARE -25A4;AI # SQUARE WITH HORIZONTAL FILL -25A5;AI # SQUARE WITH VERTICAL FILL -25A6;AI # SQUARE WITH ORTHOGONAL CROSSHATCH FILL -25A7;AI # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL -25A8;AI # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL -25A9;AI # SQUARE WITH DIAGONAL CROSSHATCH FILL -25AA;AL # BLACK SMALL SQUARE -25AB;AL # WHITE SMALL SQUARE -25AC;AL # BLACK RECTANGLE -25AD;AL # WHITE RECTANGLE -25AE;AL # BLACK VERTICAL RECTANGLE -25AF;AL # WHITE VERTICAL RECTANGLE -25B0;AL # BLACK PARALLELOGRAM -25B1;AL # WHITE PARALLELOGRAM -25B2;AI # BLACK UP-POINTING TRIANGLE -25B3;AI # WHITE UP-POINTING TRIANGLE -25B4;AL # BLACK UP-POINTING SMALL TRIANGLE -25B5;AL # WHITE UP-POINTING SMALL TRIANGLE -25B6;AI # BLACK RIGHT-POINTING TRIANGLE -25B7;AI # WHITE RIGHT-POINTING TRIANGLE -25B8;AL # BLACK RIGHT-POINTING SMALL TRIANGLE -25B9;AL # WHITE RIGHT-POINTING SMALL TRIANGLE -25BA;AL # BLACK RIGHT-POINTING POINTER -25BB;AL # WHITE RIGHT-POINTING POINTER -25BC;AI # BLACK DOWN-POINTING TRIANGLE -25BD;AI # WHITE DOWN-POINTING TRIANGLE -25BE;AL # BLACK DOWN-POINTING SMALL TRIANGLE -25BF;AL # WHITE DOWN-POINTING SMALL TRIANGLE -25C0;AI # BLACK LEFT-POINTING TRIANGLE -25C1;AI # WHITE LEFT-POINTING TRIANGLE -25C2;AL # BLACK LEFT-POINTING SMALL TRIANGLE -25C3;AL # WHITE LEFT-POINTING SMALL TRIANGLE -25C4;AL # BLACK LEFT-POINTING POINTER -25C5;AL # WHITE LEFT-POINTING POINTER -25C6;AI # BLACK DIAMOND -25C7;AI # WHITE DIAMOND -25C8;AI # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND -25C9;AL # FISHEYE -25CA;AL # LOZENGE -25CB;AI # WHITE CIRCLE -25CC;AL # DOTTED CIRCLE -25CD;AL # CIRCLE WITH VERTICAL FILL -25CE;AI # BULLSEYE -25CF;AI # BLACK CIRCLE -25D0;AI # CIRCLE WITH LEFT HALF BLACK -25D1;AI # CIRCLE WITH RIGHT HALF BLACK -25D2;AL # CIRCLE WITH LOWER HALF BLACK -25D3;AL # CIRCLE WITH UPPER HALF BLACK -25D4;AL # CIRCLE WITH UPPER RIGHT QUADRANT BLACK -25D5;AL # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK -25D6;AL # LEFT HALF BLACK CIRCLE -25D7;AL # RIGHT HALF BLACK CIRCLE -25D8;AL # INVERSE BULLET -25D9;AL # INVERSE WHITE CIRCLE -25DA;AL # UPPER HALF INVERSE WHITE CIRCLE -25DB;AL # LOWER HALF INVERSE WHITE CIRCLE -25DC;AL # UPPER LEFT QUADRANT CIRCULAR ARC -25DD;AL # UPPER RIGHT QUADRANT CIRCULAR ARC -25DE;AL # LOWER RIGHT QUADRANT CIRCULAR ARC -25DF;AL # LOWER LEFT QUADRANT CIRCULAR ARC -25E0;AL # UPPER HALF CIRCLE -25E1;AL # LOWER HALF CIRCLE -25E2;AI # BLACK LOWER RIGHT TRIANGLE -25E3;AI # BLACK LOWER LEFT TRIANGLE -25E4;AI # BLACK UPPER LEFT TRIANGLE -25E5;AI # BLACK UPPER RIGHT TRIANGLE -25E6;AL # WHITE BULLET -25E7;AL # SQUARE WITH LEFT HALF BLACK -25E8;AL # SQUARE WITH RIGHT HALF BLACK -25E9;AL # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK -25EA;AL # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK -25EB;AL # WHITE SQUARE WITH VERTICAL BISECTING LINE -25EC;AL # WHITE UP-POINTING TRIANGLE WITH DOT -25ED;AL # UP-POINTING TRIANGLE WITH LEFT HALF BLACK -25EE;AL # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK -25EF;AI # LARGE CIRCLE -25F0;AL # WHITE SQUARE WITH UPPER LEFT QUADRANT -25F1;AL # WHITE SQUARE WITH LOWER LEFT QUADRANT -25F2;AL # WHITE SQUARE WITH LOWER RIGHT QUADRANT -25F3;AL # WHITE SQUARE WITH UPPER RIGHT QUADRANT -25F4;AL # WHITE CIRCLE WITH UPPER LEFT QUADRANT -25F5;AL # WHITE CIRCLE WITH LOWER LEFT QUADRANT -25F6;AL # WHITE CIRCLE WITH LOWER RIGHT QUADRANT -25F7;AL # WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8;AL # UPPER LEFT TRIANGLE -25F9;AL # UPPER RIGHT TRIANGLE -25FA;AL # LOWER LEFT TRIANGLE -25FB;AL # WHITE MEDIUM SQUARE -25FC;AL # BLACK MEDIUM SQUARE -25FD;AL # WHITE MEDIUM SMALL SQUARE -25FE;AL # BLACK MEDIUM SMALL SQUARE -25FF;AL # LOWER RIGHT TRIANGLE -2600;AL # BLACK SUN WITH RAYS -2601;AL # CLOUD -2602;AL # UMBRELLA -2603;AL # SNOWMAN -2604;AL # COMET -2605;AI # BLACK STAR -2606;AI # WHITE STAR -2607;AL # LIGHTNING -2608;AL # THUNDERSTORM -2609;AI # SUN -260A;AL # ASCENDING NODE -260B;AL # DESCENDING NODE -260C;AL # CONJUNCTION -260D;AL # OPPOSITION -260E;AI # BLACK TELEPHONE -260F;AI # WHITE TELEPHONE -2610;AL # BALLOT BOX -2611;AL # BALLOT BOX WITH CHECK -2612;AL # BALLOT BOX WITH X -2613;AL # SALTIRE -2614;AI # UMBRELLA WITH RAIN DROPS -2615;AI # HOT BEVERAGE -2616;AI # WHITE SHOGI PIECE -2617;AI # BLACK SHOGI PIECE -2618;AL # SHAMROCK -2619;AL # REVERSED ROTATED FLORAL HEART BULLET -261A;AL # BLACK LEFT POINTING INDEX -261B;AL # BLACK RIGHT POINTING INDEX -261C;AI # WHITE LEFT POINTING INDEX -261D;AL # WHITE UP POINTING INDEX -261E;AI # WHITE RIGHT POINTING INDEX -261F;AL # WHITE DOWN POINTING INDEX -2620;AL # SKULL AND CROSSBONES -2621;AL # CAUTION SIGN -2622;AL # RADIOACTIVE SIGN -2623;AL # BIOHAZARD SIGN -2624;AL # CADUCEUS -2625;AL # ANKH -2626;AL # ORTHODOX CROSS -2627;AL # CHI RHO -2628;AL # CROSS OF LORRAINE -2629;AL # CROSS OF JERUSALEM -262A;AL # STAR AND CRESCENT -262B;AL # FARSI SYMBOL -262C;AL # ADI SHAKTI -262D;AL # HAMMER AND SICKLE -262E;AL # PEACE SYMBOL -262F;AL # YIN YANG -2630;AL # TRIGRAM FOR HEAVEN -2631;AL # TRIGRAM FOR LAKE -2632;AL # TRIGRAM FOR FIRE -2633;AL # TRIGRAM FOR THUNDER -2634;AL # TRIGRAM FOR WIND -2635;AL # TRIGRAM FOR WATER -2636;AL # TRIGRAM FOR MOUNTAIN -2637;AL # TRIGRAM FOR EARTH -2638;AL # WHEEL OF DHARMA -2639;AL # WHITE FROWNING FACE -263A;AL # WHITE SMILING FACE -263B;AL # BLACK SMILING FACE -263C;AL # WHITE SUN WITH RAYS -263D;AL # FIRST QUARTER MOON -263E;AL # LAST QUARTER MOON -263F;AL # MERCURY -2640;AI # FEMALE SIGN -2641;AL # EARTH -2642;AI # MALE SIGN -2643;AL # JUPITER -2644;AL # SATURN -2645;AL # URANUS -2646;AL # NEPTUNE -2647;AL # PLUTO -2648;AL # ARIES -2649;AL # TAURUS -264A;AL # GEMINI -264B;AL # CANCER -264C;AL # LEO -264D;AL # VIRGO -264E;AL # LIBRA -264F;AL # SCORPIUS -2650;AL # SAGITTARIUS -2651;AL # CAPRICORN -2652;AL # AQUARIUS -2653;AL # PISCES -2654;AL # WHITE CHESS KING -2655;AL # WHITE CHESS QUEEN -2656;AL # WHITE CHESS ROOK -2657;AL # WHITE CHESS BISHOP -2658;AL # WHITE CHESS KNIGHT -2659;AL # WHITE CHESS PAWN -265A;AL # BLACK CHESS KING -265B;AL # BLACK CHESS QUEEN -265C;AL # BLACK CHESS ROOK -265D;AL # BLACK CHESS BISHOP -265E;AL # BLACK CHESS KNIGHT -265F;AL # BLACK CHESS PAWN -2660;AI # BLACK SPADE SUIT -2661;AI # WHITE HEART SUIT -2662;AL # WHITE DIAMOND SUIT -2663;AI # BLACK CLUB SUIT -2664;AI # WHITE SPADE SUIT -2665;AI # BLACK HEART SUIT -2666;AL # BLACK DIAMOND SUIT -2667;AI # WHITE CLUB SUIT -2668;AI # HOT SPRINGS -2669;AI # QUARTER NOTE -266A;AI # EIGHTH NOTE -266B;AL # BEAMED EIGHTH NOTES -266C;AI # BEAMED SIXTEENTH NOTES -266D;AI # MUSIC FLAT SIGN -266E;AL # MUSIC NATURAL SIGN -266F;AI # MUSIC SHARP SIGN -2670;AL # WEST SYRIAC CROSS -2671;AL # EAST SYRIAC CROSS -2672;AL # UNIVERSAL RECYCLING SYMBOL -2673;AL # RECYCLING SYMBOL FOR TYPE-1 PLASTICS -2674;AL # RECYCLING SYMBOL FOR TYPE-2 PLASTICS -2675;AL # RECYCLING SYMBOL FOR TYPE-3 PLASTICS -2676;AL # RECYCLING SYMBOL FOR TYPE-4 PLASTICS -2677;AL # RECYCLING SYMBOL FOR TYPE-5 PLASTICS -2678;AL # RECYCLING SYMBOL FOR TYPE-6 PLASTICS -2679;AL # RECYCLING SYMBOL FOR TYPE-7 PLASTICS -267A;AL # RECYCLING SYMBOL FOR GENERIC MATERIALS -267B;AL # BLACK UNIVERSAL RECYCLING SYMBOL -267C;AL # RECYCLED PAPER SYMBOL -267D;AL # PARTIALLY-RECYCLED PAPER SYMBOL -267E;AL # PERMANENT PAPER SIGN -267F;AL # WHEELCHAIR SYMBOL -2680;AL # DIE FACE-1 -2681;AL # DIE FACE-2 -2682;AL # DIE FACE-3 -2683;AL # DIE FACE-4 -2684;AL # DIE FACE-5 -2685;AL # DIE FACE-6 -2686;AL # WHITE CIRCLE WITH DOT RIGHT -2687;AL # WHITE CIRCLE WITH TWO DOTS -2688;AL # BLACK CIRCLE WITH WHITE DOT RIGHT -2689;AL # BLACK CIRCLE WITH TWO WHITE DOTS -268A;AL # MONOGRAM FOR YANG -268B;AL # MONOGRAM FOR YIN -268C;AL # DIGRAM FOR GREATER YANG -268D;AL # DIGRAM FOR LESSER YIN -268E;AL # DIGRAM FOR LESSER YANG -268F;AL # DIGRAM FOR GREATER YIN -2690;AL # WHITE FLAG -2691;AL # BLACK FLAG -2692;AL # HAMMER AND PICK -2693;AL # ANCHOR -2694;AL # CROSSED SWORDS -2695;AL # STAFF OF AESCULAPIUS -2696;AL # SCALES -2697;AL # ALEMBIC -2698;AL # FLOWER -2699;AL # GEAR -269A;AL # STAFF OF HERMES -269B;AL # ATOM SYMBOL -269C;AL # FLEUR-DE-LIS -26A0;AL # WARNING SIGN -26A1;AL # HIGH VOLTAGE SIGN -26A2;AL # DOUBLED FEMALE SIGN -26A3;AL # DOUBLED MALE SIGN -26A4;AL # INTERLOCKED FEMALE AND MALE SIGN -26A5;AL # MALE AND FEMALE SIGN -26A6;AL # MALE WITH STROKE SIGN -26A7;AL # MALE WITH STROKE AND MALE AND FEMALE SIGN -26A8;AL # VERTICAL MALE WITH STROKE SIGN -26A9;AL # HORIZONTAL MALE WITH STROKE SIGN -26AA;AL # MEDIUM WHITE CIRCLE -26AB;AL # MEDIUM BLACK CIRCLE -26AC;AL # MEDIUM SMALL WHITE CIRCLE -26AD;AL # MARRIAGE SYMBOL -26AE;AL # DIVORCE SYMBOL -26AF;AL # UNMARRIED PARTNERSHIP SYMBOL -26B0;AL # COFFIN -26B1;AL # FUNERAL URN -26B2;AL # NEUTER -2701;AL # UPPER BLADE SCISSORS -2702;AL # BLACK SCISSORS -2703;AL # LOWER BLADE SCISSORS -2704;AL # WHITE SCISSORS -2706;AL # TELEPHONE LOCATION SIGN -2707;AL # TAPE DRIVE -2708;AL # AIRPLANE -2709;AL # ENVELOPE -270C;AL # VICTORY HAND -270D;AL # WRITING HAND -270E;AL # LOWER RIGHT PENCIL -270F;AL # PENCIL -2710;AL # UPPER RIGHT PENCIL -2711;AL # WHITE NIB -2712;AL # BLACK NIB -2713;AL # CHECK MARK -2714;AL # HEAVY CHECK MARK -2715;AL # MULTIPLICATION X -2716;AL # HEAVY MULTIPLICATION X -2717;AL # BALLOT X -2718;AL # HEAVY BALLOT X -2719;AL # OUTLINED GREEK CROSS -271A;AL # HEAVY GREEK CROSS -271B;AL # OPEN CENTRE CROSS -271C;AL # HEAVY OPEN CENTRE CROSS -271D;AL # LATIN CROSS -271E;AL # SHADOWED WHITE LATIN CROSS -271F;AL # OUTLINED LATIN CROSS -2720;AL # MALTESE CROSS -2721;AL # STAR OF DAVID -2722;AL # FOUR TEARDROP-SPOKED ASTERISK -2723;AL # FOUR BALLOON-SPOKED ASTERISK -2724;AL # HEAVY FOUR BALLOON-SPOKED ASTERISK -2725;AL # FOUR CLUB-SPOKED ASTERISK -2726;AL # BLACK FOUR POINTED STAR -2727;AL # WHITE FOUR POINTED STAR -2729;AL # STRESS OUTLINED WHITE STAR -272A;AL # CIRCLED WHITE STAR -272B;AL # OPEN CENTRE BLACK STAR -272C;AL # BLACK CENTRE WHITE STAR -272D;AL # OUTLINED BLACK STAR -272E;AL # HEAVY OUTLINED BLACK STAR -272F;AL # PINWHEEL STAR -2730;AL # SHADOWED WHITE STAR -2731;AL # HEAVY ASTERISK -2732;AL # OPEN CENTRE ASTERISK -2733;AL # EIGHT SPOKED ASTERISK -2734;AL # EIGHT POINTED BLACK STAR -2735;AL # EIGHT POINTED PINWHEEL STAR -2736;AL # SIX POINTED BLACK STAR -2737;AL # EIGHT POINTED RECTILINEAR BLACK STAR -2738;AL # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR -2739;AL # TWELVE POINTED BLACK STAR -273A;AL # SIXTEEN POINTED ASTERISK -273B;AL # TEARDROP-SPOKED ASTERISK -273C;AL # OPEN CENTRE TEARDROP-SPOKED ASTERISK -273D;AL # HEAVY TEARDROP-SPOKED ASTERISK -273E;AL # SIX PETALLED BLACK AND WHITE FLORETTE -273F;AL # BLACK FLORETTE -2740;AL # WHITE FLORETTE -2741;AL # EIGHT PETALLED OUTLINED BLACK FLORETTE -2742;AL # CIRCLED OPEN CENTRE EIGHT POINTED STAR -2743;AL # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK -2744;AL # SNOWFLAKE -2745;AL # TIGHT TRIFOLIATE SNOWFLAKE -2746;AL # HEAVY CHEVRON SNOWFLAKE -2747;AL # SPARKLE -2748;AL # HEAVY SPARKLE -2749;AL # BALLOON-SPOKED ASTERISK -274A;AL # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274B;AL # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274D;AL # SHADOWED WHITE CIRCLE -274F;AL # LOWER RIGHT DROP-SHADOWED WHITE SQUARE -2750;AL # UPPER RIGHT DROP-SHADOWED WHITE SQUARE -2751;AL # LOWER RIGHT SHADOWED WHITE SQUARE -2752;AL # UPPER RIGHT SHADOWED WHITE SQUARE -2756;AL # BLACK DIAMOND MINUS WHITE X -2758;AL # LIGHT VERTICAL BAR -2759;AL # MEDIUM VERTICAL BAR -275A;AL # HEAVY VERTICAL BAR -275B;QU # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT -275C;QU # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT -275D;QU # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT -275E;QU # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -2761;AL # CURVED STEM PARAGRAPH SIGN ORNAMENT -2762;EX # HEAVY EXCLAMATION MARK ORNAMENT -2763;EX # HEAVY HEART EXCLAMATION MARK ORNAMENT -2764;AL # HEAVY BLACK HEART -2765;AL # ROTATED HEAVY BLACK HEART BULLET -2766;AL # FLORAL HEART -2767;AL # ROTATED FLORAL HEART BULLET -2768;OP # MEDIUM LEFT PARENTHESIS ORNAMENT -2769;CL # MEDIUM RIGHT PARENTHESIS ORNAMENT -276A;OP # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B;CL # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C;OP # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D;CL # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E;OP # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F;CL # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770;OP # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771;CL # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772;OP # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773;CL # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774;OP # MEDIUM LEFT CURLY BRACKET ORNAMENT -2775;CL # MEDIUM RIGHT CURLY BRACKET ORNAMENT -2776;AI # DINGBAT NEGATIVE CIRCLED DIGIT ONE -2777;AI # DINGBAT NEGATIVE CIRCLED DIGIT TWO -2778;AI # DINGBAT NEGATIVE CIRCLED DIGIT THREE -2779;AI # DINGBAT NEGATIVE CIRCLED DIGIT FOUR -277A;AI # DINGBAT NEGATIVE CIRCLED DIGIT FIVE -277B;AI # DINGBAT NEGATIVE CIRCLED DIGIT SIX -277C;AI # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN -277D;AI # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT -277E;AI # DINGBAT NEGATIVE CIRCLED DIGIT NINE -277F;AI # DINGBAT NEGATIVE CIRCLED NUMBER TEN -2780;AI # DINGBAT CIRCLED SANS-SERIF DIGIT ONE -2781;AI # DINGBAT CIRCLED SANS-SERIF DIGIT TWO -2782;AI # DINGBAT CIRCLED SANS-SERIF DIGIT THREE -2783;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR -2784;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE -2785;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SIX -2786;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN -2787;AI # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT -2788;AI # DINGBAT CIRCLED SANS-SERIF DIGIT NINE -2789;AI # DINGBAT CIRCLED SANS-SERIF NUMBER TEN -278A;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE -278B;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO -278C;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE -278D;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR -278E;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE -278F;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX -2790;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN -2791;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT -2792;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE -2793;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN -2794;AL # HEAVY WIDE-HEADED RIGHTWARDS ARROW -2798;AL # HEAVY SOUTH EAST ARROW -2799;AL # HEAVY RIGHTWARDS ARROW -279A;AL # HEAVY NORTH EAST ARROW -279B;AL # DRAFTING POINT RIGHTWARDS ARROW -279C;AL # HEAVY ROUND-TIPPED RIGHTWARDS ARROW -279D;AL # TRIANGLE-HEADED RIGHTWARDS ARROW -279E;AL # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW -279F;AL # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A0;AL # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A1;AL # BLACK RIGHTWARDS ARROW -27A2;AL # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD -27A3;AL # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD -27A4;AL # BLACK RIGHTWARDS ARROWHEAD -27A5;AL # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW -27A6;AL # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW -27A7;AL # SQUAT BLACK RIGHTWARDS ARROW -27A8;AL # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW -27A9;AL # RIGHT-SHADED WHITE RIGHTWARDS ARROW -27AA;AL # LEFT-SHADED WHITE RIGHTWARDS ARROW -27AB;AL # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AC;AL # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AD;AL # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AE;AL # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AF;AL # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B1;AL # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B2;AL # CIRCLED HEAVY WHITE RIGHTWARDS ARROW -27B3;AL # WHITE-FEATHERED RIGHTWARDS ARROW -27B4;AL # BLACK-FEATHERED SOUTH EAST ARROW -27B5;AL # BLACK-FEATHERED RIGHTWARDS ARROW -27B6;AL # BLACK-FEATHERED NORTH EAST ARROW -27B7;AL # HEAVY BLACK-FEATHERED SOUTH EAST ARROW -27B8;AL # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW -27B9;AL # HEAVY BLACK-FEATHERED NORTH EAST ARROW -27BA;AL # TEARDROP-BARBED RIGHTWARDS ARROW -27BB;AL # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW -27BC;AL # WEDGE-TAILED RIGHTWARDS ARROW -27BD;AL # HEAVY WEDGE-TAILED RIGHTWARDS ARROW -27BE;AL # OPEN-OUTLINED RIGHTWARDS ARROW -27C0;AL # THREE DIMENSIONAL ANGLE -27C1;AL # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE -27C2;AL # PERPENDICULAR -27C3;AL # OPEN SUBSET -27C4;AL # OPEN SUPERSET -27C5;OP # LEFT S-SHAPED BAG DELIMITER -27C6;CL # RIGHT S-SHAPED BAG DELIMITER -27C7;AL # OR WITH DOT INSIDE -27C8;AL # REVERSE SOLIDUS PRECEDING SUBSET -27C9;AL # SUPERSET PRECEDING SOLIDUS -27CA;AL # VERTICAL BAR WITH HORIZONTAL STROKE -27D0;AL # WHITE DIAMOND WITH CENTRED DOT -27D1;AL # AND WITH DOT -27D2;AL # ELEMENT OF OPENING UPWARDS -27D3;AL # LOWER RIGHT CORNER WITH DOT -27D4;AL # UPPER LEFT CORNER WITH DOT -27D5;AL # LEFT OUTER JOIN -27D6;AL # RIGHT OUTER JOIN -27D7;AL # FULL OUTER JOIN -27D8;AL # LARGE UP TACK -27D9;AL # LARGE DOWN TACK -27DA;AL # LEFT AND RIGHT DOUBLE TURNSTILE -27DB;AL # LEFT AND RIGHT TACK -27DC;AL # LEFT MULTIMAP -27DD;AL # LONG RIGHT TACK -27DE;AL # LONG LEFT TACK -27DF;AL # UP TACK WITH CIRCLE ABOVE -27E0;AL # LOZENGE DIVIDED BY HORIZONTAL RULE -27E1;AL # WHITE CONCAVE-SIDED DIAMOND -27E2;AL # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK -27E3;AL # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK -27E4;AL # WHITE SQUARE WITH LEFTWARDS TICK -27E5;AL # WHITE SQUARE WITH RIGHTWARDS TICK -27E6;OP # MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7;CL # MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8;OP # MATHEMATICAL LEFT ANGLE BRACKET -27E9;CL # MATHEMATICAL RIGHT ANGLE BRACKET -27EA;OP # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB;CL # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27F0;AL # UPWARDS QUADRUPLE ARROW -27F1;AL # DOWNWARDS QUADRUPLE ARROW -27F2;AL # ANTICLOCKWISE GAPPED CIRCLE ARROW -27F3;AL # CLOCKWISE GAPPED CIRCLE ARROW -27F4;AL # RIGHT ARROW WITH CIRCLED PLUS -27F5;AL # LONG LEFTWARDS ARROW -27F6;AL # LONG RIGHTWARDS ARROW -27F7;AL # LONG LEFT RIGHT ARROW -27F8;AL # LONG LEFTWARDS DOUBLE ARROW -27F9;AL # LONG RIGHTWARDS DOUBLE ARROW -27FA;AL # LONG LEFT RIGHT DOUBLE ARROW -27FB;AL # LONG LEFTWARDS ARROW FROM BAR -27FC;AL # LONG RIGHTWARDS ARROW FROM BAR -27FD;AL # LONG LEFTWARDS DOUBLE ARROW FROM BAR -27FE;AL # LONG RIGHTWARDS DOUBLE ARROW FROM BAR -27FF;AL # LONG RIGHTWARDS SQUIGGLE ARROW -2800;AL # BRAILLE PATTERN BLANK -2801;AL # BRAILLE PATTERN DOTS-1 -2802;AL # BRAILLE PATTERN DOTS-2 -2803;AL # BRAILLE PATTERN DOTS-12 -2804;AL # BRAILLE PATTERN DOTS-3 -2805;AL # BRAILLE PATTERN DOTS-13 -2806;AL # BRAILLE PATTERN DOTS-23 -2807;AL # BRAILLE PATTERN DOTS-123 -2808;AL # BRAILLE PATTERN DOTS-4 -2809;AL # BRAILLE PATTERN DOTS-14 -280A;AL # BRAILLE PATTERN DOTS-24 -280B;AL # BRAILLE PATTERN DOTS-124 -280C;AL # BRAILLE PATTERN DOTS-34 -280D;AL # BRAILLE PATTERN DOTS-134 -280E;AL # BRAILLE PATTERN DOTS-234 -280F;AL # BRAILLE PATTERN DOTS-1234 -2810;AL # BRAILLE PATTERN DOTS-5 -2811;AL # BRAILLE PATTERN DOTS-15 -2812;AL # BRAILLE PATTERN DOTS-25 -2813;AL # BRAILLE PATTERN DOTS-125 -2814;AL # BRAILLE PATTERN DOTS-35 -2815;AL # BRAILLE PATTERN DOTS-135 -2816;AL # BRAILLE PATTERN DOTS-235 -2817;AL # BRAILLE PATTERN DOTS-1235 -2818;AL # BRAILLE PATTERN DOTS-45 -2819;AL # BRAILLE PATTERN DOTS-145 -281A;AL # BRAILLE PATTERN DOTS-245 -281B;AL # BRAILLE PATTERN DOTS-1245 -281C;AL # BRAILLE PATTERN DOTS-345 -281D;AL # BRAILLE PATTERN DOTS-1345 -281E;AL # BRAILLE PATTERN DOTS-2345 -281F;AL # BRAILLE PATTERN DOTS-12345 -2820;AL # BRAILLE PATTERN DOTS-6 -2821;AL # BRAILLE PATTERN DOTS-16 -2822;AL # BRAILLE PATTERN DOTS-26 -2823;AL # BRAILLE PATTERN DOTS-126 -2824;AL # BRAILLE PATTERN DOTS-36 -2825;AL # BRAILLE PATTERN DOTS-136 -2826;AL # BRAILLE PATTERN DOTS-236 -2827;AL # BRAILLE PATTERN DOTS-1236 -2828;AL # BRAILLE PATTERN DOTS-46 -2829;AL # BRAILLE PATTERN DOTS-146 -282A;AL # BRAILLE PATTERN DOTS-246 -282B;AL # BRAILLE PATTERN DOTS-1246 -282C;AL # BRAILLE PATTERN DOTS-346 -282D;AL # BRAILLE PATTERN DOTS-1346 -282E;AL # BRAILLE PATTERN DOTS-2346 -282F;AL # BRAILLE PATTERN DOTS-12346 -2830;AL # BRAILLE PATTERN DOTS-56 -2831;AL # BRAILLE PATTERN DOTS-156 -2832;AL # BRAILLE PATTERN DOTS-256 -2833;AL # BRAILLE PATTERN DOTS-1256 -2834;AL # BRAILLE PATTERN DOTS-356 -2835;AL # BRAILLE PATTERN DOTS-1356 -2836;AL # BRAILLE PATTERN DOTS-2356 -2837;AL # BRAILLE PATTERN DOTS-12356 -2838;AL # BRAILLE PATTERN DOTS-456 -2839;AL # BRAILLE PATTERN DOTS-1456 -283A;AL # BRAILLE PATTERN DOTS-2456 -283B;AL # BRAILLE PATTERN DOTS-12456 -283C;AL # BRAILLE PATTERN DOTS-3456 -283D;AL # BRAILLE PATTERN DOTS-13456 -283E;AL # BRAILLE PATTERN DOTS-23456 -283F;AL # BRAILLE PATTERN DOTS-123456 -2840;AL # BRAILLE PATTERN DOTS-7 -2841;AL # BRAILLE PATTERN DOTS-17 -2842;AL # BRAILLE PATTERN DOTS-27 -2843;AL # BRAILLE PATTERN DOTS-127 -2844;AL # BRAILLE PATTERN DOTS-37 -2845;AL # BRAILLE PATTERN DOTS-137 -2846;AL # BRAILLE PATTERN DOTS-237 -2847;AL # BRAILLE PATTERN DOTS-1237 -2848;AL # BRAILLE PATTERN DOTS-47 -2849;AL # BRAILLE PATTERN DOTS-147 -284A;AL # BRAILLE PATTERN DOTS-247 -284B;AL # BRAILLE PATTERN DOTS-1247 -284C;AL # BRAILLE PATTERN DOTS-347 -284D;AL # BRAILLE PATTERN DOTS-1347 -284E;AL # BRAILLE PATTERN DOTS-2347 -284F;AL # BRAILLE PATTERN DOTS-12347 -2850;AL # BRAILLE PATTERN DOTS-57 -2851;AL # BRAILLE PATTERN DOTS-157 -2852;AL # BRAILLE PATTERN DOTS-257 -2853;AL # BRAILLE PATTERN DOTS-1257 -2854;AL # BRAILLE PATTERN DOTS-357 -2855;AL # BRAILLE PATTERN DOTS-1357 -2856;AL # BRAILLE PATTERN DOTS-2357 -2857;AL # BRAILLE PATTERN DOTS-12357 -2858;AL # BRAILLE PATTERN DOTS-457 -2859;AL # BRAILLE PATTERN DOTS-1457 -285A;AL # BRAILLE PATTERN DOTS-2457 -285B;AL # BRAILLE PATTERN DOTS-12457 -285C;AL # BRAILLE PATTERN DOTS-3457 -285D;AL # BRAILLE PATTERN DOTS-13457 -285E;AL # BRAILLE PATTERN DOTS-23457 -285F;AL # BRAILLE PATTERN DOTS-123457 -2860;AL # BRAILLE PATTERN DOTS-67 -2861;AL # BRAILLE PATTERN DOTS-167 -2862;AL # BRAILLE PATTERN DOTS-267 -2863;AL # BRAILLE PATTERN DOTS-1267 -2864;AL # BRAILLE PATTERN DOTS-367 -2865;AL # BRAILLE PATTERN DOTS-1367 -2866;AL # BRAILLE PATTERN DOTS-2367 -2867;AL # BRAILLE PATTERN DOTS-12367 -2868;AL # BRAILLE PATTERN DOTS-467 -2869;AL # BRAILLE PATTERN DOTS-1467 -286A;AL # BRAILLE PATTERN DOTS-2467 -286B;AL # BRAILLE PATTERN DOTS-12467 -286C;AL # BRAILLE PATTERN DOTS-3467 -286D;AL # BRAILLE PATTERN DOTS-13467 -286E;AL # BRAILLE PATTERN DOTS-23467 -286F;AL # BRAILLE PATTERN DOTS-123467 -2870;AL # BRAILLE PATTERN DOTS-567 -2871;AL # BRAILLE PATTERN DOTS-1567 -2872;AL # BRAILLE PATTERN DOTS-2567 -2873;AL # BRAILLE PATTERN DOTS-12567 -2874;AL # BRAILLE PATTERN DOTS-3567 -2875;AL # BRAILLE PATTERN DOTS-13567 -2876;AL # BRAILLE PATTERN DOTS-23567 -2877;AL # BRAILLE PATTERN DOTS-123567 -2878;AL # BRAILLE PATTERN DOTS-4567 -2879;AL # BRAILLE PATTERN DOTS-14567 -287A;AL # BRAILLE PATTERN DOTS-24567 -287B;AL # BRAILLE PATTERN DOTS-124567 -287C;AL # BRAILLE PATTERN DOTS-34567 -287D;AL # BRAILLE PATTERN DOTS-134567 -287E;AL # BRAILLE PATTERN DOTS-234567 -287F;AL # BRAILLE PATTERN DOTS-1234567 -2880;AL # BRAILLE PATTERN DOTS-8 -2881;AL # BRAILLE PATTERN DOTS-18 -2882;AL # BRAILLE PATTERN DOTS-28 -2883;AL # BRAILLE PATTERN DOTS-128 -2884;AL # BRAILLE PATTERN DOTS-38 -2885;AL # BRAILLE PATTERN DOTS-138 -2886;AL # BRAILLE PATTERN DOTS-238 -2887;AL # BRAILLE PATTERN DOTS-1238 -2888;AL # BRAILLE PATTERN DOTS-48 -2889;AL # BRAILLE PATTERN DOTS-148 -288A;AL # BRAILLE PATTERN DOTS-248 -288B;AL # BRAILLE PATTERN DOTS-1248 -288C;AL # BRAILLE PATTERN DOTS-348 -288D;AL # BRAILLE PATTERN DOTS-1348 -288E;AL # BRAILLE PATTERN DOTS-2348 -288F;AL # BRAILLE PATTERN DOTS-12348 -2890;AL # BRAILLE PATTERN DOTS-58 -2891;AL # BRAILLE PATTERN DOTS-158 -2892;AL # BRAILLE PATTERN DOTS-258 -2893;AL # BRAILLE PATTERN DOTS-1258 -2894;AL # BRAILLE PATTERN DOTS-358 -2895;AL # BRAILLE PATTERN DOTS-1358 -2896;AL # BRAILLE PATTERN DOTS-2358 -2897;AL # BRAILLE PATTERN DOTS-12358 -2898;AL # BRAILLE PATTERN DOTS-458 -2899;AL # BRAILLE PATTERN DOTS-1458 -289A;AL # BRAILLE PATTERN DOTS-2458 -289B;AL # BRAILLE PATTERN DOTS-12458 -289C;AL # BRAILLE PATTERN DOTS-3458 -289D;AL # BRAILLE PATTERN DOTS-13458 -289E;AL # BRAILLE PATTERN DOTS-23458 -289F;AL # BRAILLE PATTERN DOTS-123458 -28A0;AL # BRAILLE PATTERN DOTS-68 -28A1;AL # BRAILLE PATTERN DOTS-168 -28A2;AL # BRAILLE PATTERN DOTS-268 -28A3;AL # BRAILLE PATTERN DOTS-1268 -28A4;AL # BRAILLE PATTERN DOTS-368 -28A5;AL # BRAILLE PATTERN DOTS-1368 -28A6;AL # BRAILLE PATTERN DOTS-2368 -28A7;AL # BRAILLE PATTERN DOTS-12368 -28A8;AL # BRAILLE PATTERN DOTS-468 -28A9;AL # BRAILLE PATTERN DOTS-1468 -28AA;AL # BRAILLE PATTERN DOTS-2468 -28AB;AL # BRAILLE PATTERN DOTS-12468 -28AC;AL # BRAILLE PATTERN DOTS-3468 -28AD;AL # BRAILLE PATTERN DOTS-13468 -28AE;AL # BRAILLE PATTERN DOTS-23468 -28AF;AL # BRAILLE PATTERN DOTS-123468 -28B0;AL # BRAILLE PATTERN DOTS-568 -28B1;AL # BRAILLE PATTERN DOTS-1568 -28B2;AL # BRAILLE PATTERN DOTS-2568 -28B3;AL # BRAILLE PATTERN DOTS-12568 -28B4;AL # BRAILLE PATTERN DOTS-3568 -28B5;AL # BRAILLE PATTERN DOTS-13568 -28B6;AL # BRAILLE PATTERN DOTS-23568 -28B7;AL # BRAILLE PATTERN DOTS-123568 -28B8;AL # BRAILLE PATTERN DOTS-4568 -28B9;AL # BRAILLE PATTERN DOTS-14568 -28BA;AL # BRAILLE PATTERN DOTS-24568 -28BB;AL # BRAILLE PATTERN DOTS-124568 -28BC;AL # BRAILLE PATTERN DOTS-34568 -28BD;AL # BRAILLE PATTERN DOTS-134568 -28BE;AL # BRAILLE PATTERN DOTS-234568 -28BF;AL # BRAILLE PATTERN DOTS-1234568 -28C0;AL # BRAILLE PATTERN DOTS-78 -28C1;AL # BRAILLE PATTERN DOTS-178 -28C2;AL # BRAILLE PATTERN DOTS-278 -28C3;AL # BRAILLE PATTERN DOTS-1278 -28C4;AL # BRAILLE PATTERN DOTS-378 -28C5;AL # BRAILLE PATTERN DOTS-1378 -28C6;AL # BRAILLE PATTERN DOTS-2378 -28C7;AL # BRAILLE PATTERN DOTS-12378 -28C8;AL # BRAILLE PATTERN DOTS-478 -28C9;AL # BRAILLE PATTERN DOTS-1478 -28CA;AL # BRAILLE PATTERN DOTS-2478 -28CB;AL # BRAILLE PATTERN DOTS-12478 -28CC;AL # BRAILLE PATTERN DOTS-3478 -28CD;AL # BRAILLE PATTERN DOTS-13478 -28CE;AL # BRAILLE PATTERN DOTS-23478 -28CF;AL # BRAILLE PATTERN DOTS-123478 -28D0;AL # BRAILLE PATTERN DOTS-578 -28D1;AL # BRAILLE PATTERN DOTS-1578 -28D2;AL # BRAILLE PATTERN DOTS-2578 -28D3;AL # BRAILLE PATTERN DOTS-12578 -28D4;AL # BRAILLE PATTERN DOTS-3578 -28D5;AL # BRAILLE PATTERN DOTS-13578 -28D6;AL # BRAILLE PATTERN DOTS-23578 -28D7;AL # BRAILLE PATTERN DOTS-123578 -28D8;AL # BRAILLE PATTERN DOTS-4578 -28D9;AL # BRAILLE PATTERN DOTS-14578 -28DA;AL # BRAILLE PATTERN DOTS-24578 -28DB;AL # BRAILLE PATTERN DOTS-124578 -28DC;AL # BRAILLE PATTERN DOTS-34578 -28DD;AL # BRAILLE PATTERN DOTS-134578 -28DE;AL # BRAILLE PATTERN DOTS-234578 -28DF;AL # BRAILLE PATTERN DOTS-1234578 -28E0;AL # BRAILLE PATTERN DOTS-678 -28E1;AL # BRAILLE PATTERN DOTS-1678 -28E2;AL # BRAILLE PATTERN DOTS-2678 -28E3;AL # BRAILLE PATTERN DOTS-12678 -28E4;AL # BRAILLE PATTERN DOTS-3678 -28E5;AL # BRAILLE PATTERN DOTS-13678 -28E6;AL # BRAILLE PATTERN DOTS-23678 -28E7;AL # BRAILLE PATTERN DOTS-123678 -28E8;AL # BRAILLE PATTERN DOTS-4678 -28E9;AL # BRAILLE PATTERN DOTS-14678 -28EA;AL # BRAILLE PATTERN DOTS-24678 -28EB;AL # BRAILLE PATTERN DOTS-124678 -28EC;AL # BRAILLE PATTERN DOTS-34678 -28ED;AL # BRAILLE PATTERN DOTS-134678 -28EE;AL # BRAILLE PATTERN DOTS-234678 -28EF;AL # BRAILLE PATTERN DOTS-1234678 -28F0;AL # BRAILLE PATTERN DOTS-5678 -28F1;AL # BRAILLE PATTERN DOTS-15678 -28F2;AL # BRAILLE PATTERN DOTS-25678 -28F3;AL # BRAILLE PATTERN DOTS-125678 -28F4;AL # BRAILLE PATTERN DOTS-35678 -28F5;AL # BRAILLE PATTERN DOTS-135678 -28F6;AL # BRAILLE PATTERN DOTS-235678 -28F7;AL # BRAILLE PATTERN DOTS-1235678 -28F8;AL # BRAILLE PATTERN DOTS-45678 -28F9;AL # BRAILLE PATTERN DOTS-145678 -28FA;AL # BRAILLE PATTERN DOTS-245678 -28FB;AL # BRAILLE PATTERN DOTS-1245678 -28FC;AL # BRAILLE PATTERN DOTS-345678 -28FD;AL # BRAILLE PATTERN DOTS-1345678 -28FE;AL # BRAILLE PATTERN DOTS-2345678 -28FF;AL # BRAILLE PATTERN DOTS-12345678 -2900;AL # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE -2901;AL # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE -2902;AL # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2903;AL # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2904;AL # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE -2905;AL # RIGHTWARDS TWO-HEADED ARROW FROM BAR -2906;AL # LEFTWARDS DOUBLE ARROW FROM BAR -2907;AL # RIGHTWARDS DOUBLE ARROW FROM BAR -2908;AL # DOWNWARDS ARROW WITH HORIZONTAL STROKE -2909;AL # UPWARDS ARROW WITH HORIZONTAL STROKE -290A;AL # UPWARDS TRIPLE ARROW -290B;AL # DOWNWARDS TRIPLE ARROW -290C;AL # LEFTWARDS DOUBLE DASH ARROW -290D;AL # RIGHTWARDS DOUBLE DASH ARROW -290E;AL # LEFTWARDS TRIPLE DASH ARROW -290F;AL # RIGHTWARDS TRIPLE DASH ARROW -2910;AL # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW -2911;AL # RIGHTWARDS ARROW WITH DOTTED STEM -2912;AL # UPWARDS ARROW TO BAR -2913;AL # DOWNWARDS ARROW TO BAR -2914;AL # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE -2915;AL # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2916;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL -2917;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE -2918;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2919;AL # LEFTWARDS ARROW-TAIL -291A;AL # RIGHTWARDS ARROW-TAIL -291B;AL # LEFTWARDS DOUBLE ARROW-TAIL -291C;AL # RIGHTWARDS DOUBLE ARROW-TAIL -291D;AL # LEFTWARDS ARROW TO BLACK DIAMOND -291E;AL # RIGHTWARDS ARROW TO BLACK DIAMOND -291F;AL # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND -2920;AL # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND -2921;AL # NORTH WEST AND SOUTH EAST ARROW -2922;AL # NORTH EAST AND SOUTH WEST ARROW -2923;AL # NORTH WEST ARROW WITH HOOK -2924;AL # NORTH EAST ARROW WITH HOOK -2925;AL # SOUTH EAST ARROW WITH HOOK -2926;AL # SOUTH WEST ARROW WITH HOOK -2927;AL # NORTH WEST ARROW AND NORTH EAST ARROW -2928;AL # NORTH EAST ARROW AND SOUTH EAST ARROW -2929;AL # SOUTH EAST ARROW AND SOUTH WEST ARROW -292A;AL # SOUTH WEST ARROW AND NORTH WEST ARROW -292B;AL # RISING DIAGONAL CROSSING FALLING DIAGONAL -292C;AL # FALLING DIAGONAL CROSSING RISING DIAGONAL -292D;AL # SOUTH EAST ARROW CROSSING NORTH EAST ARROW -292E;AL # NORTH EAST ARROW CROSSING SOUTH EAST ARROW -292F;AL # FALLING DIAGONAL CROSSING NORTH EAST ARROW -2930;AL # RISING DIAGONAL CROSSING SOUTH EAST ARROW -2931;AL # NORTH EAST ARROW CROSSING NORTH WEST ARROW -2932;AL # NORTH WEST ARROW CROSSING NORTH EAST ARROW -2933;AL # WAVE ARROW POINTING DIRECTLY RIGHT -2934;AL # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS -2935;AL # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS -2936;AL # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS -2937;AL # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS -2938;AL # RIGHT-SIDE ARC CLOCKWISE ARROW -2939;AL # LEFT-SIDE ARC ANTICLOCKWISE ARROW -293A;AL # TOP ARC ANTICLOCKWISE ARROW -293B;AL # BOTTOM ARC ANTICLOCKWISE ARROW -293C;AL # TOP ARC CLOCKWISE ARROW WITH MINUS -293D;AL # TOP ARC ANTICLOCKWISE ARROW WITH PLUS -293E;AL # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW -293F;AL # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW -2940;AL # ANTICLOCKWISE CLOSED CIRCLE ARROW -2941;AL # CLOCKWISE CLOSED CIRCLE ARROW -2942;AL # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW -2943;AL # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW -2944;AL # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW -2945;AL # RIGHTWARDS ARROW WITH PLUS BELOW -2946;AL # LEFTWARDS ARROW WITH PLUS BELOW -2947;AL # RIGHTWARDS ARROW THROUGH X -2948;AL # LEFT RIGHT ARROW THROUGH SMALL CIRCLE -2949;AL # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE -294A;AL # LEFT BARB UP RIGHT BARB DOWN HARPOON -294B;AL # LEFT BARB DOWN RIGHT BARB UP HARPOON -294C;AL # UP BARB RIGHT DOWN BARB LEFT HARPOON -294D;AL # UP BARB LEFT DOWN BARB RIGHT HARPOON -294E;AL # LEFT BARB UP RIGHT BARB UP HARPOON -294F;AL # UP BARB RIGHT DOWN BARB RIGHT HARPOON -2950;AL # LEFT BARB DOWN RIGHT BARB DOWN HARPOON -2951;AL # UP BARB LEFT DOWN BARB LEFT HARPOON -2952;AL # LEFTWARDS HARPOON WITH BARB UP TO BAR -2953;AL # RIGHTWARDS HARPOON WITH BARB UP TO BAR -2954;AL # UPWARDS HARPOON WITH BARB RIGHT TO BAR -2955;AL # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR -2956;AL # LEFTWARDS HARPOON WITH BARB DOWN TO BAR -2957;AL # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR -2958;AL # UPWARDS HARPOON WITH BARB LEFT TO BAR -2959;AL # DOWNWARDS HARPOON WITH BARB LEFT TO BAR -295A;AL # LEFTWARDS HARPOON WITH BARB UP FROM BAR -295B;AL # RIGHTWARDS HARPOON WITH BARB UP FROM BAR -295C;AL # UPWARDS HARPOON WITH BARB RIGHT FROM BAR -295D;AL # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR -295E;AL # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR -295F;AL # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR -2960;AL # UPWARDS HARPOON WITH BARB LEFT FROM BAR -2961;AL # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR -2962;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN -2963;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2964;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2965;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -2966;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP -2967;AL # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2968;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP -2969;AL # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN -296A;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296B;AL # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296C;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296D;AL # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296E;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -296F;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2970;AL # RIGHT DOUBLE ARROW WITH ROUNDED HEAD -2971;AL # EQUALS SIGN ABOVE RIGHTWARDS ARROW -2972;AL # TILDE OPERATOR ABOVE RIGHTWARDS ARROW -2973;AL # LEFTWARDS ARROW ABOVE TILDE OPERATOR -2974;AL # RIGHTWARDS ARROW ABOVE TILDE OPERATOR -2975;AL # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO -2976;AL # LESS-THAN ABOVE LEFTWARDS ARROW -2977;AL # LEFTWARDS ARROW THROUGH LESS-THAN -2978;AL # GREATER-THAN ABOVE RIGHTWARDS ARROW -2979;AL # SUBSET ABOVE RIGHTWARDS ARROW -297A;AL # LEFTWARDS ARROW THROUGH SUBSET -297B;AL # SUPERSET ABOVE LEFTWARDS ARROW -297C;AL # LEFT FISH TAIL -297D;AL # RIGHT FISH TAIL -297E;AL # UP FISH TAIL -297F;AL # DOWN FISH TAIL -2980;AL # TRIPLE VERTICAL BAR DELIMITER -2981;AL # Z NOTATION SPOT -2982;AL # Z NOTATION TYPE COLON -2983;OP # LEFT WHITE CURLY BRACKET -2984;CL # RIGHT WHITE CURLY BRACKET -2985;OP # LEFT WHITE PARENTHESIS -2986;CL # RIGHT WHITE PARENTHESIS -2987;OP # Z NOTATION LEFT IMAGE BRACKET -2988;CL # Z NOTATION RIGHT IMAGE BRACKET -2989;OP # Z NOTATION LEFT BINDING BRACKET -298A;CL # Z NOTATION RIGHT BINDING BRACKET -298B;OP # LEFT SQUARE BRACKET WITH UNDERBAR -298C;CL # RIGHT SQUARE BRACKET WITH UNDERBAR -298D;OP # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E;CL # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F;OP # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990;CL # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991;OP # LEFT ANGLE BRACKET WITH DOT -2992;CL # RIGHT ANGLE BRACKET WITH DOT -2993;OP # LEFT ARC LESS-THAN BRACKET -2994;CL # RIGHT ARC GREATER-THAN BRACKET -2995;OP # DOUBLE LEFT ARC GREATER-THAN BRACKET -2996;CL # DOUBLE RIGHT ARC LESS-THAN BRACKET -2997;OP # LEFT BLACK TORTOISE SHELL BRACKET -2998;CL # RIGHT BLACK TORTOISE SHELL BRACKET -2999;AL # DOTTED FENCE -299A;AL # VERTICAL ZIGZAG LINE -299B;AL # MEASURED ANGLE OPENING LEFT -299C;AL # RIGHT ANGLE VARIANT WITH SQUARE -299D;AL # MEASURED RIGHT ANGLE WITH DOT -299E;AL # ANGLE WITH S INSIDE -299F;AL # ACUTE ANGLE -29A0;AL # SPHERICAL ANGLE OPENING LEFT -29A1;AL # SPHERICAL ANGLE OPENING UP -29A2;AL # TURNED ANGLE -29A3;AL # REVERSED ANGLE -29A4;AL # ANGLE WITH UNDERBAR -29A5;AL # REVERSED ANGLE WITH UNDERBAR -29A6;AL # OBLIQUE ANGLE OPENING UP -29A7;AL # OBLIQUE ANGLE OPENING DOWN -29A8;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT -29A9;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT -29AA;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT -29AB;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT -29AC;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP -29AD;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP -29AE;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN -29AF;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN -29B0;AL # REVERSED EMPTY SET -29B1;AL # EMPTY SET WITH OVERBAR -29B2;AL # EMPTY SET WITH SMALL CIRCLE ABOVE -29B3;AL # EMPTY SET WITH RIGHT ARROW ABOVE -29B4;AL # EMPTY SET WITH LEFT ARROW ABOVE -29B5;AL # CIRCLE WITH HORIZONTAL BAR -29B6;AL # CIRCLED VERTICAL BAR -29B7;AL # CIRCLED PARALLEL -29B8;AL # CIRCLED REVERSE SOLIDUS -29B9;AL # CIRCLED PERPENDICULAR -29BA;AL # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR -29BB;AL # CIRCLE WITH SUPERIMPOSED X -29BC;AL # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN -29BD;AL # UP ARROW THROUGH CIRCLE -29BE;AL # CIRCLED WHITE BULLET -29BF;AL # CIRCLED BULLET -29C0;AL # CIRCLED LESS-THAN -29C1;AL # CIRCLED GREATER-THAN -29C2;AL # CIRCLE WITH SMALL CIRCLE TO THE RIGHT -29C3;AL # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT -29C4;AL # SQUARED RISING DIAGONAL SLASH -29C5;AL # SQUARED FALLING DIAGONAL SLASH -29C6;AL # SQUARED ASTERISK -29C7;AL # SQUARED SMALL CIRCLE -29C8;AL # SQUARED SQUARE -29C9;AL # TWO JOINED SQUARES -29CA;AL # TRIANGLE WITH DOT ABOVE -29CB;AL # TRIANGLE WITH UNDERBAR -29CC;AL # S IN TRIANGLE -29CD;AL # TRIANGLE WITH SERIFS AT BOTTOM -29CE;AL # RIGHT TRIANGLE ABOVE LEFT TRIANGLE -29CF;AL # LEFT TRIANGLE BESIDE VERTICAL BAR -29D0;AL # VERTICAL BAR BESIDE RIGHT TRIANGLE -29D1;AL # BOWTIE WITH LEFT HALF BLACK -29D2;AL # BOWTIE WITH RIGHT HALF BLACK -29D3;AL # BLACK BOWTIE -29D4;AL # TIMES WITH LEFT HALF BLACK -29D5;AL # TIMES WITH RIGHT HALF BLACK -29D6;AL # WHITE HOURGLASS -29D7;AL # BLACK HOURGLASS -29D8;OP # LEFT WIGGLY FENCE -29D9;CL # RIGHT WIGGLY FENCE -29DA;OP # LEFT DOUBLE WIGGLY FENCE -29DB;CL # RIGHT DOUBLE WIGGLY FENCE -29DC;AL # INCOMPLETE INFINITY -29DD;AL # TIE OVER INFINITY -29DE;AL # INFINITY NEGATED WITH VERTICAL BAR -29DF;AL # DOUBLE-ENDED MULTIMAP -29E0;AL # SQUARE WITH CONTOURED OUTLINE -29E1;AL # INCREASES AS -29E2;AL # SHUFFLE PRODUCT -29E3;AL # EQUALS SIGN AND SLANTED PARALLEL -29E4;AL # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE -29E5;AL # IDENTICAL TO AND SLANTED PARALLEL -29E6;AL # GLEICH STARK -29E7;AL # THERMODYNAMIC -29E8;AL # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK -29E9;AL # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK -29EA;AL # BLACK DIAMOND WITH DOWN ARROW -29EB;AL # BLACK LOZENGE -29EC;AL # WHITE CIRCLE WITH DOWN ARROW -29ED;AL # BLACK CIRCLE WITH DOWN ARROW -29EE;AL # ERROR-BARRED WHITE SQUARE -29EF;AL # ERROR-BARRED BLACK SQUARE -29F0;AL # ERROR-BARRED WHITE DIAMOND -29F1;AL # ERROR-BARRED BLACK DIAMOND -29F2;AL # ERROR-BARRED WHITE CIRCLE -29F3;AL # ERROR-BARRED BLACK CIRCLE -29F4;AL # RULE-DELAYED -29F5;AL # REVERSE SOLIDUS OPERATOR -29F6;AL # SOLIDUS WITH OVERBAR -29F7;AL # REVERSE SOLIDUS WITH HORIZONTAL STROKE -29F8;AL # BIG SOLIDUS -29F9;AL # BIG REVERSE SOLIDUS -29FA;AL # DOUBLE PLUS -29FB;AL # TRIPLE PLUS -29FC;OP # LEFT-POINTING CURVED ANGLE BRACKET -29FD;CL # RIGHT-POINTING CURVED ANGLE BRACKET -29FE;AL # TINY -29FF;AL # MINY -2A00;AL # N-ARY CIRCLED DOT OPERATOR -2A01;AL # N-ARY CIRCLED PLUS OPERATOR -2A02;AL # N-ARY CIRCLED TIMES OPERATOR -2A03;AL # N-ARY UNION OPERATOR WITH DOT -2A04;AL # N-ARY UNION OPERATOR WITH PLUS -2A05;AL # N-ARY SQUARE INTERSECTION OPERATOR -2A06;AL # N-ARY SQUARE UNION OPERATOR -2A07;AL # TWO LOGICAL AND OPERATOR -2A08;AL # TWO LOGICAL OR OPERATOR -2A09;AL # N-ARY TIMES OPERATOR -2A0A;AL # MODULO TWO SUM -2A0B;AL # SUMMATION WITH INTEGRAL -2A0C;AL # QUADRUPLE INTEGRAL OPERATOR -2A0D;AL # FINITE PART INTEGRAL -2A0E;AL # INTEGRAL WITH DOUBLE STROKE -2A0F;AL # INTEGRAL AVERAGE WITH SLASH -2A10;AL # CIRCULATION FUNCTION -2A11;AL # ANTICLOCKWISE INTEGRATION -2A12;AL # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE -2A13;AL # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE -2A14;AL # LINE INTEGRATION NOT INCLUDING THE POLE -2A15;AL # INTEGRAL AROUND A POINT OPERATOR -2A16;AL # QUATERNION INTEGRAL OPERATOR -2A17;AL # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK -2A18;AL # INTEGRAL WITH TIMES SIGN -2A19;AL # INTEGRAL WITH INTERSECTION -2A1A;AL # INTEGRAL WITH UNION -2A1B;AL # INTEGRAL WITH OVERBAR -2A1C;AL # INTEGRAL WITH UNDERBAR -2A1D;AL # JOIN -2A1E;AL # LARGE LEFT TRIANGLE OPERATOR -2A1F;AL # Z NOTATION SCHEMA COMPOSITION -2A20;AL # Z NOTATION SCHEMA PIPING -2A21;AL # Z NOTATION SCHEMA PROJECTION -2A22;AL # PLUS SIGN WITH SMALL CIRCLE ABOVE -2A23;AL # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE -2A24;AL # PLUS SIGN WITH TILDE ABOVE -2A25;AL # PLUS SIGN WITH DOT BELOW -2A26;AL # PLUS SIGN WITH TILDE BELOW -2A27;AL # PLUS SIGN WITH SUBSCRIPT TWO -2A28;AL # PLUS SIGN WITH BLACK TRIANGLE -2A29;AL # MINUS SIGN WITH COMMA ABOVE -2A2A;AL # MINUS SIGN WITH DOT BELOW -2A2B;AL # MINUS SIGN WITH FALLING DOTS -2A2C;AL # MINUS SIGN WITH RISING DOTS -2A2D;AL # PLUS SIGN IN LEFT HALF CIRCLE -2A2E;AL # PLUS SIGN IN RIGHT HALF CIRCLE -2A2F;AL # VECTOR OR CROSS PRODUCT -2A30;AL # MULTIPLICATION SIGN WITH DOT ABOVE -2A31;AL # MULTIPLICATION SIGN WITH UNDERBAR -2A32;AL # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED -2A33;AL # SMASH PRODUCT -2A34;AL # MULTIPLICATION SIGN IN LEFT HALF CIRCLE -2A35;AL # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE -2A36;AL # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT -2A37;AL # MULTIPLICATION SIGN IN DOUBLE CIRCLE -2A38;AL # CIRCLED DIVISION SIGN -2A39;AL # PLUS SIGN IN TRIANGLE -2A3A;AL # MINUS SIGN IN TRIANGLE -2A3B;AL # MULTIPLICATION SIGN IN TRIANGLE -2A3C;AL # INTERIOR PRODUCT -2A3D;AL # RIGHTHAND INTERIOR PRODUCT -2A3E;AL # Z NOTATION RELATIONAL COMPOSITION -2A3F;AL # AMALGAMATION OR COPRODUCT -2A40;AL # INTERSECTION WITH DOT -2A41;AL # UNION WITH MINUS SIGN -2A42;AL # UNION WITH OVERBAR -2A43;AL # INTERSECTION WITH OVERBAR -2A44;AL # INTERSECTION WITH LOGICAL AND -2A45;AL # UNION WITH LOGICAL OR -2A46;AL # UNION ABOVE INTERSECTION -2A47;AL # INTERSECTION ABOVE UNION -2A48;AL # UNION ABOVE BAR ABOVE INTERSECTION -2A49;AL # INTERSECTION ABOVE BAR ABOVE UNION -2A4A;AL # UNION BESIDE AND JOINED WITH UNION -2A4B;AL # INTERSECTION BESIDE AND JOINED WITH INTERSECTION -2A4C;AL # CLOSED UNION WITH SERIFS -2A4D;AL # CLOSED INTERSECTION WITH SERIFS -2A4E;AL # DOUBLE SQUARE INTERSECTION -2A4F;AL # DOUBLE SQUARE UNION -2A50;AL # CLOSED UNION WITH SERIFS AND SMASH PRODUCT -2A51;AL # LOGICAL AND WITH DOT ABOVE -2A52;AL # LOGICAL OR WITH DOT ABOVE -2A53;AL # DOUBLE LOGICAL AND -2A54;AL # DOUBLE LOGICAL OR -2A55;AL # TWO INTERSECTING LOGICAL AND -2A56;AL # TWO INTERSECTING LOGICAL OR -2A57;AL # SLOPING LARGE OR -2A58;AL # SLOPING LARGE AND -2A59;AL # LOGICAL OR OVERLAPPING LOGICAL AND -2A5A;AL # LOGICAL AND WITH MIDDLE STEM -2A5B;AL # LOGICAL OR WITH MIDDLE STEM -2A5C;AL # LOGICAL AND WITH HORIZONTAL DASH -2A5D;AL # LOGICAL OR WITH HORIZONTAL DASH -2A5E;AL # LOGICAL AND WITH DOUBLE OVERBAR -2A5F;AL # LOGICAL AND WITH UNDERBAR -2A60;AL # LOGICAL AND WITH DOUBLE UNDERBAR -2A61;AL # SMALL VEE WITH UNDERBAR -2A62;AL # LOGICAL OR WITH DOUBLE OVERBAR -2A63;AL # LOGICAL OR WITH DOUBLE UNDERBAR -2A64;AL # Z NOTATION DOMAIN ANTIRESTRICTION -2A65;AL # Z NOTATION RANGE ANTIRESTRICTION -2A66;AL # EQUALS SIGN WITH DOT BELOW -2A67;AL # IDENTICAL WITH DOT ABOVE -2A68;AL # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE -2A69;AL # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE -2A6A;AL # TILDE OPERATOR WITH DOT ABOVE -2A6B;AL # TILDE OPERATOR WITH RISING DOTS -2A6C;AL # SIMILAR MINUS SIMILAR -2A6D;AL # CONGRUENT WITH DOT ABOVE -2A6E;AL # EQUALS WITH ASTERISK -2A6F;AL # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT -2A70;AL # APPROXIMATELY EQUAL OR EQUAL TO -2A71;AL # EQUALS SIGN ABOVE PLUS SIGN -2A72;AL # PLUS SIGN ABOVE EQUALS SIGN -2A73;AL # EQUALS SIGN ABOVE TILDE OPERATOR -2A74;AL # DOUBLE COLON EQUAL -2A75;AL # TWO CONSECUTIVE EQUALS SIGNS -2A76;AL # THREE CONSECUTIVE EQUALS SIGNS -2A77;AL # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW -2A78;AL # EQUIVALENT WITH FOUR DOTS ABOVE -2A79;AL # LESS-THAN WITH CIRCLE INSIDE -2A7A;AL # GREATER-THAN WITH CIRCLE INSIDE -2A7B;AL # LESS-THAN WITH QUESTION MARK ABOVE -2A7C;AL # GREATER-THAN WITH QUESTION MARK ABOVE -2A7D;AL # LESS-THAN OR SLANTED EQUAL TO -2A7E;AL # GREATER-THAN OR SLANTED EQUAL TO -2A7F;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A80;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A81;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A82;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A83;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT -2A84;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT -2A85;AL # LESS-THAN OR APPROXIMATE -2A86;AL # GREATER-THAN OR APPROXIMATE -2A87;AL # LESS-THAN AND SINGLE-LINE NOT EQUAL TO -2A88;AL # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO -2A89;AL # LESS-THAN AND NOT APPROXIMATE -2A8A;AL # GREATER-THAN AND NOT APPROXIMATE -2A8B;AL # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN -2A8C;AL # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN -2A8D;AL # LESS-THAN ABOVE SIMILAR OR EQUAL -2A8E;AL # GREATER-THAN ABOVE SIMILAR OR EQUAL -2A8F;AL # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN -2A90;AL # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN -2A91;AL # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL -2A92;AL # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL -2A93;AL # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL -2A94;AL # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL -2A95;AL # SLANTED EQUAL TO OR LESS-THAN -2A96;AL # SLANTED EQUAL TO OR GREATER-THAN -2A97;AL # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE -2A98;AL # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE -2A99;AL # DOUBLE-LINE EQUAL TO OR LESS-THAN -2A9A;AL # DOUBLE-LINE EQUAL TO OR GREATER-THAN -2A9B;AL # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN -2A9C;AL # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN -2A9D;AL # SIMILAR OR LESS-THAN -2A9E;AL # SIMILAR OR GREATER-THAN -2A9F;AL # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN -2AA0;AL # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN -2AA1;AL # DOUBLE NESTED LESS-THAN -2AA2;AL # DOUBLE NESTED GREATER-THAN -2AA3;AL # DOUBLE NESTED LESS-THAN WITH UNDERBAR -2AA4;AL # GREATER-THAN OVERLAPPING LESS-THAN -2AA5;AL # GREATER-THAN BESIDE LESS-THAN -2AA6;AL # LESS-THAN CLOSED BY CURVE -2AA7;AL # GREATER-THAN CLOSED BY CURVE -2AA8;AL # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AA9;AL # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AAA;AL # SMALLER THAN -2AAB;AL # LARGER THAN -2AAC;AL # SMALLER THAN OR EQUAL TO -2AAD;AL # LARGER THAN OR EQUAL TO -2AAE;AL # EQUALS SIGN WITH BUMPY ABOVE -2AAF;AL # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN -2AB0;AL # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN -2AB1;AL # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO -2AB2;AL # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO -2AB3;AL # PRECEDES ABOVE EQUALS SIGN -2AB4;AL # SUCCEEDS ABOVE EQUALS SIGN -2AB5;AL # PRECEDES ABOVE NOT EQUAL TO -2AB6;AL # SUCCEEDS ABOVE NOT EQUAL TO -2AB7;AL # PRECEDES ABOVE ALMOST EQUAL TO -2AB8;AL # SUCCEEDS ABOVE ALMOST EQUAL TO -2AB9;AL # PRECEDES ABOVE NOT ALMOST EQUAL TO -2ABA;AL # SUCCEEDS ABOVE NOT ALMOST EQUAL TO -2ABB;AL # DOUBLE PRECEDES -2ABC;AL # DOUBLE SUCCEEDS -2ABD;AL # SUBSET WITH DOT -2ABE;AL # SUPERSET WITH DOT -2ABF;AL # SUBSET WITH PLUS SIGN BELOW -2AC0;AL # SUPERSET WITH PLUS SIGN BELOW -2AC1;AL # SUBSET WITH MULTIPLICATION SIGN BELOW -2AC2;AL # SUPERSET WITH MULTIPLICATION SIGN BELOW -2AC3;AL # SUBSET OF OR EQUAL TO WITH DOT ABOVE -2AC4;AL # SUPERSET OF OR EQUAL TO WITH DOT ABOVE -2AC5;AL # SUBSET OF ABOVE EQUALS SIGN -2AC6;AL # SUPERSET OF ABOVE EQUALS SIGN -2AC7;AL # SUBSET OF ABOVE TILDE OPERATOR -2AC8;AL # SUPERSET OF ABOVE TILDE OPERATOR -2AC9;AL # SUBSET OF ABOVE ALMOST EQUAL TO -2ACA;AL # SUPERSET OF ABOVE ALMOST EQUAL TO -2ACB;AL # SUBSET OF ABOVE NOT EQUAL TO -2ACC;AL # SUPERSET OF ABOVE NOT EQUAL TO -2ACD;AL # SQUARE LEFT OPEN BOX OPERATOR -2ACE;AL # SQUARE RIGHT OPEN BOX OPERATOR -2ACF;AL # CLOSED SUBSET -2AD0;AL # CLOSED SUPERSET -2AD1;AL # CLOSED SUBSET OR EQUAL TO -2AD2;AL # CLOSED SUPERSET OR EQUAL TO -2AD3;AL # SUBSET ABOVE SUPERSET -2AD4;AL # SUPERSET ABOVE SUBSET -2AD5;AL # SUBSET ABOVE SUBSET -2AD6;AL # SUPERSET ABOVE SUPERSET -2AD7;AL # SUPERSET BESIDE SUBSET -2AD8;AL # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET -2AD9;AL # ELEMENT OF OPENING DOWNWARDS -2ADA;AL # PITCHFORK WITH TEE TOP -2ADB;AL # TRANSVERSAL INTERSECTION -2ADC;AL # FORKING -2ADD;AL # NONFORKING -2ADE;AL # SHORT LEFT TACK -2ADF;AL # SHORT DOWN TACK -2AE0;AL # SHORT UP TACK -2AE1;AL # PERPENDICULAR WITH S -2AE2;AL # VERTICAL BAR TRIPLE RIGHT TURNSTILE -2AE3;AL # DOUBLE VERTICAL BAR LEFT TURNSTILE -2AE4;AL # VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE5;AL # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE6;AL # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL -2AE7;AL # SHORT DOWN TACK WITH OVERBAR -2AE8;AL # SHORT UP TACK WITH UNDERBAR -2AE9;AL # SHORT UP TACK ABOVE SHORT DOWN TACK -2AEA;AL # DOUBLE DOWN TACK -2AEB;AL # DOUBLE UP TACK -2AEC;AL # DOUBLE STROKE NOT SIGN -2AED;AL # REVERSED DOUBLE STROKE NOT SIGN -2AEE;AL # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH -2AEF;AL # VERTICAL LINE WITH CIRCLE ABOVE -2AF0;AL # VERTICAL LINE WITH CIRCLE BELOW -2AF1;AL # DOWN TACK WITH CIRCLE BELOW -2AF2;AL # PARALLEL WITH HORIZONTAL STROKE -2AF3;AL # PARALLEL WITH TILDE OPERATOR -2AF4;AL # TRIPLE VERTICAL BAR BINARY RELATION -2AF5;AL # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE -2AF6;AL # TRIPLE COLON OPERATOR -2AF7;AL # TRIPLE NESTED LESS-THAN -2AF8;AL # TRIPLE NESTED GREATER-THAN -2AF9;AL # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO -2AFA;AL # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO -2AFB;AL # TRIPLE SOLIDUS BINARY RELATION -2AFC;AL # LARGE TRIPLE VERTICAL BAR OPERATOR -2AFD;AL # DOUBLE SOLIDUS OPERATOR -2AFE;AL # WHITE VERTICAL BAR -2AFF;AL # N-ARY WHITE VERTICAL BAR -2B00;AL # NORTH EAST WHITE ARROW -2B01;AL # NORTH WEST WHITE ARROW -2B02;AL # SOUTH EAST WHITE ARROW -2B03;AL # SOUTH WEST WHITE ARROW -2B04;AL # LEFT RIGHT WHITE ARROW -2B05;AL # LEFTWARDS BLACK ARROW -2B06;AL # UPWARDS BLACK ARROW -2B07;AL # DOWNWARDS BLACK ARROW -2B08;AL # NORTH EAST BLACK ARROW -2B09;AL # NORTH WEST BLACK ARROW -2B0A;AL # SOUTH EAST BLACK ARROW -2B0B;AL # SOUTH WEST BLACK ARROW -2B0C;AL # LEFT RIGHT BLACK ARROW -2B0D;AL # UP DOWN BLACK ARROW -2B0E;AL # RIGHTWARDS ARROW WITH TIP DOWNWARDS -2B0F;AL # RIGHTWARDS ARROW WITH TIP UPWARDS -2B10;AL # LEFTWARDS ARROW WITH TIP DOWNWARDS -2B11;AL # LEFTWARDS ARROW WITH TIP UPWARDS -2B12;AL # SQUARE WITH TOP HALF BLACK -2B13;AL # SQUARE WITH BOTTOM HALF BLACK -2B14;AL # SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK -2B15;AL # SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK -2B16;AL # DIAMOND WITH LEFT HALF BLACK -2B17;AL # DIAMOND WITH RIGHT HALF BLACK -2B18;AL # DIAMOND WITH TOP HALF BLACK -2B19;AL # DIAMOND WITH BOTTOM HALF BLACK -2B1A;AL # DOTTED SQUARE -2B20;AL # WHITE PENTAGON -2B21;AL # WHITE HEXAGON -2B22;AL # BLACK HEXAGON -2B23;AL # HORIZONTAL BLACK HEXAGON -2C00;AL # GLAGOLITIC CAPITAL LETTER AZU -2C01;AL # GLAGOLITIC CAPITAL LETTER BUKY -2C02;AL # GLAGOLITIC CAPITAL LETTER VEDE -2C03;AL # GLAGOLITIC CAPITAL LETTER GLAGOLI -2C04;AL # GLAGOLITIC CAPITAL LETTER DOBRO -2C05;AL # GLAGOLITIC CAPITAL LETTER YESTU -2C06;AL # GLAGOLITIC CAPITAL LETTER ZHIVETE -2C07;AL # GLAGOLITIC CAPITAL LETTER DZELO -2C08;AL # GLAGOLITIC CAPITAL LETTER ZEMLJA -2C09;AL # GLAGOLITIC CAPITAL LETTER IZHE -2C0A;AL # GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C0B;AL # GLAGOLITIC CAPITAL LETTER I -2C0C;AL # GLAGOLITIC CAPITAL LETTER DJERVI -2C0D;AL # GLAGOLITIC CAPITAL LETTER KAKO -2C0E;AL # GLAGOLITIC CAPITAL LETTER LJUDIJE -2C0F;AL # GLAGOLITIC CAPITAL LETTER MYSLITE -2C10;AL # GLAGOLITIC CAPITAL LETTER NASHI -2C11;AL # GLAGOLITIC CAPITAL LETTER ONU -2C12;AL # GLAGOLITIC CAPITAL LETTER POKOJI -2C13;AL # GLAGOLITIC CAPITAL LETTER RITSI -2C14;AL # GLAGOLITIC CAPITAL LETTER SLOVO -2C15;AL # GLAGOLITIC CAPITAL LETTER TVRIDO -2C16;AL # GLAGOLITIC CAPITAL LETTER UKU -2C17;AL # GLAGOLITIC CAPITAL LETTER FRITU -2C18;AL # GLAGOLITIC CAPITAL LETTER HERU -2C19;AL # GLAGOLITIC CAPITAL LETTER OTU -2C1A;AL # GLAGOLITIC CAPITAL LETTER PE -2C1B;AL # GLAGOLITIC CAPITAL LETTER SHTA -2C1C;AL # GLAGOLITIC CAPITAL LETTER TSI -2C1D;AL # GLAGOLITIC CAPITAL LETTER CHRIVI -2C1E;AL # GLAGOLITIC CAPITAL LETTER SHA -2C1F;AL # GLAGOLITIC CAPITAL LETTER YERU -2C20;AL # GLAGOLITIC CAPITAL LETTER YERI -2C21;AL # GLAGOLITIC CAPITAL LETTER YATI -2C22;AL # GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C23;AL # GLAGOLITIC CAPITAL LETTER YU -2C24;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS -2C25;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C26;AL # GLAGOLITIC CAPITAL LETTER YO -2C27;AL # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C28;AL # GLAGOLITIC CAPITAL LETTER BIG YUS -2C29;AL # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C2A;AL # GLAGOLITIC CAPITAL LETTER FITA -2C2B;AL # GLAGOLITIC CAPITAL LETTER IZHITSA -2C2C;AL # GLAGOLITIC CAPITAL LETTER SHTAPIC -2C2D;AL # GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C2E;AL # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30;AL # GLAGOLITIC SMALL LETTER AZU -2C31;AL # GLAGOLITIC SMALL LETTER BUKY -2C32;AL # GLAGOLITIC SMALL LETTER VEDE -2C33;AL # GLAGOLITIC SMALL LETTER GLAGOLI -2C34;AL # GLAGOLITIC SMALL LETTER DOBRO -2C35;AL # GLAGOLITIC SMALL LETTER YESTU -2C36;AL # GLAGOLITIC SMALL LETTER ZHIVETE -2C37;AL # GLAGOLITIC SMALL LETTER DZELO -2C38;AL # GLAGOLITIC SMALL LETTER ZEMLJA -2C39;AL # GLAGOLITIC SMALL LETTER IZHE -2C3A;AL # GLAGOLITIC SMALL LETTER INITIAL IZHE -2C3B;AL # GLAGOLITIC SMALL LETTER I -2C3C;AL # GLAGOLITIC SMALL LETTER DJERVI -2C3D;AL # GLAGOLITIC SMALL LETTER KAKO -2C3E;AL # GLAGOLITIC SMALL LETTER LJUDIJE -2C3F;AL # GLAGOLITIC SMALL LETTER MYSLITE -2C40;AL # GLAGOLITIC SMALL LETTER NASHI -2C41;AL # GLAGOLITIC SMALL LETTER ONU -2C42;AL # GLAGOLITIC SMALL LETTER POKOJI -2C43;AL # GLAGOLITIC SMALL LETTER RITSI -2C44;AL # GLAGOLITIC SMALL LETTER SLOVO -2C45;AL # GLAGOLITIC SMALL LETTER TVRIDO -2C46;AL # GLAGOLITIC SMALL LETTER UKU -2C47;AL # GLAGOLITIC SMALL LETTER FRITU -2C48;AL # GLAGOLITIC SMALL LETTER HERU -2C49;AL # GLAGOLITIC SMALL LETTER OTU -2C4A;AL # GLAGOLITIC SMALL LETTER PE -2C4B;AL # GLAGOLITIC SMALL LETTER SHTA -2C4C;AL # GLAGOLITIC SMALL LETTER TSI -2C4D;AL # GLAGOLITIC SMALL LETTER CHRIVI -2C4E;AL # GLAGOLITIC SMALL LETTER SHA -2C4F;AL # GLAGOLITIC SMALL LETTER YERU -2C50;AL # GLAGOLITIC SMALL LETTER YERI -2C51;AL # GLAGOLITIC SMALL LETTER YATI -2C52;AL # GLAGOLITIC SMALL LETTER SPIDERY HA -2C53;AL # GLAGOLITIC SMALL LETTER YU -2C54;AL # GLAGOLITIC SMALL LETTER SMALL YUS -2C55;AL # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL -2C56;AL # GLAGOLITIC SMALL LETTER YO -2C57;AL # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS -2C58;AL # GLAGOLITIC SMALL LETTER BIG YUS -2C59;AL # GLAGOLITIC SMALL LETTER IOTATED BIG YUS -2C5A;AL # GLAGOLITIC SMALL LETTER FITA -2C5B;AL # GLAGOLITIC SMALL LETTER IZHITSA -2C5C;AL # GLAGOLITIC SMALL LETTER SHTAPIC -2C5D;AL # GLAGOLITIC SMALL LETTER TROKUTASTI A -2C5E;AL # GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60;AL # LATIN CAPITAL LETTER L WITH DOUBLE BAR -2C61;AL # LATIN SMALL LETTER L WITH DOUBLE BAR -2C62;AL # LATIN CAPITAL LETTER L WITH MIDDLE TILDE -2C63;AL # LATIN CAPITAL LETTER P WITH STROKE -2C64;AL # LATIN CAPITAL LETTER R WITH TAIL -2C65;AL # LATIN SMALL LETTER A WITH STROKE -2C66;AL # LATIN SMALL LETTER T WITH DIAGONAL STROKE -2C67;AL # LATIN CAPITAL LETTER H WITH DESCENDER -2C68;AL # LATIN SMALL LETTER H WITH DESCENDER -2C69;AL # LATIN CAPITAL LETTER K WITH DESCENDER -2C6A;AL # LATIN SMALL LETTER K WITH DESCENDER -2C6B;AL # LATIN CAPITAL LETTER Z WITH DESCENDER -2C6C;AL # LATIN SMALL LETTER Z WITH DESCENDER -2C74;AL # LATIN SMALL LETTER V WITH CURL -2C75;AL # LATIN CAPITAL LETTER HALF H -2C76;AL # LATIN SMALL LETTER HALF H -2C77;AL # LATIN SMALL LETTER TAILLESS PHI -2C80;AL # COPTIC CAPITAL LETTER ALFA -2C81;AL # COPTIC SMALL LETTER ALFA -2C82;AL # COPTIC CAPITAL LETTER VIDA -2C83;AL # COPTIC SMALL LETTER VIDA -2C84;AL # COPTIC CAPITAL LETTER GAMMA -2C85;AL # COPTIC SMALL LETTER GAMMA -2C86;AL # COPTIC CAPITAL LETTER DALDA -2C87;AL # COPTIC SMALL LETTER DALDA -2C88;AL # COPTIC CAPITAL LETTER EIE -2C89;AL # COPTIC SMALL LETTER EIE -2C8A;AL # COPTIC CAPITAL LETTER SOU -2C8B;AL # COPTIC SMALL LETTER SOU -2C8C;AL # COPTIC CAPITAL LETTER ZATA -2C8D;AL # COPTIC SMALL LETTER ZATA -2C8E;AL # COPTIC CAPITAL LETTER HATE -2C8F;AL # COPTIC SMALL LETTER HATE -2C90;AL # COPTIC CAPITAL LETTER THETHE -2C91;AL # COPTIC SMALL LETTER THETHE -2C92;AL # COPTIC CAPITAL LETTER IAUDA -2C93;AL # COPTIC SMALL LETTER IAUDA -2C94;AL # COPTIC CAPITAL LETTER KAPA -2C95;AL # COPTIC SMALL LETTER KAPA -2C96;AL # COPTIC CAPITAL LETTER LAULA -2C97;AL # COPTIC SMALL LETTER LAULA -2C98;AL # COPTIC CAPITAL LETTER MI -2C99;AL # COPTIC SMALL LETTER MI -2C9A;AL # COPTIC CAPITAL LETTER NI -2C9B;AL # COPTIC SMALL LETTER NI -2C9C;AL # COPTIC CAPITAL LETTER KSI -2C9D;AL # COPTIC SMALL LETTER KSI -2C9E;AL # COPTIC CAPITAL LETTER O -2C9F;AL # COPTIC SMALL LETTER O -2CA0;AL # COPTIC CAPITAL LETTER PI -2CA1;AL # COPTIC SMALL LETTER PI -2CA2;AL # COPTIC CAPITAL LETTER RO -2CA3;AL # COPTIC SMALL LETTER RO -2CA4;AL # COPTIC CAPITAL LETTER SIMA -2CA5;AL # COPTIC SMALL LETTER SIMA -2CA6;AL # COPTIC CAPITAL LETTER TAU -2CA7;AL # COPTIC SMALL LETTER TAU -2CA8;AL # COPTIC CAPITAL LETTER UA -2CA9;AL # COPTIC SMALL LETTER UA -2CAA;AL # COPTIC CAPITAL LETTER FI -2CAB;AL # COPTIC SMALL LETTER FI -2CAC;AL # COPTIC CAPITAL LETTER KHI -2CAD;AL # COPTIC SMALL LETTER KHI -2CAE;AL # COPTIC CAPITAL LETTER PSI -2CAF;AL # COPTIC SMALL LETTER PSI -2CB0;AL # COPTIC CAPITAL LETTER OOU -2CB1;AL # COPTIC SMALL LETTER OOU -2CB2;AL # COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB3;AL # COPTIC SMALL LETTER DIALECT-P ALEF -2CB4;AL # COPTIC CAPITAL LETTER OLD COPTIC AIN -2CB5;AL # COPTIC SMALL LETTER OLD COPTIC AIN -2CB6;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2CB7;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE -2CB8;AL # COPTIC CAPITAL LETTER DIALECT-P KAPA -2CB9;AL # COPTIC SMALL LETTER DIALECT-P KAPA -2CBA;AL # COPTIC CAPITAL LETTER DIALECT-P NI -2CBB;AL # COPTIC SMALL LETTER DIALECT-P NI -2CBC;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2CBD;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC NI -2CBE;AL # COPTIC CAPITAL LETTER OLD COPTIC OOU -2CBF;AL # COPTIC SMALL LETTER OLD COPTIC OOU -2CC0;AL # COPTIC CAPITAL LETTER SAMPI -2CC1;AL # COPTIC SMALL LETTER SAMPI -2CC2;AL # COPTIC CAPITAL LETTER CROSSED SHEI -2CC3;AL # COPTIC SMALL LETTER CROSSED SHEI -2CC4;AL # COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC5;AL # COPTIC SMALL LETTER OLD COPTIC SHEI -2CC6;AL # COPTIC CAPITAL LETTER OLD COPTIC ESH -2CC7;AL # COPTIC SMALL LETTER OLD COPTIC ESH -2CC8;AL # COPTIC CAPITAL LETTER AKHMIMIC KHEI -2CC9;AL # COPTIC SMALL LETTER AKHMIMIC KHEI -2CCA;AL # COPTIC CAPITAL LETTER DIALECT-P HORI -2CCB;AL # COPTIC SMALL LETTER DIALECT-P HORI -2CCC;AL # COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCD;AL # COPTIC SMALL LETTER OLD COPTIC HORI -2CCE;AL # COPTIC CAPITAL LETTER OLD COPTIC HA -2CCF;AL # COPTIC SMALL LETTER OLD COPTIC HA -2CD0;AL # COPTIC CAPITAL LETTER L-SHAPED HA -2CD1;AL # COPTIC SMALL LETTER L-SHAPED HA -2CD2;AL # COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD3;AL # COPTIC SMALL LETTER OLD COPTIC HEI -2CD4;AL # COPTIC CAPITAL LETTER OLD COPTIC HAT -2CD5;AL # COPTIC SMALL LETTER OLD COPTIC HAT -2CD6;AL # COPTIC CAPITAL LETTER OLD COPTIC GANGIA -2CD7;AL # COPTIC SMALL LETTER OLD COPTIC GANGIA -2CD8;AL # COPTIC CAPITAL LETTER OLD COPTIC DJA -2CD9;AL # COPTIC SMALL LETTER OLD COPTIC DJA -2CDA;AL # COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDB;AL # COPTIC SMALL LETTER OLD COPTIC SHIMA -2CDC;AL # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -2CDD;AL # COPTIC SMALL LETTER OLD NUBIAN SHIMA -2CDE;AL # COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CDF;AL # COPTIC SMALL LETTER OLD NUBIAN NGI -2CE0;AL # COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE1;AL # COPTIC SMALL LETTER OLD NUBIAN NYI -2CE2;AL # COPTIC CAPITAL LETTER OLD NUBIAN WAU -2CE3;AL # COPTIC SMALL LETTER OLD NUBIAN WAU -2CE4;AL # COPTIC SYMBOL KAI -2CE5;AL # COPTIC SYMBOL MI RO -2CE6;AL # COPTIC SYMBOL PI RO -2CE7;AL # COPTIC SYMBOL STAUROS -2CE8;AL # COPTIC SYMBOL TAU RO -2CE9;AL # COPTIC SYMBOL KHI RO -2CEA;AL # COPTIC SYMBOL SHIMA SIMA -2CF9;BA # COPTIC OLD NUBIAN FULL STOP -2CFA;BA # COPTIC OLD NUBIAN DIRECT QUESTION MARK -2CFB;BA # COPTIC OLD NUBIAN INDIRECT QUESTION MARK -2CFC;BA # COPTIC OLD NUBIAN VERSE DIVIDER -2CFD;AL # COPTIC FRACTION ONE HALF -2CFE;BA # COPTIC FULL STOP -2CFF;BA # COPTIC MORPHOLOGICAL DIVIDER -2D00;AL # GEORGIAN SMALL LETTER AN -2D01;AL # GEORGIAN SMALL LETTER BAN -2D02;AL # GEORGIAN SMALL LETTER GAN -2D03;AL # GEORGIAN SMALL LETTER DON -2D04;AL # GEORGIAN SMALL LETTER EN -2D05;AL # GEORGIAN SMALL LETTER VIN -2D06;AL # GEORGIAN SMALL LETTER ZEN -2D07;AL # GEORGIAN SMALL LETTER TAN -2D08;AL # GEORGIAN SMALL LETTER IN -2D09;AL # GEORGIAN SMALL LETTER KAN -2D0A;AL # GEORGIAN SMALL LETTER LAS -2D0B;AL # GEORGIAN SMALL LETTER MAN -2D0C;AL # GEORGIAN SMALL LETTER NAR -2D0D;AL # GEORGIAN SMALL LETTER ON -2D0E;AL # GEORGIAN SMALL LETTER PAR -2D0F;AL # GEORGIAN SMALL LETTER ZHAR -2D10;AL # GEORGIAN SMALL LETTER RAE -2D11;AL # GEORGIAN SMALL LETTER SAN -2D12;AL # GEORGIAN SMALL LETTER TAR -2D13;AL # GEORGIAN SMALL LETTER UN -2D14;AL # GEORGIAN SMALL LETTER PHAR -2D15;AL # GEORGIAN SMALL LETTER KHAR -2D16;AL # GEORGIAN SMALL LETTER GHAN -2D17;AL # GEORGIAN SMALL LETTER QAR -2D18;AL # GEORGIAN SMALL LETTER SHIN -2D19;AL # GEORGIAN SMALL LETTER CHIN -2D1A;AL # GEORGIAN SMALL LETTER CAN -2D1B;AL # GEORGIAN SMALL LETTER JIL -2D1C;AL # GEORGIAN SMALL LETTER CIL -2D1D;AL # GEORGIAN SMALL LETTER CHAR -2D1E;AL # GEORGIAN SMALL LETTER XAN -2D1F;AL # GEORGIAN SMALL LETTER JHAN -2D20;AL # GEORGIAN SMALL LETTER HAE -2D21;AL # GEORGIAN SMALL LETTER HE -2D22;AL # GEORGIAN SMALL LETTER HIE -2D23;AL # GEORGIAN SMALL LETTER WE -2D24;AL # GEORGIAN SMALL LETTER HAR -2D25;AL # GEORGIAN SMALL LETTER HOE -2D30;AL # TIFINAGH LETTER YA -2D31;AL # TIFINAGH LETTER YAB -2D32;AL # TIFINAGH LETTER YABH -2D33;AL # TIFINAGH LETTER YAG -2D34;AL # TIFINAGH LETTER YAGHH -2D35;AL # TIFINAGH LETTER BERBER ACADEMY YAJ -2D36;AL # TIFINAGH LETTER YAJ -2D37;AL # TIFINAGH LETTER YAD -2D38;AL # TIFINAGH LETTER YADH -2D39;AL # TIFINAGH LETTER YADD -2D3A;AL # TIFINAGH LETTER YADDH -2D3B;AL # TIFINAGH LETTER YEY -2D3C;AL # TIFINAGH LETTER YAF -2D3D;AL # TIFINAGH LETTER YAK -2D3E;AL # TIFINAGH LETTER TUAREG YAK -2D3F;AL # TIFINAGH LETTER YAKHH -2D40;AL # TIFINAGH LETTER YAH -2D41;AL # TIFINAGH LETTER BERBER ACADEMY YAH -2D42;AL # TIFINAGH LETTER TUAREG YAH -2D43;AL # TIFINAGH LETTER YAHH -2D44;AL # TIFINAGH LETTER YAA -2D45;AL # TIFINAGH LETTER YAKH -2D46;AL # TIFINAGH LETTER TUAREG YAKH -2D47;AL # TIFINAGH LETTER YAQ -2D48;AL # TIFINAGH LETTER TUAREG YAQ -2D49;AL # TIFINAGH LETTER YI -2D4A;AL # TIFINAGH LETTER YAZH -2D4B;AL # TIFINAGH LETTER AHAGGAR YAZH -2D4C;AL # TIFINAGH LETTER TUAREG YAZH -2D4D;AL # TIFINAGH LETTER YAL -2D4E;AL # TIFINAGH LETTER YAM -2D4F;AL # TIFINAGH LETTER YAN -2D50;AL # TIFINAGH LETTER TUAREG YAGN -2D51;AL # TIFINAGH LETTER TUAREG YANG -2D52;AL # TIFINAGH LETTER YAP -2D53;AL # TIFINAGH LETTER YU -2D54;AL # TIFINAGH LETTER YAR -2D55;AL # TIFINAGH LETTER YARR -2D56;AL # TIFINAGH LETTER YAGH -2D57;AL # TIFINAGH LETTER TUAREG YAGH -2D58;AL # TIFINAGH LETTER AYER YAGH -2D59;AL # TIFINAGH LETTER YAS -2D5A;AL # TIFINAGH LETTER YASS -2D5B;AL # TIFINAGH LETTER YASH -2D5C;AL # TIFINAGH LETTER YAT -2D5D;AL # TIFINAGH LETTER YATH -2D5E;AL # TIFINAGH LETTER YACH -2D5F;AL # TIFINAGH LETTER YATT -2D60;AL # TIFINAGH LETTER YAV -2D61;AL # TIFINAGH LETTER YAW -2D62;AL # TIFINAGH LETTER YAY -2D63;AL # TIFINAGH LETTER YAZ -2D64;AL # TIFINAGH LETTER TAWELLEMET YAZ -2D65;AL # TIFINAGH LETTER YAZZ -2D6F;AL # TIFINAGH MODIFIER LETTER LABIALIZATION MARK -2D80;AL # ETHIOPIC SYLLABLE LOA -2D81;AL # ETHIOPIC SYLLABLE MOA -2D82;AL # ETHIOPIC SYLLABLE ROA -2D83;AL # ETHIOPIC SYLLABLE SOA -2D84;AL # ETHIOPIC SYLLABLE SHOA -2D85;AL # ETHIOPIC SYLLABLE BOA -2D86;AL # ETHIOPIC SYLLABLE TOA -2D87;AL # ETHIOPIC SYLLABLE COA -2D88;AL # ETHIOPIC SYLLABLE NOA -2D89;AL # ETHIOPIC SYLLABLE NYOA -2D8A;AL # ETHIOPIC SYLLABLE GLOTTAL OA -2D8B;AL # ETHIOPIC SYLLABLE ZOA -2D8C;AL # ETHIOPIC SYLLABLE DOA -2D8D;AL # ETHIOPIC SYLLABLE DDOA -2D8E;AL # ETHIOPIC SYLLABLE JOA -2D8F;AL # ETHIOPIC SYLLABLE THOA -2D90;AL # ETHIOPIC SYLLABLE CHOA -2D91;AL # ETHIOPIC SYLLABLE PHOA -2D92;AL # ETHIOPIC SYLLABLE POA -2D93;AL # ETHIOPIC SYLLABLE GGWA -2D94;AL # ETHIOPIC SYLLABLE GGWI -2D95;AL # ETHIOPIC SYLLABLE GGWEE -2D96;AL # ETHIOPIC SYLLABLE GGWE -2DA0;AL # ETHIOPIC SYLLABLE SSA -2DA1;AL # ETHIOPIC SYLLABLE SSU -2DA2;AL # ETHIOPIC SYLLABLE SSI -2DA3;AL # ETHIOPIC SYLLABLE SSAA -2DA4;AL # ETHIOPIC SYLLABLE SSEE -2DA5;AL # ETHIOPIC SYLLABLE SSE -2DA6;AL # ETHIOPIC SYLLABLE SSO -2DA8;AL # ETHIOPIC SYLLABLE CCA -2DA9;AL # ETHIOPIC SYLLABLE CCU -2DAA;AL # ETHIOPIC SYLLABLE CCI -2DAB;AL # ETHIOPIC SYLLABLE CCAA -2DAC;AL # ETHIOPIC SYLLABLE CCEE -2DAD;AL # ETHIOPIC SYLLABLE CCE -2DAE;AL # ETHIOPIC SYLLABLE CCO -2DB0;AL # ETHIOPIC SYLLABLE ZZA -2DB1;AL # ETHIOPIC SYLLABLE ZZU -2DB2;AL # ETHIOPIC SYLLABLE ZZI -2DB3;AL # ETHIOPIC SYLLABLE ZZAA -2DB4;AL # ETHIOPIC SYLLABLE ZZEE -2DB5;AL # ETHIOPIC SYLLABLE ZZE -2DB6;AL # ETHIOPIC SYLLABLE ZZO -2DB8;AL # ETHIOPIC SYLLABLE CCHA -2DB9;AL # ETHIOPIC SYLLABLE CCHU -2DBA;AL # ETHIOPIC SYLLABLE CCHI -2DBB;AL # ETHIOPIC SYLLABLE CCHAA -2DBC;AL # ETHIOPIC SYLLABLE CCHEE -2DBD;AL # ETHIOPIC SYLLABLE CCHE -2DBE;AL # ETHIOPIC SYLLABLE CCHO -2DC0;AL # ETHIOPIC SYLLABLE QYA -2DC1;AL # ETHIOPIC SYLLABLE QYU -2DC2;AL # ETHIOPIC SYLLABLE QYI -2DC3;AL # ETHIOPIC SYLLABLE QYAA -2DC4;AL # ETHIOPIC SYLLABLE QYEE -2DC5;AL # ETHIOPIC SYLLABLE QYE -2DC6;AL # ETHIOPIC SYLLABLE QYO -2DC8;AL # ETHIOPIC SYLLABLE KYA -2DC9;AL # ETHIOPIC SYLLABLE KYU -2DCA;AL # ETHIOPIC SYLLABLE KYI -2DCB;AL # ETHIOPIC SYLLABLE KYAA -2DCC;AL # ETHIOPIC SYLLABLE KYEE -2DCD;AL # ETHIOPIC SYLLABLE KYE -2DCE;AL # ETHIOPIC SYLLABLE KYO -2DD0;AL # ETHIOPIC SYLLABLE XYA -2DD1;AL # ETHIOPIC SYLLABLE XYU -2DD2;AL # ETHIOPIC SYLLABLE XYI -2DD3;AL # ETHIOPIC SYLLABLE XYAA -2DD4;AL # ETHIOPIC SYLLABLE XYEE -2DD5;AL # ETHIOPIC SYLLABLE XYE -2DD6;AL # ETHIOPIC SYLLABLE XYO -2DD8;AL # ETHIOPIC SYLLABLE GYA -2DD9;AL # ETHIOPIC SYLLABLE GYU -2DDA;AL # ETHIOPIC SYLLABLE GYI -2DDB;AL # ETHIOPIC SYLLABLE GYAA -2DDC;AL # ETHIOPIC SYLLABLE GYEE -2DDD;AL # ETHIOPIC SYLLABLE GYE -2DDE;AL # ETHIOPIC SYLLABLE GYO -2E00;QU # RIGHT ANGLE SUBSTITUTION MARKER -2E01;QU # RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02;QU # LEFT SUBSTITUTION BRACKET -2E03;QU # RIGHT SUBSTITUTION BRACKET -2E04;QU # LEFT DOTTED SUBSTITUTION BRACKET -2E05;QU # RIGHT DOTTED SUBSTITUTION BRACKET -2E06;QU # RAISED INTERPOLATION MARKER -2E07;QU # RAISED DOTTED INTERPOLATION MARKER -2E08;QU # DOTTED TRANSPOSITION MARKER -2E09;QU # LEFT TRANSPOSITION BRACKET -2E0A;QU # RIGHT TRANSPOSITION BRACKET -2E0B;QU # RAISED SQUARE -2E0C;QU # LEFT RAISED OMISSION BRACKET -2E0D;QU # RIGHT RAISED OMISSION BRACKET -2E0E;BA # EDITORIAL CORONIS -2E0F;BA # PARAGRAPHOS -2E10;BA # FORKED PARAGRAPHOS -2E11;BA # REVERSED FORKED PARAGRAPHOS -2E12;BA # HYPODIASTOLE -2E13;BA # DOTTED OBELOS -2E14;BA # DOWNWARDS ANCORA -2E15;BA # UPWARDS ANCORA -2E16;AL # DOTTED RIGHT-POINTING ANGLE -2E17;BA # DOUBLE OBLIQUE HYPHEN -2E1C;QU # LEFT LOW PARAPHRASE BRACKET -2E1D;QU # RIGHT LOW PARAPHRASE BRACKET -2E80;ID # CJK RADICAL REPEAT -2E81;ID # CJK RADICAL CLIFF -2E82;ID # CJK RADICAL SECOND ONE -2E83;ID # CJK RADICAL SECOND TWO -2E84;ID # CJK RADICAL SECOND THREE -2E85;ID # CJK RADICAL PERSON -2E86;ID # CJK RADICAL BOX -2E87;ID # CJK RADICAL TABLE -2E88;ID # CJK RADICAL KNIFE ONE -2E89;ID # CJK RADICAL KNIFE TWO -2E8A;ID # CJK RADICAL DIVINATION -2E8B;ID # CJK RADICAL SEAL -2E8C;ID # CJK RADICAL SMALL ONE -2E8D;ID # CJK RADICAL SMALL TWO -2E8E;ID # CJK RADICAL LAME ONE -2E8F;ID # CJK RADICAL LAME TWO -2E90;ID # CJK RADICAL LAME THREE -2E91;ID # CJK RADICAL LAME FOUR -2E92;ID # CJK RADICAL SNAKE -2E93;ID # CJK RADICAL THREAD -2E94;ID # CJK RADICAL SNOUT ONE -2E95;ID # CJK RADICAL SNOUT TWO -2E96;ID # CJK RADICAL HEART ONE -2E97;ID # CJK RADICAL HEART TWO -2E98;ID # CJK RADICAL HAND -2E99;ID # CJK RADICAL RAP -2E9B;ID # CJK RADICAL CHOKE -2E9C;ID # CJK RADICAL SUN -2E9D;ID # CJK RADICAL MOON -2E9E;ID # CJK RADICAL DEATH -2E9F;ID # CJK RADICAL MOTHER -2EA0;ID # CJK RADICAL CIVILIAN -2EA1;ID # CJK RADICAL WATER ONE -2EA2;ID # CJK RADICAL WATER TWO -2EA3;ID # CJK RADICAL FIRE -2EA4;ID # CJK RADICAL PAW ONE -2EA5;ID # CJK RADICAL PAW TWO -2EA6;ID # CJK RADICAL SIMPLIFIED HALF TREE TRUNK -2EA7;ID # CJK RADICAL COW -2EA8;ID # CJK RADICAL DOG -2EA9;ID # CJK RADICAL JADE -2EAA;ID # CJK RADICAL BOLT OF CLOTH -2EAB;ID # CJK RADICAL EYE -2EAC;ID # CJK RADICAL SPIRIT ONE -2EAD;ID # CJK RADICAL SPIRIT TWO -2EAE;ID # CJK RADICAL BAMBOO -2EAF;ID # CJK RADICAL SILK -2EB0;ID # CJK RADICAL C-SIMPLIFIED SILK -2EB1;ID # CJK RADICAL NET ONE -2EB2;ID # CJK RADICAL NET TWO -2EB3;ID # CJK RADICAL NET THREE -2EB4;ID # CJK RADICAL NET FOUR -2EB5;ID # CJK RADICAL MESH -2EB6;ID # CJK RADICAL SHEEP -2EB7;ID # CJK RADICAL RAM -2EB8;ID # CJK RADICAL EWE -2EB9;ID # CJK RADICAL OLD -2EBA;ID # CJK RADICAL BRUSH ONE -2EBB;ID # CJK RADICAL BRUSH TWO -2EBC;ID # CJK RADICAL MEAT -2EBD;ID # CJK RADICAL MORTAR -2EBE;ID # CJK RADICAL GRASS ONE -2EBF;ID # CJK RADICAL GRASS TWO -2EC0;ID # CJK RADICAL GRASS THREE -2EC1;ID # CJK RADICAL TIGER -2EC2;ID # CJK RADICAL CLOTHES -2EC3;ID # CJK RADICAL WEST ONE -2EC4;ID # CJK RADICAL WEST TWO -2EC5;ID # CJK RADICAL C-SIMPLIFIED SEE -2EC6;ID # CJK RADICAL SIMPLIFIED HORN -2EC7;ID # CJK RADICAL HORN -2EC8;ID # CJK RADICAL C-SIMPLIFIED SPEECH -2EC9;ID # CJK RADICAL C-SIMPLIFIED SHELL -2ECA;ID # CJK RADICAL FOOT -2ECB;ID # CJK RADICAL C-SIMPLIFIED CART -2ECC;ID # CJK RADICAL SIMPLIFIED WALK -2ECD;ID # CJK RADICAL WALK ONE -2ECE;ID # CJK RADICAL WALK TWO -2ECF;ID # CJK RADICAL CITY -2ED0;ID # CJK RADICAL C-SIMPLIFIED GOLD -2ED1;ID # CJK RADICAL LONG ONE -2ED2;ID # CJK RADICAL LONG TWO -2ED3;ID # CJK RADICAL C-SIMPLIFIED LONG -2ED4;ID # CJK RADICAL C-SIMPLIFIED GATE -2ED5;ID # CJK RADICAL MOUND ONE -2ED6;ID # CJK RADICAL MOUND TWO -2ED7;ID # CJK RADICAL RAIN -2ED8;ID # CJK RADICAL BLUE -2ED9;ID # CJK RADICAL C-SIMPLIFIED TANNED LEATHER -2EDA;ID # CJK RADICAL C-SIMPLIFIED LEAF -2EDB;ID # CJK RADICAL C-SIMPLIFIED WIND -2EDC;ID # CJK RADICAL C-SIMPLIFIED FLY -2EDD;ID # CJK RADICAL EAT ONE -2EDE;ID # CJK RADICAL EAT TWO -2EDF;ID # CJK RADICAL EAT THREE -2EE0;ID # CJK RADICAL C-SIMPLIFIED EAT -2EE1;ID # CJK RADICAL HEAD -2EE2;ID # CJK RADICAL C-SIMPLIFIED HORSE -2EE3;ID # CJK RADICAL BONE -2EE4;ID # CJK RADICAL GHOST -2EE5;ID # CJK RADICAL C-SIMPLIFIED FISH -2EE6;ID # CJK RADICAL C-SIMPLIFIED BIRD -2EE7;ID # CJK RADICAL C-SIMPLIFIED SALT -2EE8;ID # CJK RADICAL SIMPLIFIED WHEAT -2EE9;ID # CJK RADICAL SIMPLIFIED YELLOW -2EEA;ID # CJK RADICAL C-SIMPLIFIED FROG -2EEB;ID # CJK RADICAL J-SIMPLIFIED EVEN -2EEC;ID # CJK RADICAL C-SIMPLIFIED EVEN -2EED;ID # CJK RADICAL J-SIMPLIFIED TOOTH -2EEE;ID # CJK RADICAL C-SIMPLIFIED TOOTH -2EEF;ID # CJK RADICAL J-SIMPLIFIED DRAGON -2EF0;ID # CJK RADICAL C-SIMPLIFIED DRAGON -2EF1;ID # CJK RADICAL TURTLE -2EF2;ID # CJK RADICAL J-SIMPLIFIED TURTLE -2EF3;ID # CJK RADICAL C-SIMPLIFIED TURTLE -2F00;ID # KANGXI RADICAL ONE -2F01;ID # KANGXI RADICAL LINE -2F02;ID # KANGXI RADICAL DOT -2F03;ID # KANGXI RADICAL SLASH -2F04;ID # KANGXI RADICAL SECOND -2F05;ID # KANGXI RADICAL HOOK -2F06;ID # KANGXI RADICAL TWO -2F07;ID # KANGXI RADICAL LID -2F08;ID # KANGXI RADICAL MAN -2F09;ID # KANGXI RADICAL LEGS -2F0A;ID # KANGXI RADICAL ENTER -2F0B;ID # KANGXI RADICAL EIGHT -2F0C;ID # KANGXI RADICAL DOWN BOX -2F0D;ID # KANGXI RADICAL COVER -2F0E;ID # KANGXI RADICAL ICE -2F0F;ID # KANGXI RADICAL TABLE -2F10;ID # KANGXI RADICAL OPEN BOX -2F11;ID # KANGXI RADICAL KNIFE -2F12;ID # KANGXI RADICAL POWER -2F13;ID # KANGXI RADICAL WRAP -2F14;ID # KANGXI RADICAL SPOON -2F15;ID # KANGXI RADICAL RIGHT OPEN BOX -2F16;ID # KANGXI RADICAL HIDING ENCLOSURE -2F17;ID # KANGXI RADICAL TEN -2F18;ID # KANGXI RADICAL DIVINATION -2F19;ID # KANGXI RADICAL SEAL -2F1A;ID # KANGXI RADICAL CLIFF -2F1B;ID # KANGXI RADICAL PRIVATE -2F1C;ID # KANGXI RADICAL AGAIN -2F1D;ID # KANGXI RADICAL MOUTH -2F1E;ID # KANGXI RADICAL ENCLOSURE -2F1F;ID # KANGXI RADICAL EARTH -2F20;ID # KANGXI RADICAL SCHOLAR -2F21;ID # KANGXI RADICAL GO -2F22;ID # KANGXI RADICAL GO SLOWLY -2F23;ID # KANGXI RADICAL EVENING -2F24;ID # KANGXI RADICAL BIG -2F25;ID # KANGXI RADICAL WOMAN -2F26;ID # KANGXI RADICAL CHILD -2F27;ID # KANGXI RADICAL ROOF -2F28;ID # KANGXI RADICAL INCH -2F29;ID # KANGXI RADICAL SMALL -2F2A;ID # KANGXI RADICAL LAME -2F2B;ID # KANGXI RADICAL CORPSE -2F2C;ID # KANGXI RADICAL SPROUT -2F2D;ID # KANGXI RADICAL MOUNTAIN -2F2E;ID # KANGXI RADICAL RIVER -2F2F;ID # KANGXI RADICAL WORK -2F30;ID # KANGXI RADICAL ONESELF -2F31;ID # KANGXI RADICAL TURBAN -2F32;ID # KANGXI RADICAL DRY -2F33;ID # KANGXI RADICAL SHORT THREAD -2F34;ID # KANGXI RADICAL DOTTED CLIFF -2F35;ID # KANGXI RADICAL LONG STRIDE -2F36;ID # KANGXI RADICAL TWO HANDS -2F37;ID # KANGXI RADICAL SHOOT -2F38;ID # KANGXI RADICAL BOW -2F39;ID # KANGXI RADICAL SNOUT -2F3A;ID # KANGXI RADICAL BRISTLE -2F3B;ID # KANGXI RADICAL STEP -2F3C;ID # KANGXI RADICAL HEART -2F3D;ID # KANGXI RADICAL HALBERD -2F3E;ID # KANGXI RADICAL DOOR -2F3F;ID # KANGXI RADICAL HAND -2F40;ID # KANGXI RADICAL BRANCH -2F41;ID # KANGXI RADICAL RAP -2F42;ID # KANGXI RADICAL SCRIPT -2F43;ID # KANGXI RADICAL DIPPER -2F44;ID # KANGXI RADICAL AXE -2F45;ID # KANGXI RADICAL SQUARE -2F46;ID # KANGXI RADICAL NOT -2F47;ID # KANGXI RADICAL SUN -2F48;ID # KANGXI RADICAL SAY -2F49;ID # KANGXI RADICAL MOON -2F4A;ID # KANGXI RADICAL TREE -2F4B;ID # KANGXI RADICAL LACK -2F4C;ID # KANGXI RADICAL STOP -2F4D;ID # KANGXI RADICAL DEATH -2F4E;ID # KANGXI RADICAL WEAPON -2F4F;ID # KANGXI RADICAL DO NOT -2F50;ID # KANGXI RADICAL COMPARE -2F51;ID # KANGXI RADICAL FUR -2F52;ID # KANGXI RADICAL CLAN -2F53;ID # KANGXI RADICAL STEAM -2F54;ID # KANGXI RADICAL WATER -2F55;ID # KANGXI RADICAL FIRE -2F56;ID # KANGXI RADICAL CLAW -2F57;ID # KANGXI RADICAL FATHER -2F58;ID # KANGXI RADICAL DOUBLE X -2F59;ID # KANGXI RADICAL HALF TREE TRUNK -2F5A;ID # KANGXI RADICAL SLICE -2F5B;ID # KANGXI RADICAL FANG -2F5C;ID # KANGXI RADICAL COW -2F5D;ID # KANGXI RADICAL DOG -2F5E;ID # KANGXI RADICAL PROFOUND -2F5F;ID # KANGXI RADICAL JADE -2F60;ID # KANGXI RADICAL MELON -2F61;ID # KANGXI RADICAL TILE -2F62;ID # KANGXI RADICAL SWEET -2F63;ID # KANGXI RADICAL LIFE -2F64;ID # KANGXI RADICAL USE -2F65;ID # KANGXI RADICAL FIELD -2F66;ID # KANGXI RADICAL BOLT OF CLOTH -2F67;ID # KANGXI RADICAL SICKNESS -2F68;ID # KANGXI RADICAL DOTTED TENT -2F69;ID # KANGXI RADICAL WHITE -2F6A;ID # KANGXI RADICAL SKIN -2F6B;ID # KANGXI RADICAL DISH -2F6C;ID # KANGXI RADICAL EYE -2F6D;ID # KANGXI RADICAL SPEAR -2F6E;ID # KANGXI RADICAL ARROW -2F6F;ID # KANGXI RADICAL STONE -2F70;ID # KANGXI RADICAL SPIRIT -2F71;ID # KANGXI RADICAL TRACK -2F72;ID # KANGXI RADICAL GRAIN -2F73;ID # KANGXI RADICAL CAVE -2F74;ID # KANGXI RADICAL STAND -2F75;ID # KANGXI RADICAL BAMBOO -2F76;ID # KANGXI RADICAL RICE -2F77;ID # KANGXI RADICAL SILK -2F78;ID # KANGXI RADICAL JAR -2F79;ID # KANGXI RADICAL NET -2F7A;ID # KANGXI RADICAL SHEEP -2F7B;ID # KANGXI RADICAL FEATHER -2F7C;ID # KANGXI RADICAL OLD -2F7D;ID # KANGXI RADICAL AND -2F7E;ID # KANGXI RADICAL PLOW -2F7F;ID # KANGXI RADICAL EAR -2F80;ID # KANGXI RADICAL BRUSH -2F81;ID # KANGXI RADICAL MEAT -2F82;ID # KANGXI RADICAL MINISTER -2F83;ID # KANGXI RADICAL SELF -2F84;ID # KANGXI RADICAL ARRIVE -2F85;ID # KANGXI RADICAL MORTAR -2F86;ID # KANGXI RADICAL TONGUE -2F87;ID # KANGXI RADICAL OPPOSE -2F88;ID # KANGXI RADICAL BOAT -2F89;ID # KANGXI RADICAL STOPPING -2F8A;ID # KANGXI RADICAL COLOR -2F8B;ID # KANGXI RADICAL GRASS -2F8C;ID # KANGXI RADICAL TIGER -2F8D;ID # KANGXI RADICAL INSECT -2F8E;ID # KANGXI RADICAL BLOOD -2F8F;ID # KANGXI RADICAL WALK ENCLOSURE -2F90;ID # KANGXI RADICAL CLOTHES -2F91;ID # KANGXI RADICAL WEST -2F92;ID # KANGXI RADICAL SEE -2F93;ID # KANGXI RADICAL HORN -2F94;ID # KANGXI RADICAL SPEECH -2F95;ID # KANGXI RADICAL VALLEY -2F96;ID # KANGXI RADICAL BEAN -2F97;ID # KANGXI RADICAL PIG -2F98;ID # KANGXI RADICAL BADGER -2F99;ID # KANGXI RADICAL SHELL -2F9A;ID # KANGXI RADICAL RED -2F9B;ID # KANGXI RADICAL RUN -2F9C;ID # KANGXI RADICAL FOOT -2F9D;ID # KANGXI RADICAL BODY -2F9E;ID # KANGXI RADICAL CART -2F9F;ID # KANGXI RADICAL BITTER -2FA0;ID # KANGXI RADICAL MORNING -2FA1;ID # KANGXI RADICAL WALK -2FA2;ID # KANGXI RADICAL CITY -2FA3;ID # KANGXI RADICAL WINE -2FA4;ID # KANGXI RADICAL DISTINGUISH -2FA5;ID # KANGXI RADICAL VILLAGE -2FA6;ID # KANGXI RADICAL GOLD -2FA7;ID # KANGXI RADICAL LONG -2FA8;ID # KANGXI RADICAL GATE -2FA9;ID # KANGXI RADICAL MOUND -2FAA;ID # KANGXI RADICAL SLAVE -2FAB;ID # KANGXI RADICAL SHORT TAILED BIRD -2FAC;ID # KANGXI RADICAL RAIN -2FAD;ID # KANGXI RADICAL BLUE -2FAE;ID # KANGXI RADICAL WRONG -2FAF;ID # KANGXI RADICAL FACE -2FB0;ID # KANGXI RADICAL LEATHER -2FB1;ID # KANGXI RADICAL TANNED LEATHER -2FB2;ID # KANGXI RADICAL LEEK -2FB3;ID # KANGXI RADICAL SOUND -2FB4;ID # KANGXI RADICAL LEAF -2FB5;ID # KANGXI RADICAL WIND -2FB6;ID # KANGXI RADICAL FLY -2FB7;ID # KANGXI RADICAL EAT -2FB8;ID # KANGXI RADICAL HEAD -2FB9;ID # KANGXI RADICAL FRAGRANT -2FBA;ID # KANGXI RADICAL HORSE -2FBB;ID # KANGXI RADICAL BONE -2FBC;ID # KANGXI RADICAL TALL -2FBD;ID # KANGXI RADICAL HAIR -2FBE;ID # KANGXI RADICAL FIGHT -2FBF;ID # KANGXI RADICAL SACRIFICIAL WINE -2FC0;ID # KANGXI RADICAL CAULDRON -2FC1;ID # KANGXI RADICAL GHOST -2FC2;ID # KANGXI RADICAL FISH -2FC3;ID # KANGXI RADICAL BIRD -2FC4;ID # KANGXI RADICAL SALT -2FC5;ID # KANGXI RADICAL DEER -2FC6;ID # KANGXI RADICAL WHEAT -2FC7;ID # KANGXI RADICAL HEMP -2FC8;ID # KANGXI RADICAL YELLOW -2FC9;ID # KANGXI RADICAL MILLET -2FCA;ID # KANGXI RADICAL BLACK -2FCB;ID # KANGXI RADICAL EMBROIDERY -2FCC;ID # KANGXI RADICAL FROG -2FCD;ID # KANGXI RADICAL TRIPOD -2FCE;ID # KANGXI RADICAL DRUM -2FCF;ID # KANGXI RADICAL RAT -2FD0;ID # KANGXI RADICAL NOSE -2FD1;ID # KANGXI RADICAL EVEN -2FD2;ID # KANGXI RADICAL TOOTH -2FD3;ID # KANGXI RADICAL DRAGON -2FD4;ID # KANGXI RADICAL TURTLE -2FD5;ID # KANGXI RADICAL FLUTE -2FF0;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT -2FF1;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW -2FF2;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT -2FF3;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW -2FF4;ID # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND -2FF5;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE -2FF6;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW -2FF7;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT -2FF8;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT -2FF9;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT -2FFA;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT -2FFB;ID # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID -3000;ID # IDEOGRAPHIC SPACE -3001;CL # IDEOGRAPHIC COMMA -3002;CL # IDEOGRAPHIC FULL STOP -3003;ID # DITTO MARK -3004;ID # JAPANESE INDUSTRIAL STANDARD SYMBOL -3005;NS # IDEOGRAPHIC ITERATION MARK -3006;ID # IDEOGRAPHIC CLOSING MARK -3007;ID # IDEOGRAPHIC NUMBER ZERO -3008;OP # LEFT ANGLE BRACKET -3009;CL # RIGHT ANGLE BRACKET -300A;OP # LEFT DOUBLE ANGLE BRACKET -300B;CL # RIGHT DOUBLE ANGLE BRACKET -300C;OP # LEFT CORNER BRACKET -300D;CL # RIGHT CORNER BRACKET -300E;OP # LEFT WHITE CORNER BRACKET -300F;CL # RIGHT WHITE CORNER BRACKET -3010;OP # LEFT BLACK LENTICULAR BRACKET -3011;CL # RIGHT BLACK LENTICULAR BRACKET -3012;ID # POSTAL MARK -3013;ID # GETA MARK -3014;OP # LEFT TORTOISE SHELL BRACKET -3015;CL # RIGHT TORTOISE SHELL BRACKET -3016;OP # LEFT WHITE LENTICULAR BRACKET -3017;CL # RIGHT WHITE LENTICULAR BRACKET -3018;OP # LEFT WHITE TORTOISE SHELL BRACKET -3019;CL # RIGHT WHITE TORTOISE SHELL BRACKET -301A;OP # LEFT WHITE SQUARE BRACKET -301B;CL # RIGHT WHITE SQUARE BRACKET -301C;NS # WAVE DASH -301D;OP # REVERSED DOUBLE PRIME QUOTATION MARK -301E;CL # DOUBLE PRIME QUOTATION MARK -301F;CL # LOW DOUBLE PRIME QUOTATION MARK -3020;ID # POSTAL MARK FACE -3021;ID # HANGZHOU NUMERAL ONE -3022;ID # HANGZHOU NUMERAL TWO -3023;ID # HANGZHOU NUMERAL THREE -3024;ID # HANGZHOU NUMERAL FOUR -3025;ID # HANGZHOU NUMERAL FIVE -3026;ID # HANGZHOU NUMERAL SIX -3027;ID # HANGZHOU NUMERAL SEVEN -3028;ID # HANGZHOU NUMERAL EIGHT -3029;ID # HANGZHOU NUMERAL NINE -302A;CM # IDEOGRAPHIC LEVEL TONE MARK -302B;CM # IDEOGRAPHIC RISING TONE MARK -302C;CM # IDEOGRAPHIC DEPARTING TONE MARK -302D;CM # IDEOGRAPHIC ENTERING TONE MARK -302E;CM # HANGUL SINGLE DOT TONE MARK -302F;CM # HANGUL DOUBLE DOT TONE MARK -3030;ID # WAVY DASH -3031;ID # VERTICAL KANA REPEAT MARK -3032;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK -3033;ID # VERTICAL KANA REPEAT MARK UPPER HALF -3034;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF -3035;ID # VERTICAL KANA REPEAT MARK LOWER HALF -3036;ID # CIRCLED POSTAL MARK -3037;ID # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL -3038;ID # HANGZHOU NUMERAL TEN -3039;ID # HANGZHOU NUMERAL TWENTY -303A;ID # HANGZHOU NUMERAL THIRTY -303B;NS # VERTICAL IDEOGRAPHIC ITERATION MARK -303C;NS # MASU MARK -303D;ID # PART ALTERNATION MARK -303E;ID # IDEOGRAPHIC VARIATION INDICATOR -303F;ID # IDEOGRAPHIC HALF FILL SPACE -3041;NS # HIRAGANA LETTER SMALL A -3042;ID # HIRAGANA LETTER A -3043;NS # HIRAGANA LETTER SMALL I -3044;ID # HIRAGANA LETTER I -3045;NS # HIRAGANA LETTER SMALL U -3046;ID # HIRAGANA LETTER U -3047;NS # HIRAGANA LETTER SMALL E -3048;ID # HIRAGANA LETTER E -3049;NS # HIRAGANA LETTER SMALL O -304A;ID # HIRAGANA LETTER O -304B;ID # HIRAGANA LETTER KA -304C;ID # HIRAGANA LETTER GA -304D;ID # HIRAGANA LETTER KI -304E;ID # HIRAGANA LETTER GI -304F;ID # HIRAGANA LETTER KU -3050;ID # HIRAGANA LETTER GU -3051;ID # HIRAGANA LETTER KE -3052;ID # HIRAGANA LETTER GE -3053;ID # HIRAGANA LETTER KO -3054;ID # HIRAGANA LETTER GO -3055;ID # HIRAGANA LETTER SA -3056;ID # HIRAGANA LETTER ZA -3057;ID # HIRAGANA LETTER SI -3058;ID # HIRAGANA LETTER ZI -3059;ID # HIRAGANA LETTER SU -305A;ID # HIRAGANA LETTER ZU -305B;ID # HIRAGANA LETTER SE -305C;ID # HIRAGANA LETTER ZE -305D;ID # HIRAGANA LETTER SO -305E;ID # HIRAGANA LETTER ZO -305F;ID # HIRAGANA LETTER TA -3060;ID # HIRAGANA LETTER DA -3061;ID # HIRAGANA LETTER TI -3062;ID # HIRAGANA LETTER DI -3063;NS # HIRAGANA LETTER SMALL TU -3064;ID # HIRAGANA LETTER TU -3065;ID # HIRAGANA LETTER DU -3066;ID # HIRAGANA LETTER TE -3067;ID # HIRAGANA LETTER DE -3068;ID # HIRAGANA LETTER TO -3069;ID # HIRAGANA LETTER DO -306A;ID # HIRAGANA LETTER NA -306B;ID # HIRAGANA LETTER NI -306C;ID # HIRAGANA LETTER NU -306D;ID # HIRAGANA LETTER NE -306E;ID # HIRAGANA LETTER NO -306F;ID # HIRAGANA LETTER HA -3070;ID # HIRAGANA LETTER BA -3071;ID # HIRAGANA LETTER PA -3072;ID # HIRAGANA LETTER HI -3073;ID # HIRAGANA LETTER BI -3074;ID # HIRAGANA LETTER PI -3075;ID # HIRAGANA LETTER HU -3076;ID # HIRAGANA LETTER BU -3077;ID # HIRAGANA LETTER PU -3078;ID # HIRAGANA LETTER HE -3079;ID # HIRAGANA LETTER BE -307A;ID # HIRAGANA LETTER PE -307B;ID # HIRAGANA LETTER HO -307C;ID # HIRAGANA LETTER BO -307D;ID # HIRAGANA LETTER PO -307E;ID # HIRAGANA LETTER MA -307F;ID # HIRAGANA LETTER MI -3080;ID # HIRAGANA LETTER MU -3081;ID # HIRAGANA LETTER ME -3082;ID # HIRAGANA LETTER MO -3083;NS # HIRAGANA LETTER SMALL YA -3084;ID # HIRAGANA LETTER YA -3085;NS # HIRAGANA LETTER SMALL YU -3086;ID # HIRAGANA LETTER YU -3087;NS # HIRAGANA LETTER SMALL YO -3088;ID # HIRAGANA LETTER YO -3089;ID # HIRAGANA LETTER RA -308A;ID # HIRAGANA LETTER RI -308B;ID # HIRAGANA LETTER RU -308C;ID # HIRAGANA LETTER RE -308D;ID # HIRAGANA LETTER RO -308E;NS # HIRAGANA LETTER SMALL WA -308F;ID # HIRAGANA LETTER WA -3090;ID # HIRAGANA LETTER WI -3091;ID # HIRAGANA LETTER WE -3092;ID # HIRAGANA LETTER WO -3093;ID # HIRAGANA LETTER N -3094;ID # HIRAGANA LETTER VU -3095;NS # HIRAGANA LETTER SMALL KA -3096;NS # HIRAGANA LETTER SMALL KE -3099;CM # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK -309A;CM # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309B;NS # KATAKANA-HIRAGANA VOICED SOUND MARK -309C;NS # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309D;NS # HIRAGANA ITERATION MARK -309E;NS # HIRAGANA VOICED ITERATION MARK -309F;ID # HIRAGANA DIGRAPH YORI -30A0;NS # KATAKANA-HIRAGANA DOUBLE HYPHEN -30A1;NS # KATAKANA LETTER SMALL A -30A2;ID # KATAKANA LETTER A -30A3;NS # KATAKANA LETTER SMALL I -30A4;ID # KATAKANA LETTER I -30A5;NS # KATAKANA LETTER SMALL U -30A6;ID # KATAKANA LETTER U -30A7;NS # KATAKANA LETTER SMALL E -30A8;ID # KATAKANA LETTER E -30A9;NS # KATAKANA LETTER SMALL O -30AA;ID # KATAKANA LETTER O -30AB;ID # KATAKANA LETTER KA -30AC;ID # KATAKANA LETTER GA -30AD;ID # KATAKANA LETTER KI -30AE;ID # KATAKANA LETTER GI -30AF;ID # KATAKANA LETTER KU -30B0;ID # KATAKANA LETTER GU -30B1;ID # KATAKANA LETTER KE -30B2;ID # KATAKANA LETTER GE -30B3;ID # KATAKANA LETTER KO -30B4;ID # KATAKANA LETTER GO -30B5;ID # KATAKANA LETTER SA -30B6;ID # KATAKANA LETTER ZA -30B7;ID # KATAKANA LETTER SI -30B8;ID # KATAKANA LETTER ZI -30B9;ID # KATAKANA LETTER SU -30BA;ID # KATAKANA LETTER ZU -30BB;ID # KATAKANA LETTER SE -30BC;ID # KATAKANA LETTER ZE -30BD;ID # KATAKANA LETTER SO -30BE;ID # KATAKANA LETTER ZO -30BF;ID # KATAKANA LETTER TA -30C0;ID # KATAKANA LETTER DA -30C1;ID # KATAKANA LETTER TI -30C2;ID # KATAKANA LETTER DI -30C3;NS # KATAKANA LETTER SMALL TU -30C4;ID # KATAKANA LETTER TU -30C5;ID # KATAKANA LETTER DU -30C6;ID # KATAKANA LETTER TE -30C7;ID # KATAKANA LETTER DE -30C8;ID # KATAKANA LETTER TO -30C9;ID # KATAKANA LETTER DO -30CA;ID # KATAKANA LETTER NA -30CB;ID # KATAKANA LETTER NI -30CC;ID # KATAKANA LETTER NU -30CD;ID # KATAKANA LETTER NE -30CE;ID # KATAKANA LETTER NO -30CF;ID # KATAKANA LETTER HA -30D0;ID # KATAKANA LETTER BA -30D1;ID # KATAKANA LETTER PA -30D2;ID # KATAKANA LETTER HI -30D3;ID # KATAKANA LETTER BI -30D4;ID # KATAKANA LETTER PI -30D5;ID # KATAKANA LETTER HU -30D6;ID # KATAKANA LETTER BU -30D7;ID # KATAKANA LETTER PU -30D8;ID # KATAKANA LETTER HE -30D9;ID # KATAKANA LETTER BE -30DA;ID # KATAKANA LETTER PE -30DB;ID # KATAKANA LETTER HO -30DC;ID # KATAKANA LETTER BO -30DD;ID # KATAKANA LETTER PO -30DE;ID # KATAKANA LETTER MA -30DF;ID # KATAKANA LETTER MI -30E0;ID # KATAKANA LETTER MU -30E1;ID # KATAKANA LETTER ME -30E2;ID # KATAKANA LETTER MO -30E3;NS # KATAKANA LETTER SMALL YA -30E4;ID # KATAKANA LETTER YA -30E5;NS # KATAKANA LETTER SMALL YU -30E6;ID # KATAKANA LETTER YU -30E7;NS # KATAKANA LETTER SMALL YO -30E8;ID # KATAKANA LETTER YO -30E9;ID # KATAKANA LETTER RA -30EA;ID # KATAKANA LETTER RI -30EB;ID # KATAKANA LETTER RU -30EC;ID # KATAKANA LETTER RE -30ED;ID # KATAKANA LETTER RO -30EE;NS # KATAKANA LETTER SMALL WA -30EF;ID # KATAKANA LETTER WA -30F0;ID # KATAKANA LETTER WI -30F1;ID # KATAKANA LETTER WE -30F2;ID # KATAKANA LETTER WO -30F3;ID # KATAKANA LETTER N -30F4;ID # KATAKANA LETTER VU -30F5;NS # KATAKANA LETTER SMALL KA -30F6;NS # KATAKANA LETTER SMALL KE -30F7;ID # KATAKANA LETTER VA -30F8;ID # KATAKANA LETTER VI -30F9;ID # KATAKANA LETTER VE -30FA;ID # KATAKANA LETTER VO -30FB;NS # KATAKANA MIDDLE DOT -30FC;NS # KATAKANA-HIRAGANA PROLONGED SOUND MARK -30FD;NS # KATAKANA ITERATION MARK -30FE;NS # KATAKANA VOICED ITERATION MARK -30FF;ID # KATAKANA DIGRAPH KOTO -3105;ID # BOPOMOFO LETTER B -3106;ID # BOPOMOFO LETTER P -3107;ID # BOPOMOFO LETTER M -3108;ID # BOPOMOFO LETTER F -3109;ID # BOPOMOFO LETTER D -310A;ID # BOPOMOFO LETTER T -310B;ID # BOPOMOFO LETTER N -310C;ID # BOPOMOFO LETTER L -310D;ID # BOPOMOFO LETTER G -310E;ID # BOPOMOFO LETTER K -310F;ID # BOPOMOFO LETTER H -3110;ID # BOPOMOFO LETTER J -3111;ID # BOPOMOFO LETTER Q -3112;ID # BOPOMOFO LETTER X -3113;ID # BOPOMOFO LETTER ZH -3114;ID # BOPOMOFO LETTER CH -3115;ID # BOPOMOFO LETTER SH -3116;ID # BOPOMOFO LETTER R -3117;ID # BOPOMOFO LETTER Z -3118;ID # BOPOMOFO LETTER C -3119;ID # BOPOMOFO LETTER S -311A;ID # BOPOMOFO LETTER A -311B;ID # BOPOMOFO LETTER O -311C;ID # BOPOMOFO LETTER E -311D;ID # BOPOMOFO LETTER EH -311E;ID # BOPOMOFO LETTER AI -311F;ID # BOPOMOFO LETTER EI -3120;ID # BOPOMOFO LETTER AU -3121;ID # BOPOMOFO LETTER OU -3122;ID # BOPOMOFO LETTER AN -3123;ID # BOPOMOFO LETTER EN -3124;ID # BOPOMOFO LETTER ANG -3125;ID # BOPOMOFO LETTER ENG -3126;ID # BOPOMOFO LETTER ER -3127;ID # BOPOMOFO LETTER I -3128;ID # BOPOMOFO LETTER U -3129;ID # BOPOMOFO LETTER IU -312A;ID # BOPOMOFO LETTER V -312B;ID # BOPOMOFO LETTER NG -312C;ID # BOPOMOFO LETTER GN -3131;ID # HANGUL LETTER KIYEOK -3132;ID # HANGUL LETTER SSANGKIYEOK -3133;ID # HANGUL LETTER KIYEOK-SIOS -3134;ID # HANGUL LETTER NIEUN -3135;ID # HANGUL LETTER NIEUN-CIEUC -3136;ID # HANGUL LETTER NIEUN-HIEUH -3137;ID # HANGUL LETTER TIKEUT -3138;ID # HANGUL LETTER SSANGTIKEUT -3139;ID # HANGUL LETTER RIEUL -313A;ID # HANGUL LETTER RIEUL-KIYEOK -313B;ID # HANGUL LETTER RIEUL-MIEUM -313C;ID # HANGUL LETTER RIEUL-PIEUP -313D;ID # HANGUL LETTER RIEUL-SIOS -313E;ID # HANGUL LETTER RIEUL-THIEUTH -313F;ID # HANGUL LETTER RIEUL-PHIEUPH -3140;ID # HANGUL LETTER RIEUL-HIEUH -3141;ID # HANGUL LETTER MIEUM -3142;ID # HANGUL LETTER PIEUP -3143;ID # HANGUL LETTER SSANGPIEUP -3144;ID # HANGUL LETTER PIEUP-SIOS -3145;ID # HANGUL LETTER SIOS -3146;ID # HANGUL LETTER SSANGSIOS -3147;ID # HANGUL LETTER IEUNG -3148;ID # HANGUL LETTER CIEUC -3149;ID # HANGUL LETTER SSANGCIEUC -314A;ID # HANGUL LETTER CHIEUCH -314B;ID # HANGUL LETTER KHIEUKH -314C;ID # HANGUL LETTER THIEUTH -314D;ID # HANGUL LETTER PHIEUPH -314E;ID # HANGUL LETTER HIEUH -314F;ID # HANGUL LETTER A -3150;ID # HANGUL LETTER AE -3151;ID # HANGUL LETTER YA -3152;ID # HANGUL LETTER YAE -3153;ID # HANGUL LETTER EO -3154;ID # HANGUL LETTER E -3155;ID # HANGUL LETTER YEO -3156;ID # HANGUL LETTER YE -3157;ID # HANGUL LETTER O -3158;ID # HANGUL LETTER WA -3159;ID # HANGUL LETTER WAE -315A;ID # HANGUL LETTER OE -315B;ID # HANGUL LETTER YO -315C;ID # HANGUL LETTER U -315D;ID # HANGUL LETTER WEO -315E;ID # HANGUL LETTER WE -315F;ID # HANGUL LETTER WI -3160;ID # HANGUL LETTER YU -3161;ID # HANGUL LETTER EU -3162;ID # HANGUL LETTER YI -3163;ID # HANGUL LETTER I -3164;ID # HANGUL FILLER -3165;ID # HANGUL LETTER SSANGNIEUN -3166;ID # HANGUL LETTER NIEUN-TIKEUT -3167;ID # HANGUL LETTER NIEUN-SIOS -3168;ID # HANGUL LETTER NIEUN-PANSIOS -3169;ID # HANGUL LETTER RIEUL-KIYEOK-SIOS -316A;ID # HANGUL LETTER RIEUL-TIKEUT -316B;ID # HANGUL LETTER RIEUL-PIEUP-SIOS -316C;ID # HANGUL LETTER RIEUL-PANSIOS -316D;ID # HANGUL LETTER RIEUL-YEORINHIEUH -316E;ID # HANGUL LETTER MIEUM-PIEUP -316F;ID # HANGUL LETTER MIEUM-SIOS -3170;ID # HANGUL LETTER MIEUM-PANSIOS -3171;ID # HANGUL LETTER KAPYEOUNMIEUM -3172;ID # HANGUL LETTER PIEUP-KIYEOK -3173;ID # HANGUL LETTER PIEUP-TIKEUT -3174;ID # HANGUL LETTER PIEUP-SIOS-KIYEOK -3175;ID # HANGUL LETTER PIEUP-SIOS-TIKEUT -3176;ID # HANGUL LETTER PIEUP-CIEUC -3177;ID # HANGUL LETTER PIEUP-THIEUTH -3178;ID # HANGUL LETTER KAPYEOUNPIEUP -3179;ID # HANGUL LETTER KAPYEOUNSSANGPIEUP -317A;ID # HANGUL LETTER SIOS-KIYEOK -317B;ID # HANGUL LETTER SIOS-NIEUN -317C;ID # HANGUL LETTER SIOS-TIKEUT -317D;ID # HANGUL LETTER SIOS-PIEUP -317E;ID # HANGUL LETTER SIOS-CIEUC -317F;ID # HANGUL LETTER PANSIOS -3180;ID # HANGUL LETTER SSANGIEUNG -3181;ID # HANGUL LETTER YESIEUNG -3182;ID # HANGUL LETTER YESIEUNG-SIOS -3183;ID # HANGUL LETTER YESIEUNG-PANSIOS -3184;ID # HANGUL LETTER KAPYEOUNPHIEUPH -3185;ID # HANGUL LETTER SSANGHIEUH -3186;ID # HANGUL LETTER YEORINHIEUH -3187;ID # HANGUL LETTER YO-YA -3188;ID # HANGUL LETTER YO-YAE -3189;ID # HANGUL LETTER YO-I -318A;ID # HANGUL LETTER YU-YEO -318B;ID # HANGUL LETTER YU-YE -318C;ID # HANGUL LETTER YU-I -318D;ID # HANGUL LETTER ARAEA -318E;ID # HANGUL LETTER ARAEAE -3190;ID # IDEOGRAPHIC ANNOTATION LINKING MARK -3191;ID # IDEOGRAPHIC ANNOTATION REVERSE MARK -3192;ID # IDEOGRAPHIC ANNOTATION ONE MARK -3193;ID # IDEOGRAPHIC ANNOTATION TWO MARK -3194;ID # IDEOGRAPHIC ANNOTATION THREE MARK -3195;ID # IDEOGRAPHIC ANNOTATION FOUR MARK -3196;ID # IDEOGRAPHIC ANNOTATION TOP MARK -3197;ID # IDEOGRAPHIC ANNOTATION MIDDLE MARK -3198;ID # IDEOGRAPHIC ANNOTATION BOTTOM MARK -3199;ID # IDEOGRAPHIC ANNOTATION FIRST MARK -319A;ID # IDEOGRAPHIC ANNOTATION SECOND MARK -319B;ID # IDEOGRAPHIC ANNOTATION THIRD MARK -319C;ID # IDEOGRAPHIC ANNOTATION FOURTH MARK -319D;ID # IDEOGRAPHIC ANNOTATION HEAVEN MARK -319E;ID # IDEOGRAPHIC ANNOTATION EARTH MARK -319F;ID # IDEOGRAPHIC ANNOTATION MAN MARK -31A0;ID # BOPOMOFO LETTER BU -31A1;ID # BOPOMOFO LETTER ZI -31A2;ID # BOPOMOFO LETTER JI -31A3;ID # BOPOMOFO LETTER GU -31A4;ID # BOPOMOFO LETTER EE -31A5;ID # BOPOMOFO LETTER ENN -31A6;ID # BOPOMOFO LETTER OO -31A7;ID # BOPOMOFO LETTER ONN -31A8;ID # BOPOMOFO LETTER IR -31A9;ID # BOPOMOFO LETTER ANN -31AA;ID # BOPOMOFO LETTER INN -31AB;ID # BOPOMOFO LETTER UNN -31AC;ID # BOPOMOFO LETTER IM -31AD;ID # BOPOMOFO LETTER NGG -31AE;ID # BOPOMOFO LETTER AINN -31AF;ID # BOPOMOFO LETTER AUNN -31B0;ID # BOPOMOFO LETTER AM -31B1;ID # BOPOMOFO LETTER OM -31B2;ID # BOPOMOFO LETTER ONG -31B3;ID # BOPOMOFO LETTER INNN -31B4;ID # BOPOMOFO FINAL LETTER P -31B5;ID # BOPOMOFO FINAL LETTER T -31B6;ID # BOPOMOFO FINAL LETTER K -31B7;ID # BOPOMOFO FINAL LETTER H -31C0;ID # CJK STROKE T -31C1;ID # CJK STROKE WG -31C2;ID # CJK STROKE XG -31C3;ID # CJK STROKE BXG -31C4;ID # CJK STROKE SW -31C5;ID # CJK STROKE HZZ -31C6;ID # CJK STROKE HZG -31C7;ID # CJK STROKE HP -31C8;ID # CJK STROKE HZWG -31C9;ID # CJK STROKE SZWG -31CA;ID # CJK STROKE HZT -31CB;ID # CJK STROKE HZZP -31CC;ID # CJK STROKE HPWG -31CD;ID # CJK STROKE HZW -31CE;ID # CJK STROKE HZZZ -31CF;ID # CJK STROKE N -31F0;NS # KATAKANA LETTER SMALL KU -31F1;NS # KATAKANA LETTER SMALL SI -31F2;NS # KATAKANA LETTER SMALL SU -31F3;NS # KATAKANA LETTER SMALL TO -31F4;NS # KATAKANA LETTER SMALL NU -31F5;NS # KATAKANA LETTER SMALL HA -31F6;NS # KATAKANA LETTER SMALL HI -31F7;NS # KATAKANA LETTER SMALL HU -31F8;NS # KATAKANA LETTER SMALL HE -31F9;NS # KATAKANA LETTER SMALL HO -31FA;NS # KATAKANA LETTER SMALL MU -31FB;NS # KATAKANA LETTER SMALL RA -31FC;NS # KATAKANA LETTER SMALL RI -31FD;NS # KATAKANA LETTER SMALL RU -31FE;NS # KATAKANA LETTER SMALL RE -31FF;NS # KATAKANA LETTER SMALL RO -3200;ID # PARENTHESIZED HANGUL KIYEOK -3201;ID # PARENTHESIZED HANGUL NIEUN -3202;ID # PARENTHESIZED HANGUL TIKEUT -3203;ID # PARENTHESIZED HANGUL RIEUL -3204;ID # PARENTHESIZED HANGUL MIEUM -3205;ID # PARENTHESIZED HANGUL PIEUP -3206;ID # PARENTHESIZED HANGUL SIOS -3207;ID # PARENTHESIZED HANGUL IEUNG -3208;ID # PARENTHESIZED HANGUL CIEUC -3209;ID # PARENTHESIZED HANGUL CHIEUCH -320A;ID # PARENTHESIZED HANGUL KHIEUKH -320B;ID # PARENTHESIZED HANGUL THIEUTH -320C;ID # PARENTHESIZED HANGUL PHIEUPH -320D;ID # PARENTHESIZED HANGUL HIEUH -320E;ID # PARENTHESIZED HANGUL KIYEOK A -320F;ID # PARENTHESIZED HANGUL NIEUN A -3210;ID # PARENTHESIZED HANGUL TIKEUT A -3211;ID # PARENTHESIZED HANGUL RIEUL A -3212;ID # PARENTHESIZED HANGUL MIEUM A -3213;ID # PARENTHESIZED HANGUL PIEUP A -3214;ID # PARENTHESIZED HANGUL SIOS A -3215;ID # PARENTHESIZED HANGUL IEUNG A -3216;ID # PARENTHESIZED HANGUL CIEUC A -3217;ID # PARENTHESIZED HANGUL CHIEUCH A -3218;ID # PARENTHESIZED HANGUL KHIEUKH A -3219;ID # PARENTHESIZED HANGUL THIEUTH A -321A;ID # PARENTHESIZED HANGUL PHIEUPH A -321B;ID # PARENTHESIZED HANGUL HIEUH A -321C;ID # PARENTHESIZED HANGUL CIEUC U -321D;ID # PARENTHESIZED KOREAN CHARACTER OJEON -321E;ID # PARENTHESIZED KOREAN CHARACTER O HU -3220;ID # PARENTHESIZED IDEOGRAPH ONE -3221;ID # PARENTHESIZED IDEOGRAPH TWO -3222;ID # PARENTHESIZED IDEOGRAPH THREE -3223;ID # PARENTHESIZED IDEOGRAPH FOUR -3224;ID # PARENTHESIZED IDEOGRAPH FIVE -3225;ID # PARENTHESIZED IDEOGRAPH SIX -3226;ID # PARENTHESIZED IDEOGRAPH SEVEN -3227;ID # PARENTHESIZED IDEOGRAPH EIGHT -3228;ID # PARENTHESIZED IDEOGRAPH NINE -3229;ID # PARENTHESIZED IDEOGRAPH TEN -322A;ID # PARENTHESIZED IDEOGRAPH MOON -322B;ID # PARENTHESIZED IDEOGRAPH FIRE -322C;ID # PARENTHESIZED IDEOGRAPH WATER -322D;ID # PARENTHESIZED IDEOGRAPH WOOD -322E;ID # PARENTHESIZED IDEOGRAPH METAL -322F;ID # PARENTHESIZED IDEOGRAPH EARTH -3230;ID # PARENTHESIZED IDEOGRAPH SUN -3231;ID # PARENTHESIZED IDEOGRAPH STOCK -3232;ID # PARENTHESIZED IDEOGRAPH HAVE -3233;ID # PARENTHESIZED IDEOGRAPH SOCIETY -3234;ID # PARENTHESIZED IDEOGRAPH NAME -3235;ID # PARENTHESIZED IDEOGRAPH SPECIAL -3236;ID # PARENTHESIZED IDEOGRAPH FINANCIAL -3237;ID # PARENTHESIZED IDEOGRAPH CONGRATULATION -3238;ID # PARENTHESIZED IDEOGRAPH LABOR -3239;ID # PARENTHESIZED IDEOGRAPH REPRESENT -323A;ID # PARENTHESIZED IDEOGRAPH CALL -323B;ID # PARENTHESIZED IDEOGRAPH STUDY -323C;ID # PARENTHESIZED IDEOGRAPH SUPERVISE -323D;ID # PARENTHESIZED IDEOGRAPH ENTERPRISE -323E;ID # PARENTHESIZED IDEOGRAPH RESOURCE -323F;ID # PARENTHESIZED IDEOGRAPH ALLIANCE -3240;ID # PARENTHESIZED IDEOGRAPH FESTIVAL -3241;ID # PARENTHESIZED IDEOGRAPH REST -3242;ID # PARENTHESIZED IDEOGRAPH SELF -3243;ID # PARENTHESIZED IDEOGRAPH REACH -3250;ID # PARTNERSHIP SIGN -3251;ID # CIRCLED NUMBER TWENTY ONE -3252;ID # CIRCLED NUMBER TWENTY TWO -3253;ID # CIRCLED NUMBER TWENTY THREE -3254;ID # CIRCLED NUMBER TWENTY FOUR -3255;ID # CIRCLED NUMBER TWENTY FIVE -3256;ID # CIRCLED NUMBER TWENTY SIX -3257;ID # CIRCLED NUMBER TWENTY SEVEN -3258;ID # CIRCLED NUMBER TWENTY EIGHT -3259;ID # CIRCLED NUMBER TWENTY NINE -325A;ID # CIRCLED NUMBER THIRTY -325B;ID # CIRCLED NUMBER THIRTY ONE -325C;ID # CIRCLED NUMBER THIRTY TWO -325D;ID # CIRCLED NUMBER THIRTY THREE -325E;ID # CIRCLED NUMBER THIRTY FOUR -325F;ID # CIRCLED NUMBER THIRTY FIVE -3260;ID # CIRCLED HANGUL KIYEOK -3261;ID # CIRCLED HANGUL NIEUN -3262;ID # CIRCLED HANGUL TIKEUT -3263;ID # CIRCLED HANGUL RIEUL -3264;ID # CIRCLED HANGUL MIEUM -3265;ID # CIRCLED HANGUL PIEUP -3266;ID # CIRCLED HANGUL SIOS -3267;ID # CIRCLED HANGUL IEUNG -3268;ID # CIRCLED HANGUL CIEUC -3269;ID # CIRCLED HANGUL CHIEUCH -326A;ID # CIRCLED HANGUL KHIEUKH -326B;ID # CIRCLED HANGUL THIEUTH -326C;ID # CIRCLED HANGUL PHIEUPH -326D;ID # CIRCLED HANGUL HIEUH -326E;ID # CIRCLED HANGUL KIYEOK A -326F;ID # CIRCLED HANGUL NIEUN A -3270;ID # CIRCLED HANGUL TIKEUT A -3271;ID # CIRCLED HANGUL RIEUL A -3272;ID # CIRCLED HANGUL MIEUM A -3273;ID # CIRCLED HANGUL PIEUP A -3274;ID # CIRCLED HANGUL SIOS A -3275;ID # CIRCLED HANGUL IEUNG A -3276;ID # CIRCLED HANGUL CIEUC A -3277;ID # CIRCLED HANGUL CHIEUCH A -3278;ID # CIRCLED HANGUL KHIEUKH A -3279;ID # CIRCLED HANGUL THIEUTH A -327A;ID # CIRCLED HANGUL PHIEUPH A -327B;ID # CIRCLED HANGUL HIEUH A -327C;ID # CIRCLED KOREAN CHARACTER CHAMKO -327D;ID # CIRCLED KOREAN CHARACTER JUEUI -327E;ID # CIRCLED HANGUL IEUNG U -327F;ID # KOREAN STANDARD SYMBOL -3280;ID # CIRCLED IDEOGRAPH ONE -3281;ID # CIRCLED IDEOGRAPH TWO -3282;ID # CIRCLED IDEOGRAPH THREE -3283;ID # CIRCLED IDEOGRAPH FOUR -3284;ID # CIRCLED IDEOGRAPH FIVE -3285;ID # CIRCLED IDEOGRAPH SIX -3286;ID # CIRCLED IDEOGRAPH SEVEN -3287;ID # CIRCLED IDEOGRAPH EIGHT -3288;ID # CIRCLED IDEOGRAPH NINE -3289;ID # CIRCLED IDEOGRAPH TEN -328A;ID # CIRCLED IDEOGRAPH MOON -328B;ID # CIRCLED IDEOGRAPH FIRE -328C;ID # CIRCLED IDEOGRAPH WATER -328D;ID # CIRCLED IDEOGRAPH WOOD -328E;ID # CIRCLED IDEOGRAPH METAL -328F;ID # CIRCLED IDEOGRAPH EARTH -3290;ID # CIRCLED IDEOGRAPH SUN -3291;ID # CIRCLED IDEOGRAPH STOCK -3292;ID # CIRCLED IDEOGRAPH HAVE -3293;ID # CIRCLED IDEOGRAPH SOCIETY -3294;ID # CIRCLED IDEOGRAPH NAME -3295;ID # CIRCLED IDEOGRAPH SPECIAL -3296;ID # CIRCLED IDEOGRAPH FINANCIAL -3297;ID # CIRCLED IDEOGRAPH CONGRATULATION -3298;ID # CIRCLED IDEOGRAPH LABOR -3299;ID # CIRCLED IDEOGRAPH SECRET -329A;ID # CIRCLED IDEOGRAPH MALE -329B;ID # CIRCLED IDEOGRAPH FEMALE -329C;ID # CIRCLED IDEOGRAPH SUITABLE -329D;ID # CIRCLED IDEOGRAPH EXCELLENT -329E;ID # CIRCLED IDEOGRAPH PRINT -329F;ID # CIRCLED IDEOGRAPH ATTENTION -32A0;ID # CIRCLED IDEOGRAPH ITEM -32A1;ID # CIRCLED IDEOGRAPH REST -32A2;ID # CIRCLED IDEOGRAPH COPY -32A3;ID # CIRCLED IDEOGRAPH CORRECT -32A4;ID # CIRCLED IDEOGRAPH HIGH -32A5;ID # CIRCLED IDEOGRAPH CENTRE -32A6;ID # CIRCLED IDEOGRAPH LOW -32A7;ID # CIRCLED IDEOGRAPH LEFT -32A8;ID # CIRCLED IDEOGRAPH RIGHT -32A9;ID # CIRCLED IDEOGRAPH MEDICINE -32AA;ID # CIRCLED IDEOGRAPH RELIGION -32AB;ID # CIRCLED IDEOGRAPH STUDY -32AC;ID # CIRCLED IDEOGRAPH SUPERVISE -32AD;ID # CIRCLED IDEOGRAPH ENTERPRISE -32AE;ID # CIRCLED IDEOGRAPH RESOURCE -32AF;ID # CIRCLED IDEOGRAPH ALLIANCE -32B0;ID # CIRCLED IDEOGRAPH NIGHT -32B1;ID # CIRCLED NUMBER THIRTY SIX -32B2;ID # CIRCLED NUMBER THIRTY SEVEN -32B3;ID # CIRCLED NUMBER THIRTY EIGHT -32B4;ID # CIRCLED NUMBER THIRTY NINE -32B5;ID # CIRCLED NUMBER FORTY -32B6;ID # CIRCLED NUMBER FORTY ONE -32B7;ID # CIRCLED NUMBER FORTY TWO -32B8;ID # CIRCLED NUMBER FORTY THREE -32B9;ID # CIRCLED NUMBER FORTY FOUR -32BA;ID # CIRCLED NUMBER FORTY FIVE -32BB;ID # CIRCLED NUMBER FORTY SIX -32BC;ID # CIRCLED NUMBER FORTY SEVEN -32BD;ID # CIRCLED NUMBER FORTY EIGHT -32BE;ID # CIRCLED NUMBER FORTY NINE -32BF;ID # CIRCLED NUMBER FIFTY -32C0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY -32C1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY -32C2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH -32C3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL -32C4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY -32C5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE -32C6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY -32C7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST -32C8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER -32C9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER -32CA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER -32CB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER -32CC;ID # SQUARE HG -32CD;ID # SQUARE ERG -32CE;ID # SQUARE EV -32CF;ID # LIMITED LIABILITY SIGN -32D0;ID # CIRCLED KATAKANA A -32D1;ID # CIRCLED KATAKANA I -32D2;ID # CIRCLED KATAKANA U -32D3;ID # CIRCLED KATAKANA E -32D4;ID # CIRCLED KATAKANA O -32D5;ID # CIRCLED KATAKANA KA -32D6;ID # CIRCLED KATAKANA KI -32D7;ID # CIRCLED KATAKANA KU -32D8;ID # CIRCLED KATAKANA KE -32D9;ID # CIRCLED KATAKANA KO -32DA;ID # CIRCLED KATAKANA SA -32DB;ID # CIRCLED KATAKANA SI -32DC;ID # CIRCLED KATAKANA SU -32DD;ID # CIRCLED KATAKANA SE -32DE;ID # CIRCLED KATAKANA SO -32DF;ID # CIRCLED KATAKANA TA -32E0;ID # CIRCLED KATAKANA TI -32E1;ID # CIRCLED KATAKANA TU -32E2;ID # CIRCLED KATAKANA TE -32E3;ID # CIRCLED KATAKANA TO -32E4;ID # CIRCLED KATAKANA NA -32E5;ID # CIRCLED KATAKANA NI -32E6;ID # CIRCLED KATAKANA NU -32E7;ID # CIRCLED KATAKANA NE -32E8;ID # CIRCLED KATAKANA NO -32E9;ID # CIRCLED KATAKANA HA -32EA;ID # CIRCLED KATAKANA HI -32EB;ID # CIRCLED KATAKANA HU -32EC;ID # CIRCLED KATAKANA HE -32ED;ID # CIRCLED KATAKANA HO -32EE;ID # CIRCLED KATAKANA MA -32EF;ID # CIRCLED KATAKANA MI -32F0;ID # CIRCLED KATAKANA MU -32F1;ID # CIRCLED KATAKANA ME -32F2;ID # CIRCLED KATAKANA MO -32F3;ID # CIRCLED KATAKANA YA -32F4;ID # CIRCLED KATAKANA YU -32F5;ID # CIRCLED KATAKANA YO -32F6;ID # CIRCLED KATAKANA RA -32F7;ID # CIRCLED KATAKANA RI -32F8;ID # CIRCLED KATAKANA RU -32F9;ID # CIRCLED KATAKANA RE -32FA;ID # CIRCLED KATAKANA RO -32FB;ID # CIRCLED KATAKANA WA -32FC;ID # CIRCLED KATAKANA WI -32FD;ID # CIRCLED KATAKANA WE -32FE;ID # CIRCLED KATAKANA WO -3300;ID # SQUARE APAATO -3301;ID # SQUARE ARUHUA -3302;ID # SQUARE ANPEA -3303;ID # SQUARE AARU -3304;ID # SQUARE ININGU -3305;ID # SQUARE INTI -3306;ID # SQUARE UON -3307;ID # SQUARE ESUKUUDO -3308;ID # SQUARE EEKAA -3309;ID # SQUARE ONSU -330A;ID # SQUARE OOMU -330B;ID # SQUARE KAIRI -330C;ID # SQUARE KARATTO -330D;ID # SQUARE KARORII -330E;ID # SQUARE GARON -330F;ID # SQUARE GANMA -3310;ID # SQUARE GIGA -3311;ID # SQUARE GINII -3312;ID # SQUARE KYURII -3313;ID # SQUARE GIRUDAA -3314;ID # SQUARE KIRO -3315;ID # SQUARE KIROGURAMU -3316;ID # SQUARE KIROMEETORU -3317;ID # SQUARE KIROWATTO -3318;ID # SQUARE GURAMU -3319;ID # SQUARE GURAMUTON -331A;ID # SQUARE KURUZEIRO -331B;ID # SQUARE KUROONE -331C;ID # SQUARE KEESU -331D;ID # SQUARE KORUNA -331E;ID # SQUARE KOOPO -331F;ID # SQUARE SAIKURU -3320;ID # SQUARE SANTIIMU -3321;ID # SQUARE SIRINGU -3322;ID # SQUARE SENTI -3323;ID # SQUARE SENTO -3324;ID # SQUARE DAASU -3325;ID # SQUARE DESI -3326;ID # SQUARE DORU -3327;ID # SQUARE TON -3328;ID # SQUARE NANO -3329;ID # SQUARE NOTTO -332A;ID # SQUARE HAITU -332B;ID # SQUARE PAASENTO -332C;ID # SQUARE PAATU -332D;ID # SQUARE BAARERU -332E;ID # SQUARE PIASUTORU -332F;ID # SQUARE PIKURU -3330;ID # SQUARE PIKO -3331;ID # SQUARE BIRU -3332;ID # SQUARE HUARADDO -3333;ID # SQUARE HUIITO -3334;ID # SQUARE BUSSYERU -3335;ID # SQUARE HURAN -3336;ID # SQUARE HEKUTAARU -3337;ID # SQUARE PESO -3338;ID # SQUARE PENIHI -3339;ID # SQUARE HERUTU -333A;ID # SQUARE PENSU -333B;ID # SQUARE PEEZI -333C;ID # SQUARE BEETA -333D;ID # SQUARE POINTO -333E;ID # SQUARE BORUTO -333F;ID # SQUARE HON -3340;ID # SQUARE PONDO -3341;ID # SQUARE HOORU -3342;ID # SQUARE HOON -3343;ID # SQUARE MAIKURO -3344;ID # SQUARE MAIRU -3345;ID # SQUARE MAHHA -3346;ID # SQUARE MARUKU -3347;ID # SQUARE MANSYON -3348;ID # SQUARE MIKURON -3349;ID # SQUARE MIRI -334A;ID # SQUARE MIRIBAARU -334B;ID # SQUARE MEGA -334C;ID # SQUARE MEGATON -334D;ID # SQUARE MEETORU -334E;ID # SQUARE YAADO -334F;ID # SQUARE YAARU -3350;ID # SQUARE YUAN -3351;ID # SQUARE RITTORU -3352;ID # SQUARE RIRA -3353;ID # SQUARE RUPII -3354;ID # SQUARE RUUBURU -3355;ID # SQUARE REMU -3356;ID # SQUARE RENTOGEN -3357;ID # SQUARE WATTO -3358;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO -3359;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE -335A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO -335B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE -335C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR -335D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE -335E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX -335F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN -3360;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT -3361;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE -3362;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN -3363;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN -3364;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE -3365;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN -3366;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN -3367;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN -3368;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN -3369;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN -336A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN -336B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN -336C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY -336D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE -336E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO -336F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE -3370;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR -3371;ID # SQUARE HPA -3372;ID # SQUARE DA -3373;ID # SQUARE AU -3374;ID # SQUARE BAR -3375;ID # SQUARE OV -3376;ID # SQUARE PC -3377;ID # SQUARE DM -3378;ID # SQUARE DM SQUARED -3379;ID # SQUARE DM CUBED -337A;ID # SQUARE IU -337B;ID # SQUARE ERA NAME HEISEI -337C;ID # SQUARE ERA NAME SYOUWA -337D;ID # SQUARE ERA NAME TAISYOU -337E;ID # SQUARE ERA NAME MEIZI -337F;ID # SQUARE CORPORATION -3380;ID # SQUARE PA AMPS -3381;ID # SQUARE NA -3382;ID # SQUARE MU A -3383;ID # SQUARE MA -3384;ID # SQUARE KA -3385;ID # SQUARE KB -3386;ID # SQUARE MB -3387;ID # SQUARE GB -3388;ID # SQUARE CAL -3389;ID # SQUARE KCAL -338A;ID # SQUARE PF -338B;ID # SQUARE NF -338C;ID # SQUARE MU F -338D;ID # SQUARE MU G -338E;ID # SQUARE MG -338F;ID # SQUARE KG -3390;ID # SQUARE HZ -3391;ID # SQUARE KHZ -3392;ID # SQUARE MHZ -3393;ID # SQUARE GHZ -3394;ID # SQUARE THZ -3395;ID # SQUARE MU L -3396;ID # SQUARE ML -3397;ID # SQUARE DL -3398;ID # SQUARE KL -3399;ID # SQUARE FM -339A;ID # SQUARE NM -339B;ID # SQUARE MU M -339C;ID # SQUARE MM -339D;ID # SQUARE CM -339E;ID # SQUARE KM -339F;ID # SQUARE MM SQUARED -33A0;ID # SQUARE CM SQUARED -33A1;ID # SQUARE M SQUARED -33A2;ID # SQUARE KM SQUARED -33A3;ID # SQUARE MM CUBED -33A4;ID # SQUARE CM CUBED -33A5;ID # SQUARE M CUBED -33A6;ID # SQUARE KM CUBED -33A7;ID # SQUARE M OVER S -33A8;ID # SQUARE M OVER S SQUARED -33A9;ID # SQUARE PA -33AA;ID # SQUARE KPA -33AB;ID # SQUARE MPA -33AC;ID # SQUARE GPA -33AD;ID # SQUARE RAD -33AE;ID # SQUARE RAD OVER S -33AF;ID # SQUARE RAD OVER S SQUARED -33B0;ID # SQUARE PS -33B1;ID # SQUARE NS -33B2;ID # SQUARE MU S -33B3;ID # SQUARE MS -33B4;ID # SQUARE PV -33B5;ID # SQUARE NV -33B6;ID # SQUARE MU V -33B7;ID # SQUARE MV -33B8;ID # SQUARE KV -33B9;ID # SQUARE MV MEGA -33BA;ID # SQUARE PW -33BB;ID # SQUARE NW -33BC;ID # SQUARE MU W -33BD;ID # SQUARE MW -33BE;ID # SQUARE KW -33BF;ID # SQUARE MW MEGA -33C0;ID # SQUARE K OHM -33C1;ID # SQUARE M OHM -33C2;ID # SQUARE AM -33C3;ID # SQUARE BQ -33C4;ID # SQUARE CC -33C5;ID # SQUARE CD -33C6;ID # SQUARE C OVER KG -33C7;ID # SQUARE CO -33C8;ID # SQUARE DB -33C9;ID # SQUARE GY -33CA;ID # SQUARE HA -33CB;ID # SQUARE HP -33CC;ID # SQUARE IN -33CD;ID # SQUARE KK -33CE;ID # SQUARE KM CAPITAL -33CF;ID # SQUARE KT -33D0;ID # SQUARE LM -33D1;ID # SQUARE LN -33D2;ID # SQUARE LOG -33D3;ID # SQUARE LX -33D4;ID # SQUARE MB SMALL -33D5;ID # SQUARE MIL -33D6;ID # SQUARE MOL -33D7;ID # SQUARE PH -33D8;ID # SQUARE PM -33D9;ID # SQUARE PPM -33DA;ID # SQUARE PR -33DB;ID # SQUARE SR -33DC;ID # SQUARE SV -33DD;ID # SQUARE WB -33DE;ID # SQUARE V OVER M -33DF;ID # SQUARE A OVER M -33E0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE -33E1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO -33E2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE -33E3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR -33E4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE -33E5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX -33E6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN -33E7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT -33E8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE -33E9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN -33EA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN -33EB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE -33EC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN -33ED;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN -33EE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN -33EF;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN -33F0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN -33F1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN -33F2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN -33F3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY -33F4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE -33F5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO -33F6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE -33F7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR -33F8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE -33F9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX -33FA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN -33FB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT -33FC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE -33FD;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY -33FE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE -33FF;ID # SQUARE GAL -3400..4DB5;ID # <CJK Ideograph Extension A, First>..<CJK Ideograph Extension A, Last> -4DC0;AL # HEXAGRAM FOR THE CREATIVE HEAVEN -4DC1;AL # HEXAGRAM FOR THE RECEPTIVE EARTH -4DC2;AL # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING -4DC3;AL # HEXAGRAM FOR YOUTHFUL FOLLY -4DC4;AL # HEXAGRAM FOR WAITING -4DC5;AL # HEXAGRAM FOR CONFLICT -4DC6;AL # HEXAGRAM FOR THE ARMY -4DC7;AL # HEXAGRAM FOR HOLDING TOGETHER -4DC8;AL # HEXAGRAM FOR SMALL TAMING -4DC9;AL # HEXAGRAM FOR TREADING -4DCA;AL # HEXAGRAM FOR PEACE -4DCB;AL # HEXAGRAM FOR STANDSTILL -4DCC;AL # HEXAGRAM FOR FELLOWSHIP -4DCD;AL # HEXAGRAM FOR GREAT POSSESSION -4DCE;AL # HEXAGRAM FOR MODESTY -4DCF;AL # HEXAGRAM FOR ENTHUSIASM -4DD0;AL # HEXAGRAM FOR FOLLOWING -4DD1;AL # HEXAGRAM FOR WORK ON THE DECAYED -4DD2;AL # HEXAGRAM FOR APPROACH -4DD3;AL # HEXAGRAM FOR CONTEMPLATION -4DD4;AL # HEXAGRAM FOR BITING THROUGH -4DD5;AL # HEXAGRAM FOR GRACE -4DD6;AL # HEXAGRAM FOR SPLITTING APART -4DD7;AL # HEXAGRAM FOR RETURN -4DD8;AL # HEXAGRAM FOR INNOCENCE -4DD9;AL # HEXAGRAM FOR GREAT TAMING -4DDA;AL # HEXAGRAM FOR MOUTH CORNERS -4DDB;AL # HEXAGRAM FOR GREAT PREPONDERANCE -4DDC;AL # HEXAGRAM FOR THE ABYSMAL WATER -4DDD;AL # HEXAGRAM FOR THE CLINGING FIRE -4DDE;AL # HEXAGRAM FOR INFLUENCE -4DDF;AL # HEXAGRAM FOR DURATION -4DE0;AL # HEXAGRAM FOR RETREAT -4DE1;AL # HEXAGRAM FOR GREAT POWER -4DE2;AL # HEXAGRAM FOR PROGRESS -4DE3;AL # HEXAGRAM FOR DARKENING OF THE LIGHT -4DE4;AL # HEXAGRAM FOR THE FAMILY -4DE5;AL # HEXAGRAM FOR OPPOSITION -4DE6;AL # HEXAGRAM FOR OBSTRUCTION -4DE7;AL # HEXAGRAM FOR DELIVERANCE -4DE8;AL # HEXAGRAM FOR DECREASE -4DE9;AL # HEXAGRAM FOR INCREASE -4DEA;AL # HEXAGRAM FOR BREAKTHROUGH -4DEB;AL # HEXAGRAM FOR COMING TO MEET -4DEC;AL # HEXAGRAM FOR GATHERING TOGETHER -4DED;AL # HEXAGRAM FOR PUSHING UPWARD -4DEE;AL # HEXAGRAM FOR OPPRESSION -4DEF;AL # HEXAGRAM FOR THE WELL -4DF0;AL # HEXAGRAM FOR REVOLUTION -4DF1;AL # HEXAGRAM FOR THE CAULDRON -4DF2;AL # HEXAGRAM FOR THE AROUSING THUNDER -4DF3;AL # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN -4DF4;AL # HEXAGRAM FOR DEVELOPMENT -4DF5;AL # HEXAGRAM FOR THE MARRYING MAIDEN -4DF6;AL # HEXAGRAM FOR ABUNDANCE -4DF7;AL # HEXAGRAM FOR THE WANDERER -4DF8;AL # HEXAGRAM FOR THE GENTLE WIND -4DF9;AL # HEXAGRAM FOR THE JOYOUS LAKE -4DFA;AL # HEXAGRAM FOR DISPERSION -4DFB;AL # HEXAGRAM FOR LIMITATION -4DFC;AL # HEXAGRAM FOR INNER TRUTH -4DFD;AL # HEXAGRAM FOR SMALL PREPONDERANCE -4DFE;AL # HEXAGRAM FOR AFTER COMPLETION -4DFF;AL # HEXAGRAM FOR BEFORE COMPLETION -4E00..9FBB;ID # <CJK Ideograph, First>..<CJK Ideograph, Last> -A000;ID # YI SYLLABLE IT -A001;ID # YI SYLLABLE IX -A002;ID # YI SYLLABLE I -A003;ID # YI SYLLABLE IP -A004;ID # YI SYLLABLE IET -A005;ID # YI SYLLABLE IEX -A006;ID # YI SYLLABLE IE -A007;ID # YI SYLLABLE IEP -A008;ID # YI SYLLABLE AT -A009;ID # YI SYLLABLE AX -A00A;ID # YI SYLLABLE A -A00B;ID # YI SYLLABLE AP -A00C;ID # YI SYLLABLE UOX -A00D;ID # YI SYLLABLE UO -A00E;ID # YI SYLLABLE UOP -A00F;ID # YI SYLLABLE OT -A010;ID # YI SYLLABLE OX -A011;ID # YI SYLLABLE O -A012;ID # YI SYLLABLE OP -A013;ID # YI SYLLABLE EX -A014;ID # YI SYLLABLE E -A015;NS # YI SYLLABLE WU -A016;ID # YI SYLLABLE BIT -A017;ID # YI SYLLABLE BIX -A018;ID # YI SYLLABLE BI -A019;ID # YI SYLLABLE BIP -A01A;ID # YI SYLLABLE BIET -A01B;ID # YI SYLLABLE BIEX -A01C;ID # YI SYLLABLE BIE -A01D;ID # YI SYLLABLE BIEP -A01E;ID # YI SYLLABLE BAT -A01F;ID # YI SYLLABLE BAX -A020;ID # YI SYLLABLE BA -A021;ID # YI SYLLABLE BAP -A022;ID # YI SYLLABLE BUOX -A023;ID # YI SYLLABLE BUO -A024;ID # YI SYLLABLE BUOP -A025;ID # YI SYLLABLE BOT -A026;ID # YI SYLLABLE BOX -A027;ID # YI SYLLABLE BO -A028;ID # YI SYLLABLE BOP -A029;ID # YI SYLLABLE BEX -A02A;ID # YI SYLLABLE BE -A02B;ID # YI SYLLABLE BEP -A02C;ID # YI SYLLABLE BUT -A02D;ID # YI SYLLABLE BUX -A02E;ID # YI SYLLABLE BU -A02F;ID # YI SYLLABLE BUP -A030;ID # YI SYLLABLE BURX -A031;ID # YI SYLLABLE BUR -A032;ID # YI SYLLABLE BYT -A033;ID # YI SYLLABLE BYX -A034;ID # YI SYLLABLE BY -A035;ID # YI SYLLABLE BYP -A036;ID # YI SYLLABLE BYRX -A037;ID # YI SYLLABLE BYR -A038;ID # YI SYLLABLE PIT -A039;ID # YI SYLLABLE PIX -A03A;ID # YI SYLLABLE PI -A03B;ID # YI SYLLABLE PIP -A03C;ID # YI SYLLABLE PIEX -A03D;ID # YI SYLLABLE PIE -A03E;ID # YI SYLLABLE PIEP -A03F;ID # YI SYLLABLE PAT -A040;ID # YI SYLLABLE PAX -A041;ID # YI SYLLABLE PA -A042;ID # YI SYLLABLE PAP -A043;ID # YI SYLLABLE PUOX -A044;ID # YI SYLLABLE PUO -A045;ID # YI SYLLABLE PUOP -A046;ID # YI SYLLABLE POT -A047;ID # YI SYLLABLE POX -A048;ID # YI SYLLABLE PO -A049;ID # YI SYLLABLE POP -A04A;ID # YI SYLLABLE PUT -A04B;ID # YI SYLLABLE PUX -A04C;ID # YI SYLLABLE PU -A04D;ID # YI SYLLABLE PUP -A04E;ID # YI SYLLABLE PURX -A04F;ID # YI SYLLABLE PUR -A050;ID # YI SYLLABLE PYT -A051;ID # YI SYLLABLE PYX -A052;ID # YI SYLLABLE PY -A053;ID # YI SYLLABLE PYP -A054;ID # YI SYLLABLE PYRX -A055;ID # YI SYLLABLE PYR -A056;ID # YI SYLLABLE BBIT -A057;ID # YI SYLLABLE BBIX -A058;ID # YI SYLLABLE BBI -A059;ID # YI SYLLABLE BBIP -A05A;ID # YI SYLLABLE BBIET -A05B;ID # YI SYLLABLE BBIEX -A05C;ID # YI SYLLABLE BBIE -A05D;ID # YI SYLLABLE BBIEP -A05E;ID # YI SYLLABLE BBAT -A05F;ID # YI SYLLABLE BBAX -A060;ID # YI SYLLABLE BBA -A061;ID # YI SYLLABLE BBAP -A062;ID # YI SYLLABLE BBUOX -A063;ID # YI SYLLABLE BBUO -A064;ID # YI SYLLABLE BBUOP -A065;ID # YI SYLLABLE BBOT -A066;ID # YI SYLLABLE BBOX -A067;ID # YI SYLLABLE BBO -A068;ID # YI SYLLABLE BBOP -A069;ID # YI SYLLABLE BBEX -A06A;ID # YI SYLLABLE BBE -A06B;ID # YI SYLLABLE BBEP -A06C;ID # YI SYLLABLE BBUT -A06D;ID # YI SYLLABLE BBUX -A06E;ID # YI SYLLABLE BBU -A06F;ID # YI SYLLABLE BBUP -A070;ID # YI SYLLABLE BBURX -A071;ID # YI SYLLABLE BBUR -A072;ID # YI SYLLABLE BBYT -A073;ID # YI SYLLABLE BBYX -A074;ID # YI SYLLABLE BBY -A075;ID # YI SYLLABLE BBYP -A076;ID # YI SYLLABLE NBIT -A077;ID # YI SYLLABLE NBIX -A078;ID # YI SYLLABLE NBI -A079;ID # YI SYLLABLE NBIP -A07A;ID # YI SYLLABLE NBIEX -A07B;ID # YI SYLLABLE NBIE -A07C;ID # YI SYLLABLE NBIEP -A07D;ID # YI SYLLABLE NBAT -A07E;ID # YI SYLLABLE NBAX -A07F;ID # YI SYLLABLE NBA -A080;ID # YI SYLLABLE NBAP -A081;ID # YI SYLLABLE NBOT -A082;ID # YI SYLLABLE NBOX -A083;ID # YI SYLLABLE NBO -A084;ID # YI SYLLABLE NBOP -A085;ID # YI SYLLABLE NBUT -A086;ID # YI SYLLABLE NBUX -A087;ID # YI SYLLABLE NBU -A088;ID # YI SYLLABLE NBUP -A089;ID # YI SYLLABLE NBURX -A08A;ID # YI SYLLABLE NBUR -A08B;ID # YI SYLLABLE NBYT -A08C;ID # YI SYLLABLE NBYX -A08D;ID # YI SYLLABLE NBY -A08E;ID # YI SYLLABLE NBYP -A08F;ID # YI SYLLABLE NBYRX -A090;ID # YI SYLLABLE NBYR -A091;ID # YI SYLLABLE HMIT -A092;ID # YI SYLLABLE HMIX -A093;ID # YI SYLLABLE HMI -A094;ID # YI SYLLABLE HMIP -A095;ID # YI SYLLABLE HMIEX -A096;ID # YI SYLLABLE HMIE -A097;ID # YI SYLLABLE HMIEP -A098;ID # YI SYLLABLE HMAT -A099;ID # YI SYLLABLE HMAX -A09A;ID # YI SYLLABLE HMA -A09B;ID # YI SYLLABLE HMAP -A09C;ID # YI SYLLABLE HMUOX -A09D;ID # YI SYLLABLE HMUO -A09E;ID # YI SYLLABLE HMUOP -A09F;ID # YI SYLLABLE HMOT -A0A0;ID # YI SYLLABLE HMOX -A0A1;ID # YI SYLLABLE HMO -A0A2;ID # YI SYLLABLE HMOP -A0A3;ID # YI SYLLABLE HMUT -A0A4;ID # YI SYLLABLE HMUX -A0A5;ID # YI SYLLABLE HMU -A0A6;ID # YI SYLLABLE HMUP -A0A7;ID # YI SYLLABLE HMURX -A0A8;ID # YI SYLLABLE HMUR -A0A9;ID # YI SYLLABLE HMYX -A0AA;ID # YI SYLLABLE HMY -A0AB;ID # YI SYLLABLE HMYP -A0AC;ID # YI SYLLABLE HMYRX -A0AD;ID # YI SYLLABLE HMYR -A0AE;ID # YI SYLLABLE MIT -A0AF;ID # YI SYLLABLE MIX -A0B0;ID # YI SYLLABLE MI -A0B1;ID # YI SYLLABLE MIP -A0B2;ID # YI SYLLABLE MIEX -A0B3;ID # YI SYLLABLE MIE -A0B4;ID # YI SYLLABLE MIEP -A0B5;ID # YI SYLLABLE MAT -A0B6;ID # YI SYLLABLE MAX -A0B7;ID # YI SYLLABLE MA -A0B8;ID # YI SYLLABLE MAP -A0B9;ID # YI SYLLABLE MUOT -A0BA;ID # YI SYLLABLE MUOX -A0BB;ID # YI SYLLABLE MUO -A0BC;ID # YI SYLLABLE MUOP -A0BD;ID # YI SYLLABLE MOT -A0BE;ID # YI SYLLABLE MOX -A0BF;ID # YI SYLLABLE MO -A0C0;ID # YI SYLLABLE MOP -A0C1;ID # YI SYLLABLE MEX -A0C2;ID # YI SYLLABLE ME -A0C3;ID # YI SYLLABLE MUT -A0C4;ID # YI SYLLABLE MUX -A0C5;ID # YI SYLLABLE MU -A0C6;ID # YI SYLLABLE MUP -A0C7;ID # YI SYLLABLE MURX -A0C8;ID # YI SYLLABLE MUR -A0C9;ID # YI SYLLABLE MYT -A0CA;ID # YI SYLLABLE MYX -A0CB;ID # YI SYLLABLE MY -A0CC;ID # YI SYLLABLE MYP -A0CD;ID # YI SYLLABLE FIT -A0CE;ID # YI SYLLABLE FIX -A0CF;ID # YI SYLLABLE FI -A0D0;ID # YI SYLLABLE FIP -A0D1;ID # YI SYLLABLE FAT -A0D2;ID # YI SYLLABLE FAX -A0D3;ID # YI SYLLABLE FA -A0D4;ID # YI SYLLABLE FAP -A0D5;ID # YI SYLLABLE FOX -A0D6;ID # YI SYLLABLE FO -A0D7;ID # YI SYLLABLE FOP -A0D8;ID # YI SYLLABLE FUT -A0D9;ID # YI SYLLABLE FUX -A0DA;ID # YI SYLLABLE FU -A0DB;ID # YI SYLLABLE FUP -A0DC;ID # YI SYLLABLE FURX -A0DD;ID # YI SYLLABLE FUR -A0DE;ID # YI SYLLABLE FYT -A0DF;ID # YI SYLLABLE FYX -A0E0;ID # YI SYLLABLE FY -A0E1;ID # YI SYLLABLE FYP -A0E2;ID # YI SYLLABLE VIT -A0E3;ID # YI SYLLABLE VIX -A0E4;ID # YI SYLLABLE VI -A0E5;ID # YI SYLLABLE VIP -A0E6;ID # YI SYLLABLE VIET -A0E7;ID # YI SYLLABLE VIEX -A0E8;ID # YI SYLLABLE VIE -A0E9;ID # YI SYLLABLE VIEP -A0EA;ID # YI SYLLABLE VAT -A0EB;ID # YI SYLLABLE VAX -A0EC;ID # YI SYLLABLE VA -A0ED;ID # YI SYLLABLE VAP -A0EE;ID # YI SYLLABLE VOT -A0EF;ID # YI SYLLABLE VOX -A0F0;ID # YI SYLLABLE VO -A0F1;ID # YI SYLLABLE VOP -A0F2;ID # YI SYLLABLE VEX -A0F3;ID # YI SYLLABLE VEP -A0F4;ID # YI SYLLABLE VUT -A0F5;ID # YI SYLLABLE VUX -A0F6;ID # YI SYLLABLE VU -A0F7;ID # YI SYLLABLE VUP -A0F8;ID # YI SYLLABLE VURX -A0F9;ID # YI SYLLABLE VUR -A0FA;ID # YI SYLLABLE VYT -A0FB;ID # YI SYLLABLE VYX -A0FC;ID # YI SYLLABLE VY -A0FD;ID # YI SYLLABLE VYP -A0FE;ID # YI SYLLABLE VYRX -A0FF;ID # YI SYLLABLE VYR -A100;ID # YI SYLLABLE DIT -A101;ID # YI SYLLABLE DIX -A102;ID # YI SYLLABLE DI -A103;ID # YI SYLLABLE DIP -A104;ID # YI SYLLABLE DIEX -A105;ID # YI SYLLABLE DIE -A106;ID # YI SYLLABLE DIEP -A107;ID # YI SYLLABLE DAT -A108;ID # YI SYLLABLE DAX -A109;ID # YI SYLLABLE DA -A10A;ID # YI SYLLABLE DAP -A10B;ID # YI SYLLABLE DUOX -A10C;ID # YI SYLLABLE DUO -A10D;ID # YI SYLLABLE DOT -A10E;ID # YI SYLLABLE DOX -A10F;ID # YI SYLLABLE DO -A110;ID # YI SYLLABLE DOP -A111;ID # YI SYLLABLE DEX -A112;ID # YI SYLLABLE DE -A113;ID # YI SYLLABLE DEP -A114;ID # YI SYLLABLE DUT -A115;ID # YI SYLLABLE DUX -A116;ID # YI SYLLABLE DU -A117;ID # YI SYLLABLE DUP -A118;ID # YI SYLLABLE DURX -A119;ID # YI SYLLABLE DUR -A11A;ID # YI SYLLABLE TIT -A11B;ID # YI SYLLABLE TIX -A11C;ID # YI SYLLABLE TI -A11D;ID # YI SYLLABLE TIP -A11E;ID # YI SYLLABLE TIEX -A11F;ID # YI SYLLABLE TIE -A120;ID # YI SYLLABLE TIEP -A121;ID # YI SYLLABLE TAT -A122;ID # YI SYLLABLE TAX -A123;ID # YI SYLLABLE TA -A124;ID # YI SYLLABLE TAP -A125;ID # YI SYLLABLE TUOT -A126;ID # YI SYLLABLE TUOX -A127;ID # YI SYLLABLE TUO -A128;ID # YI SYLLABLE TUOP -A129;ID # YI SYLLABLE TOT -A12A;ID # YI SYLLABLE TOX -A12B;ID # YI SYLLABLE TO -A12C;ID # YI SYLLABLE TOP -A12D;ID # YI SYLLABLE TEX -A12E;ID # YI SYLLABLE TE -A12F;ID # YI SYLLABLE TEP -A130;ID # YI SYLLABLE TUT -A131;ID # YI SYLLABLE TUX -A132;ID # YI SYLLABLE TU -A133;ID # YI SYLLABLE TUP -A134;ID # YI SYLLABLE TURX -A135;ID # YI SYLLABLE TUR -A136;ID # YI SYLLABLE DDIT -A137;ID # YI SYLLABLE DDIX -A138;ID # YI SYLLABLE DDI -A139;ID # YI SYLLABLE DDIP -A13A;ID # YI SYLLABLE DDIEX -A13B;ID # YI SYLLABLE DDIE -A13C;ID # YI SYLLABLE DDIEP -A13D;ID # YI SYLLABLE DDAT -A13E;ID # YI SYLLABLE DDAX -A13F;ID # YI SYLLABLE DDA -A140;ID # YI SYLLABLE DDAP -A141;ID # YI SYLLABLE DDUOX -A142;ID # YI SYLLABLE DDUO -A143;ID # YI SYLLABLE DDUOP -A144;ID # YI SYLLABLE DDOT -A145;ID # YI SYLLABLE DDOX -A146;ID # YI SYLLABLE DDO -A147;ID # YI SYLLABLE DDOP -A148;ID # YI SYLLABLE DDEX -A149;ID # YI SYLLABLE DDE -A14A;ID # YI SYLLABLE DDEP -A14B;ID # YI SYLLABLE DDUT -A14C;ID # YI SYLLABLE DDUX -A14D;ID # YI SYLLABLE DDU -A14E;ID # YI SYLLABLE DDUP -A14F;ID # YI SYLLABLE DDURX -A150;ID # YI SYLLABLE DDUR -A151;ID # YI SYLLABLE NDIT -A152;ID # YI SYLLABLE NDIX -A153;ID # YI SYLLABLE NDI -A154;ID # YI SYLLABLE NDIP -A155;ID # YI SYLLABLE NDIEX -A156;ID # YI SYLLABLE NDIE -A157;ID # YI SYLLABLE NDAT -A158;ID # YI SYLLABLE NDAX -A159;ID # YI SYLLABLE NDA -A15A;ID # YI SYLLABLE NDAP -A15B;ID # YI SYLLABLE NDOT -A15C;ID # YI SYLLABLE NDOX -A15D;ID # YI SYLLABLE NDO -A15E;ID # YI SYLLABLE NDOP -A15F;ID # YI SYLLABLE NDEX -A160;ID # YI SYLLABLE NDE -A161;ID # YI SYLLABLE NDEP -A162;ID # YI SYLLABLE NDUT -A163;ID # YI SYLLABLE NDUX -A164;ID # YI SYLLABLE NDU -A165;ID # YI SYLLABLE NDUP -A166;ID # YI SYLLABLE NDURX -A167;ID # YI SYLLABLE NDUR -A168;ID # YI SYLLABLE HNIT -A169;ID # YI SYLLABLE HNIX -A16A;ID # YI SYLLABLE HNI -A16B;ID # YI SYLLABLE HNIP -A16C;ID # YI SYLLABLE HNIET -A16D;ID # YI SYLLABLE HNIEX -A16E;ID # YI SYLLABLE HNIE -A16F;ID # YI SYLLABLE HNIEP -A170;ID # YI SYLLABLE HNAT -A171;ID # YI SYLLABLE HNAX -A172;ID # YI SYLLABLE HNA -A173;ID # YI SYLLABLE HNAP -A174;ID # YI SYLLABLE HNUOX -A175;ID # YI SYLLABLE HNUO -A176;ID # YI SYLLABLE HNOT -A177;ID # YI SYLLABLE HNOX -A178;ID # YI SYLLABLE HNOP -A179;ID # YI SYLLABLE HNEX -A17A;ID # YI SYLLABLE HNE -A17B;ID # YI SYLLABLE HNEP -A17C;ID # YI SYLLABLE HNUT -A17D;ID # YI SYLLABLE NIT -A17E;ID # YI SYLLABLE NIX -A17F;ID # YI SYLLABLE NI -A180;ID # YI SYLLABLE NIP -A181;ID # YI SYLLABLE NIEX -A182;ID # YI SYLLABLE NIE -A183;ID # YI SYLLABLE NIEP -A184;ID # YI SYLLABLE NAX -A185;ID # YI SYLLABLE NA -A186;ID # YI SYLLABLE NAP -A187;ID # YI SYLLABLE NUOX -A188;ID # YI SYLLABLE NUO -A189;ID # YI SYLLABLE NUOP -A18A;ID # YI SYLLABLE NOT -A18B;ID # YI SYLLABLE NOX -A18C;ID # YI SYLLABLE NO -A18D;ID # YI SYLLABLE NOP -A18E;ID # YI SYLLABLE NEX -A18F;ID # YI SYLLABLE NE -A190;ID # YI SYLLABLE NEP -A191;ID # YI SYLLABLE NUT -A192;ID # YI SYLLABLE NUX -A193;ID # YI SYLLABLE NU -A194;ID # YI SYLLABLE NUP -A195;ID # YI SYLLABLE NURX -A196;ID # YI SYLLABLE NUR -A197;ID # YI SYLLABLE HLIT -A198;ID # YI SYLLABLE HLIX -A199;ID # YI SYLLABLE HLI -A19A;ID # YI SYLLABLE HLIP -A19B;ID # YI SYLLABLE HLIEX -A19C;ID # YI SYLLABLE HLIE -A19D;ID # YI SYLLABLE HLIEP -A19E;ID # YI SYLLABLE HLAT -A19F;ID # YI SYLLABLE HLAX -A1A0;ID # YI SYLLABLE HLA -A1A1;ID # YI SYLLABLE HLAP -A1A2;ID # YI SYLLABLE HLUOX -A1A3;ID # YI SYLLABLE HLUO -A1A4;ID # YI SYLLABLE HLUOP -A1A5;ID # YI SYLLABLE HLOX -A1A6;ID # YI SYLLABLE HLO -A1A7;ID # YI SYLLABLE HLOP -A1A8;ID # YI SYLLABLE HLEX -A1A9;ID # YI SYLLABLE HLE -A1AA;ID # YI SYLLABLE HLEP -A1AB;ID # YI SYLLABLE HLUT -A1AC;ID # YI SYLLABLE HLUX -A1AD;ID # YI SYLLABLE HLU -A1AE;ID # YI SYLLABLE HLUP -A1AF;ID # YI SYLLABLE HLURX -A1B0;ID # YI SYLLABLE HLUR -A1B1;ID # YI SYLLABLE HLYT -A1B2;ID # YI SYLLABLE HLYX -A1B3;ID # YI SYLLABLE HLY -A1B4;ID # YI SYLLABLE HLYP -A1B5;ID # YI SYLLABLE HLYRX -A1B6;ID # YI SYLLABLE HLYR -A1B7;ID # YI SYLLABLE LIT -A1B8;ID # YI SYLLABLE LIX -A1B9;ID # YI SYLLABLE LI -A1BA;ID # YI SYLLABLE LIP -A1BB;ID # YI SYLLABLE LIET -A1BC;ID # YI SYLLABLE LIEX -A1BD;ID # YI SYLLABLE LIE -A1BE;ID # YI SYLLABLE LIEP -A1BF;ID # YI SYLLABLE LAT -A1C0;ID # YI SYLLABLE LAX -A1C1;ID # YI SYLLABLE LA -A1C2;ID # YI SYLLABLE LAP -A1C3;ID # YI SYLLABLE LUOT -A1C4;ID # YI SYLLABLE LUOX -A1C5;ID # YI SYLLABLE LUO -A1C6;ID # YI SYLLABLE LUOP -A1C7;ID # YI SYLLABLE LOT -A1C8;ID # YI SYLLABLE LOX -A1C9;ID # YI SYLLABLE LO -A1CA;ID # YI SYLLABLE LOP -A1CB;ID # YI SYLLABLE LEX -A1CC;ID # YI SYLLABLE LE -A1CD;ID # YI SYLLABLE LEP -A1CE;ID # YI SYLLABLE LUT -A1CF;ID # YI SYLLABLE LUX -A1D0;ID # YI SYLLABLE LU -A1D1;ID # YI SYLLABLE LUP -A1D2;ID # YI SYLLABLE LURX -A1D3;ID # YI SYLLABLE LUR -A1D4;ID # YI SYLLABLE LYT -A1D5;ID # YI SYLLABLE LYX -A1D6;ID # YI SYLLABLE LY -A1D7;ID # YI SYLLABLE LYP -A1D8;ID # YI SYLLABLE LYRX -A1D9;ID # YI SYLLABLE LYR -A1DA;ID # YI SYLLABLE GIT -A1DB;ID # YI SYLLABLE GIX -A1DC;ID # YI SYLLABLE GI -A1DD;ID # YI SYLLABLE GIP -A1DE;ID # YI SYLLABLE GIET -A1DF;ID # YI SYLLABLE GIEX -A1E0;ID # YI SYLLABLE GIE -A1E1;ID # YI SYLLABLE GIEP -A1E2;ID # YI SYLLABLE GAT -A1E3;ID # YI SYLLABLE GAX -A1E4;ID # YI SYLLABLE GA -A1E5;ID # YI SYLLABLE GAP -A1E6;ID # YI SYLLABLE GUOT -A1E7;ID # YI SYLLABLE GUOX -A1E8;ID # YI SYLLABLE GUO -A1E9;ID # YI SYLLABLE GUOP -A1EA;ID # YI SYLLABLE GOT -A1EB;ID # YI SYLLABLE GOX -A1EC;ID # YI SYLLABLE GO -A1ED;ID # YI SYLLABLE GOP -A1EE;ID # YI SYLLABLE GET -A1EF;ID # YI SYLLABLE GEX -A1F0;ID # YI SYLLABLE GE -A1F1;ID # YI SYLLABLE GEP -A1F2;ID # YI SYLLABLE GUT -A1F3;ID # YI SYLLABLE GUX -A1F4;ID # YI SYLLABLE GU -A1F5;ID # YI SYLLABLE GUP -A1F6;ID # YI SYLLABLE GURX -A1F7;ID # YI SYLLABLE GUR -A1F8;ID # YI SYLLABLE KIT -A1F9;ID # YI SYLLABLE KIX -A1FA;ID # YI SYLLABLE KI -A1FB;ID # YI SYLLABLE KIP -A1FC;ID # YI SYLLABLE KIEX -A1FD;ID # YI SYLLABLE KIE -A1FE;ID # YI SYLLABLE KIEP -A1FF;ID # YI SYLLABLE KAT -A200;ID # YI SYLLABLE KAX -A201;ID # YI SYLLABLE KA -A202;ID # YI SYLLABLE KAP -A203;ID # YI SYLLABLE KUOX -A204;ID # YI SYLLABLE KUO -A205;ID # YI SYLLABLE KUOP -A206;ID # YI SYLLABLE KOT -A207;ID # YI SYLLABLE KOX -A208;ID # YI SYLLABLE KO -A209;ID # YI SYLLABLE KOP -A20A;ID # YI SYLLABLE KET -A20B;ID # YI SYLLABLE KEX -A20C;ID # YI SYLLABLE KE -A20D;ID # YI SYLLABLE KEP -A20E;ID # YI SYLLABLE KUT -A20F;ID # YI SYLLABLE KUX -A210;ID # YI SYLLABLE KU -A211;ID # YI SYLLABLE KUP -A212;ID # YI SYLLABLE KURX -A213;ID # YI SYLLABLE KUR -A214;ID # YI SYLLABLE GGIT -A215;ID # YI SYLLABLE GGIX -A216;ID # YI SYLLABLE GGI -A217;ID # YI SYLLABLE GGIEX -A218;ID # YI SYLLABLE GGIE -A219;ID # YI SYLLABLE GGIEP -A21A;ID # YI SYLLABLE GGAT -A21B;ID # YI SYLLABLE GGAX -A21C;ID # YI SYLLABLE GGA -A21D;ID # YI SYLLABLE GGAP -A21E;ID # YI SYLLABLE GGUOT -A21F;ID # YI SYLLABLE GGUOX -A220;ID # YI SYLLABLE GGUO -A221;ID # YI SYLLABLE GGUOP -A222;ID # YI SYLLABLE GGOT -A223;ID # YI SYLLABLE GGOX -A224;ID # YI SYLLABLE GGO -A225;ID # YI SYLLABLE GGOP -A226;ID # YI SYLLABLE GGET -A227;ID # YI SYLLABLE GGEX -A228;ID # YI SYLLABLE GGE -A229;ID # YI SYLLABLE GGEP -A22A;ID # YI SYLLABLE GGUT -A22B;ID # YI SYLLABLE GGUX -A22C;ID # YI SYLLABLE GGU -A22D;ID # YI SYLLABLE GGUP -A22E;ID # YI SYLLABLE GGURX -A22F;ID # YI SYLLABLE GGUR -A230;ID # YI SYLLABLE MGIEX -A231;ID # YI SYLLABLE MGIE -A232;ID # YI SYLLABLE MGAT -A233;ID # YI SYLLABLE MGAX -A234;ID # YI SYLLABLE MGA -A235;ID # YI SYLLABLE MGAP -A236;ID # YI SYLLABLE MGUOX -A237;ID # YI SYLLABLE MGUO -A238;ID # YI SYLLABLE MGUOP -A239;ID # YI SYLLABLE MGOT -A23A;ID # YI SYLLABLE MGOX -A23B;ID # YI SYLLABLE MGO -A23C;ID # YI SYLLABLE MGOP -A23D;ID # YI SYLLABLE MGEX -A23E;ID # YI SYLLABLE MGE -A23F;ID # YI SYLLABLE MGEP -A240;ID # YI SYLLABLE MGUT -A241;ID # YI SYLLABLE MGUX -A242;ID # YI SYLLABLE MGU -A243;ID # YI SYLLABLE MGUP -A244;ID # YI SYLLABLE MGURX -A245;ID # YI SYLLABLE MGUR -A246;ID # YI SYLLABLE HXIT -A247;ID # YI SYLLABLE HXIX -A248;ID # YI SYLLABLE HXI -A249;ID # YI SYLLABLE HXIP -A24A;ID # YI SYLLABLE HXIET -A24B;ID # YI SYLLABLE HXIEX -A24C;ID # YI SYLLABLE HXIE -A24D;ID # YI SYLLABLE HXIEP -A24E;ID # YI SYLLABLE HXAT -A24F;ID # YI SYLLABLE HXAX -A250;ID # YI SYLLABLE HXA -A251;ID # YI SYLLABLE HXAP -A252;ID # YI SYLLABLE HXUOT -A253;ID # YI SYLLABLE HXUOX -A254;ID # YI SYLLABLE HXUO -A255;ID # YI SYLLABLE HXUOP -A256;ID # YI SYLLABLE HXOT -A257;ID # YI SYLLABLE HXOX -A258;ID # YI SYLLABLE HXO -A259;ID # YI SYLLABLE HXOP -A25A;ID # YI SYLLABLE HXEX -A25B;ID # YI SYLLABLE HXE -A25C;ID # YI SYLLABLE HXEP -A25D;ID # YI SYLLABLE NGIEX -A25E;ID # YI SYLLABLE NGIE -A25F;ID # YI SYLLABLE NGIEP -A260;ID # YI SYLLABLE NGAT -A261;ID # YI SYLLABLE NGAX -A262;ID # YI SYLLABLE NGA -A263;ID # YI SYLLABLE NGAP -A264;ID # YI SYLLABLE NGUOT -A265;ID # YI SYLLABLE NGUOX -A266;ID # YI SYLLABLE NGUO -A267;ID # YI SYLLABLE NGOT -A268;ID # YI SYLLABLE NGOX -A269;ID # YI SYLLABLE NGO -A26A;ID # YI SYLLABLE NGOP -A26B;ID # YI SYLLABLE NGEX -A26C;ID # YI SYLLABLE NGE -A26D;ID # YI SYLLABLE NGEP -A26E;ID # YI SYLLABLE HIT -A26F;ID # YI SYLLABLE HIEX -A270;ID # YI SYLLABLE HIE -A271;ID # YI SYLLABLE HAT -A272;ID # YI SYLLABLE HAX -A273;ID # YI SYLLABLE HA -A274;ID # YI SYLLABLE HAP -A275;ID # YI SYLLABLE HUOT -A276;ID # YI SYLLABLE HUOX -A277;ID # YI SYLLABLE HUO -A278;ID # YI SYLLABLE HUOP -A279;ID # YI SYLLABLE HOT -A27A;ID # YI SYLLABLE HOX -A27B;ID # YI SYLLABLE HO -A27C;ID # YI SYLLABLE HOP -A27D;ID # YI SYLLABLE HEX -A27E;ID # YI SYLLABLE HE -A27F;ID # YI SYLLABLE HEP -A280;ID # YI SYLLABLE WAT -A281;ID # YI SYLLABLE WAX -A282;ID # YI SYLLABLE WA -A283;ID # YI SYLLABLE WAP -A284;ID # YI SYLLABLE WUOX -A285;ID # YI SYLLABLE WUO -A286;ID # YI SYLLABLE WUOP -A287;ID # YI SYLLABLE WOX -A288;ID # YI SYLLABLE WO -A289;ID # YI SYLLABLE WOP -A28A;ID # YI SYLLABLE WEX -A28B;ID # YI SYLLABLE WE -A28C;ID # YI SYLLABLE WEP -A28D;ID # YI SYLLABLE ZIT -A28E;ID # YI SYLLABLE ZIX -A28F;ID # YI SYLLABLE ZI -A290;ID # YI SYLLABLE ZIP -A291;ID # YI SYLLABLE ZIEX -A292;ID # YI SYLLABLE ZIE -A293;ID # YI SYLLABLE ZIEP -A294;ID # YI SYLLABLE ZAT -A295;ID # YI SYLLABLE ZAX -A296;ID # YI SYLLABLE ZA -A297;ID # YI SYLLABLE ZAP -A298;ID # YI SYLLABLE ZUOX -A299;ID # YI SYLLABLE ZUO -A29A;ID # YI SYLLABLE ZUOP -A29B;ID # YI SYLLABLE ZOT -A29C;ID # YI SYLLABLE ZOX -A29D;ID # YI SYLLABLE ZO -A29E;ID # YI SYLLABLE ZOP -A29F;ID # YI SYLLABLE ZEX -A2A0;ID # YI SYLLABLE ZE -A2A1;ID # YI SYLLABLE ZEP -A2A2;ID # YI SYLLABLE ZUT -A2A3;ID # YI SYLLABLE ZUX -A2A4;ID # YI SYLLABLE ZU -A2A5;ID # YI SYLLABLE ZUP -A2A6;ID # YI SYLLABLE ZURX -A2A7;ID # YI SYLLABLE ZUR -A2A8;ID # YI SYLLABLE ZYT -A2A9;ID # YI SYLLABLE ZYX -A2AA;ID # YI SYLLABLE ZY -A2AB;ID # YI SYLLABLE ZYP -A2AC;ID # YI SYLLABLE ZYRX -A2AD;ID # YI SYLLABLE ZYR -A2AE;ID # YI SYLLABLE CIT -A2AF;ID # YI SYLLABLE CIX -A2B0;ID # YI SYLLABLE CI -A2B1;ID # YI SYLLABLE CIP -A2B2;ID # YI SYLLABLE CIET -A2B3;ID # YI SYLLABLE CIEX -A2B4;ID # YI SYLLABLE CIE -A2B5;ID # YI SYLLABLE CIEP -A2B6;ID # YI SYLLABLE CAT -A2B7;ID # YI SYLLABLE CAX -A2B8;ID # YI SYLLABLE CA -A2B9;ID # YI SYLLABLE CAP -A2BA;ID # YI SYLLABLE CUOX -A2BB;ID # YI SYLLABLE CUO -A2BC;ID # YI SYLLABLE CUOP -A2BD;ID # YI SYLLABLE COT -A2BE;ID # YI SYLLABLE COX -A2BF;ID # YI SYLLABLE CO -A2C0;ID # YI SYLLABLE COP -A2C1;ID # YI SYLLABLE CEX -A2C2;ID # YI SYLLABLE CE -A2C3;ID # YI SYLLABLE CEP -A2C4;ID # YI SYLLABLE CUT -A2C5;ID # YI SYLLABLE CUX -A2C6;ID # YI SYLLABLE CU -A2C7;ID # YI SYLLABLE CUP -A2C8;ID # YI SYLLABLE CURX -A2C9;ID # YI SYLLABLE CUR -A2CA;ID # YI SYLLABLE CYT -A2CB;ID # YI SYLLABLE CYX -A2CC;ID # YI SYLLABLE CY -A2CD;ID # YI SYLLABLE CYP -A2CE;ID # YI SYLLABLE CYRX -A2CF;ID # YI SYLLABLE CYR -A2D0;ID # YI SYLLABLE ZZIT -A2D1;ID # YI SYLLABLE ZZIX -A2D2;ID # YI SYLLABLE ZZI -A2D3;ID # YI SYLLABLE ZZIP -A2D4;ID # YI SYLLABLE ZZIET -A2D5;ID # YI SYLLABLE ZZIEX -A2D6;ID # YI SYLLABLE ZZIE -A2D7;ID # YI SYLLABLE ZZIEP -A2D8;ID # YI SYLLABLE ZZAT -A2D9;ID # YI SYLLABLE ZZAX -A2DA;ID # YI SYLLABLE ZZA -A2DB;ID # YI SYLLABLE ZZAP -A2DC;ID # YI SYLLABLE ZZOX -A2DD;ID # YI SYLLABLE ZZO -A2DE;ID # YI SYLLABLE ZZOP -A2DF;ID # YI SYLLABLE ZZEX -A2E0;ID # YI SYLLABLE ZZE -A2E1;ID # YI SYLLABLE ZZEP -A2E2;ID # YI SYLLABLE ZZUX -A2E3;ID # YI SYLLABLE ZZU -A2E4;ID # YI SYLLABLE ZZUP -A2E5;ID # YI SYLLABLE ZZURX -A2E6;ID # YI SYLLABLE ZZUR -A2E7;ID # YI SYLLABLE ZZYT -A2E8;ID # YI SYLLABLE ZZYX -A2E9;ID # YI SYLLABLE ZZY -A2EA;ID # YI SYLLABLE ZZYP -A2EB;ID # YI SYLLABLE ZZYRX -A2EC;ID # YI SYLLABLE ZZYR -A2ED;ID # YI SYLLABLE NZIT -A2EE;ID # YI SYLLABLE NZIX -A2EF;ID # YI SYLLABLE NZI -A2F0;ID # YI SYLLABLE NZIP -A2F1;ID # YI SYLLABLE NZIEX -A2F2;ID # YI SYLLABLE NZIE -A2F3;ID # YI SYLLABLE NZIEP -A2F4;ID # YI SYLLABLE NZAT -A2F5;ID # YI SYLLABLE NZAX -A2F6;ID # YI SYLLABLE NZA -A2F7;ID # YI SYLLABLE NZAP -A2F8;ID # YI SYLLABLE NZUOX -A2F9;ID # YI SYLLABLE NZUO -A2FA;ID # YI SYLLABLE NZOX -A2FB;ID # YI SYLLABLE NZOP -A2FC;ID # YI SYLLABLE NZEX -A2FD;ID # YI SYLLABLE NZE -A2FE;ID # YI SYLLABLE NZUX -A2FF;ID # YI SYLLABLE NZU -A300;ID # YI SYLLABLE NZUP -A301;ID # YI SYLLABLE NZURX -A302;ID # YI SYLLABLE NZUR -A303;ID # YI SYLLABLE NZYT -A304;ID # YI SYLLABLE NZYX -A305;ID # YI SYLLABLE NZY -A306;ID # YI SYLLABLE NZYP -A307;ID # YI SYLLABLE NZYRX -A308;ID # YI SYLLABLE NZYR -A309;ID # YI SYLLABLE SIT -A30A;ID # YI SYLLABLE SIX -A30B;ID # YI SYLLABLE SI -A30C;ID # YI SYLLABLE SIP -A30D;ID # YI SYLLABLE SIEX -A30E;ID # YI SYLLABLE SIE -A30F;ID # YI SYLLABLE SIEP -A310;ID # YI SYLLABLE SAT -A311;ID # YI SYLLABLE SAX -A312;ID # YI SYLLABLE SA -A313;ID # YI SYLLABLE SAP -A314;ID # YI SYLLABLE SUOX -A315;ID # YI SYLLABLE SUO -A316;ID # YI SYLLABLE SUOP -A317;ID # YI SYLLABLE SOT -A318;ID # YI SYLLABLE SOX -A319;ID # YI SYLLABLE SO -A31A;ID # YI SYLLABLE SOP -A31B;ID # YI SYLLABLE SEX -A31C;ID # YI SYLLABLE SE -A31D;ID # YI SYLLABLE SEP -A31E;ID # YI SYLLABLE SUT -A31F;ID # YI SYLLABLE SUX -A320;ID # YI SYLLABLE SU -A321;ID # YI SYLLABLE SUP -A322;ID # YI SYLLABLE SURX -A323;ID # YI SYLLABLE SUR -A324;ID # YI SYLLABLE SYT -A325;ID # YI SYLLABLE SYX -A326;ID # YI SYLLABLE SY -A327;ID # YI SYLLABLE SYP -A328;ID # YI SYLLABLE SYRX -A329;ID # YI SYLLABLE SYR -A32A;ID # YI SYLLABLE SSIT -A32B;ID # YI SYLLABLE SSIX -A32C;ID # YI SYLLABLE SSI -A32D;ID # YI SYLLABLE SSIP -A32E;ID # YI SYLLABLE SSIEX -A32F;ID # YI SYLLABLE SSIE -A330;ID # YI SYLLABLE SSIEP -A331;ID # YI SYLLABLE SSAT -A332;ID # YI SYLLABLE SSAX -A333;ID # YI SYLLABLE SSA -A334;ID # YI SYLLABLE SSAP -A335;ID # YI SYLLABLE SSOT -A336;ID # YI SYLLABLE SSOX -A337;ID # YI SYLLABLE SSO -A338;ID # YI SYLLABLE SSOP -A339;ID # YI SYLLABLE SSEX -A33A;ID # YI SYLLABLE SSE -A33B;ID # YI SYLLABLE SSEP -A33C;ID # YI SYLLABLE SSUT -A33D;ID # YI SYLLABLE SSUX -A33E;ID # YI SYLLABLE SSU -A33F;ID # YI SYLLABLE SSUP -A340;ID # YI SYLLABLE SSYT -A341;ID # YI SYLLABLE SSYX -A342;ID # YI SYLLABLE SSY -A343;ID # YI SYLLABLE SSYP -A344;ID # YI SYLLABLE SSYRX -A345;ID # YI SYLLABLE SSYR -A346;ID # YI SYLLABLE ZHAT -A347;ID # YI SYLLABLE ZHAX -A348;ID # YI SYLLABLE ZHA -A349;ID # YI SYLLABLE ZHAP -A34A;ID # YI SYLLABLE ZHUOX -A34B;ID # YI SYLLABLE ZHUO -A34C;ID # YI SYLLABLE ZHUOP -A34D;ID # YI SYLLABLE ZHOT -A34E;ID # YI SYLLABLE ZHOX -A34F;ID # YI SYLLABLE ZHO -A350;ID # YI SYLLABLE ZHOP -A351;ID # YI SYLLABLE ZHET -A352;ID # YI SYLLABLE ZHEX -A353;ID # YI SYLLABLE ZHE -A354;ID # YI SYLLABLE ZHEP -A355;ID # YI SYLLABLE ZHUT -A356;ID # YI SYLLABLE ZHUX -A357;ID # YI SYLLABLE ZHU -A358;ID # YI SYLLABLE ZHUP -A359;ID # YI SYLLABLE ZHURX -A35A;ID # YI SYLLABLE ZHUR -A35B;ID # YI SYLLABLE ZHYT -A35C;ID # YI SYLLABLE ZHYX -A35D;ID # YI SYLLABLE ZHY -A35E;ID # YI SYLLABLE ZHYP -A35F;ID # YI SYLLABLE ZHYRX -A360;ID # YI SYLLABLE ZHYR -A361;ID # YI SYLLABLE CHAT -A362;ID # YI SYLLABLE CHAX -A363;ID # YI SYLLABLE CHA -A364;ID # YI SYLLABLE CHAP -A365;ID # YI SYLLABLE CHUOT -A366;ID # YI SYLLABLE CHUOX -A367;ID # YI SYLLABLE CHUO -A368;ID # YI SYLLABLE CHUOP -A369;ID # YI SYLLABLE CHOT -A36A;ID # YI SYLLABLE CHOX -A36B;ID # YI SYLLABLE CHO -A36C;ID # YI SYLLABLE CHOP -A36D;ID # YI SYLLABLE CHET -A36E;ID # YI SYLLABLE CHEX -A36F;ID # YI SYLLABLE CHE -A370;ID # YI SYLLABLE CHEP -A371;ID # YI SYLLABLE CHUX -A372;ID # YI SYLLABLE CHU -A373;ID # YI SYLLABLE CHUP -A374;ID # YI SYLLABLE CHURX -A375;ID # YI SYLLABLE CHUR -A376;ID # YI SYLLABLE CHYT -A377;ID # YI SYLLABLE CHYX -A378;ID # YI SYLLABLE CHY -A379;ID # YI SYLLABLE CHYP -A37A;ID # YI SYLLABLE CHYRX -A37B;ID # YI SYLLABLE CHYR -A37C;ID # YI SYLLABLE RRAX -A37D;ID # YI SYLLABLE RRA -A37E;ID # YI SYLLABLE RRUOX -A37F;ID # YI SYLLABLE RRUO -A380;ID # YI SYLLABLE RROT -A381;ID # YI SYLLABLE RROX -A382;ID # YI SYLLABLE RRO -A383;ID # YI SYLLABLE RROP -A384;ID # YI SYLLABLE RRET -A385;ID # YI SYLLABLE RREX -A386;ID # YI SYLLABLE RRE -A387;ID # YI SYLLABLE RREP -A388;ID # YI SYLLABLE RRUT -A389;ID # YI SYLLABLE RRUX -A38A;ID # YI SYLLABLE RRU -A38B;ID # YI SYLLABLE RRUP -A38C;ID # YI SYLLABLE RRURX -A38D;ID # YI SYLLABLE RRUR -A38E;ID # YI SYLLABLE RRYT -A38F;ID # YI SYLLABLE RRYX -A390;ID # YI SYLLABLE RRY -A391;ID # YI SYLLABLE RRYP -A392;ID # YI SYLLABLE RRYRX -A393;ID # YI SYLLABLE RRYR -A394;ID # YI SYLLABLE NRAT -A395;ID # YI SYLLABLE NRAX -A396;ID # YI SYLLABLE NRA -A397;ID # YI SYLLABLE NRAP -A398;ID # YI SYLLABLE NROX -A399;ID # YI SYLLABLE NRO -A39A;ID # YI SYLLABLE NROP -A39B;ID # YI SYLLABLE NRET -A39C;ID # YI SYLLABLE NREX -A39D;ID # YI SYLLABLE NRE -A39E;ID # YI SYLLABLE NREP -A39F;ID # YI SYLLABLE NRUT -A3A0;ID # YI SYLLABLE NRUX -A3A1;ID # YI SYLLABLE NRU -A3A2;ID # YI SYLLABLE NRUP -A3A3;ID # YI SYLLABLE NRURX -A3A4;ID # YI SYLLABLE NRUR -A3A5;ID # YI SYLLABLE NRYT -A3A6;ID # YI SYLLABLE NRYX -A3A7;ID # YI SYLLABLE NRY -A3A8;ID # YI SYLLABLE NRYP -A3A9;ID # YI SYLLABLE NRYRX -A3AA;ID # YI SYLLABLE NRYR -A3AB;ID # YI SYLLABLE SHAT -A3AC;ID # YI SYLLABLE SHAX -A3AD;ID # YI SYLLABLE SHA -A3AE;ID # YI SYLLABLE SHAP -A3AF;ID # YI SYLLABLE SHUOX -A3B0;ID # YI SYLLABLE SHUO -A3B1;ID # YI SYLLABLE SHUOP -A3B2;ID # YI SYLLABLE SHOT -A3B3;ID # YI SYLLABLE SHOX -A3B4;ID # YI SYLLABLE SHO -A3B5;ID # YI SYLLABLE SHOP -A3B6;ID # YI SYLLABLE SHET -A3B7;ID # YI SYLLABLE SHEX -A3B8;ID # YI SYLLABLE SHE -A3B9;ID # YI SYLLABLE SHEP -A3BA;ID # YI SYLLABLE SHUT -A3BB;ID # YI SYLLABLE SHUX -A3BC;ID # YI SYLLABLE SHU -A3BD;ID # YI SYLLABLE SHUP -A3BE;ID # YI SYLLABLE SHURX -A3BF;ID # YI SYLLABLE SHUR -A3C0;ID # YI SYLLABLE SHYT -A3C1;ID # YI SYLLABLE SHYX -A3C2;ID # YI SYLLABLE SHY -A3C3;ID # YI SYLLABLE SHYP -A3C4;ID # YI SYLLABLE SHYRX -A3C5;ID # YI SYLLABLE SHYR -A3C6;ID # YI SYLLABLE RAT -A3C7;ID # YI SYLLABLE RAX -A3C8;ID # YI SYLLABLE RA -A3C9;ID # YI SYLLABLE RAP -A3CA;ID # YI SYLLABLE RUOX -A3CB;ID # YI SYLLABLE RUO -A3CC;ID # YI SYLLABLE RUOP -A3CD;ID # YI SYLLABLE ROT -A3CE;ID # YI SYLLABLE ROX -A3CF;ID # YI SYLLABLE RO -A3D0;ID # YI SYLLABLE ROP -A3D1;ID # YI SYLLABLE REX -A3D2;ID # YI SYLLABLE RE -A3D3;ID # YI SYLLABLE REP -A3D4;ID # YI SYLLABLE RUT -A3D5;ID # YI SYLLABLE RUX -A3D6;ID # YI SYLLABLE RU -A3D7;ID # YI SYLLABLE RUP -A3D8;ID # YI SYLLABLE RURX -A3D9;ID # YI SYLLABLE RUR -A3DA;ID # YI SYLLABLE RYT -A3DB;ID # YI SYLLABLE RYX -A3DC;ID # YI SYLLABLE RY -A3DD;ID # YI SYLLABLE RYP -A3DE;ID # YI SYLLABLE RYRX -A3DF;ID # YI SYLLABLE RYR -A3E0;ID # YI SYLLABLE JIT -A3E1;ID # YI SYLLABLE JIX -A3E2;ID # YI SYLLABLE JI -A3E3;ID # YI SYLLABLE JIP -A3E4;ID # YI SYLLABLE JIET -A3E5;ID # YI SYLLABLE JIEX -A3E6;ID # YI SYLLABLE JIE -A3E7;ID # YI SYLLABLE JIEP -A3E8;ID # YI SYLLABLE JUOT -A3E9;ID # YI SYLLABLE JUOX -A3EA;ID # YI SYLLABLE JUO -A3EB;ID # YI SYLLABLE JUOP -A3EC;ID # YI SYLLABLE JOT -A3ED;ID # YI SYLLABLE JOX -A3EE;ID # YI SYLLABLE JO -A3EF;ID # YI SYLLABLE JOP -A3F0;ID # YI SYLLABLE JUT -A3F1;ID # YI SYLLABLE JUX -A3F2;ID # YI SYLLABLE JU -A3F3;ID # YI SYLLABLE JUP -A3F4;ID # YI SYLLABLE JURX -A3F5;ID # YI SYLLABLE JUR -A3F6;ID # YI SYLLABLE JYT -A3F7;ID # YI SYLLABLE JYX -A3F8;ID # YI SYLLABLE JY -A3F9;ID # YI SYLLABLE JYP -A3FA;ID # YI SYLLABLE JYRX -A3FB;ID # YI SYLLABLE JYR -A3FC;ID # YI SYLLABLE QIT -A3FD;ID # YI SYLLABLE QIX -A3FE;ID # YI SYLLABLE QI -A3FF;ID # YI SYLLABLE QIP -A400;ID # YI SYLLABLE QIET -A401;ID # YI SYLLABLE QIEX -A402;ID # YI SYLLABLE QIE -A403;ID # YI SYLLABLE QIEP -A404;ID # YI SYLLABLE QUOT -A405;ID # YI SYLLABLE QUOX -A406;ID # YI SYLLABLE QUO -A407;ID # YI SYLLABLE QUOP -A408;ID # YI SYLLABLE QOT -A409;ID # YI SYLLABLE QOX -A40A;ID # YI SYLLABLE QO -A40B;ID # YI SYLLABLE QOP -A40C;ID # YI SYLLABLE QUT -A40D;ID # YI SYLLABLE QUX -A40E;ID # YI SYLLABLE QU -A40F;ID # YI SYLLABLE QUP -A410;ID # YI SYLLABLE QURX -A411;ID # YI SYLLABLE QUR -A412;ID # YI SYLLABLE QYT -A413;ID # YI SYLLABLE QYX -A414;ID # YI SYLLABLE QY -A415;ID # YI SYLLABLE QYP -A416;ID # YI SYLLABLE QYRX -A417;ID # YI SYLLABLE QYR -A418;ID # YI SYLLABLE JJIT -A419;ID # YI SYLLABLE JJIX -A41A;ID # YI SYLLABLE JJI -A41B;ID # YI SYLLABLE JJIP -A41C;ID # YI SYLLABLE JJIET -A41D;ID # YI SYLLABLE JJIEX -A41E;ID # YI SYLLABLE JJIE -A41F;ID # YI SYLLABLE JJIEP -A420;ID # YI SYLLABLE JJUOX -A421;ID # YI SYLLABLE JJUO -A422;ID # YI SYLLABLE JJUOP -A423;ID # YI SYLLABLE JJOT -A424;ID # YI SYLLABLE JJOX -A425;ID # YI SYLLABLE JJO -A426;ID # YI SYLLABLE JJOP -A427;ID # YI SYLLABLE JJUT -A428;ID # YI SYLLABLE JJUX -A429;ID # YI SYLLABLE JJU -A42A;ID # YI SYLLABLE JJUP -A42B;ID # YI SYLLABLE JJURX -A42C;ID # YI SYLLABLE JJUR -A42D;ID # YI SYLLABLE JJYT -A42E;ID # YI SYLLABLE JJYX -A42F;ID # YI SYLLABLE JJY -A430;ID # YI SYLLABLE JJYP -A431;ID # YI SYLLABLE NJIT -A432;ID # YI SYLLABLE NJIX -A433;ID # YI SYLLABLE NJI -A434;ID # YI SYLLABLE NJIP -A435;ID # YI SYLLABLE NJIET -A436;ID # YI SYLLABLE NJIEX -A437;ID # YI SYLLABLE NJIE -A438;ID # YI SYLLABLE NJIEP -A439;ID # YI SYLLABLE NJUOX -A43A;ID # YI SYLLABLE NJUO -A43B;ID # YI SYLLABLE NJOT -A43C;ID # YI SYLLABLE NJOX -A43D;ID # YI SYLLABLE NJO -A43E;ID # YI SYLLABLE NJOP -A43F;ID # YI SYLLABLE NJUX -A440;ID # YI SYLLABLE NJU -A441;ID # YI SYLLABLE NJUP -A442;ID # YI SYLLABLE NJURX -A443;ID # YI SYLLABLE NJUR -A444;ID # YI SYLLABLE NJYT -A445;ID # YI SYLLABLE NJYX -A446;ID # YI SYLLABLE NJY -A447;ID # YI SYLLABLE NJYP -A448;ID # YI SYLLABLE NJYRX -A449;ID # YI SYLLABLE NJYR -A44A;ID # YI SYLLABLE NYIT -A44B;ID # YI SYLLABLE NYIX -A44C;ID # YI SYLLABLE NYI -A44D;ID # YI SYLLABLE NYIP -A44E;ID # YI SYLLABLE NYIET -A44F;ID # YI SYLLABLE NYIEX -A450;ID # YI SYLLABLE NYIE -A451;ID # YI SYLLABLE NYIEP -A452;ID # YI SYLLABLE NYUOX -A453;ID # YI SYLLABLE NYUO -A454;ID # YI SYLLABLE NYUOP -A455;ID # YI SYLLABLE NYOT -A456;ID # YI SYLLABLE NYOX -A457;ID # YI SYLLABLE NYO -A458;ID # YI SYLLABLE NYOP -A459;ID # YI SYLLABLE NYUT -A45A;ID # YI SYLLABLE NYUX -A45B;ID # YI SYLLABLE NYU -A45C;ID # YI SYLLABLE NYUP -A45D;ID # YI SYLLABLE XIT -A45E;ID # YI SYLLABLE XIX -A45F;ID # YI SYLLABLE XI -A460;ID # YI SYLLABLE XIP -A461;ID # YI SYLLABLE XIET -A462;ID # YI SYLLABLE XIEX -A463;ID # YI SYLLABLE XIE -A464;ID # YI SYLLABLE XIEP -A465;ID # YI SYLLABLE XUOX -A466;ID # YI SYLLABLE XUO -A467;ID # YI SYLLABLE XOT -A468;ID # YI SYLLABLE XOX -A469;ID # YI SYLLABLE XO -A46A;ID # YI SYLLABLE XOP -A46B;ID # YI SYLLABLE XYT -A46C;ID # YI SYLLABLE XYX -A46D;ID # YI SYLLABLE XY -A46E;ID # YI SYLLABLE XYP -A46F;ID # YI SYLLABLE XYRX -A470;ID # YI SYLLABLE XYR -A471;ID # YI SYLLABLE YIT -A472;ID # YI SYLLABLE YIX -A473;ID # YI SYLLABLE YI -A474;ID # YI SYLLABLE YIP -A475;ID # YI SYLLABLE YIET -A476;ID # YI SYLLABLE YIEX -A477;ID # YI SYLLABLE YIE -A478;ID # YI SYLLABLE YIEP -A479;ID # YI SYLLABLE YUOT -A47A;ID # YI SYLLABLE YUOX -A47B;ID # YI SYLLABLE YUO -A47C;ID # YI SYLLABLE YUOP -A47D;ID # YI SYLLABLE YOT -A47E;ID # YI SYLLABLE YOX -A47F;ID # YI SYLLABLE YO -A480;ID # YI SYLLABLE YOP -A481;ID # YI SYLLABLE YUT -A482;ID # YI SYLLABLE YUX -A483;ID # YI SYLLABLE YU -A484;ID # YI SYLLABLE YUP -A485;ID # YI SYLLABLE YURX -A486;ID # YI SYLLABLE YUR -A487;ID # YI SYLLABLE YYT -A488;ID # YI SYLLABLE YYX -A489;ID # YI SYLLABLE YY -A48A;ID # YI SYLLABLE YYP -A48B;ID # YI SYLLABLE YYRX -A48C;ID # YI SYLLABLE YYR -A490;ID # YI RADICAL QOT -A491;ID # YI RADICAL LI -A492;ID # YI RADICAL KIT -A493;ID # YI RADICAL NYIP -A494;ID # YI RADICAL CYP -A495;ID # YI RADICAL SSI -A496;ID # YI RADICAL GGOP -A497;ID # YI RADICAL GEP -A498;ID # YI RADICAL MI -A499;ID # YI RADICAL HXIT -A49A;ID # YI RADICAL LYR -A49B;ID # YI RADICAL BBUT -A49C;ID # YI RADICAL MOP -A49D;ID # YI RADICAL YO -A49E;ID # YI RADICAL PUT -A49F;ID # YI RADICAL HXUO -A4A0;ID # YI RADICAL TAT -A4A1;ID # YI RADICAL GA -A4A2;ID # YI RADICAL ZUP -A4A3;ID # YI RADICAL CYT -A4A4;ID # YI RADICAL DDUR -A4A5;ID # YI RADICAL BUR -A4A6;ID # YI RADICAL GGUO -A4A7;ID # YI RADICAL NYOP -A4A8;ID # YI RADICAL TU -A4A9;ID # YI RADICAL OP -A4AA;ID # YI RADICAL JJUT -A4AB;ID # YI RADICAL ZOT -A4AC;ID # YI RADICAL PYT -A4AD;ID # YI RADICAL HMO -A4AE;ID # YI RADICAL YIT -A4AF;ID # YI RADICAL VUR -A4B0;ID # YI RADICAL SHY -A4B1;ID # YI RADICAL VEP -A4B2;ID # YI RADICAL ZA -A4B3;ID # YI RADICAL JO -A4B4;ID # YI RADICAL NZUP -A4B5;ID # YI RADICAL JJY -A4B6;ID # YI RADICAL GOT -A4B7;ID # YI RADICAL JJIE -A4B8;ID # YI RADICAL WO -A4B9;ID # YI RADICAL DU -A4BA;ID # YI RADICAL SHUR -A4BB;ID # YI RADICAL LIE -A4BC;ID # YI RADICAL CY -A4BD;ID # YI RADICAL CUOP -A4BE;ID # YI RADICAL CIP -A4BF;ID # YI RADICAL HXOP -A4C0;ID # YI RADICAL SHAT -A4C1;ID # YI RADICAL ZUR -A4C2;ID # YI RADICAL SHOP -A4C3;ID # YI RADICAL CHE -A4C4;ID # YI RADICAL ZZIET -A4C5;ID # YI RADICAL NBIE -A4C6;ID # YI RADICAL KE -A700;AL # MODIFIER LETTER CHINESE TONE YIN PING -A701;AL # MODIFIER LETTER CHINESE TONE YANG PING -A702;AL # MODIFIER LETTER CHINESE TONE YIN SHANG -A703;AL # MODIFIER LETTER CHINESE TONE YANG SHANG -A704;AL # MODIFIER LETTER CHINESE TONE YIN QU -A705;AL # MODIFIER LETTER CHINESE TONE YANG QU -A706;AL # MODIFIER LETTER CHINESE TONE YIN RU -A707;AL # MODIFIER LETTER CHINESE TONE YANG RU -A708;AL # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR -A709;AL # MODIFIER LETTER HIGH DOTTED TONE BAR -A70A;AL # MODIFIER LETTER MID DOTTED TONE BAR -A70B;AL # MODIFIER LETTER LOW DOTTED TONE BAR -A70C;AL # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR -A70D;AL # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR -A70E;AL # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR -A70F;AL # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR -A710;AL # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR -A711;AL # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR -A712;AL # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR -A713;AL # MODIFIER LETTER HIGH LEFT-STEM TONE BAR -A714;AL # MODIFIER LETTER MID LEFT-STEM TONE BAR -A715;AL # MODIFIER LETTER LOW LEFT-STEM TONE BAR -A716;AL # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -A717;AL # MODIFIER LETTER DOT VERTICAL BAR -A718;AL # MODIFIER LETTER DOT SLASH -A719;AL # MODIFIER LETTER DOT HORIZONTAL BAR -A71A;AL # MODIFIER LETTER LOWER RIGHT CORNER ANGLE -A720;AL # MODIFIER LETTER STRESS AND HIGH TONE -A721;AL # MODIFIER LETTER STRESS AND LOW TONE -A800;AL # SYLOTI NAGRI LETTER A -A801;AL # SYLOTI NAGRI LETTER I -A802;CM # SYLOTI NAGRI SIGN DVISVARA -A803;AL # SYLOTI NAGRI LETTER U -A804;AL # SYLOTI NAGRI LETTER E -A805;AL # SYLOTI NAGRI LETTER O -A806;CM # SYLOTI NAGRI SIGN HASANTA -A807;AL # SYLOTI NAGRI LETTER KO -A808;AL # SYLOTI NAGRI LETTER KHO -A809;AL # SYLOTI NAGRI LETTER GO -A80A;AL # SYLOTI NAGRI LETTER GHO -A80B;CM # SYLOTI NAGRI SIGN ANUSVARA -A80C;AL # SYLOTI NAGRI LETTER CO -A80D;AL # SYLOTI NAGRI LETTER CHO -A80E;AL # SYLOTI NAGRI LETTER JO -A80F;AL # SYLOTI NAGRI LETTER JHO -A810;AL # SYLOTI NAGRI LETTER TTO -A811;AL # SYLOTI NAGRI LETTER TTHO -A812;AL # SYLOTI NAGRI LETTER DDO -A813;AL # SYLOTI NAGRI LETTER DDHO -A814;AL # SYLOTI NAGRI LETTER TO -A815;AL # SYLOTI NAGRI LETTER THO -A816;AL # SYLOTI NAGRI LETTER DO -A817;AL # SYLOTI NAGRI LETTER DHO -A818;AL # SYLOTI NAGRI LETTER NO -A819;AL # SYLOTI NAGRI LETTER PO -A81A;AL # SYLOTI NAGRI LETTER PHO -A81B;AL # SYLOTI NAGRI LETTER BO -A81C;AL # SYLOTI NAGRI LETTER BHO -A81D;AL # SYLOTI NAGRI LETTER MO -A81E;AL # SYLOTI NAGRI LETTER RO -A81F;AL # SYLOTI NAGRI LETTER LO -A820;AL # SYLOTI NAGRI LETTER RRO -A821;AL # SYLOTI NAGRI LETTER SO -A822;AL # SYLOTI NAGRI LETTER HO -A823;CM # SYLOTI NAGRI VOWEL SIGN A -A824;CM # SYLOTI NAGRI VOWEL SIGN I -A825;CM # SYLOTI NAGRI VOWEL SIGN U -A826;CM # SYLOTI NAGRI VOWEL SIGN E -A827;CM # SYLOTI NAGRI VOWEL SIGN OO -A828;AL # SYLOTI NAGRI POETRY MARK-1 -A829;AL # SYLOTI NAGRI POETRY MARK-2 -A82A;AL # SYLOTI NAGRI POETRY MARK-3 -A82B;AL # SYLOTI NAGRI POETRY MARK-4 -A840;AL # PHAGS-PA LETTER KA -A841;AL # PHAGS-PA LETTER KHA -A842;AL # PHAGS-PA LETTER GA -A843;AL # PHAGS-PA LETTER NGA -A844;AL # PHAGS-PA LETTER CA -A845;AL # PHAGS-PA LETTER CHA -A846;AL # PHAGS-PA LETTER JA -A847;AL # PHAGS-PA LETTER NYA -A848;AL # PHAGS-PA LETTER TA -A849;AL # PHAGS-PA LETTER THA -A84A;AL # PHAGS-PA LETTER DA -A84B;AL # PHAGS-PA LETTER NA -A84C;AL # PHAGS-PA LETTER PA -A84D;AL # PHAGS-PA LETTER PHA -A84E;AL # PHAGS-PA LETTER BA -A84F;AL # PHAGS-PA LETTER MA -A850;AL # PHAGS-PA LETTER TSA -A851;AL # PHAGS-PA LETTER TSHA -A852;AL # PHAGS-PA LETTER DZA -A853;AL # PHAGS-PA LETTER WA -A854;AL # PHAGS-PA LETTER ZHA -A855;AL # PHAGS-PA LETTER ZA -A856;AL # PHAGS-PA LETTER SMALL A -A857;AL # PHAGS-PA LETTER YA -A858;AL # PHAGS-PA LETTER RA -A859;AL # PHAGS-PA LETTER LA -A85A;AL # PHAGS-PA LETTER SHA -A85B;AL # PHAGS-PA LETTER SA -A85C;AL # PHAGS-PA LETTER HA -A85D;AL # PHAGS-PA LETTER A -A85E;AL # PHAGS-PA LETTER I -A85F;AL # PHAGS-PA LETTER U -A860;AL # PHAGS-PA LETTER E -A861;AL # PHAGS-PA LETTER O -A862;AL # PHAGS-PA LETTER QA -A863;AL # PHAGS-PA LETTER XA -A864;AL # PHAGS-PA LETTER FA -A865;AL # PHAGS-PA LETTER GGA -A866;AL # PHAGS-PA LETTER EE -A867;AL # PHAGS-PA SUBJOINED LETTER WA -A868;AL # PHAGS-PA SUBJOINED LETTER YA -A869;AL # PHAGS-PA LETTER TTA -A86A;AL # PHAGS-PA LETTER TTHA -A86B;AL # PHAGS-PA LETTER DDA -A86C;AL # PHAGS-PA LETTER NNA -A86D;AL # PHAGS-PA LETTER ALTERNATE YA -A86E;AL # PHAGS-PA LETTER VOICELESS SHA -A86F;AL # PHAGS-PA LETTER VOICED HA -A870;AL # PHAGS-PA LETTER ASPIRATED FA -A871;AL # PHAGS-PA SUBJOINED LETTER RA -A872;AL # PHAGS-PA SUPERFIXED LETTER RA -A873;AL # PHAGS-PA LETTER CANDRABINDU -A874;BB # PHAGS-PA SINGLE HEAD MARK -A875;BB # PHAGS-PA DOUBLE HEAD MARK -A876;EX # PHAGS-PA MARK SHAD -A877;EX # PHAGS-PA MARK DOUBLE SHAD -AC00;H2 # HANGUL SYLLABLE GA -AC01..AC1B;H3 # HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH -AC1C;H2 # HANGUL SYLLABLE GAE -AC1D..AC37;H3 # HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH -AC38;H2 # HANGUL SYLLABLE GYA -AC39..AC53;H3 # HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH -AC54;H2 # HANGUL SYLLABLE GYAE -AC55..AC6F;H3 # HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH -AC70;H2 # HANGUL SYLLABLE GEO -AC71..AC8B;H3 # HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH -AC8C;H2 # HANGUL SYLLABLE GE -AC8D..ACA7;H3 # HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH -ACA8;H2 # HANGUL SYLLABLE GYEO -ACA9..ACC3;H3 # HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH -ACC4;H2 # HANGUL SYLLABLE GYE -ACC5..ACDF;H3 # HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH -ACE0;H2 # HANGUL SYLLABLE GO -ACE1..ACFB;H3 # HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH -ACFC;H2 # HANGUL SYLLABLE GWA -ACFD..AD17;H3 # HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH -AD18;H2 # HANGUL SYLLABLE GWAE -AD19..AD33;H3 # HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH -AD34;H2 # HANGUL SYLLABLE GOE -AD35..AD4F;H3 # HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH -AD50;H2 # HANGUL SYLLABLE GYO -AD51..AD6B;H3 # HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH -AD6C;H2 # HANGUL SYLLABLE GU -AD6D..AD87;H3 # HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH -AD88;H2 # HANGUL SYLLABLE GWEO -AD89..ADA3;H3 # HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH -ADA4;H2 # HANGUL SYLLABLE GWE -ADA5..ADBF;H3 # HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH -ADC0;H2 # HANGUL SYLLABLE GWI -ADC1..ADDB;H3 # HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH -ADDC;H2 # HANGUL SYLLABLE GYU -ADDD..ADF7;H3 # HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH -ADF8;H2 # HANGUL SYLLABLE GEU -ADF9..AE13;H3 # HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH -AE14;H2 # HANGUL SYLLABLE GYI -AE15..AE2F;H3 # HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH -AE30;H2 # HANGUL SYLLABLE GI -AE31..AE4B;H3 # HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH -AE4C;H2 # HANGUL SYLLABLE GGA -AE4D..AE67;H3 # HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH -AE68;H2 # HANGUL SYLLABLE GGAE -AE69..AE83;H3 # HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH -AE84;H2 # HANGUL SYLLABLE GGYA -AE85..AE9F;H3 # HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH -AEA0;H2 # HANGUL SYLLABLE GGYAE -AEA1..AEBB;H3 # HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH -AEBC;H2 # HANGUL SYLLABLE GGEO -AEBD..AED7;H3 # HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH -AED8;H2 # HANGUL SYLLABLE GGE -AED9..AEF3;H3 # HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH -AEF4;H2 # HANGUL SYLLABLE GGYEO -AEF5..AF0F;H3 # HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH -AF10;H2 # HANGUL SYLLABLE GGYE -AF11..AF2B;H3 # HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH -AF2C;H2 # HANGUL SYLLABLE GGO -AF2D..AF47;H3 # HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH -AF48;H2 # HANGUL SYLLABLE GGWA -AF49..AF63;H3 # HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH -AF64;H2 # HANGUL SYLLABLE GGWAE -AF65..AF7F;H3 # HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH -AF80;H2 # HANGUL SYLLABLE GGOE -AF81..AF9B;H3 # HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH -AF9C;H2 # HANGUL SYLLABLE GGYO -AF9D..AFB7;H3 # HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH -AFB8;H2 # HANGUL SYLLABLE GGU -AFB9..AFD3;H3 # HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH -AFD4;H2 # HANGUL SYLLABLE GGWEO -AFD5..AFEF;H3 # HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH -AFF0;H2 # HANGUL SYLLABLE GGWE -AFF1..B00B;H3 # HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH -B00C;H2 # HANGUL SYLLABLE GGWI -B00D..B027;H3 # HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH -B028;H2 # HANGUL SYLLABLE GGYU -B029..B043;H3 # HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH -B044;H2 # HANGUL SYLLABLE GGEU -B045..B05F;H3 # HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH -B060;H2 # HANGUL SYLLABLE GGYI -B061..B07B;H3 # HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH -B07C;H2 # HANGUL SYLLABLE GGI -B07D..B097;H3 # HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH -B098;H2 # HANGUL SYLLABLE NA -B099..B0B3;H3 # HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH -B0B4;H2 # HANGUL SYLLABLE NAE -B0B5..B0CF;H3 # HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH -B0D0;H2 # HANGUL SYLLABLE NYA -B0D1..B0EB;H3 # HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH -B0EC;H2 # HANGUL SYLLABLE NYAE -B0ED..B107;H3 # HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH -B108;H2 # HANGUL SYLLABLE NEO -B109..B123;H3 # HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH -B124;H2 # HANGUL SYLLABLE NE -B125..B13F;H3 # HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH -B140;H2 # HANGUL SYLLABLE NYEO -B141..B15B;H3 # HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH -B15C;H2 # HANGUL SYLLABLE NYE -B15D..B177;H3 # HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH -B178;H2 # HANGUL SYLLABLE NO -B179..B193;H3 # HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH -B194;H2 # HANGUL SYLLABLE NWA -B195..B1AF;H3 # HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH -B1B0;H2 # HANGUL SYLLABLE NWAE -B1B1..B1CB;H3 # HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH -B1CC;H2 # HANGUL SYLLABLE NOE -B1CD..B1E7;H3 # HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH -B1E8;H2 # HANGUL SYLLABLE NYO -B1E9..B203;H3 # HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH -B204;H2 # HANGUL SYLLABLE NU -B205..B21F;H3 # HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH -B220;H2 # HANGUL SYLLABLE NWEO -B221..B23B;H3 # HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH -B23C;H2 # HANGUL SYLLABLE NWE -B23D..B257;H3 # HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH -B258;H2 # HANGUL SYLLABLE NWI -B259..B273;H3 # HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH -B274;H2 # HANGUL SYLLABLE NYU -B275..B28F;H3 # HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH -B290;H2 # HANGUL SYLLABLE NEU -B291..B2AB;H3 # HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH -B2AC;H2 # HANGUL SYLLABLE NYI -B2AD..B2C7;H3 # HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH -B2C8;H2 # HANGUL SYLLABLE NI -B2C9..B2E3;H3 # HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH -B2E4;H2 # HANGUL SYLLABLE DA -B2E5..B2FF;H3 # HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH -B300;H2 # HANGUL SYLLABLE DAE -B301..B31B;H3 # HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH -B31C;H2 # HANGUL SYLLABLE DYA -B31D..B337;H3 # HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH -B338;H2 # HANGUL SYLLABLE DYAE -B339..B353;H3 # HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH -B354;H2 # HANGUL SYLLABLE DEO -B355..B36F;H3 # HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH -B370;H2 # HANGUL SYLLABLE DE -B371..B38B;H3 # HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH -B38C;H2 # HANGUL SYLLABLE DYEO -B38D..B3A7;H3 # HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH -B3A8;H2 # HANGUL SYLLABLE DYE -B3A9..B3C3;H3 # HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH -B3C4;H2 # HANGUL SYLLABLE DO -B3C5..B3DF;H3 # HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH -B3E0;H2 # HANGUL SYLLABLE DWA -B3E1..B3FB;H3 # HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH -B3FC;H2 # HANGUL SYLLABLE DWAE -B3FD..B417;H3 # HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH -B418;H2 # HANGUL SYLLABLE DOE -B419..B433;H3 # HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH -B434;H2 # HANGUL SYLLABLE DYO -B435..B44F;H3 # HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH -B450;H2 # HANGUL SYLLABLE DU -B451..B46B;H3 # HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH -B46C;H2 # HANGUL SYLLABLE DWEO -B46D..B487;H3 # HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH -B488;H2 # HANGUL SYLLABLE DWE -B489..B4A3;H3 # HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH -B4A4;H2 # HANGUL SYLLABLE DWI -B4A5..B4BF;H3 # HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH -B4C0;H2 # HANGUL SYLLABLE DYU -B4C1..B4DB;H3 # HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH -B4DC;H2 # HANGUL SYLLABLE DEU -B4DD..B4F7;H3 # HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH -B4F8;H2 # HANGUL SYLLABLE DYI -B4F9..B513;H3 # HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH -B514;H2 # HANGUL SYLLABLE DI -B515..B52F;H3 # HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH -B530;H2 # HANGUL SYLLABLE DDA -B531..B54B;H3 # HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH -B54C;H2 # HANGUL SYLLABLE DDAE -B54D..B567;H3 # HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH -B568;H2 # HANGUL SYLLABLE DDYA -B569..B583;H3 # HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH -B584;H2 # HANGUL SYLLABLE DDYAE -B585..B59F;H3 # HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH -B5A0;H2 # HANGUL SYLLABLE DDEO -B5A1..B5BB;H3 # HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH -B5BC;H2 # HANGUL SYLLABLE DDE -B5BD..B5D7;H3 # HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH -B5D8;H2 # HANGUL SYLLABLE DDYEO -B5D9..B5F3;H3 # HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH -B5F4;H2 # HANGUL SYLLABLE DDYE -B5F5..B60F;H3 # HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH -B610;H2 # HANGUL SYLLABLE DDO -B611..B62B;H3 # HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH -B62C;H2 # HANGUL SYLLABLE DDWA -B62D..B647;H3 # HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH -B648;H2 # HANGUL SYLLABLE DDWAE -B649..B663;H3 # HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH -B664;H2 # HANGUL SYLLABLE DDOE -B665..B67F;H3 # HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH -B680;H2 # HANGUL SYLLABLE DDYO -B681..B69B;H3 # HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH -B69C;H2 # HANGUL SYLLABLE DDU -B69D..B6B7;H3 # HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH -B6B8;H2 # HANGUL SYLLABLE DDWEO -B6B9..B6D3;H3 # HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH -B6D4;H2 # HANGUL SYLLABLE DDWE -B6D5..B6EF;H3 # HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH -B6F0;H2 # HANGUL SYLLABLE DDWI -B6F1..B70B;H3 # HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH -B70C;H2 # HANGUL SYLLABLE DDYU -B70D..B727;H3 # HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH -B728;H2 # HANGUL SYLLABLE DDEU -B729..B743;H3 # HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH -B744;H2 # HANGUL SYLLABLE DDYI -B745..B75F;H3 # HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH -B760;H2 # HANGUL SYLLABLE DDI -B761..B77B;H3 # HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH -B77C;H2 # HANGUL SYLLABLE RA -B77D..B797;H3 # HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH -B798;H2 # HANGUL SYLLABLE RAE -B799..B7B3;H3 # HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH -B7B4;H2 # HANGUL SYLLABLE RYA -B7B5..B7CF;H3 # HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH -B7D0;H2 # HANGUL SYLLABLE RYAE -B7D1..B7EB;H3 # HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH -B7EC;H2 # HANGUL SYLLABLE REO -B7ED..B807;H3 # HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH -B808;H2 # HANGUL SYLLABLE RE -B809..B823;H3 # HANGUL SYLLABLE REG..HANGUL SYLLABLE REH -B824;H2 # HANGUL SYLLABLE RYEO -B825..B83F;H3 # HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH -B840;H2 # HANGUL SYLLABLE RYE -B841..B85B;H3 # HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH -B85C;H2 # HANGUL SYLLABLE RO -B85D..B877;H3 # HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH -B878;H2 # HANGUL SYLLABLE RWA -B879..B893;H3 # HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH -B894;H2 # HANGUL SYLLABLE RWAE -B895..B8AF;H3 # HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH -B8B0;H2 # HANGUL SYLLABLE ROE -B8B1..B8CB;H3 # HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH -B8CC;H2 # HANGUL SYLLABLE RYO -B8CD..B8E7;H3 # HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH -B8E8;H2 # HANGUL SYLLABLE RU -B8E9..B903;H3 # HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH -B904;H2 # HANGUL SYLLABLE RWEO -B905..B91F;H3 # HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH -B920;H2 # HANGUL SYLLABLE RWE -B921..B93B;H3 # HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH -B93C;H2 # HANGUL SYLLABLE RWI -B93D..B957;H3 # HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH -B958;H2 # HANGUL SYLLABLE RYU -B959..B973;H3 # HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH -B974;H2 # HANGUL SYLLABLE REU -B975..B98F;H3 # HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH -B990;H2 # HANGUL SYLLABLE RYI -B991..B9AB;H3 # HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH -B9AC;H2 # HANGUL SYLLABLE RI -B9AD..B9C7;H3 # HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH -B9C8;H2 # HANGUL SYLLABLE MA -B9C9..B9E3;H3 # HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH -B9E4;H2 # HANGUL SYLLABLE MAE -B9E5..B9FF;H3 # HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH -BA00;H2 # HANGUL SYLLABLE MYA -BA01..BA1B;H3 # HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH -BA1C;H2 # HANGUL SYLLABLE MYAE -BA1D..BA37;H3 # HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH -BA38;H2 # HANGUL SYLLABLE MEO -BA39..BA53;H3 # HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH -BA54;H2 # HANGUL SYLLABLE ME -BA55..BA6F;H3 # HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH -BA70;H2 # HANGUL SYLLABLE MYEO -BA71..BA8B;H3 # HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH -BA8C;H2 # HANGUL SYLLABLE MYE -BA8D..BAA7;H3 # HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH -BAA8;H2 # HANGUL SYLLABLE MO -BAA9..BAC3;H3 # HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH -BAC4;H2 # HANGUL SYLLABLE MWA -BAC5..BADF;H3 # HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH -BAE0;H2 # HANGUL SYLLABLE MWAE -BAE1..BAFB;H3 # HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH -BAFC;H2 # HANGUL SYLLABLE MOE -BAFD..BB17;H3 # HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH -BB18;H2 # HANGUL SYLLABLE MYO -BB19..BB33;H3 # HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH -BB34;H2 # HANGUL SYLLABLE MU -BB35..BB4F;H3 # HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH -BB50;H2 # HANGUL SYLLABLE MWEO -BB51..BB6B;H3 # HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH -BB6C;H2 # HANGUL SYLLABLE MWE -BB6D..BB87;H3 # HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH -BB88;H2 # HANGUL SYLLABLE MWI -BB89..BBA3;H3 # HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH -BBA4;H2 # HANGUL SYLLABLE MYU -BBA5..BBBF;H3 # HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH -BBC0;H2 # HANGUL SYLLABLE MEU -BBC1..BBDB;H3 # HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH -BBDC;H2 # HANGUL SYLLABLE MYI -BBDD..BBF7;H3 # HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH -BBF8;H2 # HANGUL SYLLABLE MI -BBF9..BC13;H3 # HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH -BC14;H2 # HANGUL SYLLABLE BA -BC15..BC2F;H3 # HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH -BC30;H2 # HANGUL SYLLABLE BAE -BC31..BC4B;H3 # HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH -BC4C;H2 # HANGUL SYLLABLE BYA -BC4D..BC67;H3 # HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH -BC68;H2 # HANGUL SYLLABLE BYAE -BC69..BC83;H3 # HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH -BC84;H2 # HANGUL SYLLABLE BEO -BC85..BC9F;H3 # HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH -BCA0;H2 # HANGUL SYLLABLE BE -BCA1..BCBB;H3 # HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH -BCBC;H2 # HANGUL SYLLABLE BYEO -BCBD..BCD7;H3 # HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH -BCD8;H2 # HANGUL SYLLABLE BYE -BCD9..BCF3;H3 # HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH -BCF4;H2 # HANGUL SYLLABLE BO -BCF5..BD0F;H3 # HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH -BD10;H2 # HANGUL SYLLABLE BWA -BD11..BD2B;H3 # HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH -BD2C;H2 # HANGUL SYLLABLE BWAE -BD2D..BD47;H3 # HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH -BD48;H2 # HANGUL SYLLABLE BOE -BD49..BD63;H3 # HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH -BD64;H2 # HANGUL SYLLABLE BYO -BD65..BD7F;H3 # HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH -BD80;H2 # HANGUL SYLLABLE BU -BD81..BD9B;H3 # HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH -BD9C;H2 # HANGUL SYLLABLE BWEO -BD9D..BDB7;H3 # HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH -BDB8;H2 # HANGUL SYLLABLE BWE -BDB9..BDD3;H3 # HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH -BDD4;H2 # HANGUL SYLLABLE BWI -BDD5..BDEF;H3 # HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH -BDF0;H2 # HANGUL SYLLABLE BYU -BDF1..BE0B;H3 # HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH -BE0C;H2 # HANGUL SYLLABLE BEU -BE0D..BE27;H3 # HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH -BE28;H2 # HANGUL SYLLABLE BYI -BE29..BE43;H3 # HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH -BE44;H2 # HANGUL SYLLABLE BI -BE45..BE5F;H3 # HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH -BE60;H2 # HANGUL SYLLABLE BBA -BE61..BE7B;H3 # HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH -BE7C;H2 # HANGUL SYLLABLE BBAE -BE7D..BE97;H3 # HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH -BE98;H2 # HANGUL SYLLABLE BBYA -BE99..BEB3;H3 # HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH -BEB4;H2 # HANGUL SYLLABLE BBYAE -BEB5..BECF;H3 # HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH -BED0;H2 # HANGUL SYLLABLE BBEO -BED1..BEEB;H3 # HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH -BEEC;H2 # HANGUL SYLLABLE BBE -BEED..BF07;H3 # HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH -BF08;H2 # HANGUL SYLLABLE BBYEO -BF09..BF23;H3 # HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH -BF24;H2 # HANGUL SYLLABLE BBYE -BF25..BF3F;H3 # HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH -BF40;H2 # HANGUL SYLLABLE BBO -BF41..BF5B;H3 # HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH -BF5C;H2 # HANGUL SYLLABLE BBWA -BF5D..BF77;H3 # HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH -BF78;H2 # HANGUL SYLLABLE BBWAE -BF79..BF93;H3 # HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH -BF94;H2 # HANGUL SYLLABLE BBOE -BF95..BFAF;H3 # HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH -BFB0;H2 # HANGUL SYLLABLE BBYO -BFB1..BFCB;H3 # HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH -BFCC;H2 # HANGUL SYLLABLE BBU -BFCD..BFE7;H3 # HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH -BFE8;H2 # HANGUL SYLLABLE BBWEO -BFE9..C003;H3 # HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH -C004;H2 # HANGUL SYLLABLE BBWE -C005..C01F;H3 # HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH -C020;H2 # HANGUL SYLLABLE BBWI -C021..C03B;H3 # HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH -C03C;H2 # HANGUL SYLLABLE BBYU -C03D..C057;H3 # HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH -C058;H2 # HANGUL SYLLABLE BBEU -C059..C073;H3 # HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH -C074;H2 # HANGUL SYLLABLE BBYI -C075..C08F;H3 # HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH -C090;H2 # HANGUL SYLLABLE BBI -C091..C0AB;H3 # HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH -C0AC;H2 # HANGUL SYLLABLE SA -C0AD..C0C7;H3 # HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH -C0C8;H2 # HANGUL SYLLABLE SAE -C0C9..C0E3;H3 # HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH -C0E4;H2 # HANGUL SYLLABLE SYA -C0E5..C0FF;H3 # HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH -C100;H2 # HANGUL SYLLABLE SYAE -C101..C11B;H3 # HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH -C11C;H2 # HANGUL SYLLABLE SEO -C11D..C137;H3 # HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH -C138;H2 # HANGUL SYLLABLE SE -C139..C153;H3 # HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH -C154;H2 # HANGUL SYLLABLE SYEO -C155..C16F;H3 # HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH -C170;H2 # HANGUL SYLLABLE SYE -C171..C18B;H3 # HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH -C18C;H2 # HANGUL SYLLABLE SO -C18D..C1A7;H3 # HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH -C1A8;H2 # HANGUL SYLLABLE SWA -C1A9..C1C3;H3 # HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH -C1C4;H2 # HANGUL SYLLABLE SWAE -C1C5..C1DF;H3 # HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH -C1E0;H2 # HANGUL SYLLABLE SOE -C1E1..C1FB;H3 # HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH -C1FC;H2 # HANGUL SYLLABLE SYO -C1FD..C217;H3 # HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH -C218;H2 # HANGUL SYLLABLE SU -C219..C233;H3 # HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH -C234;H2 # HANGUL SYLLABLE SWEO -C235..C24F;H3 # HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH -C250;H2 # HANGUL SYLLABLE SWE -C251..C26B;H3 # HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH -C26C;H2 # HANGUL SYLLABLE SWI -C26D..C287;H3 # HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH -C288;H2 # HANGUL SYLLABLE SYU -C289..C2A3;H3 # HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH -C2A4;H2 # HANGUL SYLLABLE SEU -C2A5..C2BF;H3 # HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH -C2C0;H2 # HANGUL SYLLABLE SYI -C2C1..C2DB;H3 # HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH -C2DC;H2 # HANGUL SYLLABLE SI -C2DD..C2F7;H3 # HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH -C2F8;H2 # HANGUL SYLLABLE SSA -C2F9..C313;H3 # HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH -C314;H2 # HANGUL SYLLABLE SSAE -C315..C32F;H3 # HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH -C330;H2 # HANGUL SYLLABLE SSYA -C331..C34B;H3 # HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH -C34C;H2 # HANGUL SYLLABLE SSYAE -C34D..C367;H3 # HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH -C368;H2 # HANGUL SYLLABLE SSEO -C369..C383;H3 # HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH -C384;H2 # HANGUL SYLLABLE SSE -C385..C39F;H3 # HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH -C3A0;H2 # HANGUL SYLLABLE SSYEO -C3A1..C3BB;H3 # HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH -C3BC;H2 # HANGUL SYLLABLE SSYE -C3BD..C3D7;H3 # HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH -C3D8;H2 # HANGUL SYLLABLE SSO -C3D9..C3F3;H3 # HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH -C3F4;H2 # HANGUL SYLLABLE SSWA -C3F5..C40F;H3 # HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH -C410;H2 # HANGUL SYLLABLE SSWAE -C411..C42B;H3 # HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH -C42C;H2 # HANGUL SYLLABLE SSOE -C42D..C447;H3 # HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH -C448;H2 # HANGUL SYLLABLE SSYO -C449..C463;H3 # HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH -C464;H2 # HANGUL SYLLABLE SSU -C465..C47F;H3 # HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH -C480;H2 # HANGUL SYLLABLE SSWEO -C481..C49B;H3 # HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH -C49C;H2 # HANGUL SYLLABLE SSWE -C49D..C4B7;H3 # HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH -C4B8;H2 # HANGUL SYLLABLE SSWI -C4B9..C4D3;H3 # HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH -C4D4;H2 # HANGUL SYLLABLE SSYU -C4D5..C4EF;H3 # HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH -C4F0;H2 # HANGUL SYLLABLE SSEU -C4F1..C50B;H3 # HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH -C50C;H2 # HANGUL SYLLABLE SSYI -C50D..C527;H3 # HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH -C528;H2 # HANGUL SYLLABLE SSI -C529..C543;H3 # HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH -C544;H2 # HANGUL SYLLABLE A -C545..C55F;H3 # HANGUL SYLLABLE AG..HANGUL SYLLABLE AH -C560;H2 # HANGUL SYLLABLE AE -C561..C57B;H3 # HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH -C57C;H2 # HANGUL SYLLABLE YA -C57D..C597;H3 # HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH -C598;H2 # HANGUL SYLLABLE YAE -C599..C5B3;H3 # HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH -C5B4;H2 # HANGUL SYLLABLE EO -C5B5..C5CF;H3 # HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH -C5D0;H2 # HANGUL SYLLABLE E -C5D1..C5EB;H3 # HANGUL SYLLABLE EG..HANGUL SYLLABLE EH -C5EC;H2 # HANGUL SYLLABLE YEO -C5ED..C607;H3 # HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH -C608;H2 # HANGUL SYLLABLE YE -C609..C623;H3 # HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH -C624;H2 # HANGUL SYLLABLE O -C625..C63F;H3 # HANGUL SYLLABLE OG..HANGUL SYLLABLE OH -C640;H2 # HANGUL SYLLABLE WA -C641..C65B;H3 # HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH -C65C;H2 # HANGUL SYLLABLE WAE -C65D..C677;H3 # HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH -C678;H2 # HANGUL SYLLABLE OE -C679..C693;H3 # HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH -C694;H2 # HANGUL SYLLABLE YO -C695..C6AF;H3 # HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH -C6B0;H2 # HANGUL SYLLABLE U -C6B1..C6CB;H3 # HANGUL SYLLABLE UG..HANGUL SYLLABLE UH -C6CC;H2 # HANGUL SYLLABLE WEO -C6CD..C6E7;H3 # HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH -C6E8;H2 # HANGUL SYLLABLE WE -C6E9..C703;H3 # HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH -C704;H2 # HANGUL SYLLABLE WI -C705..C71F;H3 # HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH -C720;H2 # HANGUL SYLLABLE YU -C721..C73B;H3 # HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH -C73C;H2 # HANGUL SYLLABLE EU -C73D..C757;H3 # HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH -C758;H2 # HANGUL SYLLABLE YI -C759..C773;H3 # HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH -C774;H2 # HANGUL SYLLABLE I -C775..C78F;H3 # HANGUL SYLLABLE IG..HANGUL SYLLABLE IH -C790;H2 # HANGUL SYLLABLE JA -C791..C7AB;H3 # HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH -C7AC;H2 # HANGUL SYLLABLE JAE -C7AD..C7C7;H3 # HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH -C7C8;H2 # HANGUL SYLLABLE JYA -C7C9..C7E3;H3 # HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH -C7E4;H2 # HANGUL SYLLABLE JYAE -C7E5..C7FF;H3 # HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH -C800;H2 # HANGUL SYLLABLE JEO -C801..C81B;H3 # HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH -C81C;H2 # HANGUL SYLLABLE JE -C81D..C837;H3 # HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH -C838;H2 # HANGUL SYLLABLE JYEO -C839..C853;H3 # HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH -C854;H2 # HANGUL SYLLABLE JYE -C855..C86F;H3 # HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH -C870;H2 # HANGUL SYLLABLE JO -C871..C88B;H3 # HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH -C88C;H2 # HANGUL SYLLABLE JWA -C88D..C8A7;H3 # HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH -C8A8;H2 # HANGUL SYLLABLE JWAE -C8A9..C8C3;H3 # HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH -C8C4;H2 # HANGUL SYLLABLE JOE -C8C5..C8DF;H3 # HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH -C8E0;H2 # HANGUL SYLLABLE JYO -C8E1..C8FB;H3 # HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH -C8FC;H2 # HANGUL SYLLABLE JU -C8FD..C917;H3 # HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH -C918;H2 # HANGUL SYLLABLE JWEO -C919..C933;H3 # HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH -C934;H2 # HANGUL SYLLABLE JWE -C935..C94F;H3 # HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH -C950;H2 # HANGUL SYLLABLE JWI -C951..C96B;H3 # HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH -C96C;H2 # HANGUL SYLLABLE JYU -C96D..C987;H3 # HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH -C988;H2 # HANGUL SYLLABLE JEU -C989..C9A3;H3 # HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH -C9A4;H2 # HANGUL SYLLABLE JYI -C9A5..C9BF;H3 # HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH -C9C0;H2 # HANGUL SYLLABLE JI -C9C1..C9DB;H3 # HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH -C9DC;H2 # HANGUL SYLLABLE JJA -C9DD..C9F7;H3 # HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH -C9F8;H2 # HANGUL SYLLABLE JJAE -C9F9..CA13;H3 # HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH -CA14;H2 # HANGUL SYLLABLE JJYA -CA15..CA2F;H3 # HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH -CA30;H2 # HANGUL SYLLABLE JJYAE -CA31..CA4B;H3 # HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH -CA4C;H2 # HANGUL SYLLABLE JJEO -CA4D..CA67;H3 # HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH -CA68;H2 # HANGUL SYLLABLE JJE -CA69..CA83;H3 # HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH -CA84;H2 # HANGUL SYLLABLE JJYEO -CA85..CA9F;H3 # HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH -CAA0;H2 # HANGUL SYLLABLE JJYE -CAA1..CABB;H3 # HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH -CABC;H2 # HANGUL SYLLABLE JJO -CABD..CAD7;H3 # HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH -CAD8;H2 # HANGUL SYLLABLE JJWA -CAD9..CAF3;H3 # HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH -CAF4;H2 # HANGUL SYLLABLE JJWAE -CAF5..CB0F;H3 # HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH -CB10;H2 # HANGUL SYLLABLE JJOE -CB11..CB2B;H3 # HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH -CB2C;H2 # HANGUL SYLLABLE JJYO -CB2D..CB47;H3 # HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH -CB48;H2 # HANGUL SYLLABLE JJU -CB49..CB63;H3 # HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH -CB64;H2 # HANGUL SYLLABLE JJWEO -CB65..CB7F;H3 # HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH -CB80;H2 # HANGUL SYLLABLE JJWE -CB81..CB9B;H3 # HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH -CB9C;H2 # HANGUL SYLLABLE JJWI -CB9D..CBB7;H3 # HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH -CBB8;H2 # HANGUL SYLLABLE JJYU -CBB9..CBD3;H3 # HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH -CBD4;H2 # HANGUL SYLLABLE JJEU -CBD5..CBEF;H3 # HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH -CBF0;H2 # HANGUL SYLLABLE JJYI -CBF1..CC0B;H3 # HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH -CC0C;H2 # HANGUL SYLLABLE JJI -CC0D..CC27;H3 # HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH -CC28;H2 # HANGUL SYLLABLE CA -CC29..CC43;H3 # HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH -CC44;H2 # HANGUL SYLLABLE CAE -CC45..CC5F;H3 # HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH -CC60;H2 # HANGUL SYLLABLE CYA -CC61..CC7B;H3 # HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH -CC7C;H2 # HANGUL SYLLABLE CYAE -CC7D..CC97;H3 # HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH -CC98;H2 # HANGUL SYLLABLE CEO -CC99..CCB3;H3 # HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH -CCB4;H2 # HANGUL SYLLABLE CE -CCB5..CCCF;H3 # HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH -CCD0;H2 # HANGUL SYLLABLE CYEO -CCD1..CCEB;H3 # HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH -CCEC;H2 # HANGUL SYLLABLE CYE -CCED..CD07;H3 # HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH -CD08;H2 # HANGUL SYLLABLE CO -CD09..CD23;H3 # HANGUL SYLLABLE COG..HANGUL SYLLABLE COH -CD24;H2 # HANGUL SYLLABLE CWA -CD25..CD3F;H3 # HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH -CD40;H2 # HANGUL SYLLABLE CWAE -CD41..CD5B;H3 # HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH -CD5C;H2 # HANGUL SYLLABLE COE -CD5D..CD77;H3 # HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH -CD78;H2 # HANGUL SYLLABLE CYO -CD79..CD93;H3 # HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH -CD94;H2 # HANGUL SYLLABLE CU -CD95..CDAF;H3 # HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH -CDB0;H2 # HANGUL SYLLABLE CWEO -CDB1..CDCB;H3 # HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH -CDCC;H2 # HANGUL SYLLABLE CWE -CDCD..CDE7;H3 # HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH -CDE8;H2 # HANGUL SYLLABLE CWI -CDE9..CE03;H3 # HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH -CE04;H2 # HANGUL SYLLABLE CYU -CE05..CE1F;H3 # HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH -CE20;H2 # HANGUL SYLLABLE CEU -CE21..CE3B;H3 # HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH -CE3C;H2 # HANGUL SYLLABLE CYI -CE3D..CE57;H3 # HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH -CE58;H2 # HANGUL SYLLABLE CI -CE59..CE73;H3 # HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH -CE74;H2 # HANGUL SYLLABLE KA -CE75..CE8F;H3 # HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH -CE90;H2 # HANGUL SYLLABLE KAE -CE91..CEAB;H3 # HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH -CEAC;H2 # HANGUL SYLLABLE KYA -CEAD..CEC7;H3 # HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH -CEC8;H2 # HANGUL SYLLABLE KYAE -CEC9..CEE3;H3 # HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH -CEE4;H2 # HANGUL SYLLABLE KEO -CEE5..CEFF;H3 # HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH -CF00;H2 # HANGUL SYLLABLE KE -CF01..CF1B;H3 # HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH -CF1C;H2 # HANGUL SYLLABLE KYEO -CF1D..CF37;H3 # HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH -CF38;H2 # HANGUL SYLLABLE KYE -CF39..CF53;H3 # HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH -CF54;H2 # HANGUL SYLLABLE KO -CF55..CF6F;H3 # HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH -CF70;H2 # HANGUL SYLLABLE KWA -CF71..CF8B;H3 # HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH -CF8C;H2 # HANGUL SYLLABLE KWAE -CF8D..CFA7;H3 # HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH -CFA8;H2 # HANGUL SYLLABLE KOE -CFA9..CFC3;H3 # HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH -CFC4;H2 # HANGUL SYLLABLE KYO -CFC5..CFDF;H3 # HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH -CFE0;H2 # HANGUL SYLLABLE KU -CFE1..CFFB;H3 # HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH -CFFC;H2 # HANGUL SYLLABLE KWEO -CFFD..D017;H3 # HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH -D018;H2 # HANGUL SYLLABLE KWE -D019..D033;H3 # HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH -D034;H2 # HANGUL SYLLABLE KWI -D035..D04F;H3 # HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH -D050;H2 # HANGUL SYLLABLE KYU -D051..D06B;H3 # HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH -D06C;H2 # HANGUL SYLLABLE KEU -D06D..D087;H3 # HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH -D088;H2 # HANGUL SYLLABLE KYI -D089..D0A3;H3 # HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH -D0A4;H2 # HANGUL SYLLABLE KI -D0A5..D0BF;H3 # HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH -D0C0;H2 # HANGUL SYLLABLE TA -D0C1..D0DB;H3 # HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH -D0DC;H2 # HANGUL SYLLABLE TAE -D0DD..D0F7;H3 # HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH -D0F8;H2 # HANGUL SYLLABLE TYA -D0F9..D113;H3 # HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH -D114;H2 # HANGUL SYLLABLE TYAE -D115..D12F;H3 # HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH -D130;H2 # HANGUL SYLLABLE TEO -D131..D14B;H3 # HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH -D14C;H2 # HANGUL SYLLABLE TE -D14D..D167;H3 # HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH -D168;H2 # HANGUL SYLLABLE TYEO -D169..D183;H3 # HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH -D184;H2 # HANGUL SYLLABLE TYE -D185..D19F;H3 # HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH -D1A0;H2 # HANGUL SYLLABLE TO -D1A1..D1BB;H3 # HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH -D1BC;H2 # HANGUL SYLLABLE TWA -D1BD..D1D7;H3 # HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH -D1D8;H2 # HANGUL SYLLABLE TWAE -D1D9..D1F3;H3 # HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH -D1F4;H2 # HANGUL SYLLABLE TOE -D1F5..D20F;H3 # HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH -D210;H2 # HANGUL SYLLABLE TYO -D211..D22B;H3 # HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH -D22C;H2 # HANGUL SYLLABLE TU -D22D..D247;H3 # HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH -D248;H2 # HANGUL SYLLABLE TWEO -D249..D263;H3 # HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH -D264;H2 # HANGUL SYLLABLE TWE -D265..D27F;H3 # HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH -D280;H2 # HANGUL SYLLABLE TWI -D281..D29B;H3 # HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH -D29C;H2 # HANGUL SYLLABLE TYU -D29D..D2B7;H3 # HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH -D2B8;H2 # HANGUL SYLLABLE TEU -D2B9..D2D3;H3 # HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH -D2D4;H2 # HANGUL SYLLABLE TYI -D2D5..D2EF;H3 # HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH -D2F0;H2 # HANGUL SYLLABLE TI -D2F1..D30B;H3 # HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH -D30C;H2 # HANGUL SYLLABLE PA -D30D..D327;H3 # HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH -D328;H2 # HANGUL SYLLABLE PAE -D329..D343;H3 # HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH -D344;H2 # HANGUL SYLLABLE PYA -D345..D35F;H3 # HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH -D360;H2 # HANGUL SYLLABLE PYAE -D361..D37B;H3 # HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH -D37C;H2 # HANGUL SYLLABLE PEO -D37D..D397;H3 # HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH -D398;H2 # HANGUL SYLLABLE PE -D399..D3B3;H3 # HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH -D3B4;H2 # HANGUL SYLLABLE PYEO -D3B5..D3CF;H3 # HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH -D3D0;H2 # HANGUL SYLLABLE PYE -D3D1..D3EB;H3 # HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH -D3EC;H2 # HANGUL SYLLABLE PO -D3ED..D407;H3 # HANGUL SYLLABLE POG..HANGUL SYLLABLE POH -D408;H2 # HANGUL SYLLABLE PWA -D409..D423;H3 # HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH -D424;H2 # HANGUL SYLLABLE PWAE -D425..D43F;H3 # HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH -D440;H2 # HANGUL SYLLABLE POE -D441..D45B;H3 # HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH -D45C;H2 # HANGUL SYLLABLE PYO -D45D..D477;H3 # HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH -D478;H2 # HANGUL SYLLABLE PU -D479..D493;H3 # HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH -D494;H2 # HANGUL SYLLABLE PWEO -D495..D4AF;H3 # HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH -D4B0;H2 # HANGUL SYLLABLE PWE -D4B1..D4CB;H3 # HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH -D4CC;H2 # HANGUL SYLLABLE PWI -D4CD..D4E7;H3 # HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH -D4E8;H2 # HANGUL SYLLABLE PYU -D4E9..D503;H3 # HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH -D504;H2 # HANGUL SYLLABLE PEU -D505..D51F;H3 # HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH -D520;H2 # HANGUL SYLLABLE PYI -D521..D53B;H3 # HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH -D53C;H2 # HANGUL SYLLABLE PI -D53D..D557;H3 # HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH -D558;H2 # HANGUL SYLLABLE HA -D559..D573;H3 # HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH -D574;H2 # HANGUL SYLLABLE HAE -D575..D58F;H3 # HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH -D590;H2 # HANGUL SYLLABLE HYA -D591..D5AB;H3 # HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH -D5AC;H2 # HANGUL SYLLABLE HYAE -D5AD..D5C7;H3 # HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH -D5C8;H2 # HANGUL SYLLABLE HEO -D5C9..D5E3;H3 # HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH -D5E4;H2 # HANGUL SYLLABLE HE -D5E5..D5FF;H3 # HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH -D600;H2 # HANGUL SYLLABLE HYEO -D601..D61B;H3 # HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH -D61C;H2 # HANGUL SYLLABLE HYE -D61D..D637;H3 # HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH -D638;H2 # HANGUL SYLLABLE HO -D639..D653;H3 # HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH -D654;H2 # HANGUL SYLLABLE HWA -D655..D66F;H3 # HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH -D670;H2 # HANGUL SYLLABLE HWAE -D671..D68B;H3 # HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH -D68C;H2 # HANGUL SYLLABLE HOE -D68D..D6A7;H3 # HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH -D6A8;H2 # HANGUL SYLLABLE HYO -D6A9..D6C3;H3 # HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH -D6C4;H2 # HANGUL SYLLABLE HU -D6C5..D6DF;H3 # HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH -D6E0;H2 # HANGUL SYLLABLE HWEO -D6E1..D6FB;H3 # HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH -D6FC;H2 # HANGUL SYLLABLE HWE -D6FD..D717;H3 # HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH -D718;H2 # HANGUL SYLLABLE HWI -D719..D733;H3 # HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH -D734;H2 # HANGUL SYLLABLE HYU -D735..D74F;H3 # HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH -D750;H2 # HANGUL SYLLABLE HEU -D751..D76B;H3 # HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH -D76C;H2 # HANGUL SYLLABLE HYI -D76D..D787;H3 # HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH -D788;H2 # HANGUL SYLLABLE HI -D789..D7A3;H3 # HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH -D800..DB7F;SG # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last> -DB80..DBFF;SG # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last> -DC00..DFFF;SG # <Low Surrogate, First>..<Low Surrogate, Last> -E000..F8FF;XX # <Private Use, First>..<Private Use, Last> -F900;ID # CJK COMPATIBILITY IDEOGRAPH-F900 -F901;ID # CJK COMPATIBILITY IDEOGRAPH-F901 -F902;ID # CJK COMPATIBILITY IDEOGRAPH-F902 -F903;ID # CJK COMPATIBILITY IDEOGRAPH-F903 -F904;ID # CJK COMPATIBILITY IDEOGRAPH-F904 -F905;ID # CJK COMPATIBILITY IDEOGRAPH-F905 -F906;ID # CJK COMPATIBILITY IDEOGRAPH-F906 -F907;ID # CJK COMPATIBILITY IDEOGRAPH-F907 -F908;ID # CJK COMPATIBILITY IDEOGRAPH-F908 -F909;ID # CJK COMPATIBILITY IDEOGRAPH-F909 -F90A;ID # CJK COMPATIBILITY IDEOGRAPH-F90A -F90B;ID # CJK COMPATIBILITY IDEOGRAPH-F90B -F90C;ID # CJK COMPATIBILITY IDEOGRAPH-F90C -F90D;ID # CJK COMPATIBILITY IDEOGRAPH-F90D -F90E;ID # CJK COMPATIBILITY IDEOGRAPH-F90E -F90F;ID # CJK COMPATIBILITY IDEOGRAPH-F90F -F910;ID # CJK COMPATIBILITY IDEOGRAPH-F910 -F911;ID # CJK COMPATIBILITY IDEOGRAPH-F911 -F912;ID # CJK COMPATIBILITY IDEOGRAPH-F912 -F913;ID # CJK COMPATIBILITY IDEOGRAPH-F913 -F914;ID # CJK COMPATIBILITY IDEOGRAPH-F914 -F915;ID # CJK COMPATIBILITY IDEOGRAPH-F915 -F916;ID # CJK COMPATIBILITY IDEOGRAPH-F916 -F917;ID # CJK COMPATIBILITY IDEOGRAPH-F917 -F918;ID # CJK COMPATIBILITY IDEOGRAPH-F918 -F919;ID # CJK COMPATIBILITY IDEOGRAPH-F919 -F91A;ID # CJK COMPATIBILITY IDEOGRAPH-F91A -F91B;ID # CJK COMPATIBILITY IDEOGRAPH-F91B -F91C;ID # CJK COMPATIBILITY IDEOGRAPH-F91C -F91D;ID # CJK COMPATIBILITY IDEOGRAPH-F91D -F91E;ID # CJK COMPATIBILITY IDEOGRAPH-F91E -F91F;ID # CJK COMPATIBILITY IDEOGRAPH-F91F -F920;ID # CJK COMPATIBILITY IDEOGRAPH-F920 -F921;ID # CJK COMPATIBILITY IDEOGRAPH-F921 -F922;ID # CJK COMPATIBILITY IDEOGRAPH-F922 -F923;ID # CJK COMPATIBILITY IDEOGRAPH-F923 -F924;ID # CJK COMPATIBILITY IDEOGRAPH-F924 -F925;ID # CJK COMPATIBILITY IDEOGRAPH-F925 -F926;ID # CJK COMPATIBILITY IDEOGRAPH-F926 -F927;ID # CJK COMPATIBILITY IDEOGRAPH-F927 -F928;ID # CJK COMPATIBILITY IDEOGRAPH-F928 -F929;ID # CJK COMPATIBILITY IDEOGRAPH-F929 -F92A;ID # CJK COMPATIBILITY IDEOGRAPH-F92A -F92B;ID # CJK COMPATIBILITY IDEOGRAPH-F92B -F92C;ID # CJK COMPATIBILITY IDEOGRAPH-F92C -F92D;ID # CJK COMPATIBILITY IDEOGRAPH-F92D -F92E;ID # CJK COMPATIBILITY IDEOGRAPH-F92E -F92F;ID # CJK COMPATIBILITY IDEOGRAPH-F92F -F930;ID # CJK COMPATIBILITY IDEOGRAPH-F930 -F931;ID # CJK COMPATIBILITY IDEOGRAPH-F931 -F932;ID # CJK COMPATIBILITY IDEOGRAPH-F932 -F933;ID # CJK COMPATIBILITY IDEOGRAPH-F933 -F934;ID # CJK COMPATIBILITY IDEOGRAPH-F934 -F935;ID # CJK COMPATIBILITY IDEOGRAPH-F935 -F936;ID # CJK COMPATIBILITY IDEOGRAPH-F936 -F937;ID # CJK COMPATIBILITY IDEOGRAPH-F937 -F938;ID # CJK COMPATIBILITY IDEOGRAPH-F938 -F939;ID # CJK COMPATIBILITY IDEOGRAPH-F939 -F93A;ID # CJK COMPATIBILITY IDEOGRAPH-F93A -F93B;ID # CJK COMPATIBILITY IDEOGRAPH-F93B -F93C;ID # CJK COMPATIBILITY IDEOGRAPH-F93C -F93D;ID # CJK COMPATIBILITY IDEOGRAPH-F93D -F93E;ID # CJK COMPATIBILITY IDEOGRAPH-F93E -F93F;ID # CJK COMPATIBILITY IDEOGRAPH-F93F -F940;ID # CJK COMPATIBILITY IDEOGRAPH-F940 -F941;ID # CJK COMPATIBILITY IDEOGRAPH-F941 -F942;ID # CJK COMPATIBILITY IDEOGRAPH-F942 -F943;ID # CJK COMPATIBILITY IDEOGRAPH-F943 -F944;ID # CJK COMPATIBILITY IDEOGRAPH-F944 -F945;ID # CJK COMPATIBILITY IDEOGRAPH-F945 -F946;ID # CJK COMPATIBILITY IDEOGRAPH-F946 -F947;ID # CJK COMPATIBILITY IDEOGRAPH-F947 -F948;ID # CJK COMPATIBILITY IDEOGRAPH-F948 -F949;ID # CJK COMPATIBILITY IDEOGRAPH-F949 -F94A;ID # CJK COMPATIBILITY IDEOGRAPH-F94A -F94B;ID # CJK COMPATIBILITY IDEOGRAPH-F94B -F94C;ID # CJK COMPATIBILITY IDEOGRAPH-F94C -F94D;ID # CJK COMPATIBILITY IDEOGRAPH-F94D -F94E;ID # CJK COMPATIBILITY IDEOGRAPH-F94E -F94F;ID # CJK COMPATIBILITY IDEOGRAPH-F94F -F950;ID # CJK COMPATIBILITY IDEOGRAPH-F950 -F951;ID # CJK COMPATIBILITY IDEOGRAPH-F951 -F952;ID # CJK COMPATIBILITY IDEOGRAPH-F952 -F953;ID # CJK COMPATIBILITY IDEOGRAPH-F953 -F954;ID # CJK COMPATIBILITY IDEOGRAPH-F954 -F955;ID # CJK COMPATIBILITY IDEOGRAPH-F955 -F956;ID # CJK COMPATIBILITY IDEOGRAPH-F956 -F957;ID # CJK COMPATIBILITY IDEOGRAPH-F957 -F958;ID # CJK COMPATIBILITY IDEOGRAPH-F958 -F959;ID # CJK COMPATIBILITY IDEOGRAPH-F959 -F95A;ID # CJK COMPATIBILITY IDEOGRAPH-F95A -F95B;ID # CJK COMPATIBILITY IDEOGRAPH-F95B -F95C;ID # CJK COMPATIBILITY IDEOGRAPH-F95C -F95D;ID # CJK COMPATIBILITY IDEOGRAPH-F95D -F95E;ID # CJK COMPATIBILITY IDEOGRAPH-F95E -F95F;ID # CJK COMPATIBILITY IDEOGRAPH-F95F -F960;ID # CJK COMPATIBILITY IDEOGRAPH-F960 -F961;ID # CJK COMPATIBILITY IDEOGRAPH-F961 -F962;ID # CJK COMPATIBILITY IDEOGRAPH-F962 -F963;ID # CJK COMPATIBILITY IDEOGRAPH-F963 -F964;ID # CJK COMPATIBILITY IDEOGRAPH-F964 -F965;ID # CJK COMPATIBILITY IDEOGRAPH-F965 -F966;ID # CJK COMPATIBILITY IDEOGRAPH-F966 -F967;ID # CJK COMPATIBILITY IDEOGRAPH-F967 -F968;ID # CJK COMPATIBILITY IDEOGRAPH-F968 -F969;ID # CJK COMPATIBILITY IDEOGRAPH-F969 -F96A;ID # CJK COMPATIBILITY IDEOGRAPH-F96A -F96B;ID # CJK COMPATIBILITY IDEOGRAPH-F96B -F96C;ID # CJK COMPATIBILITY IDEOGRAPH-F96C -F96D;ID # CJK COMPATIBILITY IDEOGRAPH-F96D -F96E;ID # CJK COMPATIBILITY IDEOGRAPH-F96E -F96F;ID # CJK COMPATIBILITY IDEOGRAPH-F96F -F970;ID # CJK COMPATIBILITY IDEOGRAPH-F970 -F971;ID # CJK COMPATIBILITY IDEOGRAPH-F971 -F972;ID # CJK COMPATIBILITY IDEOGRAPH-F972 -F973;ID # CJK COMPATIBILITY IDEOGRAPH-F973 -F974;ID # CJK COMPATIBILITY IDEOGRAPH-F974 -F975;ID # CJK COMPATIBILITY IDEOGRAPH-F975 -F976;ID # CJK COMPATIBILITY IDEOGRAPH-F976 -F977;ID # CJK COMPATIBILITY IDEOGRAPH-F977 -F978;ID # CJK COMPATIBILITY IDEOGRAPH-F978 -F979;ID # CJK COMPATIBILITY IDEOGRAPH-F979 -F97A;ID # CJK COMPATIBILITY IDEOGRAPH-F97A -F97B;ID # CJK COMPATIBILITY IDEOGRAPH-F97B -F97C;ID # CJK COMPATIBILITY IDEOGRAPH-F97C -F97D;ID # CJK COMPATIBILITY IDEOGRAPH-F97D -F97E;ID # CJK COMPATIBILITY IDEOGRAPH-F97E -F97F;ID # CJK COMPATIBILITY IDEOGRAPH-F97F -F980;ID # CJK COMPATIBILITY IDEOGRAPH-F980 -F981;ID # CJK COMPATIBILITY IDEOGRAPH-F981 -F982;ID # CJK COMPATIBILITY IDEOGRAPH-F982 -F983;ID # CJK COMPATIBILITY IDEOGRAPH-F983 -F984;ID # CJK COMPATIBILITY IDEOGRAPH-F984 -F985;ID # CJK COMPATIBILITY IDEOGRAPH-F985 -F986;ID # CJK COMPATIBILITY IDEOGRAPH-F986 -F987;ID # CJK COMPATIBILITY IDEOGRAPH-F987 -F988;ID # CJK COMPATIBILITY IDEOGRAPH-F988 -F989;ID # CJK COMPATIBILITY IDEOGRAPH-F989 -F98A;ID # CJK COMPATIBILITY IDEOGRAPH-F98A -F98B;ID # CJK COMPATIBILITY IDEOGRAPH-F98B -F98C;ID # CJK COMPATIBILITY IDEOGRAPH-F98C -F98D;ID # CJK COMPATIBILITY IDEOGRAPH-F98D -F98E;ID # CJK COMPATIBILITY IDEOGRAPH-F98E -F98F;ID # CJK COMPATIBILITY IDEOGRAPH-F98F -F990;ID # CJK COMPATIBILITY IDEOGRAPH-F990 -F991;ID # CJK COMPATIBILITY IDEOGRAPH-F991 -F992;ID # CJK COMPATIBILITY IDEOGRAPH-F992 -F993;ID # CJK COMPATIBILITY IDEOGRAPH-F993 -F994;ID # CJK COMPATIBILITY IDEOGRAPH-F994 -F995;ID # CJK COMPATIBILITY IDEOGRAPH-F995 -F996;ID # CJK COMPATIBILITY IDEOGRAPH-F996 -F997;ID # CJK COMPATIBILITY IDEOGRAPH-F997 -F998;ID # CJK COMPATIBILITY IDEOGRAPH-F998 -F999;ID # CJK COMPATIBILITY IDEOGRAPH-F999 -F99A;ID # CJK COMPATIBILITY IDEOGRAPH-F99A -F99B;ID # CJK COMPATIBILITY IDEOGRAPH-F99B -F99C;ID # CJK COMPATIBILITY IDEOGRAPH-F99C -F99D;ID # CJK COMPATIBILITY IDEOGRAPH-F99D -F99E;ID # CJK COMPATIBILITY IDEOGRAPH-F99E -F99F;ID # CJK COMPATIBILITY IDEOGRAPH-F99F -F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-F9A0 -F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-F9A1 -F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-F9A2 -F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-F9A3 -F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-F9A4 -F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-F9A5 -F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-F9A6 -F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-F9A7 -F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-F9A8 -F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-F9A9 -F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-F9AA -F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-F9AB -F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-F9AC -F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-F9AD -F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-F9AE -F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-F9AF -F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-F9B0 -F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-F9B1 -F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-F9B2 -F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-F9B3 -F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-F9B4 -F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-F9B5 -F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-F9B6 -F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-F9B7 -F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-F9B8 -F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-F9B9 -F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-F9BA -F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-F9BB -F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-F9BC -F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-F9BD -F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-F9BE -F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-F9BF -F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-F9C0 -F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-F9C1 -F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-F9C2 -F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-F9C3 -F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-F9C4 -F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-F9C5 -F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-F9C6 -F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-F9C7 -F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-F9C8 -F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-F9C9 -F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-F9CA -F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-F9CB -F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-F9CC -F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-F9CD -F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-F9CE -F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-F9CF -F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-F9D0 -F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-F9D1 -F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-F9D2 -F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-F9D3 -F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-F9D4 -F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-F9D5 -F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-F9D6 -F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-F9D7 -F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-F9D8 -F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-F9D9 -F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-F9DA -F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-F9DB -F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-F9DC -F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-F9DD -F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-F9DE -F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-F9DF -F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-F9E0 -F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-F9E1 -F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-F9E2 -F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-F9E3 -F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-F9E4 -F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-F9E5 -F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-F9E6 -F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-F9E7 -F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-F9E8 -F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-F9E9 -F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-F9EA -F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-F9EB -F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-F9EC -F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-F9ED -F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-F9EE -F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-F9EF -F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-F9F0 -F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-F9F1 -F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-F9F2 -F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-F9F3 -F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-F9F4 -F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-F9F5 -F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-F9F6 -F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-F9F7 -F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-F9F8 -F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-F9F9 -F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-F9FA -F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-F9FB -F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-F9FC -F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-F9FD -F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-F9FE -F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-F9FF -FA00;ID # CJK COMPATIBILITY IDEOGRAPH-FA00 -FA01;ID # CJK COMPATIBILITY IDEOGRAPH-FA01 -FA02;ID # CJK COMPATIBILITY IDEOGRAPH-FA02 -FA03;ID # CJK COMPATIBILITY IDEOGRAPH-FA03 -FA04;ID # CJK COMPATIBILITY IDEOGRAPH-FA04 -FA05;ID # CJK COMPATIBILITY IDEOGRAPH-FA05 -FA06;ID # CJK COMPATIBILITY IDEOGRAPH-FA06 -FA07;ID # CJK COMPATIBILITY IDEOGRAPH-FA07 -FA08;ID # CJK COMPATIBILITY IDEOGRAPH-FA08 -FA09;ID # CJK COMPATIBILITY IDEOGRAPH-FA09 -FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-FA0A -FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-FA0B -FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-FA0C -FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-FA0D -FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-FA0E -FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-FA0F -FA10;ID # CJK COMPATIBILITY IDEOGRAPH-FA10 -FA11;ID # CJK COMPATIBILITY IDEOGRAPH-FA11 -FA12;ID # CJK COMPATIBILITY IDEOGRAPH-FA12 -FA13;ID # CJK COMPATIBILITY IDEOGRAPH-FA13 -FA14;ID # CJK COMPATIBILITY IDEOGRAPH-FA14 -FA15;ID # CJK COMPATIBILITY IDEOGRAPH-FA15 -FA16;ID # CJK COMPATIBILITY IDEOGRAPH-FA16 -FA17;ID # CJK COMPATIBILITY IDEOGRAPH-FA17 -FA18;ID # CJK COMPATIBILITY IDEOGRAPH-FA18 -FA19;ID # CJK COMPATIBILITY IDEOGRAPH-FA19 -FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-FA1A -FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-FA1B -FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-FA1C -FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-FA1D -FA1E;ID # CJK COMPATIBILITY IDEOGRAPH-FA1E -FA1F;ID # CJK COMPATIBILITY IDEOGRAPH-FA1F -FA20;ID # CJK COMPATIBILITY IDEOGRAPH-FA20 -FA21;ID # CJK COMPATIBILITY IDEOGRAPH-FA21 -FA22;ID # CJK COMPATIBILITY IDEOGRAPH-FA22 -FA23;ID # CJK COMPATIBILITY IDEOGRAPH-FA23 -FA24;ID # CJK COMPATIBILITY IDEOGRAPH-FA24 -FA25;ID # CJK COMPATIBILITY IDEOGRAPH-FA25 -FA26;ID # CJK COMPATIBILITY IDEOGRAPH-FA26 -FA27;ID # CJK COMPATIBILITY IDEOGRAPH-FA27 -FA28;ID # CJK COMPATIBILITY IDEOGRAPH-FA28 -FA29;ID # CJK COMPATIBILITY IDEOGRAPH-FA29 -FA2A;ID # CJK COMPATIBILITY IDEOGRAPH-FA2A -FA2B;ID # CJK COMPATIBILITY IDEOGRAPH-FA2B -FA2C;ID # CJK COMPATIBILITY IDEOGRAPH-FA2C -FA2D;ID # CJK COMPATIBILITY IDEOGRAPH-FA2D -FA30;ID # CJK COMPATIBILITY IDEOGRAPH-FA30 -FA31;ID # CJK COMPATIBILITY IDEOGRAPH-FA31 -FA32;ID # CJK COMPATIBILITY IDEOGRAPH-FA32 -FA33;ID # CJK COMPATIBILITY IDEOGRAPH-FA33 -FA34;ID # CJK COMPATIBILITY IDEOGRAPH-FA34 -FA35;ID # CJK COMPATIBILITY IDEOGRAPH-FA35 -FA36;ID # CJK COMPATIBILITY IDEOGRAPH-FA36 -FA37;ID # CJK COMPATIBILITY IDEOGRAPH-FA37 -FA38;ID # CJK COMPATIBILITY IDEOGRAPH-FA38 -FA39;ID # CJK COMPATIBILITY IDEOGRAPH-FA39 -FA3A;ID # CJK COMPATIBILITY IDEOGRAPH-FA3A -FA3B;ID # CJK COMPATIBILITY IDEOGRAPH-FA3B -FA3C;ID # CJK COMPATIBILITY IDEOGRAPH-FA3C -FA3D;ID # CJK COMPATIBILITY IDEOGRAPH-FA3D -FA3E;ID # CJK COMPATIBILITY IDEOGRAPH-FA3E -FA3F;ID # CJK COMPATIBILITY IDEOGRAPH-FA3F -FA40;ID # CJK COMPATIBILITY IDEOGRAPH-FA40 -FA41;ID # CJK COMPATIBILITY IDEOGRAPH-FA41 -FA42;ID # CJK COMPATIBILITY IDEOGRAPH-FA42 -FA43;ID # CJK COMPATIBILITY IDEOGRAPH-FA43 -FA44;ID # CJK COMPATIBILITY IDEOGRAPH-FA44 -FA45;ID # CJK COMPATIBILITY IDEOGRAPH-FA45 -FA46;ID # CJK COMPATIBILITY IDEOGRAPH-FA46 -FA47;ID # CJK COMPATIBILITY IDEOGRAPH-FA47 -FA48;ID # CJK COMPATIBILITY IDEOGRAPH-FA48 -FA49;ID # CJK COMPATIBILITY IDEOGRAPH-FA49 -FA4A;ID # CJK COMPATIBILITY IDEOGRAPH-FA4A -FA4B;ID # CJK COMPATIBILITY IDEOGRAPH-FA4B -FA4C;ID # CJK COMPATIBILITY IDEOGRAPH-FA4C -FA4D;ID # CJK COMPATIBILITY IDEOGRAPH-FA4D -FA4E;ID # CJK COMPATIBILITY IDEOGRAPH-FA4E -FA4F;ID # CJK COMPATIBILITY IDEOGRAPH-FA4F -FA50;ID # CJK COMPATIBILITY IDEOGRAPH-FA50 -FA51;ID # CJK COMPATIBILITY IDEOGRAPH-FA51 -FA52;ID # CJK COMPATIBILITY IDEOGRAPH-FA52 -FA53;ID # CJK COMPATIBILITY IDEOGRAPH-FA53 -FA54;ID # CJK COMPATIBILITY IDEOGRAPH-FA54 -FA55;ID # CJK COMPATIBILITY IDEOGRAPH-FA55 -FA56;ID # CJK COMPATIBILITY IDEOGRAPH-FA56 -FA57;ID # CJK COMPATIBILITY IDEOGRAPH-FA57 -FA58;ID # CJK COMPATIBILITY IDEOGRAPH-FA58 -FA59;ID # CJK COMPATIBILITY IDEOGRAPH-FA59 -FA5A;ID # CJK COMPATIBILITY IDEOGRAPH-FA5A -FA5B;ID # CJK COMPATIBILITY IDEOGRAPH-FA5B -FA5C;ID # CJK COMPATIBILITY IDEOGRAPH-FA5C -FA5D;ID # CJK COMPATIBILITY IDEOGRAPH-FA5D -FA5E;ID # CJK COMPATIBILITY IDEOGRAPH-FA5E -FA5F;ID # CJK COMPATIBILITY IDEOGRAPH-FA5F -FA60;ID # CJK COMPATIBILITY IDEOGRAPH-FA60 -FA61;ID # CJK COMPATIBILITY IDEOGRAPH-FA61 -FA62;ID # CJK COMPATIBILITY IDEOGRAPH-FA62 -FA63;ID # CJK COMPATIBILITY IDEOGRAPH-FA63 -FA64;ID # CJK COMPATIBILITY IDEOGRAPH-FA64 -FA65;ID # CJK COMPATIBILITY IDEOGRAPH-FA65 -FA66;ID # CJK COMPATIBILITY IDEOGRAPH-FA66 -FA67;ID # CJK COMPATIBILITY IDEOGRAPH-FA67 -FA68;ID # CJK COMPATIBILITY IDEOGRAPH-FA68 -FA69;ID # CJK COMPATIBILITY IDEOGRAPH-FA69 -FA6A;ID # CJK COMPATIBILITY IDEOGRAPH-FA6A -FA70;ID # CJK COMPATIBILITY IDEOGRAPH-FA70 -FA71;ID # CJK COMPATIBILITY IDEOGRAPH-FA71 -FA72;ID # CJK COMPATIBILITY IDEOGRAPH-FA72 -FA73;ID # CJK COMPATIBILITY IDEOGRAPH-FA73 -FA74;ID # CJK COMPATIBILITY IDEOGRAPH-FA74 -FA75;ID # CJK COMPATIBILITY IDEOGRAPH-FA75 -FA76;ID # CJK COMPATIBILITY IDEOGRAPH-FA76 -FA77;ID # CJK COMPATIBILITY IDEOGRAPH-FA77 -FA78;ID # CJK COMPATIBILITY IDEOGRAPH-FA78 -FA79;ID # CJK COMPATIBILITY IDEOGRAPH-FA79 -FA7A;ID # CJK COMPATIBILITY IDEOGRAPH-FA7A -FA7B;ID # CJK COMPATIBILITY IDEOGRAPH-FA7B -FA7C;ID # CJK COMPATIBILITY IDEOGRAPH-FA7C -FA7D;ID # CJK COMPATIBILITY IDEOGRAPH-FA7D -FA7E;ID # CJK COMPATIBILITY IDEOGRAPH-FA7E -FA7F;ID # CJK COMPATIBILITY IDEOGRAPH-FA7F -FA80;ID # CJK COMPATIBILITY IDEOGRAPH-FA80 -FA81;ID # CJK COMPATIBILITY IDEOGRAPH-FA81 -FA82;ID # CJK COMPATIBILITY IDEOGRAPH-FA82 -FA83;ID # CJK COMPATIBILITY IDEOGRAPH-FA83 -FA84;ID # CJK COMPATIBILITY IDEOGRAPH-FA84 -FA85;ID # CJK COMPATIBILITY IDEOGRAPH-FA85 -FA86;ID # CJK COMPATIBILITY IDEOGRAPH-FA86 -FA87;ID # CJK COMPATIBILITY IDEOGRAPH-FA87 -FA88;ID # CJK COMPATIBILITY IDEOGRAPH-FA88 -FA89;ID # CJK COMPATIBILITY IDEOGRAPH-FA89 -FA8A;ID # CJK COMPATIBILITY IDEOGRAPH-FA8A -FA8B;ID # CJK COMPATIBILITY IDEOGRAPH-FA8B -FA8C;ID # CJK COMPATIBILITY IDEOGRAPH-FA8C -FA8D;ID # CJK COMPATIBILITY IDEOGRAPH-FA8D -FA8E;ID # CJK COMPATIBILITY IDEOGRAPH-FA8E -FA8F;ID # CJK COMPATIBILITY IDEOGRAPH-FA8F -FA90;ID # CJK COMPATIBILITY IDEOGRAPH-FA90 -FA91;ID # CJK COMPATIBILITY IDEOGRAPH-FA91 -FA92;ID # CJK COMPATIBILITY IDEOGRAPH-FA92 -FA93;ID # CJK COMPATIBILITY IDEOGRAPH-FA93 -FA94;ID # CJK COMPATIBILITY IDEOGRAPH-FA94 -FA95;ID # CJK COMPATIBILITY IDEOGRAPH-FA95 -FA96;ID # CJK COMPATIBILITY IDEOGRAPH-FA96 -FA97;ID # CJK COMPATIBILITY IDEOGRAPH-FA97 -FA98;ID # CJK COMPATIBILITY IDEOGRAPH-FA98 -FA99;ID # CJK COMPATIBILITY IDEOGRAPH-FA99 -FA9A;ID # CJK COMPATIBILITY IDEOGRAPH-FA9A -FA9B;ID # CJK COMPATIBILITY IDEOGRAPH-FA9B -FA9C;ID # CJK COMPATIBILITY IDEOGRAPH-FA9C -FA9D;ID # CJK COMPATIBILITY IDEOGRAPH-FA9D -FA9E;ID # CJK COMPATIBILITY IDEOGRAPH-FA9E -FA9F;ID # CJK COMPATIBILITY IDEOGRAPH-FA9F -FAA0;ID # CJK COMPATIBILITY IDEOGRAPH-FAA0 -FAA1;ID # CJK COMPATIBILITY IDEOGRAPH-FAA1 -FAA2;ID # CJK COMPATIBILITY IDEOGRAPH-FAA2 -FAA3;ID # CJK COMPATIBILITY IDEOGRAPH-FAA3 -FAA4;ID # CJK COMPATIBILITY IDEOGRAPH-FAA4 -FAA5;ID # CJK COMPATIBILITY IDEOGRAPH-FAA5 -FAA6;ID # CJK COMPATIBILITY IDEOGRAPH-FAA6 -FAA7;ID # CJK COMPATIBILITY IDEOGRAPH-FAA7 -FAA8;ID # CJK COMPATIBILITY IDEOGRAPH-FAA8 -FAA9;ID # CJK COMPATIBILITY IDEOGRAPH-FAA9 -FAAA;ID # CJK COMPATIBILITY IDEOGRAPH-FAAA -FAAB;ID # CJK COMPATIBILITY IDEOGRAPH-FAAB -FAAC;ID # CJK COMPATIBILITY IDEOGRAPH-FAAC -FAAD;ID # CJK COMPATIBILITY IDEOGRAPH-FAAD -FAAE;ID # CJK COMPATIBILITY IDEOGRAPH-FAAE -FAAF;ID # CJK COMPATIBILITY IDEOGRAPH-FAAF -FAB0;ID # CJK COMPATIBILITY IDEOGRAPH-FAB0 -FAB1;ID # CJK COMPATIBILITY IDEOGRAPH-FAB1 -FAB2;ID # CJK COMPATIBILITY IDEOGRAPH-FAB2 -FAB3;ID # CJK COMPATIBILITY IDEOGRAPH-FAB3 -FAB4;ID # CJK COMPATIBILITY IDEOGRAPH-FAB4 -FAB5;ID # CJK COMPATIBILITY IDEOGRAPH-FAB5 -FAB6;ID # CJK COMPATIBILITY IDEOGRAPH-FAB6 -FAB7;ID # CJK COMPATIBILITY IDEOGRAPH-FAB7 -FAB8;ID # CJK COMPATIBILITY IDEOGRAPH-FAB8 -FAB9;ID # CJK COMPATIBILITY IDEOGRAPH-FAB9 -FABA;ID # CJK COMPATIBILITY IDEOGRAPH-FABA -FABB;ID # CJK COMPATIBILITY IDEOGRAPH-FABB -FABC;ID # CJK COMPATIBILITY IDEOGRAPH-FABC -FABD;ID # CJK COMPATIBILITY IDEOGRAPH-FABD -FABE;ID # CJK COMPATIBILITY IDEOGRAPH-FABE -FABF;ID # CJK COMPATIBILITY IDEOGRAPH-FABF -FAC0;ID # CJK COMPATIBILITY IDEOGRAPH-FAC0 -FAC1;ID # CJK COMPATIBILITY IDEOGRAPH-FAC1 -FAC2;ID # CJK COMPATIBILITY IDEOGRAPH-FAC2 -FAC3;ID # CJK COMPATIBILITY IDEOGRAPH-FAC3 -FAC4;ID # CJK COMPATIBILITY IDEOGRAPH-FAC4 -FAC5;ID # CJK COMPATIBILITY IDEOGRAPH-FAC5 -FAC6;ID # CJK COMPATIBILITY IDEOGRAPH-FAC6 -FAC7;ID # CJK COMPATIBILITY IDEOGRAPH-FAC7 -FAC8;ID # CJK COMPATIBILITY IDEOGRAPH-FAC8 -FAC9;ID # CJK COMPATIBILITY IDEOGRAPH-FAC9 -FACA;ID # CJK COMPATIBILITY IDEOGRAPH-FACA -FACB;ID # CJK COMPATIBILITY IDEOGRAPH-FACB -FACC;ID # CJK COMPATIBILITY IDEOGRAPH-FACC -FACD;ID # CJK COMPATIBILITY IDEOGRAPH-FACD -FACE;ID # CJK COMPATIBILITY IDEOGRAPH-FACE -FACF;ID # CJK COMPATIBILITY IDEOGRAPH-FACF -FAD0;ID # CJK COMPATIBILITY IDEOGRAPH-FAD0 -FAD1;ID # CJK COMPATIBILITY IDEOGRAPH-FAD1 -FAD2;ID # CJK COMPATIBILITY IDEOGRAPH-FAD2 -FAD3;ID # CJK COMPATIBILITY IDEOGRAPH-FAD3 -FAD4;ID # CJK COMPATIBILITY IDEOGRAPH-FAD4 -FAD5;ID # CJK COMPATIBILITY IDEOGRAPH-FAD5 -FAD6;ID # CJK COMPATIBILITY IDEOGRAPH-FAD6 -FAD7;ID # CJK COMPATIBILITY IDEOGRAPH-FAD7 -FAD8;ID # CJK COMPATIBILITY IDEOGRAPH-FAD8 -FAD9;ID # CJK COMPATIBILITY IDEOGRAPH-FAD9 -FB00;AL # LATIN SMALL LIGATURE FF -FB01;AL # LATIN SMALL LIGATURE FI -FB02;AL # LATIN SMALL LIGATURE FL -FB03;AL # LATIN SMALL LIGATURE FFI -FB04;AL # LATIN SMALL LIGATURE FFL -FB05;AL # LATIN SMALL LIGATURE LONG S T -FB06;AL # LATIN SMALL LIGATURE ST -FB13;AL # ARMENIAN SMALL LIGATURE MEN NOW -FB14;AL # ARMENIAN SMALL LIGATURE MEN ECH -FB15;AL # ARMENIAN SMALL LIGATURE MEN INI -FB16;AL # ARMENIAN SMALL LIGATURE VEW NOW -FB17;AL # ARMENIAN SMALL LIGATURE MEN XEH -FB1D;AL # HEBREW LETTER YOD WITH HIRIQ -FB1E;CM # HEBREW POINT JUDEO-SPANISH VARIKA -FB1F;AL # HEBREW LIGATURE YIDDISH YOD YOD PATAH -FB20;AL # HEBREW LETTER ALTERNATIVE AYIN -FB21;AL # HEBREW LETTER WIDE ALEF -FB22;AL # HEBREW LETTER WIDE DALET -FB23;AL # HEBREW LETTER WIDE HE -FB24;AL # HEBREW LETTER WIDE KAF -FB25;AL # HEBREW LETTER WIDE LAMED -FB26;AL # HEBREW LETTER WIDE FINAL MEM -FB27;AL # HEBREW LETTER WIDE RESH -FB28;AL # HEBREW LETTER WIDE TAV -FB29;AL # HEBREW LETTER ALTERNATIVE PLUS SIGN -FB2A;AL # HEBREW LETTER SHIN WITH SHIN DOT -FB2B;AL # HEBREW LETTER SHIN WITH SIN DOT -FB2C;AL # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT -FB2D;AL # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT -FB2E;AL # HEBREW LETTER ALEF WITH PATAH -FB2F;AL # HEBREW LETTER ALEF WITH QAMATS -FB30;AL # HEBREW LETTER ALEF WITH MAPIQ -FB31;AL # HEBREW LETTER BET WITH DAGESH -FB32;AL # HEBREW LETTER GIMEL WITH DAGESH -FB33;AL # HEBREW LETTER DALET WITH DAGESH -FB34;AL # HEBREW LETTER HE WITH MAPIQ -FB35;AL # HEBREW LETTER VAV WITH DAGESH -FB36;AL # HEBREW LETTER ZAYIN WITH DAGESH -FB38;AL # HEBREW LETTER TET WITH DAGESH -FB39;AL # HEBREW LETTER YOD WITH DAGESH -FB3A;AL # HEBREW LETTER FINAL KAF WITH DAGESH -FB3B;AL # HEBREW LETTER KAF WITH DAGESH -FB3C;AL # HEBREW LETTER LAMED WITH DAGESH -FB3E;AL # HEBREW LETTER MEM WITH DAGESH -FB40;AL # HEBREW LETTER NUN WITH DAGESH -FB41;AL # HEBREW LETTER SAMEKH WITH DAGESH -FB43;AL # HEBREW LETTER FINAL PE WITH DAGESH -FB44;AL # HEBREW LETTER PE WITH DAGESH -FB46;AL # HEBREW LETTER TSADI WITH DAGESH -FB47;AL # HEBREW LETTER QOF WITH DAGESH -FB48;AL # HEBREW LETTER RESH WITH DAGESH -FB49;AL # HEBREW LETTER SHIN WITH DAGESH -FB4A;AL # HEBREW LETTER TAV WITH DAGESH -FB4B;AL # HEBREW LETTER VAV WITH HOLAM -FB4C;AL # HEBREW LETTER BET WITH RAFE -FB4D;AL # HEBREW LETTER KAF WITH RAFE -FB4E;AL # HEBREW LETTER PE WITH RAFE -FB4F;AL # HEBREW LIGATURE ALEF LAMED -FB50;AL # ARABIC LETTER ALEF WASLA ISOLATED FORM -FB51;AL # ARABIC LETTER ALEF WASLA FINAL FORM -FB52;AL # ARABIC LETTER BEEH ISOLATED FORM -FB53;AL # ARABIC LETTER BEEH FINAL FORM -FB54;AL # ARABIC LETTER BEEH INITIAL FORM -FB55;AL # ARABIC LETTER BEEH MEDIAL FORM -FB56;AL # ARABIC LETTER PEH ISOLATED FORM -FB57;AL # ARABIC LETTER PEH FINAL FORM -FB58;AL # ARABIC LETTER PEH INITIAL FORM -FB59;AL # ARABIC LETTER PEH MEDIAL FORM -FB5A;AL # ARABIC LETTER BEHEH ISOLATED FORM -FB5B;AL # ARABIC LETTER BEHEH FINAL FORM -FB5C;AL # ARABIC LETTER BEHEH INITIAL FORM -FB5D;AL # ARABIC LETTER BEHEH MEDIAL FORM -FB5E;AL # ARABIC LETTER TTEHEH ISOLATED FORM -FB5F;AL # ARABIC LETTER TTEHEH FINAL FORM -FB60;AL # ARABIC LETTER TTEHEH INITIAL FORM -FB61;AL # ARABIC LETTER TTEHEH MEDIAL FORM -FB62;AL # ARABIC LETTER TEHEH ISOLATED FORM -FB63;AL # ARABIC LETTER TEHEH FINAL FORM -FB64;AL # ARABIC LETTER TEHEH INITIAL FORM -FB65;AL # ARABIC LETTER TEHEH MEDIAL FORM -FB66;AL # ARABIC LETTER TTEH ISOLATED FORM -FB67;AL # ARABIC LETTER TTEH FINAL FORM -FB68;AL # ARABIC LETTER TTEH INITIAL FORM -FB69;AL # ARABIC LETTER TTEH MEDIAL FORM -FB6A;AL # ARABIC LETTER VEH ISOLATED FORM -FB6B;AL # ARABIC LETTER VEH FINAL FORM -FB6C;AL # ARABIC LETTER VEH INITIAL FORM -FB6D;AL # ARABIC LETTER VEH MEDIAL FORM -FB6E;AL # ARABIC LETTER PEHEH ISOLATED FORM -FB6F;AL # ARABIC LETTER PEHEH FINAL FORM -FB70;AL # ARABIC LETTER PEHEH INITIAL FORM -FB71;AL # ARABIC LETTER PEHEH MEDIAL FORM -FB72;AL # ARABIC LETTER DYEH ISOLATED FORM -FB73;AL # ARABIC LETTER DYEH FINAL FORM -FB74;AL # ARABIC LETTER DYEH INITIAL FORM -FB75;AL # ARABIC LETTER DYEH MEDIAL FORM -FB76;AL # ARABIC LETTER NYEH ISOLATED FORM -FB77;AL # ARABIC LETTER NYEH FINAL FORM -FB78;AL # ARABIC LETTER NYEH INITIAL FORM -FB79;AL # ARABIC LETTER NYEH MEDIAL FORM -FB7A;AL # ARABIC LETTER TCHEH ISOLATED FORM -FB7B;AL # ARABIC LETTER TCHEH FINAL FORM -FB7C;AL # ARABIC LETTER TCHEH INITIAL FORM -FB7D;AL # ARABIC LETTER TCHEH MEDIAL FORM -FB7E;AL # ARABIC LETTER TCHEHEH ISOLATED FORM -FB7F;AL # ARABIC LETTER TCHEHEH FINAL FORM -FB80;AL # ARABIC LETTER TCHEHEH INITIAL FORM -FB81;AL # ARABIC LETTER TCHEHEH MEDIAL FORM -FB82;AL # ARABIC LETTER DDAHAL ISOLATED FORM -FB83;AL # ARABIC LETTER DDAHAL FINAL FORM -FB84;AL # ARABIC LETTER DAHAL ISOLATED FORM -FB85;AL # ARABIC LETTER DAHAL FINAL FORM -FB86;AL # ARABIC LETTER DUL ISOLATED FORM -FB87;AL # ARABIC LETTER DUL FINAL FORM -FB88;AL # ARABIC LETTER DDAL ISOLATED FORM -FB89;AL # ARABIC LETTER DDAL FINAL FORM -FB8A;AL # ARABIC LETTER JEH ISOLATED FORM -FB8B;AL # ARABIC LETTER JEH FINAL FORM -FB8C;AL # ARABIC LETTER RREH ISOLATED FORM -FB8D;AL # ARABIC LETTER RREH FINAL FORM -FB8E;AL # ARABIC LETTER KEHEH ISOLATED FORM -FB8F;AL # ARABIC LETTER KEHEH FINAL FORM -FB90;AL # ARABIC LETTER KEHEH INITIAL FORM -FB91;AL # ARABIC LETTER KEHEH MEDIAL FORM -FB92;AL # ARABIC LETTER GAF ISOLATED FORM -FB93;AL # ARABIC LETTER GAF FINAL FORM -FB94;AL # ARABIC LETTER GAF INITIAL FORM -FB95;AL # ARABIC LETTER GAF MEDIAL FORM -FB96;AL # ARABIC LETTER GUEH ISOLATED FORM -FB97;AL # ARABIC LETTER GUEH FINAL FORM -FB98;AL # ARABIC LETTER GUEH INITIAL FORM -FB99;AL # ARABIC LETTER GUEH MEDIAL FORM -FB9A;AL # ARABIC LETTER NGOEH ISOLATED FORM -FB9B;AL # ARABIC LETTER NGOEH FINAL FORM -FB9C;AL # ARABIC LETTER NGOEH INITIAL FORM -FB9D;AL # ARABIC LETTER NGOEH MEDIAL FORM -FB9E;AL # ARABIC LETTER NOON GHUNNA ISOLATED FORM -FB9F;AL # ARABIC LETTER NOON GHUNNA FINAL FORM -FBA0;AL # ARABIC LETTER RNOON ISOLATED FORM -FBA1;AL # ARABIC LETTER RNOON FINAL FORM -FBA2;AL # ARABIC LETTER RNOON INITIAL FORM -FBA3;AL # ARABIC LETTER RNOON MEDIAL FORM -FBA4;AL # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM -FBA5;AL # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM -FBA6;AL # ARABIC LETTER HEH GOAL ISOLATED FORM -FBA7;AL # ARABIC LETTER HEH GOAL FINAL FORM -FBA8;AL # ARABIC LETTER HEH GOAL INITIAL FORM -FBA9;AL # ARABIC LETTER HEH GOAL MEDIAL FORM -FBAA;AL # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM -FBAB;AL # ARABIC LETTER HEH DOACHASHMEE FINAL FORM -FBAC;AL # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM -FBAD;AL # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM -FBAE;AL # ARABIC LETTER YEH BARREE ISOLATED FORM -FBAF;AL # ARABIC LETTER YEH BARREE FINAL FORM -FBB0;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM -FBB1;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBD3;AL # ARABIC LETTER NG ISOLATED FORM -FBD4;AL # ARABIC LETTER NG FINAL FORM -FBD5;AL # ARABIC LETTER NG INITIAL FORM -FBD6;AL # ARABIC LETTER NG MEDIAL FORM -FBD7;AL # ARABIC LETTER U ISOLATED FORM -FBD8;AL # ARABIC LETTER U FINAL FORM -FBD9;AL # ARABIC LETTER OE ISOLATED FORM -FBDA;AL # ARABIC LETTER OE FINAL FORM -FBDB;AL # ARABIC LETTER YU ISOLATED FORM -FBDC;AL # ARABIC LETTER YU FINAL FORM -FBDD;AL # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM -FBDE;AL # ARABIC LETTER VE ISOLATED FORM -FBDF;AL # ARABIC LETTER VE FINAL FORM -FBE0;AL # ARABIC LETTER KIRGHIZ OE ISOLATED FORM -FBE1;AL # ARABIC LETTER KIRGHIZ OE FINAL FORM -FBE2;AL # ARABIC LETTER KIRGHIZ YU ISOLATED FORM -FBE3;AL # ARABIC LETTER KIRGHIZ YU FINAL FORM -FBE4;AL # ARABIC LETTER E ISOLATED FORM -FBE5;AL # ARABIC LETTER E FINAL FORM -FBE6;AL # ARABIC LETTER E INITIAL FORM -FBE7;AL # ARABIC LETTER E MEDIAL FORM -FBE8;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM -FBE9;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM -FBEA;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM -FBEB;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM -FBEC;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM -FBED;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM -FBEE;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM -FBEF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM -FBF0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM -FBF1;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM -FBF2;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM -FBF3;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM -FBF4;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM -FBF5;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM -FBF6;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM -FBF7;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM -FBF8;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM -FBF9;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FBFA;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FBFB;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM -FBFC;AL # ARABIC LETTER FARSI YEH ISOLATED FORM -FBFD;AL # ARABIC LETTER FARSI YEH FINAL FORM -FBFE;AL # ARABIC LETTER FARSI YEH INITIAL FORM -FBFF;AL # ARABIC LETTER FARSI YEH MEDIAL FORM -FC00;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM -FC01;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM -FC02;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM -FC03;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FC04;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM -FC05;AL # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM -FC06;AL # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM -FC07;AL # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM -FC08;AL # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM -FC09;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM -FC0A;AL # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM -FC0B;AL # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM -FC0C;AL # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM -FC0D;AL # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM -FC0E;AL # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM -FC0F;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM -FC10;AL # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM -FC11;AL # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM -FC12;AL # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM -FC13;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM -FC14;AL # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM -FC15;AL # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM -FC16;AL # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM -FC17;AL # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM -FC18;AL # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM -FC19;AL # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM -FC1A;AL # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM -FC1B;AL # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM -FC1C;AL # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM -FC1D;AL # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM -FC1E;AL # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM -FC1F;AL # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM -FC20;AL # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM -FC21;AL # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM -FC22;AL # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM -FC23;AL # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM -FC24;AL # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM -FC25;AL # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM -FC26;AL # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM -FC27;AL # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM -FC28;AL # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM -FC29;AL # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM -FC2A;AL # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM -FC2B;AL # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM -FC2C;AL # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM -FC2D;AL # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM -FC2E;AL # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM -FC2F;AL # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM -FC30;AL # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM -FC31;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM -FC32;AL # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM -FC33;AL # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM -FC34;AL # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM -FC35;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM -FC36;AL # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM -FC37;AL # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM -FC38;AL # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM -FC39;AL # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM -FC3A;AL # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM -FC3B;AL # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM -FC3C;AL # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM -FC3D;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM -FC3E;AL # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM -FC3F;AL # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM -FC40;AL # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM -FC41;AL # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM -FC42;AL # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM -FC43;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM -FC44;AL # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM -FC45;AL # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM -FC46;AL # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM -FC47;AL # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM -FC48;AL # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM -FC49;AL # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM -FC4A;AL # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM -FC4B;AL # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM -FC4C;AL # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM -FC4D;AL # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM -FC4E;AL # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM -FC4F;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM -FC50;AL # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM -FC51;AL # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM -FC52;AL # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM -FC53;AL # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM -FC54;AL # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM -FC55;AL # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM -FC56;AL # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM -FC57;AL # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM -FC58;AL # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM -FC59;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM -FC5A;AL # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM -FC5B;AL # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5C;AL # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5D;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5E;AL # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM -FC5F;AL # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM -FC60;AL # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM -FC61;AL # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM -FC62;AL # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM -FC63;AL # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM -FC64;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM -FC65;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM -FC66;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM -FC67;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM -FC68;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FC69;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM -FC6A;AL # ARABIC LIGATURE BEH WITH REH FINAL FORM -FC6B;AL # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM -FC6C;AL # ARABIC LIGATURE BEH WITH MEEM FINAL FORM -FC6D;AL # ARABIC LIGATURE BEH WITH NOON FINAL FORM -FC6E;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM -FC6F;AL # ARABIC LIGATURE BEH WITH YEH FINAL FORM -FC70;AL # ARABIC LIGATURE TEH WITH REH FINAL FORM -FC71;AL # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM -FC72;AL # ARABIC LIGATURE TEH WITH MEEM FINAL FORM -FC73;AL # ARABIC LIGATURE TEH WITH NOON FINAL FORM -FC74;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM -FC75;AL # ARABIC LIGATURE TEH WITH YEH FINAL FORM -FC76;AL # ARABIC LIGATURE THEH WITH REH FINAL FORM -FC77;AL # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM -FC78;AL # ARABIC LIGATURE THEH WITH MEEM FINAL FORM -FC79;AL # ARABIC LIGATURE THEH WITH NOON FINAL FORM -FC7A;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM -FC7B;AL # ARABIC LIGATURE THEH WITH YEH FINAL FORM -FC7C;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM -FC7D;AL # ARABIC LIGATURE FEH WITH YEH FINAL FORM -FC7E;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM -FC7F;AL # ARABIC LIGATURE QAF WITH YEH FINAL FORM -FC80;AL # ARABIC LIGATURE KAF WITH ALEF FINAL FORM -FC81;AL # ARABIC LIGATURE KAF WITH LAM FINAL FORM -FC82;AL # ARABIC LIGATURE KAF WITH MEEM FINAL FORM -FC83;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM -FC84;AL # ARABIC LIGATURE KAF WITH YEH FINAL FORM -FC85;AL # ARABIC LIGATURE LAM WITH MEEM FINAL FORM -FC86;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM -FC87;AL # ARABIC LIGATURE LAM WITH YEH FINAL FORM -FC88;AL # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM -FC89;AL # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM -FC8A;AL # ARABIC LIGATURE NOON WITH REH FINAL FORM -FC8B;AL # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM -FC8C;AL # ARABIC LIGATURE NOON WITH MEEM FINAL FORM -FC8D;AL # ARABIC LIGATURE NOON WITH NOON FINAL FORM -FC8E;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM -FC8F;AL # ARABIC LIGATURE NOON WITH YEH FINAL FORM -FC90;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM -FC91;AL # ARABIC LIGATURE YEH WITH REH FINAL FORM -FC92;AL # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM -FC93;AL # ARABIC LIGATURE YEH WITH MEEM FINAL FORM -FC94;AL # ARABIC LIGATURE YEH WITH NOON FINAL FORM -FC95;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM -FC96;AL # ARABIC LIGATURE YEH WITH YEH FINAL FORM -FC97;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM -FC98;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM -FC99;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM -FC9A;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM -FC9B;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM -FC9C;AL # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM -FC9D;AL # ARABIC LIGATURE BEH WITH HAH INITIAL FORM -FC9E;AL # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM -FC9F;AL # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM -FCA0;AL # ARABIC LIGATURE BEH WITH HEH INITIAL FORM -FCA1;AL # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM -FCA2;AL # ARABIC LIGATURE TEH WITH HAH INITIAL FORM -FCA3;AL # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM -FCA4;AL # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM -FCA5;AL # ARABIC LIGATURE TEH WITH HEH INITIAL FORM -FCA6;AL # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM -FCA7;AL # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM -FCA8;AL # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM -FCA9;AL # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM -FCAA;AL # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM -FCAB;AL # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM -FCAC;AL # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM -FCAD;AL # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM -FCAE;AL # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM -FCAF;AL # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM -FCB0;AL # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM -FCB1;AL # ARABIC LIGATURE SAD WITH HAH INITIAL FORM -FCB2;AL # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM -FCB3;AL # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM -FCB4;AL # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM -FCB5;AL # ARABIC LIGATURE DAD WITH HAH INITIAL FORM -FCB6;AL # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM -FCB7;AL # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM -FCB8;AL # ARABIC LIGATURE TAH WITH HAH INITIAL FORM -FCB9;AL # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM -FCBA;AL # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM -FCBB;AL # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM -FCBC;AL # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM -FCBD;AL # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM -FCBE;AL # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM -FCBF;AL # ARABIC LIGATURE FEH WITH HAH INITIAL FORM -FCC0;AL # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM -FCC1;AL # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM -FCC2;AL # ARABIC LIGATURE QAF WITH HAH INITIAL FORM -FCC3;AL # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM -FCC4;AL # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM -FCC5;AL # ARABIC LIGATURE KAF WITH HAH INITIAL FORM -FCC6;AL # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM -FCC7;AL # ARABIC LIGATURE KAF WITH LAM INITIAL FORM -FCC8;AL # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM -FCC9;AL # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM -FCCA;AL # ARABIC LIGATURE LAM WITH HAH INITIAL FORM -FCCB;AL # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM -FCCC;AL # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM -FCCD;AL # ARABIC LIGATURE LAM WITH HEH INITIAL FORM -FCCE;AL # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM -FCCF;AL # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM -FCD0;AL # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM -FCD1;AL # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM -FCD2;AL # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM -FCD3;AL # ARABIC LIGATURE NOON WITH HAH INITIAL FORM -FCD4;AL # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM -FCD5;AL # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM -FCD6;AL # ARABIC LIGATURE NOON WITH HEH INITIAL FORM -FCD7;AL # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM -FCD8;AL # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM -FCD9;AL # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM -FCDA;AL # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM -FCDB;AL # ARABIC LIGATURE YEH WITH HAH INITIAL FORM -FCDC;AL # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM -FCDD;AL # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM -FCDE;AL # ARABIC LIGATURE YEH WITH HEH INITIAL FORM -FCDF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM -FCE0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM -FCE1;AL # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM -FCE2;AL # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM -FCE3;AL # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM -FCE4;AL # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM -FCE5;AL # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM -FCE6;AL # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM -FCE7;AL # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM -FCE8;AL # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM -FCE9;AL # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM -FCEA;AL # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM -FCEB;AL # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM -FCEC;AL # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM -FCED;AL # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM -FCEE;AL # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM -FCEF;AL # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM -FCF0;AL # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM -FCF1;AL # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM -FCF2;AL # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM -FCF3;AL # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM -FCF4;AL # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM -FCF5;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM -FCF6;AL # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM -FCF7;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM -FCF8;AL # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM -FCF9;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM -FCFA;AL # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM -FCFB;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM -FCFC;AL # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM -FCFD;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM -FCFE;AL # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM -FCFF;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM -FD00;AL # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM -FD01;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM -FD02;AL # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM -FD03;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM -FD04;AL # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM -FD05;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM -FD06;AL # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM -FD07;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM -FD08;AL # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM -FD09;AL # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM -FD0A;AL # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM -FD0B;AL # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM -FD0C;AL # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM -FD0D;AL # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM -FD0E;AL # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM -FD0F;AL # ARABIC LIGATURE SAD WITH REH ISOLATED FORM -FD10;AL # ARABIC LIGATURE DAD WITH REH ISOLATED FORM -FD11;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM -FD12;AL # ARABIC LIGATURE TAH WITH YEH FINAL FORM -FD13;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM -FD14;AL # ARABIC LIGATURE AIN WITH YEH FINAL FORM -FD15;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM -FD16;AL # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM -FD17;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM -FD18;AL # ARABIC LIGATURE SEEN WITH YEH FINAL FORM -FD19;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM -FD1A;AL # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM -FD1B;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM -FD1C;AL # ARABIC LIGATURE HAH WITH YEH FINAL FORM -FD1D;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM -FD1E;AL # ARABIC LIGATURE JEEM WITH YEH FINAL FORM -FD1F;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM -FD20;AL # ARABIC LIGATURE KHAH WITH YEH FINAL FORM -FD21;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM -FD22;AL # ARABIC LIGATURE SAD WITH YEH FINAL FORM -FD23;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM -FD24;AL # ARABIC LIGATURE DAD WITH YEH FINAL FORM -FD25;AL # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM -FD26;AL # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM -FD27;AL # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM -FD28;AL # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM -FD29;AL # ARABIC LIGATURE SHEEN WITH REH FINAL FORM -FD2A;AL # ARABIC LIGATURE SEEN WITH REH FINAL FORM -FD2B;AL # ARABIC LIGATURE SAD WITH REH FINAL FORM -FD2C;AL # ARABIC LIGATURE DAD WITH REH FINAL FORM -FD2D;AL # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM -FD2E;AL # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM -FD2F;AL # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM -FD30;AL # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM -FD31;AL # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM -FD32;AL # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM -FD33;AL # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM -FD34;AL # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM -FD35;AL # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM -FD36;AL # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM -FD37;AL # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM -FD38;AL # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM -FD39;AL # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM -FD3A;AL # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM -FD3B;AL # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM -FD3C;AL # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM -FD3D;AL # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM -FD3E;OP # ORNATE LEFT PARENTHESIS -FD3F;CL # ORNATE RIGHT PARENTHESIS -FD50;AL # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM -FD51;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM -FD52;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM -FD53;AL # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM -FD54;AL # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM -FD55;AL # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM -FD56;AL # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM -FD57;AL # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM -FD58;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM -FD59;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM -FD5A;AL # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM -FD5B;AL # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD5C;AL # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM -FD5D;AL # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM -FD5E;AL # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM -FD5F;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM -FD60;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM -FD61;AL # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM -FD62;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM -FD63;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM -FD64;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM -FD65;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM -FD66;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM -FD67;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM -FD68;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM -FD69;AL # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM -FD6A;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM -FD6B;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM -FD6C;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM -FD6D;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM -FD6E;AL # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM -FD6F;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM -FD70;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM -FD71;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM -FD72;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM -FD73;AL # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM -FD74;AL # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM -FD75;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM -FD76;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM -FD77;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM -FD78;AL # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD79;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM -FD7A;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM -FD7B;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD7C;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM -FD7D;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM -FD7E;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM -FD7F;AL # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM -FD80;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM -FD81;AL # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM -FD82;AL # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM -FD83;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM -FD84;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM -FD85;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM -FD86;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM -FD87;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM -FD88;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM -FD89;AL # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM -FD8A;AL # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM -FD8B;AL # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM -FD8C;AL # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM -FD8D;AL # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM -FD8E;AL # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM -FD8F;AL # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM -FD92;AL # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM -FD93;AL # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM -FD94;AL # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM -FD95;AL # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM -FD96;AL # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM -FD97;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM -FD98;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM -FD99;AL # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM -FD9A;AL # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM -FD9B;AL # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD9C;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM -FD9D;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM -FD9E;AL # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM -FD9F;AL # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM -FDA0;AL # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM -FDA1;AL # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM -FDA2;AL # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDA3;AL # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM -FDA4;AL # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA5;AL # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM -FDA6;AL # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM -FDA7;AL # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA8;AL # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDA9;AL # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM -FDAA;AL # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM -FDAB;AL # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM -FDAC;AL # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM -FDAD;AL # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM -FDAE;AL # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM -FDAF;AL # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM -FDB0;AL # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM -FDB1;AL # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM -FDB2;AL # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM -FDB3;AL # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM -FDB4;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM -FDB5;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM -FDB6;AL # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM -FDB7;AL # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM -FDB8;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM -FDB9;AL # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM -FDBA;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM -FDBB;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM -FDBC;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM -FDBD;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM -FDBE;AL # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM -FDBF;AL # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM -FDC0;AL # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM -FDC1;AL # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM -FDC2;AL # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM -FDC3;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM -FDC4;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM -FDC5;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM -FDC6;AL # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM -FDC7;AL # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM -FDF0;AL # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM -FDF1;AL # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM -FDF2;AL # ARABIC LIGATURE ALLAH ISOLATED FORM -FDF3;AL # ARABIC LIGATURE AKBAR ISOLATED FORM -FDF4;AL # ARABIC LIGATURE MOHAMMAD ISOLATED FORM -FDF5;AL # ARABIC LIGATURE SALAM ISOLATED FORM -FDF6;AL # ARABIC LIGATURE RASOUL ISOLATED FORM -FDF7;AL # ARABIC LIGATURE ALAYHE ISOLATED FORM -FDF8;AL # ARABIC LIGATURE WASALLAM ISOLATED FORM -FDF9;AL # ARABIC LIGATURE SALLA ISOLATED FORM -FDFA;AL # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM -FDFB;AL # ARABIC LIGATURE JALLAJALALOUHOU -FDFC;PO # RIAL SIGN -FDFD;AL # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -FE00;CM # VARIATION SELECTOR-1 -FE01;CM # VARIATION SELECTOR-2 -FE02;CM # VARIATION SELECTOR-3 -FE03;CM # VARIATION SELECTOR-4 -FE04;CM # VARIATION SELECTOR-5 -FE05;CM # VARIATION SELECTOR-6 -FE06;CM # VARIATION SELECTOR-7 -FE07;CM # VARIATION SELECTOR-8 -FE08;CM # VARIATION SELECTOR-9 -FE09;CM # VARIATION SELECTOR-10 -FE0A;CM # VARIATION SELECTOR-11 -FE0B;CM # VARIATION SELECTOR-12 -FE0C;CM # VARIATION SELECTOR-13 -FE0D;CM # VARIATION SELECTOR-14 -FE0E;CM # VARIATION SELECTOR-15 -FE0F;CM # VARIATION SELECTOR-16 -FE10;IS # PRESENTATION FORM FOR VERTICAL COMMA -FE11;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA -FE12;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP -FE13;IS # PRESENTATION FORM FOR VERTICAL COLON -FE14;IS # PRESENTATION FORM FOR VERTICAL SEMICOLON -FE15;EX # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK -FE16;EX # PRESENTATION FORM FOR VERTICAL QUESTION MARK -FE17;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET -FE18;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET -FE19;IN # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS -FE20;CM # COMBINING LIGATURE LEFT HALF -FE21;CM # COMBINING LIGATURE RIGHT HALF -FE22;CM # COMBINING DOUBLE TILDE LEFT HALF -FE23;CM # COMBINING DOUBLE TILDE RIGHT HALF -FE30;ID # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER -FE31;ID # PRESENTATION FORM FOR VERTICAL EM DASH -FE32;ID # PRESENTATION FORM FOR VERTICAL EN DASH -FE33;ID # PRESENTATION FORM FOR VERTICAL LOW LINE -FE34;ID # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE -FE35;OP # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS -FE36;CL # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS -FE37;OP # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET -FE38;CL # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET -FE39;OP # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET -FE3A;CL # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET -FE3B;OP # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET -FE3C;CL # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET -FE3D;OP # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET -FE3E;CL # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET -FE3F;OP # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET -FE40;CL # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET -FE41;OP # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42;CL # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FE45;ID # SESAME DOT -FE46;ID # WHITE SESAME DOT -FE47;OP # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48;CL # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET -FE49;ID # DASHED OVERLINE -FE4A;ID # CENTRELINE OVERLINE -FE4B;ID # WAVY OVERLINE -FE4C;ID # DOUBLE WAVY OVERLINE -FE4D;ID # DASHED LOW LINE -FE4E;ID # CENTRELINE LOW LINE -FE4F;ID # WAVY LOW LINE -FE50;CL # SMALL COMMA -FE51;ID # SMALL IDEOGRAPHIC COMMA -FE52;CL # SMALL FULL STOP -FE54;NS # SMALL SEMICOLON -FE55;NS # SMALL COLON -FE56;EX # SMALL QUESTION MARK -FE57;EX # SMALL EXCLAMATION MARK -FE58;ID # SMALL EM DASH -FE59;OP # SMALL LEFT PARENTHESIS -FE5A;CL # SMALL RIGHT PARENTHESIS -FE5B;OP # SMALL LEFT CURLY BRACKET -FE5C;CL # SMALL RIGHT CURLY BRACKET -FE5D;OP # SMALL LEFT TORTOISE SHELL BRACKET -FE5E;CL # SMALL RIGHT TORTOISE SHELL BRACKET -FE5F;ID # SMALL NUMBER SIGN -FE60;ID # SMALL AMPERSAND -FE61;ID # SMALL ASTERISK -FE62;ID # SMALL PLUS SIGN -FE63;ID # SMALL HYPHEN-MINUS -FE64;ID # SMALL LESS-THAN SIGN -FE65;ID # SMALL GREATER-THAN SIGN -FE66;ID # SMALL EQUALS SIGN -FE68;ID # SMALL REVERSE SOLIDUS -FE69;PR # SMALL DOLLAR SIGN -FE6A;PO # SMALL PERCENT SIGN -FE6B;ID # SMALL COMMERCIAL AT -FE70;AL # ARABIC FATHATAN ISOLATED FORM -FE71;AL # ARABIC TATWEEL WITH FATHATAN ABOVE -FE72;AL # ARABIC DAMMATAN ISOLATED FORM -FE73;AL # ARABIC TAIL FRAGMENT -FE74;AL # ARABIC KASRATAN ISOLATED FORM -FE76;AL # ARABIC FATHA ISOLATED FORM -FE77;AL # ARABIC FATHA MEDIAL FORM -FE78;AL # ARABIC DAMMA ISOLATED FORM -FE79;AL # ARABIC DAMMA MEDIAL FORM -FE7A;AL # ARABIC KASRA ISOLATED FORM -FE7B;AL # ARABIC KASRA MEDIAL FORM -FE7C;AL # ARABIC SHADDA ISOLATED FORM -FE7D;AL # ARABIC SHADDA MEDIAL FORM -FE7E;AL # ARABIC SUKUN ISOLATED FORM -FE7F;AL # ARABIC SUKUN MEDIAL FORM -FE80;AL # ARABIC LETTER HAMZA ISOLATED FORM -FE81;AL # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM -FE82;AL # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM -FE83;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM -FE84;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM -FE85;AL # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM -FE86;AL # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM -FE87;AL # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM -FE88;AL # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM -FE89;AL # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM -FE8A;AL # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM -FE8B;AL # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM -FE8C;AL # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM -FE8D;AL # ARABIC LETTER ALEF ISOLATED FORM -FE8E;AL # ARABIC LETTER ALEF FINAL FORM -FE8F;AL # ARABIC LETTER BEH ISOLATED FORM -FE90;AL # ARABIC LETTER BEH FINAL FORM -FE91;AL # ARABIC LETTER BEH INITIAL FORM -FE92;AL # ARABIC LETTER BEH MEDIAL FORM -FE93;AL # ARABIC LETTER TEH MARBUTA ISOLATED FORM -FE94;AL # ARABIC LETTER TEH MARBUTA FINAL FORM -FE95;AL # ARABIC LETTER TEH ISOLATED FORM -FE96;AL # ARABIC LETTER TEH FINAL FORM -FE97;AL # ARABIC LETTER TEH INITIAL FORM -FE98;AL # ARABIC LETTER TEH MEDIAL FORM -FE99;AL # ARABIC LETTER THEH ISOLATED FORM -FE9A;AL # ARABIC LETTER THEH FINAL FORM -FE9B;AL # ARABIC LETTER THEH INITIAL FORM -FE9C;AL # ARABIC LETTER THEH MEDIAL FORM -FE9D;AL # ARABIC LETTER JEEM ISOLATED FORM -FE9E;AL # ARABIC LETTER JEEM FINAL FORM -FE9F;AL # ARABIC LETTER JEEM INITIAL FORM -FEA0;AL # ARABIC LETTER JEEM MEDIAL FORM -FEA1;AL # ARABIC LETTER HAH ISOLATED FORM -FEA2;AL # ARABIC LETTER HAH FINAL FORM -FEA3;AL # ARABIC LETTER HAH INITIAL FORM -FEA4;AL # ARABIC LETTER HAH MEDIAL FORM -FEA5;AL # ARABIC LETTER KHAH ISOLATED FORM -FEA6;AL # ARABIC LETTER KHAH FINAL FORM -FEA7;AL # ARABIC LETTER KHAH INITIAL FORM -FEA8;AL # ARABIC LETTER KHAH MEDIAL FORM -FEA9;AL # ARABIC LETTER DAL ISOLATED FORM -FEAA;AL # ARABIC LETTER DAL FINAL FORM -FEAB;AL # ARABIC LETTER THAL ISOLATED FORM -FEAC;AL # ARABIC LETTER THAL FINAL FORM -FEAD;AL # ARABIC LETTER REH ISOLATED FORM -FEAE;AL # ARABIC LETTER REH FINAL FORM -FEAF;AL # ARABIC LETTER ZAIN ISOLATED FORM -FEB0;AL # ARABIC LETTER ZAIN FINAL FORM -FEB1;AL # ARABIC LETTER SEEN ISOLATED FORM -FEB2;AL # ARABIC LETTER SEEN FINAL FORM -FEB3;AL # ARABIC LETTER SEEN INITIAL FORM -FEB4;AL # ARABIC LETTER SEEN MEDIAL FORM -FEB5;AL # ARABIC LETTER SHEEN ISOLATED FORM -FEB6;AL # ARABIC LETTER SHEEN FINAL FORM -FEB7;AL # ARABIC LETTER SHEEN INITIAL FORM -FEB8;AL # ARABIC LETTER SHEEN MEDIAL FORM -FEB9;AL # ARABIC LETTER SAD ISOLATED FORM -FEBA;AL # ARABIC LETTER SAD FINAL FORM -FEBB;AL # ARABIC LETTER SAD INITIAL FORM -FEBC;AL # ARABIC LETTER SAD MEDIAL FORM -FEBD;AL # ARABIC LETTER DAD ISOLATED FORM -FEBE;AL # ARABIC LETTER DAD FINAL FORM -FEBF;AL # ARABIC LETTER DAD INITIAL FORM -FEC0;AL # ARABIC LETTER DAD MEDIAL FORM -FEC1;AL # ARABIC LETTER TAH ISOLATED FORM -FEC2;AL # ARABIC LETTER TAH FINAL FORM -FEC3;AL # ARABIC LETTER TAH INITIAL FORM -FEC4;AL # ARABIC LETTER TAH MEDIAL FORM -FEC5;AL # ARABIC LETTER ZAH ISOLATED FORM -FEC6;AL # ARABIC LETTER ZAH FINAL FORM -FEC7;AL # ARABIC LETTER ZAH INITIAL FORM -FEC8;AL # ARABIC LETTER ZAH MEDIAL FORM -FEC9;AL # ARABIC LETTER AIN ISOLATED FORM -FECA;AL # ARABIC LETTER AIN FINAL FORM -FECB;AL # ARABIC LETTER AIN INITIAL FORM -FECC;AL # ARABIC LETTER AIN MEDIAL FORM -FECD;AL # ARABIC LETTER GHAIN ISOLATED FORM -FECE;AL # ARABIC LETTER GHAIN FINAL FORM -FECF;AL # ARABIC LETTER GHAIN INITIAL FORM -FED0;AL # ARABIC LETTER GHAIN MEDIAL FORM -FED1;AL # ARABIC LETTER FEH ISOLATED FORM -FED2;AL # ARABIC LETTER FEH FINAL FORM -FED3;AL # ARABIC LETTER FEH INITIAL FORM -FED4;AL # ARABIC LETTER FEH MEDIAL FORM -FED5;AL # ARABIC LETTER QAF ISOLATED FORM -FED6;AL # ARABIC LETTER QAF FINAL FORM -FED7;AL # ARABIC LETTER QAF INITIAL FORM -FED8;AL # ARABIC LETTER QAF MEDIAL FORM -FED9;AL # ARABIC LETTER KAF ISOLATED FORM -FEDA;AL # ARABIC LETTER KAF FINAL FORM -FEDB;AL # ARABIC LETTER KAF INITIAL FORM -FEDC;AL # ARABIC LETTER KAF MEDIAL FORM -FEDD;AL # ARABIC LETTER LAM ISOLATED FORM -FEDE;AL # ARABIC LETTER LAM FINAL FORM -FEDF;AL # ARABIC LETTER LAM INITIAL FORM -FEE0;AL # ARABIC LETTER LAM MEDIAL FORM -FEE1;AL # ARABIC LETTER MEEM ISOLATED FORM -FEE2;AL # ARABIC LETTER MEEM FINAL FORM -FEE3;AL # ARABIC LETTER MEEM INITIAL FORM -FEE4;AL # ARABIC LETTER MEEM MEDIAL FORM -FEE5;AL # ARABIC LETTER NOON ISOLATED FORM -FEE6;AL # ARABIC LETTER NOON FINAL FORM -FEE7;AL # ARABIC LETTER NOON INITIAL FORM -FEE8;AL # ARABIC LETTER NOON MEDIAL FORM -FEE9;AL # ARABIC LETTER HEH ISOLATED FORM -FEEA;AL # ARABIC LETTER HEH FINAL FORM -FEEB;AL # ARABIC LETTER HEH INITIAL FORM -FEEC;AL # ARABIC LETTER HEH MEDIAL FORM -FEED;AL # ARABIC LETTER WAW ISOLATED FORM -FEEE;AL # ARABIC LETTER WAW FINAL FORM -FEEF;AL # ARABIC LETTER ALEF MAKSURA ISOLATED FORM -FEF0;AL # ARABIC LETTER ALEF MAKSURA FINAL FORM -FEF1;AL # ARABIC LETTER YEH ISOLATED FORM -FEF2;AL # ARABIC LETTER YEH FINAL FORM -FEF3;AL # ARABIC LETTER YEH INITIAL FORM -FEF4;AL # ARABIC LETTER YEH MEDIAL FORM -FEF5;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM -FEF6;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM -FEF7;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM -FEF8;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM -FEF9;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM -FEFA;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM -FEFB;AL # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM -FEFC;AL # ARABIC LIGATURE LAM WITH ALEF FINAL FORM -FEFF;WJ # ZERO WIDTH NO-BREAK SPACE -FF01;EX # FULLWIDTH EXCLAMATION MARK -FF02;ID # FULLWIDTH QUOTATION MARK -FF03;ID # FULLWIDTH NUMBER SIGN -FF04;PR # FULLWIDTH DOLLAR SIGN -FF05;PO # FULLWIDTH PERCENT SIGN -FF06;ID # FULLWIDTH AMPERSAND -FF07;ID # FULLWIDTH APOSTROPHE -FF08;OP # FULLWIDTH LEFT PARENTHESIS -FF09;CL # FULLWIDTH RIGHT PARENTHESIS -FF0A;ID # FULLWIDTH ASTERISK -FF0B;ID # FULLWIDTH PLUS SIGN -FF0C;CL # FULLWIDTH COMMA -FF0D;ID # FULLWIDTH HYPHEN-MINUS -FF0E;CL # FULLWIDTH FULL STOP -FF0F;ID # FULLWIDTH SOLIDUS -FF10;ID # FULLWIDTH DIGIT ZERO -FF11;ID # FULLWIDTH DIGIT ONE -FF12;ID # FULLWIDTH DIGIT TWO -FF13;ID # FULLWIDTH DIGIT THREE -FF14;ID # FULLWIDTH DIGIT FOUR -FF15;ID # FULLWIDTH DIGIT FIVE -FF16;ID # FULLWIDTH DIGIT SIX -FF17;ID # FULLWIDTH DIGIT SEVEN -FF18;ID # FULLWIDTH DIGIT EIGHT -FF19;ID # FULLWIDTH DIGIT NINE -FF1A;NS # FULLWIDTH COLON -FF1B;NS # FULLWIDTH SEMICOLON -FF1C;ID # FULLWIDTH LESS-THAN SIGN -FF1D;ID # FULLWIDTH EQUALS SIGN -FF1E;ID # FULLWIDTH GREATER-THAN SIGN -FF1F;EX # FULLWIDTH QUESTION MARK -FF20;ID # FULLWIDTH COMMERCIAL AT -FF21;ID # FULLWIDTH LATIN CAPITAL LETTER A -FF22;ID # FULLWIDTH LATIN CAPITAL LETTER B -FF23;ID # FULLWIDTH LATIN CAPITAL LETTER C -FF24;ID # FULLWIDTH LATIN CAPITAL LETTER D -FF25;ID # FULLWIDTH LATIN CAPITAL LETTER E -FF26;ID # FULLWIDTH LATIN CAPITAL LETTER F -FF27;ID # FULLWIDTH LATIN CAPITAL LETTER G -FF28;ID # FULLWIDTH LATIN CAPITAL LETTER H -FF29;ID # FULLWIDTH LATIN CAPITAL LETTER I -FF2A;ID # FULLWIDTH LATIN CAPITAL LETTER J -FF2B;ID # FULLWIDTH LATIN CAPITAL LETTER K -FF2C;ID # FULLWIDTH LATIN CAPITAL LETTER L -FF2D;ID # FULLWIDTH LATIN CAPITAL LETTER M -FF2E;ID # FULLWIDTH LATIN CAPITAL LETTER N -FF2F;ID # FULLWIDTH LATIN CAPITAL LETTER O -FF30;ID # FULLWIDTH LATIN CAPITAL LETTER P -FF31;ID # FULLWIDTH LATIN CAPITAL LETTER Q -FF32;ID # FULLWIDTH LATIN CAPITAL LETTER R -FF33;ID # FULLWIDTH LATIN CAPITAL LETTER S -FF34;ID # FULLWIDTH LATIN CAPITAL LETTER T -FF35;ID # FULLWIDTH LATIN CAPITAL LETTER U -FF36;ID # FULLWIDTH LATIN CAPITAL LETTER V -FF37;ID # FULLWIDTH LATIN CAPITAL LETTER W -FF38;ID # FULLWIDTH LATIN CAPITAL LETTER X -FF39;ID # FULLWIDTH LATIN CAPITAL LETTER Y -FF3A;ID # FULLWIDTH LATIN CAPITAL LETTER Z -FF3B;OP # FULLWIDTH LEFT SQUARE BRACKET -FF3C;ID # FULLWIDTH REVERSE SOLIDUS -FF3D;CL # FULLWIDTH RIGHT SQUARE BRACKET -FF3E;ID # FULLWIDTH CIRCUMFLEX ACCENT -FF3F;ID # FULLWIDTH LOW LINE -FF40;ID # FULLWIDTH GRAVE ACCENT -FF41;ID # FULLWIDTH LATIN SMALL LETTER A -FF42;ID # FULLWIDTH LATIN SMALL LETTER B -FF43;ID # FULLWIDTH LATIN SMALL LETTER C -FF44;ID # FULLWIDTH LATIN SMALL LETTER D -FF45;ID # FULLWIDTH LATIN SMALL LETTER E -FF46;ID # FULLWIDTH LATIN SMALL LETTER F -FF47;ID # FULLWIDTH LATIN SMALL LETTER G -FF48;ID # FULLWIDTH LATIN SMALL LETTER H -FF49;ID # FULLWIDTH LATIN SMALL LETTER I -FF4A;ID # FULLWIDTH LATIN SMALL LETTER J -FF4B;ID # FULLWIDTH LATIN SMALL LETTER K -FF4C;ID # FULLWIDTH LATIN SMALL LETTER L -FF4D;ID # FULLWIDTH LATIN SMALL LETTER M -FF4E;ID # FULLWIDTH LATIN SMALL LETTER N -FF4F;ID # FULLWIDTH LATIN SMALL LETTER O -FF50;ID # FULLWIDTH LATIN SMALL LETTER P -FF51;ID # FULLWIDTH LATIN SMALL LETTER Q -FF52;ID # FULLWIDTH LATIN SMALL LETTER R -FF53;ID # FULLWIDTH LATIN SMALL LETTER S -FF54;ID # FULLWIDTH LATIN SMALL LETTER T -FF55;ID # FULLWIDTH LATIN SMALL LETTER U -FF56;ID # FULLWIDTH LATIN SMALL LETTER V -FF57;ID # FULLWIDTH LATIN SMALL LETTER W -FF58;ID # FULLWIDTH LATIN SMALL LETTER X -FF59;ID # FULLWIDTH LATIN SMALL LETTER Y -FF5A;ID # FULLWIDTH LATIN SMALL LETTER Z -FF5B;OP # FULLWIDTH LEFT CURLY BRACKET -FF5C;ID # FULLWIDTH VERTICAL LINE -FF5D;CL # FULLWIDTH RIGHT CURLY BRACKET -FF5E;ID # FULLWIDTH TILDE -FF5F;OP # FULLWIDTH LEFT WHITE PARENTHESIS -FF60;CL # FULLWIDTH RIGHT WHITE PARENTHESIS -FF61;CL # HALFWIDTH IDEOGRAPHIC FULL STOP -FF62;OP # HALFWIDTH LEFT CORNER BRACKET -FF63;CL # HALFWIDTH RIGHT CORNER BRACKET -FF64;CL # HALFWIDTH IDEOGRAPHIC COMMA -FF65;NS # HALFWIDTH KATAKANA MIDDLE DOT -FF66;AL # HALFWIDTH KATAKANA LETTER WO -FF67;NS # HALFWIDTH KATAKANA LETTER SMALL A -FF68;NS # HALFWIDTH KATAKANA LETTER SMALL I -FF69;NS # HALFWIDTH KATAKANA LETTER SMALL U -FF6A;NS # HALFWIDTH KATAKANA LETTER SMALL E -FF6B;NS # HALFWIDTH KATAKANA LETTER SMALL O -FF6C;NS # HALFWIDTH KATAKANA LETTER SMALL YA -FF6D;NS # HALFWIDTH KATAKANA LETTER SMALL YU -FF6E;NS # HALFWIDTH KATAKANA LETTER SMALL YO -FF6F;NS # HALFWIDTH KATAKANA LETTER SMALL TU -FF70;NS # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF71;AL # HALFWIDTH KATAKANA LETTER A -FF72;AL # HALFWIDTH KATAKANA LETTER I -FF73;AL # HALFWIDTH KATAKANA LETTER U -FF74;AL # HALFWIDTH KATAKANA LETTER E -FF75;AL # HALFWIDTH KATAKANA LETTER O -FF76;AL # HALFWIDTH KATAKANA LETTER KA -FF77;AL # HALFWIDTH KATAKANA LETTER KI -FF78;AL # HALFWIDTH KATAKANA LETTER KU -FF79;AL # HALFWIDTH KATAKANA LETTER KE -FF7A;AL # HALFWIDTH KATAKANA LETTER KO -FF7B;AL # HALFWIDTH KATAKANA LETTER SA -FF7C;AL # HALFWIDTH KATAKANA LETTER SI -FF7D;AL # HALFWIDTH KATAKANA LETTER SU -FF7E;AL # HALFWIDTH KATAKANA LETTER SE -FF7F;AL # HALFWIDTH KATAKANA LETTER SO -FF80;AL # HALFWIDTH KATAKANA LETTER TA -FF81;AL # HALFWIDTH KATAKANA LETTER TI -FF82;AL # HALFWIDTH KATAKANA LETTER TU -FF83;AL # HALFWIDTH KATAKANA LETTER TE -FF84;AL # HALFWIDTH KATAKANA LETTER TO -FF85;AL # HALFWIDTH KATAKANA LETTER NA -FF86;AL # HALFWIDTH KATAKANA LETTER NI -FF87;AL # HALFWIDTH KATAKANA LETTER NU -FF88;AL # HALFWIDTH KATAKANA LETTER NE -FF89;AL # HALFWIDTH KATAKANA LETTER NO -FF8A;AL # HALFWIDTH KATAKANA LETTER HA -FF8B;AL # HALFWIDTH KATAKANA LETTER HI -FF8C;AL # HALFWIDTH KATAKANA LETTER HU -FF8D;AL # HALFWIDTH KATAKANA LETTER HE -FF8E;AL # HALFWIDTH KATAKANA LETTER HO -FF8F;AL # HALFWIDTH KATAKANA LETTER MA -FF90;AL # HALFWIDTH KATAKANA LETTER MI -FF91;AL # HALFWIDTH KATAKANA LETTER MU -FF92;AL # HALFWIDTH KATAKANA LETTER ME -FF93;AL # HALFWIDTH KATAKANA LETTER MO -FF94;AL # HALFWIDTH KATAKANA LETTER YA -FF95;AL # HALFWIDTH KATAKANA LETTER YU -FF96;AL # HALFWIDTH KATAKANA LETTER YO -FF97;AL # HALFWIDTH KATAKANA LETTER RA -FF98;AL # HALFWIDTH KATAKANA LETTER RI -FF99;AL # HALFWIDTH KATAKANA LETTER RU -FF9A;AL # HALFWIDTH KATAKANA LETTER RE -FF9B;AL # HALFWIDTH KATAKANA LETTER RO -FF9C;AL # HALFWIDTH KATAKANA LETTER WA -FF9D;AL # HALFWIDTH KATAKANA LETTER N -FF9E;NS # HALFWIDTH KATAKANA VOICED SOUND MARK -FF9F;NS # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFA0;AL # HALFWIDTH HANGUL FILLER -FFA1;AL # HALFWIDTH HANGUL LETTER KIYEOK -FFA2;AL # HALFWIDTH HANGUL LETTER SSANGKIYEOK -FFA3;AL # HALFWIDTH HANGUL LETTER KIYEOK-SIOS -FFA4;AL # HALFWIDTH HANGUL LETTER NIEUN -FFA5;AL # HALFWIDTH HANGUL LETTER NIEUN-CIEUC -FFA6;AL # HALFWIDTH HANGUL LETTER NIEUN-HIEUH -FFA7;AL # HALFWIDTH HANGUL LETTER TIKEUT -FFA8;AL # HALFWIDTH HANGUL LETTER SSANGTIKEUT -FFA9;AL # HALFWIDTH HANGUL LETTER RIEUL -FFAA;AL # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK -FFAB;AL # HALFWIDTH HANGUL LETTER RIEUL-MIEUM -FFAC;AL # HALFWIDTH HANGUL LETTER RIEUL-PIEUP -FFAD;AL # HALFWIDTH HANGUL LETTER RIEUL-SIOS -FFAE;AL # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH -FFAF;AL # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH -FFB0;AL # HALFWIDTH HANGUL LETTER RIEUL-HIEUH -FFB1;AL # HALFWIDTH HANGUL LETTER MIEUM -FFB2;AL # HALFWIDTH HANGUL LETTER PIEUP -FFB3;AL # HALFWIDTH HANGUL LETTER SSANGPIEUP -FFB4;AL # HALFWIDTH HANGUL LETTER PIEUP-SIOS -FFB5;AL # HALFWIDTH HANGUL LETTER SIOS -FFB6;AL # HALFWIDTH HANGUL LETTER SSANGSIOS -FFB7;AL # HALFWIDTH HANGUL LETTER IEUNG -FFB8;AL # HALFWIDTH HANGUL LETTER CIEUC -FFB9;AL # HALFWIDTH HANGUL LETTER SSANGCIEUC -FFBA;AL # HALFWIDTH HANGUL LETTER CHIEUCH -FFBB;AL # HALFWIDTH HANGUL LETTER KHIEUKH -FFBC;AL # HALFWIDTH HANGUL LETTER THIEUTH -FFBD;AL # HALFWIDTH HANGUL LETTER PHIEUPH -FFBE;AL # HALFWIDTH HANGUL LETTER HIEUH -FFC2;AL # HALFWIDTH HANGUL LETTER A -FFC3;AL # HALFWIDTH HANGUL LETTER AE -FFC4;AL # HALFWIDTH HANGUL LETTER YA -FFC5;AL # HALFWIDTH HANGUL LETTER YAE -FFC6;AL # HALFWIDTH HANGUL LETTER EO -FFC7;AL # HALFWIDTH HANGUL LETTER E -FFCA;AL # HALFWIDTH HANGUL LETTER YEO -FFCB;AL # HALFWIDTH HANGUL LETTER YE -FFCC;AL # HALFWIDTH HANGUL LETTER O -FFCD;AL # HALFWIDTH HANGUL LETTER WA -FFCE;AL # HALFWIDTH HANGUL LETTER WAE -FFCF;AL # HALFWIDTH HANGUL LETTER OE -FFD2;AL # HALFWIDTH HANGUL LETTER YO -FFD3;AL # HALFWIDTH HANGUL LETTER U -FFD4;AL # HALFWIDTH HANGUL LETTER WEO -FFD5;AL # HALFWIDTH HANGUL LETTER WE -FFD6;AL # HALFWIDTH HANGUL LETTER WI -FFD7;AL # HALFWIDTH HANGUL LETTER YU -FFDA;AL # HALFWIDTH HANGUL LETTER EU -FFDB;AL # HALFWIDTH HANGUL LETTER YI -FFDC;AL # HALFWIDTH HANGUL LETTER I -FFE0;PO # FULLWIDTH CENT SIGN -FFE1;PR # FULLWIDTH POUND SIGN -FFE2;ID # FULLWIDTH NOT SIGN -FFE3;ID # FULLWIDTH MACRON -FFE4;ID # FULLWIDTH BROKEN BAR -FFE5;PR # FULLWIDTH YEN SIGN -FFE6;PR # FULLWIDTH WON SIGN -FFE8;AL # HALFWIDTH FORMS LIGHT VERTICAL -FFE9;AL # HALFWIDTH LEFTWARDS ARROW -FFEA;AL # HALFWIDTH UPWARDS ARROW -FFEB;AL # HALFWIDTH RIGHTWARDS ARROW -FFEC;AL # HALFWIDTH DOWNWARDS ARROW -FFED;AL # HALFWIDTH BLACK SQUARE -FFEE;AL # HALFWIDTH WHITE CIRCLE -FFF9;CM # INTERLINEAR ANNOTATION ANCHOR -FFFA;CM # INTERLINEAR ANNOTATION SEPARATOR -FFFB;CM # INTERLINEAR ANNOTATION TERMINATOR -FFFC;CB # OBJECT REPLACEMENT CHARACTER -FFFD;AI # REPLACEMENT CHARACTER -10000;AL # LINEAR B SYLLABLE B008 A -10001;AL # LINEAR B SYLLABLE B038 E -10002;AL # LINEAR B SYLLABLE B028 I -10003;AL # LINEAR B SYLLABLE B061 O -10004;AL # LINEAR B SYLLABLE B010 U -10005;AL # LINEAR B SYLLABLE B001 DA -10006;AL # LINEAR B SYLLABLE B045 DE -10007;AL # LINEAR B SYLLABLE B007 DI -10008;AL # LINEAR B SYLLABLE B014 DO -10009;AL # LINEAR B SYLLABLE B051 DU -1000A;AL # LINEAR B SYLLABLE B057 JA -1000B;AL # LINEAR B SYLLABLE B046 JE -1000D;AL # LINEAR B SYLLABLE B036 JO -1000E;AL # LINEAR B SYLLABLE B065 JU -1000F;AL # LINEAR B SYLLABLE B077 KA -10010;AL # LINEAR B SYLLABLE B044 KE -10011;AL # LINEAR B SYLLABLE B067 KI -10012;AL # LINEAR B SYLLABLE B070 KO -10013;AL # LINEAR B SYLLABLE B081 KU -10014;AL # LINEAR B SYLLABLE B080 MA -10015;AL # LINEAR B SYLLABLE B013 ME -10016;AL # LINEAR B SYLLABLE B073 MI -10017;AL # LINEAR B SYLLABLE B015 MO -10018;AL # LINEAR B SYLLABLE B023 MU -10019;AL # LINEAR B SYLLABLE B006 NA -1001A;AL # LINEAR B SYLLABLE B024 NE -1001B;AL # LINEAR B SYLLABLE B030 NI -1001C;AL # LINEAR B SYLLABLE B052 NO -1001D;AL # LINEAR B SYLLABLE B055 NU -1001E;AL # LINEAR B SYLLABLE B003 PA -1001F;AL # LINEAR B SYLLABLE B072 PE -10020;AL # LINEAR B SYLLABLE B039 PI -10021;AL # LINEAR B SYLLABLE B011 PO -10022;AL # LINEAR B SYLLABLE B050 PU -10023;AL # LINEAR B SYLLABLE B016 QA -10024;AL # LINEAR B SYLLABLE B078 QE -10025;AL # LINEAR B SYLLABLE B021 QI -10026;AL # LINEAR B SYLLABLE B032 QO -10028;AL # LINEAR B SYLLABLE B060 RA -10029;AL # LINEAR B SYLLABLE B027 RE -1002A;AL # LINEAR B SYLLABLE B053 RI -1002B;AL # LINEAR B SYLLABLE B002 RO -1002C;AL # LINEAR B SYLLABLE B026 RU -1002D;AL # LINEAR B SYLLABLE B031 SA -1002E;AL # LINEAR B SYLLABLE B009 SE -1002F;AL # LINEAR B SYLLABLE B041 SI -10030;AL # LINEAR B SYLLABLE B012 SO -10031;AL # LINEAR B SYLLABLE B058 SU -10032;AL # LINEAR B SYLLABLE B059 TA -10033;AL # LINEAR B SYLLABLE B004 TE -10034;AL # LINEAR B SYLLABLE B037 TI -10035;AL # LINEAR B SYLLABLE B005 TO -10036;AL # LINEAR B SYLLABLE B069 TU -10037;AL # LINEAR B SYLLABLE B054 WA -10038;AL # LINEAR B SYLLABLE B075 WE -10039;AL # LINEAR B SYLLABLE B040 WI -1003A;AL # LINEAR B SYLLABLE B042 WO -1003C;AL # LINEAR B SYLLABLE B017 ZA -1003D;AL # LINEAR B SYLLABLE B074 ZE -1003F;AL # LINEAR B SYLLABLE B020 ZO -10040;AL # LINEAR B SYLLABLE B025 A2 -10041;AL # LINEAR B SYLLABLE B043 A3 -10042;AL # LINEAR B SYLLABLE B085 AU -10043;AL # LINEAR B SYLLABLE B071 DWE -10044;AL # LINEAR B SYLLABLE B090 DWO -10045;AL # LINEAR B SYLLABLE B048 NWA -10046;AL # LINEAR B SYLLABLE B029 PU2 -10047;AL # LINEAR B SYLLABLE B062 PTE -10048;AL # LINEAR B SYLLABLE B076 RA2 -10049;AL # LINEAR B SYLLABLE B033 RA3 -1004A;AL # LINEAR B SYLLABLE B068 RO2 -1004B;AL # LINEAR B SYLLABLE B066 TA2 -1004C;AL # LINEAR B SYLLABLE B087 TWE -1004D;AL # LINEAR B SYLLABLE B091 TWO -10050;AL # LINEAR B SYMBOL B018 -10051;AL # LINEAR B SYMBOL B019 -10052;AL # LINEAR B SYMBOL B022 -10053;AL # LINEAR B SYMBOL B034 -10054;AL # LINEAR B SYMBOL B047 -10055;AL # LINEAR B SYMBOL B049 -10056;AL # LINEAR B SYMBOL B056 -10057;AL # LINEAR B SYMBOL B063 -10058;AL # LINEAR B SYMBOL B064 -10059;AL # LINEAR B SYMBOL B079 -1005A;AL # LINEAR B SYMBOL B082 -1005B;AL # LINEAR B SYMBOL B083 -1005C;AL # LINEAR B SYMBOL B086 -1005D;AL # LINEAR B SYMBOL B089 -10080;AL # LINEAR B IDEOGRAM B100 MAN -10081;AL # LINEAR B IDEOGRAM B102 WOMAN -10082;AL # LINEAR B IDEOGRAM B104 DEER -10083;AL # LINEAR B IDEOGRAM B105 EQUID -10084;AL # LINEAR B IDEOGRAM B105F MARE -10085;AL # LINEAR B IDEOGRAM B105M STALLION -10086;AL # LINEAR B IDEOGRAM B106F EWE -10087;AL # LINEAR B IDEOGRAM B106M RAM -10088;AL # LINEAR B IDEOGRAM B107F SHE-GOAT -10089;AL # LINEAR B IDEOGRAM B107M HE-GOAT -1008A;AL # LINEAR B IDEOGRAM B108F SOW -1008B;AL # LINEAR B IDEOGRAM B108M BOAR -1008C;AL # LINEAR B IDEOGRAM B109F COW -1008D;AL # LINEAR B IDEOGRAM B109M BULL -1008E;AL # LINEAR B IDEOGRAM B120 WHEAT -1008F;AL # LINEAR B IDEOGRAM B121 BARLEY -10090;AL # LINEAR B IDEOGRAM B122 OLIVE -10091;AL # LINEAR B IDEOGRAM B123 SPICE -10092;AL # LINEAR B IDEOGRAM B125 CYPERUS -10093;AL # LINEAR B MONOGRAM B127 KAPO -10094;AL # LINEAR B MONOGRAM B128 KANAKO -10095;AL # LINEAR B IDEOGRAM B130 OIL -10096;AL # LINEAR B IDEOGRAM B131 WINE -10097;AL # LINEAR B IDEOGRAM B132 -10098;AL # LINEAR B MONOGRAM B133 AREPA -10099;AL # LINEAR B MONOGRAM B135 MERI -1009A;AL # LINEAR B IDEOGRAM B140 BRONZE -1009B;AL # LINEAR B IDEOGRAM B141 GOLD -1009C;AL # LINEAR B IDEOGRAM B142 -1009D;AL # LINEAR B IDEOGRAM B145 WOOL -1009E;AL # LINEAR B IDEOGRAM B146 -1009F;AL # LINEAR B IDEOGRAM B150 -100A0;AL # LINEAR B IDEOGRAM B151 HORN -100A1;AL # LINEAR B IDEOGRAM B152 -100A2;AL # LINEAR B IDEOGRAM B153 -100A3;AL # LINEAR B IDEOGRAM B154 -100A4;AL # LINEAR B MONOGRAM B156 TURO2 -100A5;AL # LINEAR B IDEOGRAM B157 -100A6;AL # LINEAR B IDEOGRAM B158 -100A7;AL # LINEAR B IDEOGRAM B159 CLOTH -100A8;AL # LINEAR B IDEOGRAM B160 -100A9;AL # LINEAR B IDEOGRAM B161 -100AA;AL # LINEAR B IDEOGRAM B162 GARMENT -100AB;AL # LINEAR B IDEOGRAM B163 ARMOUR -100AC;AL # LINEAR B IDEOGRAM B164 -100AD;AL # LINEAR B IDEOGRAM B165 -100AE;AL # LINEAR B IDEOGRAM B166 -100AF;AL # LINEAR B IDEOGRAM B167 -100B0;AL # LINEAR B IDEOGRAM B168 -100B1;AL # LINEAR B IDEOGRAM B169 -100B2;AL # LINEAR B IDEOGRAM B170 -100B3;AL # LINEAR B IDEOGRAM B171 -100B4;AL # LINEAR B IDEOGRAM B172 -100B5;AL # LINEAR B IDEOGRAM B173 MONTH -100B6;AL # LINEAR B IDEOGRAM B174 -100B7;AL # LINEAR B IDEOGRAM B176 TREE -100B8;AL # LINEAR B IDEOGRAM B177 -100B9;AL # LINEAR B IDEOGRAM B178 -100BA;AL # LINEAR B IDEOGRAM B179 -100BB;AL # LINEAR B IDEOGRAM B180 -100BC;AL # LINEAR B IDEOGRAM B181 -100BD;AL # LINEAR B IDEOGRAM B182 -100BE;AL # LINEAR B IDEOGRAM B183 -100BF;AL # LINEAR B IDEOGRAM B184 -100C0;AL # LINEAR B IDEOGRAM B185 -100C1;AL # LINEAR B IDEOGRAM B189 -100C2;AL # LINEAR B IDEOGRAM B190 -100C3;AL # LINEAR B IDEOGRAM B191 HELMET -100C4;AL # LINEAR B IDEOGRAM B220 FOOTSTOOL -100C5;AL # LINEAR B IDEOGRAM B225 BATHTUB -100C6;AL # LINEAR B IDEOGRAM B230 SPEAR -100C7;AL # LINEAR B IDEOGRAM B231 ARROW -100C8;AL # LINEAR B IDEOGRAM B232 -100C9;AL # LINEAR B IDEOGRAM B233 SWORD -100CA;AL # LINEAR B IDEOGRAM B234 -100CB;AL # LINEAR B IDEOGRAM B236 -100CC;AL # LINEAR B IDEOGRAM B240 WHEELED CHARIOT -100CD;AL # LINEAR B IDEOGRAM B241 CHARIOT -100CE;AL # LINEAR B IDEOGRAM B242 CHARIOT FRAME -100CF;AL # LINEAR B IDEOGRAM B243 WHEEL -100D0;AL # LINEAR B IDEOGRAM B245 -100D1;AL # LINEAR B IDEOGRAM B246 -100D2;AL # LINEAR B MONOGRAM B247 DIPTE -100D3;AL # LINEAR B IDEOGRAM B248 -100D4;AL # LINEAR B IDEOGRAM B249 -100D5;AL # LINEAR B IDEOGRAM B251 -100D6;AL # LINEAR B IDEOGRAM B252 -100D7;AL # LINEAR B IDEOGRAM B253 -100D8;AL # LINEAR B IDEOGRAM B254 DART -100D9;AL # LINEAR B IDEOGRAM B255 -100DA;AL # LINEAR B IDEOGRAM B256 -100DB;AL # LINEAR B IDEOGRAM B257 -100DC;AL # LINEAR B IDEOGRAM B258 -100DD;AL # LINEAR B IDEOGRAM B259 -100DE;AL # LINEAR B IDEOGRAM VESSEL B155 -100DF;AL # LINEAR B IDEOGRAM VESSEL B200 -100E0;AL # LINEAR B IDEOGRAM VESSEL B201 -100E1;AL # LINEAR B IDEOGRAM VESSEL B202 -100E2;AL # LINEAR B IDEOGRAM VESSEL B203 -100E3;AL # LINEAR B IDEOGRAM VESSEL B204 -100E4;AL # LINEAR B IDEOGRAM VESSEL B205 -100E5;AL # LINEAR B IDEOGRAM VESSEL B206 -100E6;AL # LINEAR B IDEOGRAM VESSEL B207 -100E7;AL # LINEAR B IDEOGRAM VESSEL B208 -100E8;AL # LINEAR B IDEOGRAM VESSEL B209 -100E9;AL # LINEAR B IDEOGRAM VESSEL B210 -100EA;AL # LINEAR B IDEOGRAM VESSEL B211 -100EB;AL # LINEAR B IDEOGRAM VESSEL B212 -100EC;AL # LINEAR B IDEOGRAM VESSEL B213 -100ED;AL # LINEAR B IDEOGRAM VESSEL B214 -100EE;AL # LINEAR B IDEOGRAM VESSEL B215 -100EF;AL # LINEAR B IDEOGRAM VESSEL B216 -100F0;AL # LINEAR B IDEOGRAM VESSEL B217 -100F1;AL # LINEAR B IDEOGRAM VESSEL B218 -100F2;AL # LINEAR B IDEOGRAM VESSEL B219 -100F3;AL # LINEAR B IDEOGRAM VESSEL B221 -100F4;AL # LINEAR B IDEOGRAM VESSEL B222 -100F5;AL # LINEAR B IDEOGRAM VESSEL B226 -100F6;AL # LINEAR B IDEOGRAM VESSEL B227 -100F7;AL # LINEAR B IDEOGRAM VESSEL B228 -100F8;AL # LINEAR B IDEOGRAM VESSEL B229 -100F9;AL # LINEAR B IDEOGRAM VESSEL B250 -100FA;AL # LINEAR B IDEOGRAM VESSEL B305 -10100;BA # AEGEAN WORD SEPARATOR LINE -10101;BA # AEGEAN WORD SEPARATOR DOT -10102;BA # AEGEAN CHECK MARK -10107;AL # AEGEAN NUMBER ONE -10108;AL # AEGEAN NUMBER TWO -10109;AL # AEGEAN NUMBER THREE -1010A;AL # AEGEAN NUMBER FOUR -1010B;AL # AEGEAN NUMBER FIVE -1010C;AL # AEGEAN NUMBER SIX -1010D;AL # AEGEAN NUMBER SEVEN -1010E;AL # AEGEAN NUMBER EIGHT -1010F;AL # AEGEAN NUMBER NINE -10110;AL # AEGEAN NUMBER TEN -10111;AL # AEGEAN NUMBER TWENTY -10112;AL # AEGEAN NUMBER THIRTY -10113;AL # AEGEAN NUMBER FORTY -10114;AL # AEGEAN NUMBER FIFTY -10115;AL # AEGEAN NUMBER SIXTY -10116;AL # AEGEAN NUMBER SEVENTY -10117;AL # AEGEAN NUMBER EIGHTY -10118;AL # AEGEAN NUMBER NINETY -10119;AL # AEGEAN NUMBER ONE HUNDRED -1011A;AL # AEGEAN NUMBER TWO HUNDRED -1011B;AL # AEGEAN NUMBER THREE HUNDRED -1011C;AL # AEGEAN NUMBER FOUR HUNDRED -1011D;AL # AEGEAN NUMBER FIVE HUNDRED -1011E;AL # AEGEAN NUMBER SIX HUNDRED -1011F;AL # AEGEAN NUMBER SEVEN HUNDRED -10120;AL # AEGEAN NUMBER EIGHT HUNDRED -10121;AL # AEGEAN NUMBER NINE HUNDRED -10122;AL # AEGEAN NUMBER ONE THOUSAND -10123;AL # AEGEAN NUMBER TWO THOUSAND -10124;AL # AEGEAN NUMBER THREE THOUSAND -10125;AL # AEGEAN NUMBER FOUR THOUSAND -10126;AL # AEGEAN NUMBER FIVE THOUSAND -10127;AL # AEGEAN NUMBER SIX THOUSAND -10128;AL # AEGEAN NUMBER SEVEN THOUSAND -10129;AL # AEGEAN NUMBER EIGHT THOUSAND -1012A;AL # AEGEAN NUMBER NINE THOUSAND -1012B;AL # AEGEAN NUMBER TEN THOUSAND -1012C;AL # AEGEAN NUMBER TWENTY THOUSAND -1012D;AL # AEGEAN NUMBER THIRTY THOUSAND -1012E;AL # AEGEAN NUMBER FORTY THOUSAND -1012F;AL # AEGEAN NUMBER FIFTY THOUSAND -10130;AL # AEGEAN NUMBER SIXTY THOUSAND -10131;AL # AEGEAN NUMBER SEVENTY THOUSAND -10132;AL # AEGEAN NUMBER EIGHTY THOUSAND -10133;AL # AEGEAN NUMBER NINETY THOUSAND -10137;AL # AEGEAN WEIGHT BASE UNIT -10138;AL # AEGEAN WEIGHT FIRST SUBUNIT -10139;AL # AEGEAN WEIGHT SECOND SUBUNIT -1013A;AL # AEGEAN WEIGHT THIRD SUBUNIT -1013B;AL # AEGEAN WEIGHT FOURTH SUBUNIT -1013C;AL # AEGEAN DRY MEASURE FIRST SUBUNIT -1013D;AL # AEGEAN LIQUID MEASURE FIRST SUBUNIT -1013E;AL # AEGEAN MEASURE SECOND SUBUNIT -1013F;AL # AEGEAN MEASURE THIRD SUBUNIT -10140;AL # GREEK ACROPHONIC ATTIC ONE QUARTER -10141;AL # GREEK ACROPHONIC ATTIC ONE HALF -10142;AL # GREEK ACROPHONIC ATTIC ONE DRACHMA -10143;AL # GREEK ACROPHONIC ATTIC FIVE -10144;AL # GREEK ACROPHONIC ATTIC FIFTY -10145;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED -10146;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND -10147;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND -10148;AL # GREEK ACROPHONIC ATTIC FIVE TALENTS -10149;AL # GREEK ACROPHONIC ATTIC TEN TALENTS -1014A;AL # GREEK ACROPHONIC ATTIC FIFTY TALENTS -1014B;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS -1014C;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS -1014D;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS -1014E;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS -1014F;AL # GREEK ACROPHONIC ATTIC FIVE STATERS -10150;AL # GREEK ACROPHONIC ATTIC TEN STATERS -10151;AL # GREEK ACROPHONIC ATTIC FIFTY STATERS -10152;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS -10153;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS -10154;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS -10155;AL # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS -10156;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS -10157;AL # GREEK ACROPHONIC ATTIC TEN MNAS -10158;AL # GREEK ACROPHONIC HERAEUM ONE PLETHRON -10159;AL # GREEK ACROPHONIC THESPIAN ONE -1015A;AL # GREEK ACROPHONIC HERMIONIAN ONE -1015B;AL # GREEK ACROPHONIC EPIDAUREAN TWO -1015C;AL # GREEK ACROPHONIC THESPIAN TWO -1015D;AL # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS -1015E;AL # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS -1015F;AL # GREEK ACROPHONIC TROEZENIAN FIVE -10160;AL # GREEK ACROPHONIC TROEZENIAN TEN -10161;AL # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM -10162;AL # GREEK ACROPHONIC HERMIONIAN TEN -10163;AL # GREEK ACROPHONIC MESSENIAN TEN -10164;AL # GREEK ACROPHONIC THESPIAN TEN -10165;AL # GREEK ACROPHONIC THESPIAN THIRTY -10166;AL # GREEK ACROPHONIC TROEZENIAN FIFTY -10167;AL # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM -10168;AL # GREEK ACROPHONIC HERMIONIAN FIFTY -10169;AL # GREEK ACROPHONIC THESPIAN FIFTY -1016A;AL # GREEK ACROPHONIC THESPIAN ONE HUNDRED -1016B;AL # GREEK ACROPHONIC THESPIAN THREE HUNDRED -1016C;AL # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED -1016D;AL # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED -1016E;AL # GREEK ACROPHONIC THESPIAN FIVE HUNDRED -1016F;AL # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED -10170;AL # GREEK ACROPHONIC NAXIAN FIVE HUNDRED -10171;AL # GREEK ACROPHONIC THESPIAN ONE THOUSAND -10172;AL # GREEK ACROPHONIC THESPIAN FIVE THOUSAND -10173;AL # GREEK ACROPHONIC DELPHIC FIVE MNAS -10174;AL # GREEK ACROPHONIC STRATIAN FIFTY MNAS -10175;AL # GREEK ONE HALF SIGN -10176;AL # GREEK ONE HALF SIGN ALTERNATE FORM -10177;AL # GREEK TWO THIRDS SIGN -10178;AL # GREEK THREE QUARTERS SIGN -10179;AL # GREEK YEAR SIGN -1017A;AL # GREEK TALENT SIGN -1017B;AL # GREEK DRACHMA SIGN -1017C;AL # GREEK OBOL SIGN -1017D;AL # GREEK TWO OBOLS SIGN -1017E;AL # GREEK THREE OBOLS SIGN -1017F;AL # GREEK FOUR OBOLS SIGN -10180;AL # GREEK FIVE OBOLS SIGN -10181;AL # GREEK METRETES SIGN -10182;AL # GREEK KYATHOS BASE SIGN -10183;AL # GREEK LITRA SIGN -10184;AL # GREEK OUNKIA SIGN -10185;AL # GREEK XESTES SIGN -10186;AL # GREEK ARTABE SIGN -10187;AL # GREEK AROURA SIGN -10188;AL # GREEK GRAMMA SIGN -10189;AL # GREEK TRYBLION BASE SIGN -1018A;AL # GREEK ZERO SIGN -10300;AL # OLD ITALIC LETTER A -10301;AL # OLD ITALIC LETTER BE -10302;AL # OLD ITALIC LETTER KE -10303;AL # OLD ITALIC LETTER DE -10304;AL # OLD ITALIC LETTER E -10305;AL # OLD ITALIC LETTER VE -10306;AL # OLD ITALIC LETTER ZE -10307;AL # OLD ITALIC LETTER HE -10308;AL # OLD ITALIC LETTER THE -10309;AL # OLD ITALIC LETTER I -1030A;AL # OLD ITALIC LETTER KA -1030B;AL # OLD ITALIC LETTER EL -1030C;AL # OLD ITALIC LETTER EM -1030D;AL # OLD ITALIC LETTER EN -1030E;AL # OLD ITALIC LETTER ESH -1030F;AL # OLD ITALIC LETTER O -10310;AL # OLD ITALIC LETTER PE -10311;AL # OLD ITALIC LETTER SHE -10312;AL # OLD ITALIC LETTER KU -10313;AL # OLD ITALIC LETTER ER -10314;AL # OLD ITALIC LETTER ES -10315;AL # OLD ITALIC LETTER TE -10316;AL # OLD ITALIC LETTER U -10317;AL # OLD ITALIC LETTER EKS -10318;AL # OLD ITALIC LETTER PHE -10319;AL # OLD ITALIC LETTER KHE -1031A;AL # OLD ITALIC LETTER EF -1031B;AL # OLD ITALIC LETTER ERS -1031C;AL # OLD ITALIC LETTER CHE -1031D;AL # OLD ITALIC LETTER II -1031E;AL # OLD ITALIC LETTER UU -10320;AL # OLD ITALIC NUMERAL ONE -10321;AL # OLD ITALIC NUMERAL FIVE -10322;AL # OLD ITALIC NUMERAL TEN -10323;AL # OLD ITALIC NUMERAL FIFTY -10330;AL # GOTHIC LETTER AHSA -10331;AL # GOTHIC LETTER BAIRKAN -10332;AL # GOTHIC LETTER GIBA -10333;AL # GOTHIC LETTER DAGS -10334;AL # GOTHIC LETTER AIHVUS -10335;AL # GOTHIC LETTER QAIRTHRA -10336;AL # GOTHIC LETTER IUJA -10337;AL # GOTHIC LETTER HAGL -10338;AL # GOTHIC LETTER THIUTH -10339;AL # GOTHIC LETTER EIS -1033A;AL # GOTHIC LETTER KUSMA -1033B;AL # GOTHIC LETTER LAGUS -1033C;AL # GOTHIC LETTER MANNA -1033D;AL # GOTHIC LETTER NAUTHS -1033E;AL # GOTHIC LETTER JER -1033F;AL # GOTHIC LETTER URUS -10340;AL # GOTHIC LETTER PAIRTHRA -10341;AL # GOTHIC LETTER NINETY -10342;AL # GOTHIC LETTER RAIDA -10343;AL # GOTHIC LETTER SAUIL -10344;AL # GOTHIC LETTER TEIWS -10345;AL # GOTHIC LETTER WINJA -10346;AL # GOTHIC LETTER FAIHU -10347;AL # GOTHIC LETTER IGGWS -10348;AL # GOTHIC LETTER HWAIR -10349;AL # GOTHIC LETTER OTHAL -1034A;AL # GOTHIC LETTER NINE HUNDRED -10380;AL # UGARITIC LETTER ALPA -10381;AL # UGARITIC LETTER BETA -10382;AL # UGARITIC LETTER GAMLA -10383;AL # UGARITIC LETTER KHA -10384;AL # UGARITIC LETTER DELTA -10385;AL # UGARITIC LETTER HO -10386;AL # UGARITIC LETTER WO -10387;AL # UGARITIC LETTER ZETA -10388;AL # UGARITIC LETTER HOTA -10389;AL # UGARITIC LETTER TET -1038A;AL # UGARITIC LETTER YOD -1038B;AL # UGARITIC LETTER KAF -1038C;AL # UGARITIC LETTER SHIN -1038D;AL # UGARITIC LETTER LAMDA -1038E;AL # UGARITIC LETTER MEM -1038F;AL # UGARITIC LETTER DHAL -10390;AL # UGARITIC LETTER NUN -10391;AL # UGARITIC LETTER ZU -10392;AL # UGARITIC LETTER SAMKA -10393;AL # UGARITIC LETTER AIN -10394;AL # UGARITIC LETTER PU -10395;AL # UGARITIC LETTER SADE -10396;AL # UGARITIC LETTER QOPA -10397;AL # UGARITIC LETTER RASHA -10398;AL # UGARITIC LETTER THANNA -10399;AL # UGARITIC LETTER GHAIN -1039A;AL # UGARITIC LETTER TO -1039B;AL # UGARITIC LETTER I -1039C;AL # UGARITIC LETTER U -1039D;AL # UGARITIC LETTER SSU -1039F;BA # UGARITIC WORD DIVIDER -103A0;AL # OLD PERSIAN SIGN A -103A1;AL # OLD PERSIAN SIGN I -103A2;AL # OLD PERSIAN SIGN U -103A3;AL # OLD PERSIAN SIGN KA -103A4;AL # OLD PERSIAN SIGN KU -103A5;AL # OLD PERSIAN SIGN GA -103A6;AL # OLD PERSIAN SIGN GU -103A7;AL # OLD PERSIAN SIGN XA -103A8;AL # OLD PERSIAN SIGN CA -103A9;AL # OLD PERSIAN SIGN JA -103AA;AL # OLD PERSIAN SIGN JI -103AB;AL # OLD PERSIAN SIGN TA -103AC;AL # OLD PERSIAN SIGN TU -103AD;AL # OLD PERSIAN SIGN DA -103AE;AL # OLD PERSIAN SIGN DI -103AF;AL # OLD PERSIAN SIGN DU -103B0;AL # OLD PERSIAN SIGN THA -103B1;AL # OLD PERSIAN SIGN PA -103B2;AL # OLD PERSIAN SIGN BA -103B3;AL # OLD PERSIAN SIGN FA -103B4;AL # OLD PERSIAN SIGN NA -103B5;AL # OLD PERSIAN SIGN NU -103B6;AL # OLD PERSIAN SIGN MA -103B7;AL # OLD PERSIAN SIGN MI -103B8;AL # OLD PERSIAN SIGN MU -103B9;AL # OLD PERSIAN SIGN YA -103BA;AL # OLD PERSIAN SIGN VA -103BB;AL # OLD PERSIAN SIGN VI -103BC;AL # OLD PERSIAN SIGN RA -103BD;AL # OLD PERSIAN SIGN RU -103BE;AL # OLD PERSIAN SIGN LA -103BF;AL # OLD PERSIAN SIGN SA -103C0;AL # OLD PERSIAN SIGN ZA -103C1;AL # OLD PERSIAN SIGN SHA -103C2;AL # OLD PERSIAN SIGN SSA -103C3;AL # OLD PERSIAN SIGN HA -103C8;AL # OLD PERSIAN SIGN AURAMAZDAA -103C9;AL # OLD PERSIAN SIGN AURAMAZDAA-2 -103CA;AL # OLD PERSIAN SIGN AURAMAZDAAHA -103CB;AL # OLD PERSIAN SIGN XSHAAYATHIYA -103CC;AL # OLD PERSIAN SIGN DAHYAAUSH -103CD;AL # OLD PERSIAN SIGN DAHYAAUSH-2 -103CE;AL # OLD PERSIAN SIGN BAGA -103CF;AL # OLD PERSIAN SIGN BUUMISH -103D0;BA # OLD PERSIAN WORD DIVIDER -103D1;AL # OLD PERSIAN NUMBER ONE -103D2;AL # OLD PERSIAN NUMBER TWO -103D3;AL # OLD PERSIAN NUMBER TEN -103D4;AL # OLD PERSIAN NUMBER TWENTY -103D5;AL # OLD PERSIAN NUMBER HUNDRED -10400;AL # DESERET CAPITAL LETTER LONG I -10401;AL # DESERET CAPITAL LETTER LONG E -10402;AL # DESERET CAPITAL LETTER LONG A -10403;AL # DESERET CAPITAL LETTER LONG AH -10404;AL # DESERET CAPITAL LETTER LONG O -10405;AL # DESERET CAPITAL LETTER LONG OO -10406;AL # DESERET CAPITAL LETTER SHORT I -10407;AL # DESERET CAPITAL LETTER SHORT E -10408;AL # DESERET CAPITAL LETTER SHORT A -10409;AL # DESERET CAPITAL LETTER SHORT AH -1040A;AL # DESERET CAPITAL LETTER SHORT O -1040B;AL # DESERET CAPITAL LETTER SHORT OO -1040C;AL # DESERET CAPITAL LETTER AY -1040D;AL # DESERET CAPITAL LETTER OW -1040E;AL # DESERET CAPITAL LETTER WU -1040F;AL # DESERET CAPITAL LETTER YEE -10410;AL # DESERET CAPITAL LETTER H -10411;AL # DESERET CAPITAL LETTER PEE -10412;AL # DESERET CAPITAL LETTER BEE -10413;AL # DESERET CAPITAL LETTER TEE -10414;AL # DESERET CAPITAL LETTER DEE -10415;AL # DESERET CAPITAL LETTER CHEE -10416;AL # DESERET CAPITAL LETTER JEE -10417;AL # DESERET CAPITAL LETTER KAY -10418;AL # DESERET CAPITAL LETTER GAY -10419;AL # DESERET CAPITAL LETTER EF -1041A;AL # DESERET CAPITAL LETTER VEE -1041B;AL # DESERET CAPITAL LETTER ETH -1041C;AL # DESERET CAPITAL LETTER THEE -1041D;AL # DESERET CAPITAL LETTER ES -1041E;AL # DESERET CAPITAL LETTER ZEE -1041F;AL # DESERET CAPITAL LETTER ESH -10420;AL # DESERET CAPITAL LETTER ZHEE -10421;AL # DESERET CAPITAL LETTER ER -10422;AL # DESERET CAPITAL LETTER EL -10423;AL # DESERET CAPITAL LETTER EM -10424;AL # DESERET CAPITAL LETTER EN -10425;AL # DESERET CAPITAL LETTER ENG -10426;AL # DESERET CAPITAL LETTER OI -10427;AL # DESERET CAPITAL LETTER EW -10428;AL # DESERET SMALL LETTER LONG I -10429;AL # DESERET SMALL LETTER LONG E -1042A;AL # DESERET SMALL LETTER LONG A -1042B;AL # DESERET SMALL LETTER LONG AH -1042C;AL # DESERET SMALL LETTER LONG O -1042D;AL # DESERET SMALL LETTER LONG OO -1042E;AL # DESERET SMALL LETTER SHORT I -1042F;AL # DESERET SMALL LETTER SHORT E -10430;AL # DESERET SMALL LETTER SHORT A -10431;AL # DESERET SMALL LETTER SHORT AH -10432;AL # DESERET SMALL LETTER SHORT O -10433;AL # DESERET SMALL LETTER SHORT OO -10434;AL # DESERET SMALL LETTER AY -10435;AL # DESERET SMALL LETTER OW -10436;AL # DESERET SMALL LETTER WU -10437;AL # DESERET SMALL LETTER YEE -10438;AL # DESERET SMALL LETTER H -10439;AL # DESERET SMALL LETTER PEE -1043A;AL # DESERET SMALL LETTER BEE -1043B;AL # DESERET SMALL LETTER TEE -1043C;AL # DESERET SMALL LETTER DEE -1043D;AL # DESERET SMALL LETTER CHEE -1043E;AL # DESERET SMALL LETTER JEE -1043F;AL # DESERET SMALL LETTER KAY -10440;AL # DESERET SMALL LETTER GAY -10441;AL # DESERET SMALL LETTER EF -10442;AL # DESERET SMALL LETTER VEE -10443;AL # DESERET SMALL LETTER ETH -10444;AL # DESERET SMALL LETTER THEE -10445;AL # DESERET SMALL LETTER ES -10446;AL # DESERET SMALL LETTER ZEE -10447;AL # DESERET SMALL LETTER ESH -10448;AL # DESERET SMALL LETTER ZHEE -10449;AL # DESERET SMALL LETTER ER -1044A;AL # DESERET SMALL LETTER EL -1044B;AL # DESERET SMALL LETTER EM -1044C;AL # DESERET SMALL LETTER EN -1044D;AL # DESERET SMALL LETTER ENG -1044E;AL # DESERET SMALL LETTER OI -1044F;AL # DESERET SMALL LETTER EW -10450;AL # SHAVIAN LETTER PEEP -10451;AL # SHAVIAN LETTER TOT -10452;AL # SHAVIAN LETTER KICK -10453;AL # SHAVIAN LETTER FEE -10454;AL # SHAVIAN LETTER THIGH -10455;AL # SHAVIAN LETTER SO -10456;AL # SHAVIAN LETTER SURE -10457;AL # SHAVIAN LETTER CHURCH -10458;AL # SHAVIAN LETTER YEA -10459;AL # SHAVIAN LETTER HUNG -1045A;AL # SHAVIAN LETTER BIB -1045B;AL # SHAVIAN LETTER DEAD -1045C;AL # SHAVIAN LETTER GAG -1045D;AL # SHAVIAN LETTER VOW -1045E;AL # SHAVIAN LETTER THEY -1045F;AL # SHAVIAN LETTER ZOO -10460;AL # SHAVIAN LETTER MEASURE -10461;AL # SHAVIAN LETTER JUDGE -10462;AL # SHAVIAN LETTER WOE -10463;AL # SHAVIAN LETTER HA-HA -10464;AL # SHAVIAN LETTER LOLL -10465;AL # SHAVIAN LETTER MIME -10466;AL # SHAVIAN LETTER IF -10467;AL # SHAVIAN LETTER EGG -10468;AL # SHAVIAN LETTER ASH -10469;AL # SHAVIAN LETTER ADO -1046A;AL # SHAVIAN LETTER ON -1046B;AL # SHAVIAN LETTER WOOL -1046C;AL # SHAVIAN LETTER OUT -1046D;AL # SHAVIAN LETTER AH -1046E;AL # SHAVIAN LETTER ROAR -1046F;AL # SHAVIAN LETTER NUN -10470;AL # SHAVIAN LETTER EAT -10471;AL # SHAVIAN LETTER AGE -10472;AL # SHAVIAN LETTER ICE -10473;AL # SHAVIAN LETTER UP -10474;AL # SHAVIAN LETTER OAK -10475;AL # SHAVIAN LETTER OOZE -10476;AL # SHAVIAN LETTER OIL -10477;AL # SHAVIAN LETTER AWE -10478;AL # SHAVIAN LETTER ARE -10479;AL # SHAVIAN LETTER OR -1047A;AL # SHAVIAN LETTER AIR -1047B;AL # SHAVIAN LETTER ERR -1047C;AL # SHAVIAN LETTER ARRAY -1047D;AL # SHAVIAN LETTER EAR -1047E;AL # SHAVIAN LETTER IAN -1047F;AL # SHAVIAN LETTER YEW -10480;AL # OSMANYA LETTER ALEF -10481;AL # OSMANYA LETTER BA -10482;AL # OSMANYA LETTER TA -10483;AL # OSMANYA LETTER JA -10484;AL # OSMANYA LETTER XA -10485;AL # OSMANYA LETTER KHA -10486;AL # OSMANYA LETTER DEEL -10487;AL # OSMANYA LETTER RA -10488;AL # OSMANYA LETTER SA -10489;AL # OSMANYA LETTER SHIIN -1048A;AL # OSMANYA LETTER DHA -1048B;AL # OSMANYA LETTER CAYN -1048C;AL # OSMANYA LETTER GA -1048D;AL # OSMANYA LETTER FA -1048E;AL # OSMANYA LETTER QAAF -1048F;AL # OSMANYA LETTER KAAF -10490;AL # OSMANYA LETTER LAAN -10491;AL # OSMANYA LETTER MIIN -10492;AL # OSMANYA LETTER NUUN -10493;AL # OSMANYA LETTER WAW -10494;AL # OSMANYA LETTER HA -10495;AL # OSMANYA LETTER YA -10496;AL # OSMANYA LETTER A -10497;AL # OSMANYA LETTER E -10498;AL # OSMANYA LETTER I -10499;AL # OSMANYA LETTER O -1049A;AL # OSMANYA LETTER U -1049B;AL # OSMANYA LETTER AA -1049C;AL # OSMANYA LETTER EE -1049D;AL # OSMANYA LETTER OO -104A0;NU # OSMANYA DIGIT ZERO -104A1;NU # OSMANYA DIGIT ONE -104A2;NU # OSMANYA DIGIT TWO -104A3;NU # OSMANYA DIGIT THREE -104A4;NU # OSMANYA DIGIT FOUR -104A5;NU # OSMANYA DIGIT FIVE -104A6;NU # OSMANYA DIGIT SIX -104A7;NU # OSMANYA DIGIT SEVEN -104A8;NU # OSMANYA DIGIT EIGHT -104A9;NU # OSMANYA DIGIT NINE -10800;AL # CYPRIOT SYLLABLE A -10801;AL # CYPRIOT SYLLABLE E -10802;AL # CYPRIOT SYLLABLE I -10803;AL # CYPRIOT SYLLABLE O -10804;AL # CYPRIOT SYLLABLE U -10805;AL # CYPRIOT SYLLABLE JA -10808;AL # CYPRIOT SYLLABLE JO -1080A;AL # CYPRIOT SYLLABLE KA -1080B;AL # CYPRIOT SYLLABLE KE -1080C;AL # CYPRIOT SYLLABLE KI -1080D;AL # CYPRIOT SYLLABLE KO -1080E;AL # CYPRIOT SYLLABLE KU -1080F;AL # CYPRIOT SYLLABLE LA -10810;AL # CYPRIOT SYLLABLE LE -10811;AL # CYPRIOT SYLLABLE LI -10812;AL # CYPRIOT SYLLABLE LO -10813;AL # CYPRIOT SYLLABLE LU -10814;AL # CYPRIOT SYLLABLE MA -10815;AL # CYPRIOT SYLLABLE ME -10816;AL # CYPRIOT SYLLABLE MI -10817;AL # CYPRIOT SYLLABLE MO -10818;AL # CYPRIOT SYLLABLE MU -10819;AL # CYPRIOT SYLLABLE NA -1081A;AL # CYPRIOT SYLLABLE NE -1081B;AL # CYPRIOT SYLLABLE NI -1081C;AL # CYPRIOT SYLLABLE NO -1081D;AL # CYPRIOT SYLLABLE NU -1081E;AL # CYPRIOT SYLLABLE PA -1081F;AL # CYPRIOT SYLLABLE PE -10820;AL # CYPRIOT SYLLABLE PI -10821;AL # CYPRIOT SYLLABLE PO -10822;AL # CYPRIOT SYLLABLE PU -10823;AL # CYPRIOT SYLLABLE RA -10824;AL # CYPRIOT SYLLABLE RE -10825;AL # CYPRIOT SYLLABLE RI -10826;AL # CYPRIOT SYLLABLE RO -10827;AL # CYPRIOT SYLLABLE RU -10828;AL # CYPRIOT SYLLABLE SA -10829;AL # CYPRIOT SYLLABLE SE -1082A;AL # CYPRIOT SYLLABLE SI -1082B;AL # CYPRIOT SYLLABLE SO -1082C;AL # CYPRIOT SYLLABLE SU -1082D;AL # CYPRIOT SYLLABLE TA -1082E;AL # CYPRIOT SYLLABLE TE -1082F;AL # CYPRIOT SYLLABLE TI -10830;AL # CYPRIOT SYLLABLE TO -10831;AL # CYPRIOT SYLLABLE TU -10832;AL # CYPRIOT SYLLABLE WA -10833;AL # CYPRIOT SYLLABLE WE -10834;AL # CYPRIOT SYLLABLE WI -10835;AL # CYPRIOT SYLLABLE WO -10837;AL # CYPRIOT SYLLABLE XA -10838;AL # CYPRIOT SYLLABLE XE -1083C;AL # CYPRIOT SYLLABLE ZA -1083F;AL # CYPRIOT SYLLABLE ZO -10900;AL # PHOENICIAN LETTER ALF -10901;AL # PHOENICIAN LETTER BET -10902;AL # PHOENICIAN LETTER GAML -10903;AL # PHOENICIAN LETTER DELT -10904;AL # PHOENICIAN LETTER HE -10905;AL # PHOENICIAN LETTER WAU -10906;AL # PHOENICIAN LETTER ZAI -10907;AL # PHOENICIAN LETTER HET -10908;AL # PHOENICIAN LETTER TET -10909;AL # PHOENICIAN LETTER YOD -1090A;AL # PHOENICIAN LETTER KAF -1090B;AL # PHOENICIAN LETTER LAMD -1090C;AL # PHOENICIAN LETTER MEM -1090D;AL # PHOENICIAN LETTER NUN -1090E;AL # PHOENICIAN LETTER SEMK -1090F;AL # PHOENICIAN LETTER AIN -10910;AL # PHOENICIAN LETTER PE -10911;AL # PHOENICIAN LETTER SADE -10912;AL # PHOENICIAN LETTER QOF -10913;AL # PHOENICIAN LETTER ROSH -10914;AL # PHOENICIAN LETTER SHIN -10915;AL # PHOENICIAN LETTER TAU -10916;AL # PHOENICIAN NUMBER ONE -10917;AL # PHOENICIAN NUMBER TEN -10918;AL # PHOENICIAN NUMBER TWENTY -10919;AL # PHOENICIAN NUMBER ONE HUNDRED -1091F;BA # PHOENICIAN WORD SEPARATOR -10A00;AL # KHAROSHTHI LETTER A -10A01;CM # KHAROSHTHI VOWEL SIGN I -10A02;CM # KHAROSHTHI VOWEL SIGN U -10A03;CM # KHAROSHTHI VOWEL SIGN VOCALIC R -10A05;CM # KHAROSHTHI VOWEL SIGN E -10A06;CM # KHAROSHTHI VOWEL SIGN O -10A0C;CM # KHAROSHTHI VOWEL LENGTH MARK -10A0D;CM # KHAROSHTHI SIGN DOUBLE RING BELOW -10A0E;CM # KHAROSHTHI SIGN ANUSVARA -10A0F;CM # KHAROSHTHI SIGN VISARGA -10A10;AL # KHAROSHTHI LETTER KA -10A11;AL # KHAROSHTHI LETTER KHA -10A12;AL # KHAROSHTHI LETTER GA -10A13;AL # KHAROSHTHI LETTER GHA -10A15;AL # KHAROSHTHI LETTER CA -10A16;AL # KHAROSHTHI LETTER CHA -10A17;AL # KHAROSHTHI LETTER JA -10A19;AL # KHAROSHTHI LETTER NYA -10A1A;AL # KHAROSHTHI LETTER TTA -10A1B;AL # KHAROSHTHI LETTER TTHA -10A1C;AL # KHAROSHTHI LETTER DDA -10A1D;AL # KHAROSHTHI LETTER DDHA -10A1E;AL # KHAROSHTHI LETTER NNA -10A1F;AL # KHAROSHTHI LETTER TA -10A20;AL # KHAROSHTHI LETTER THA -10A21;AL # KHAROSHTHI LETTER DA -10A22;AL # KHAROSHTHI LETTER DHA -10A23;AL # KHAROSHTHI LETTER NA -10A24;AL # KHAROSHTHI LETTER PA -10A25;AL # KHAROSHTHI LETTER PHA -10A26;AL # KHAROSHTHI LETTER BA -10A27;AL # KHAROSHTHI LETTER BHA -10A28;AL # KHAROSHTHI LETTER MA -10A29;AL # KHAROSHTHI LETTER YA -10A2A;AL # KHAROSHTHI LETTER RA -10A2B;AL # KHAROSHTHI LETTER LA -10A2C;AL # KHAROSHTHI LETTER VA -10A2D;AL # KHAROSHTHI LETTER SHA -10A2E;AL # KHAROSHTHI LETTER SSA -10A2F;AL # KHAROSHTHI LETTER SA -10A30;AL # KHAROSHTHI LETTER ZA -10A31;AL # KHAROSHTHI LETTER HA -10A32;AL # KHAROSHTHI LETTER KKA -10A33;AL # KHAROSHTHI LETTER TTTHA -10A38;CM # KHAROSHTHI SIGN BAR ABOVE -10A39;CM # KHAROSHTHI SIGN CAUDA -10A3A;CM # KHAROSHTHI SIGN DOT BELOW -10A3F;CM # KHAROSHTHI VIRAMA -10A40;AL # KHAROSHTHI DIGIT ONE -10A41;AL # KHAROSHTHI DIGIT TWO -10A42;AL # KHAROSHTHI DIGIT THREE -10A43;AL # KHAROSHTHI DIGIT FOUR -10A44;AL # KHAROSHTHI NUMBER TEN -10A45;AL # KHAROSHTHI NUMBER TWENTY -10A46;AL # KHAROSHTHI NUMBER ONE HUNDRED -10A47;AL # KHAROSHTHI NUMBER ONE THOUSAND -10A50;BA # KHAROSHTHI PUNCTUATION DOT -10A51;BA # KHAROSHTHI PUNCTUATION SMALL CIRCLE -10A52;BA # KHAROSHTHI PUNCTUATION CIRCLE -10A53;BA # KHAROSHTHI PUNCTUATION CRESCENT BAR -10A54;BA # KHAROSHTHI PUNCTUATION MANGALAM -10A55;BA # KHAROSHTHI PUNCTUATION LOTUS -10A56;BA # KHAROSHTHI PUNCTUATION DANDA -10A57;BA # KHAROSHTHI PUNCTUATION DOUBLE DANDA -10A58;AL # KHAROSHTHI PUNCTUATION LINES -12000;AL # CUNEIFORM SIGN A -12001;AL # CUNEIFORM SIGN A TIMES A -12002;AL # CUNEIFORM SIGN A TIMES BAD -12003;AL # CUNEIFORM SIGN A TIMES GAN2 TENU -12004;AL # CUNEIFORM SIGN A TIMES HA -12005;AL # CUNEIFORM SIGN A TIMES IGI -12006;AL # CUNEIFORM SIGN A TIMES LAGAR GUNU -12007;AL # CUNEIFORM SIGN A TIMES MUSH -12008;AL # CUNEIFORM SIGN A TIMES SAG -12009;AL # CUNEIFORM SIGN A2 -1200A;AL # CUNEIFORM SIGN AB -1200B;AL # CUNEIFORM SIGN AB TIMES ASH2 -1200C;AL # CUNEIFORM SIGN AB TIMES DUN3 GUNU -1200D;AL # CUNEIFORM SIGN AB TIMES GAL -1200E;AL # CUNEIFORM SIGN AB TIMES GAN2 TENU -1200F;AL # CUNEIFORM SIGN AB TIMES HA -12010;AL # CUNEIFORM SIGN AB TIMES IGI GUNU -12011;AL # CUNEIFORM SIGN AB TIMES IMIN -12012;AL # CUNEIFORM SIGN AB TIMES LAGAB -12013;AL # CUNEIFORM SIGN AB TIMES SHESH -12014;AL # CUNEIFORM SIGN AB TIMES U PLUS U PLUS U -12015;AL # CUNEIFORM SIGN AB GUNU -12016;AL # CUNEIFORM SIGN AB2 -12017;AL # CUNEIFORM SIGN AB2 TIMES BALAG -12018;AL # CUNEIFORM SIGN AB2 TIMES GAN2 TENU -12019;AL # CUNEIFORM SIGN AB2 TIMES ME PLUS EN -1201A;AL # CUNEIFORM SIGN AB2 TIMES SHA3 -1201B;AL # CUNEIFORM SIGN AB2 TIMES TAK4 -1201C;AL # CUNEIFORM SIGN AD -1201D;AL # CUNEIFORM SIGN AK -1201E;AL # CUNEIFORM SIGN AK TIMES ERIN2 -1201F;AL # CUNEIFORM SIGN AK TIMES SHITA PLUS GISH -12020;AL # CUNEIFORM SIGN AL -12021;AL # CUNEIFORM SIGN AL TIMES AL -12022;AL # CUNEIFORM SIGN AL TIMES DIM2 -12023;AL # CUNEIFORM SIGN AL TIMES GISH -12024;AL # CUNEIFORM SIGN AL TIMES HA -12025;AL # CUNEIFORM SIGN AL TIMES KAD3 -12026;AL # CUNEIFORM SIGN AL TIMES KI -12027;AL # CUNEIFORM SIGN AL TIMES SHE -12028;AL # CUNEIFORM SIGN AL TIMES USH -12029;AL # CUNEIFORM SIGN ALAN -1202A;AL # CUNEIFORM SIGN ALEPH -1202B;AL # CUNEIFORM SIGN AMAR -1202C;AL # CUNEIFORM SIGN AMAR TIMES SHE -1202D;AL # CUNEIFORM SIGN AN -1202E;AL # CUNEIFORM SIGN AN OVER AN -1202F;AL # CUNEIFORM SIGN AN THREE TIMES -12030;AL # CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA -12031;AL # CUNEIFORM SIGN AN PLUS NAGA SQUARED -12032;AL # CUNEIFORM SIGN ANSHE -12033;AL # CUNEIFORM SIGN APIN -12034;AL # CUNEIFORM SIGN ARAD -12035;AL # CUNEIFORM SIGN ARAD TIMES KUR -12036;AL # CUNEIFORM SIGN ARKAB -12037;AL # CUNEIFORM SIGN ASAL2 -12038;AL # CUNEIFORM SIGN ASH -12039;AL # CUNEIFORM SIGN ASH ZIDA TENU -1203A;AL # CUNEIFORM SIGN ASH KABA TENU -1203B;AL # CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP -1203C;AL # CUNEIFORM SIGN ASH OVER ASH OVER ASH -1203D;AL # CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH -1203E;AL # CUNEIFORM SIGN ASH2 -1203F;AL # CUNEIFORM SIGN ASHGAB -12040;AL # CUNEIFORM SIGN BA -12041;AL # CUNEIFORM SIGN BAD -12042;AL # CUNEIFORM SIGN BAG3 -12043;AL # CUNEIFORM SIGN BAHAR2 -12044;AL # CUNEIFORM SIGN BAL -12045;AL # CUNEIFORM SIGN BAL OVER BAL -12046;AL # CUNEIFORM SIGN BALAG -12047;AL # CUNEIFORM SIGN BAR -12048;AL # CUNEIFORM SIGN BARA2 -12049;AL # CUNEIFORM SIGN BI -1204A;AL # CUNEIFORM SIGN BI TIMES A -1204B;AL # CUNEIFORM SIGN BI TIMES GAR -1204C;AL # CUNEIFORM SIGN BI TIMES IGI GUNU -1204D;AL # CUNEIFORM SIGN BU -1204E;AL # CUNEIFORM SIGN BU OVER BU AB -1204F;AL # CUNEIFORM SIGN BU OVER BU UN -12050;AL # CUNEIFORM SIGN BU CROSSING BU -12051;AL # CUNEIFORM SIGN BULUG -12052;AL # CUNEIFORM SIGN BULUG OVER BULUG -12053;AL # CUNEIFORM SIGN BUR -12054;AL # CUNEIFORM SIGN BUR2 -12055;AL # CUNEIFORM SIGN DA -12056;AL # CUNEIFORM SIGN DAG -12057;AL # CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH -12058;AL # CUNEIFORM SIGN DAG KISIM5 TIMES AMAR -12059;AL # CUNEIFORM SIGN DAG KISIM5 TIMES BALAG -1205A;AL # CUNEIFORM SIGN DAG KISIM5 TIMES BI -1205B;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GA -1205C;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH -1205D;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GI -1205E;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GIR2 -1205F;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GUD -12060;AL # CUNEIFORM SIGN DAG KISIM5 TIMES HA -12061;AL # CUNEIFORM SIGN DAG KISIM5 TIMES IR -12062;AL # CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU -12063;AL # CUNEIFORM SIGN DAG KISIM5 TIMES KAK -12064;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LA -12065;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LU -12066;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2 -12067;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LUM -12068;AL # CUNEIFORM SIGN DAG KISIM5 TIMES NE -12069;AL # CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP -1206A;AL # CUNEIFORM SIGN DAG KISIM5 TIMES SI -1206B;AL # CUNEIFORM SIGN DAG KISIM5 TIMES TAK4 -1206C;AL # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2 -1206D;AL # CUNEIFORM SIGN DAG KISIM5 TIMES USH -1206E;AL # CUNEIFORM SIGN DAM -1206F;AL # CUNEIFORM SIGN DAR -12070;AL # CUNEIFORM SIGN DARA3 -12071;AL # CUNEIFORM SIGN DARA4 -12072;AL # CUNEIFORM SIGN DI -12073;AL # CUNEIFORM SIGN DIB -12074;AL # CUNEIFORM SIGN DIM -12075;AL # CUNEIFORM SIGN DIM TIMES SHE -12076;AL # CUNEIFORM SIGN DIM2 -12077;AL # CUNEIFORM SIGN DIN -12078;AL # CUNEIFORM SIGN DIN KASKAL U GUNU DISH -12079;AL # CUNEIFORM SIGN DISH -1207A;AL # CUNEIFORM SIGN DU -1207B;AL # CUNEIFORM SIGN DU OVER DU -1207C;AL # CUNEIFORM SIGN DU GUNU -1207D;AL # CUNEIFORM SIGN DU SHESHIG -1207E;AL # CUNEIFORM SIGN DUB -1207F;AL # CUNEIFORM SIGN DUB TIMES ESH2 -12080;AL # CUNEIFORM SIGN DUB2 -12081;AL # CUNEIFORM SIGN DUG -12082;AL # CUNEIFORM SIGN DUGUD -12083;AL # CUNEIFORM SIGN DUH -12084;AL # CUNEIFORM SIGN DUN -12085;AL # CUNEIFORM SIGN DUN3 -12086;AL # CUNEIFORM SIGN DUN3 GUNU -12087;AL # CUNEIFORM SIGN DUN3 GUNU GUNU -12088;AL # CUNEIFORM SIGN DUN4 -12089;AL # CUNEIFORM SIGN DUR2 -1208A;AL # CUNEIFORM SIGN E -1208B;AL # CUNEIFORM SIGN E TIMES PAP -1208C;AL # CUNEIFORM SIGN E OVER E NUN OVER NUN -1208D;AL # CUNEIFORM SIGN E2 -1208E;AL # CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA -1208F;AL # CUNEIFORM SIGN E2 TIMES GAR -12090;AL # CUNEIFORM SIGN E2 TIMES MI -12091;AL # CUNEIFORM SIGN E2 TIMES SAL -12092;AL # CUNEIFORM SIGN E2 TIMES SHE -12093;AL # CUNEIFORM SIGN E2 TIMES U -12094;AL # CUNEIFORM SIGN EDIN -12095;AL # CUNEIFORM SIGN EGIR -12096;AL # CUNEIFORM SIGN EL -12097;AL # CUNEIFORM SIGN EN -12098;AL # CUNEIFORM SIGN EN TIMES GAN2 -12099;AL # CUNEIFORM SIGN EN TIMES GAN2 TENU -1209A;AL # CUNEIFORM SIGN EN TIMES ME -1209B;AL # CUNEIFORM SIGN EN CROSSING EN -1209C;AL # CUNEIFORM SIGN EN OPPOSING EN -1209D;AL # CUNEIFORM SIGN EN SQUARED -1209E;AL # CUNEIFORM SIGN EREN -1209F;AL # CUNEIFORM SIGN ERIN2 -120A0;AL # CUNEIFORM SIGN ESH2 -120A1;AL # CUNEIFORM SIGN EZEN -120A2;AL # CUNEIFORM SIGN EZEN TIMES A -120A3;AL # CUNEIFORM SIGN EZEN TIMES A PLUS LAL -120A4;AL # CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL -120A5;AL # CUNEIFORM SIGN EZEN TIMES AN -120A6;AL # CUNEIFORM SIGN EZEN TIMES BAD -120A7;AL # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU -120A8;AL # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU -120A9;AL # CUNEIFORM SIGN EZEN TIMES HA -120AA;AL # CUNEIFORM SIGN EZEN TIMES HA GUNU -120AB;AL # CUNEIFORM SIGN EZEN TIMES IGI GUNU -120AC;AL # CUNEIFORM SIGN EZEN TIMES KASKAL -120AD;AL # CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED -120AE;AL # CUNEIFORM SIGN EZEN TIMES KU3 -120AF;AL # CUNEIFORM SIGN EZEN TIMES LA -120B0;AL # CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL -120B1;AL # CUNEIFORM SIGN EZEN TIMES LI -120B2;AL # CUNEIFORM SIGN EZEN TIMES LU -120B3;AL # CUNEIFORM SIGN EZEN TIMES U2 -120B4;AL # CUNEIFORM SIGN EZEN TIMES UD -120B5;AL # CUNEIFORM SIGN GA -120B6;AL # CUNEIFORM SIGN GA GUNU -120B7;AL # CUNEIFORM SIGN GA2 -120B8;AL # CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA -120B9;AL # CUNEIFORM SIGN GA2 TIMES A PLUS HA -120BA;AL # CUNEIFORM SIGN GA2 TIMES A PLUS IGI -120BB;AL # CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB -120BC;AL # CUNEIFORM SIGN GA2 TIMES AN -120BD;AL # CUNEIFORM SIGN GA2 TIMES ASH -120BE;AL # CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL -120BF;AL # CUNEIFORM SIGN GA2 TIMES BAD -120C0;AL # CUNEIFORM SIGN GA2 TIMES BAR PLUS RA -120C1;AL # CUNEIFORM SIGN GA2 TIMES BUR -120C2;AL # CUNEIFORM SIGN GA2 TIMES BUR PLUS RA -120C3;AL # CUNEIFORM SIGN GA2 TIMES DA -120C4;AL # CUNEIFORM SIGN GA2 TIMES DI -120C5;AL # CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE -120C6;AL # CUNEIFORM SIGN GA2 TIMES DUB -120C7;AL # CUNEIFORM SIGN GA2 TIMES EL -120C8;AL # CUNEIFORM SIGN GA2 TIMES EL PLUS LA -120C9;AL # CUNEIFORM SIGN GA2 TIMES EN -120CA;AL # CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU -120CB;AL # CUNEIFORM SIGN GA2 TIMES GAN2 TENU -120CC;AL # CUNEIFORM SIGN GA2 TIMES GAR -120CD;AL # CUNEIFORM SIGN GA2 TIMES GI -120CE;AL # CUNEIFORM SIGN GA2 TIMES GI4 -120CF;AL # CUNEIFORM SIGN GA2 TIMES GI4 PLUS A -120D0;AL # CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU -120D1;AL # CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2 -120D2;AL # CUNEIFORM SIGN GA2 TIMES HAL -120D3;AL # CUNEIFORM SIGN GA2 TIMES HAL PLUS LA -120D4;AL # CUNEIFORM SIGN GA2 TIMES HI PLUS LI -120D5;AL # CUNEIFORM SIGN GA2 TIMES HUB2 -120D6;AL # CUNEIFORM SIGN GA2 TIMES IGI GUNU -120D7;AL # CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH -120D8;AL # CUNEIFORM SIGN GA2 TIMES KAK -120D9;AL # CUNEIFORM SIGN GA2 TIMES KASKAL -120DA;AL # CUNEIFORM SIGN GA2 TIMES KID -120DB;AL # CUNEIFORM SIGN GA2 TIMES KID PLUS LAL -120DC;AL # CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN -120DD;AL # CUNEIFORM SIGN GA2 TIMES LA -120DE;AL # CUNEIFORM SIGN GA2 TIMES ME PLUS EN -120DF;AL # CUNEIFORM SIGN GA2 TIMES MI -120E0;AL # CUNEIFORM SIGN GA2 TIMES NUN -120E1;AL # CUNEIFORM SIGN GA2 TIMES NUN OVER NUN -120E2;AL # CUNEIFORM SIGN GA2 TIMES PA -120E3;AL # CUNEIFORM SIGN GA2 TIMES SAL -120E4;AL # CUNEIFORM SIGN GA2 TIMES SAR -120E5;AL # CUNEIFORM SIGN GA2 TIMES SHE -120E6;AL # CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR -120E7;AL # CUNEIFORM SIGN GA2 TIMES SHID -120E8;AL # CUNEIFORM SIGN GA2 TIMES SUM -120E9;AL # CUNEIFORM SIGN GA2 TIMES TAK4 -120EA;AL # CUNEIFORM SIGN GA2 TIMES U -120EB;AL # CUNEIFORM SIGN GA2 TIMES UD -120EC;AL # CUNEIFORM SIGN GA2 TIMES UD PLUS DU -120ED;AL # CUNEIFORM SIGN GA2 OVER GA2 -120EE;AL # CUNEIFORM SIGN GABA -120EF;AL # CUNEIFORM SIGN GABA CROSSING GABA -120F0;AL # CUNEIFORM SIGN GAD -120F1;AL # CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR -120F2;AL # CUNEIFORM SIGN GAL -120F3;AL # CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR -120F4;AL # CUNEIFORM SIGN GALAM -120F5;AL # CUNEIFORM SIGN GAM -120F6;AL # CUNEIFORM SIGN GAN -120F7;AL # CUNEIFORM SIGN GAN2 -120F8;AL # CUNEIFORM SIGN GAN2 TENU -120F9;AL # CUNEIFORM SIGN GAN2 OVER GAN2 -120FA;AL # CUNEIFORM SIGN GAN2 CROSSING GAN2 -120FB;AL # CUNEIFORM SIGN GAR -120FC;AL # CUNEIFORM SIGN GAR3 -120FD;AL # CUNEIFORM SIGN GASHAN -120FE;AL # CUNEIFORM SIGN GESHTIN -120FF;AL # CUNEIFORM SIGN GESHTIN TIMES KUR -12100;AL # CUNEIFORM SIGN GI -12101;AL # CUNEIFORM SIGN GI TIMES E -12102;AL # CUNEIFORM SIGN GI TIMES U -12103;AL # CUNEIFORM SIGN GI CROSSING GI -12104;AL # CUNEIFORM SIGN GI4 -12105;AL # CUNEIFORM SIGN GI4 OVER GI4 -12106;AL # CUNEIFORM SIGN GI4 CROSSING GI4 -12107;AL # CUNEIFORM SIGN GIDIM -12108;AL # CUNEIFORM SIGN GIR2 -12109;AL # CUNEIFORM SIGN GIR2 GUNU -1210A;AL # CUNEIFORM SIGN GIR3 -1210B;AL # CUNEIFORM SIGN GIR3 TIMES A PLUS IGI -1210C;AL # CUNEIFORM SIGN GIR3 TIMES GAN2 TENU -1210D;AL # CUNEIFORM SIGN GIR3 TIMES IGI -1210E;AL # CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI -1210F;AL # CUNEIFORM SIGN GIR3 TIMES PA -12110;AL # CUNEIFORM SIGN GISAL -12111;AL # CUNEIFORM SIGN GISH -12112;AL # CUNEIFORM SIGN GISH CROSSING GISH -12113;AL # CUNEIFORM SIGN GISH TIMES BAD -12114;AL # CUNEIFORM SIGN GISH TIMES TAK4 -12115;AL # CUNEIFORM SIGN GISH TENU -12116;AL # CUNEIFORM SIGN GU -12117;AL # CUNEIFORM SIGN GU CROSSING GU -12118;AL # CUNEIFORM SIGN GU2 -12119;AL # CUNEIFORM SIGN GU2 TIMES KAK -1211A;AL # CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU -1211B;AL # CUNEIFORM SIGN GU2 TIMES NUN -1211C;AL # CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2 -1211D;AL # CUNEIFORM SIGN GU2 GUNU -1211E;AL # CUNEIFORM SIGN GUD -1211F;AL # CUNEIFORM SIGN GUD TIMES A PLUS KUR -12120;AL # CUNEIFORM SIGN GUD TIMES KUR -12121;AL # CUNEIFORM SIGN GUD OVER GUD LUGAL -12122;AL # CUNEIFORM SIGN GUL -12123;AL # CUNEIFORM SIGN GUM -12124;AL # CUNEIFORM SIGN GUM TIMES SHE -12125;AL # CUNEIFORM SIGN GUR -12126;AL # CUNEIFORM SIGN GUR7 -12127;AL # CUNEIFORM SIGN GURUN -12128;AL # CUNEIFORM SIGN GURUSH -12129;AL # CUNEIFORM SIGN HA -1212A;AL # CUNEIFORM SIGN HA TENU -1212B;AL # CUNEIFORM SIGN HA GUNU -1212C;AL # CUNEIFORM SIGN HAL -1212D;AL # CUNEIFORM SIGN HI -1212E;AL # CUNEIFORM SIGN HI TIMES ASH -1212F;AL # CUNEIFORM SIGN HI TIMES ASH2 -12130;AL # CUNEIFORM SIGN HI TIMES BAD -12131;AL # CUNEIFORM SIGN HI TIMES DISH -12132;AL # CUNEIFORM SIGN HI TIMES GAD -12133;AL # CUNEIFORM SIGN HI TIMES KIN -12134;AL # CUNEIFORM SIGN HI TIMES NUN -12135;AL # CUNEIFORM SIGN HI TIMES SHE -12136;AL # CUNEIFORM SIGN HI TIMES U -12137;AL # CUNEIFORM SIGN HU -12138;AL # CUNEIFORM SIGN HUB2 -12139;AL # CUNEIFORM SIGN HUB2 TIMES AN -1213A;AL # CUNEIFORM SIGN HUB2 TIMES HAL -1213B;AL # CUNEIFORM SIGN HUB2 TIMES KASKAL -1213C;AL # CUNEIFORM SIGN HUB2 TIMES LISH -1213D;AL # CUNEIFORM SIGN HUB2 TIMES UD -1213E;AL # CUNEIFORM SIGN HUL2 -1213F;AL # CUNEIFORM SIGN I -12140;AL # CUNEIFORM SIGN I A -12141;AL # CUNEIFORM SIGN IB -12142;AL # CUNEIFORM SIGN IDIM -12143;AL # CUNEIFORM SIGN IDIM OVER IDIM BUR -12144;AL # CUNEIFORM SIGN IDIM OVER IDIM SQUARED -12145;AL # CUNEIFORM SIGN IG -12146;AL # CUNEIFORM SIGN IGI -12147;AL # CUNEIFORM SIGN IGI DIB -12148;AL # CUNEIFORM SIGN IGI RI -12149;AL # CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD -1214A;AL # CUNEIFORM SIGN IGI GUNU -1214B;AL # CUNEIFORM SIGN IL -1214C;AL # CUNEIFORM SIGN IL TIMES GAN2 TENU -1214D;AL # CUNEIFORM SIGN IL2 -1214E;AL # CUNEIFORM SIGN IM -1214F;AL # CUNEIFORM SIGN IM TIMES TAK4 -12150;AL # CUNEIFORM SIGN IM CROSSING IM -12151;AL # CUNEIFORM SIGN IM OPPOSING IM -12152;AL # CUNEIFORM SIGN IM SQUARED -12153;AL # CUNEIFORM SIGN IMIN -12154;AL # CUNEIFORM SIGN IN -12155;AL # CUNEIFORM SIGN IR -12156;AL # CUNEIFORM SIGN ISH -12157;AL # CUNEIFORM SIGN KA -12158;AL # CUNEIFORM SIGN KA TIMES A -12159;AL # CUNEIFORM SIGN KA TIMES AD -1215A;AL # CUNEIFORM SIGN KA TIMES AD PLUS KU3 -1215B;AL # CUNEIFORM SIGN KA TIMES ASH2 -1215C;AL # CUNEIFORM SIGN KA TIMES BAD -1215D;AL # CUNEIFORM SIGN KA TIMES BALAG -1215E;AL # CUNEIFORM SIGN KA TIMES BAR -1215F;AL # CUNEIFORM SIGN KA TIMES BI -12160;AL # CUNEIFORM SIGN KA TIMES ERIN2 -12161;AL # CUNEIFORM SIGN KA TIMES ESH2 -12162;AL # CUNEIFORM SIGN KA TIMES GA -12163;AL # CUNEIFORM SIGN KA TIMES GAL -12164;AL # CUNEIFORM SIGN KA TIMES GAN2 TENU -12165;AL # CUNEIFORM SIGN KA TIMES GAR -12166;AL # CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A -12167;AL # CUNEIFORM SIGN KA TIMES GI -12168;AL # CUNEIFORM SIGN KA TIMES GIR2 -12169;AL # CUNEIFORM SIGN KA TIMES GISH PLUS SAR -1216A;AL # CUNEIFORM SIGN KA TIMES GISH CROSSING GISH -1216B;AL # CUNEIFORM SIGN KA TIMES GU -1216C;AL # CUNEIFORM SIGN KA TIMES GUR7 -1216D;AL # CUNEIFORM SIGN KA TIMES IGI -1216E;AL # CUNEIFORM SIGN KA TIMES IM -1216F;AL # CUNEIFORM SIGN KA TIMES KAK -12170;AL # CUNEIFORM SIGN KA TIMES KI -12171;AL # CUNEIFORM SIGN KA TIMES KID -12172;AL # CUNEIFORM SIGN KA TIMES LI -12173;AL # CUNEIFORM SIGN KA TIMES LU -12174;AL # CUNEIFORM SIGN KA TIMES ME -12175;AL # CUNEIFORM SIGN KA TIMES ME PLUS DU -12176;AL # CUNEIFORM SIGN KA TIMES ME PLUS GI -12177;AL # CUNEIFORM SIGN KA TIMES ME PLUS TE -12178;AL # CUNEIFORM SIGN KA TIMES MI -12179;AL # CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ -1217A;AL # CUNEIFORM SIGN KA TIMES NE -1217B;AL # CUNEIFORM SIGN KA TIMES NUN -1217C;AL # CUNEIFORM SIGN KA TIMES PI -1217D;AL # CUNEIFORM SIGN KA TIMES RU -1217E;AL # CUNEIFORM SIGN KA TIMES SA -1217F;AL # CUNEIFORM SIGN KA TIMES SAR -12180;AL # CUNEIFORM SIGN KA TIMES SHA -12181;AL # CUNEIFORM SIGN KA TIMES SHE -12182;AL # CUNEIFORM SIGN KA TIMES SHID -12183;AL # CUNEIFORM SIGN KA TIMES SHU -12184;AL # CUNEIFORM SIGN KA TIMES SIG -12185;AL # CUNEIFORM SIGN KA TIMES SUHUR -12186;AL # CUNEIFORM SIGN KA TIMES TAR -12187;AL # CUNEIFORM SIGN KA TIMES U -12188;AL # CUNEIFORM SIGN KA TIMES U2 -12189;AL # CUNEIFORM SIGN KA TIMES UD -1218A;AL # CUNEIFORM SIGN KA TIMES UMUM TIMES PA -1218B;AL # CUNEIFORM SIGN KA TIMES USH -1218C;AL # CUNEIFORM SIGN KA TIMES ZI -1218D;AL # CUNEIFORM SIGN KA2 -1218E;AL # CUNEIFORM SIGN KA2 CROSSING KA2 -1218F;AL # CUNEIFORM SIGN KAB -12190;AL # CUNEIFORM SIGN KAD2 -12191;AL # CUNEIFORM SIGN KAD3 -12192;AL # CUNEIFORM SIGN KAD4 -12193;AL # CUNEIFORM SIGN KAD5 -12194;AL # CUNEIFORM SIGN KAD5 OVER KAD5 -12195;AL # CUNEIFORM SIGN KAK -12196;AL # CUNEIFORM SIGN KAK TIMES IGI GUNU -12197;AL # CUNEIFORM SIGN KAL -12198;AL # CUNEIFORM SIGN KAL TIMES BAD -12199;AL # CUNEIFORM SIGN KAL CROSSING KAL -1219A;AL # CUNEIFORM SIGN KAM2 -1219B;AL # CUNEIFORM SIGN KAM4 -1219C;AL # CUNEIFORM SIGN KASKAL -1219D;AL # CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U -1219E;AL # CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U -1219F;AL # CUNEIFORM SIGN KESH2 -121A0;AL # CUNEIFORM SIGN KI -121A1;AL # CUNEIFORM SIGN KI TIMES BAD -121A2;AL # CUNEIFORM SIGN KI TIMES U -121A3;AL # CUNEIFORM SIGN KI TIMES UD -121A4;AL # CUNEIFORM SIGN KID -121A5;AL # CUNEIFORM SIGN KIN -121A6;AL # CUNEIFORM SIGN KISAL -121A7;AL # CUNEIFORM SIGN KISH -121A8;AL # CUNEIFORM SIGN KISIM5 -121A9;AL # CUNEIFORM SIGN KISIM5 OVER KISIM5 -121AA;AL # CUNEIFORM SIGN KU -121AB;AL # CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2 -121AC;AL # CUNEIFORM SIGN KU3 -121AD;AL # CUNEIFORM SIGN KU4 -121AE;AL # CUNEIFORM SIGN KU4 VARIANT FORM -121AF;AL # CUNEIFORM SIGN KU7 -121B0;AL # CUNEIFORM SIGN KUL -121B1;AL # CUNEIFORM SIGN KUL GUNU -121B2;AL # CUNEIFORM SIGN KUN -121B3;AL # CUNEIFORM SIGN KUR -121B4;AL # CUNEIFORM SIGN KUR OPPOSING KUR -121B5;AL # CUNEIFORM SIGN KUSHU2 -121B6;AL # CUNEIFORM SIGN KWU318 -121B7;AL # CUNEIFORM SIGN LA -121B8;AL # CUNEIFORM SIGN LAGAB -121B9;AL # CUNEIFORM SIGN LAGAB TIMES A -121BA;AL # CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA -121BB;AL # CUNEIFORM SIGN LAGAB TIMES A PLUS GAR -121BC;AL # CUNEIFORM SIGN LAGAB TIMES A PLUS LAL -121BD;AL # CUNEIFORM SIGN LAGAB TIMES AL -121BE;AL # CUNEIFORM SIGN LAGAB TIMES AN -121BF;AL # CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU -121C0;AL # CUNEIFORM SIGN LAGAB TIMES BAD -121C1;AL # CUNEIFORM SIGN LAGAB TIMES BI -121C2;AL # CUNEIFORM SIGN LAGAB TIMES DAR -121C3;AL # CUNEIFORM SIGN LAGAB TIMES EN -121C4;AL # CUNEIFORM SIGN LAGAB TIMES GA -121C5;AL # CUNEIFORM SIGN LAGAB TIMES GAR -121C6;AL # CUNEIFORM SIGN LAGAB TIMES GUD -121C7;AL # CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD -121C8;AL # CUNEIFORM SIGN LAGAB TIMES HA -121C9;AL # CUNEIFORM SIGN LAGAB TIMES HAL -121CA;AL # CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN -121CB;AL # CUNEIFORM SIGN LAGAB TIMES IGI GUNU -121CC;AL # CUNEIFORM SIGN LAGAB TIMES IM -121CD;AL # CUNEIFORM SIGN LAGAB TIMES IM PLUS HA -121CE;AL # CUNEIFORM SIGN LAGAB TIMES IM PLUS LU -121CF;AL # CUNEIFORM SIGN LAGAB TIMES KI -121D0;AL # CUNEIFORM SIGN LAGAB TIMES KIN -121D1;AL # CUNEIFORM SIGN LAGAB TIMES KU3 -121D2;AL # CUNEIFORM SIGN LAGAB TIMES KUL -121D3;AL # CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A -121D4;AL # CUNEIFORM SIGN LAGAB TIMES LAGAB -121D5;AL # CUNEIFORM SIGN LAGAB TIMES LISH -121D6;AL # CUNEIFORM SIGN LAGAB TIMES LU -121D7;AL # CUNEIFORM SIGN LAGAB TIMES LUL -121D8;AL # CUNEIFORM SIGN LAGAB TIMES ME -121D9;AL # CUNEIFORM SIGN LAGAB TIMES ME PLUS EN -121DA;AL # CUNEIFORM SIGN LAGAB TIMES MUSH -121DB;AL # CUNEIFORM SIGN LAGAB TIMES NE -121DC;AL # CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM -121DD;AL # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2 -121DE;AL # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU -121DF;AL # CUNEIFORM SIGN LAGAB TIMES SHU2 -121E0;AL # CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2 -121E1;AL # CUNEIFORM SIGN LAGAB TIMES SUM -121E2;AL # CUNEIFORM SIGN LAGAB TIMES TAG -121E3;AL # CUNEIFORM SIGN LAGAB TIMES TAK4 -121E4;AL # CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA -121E5;AL # CUNEIFORM SIGN LAGAB TIMES U -121E6;AL # CUNEIFORM SIGN LAGAB TIMES U PLUS A -121E7;AL # CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U -121E8;AL # CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH -121E9;AL # CUNEIFORM SIGN LAGAB TIMES UD -121EA;AL # CUNEIFORM SIGN LAGAB TIMES USH -121EB;AL # CUNEIFORM SIGN LAGAB SQUARED -121EC;AL # CUNEIFORM SIGN LAGAR -121ED;AL # CUNEIFORM SIGN LAGAR TIMES SHE -121EE;AL # CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM -121EF;AL # CUNEIFORM SIGN LAGAR GUNU -121F0;AL # CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE -121F1;AL # CUNEIFORM SIGN LAHSHU -121F2;AL # CUNEIFORM SIGN LAL -121F3;AL # CUNEIFORM SIGN LAL TIMES LAL -121F4;AL # CUNEIFORM SIGN LAM -121F5;AL # CUNEIFORM SIGN LAM TIMES KUR -121F6;AL # CUNEIFORM SIGN LAM TIMES KUR PLUS RU -121F7;AL # CUNEIFORM SIGN LI -121F8;AL # CUNEIFORM SIGN LIL -121F9;AL # CUNEIFORM SIGN LIMMU2 -121FA;AL # CUNEIFORM SIGN LISH -121FB;AL # CUNEIFORM SIGN LU -121FC;AL # CUNEIFORM SIGN LU TIMES BAD -121FD;AL # CUNEIFORM SIGN LU2 -121FE;AL # CUNEIFORM SIGN LU2 TIMES AL -121FF;AL # CUNEIFORM SIGN LU2 TIMES BAD -12200;AL # CUNEIFORM SIGN LU2 TIMES ESH2 -12201;AL # CUNEIFORM SIGN LU2 TIMES ESH2 TENU -12202;AL # CUNEIFORM SIGN LU2 TIMES GAN2 TENU -12203;AL # CUNEIFORM SIGN LU2 TIMES HI TIMES BAD -12204;AL # CUNEIFORM SIGN LU2 TIMES IM -12205;AL # CUNEIFORM SIGN LU2 TIMES KAD2 -12206;AL # CUNEIFORM SIGN LU2 TIMES KAD3 -12207;AL # CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH -12208;AL # CUNEIFORM SIGN LU2 TIMES KI -12209;AL # CUNEIFORM SIGN LU2 TIMES LA PLUS ASH -1220A;AL # CUNEIFORM SIGN LU2 TIMES LAGAB -1220B;AL # CUNEIFORM SIGN LU2 TIMES ME PLUS EN -1220C;AL # CUNEIFORM SIGN LU2 TIMES NE -1220D;AL # CUNEIFORM SIGN LU2 TIMES NU -1220E;AL # CUNEIFORM SIGN LU2 TIMES SI PLUS ASH -1220F;AL # CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU -12210;AL # CUNEIFORM SIGN LU2 TIMES TUG2 -12211;AL # CUNEIFORM SIGN LU2 TENU -12212;AL # CUNEIFORM SIGN LU2 CROSSING LU2 -12213;AL # CUNEIFORM SIGN LU2 OPPOSING LU2 -12214;AL # CUNEIFORM SIGN LU2 SQUARED -12215;AL # CUNEIFORM SIGN LU2 SHESHIG -12216;AL # CUNEIFORM SIGN LU3 -12217;AL # CUNEIFORM SIGN LUGAL -12218;AL # CUNEIFORM SIGN LUGAL OVER LUGAL -12219;AL # CUNEIFORM SIGN LUGAL OPPOSING LUGAL -1221A;AL # CUNEIFORM SIGN LUGAL SHESHIG -1221B;AL # CUNEIFORM SIGN LUH -1221C;AL # CUNEIFORM SIGN LUL -1221D;AL # CUNEIFORM SIGN LUM -1221E;AL # CUNEIFORM SIGN LUM OVER LUM -1221F;AL # CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR -12220;AL # CUNEIFORM SIGN MA -12221;AL # CUNEIFORM SIGN MA TIMES TAK4 -12222;AL # CUNEIFORM SIGN MA GUNU -12223;AL # CUNEIFORM SIGN MA2 -12224;AL # CUNEIFORM SIGN MAH -12225;AL # CUNEIFORM SIGN MAR -12226;AL # CUNEIFORM SIGN MASH -12227;AL # CUNEIFORM SIGN MASH2 -12228;AL # CUNEIFORM SIGN ME -12229;AL # CUNEIFORM SIGN MES -1222A;AL # CUNEIFORM SIGN MI -1222B;AL # CUNEIFORM SIGN MIN -1222C;AL # CUNEIFORM SIGN MU -1222D;AL # CUNEIFORM SIGN MU OVER MU -1222E;AL # CUNEIFORM SIGN MUG -1222F;AL # CUNEIFORM SIGN MUG GUNU -12230;AL # CUNEIFORM SIGN MUNSUB -12231;AL # CUNEIFORM SIGN MURGU2 -12232;AL # CUNEIFORM SIGN MUSH -12233;AL # CUNEIFORM SIGN MUSH TIMES A -12234;AL # CUNEIFORM SIGN MUSH TIMES KUR -12235;AL # CUNEIFORM SIGN MUSH TIMES ZA -12236;AL # CUNEIFORM SIGN MUSH OVER MUSH -12237;AL # CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA -12238;AL # CUNEIFORM SIGN MUSH CROSSING MUSH -12239;AL # CUNEIFORM SIGN MUSH3 -1223A;AL # CUNEIFORM SIGN MUSH3 TIMES A -1223B;AL # CUNEIFORM SIGN MUSH3 TIMES A PLUS DI -1223C;AL # CUNEIFORM SIGN MUSH3 TIMES DI -1223D;AL # CUNEIFORM SIGN MUSH3 GUNU -1223E;AL # CUNEIFORM SIGN NA -1223F;AL # CUNEIFORM SIGN NA2 -12240;AL # CUNEIFORM SIGN NAGA -12241;AL # CUNEIFORM SIGN NAGA INVERTED -12242;AL # CUNEIFORM SIGN NAGA TIMES SHU TENU -12243;AL # CUNEIFORM SIGN NAGA OPPOSING NAGA -12244;AL # CUNEIFORM SIGN NAGAR -12245;AL # CUNEIFORM SIGN NAM NUTILLU -12246;AL # CUNEIFORM SIGN NAM -12247;AL # CUNEIFORM SIGN NAM2 -12248;AL # CUNEIFORM SIGN NE -12249;AL # CUNEIFORM SIGN NE TIMES A -1224A;AL # CUNEIFORM SIGN NE TIMES UD -1224B;AL # CUNEIFORM SIGN NE SHESHIG -1224C;AL # CUNEIFORM SIGN NI -1224D;AL # CUNEIFORM SIGN NI TIMES E -1224E;AL # CUNEIFORM SIGN NI2 -1224F;AL # CUNEIFORM SIGN NIM -12250;AL # CUNEIFORM SIGN NIM TIMES GAN2 TENU -12251;AL # CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU -12252;AL # CUNEIFORM SIGN NINDA2 -12253;AL # CUNEIFORM SIGN NINDA2 TIMES AN -12254;AL # CUNEIFORM SIGN NINDA2 TIMES ASH -12255;AL # CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH -12256;AL # CUNEIFORM SIGN NINDA2 TIMES GUD -12257;AL # CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU -12258;AL # CUNEIFORM SIGN NINDA2 TIMES NE -12259;AL # CUNEIFORM SIGN NINDA2 TIMES NUN -1225A;AL # CUNEIFORM SIGN NINDA2 TIMES SHE -1225B;AL # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN -1225C;AL # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH -1225D;AL # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH -1225E;AL # CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH -1225F;AL # CUNEIFORM SIGN NINDA2 TIMES USH -12260;AL # CUNEIFORM SIGN NISAG -12261;AL # CUNEIFORM SIGN NU -12262;AL # CUNEIFORM SIGN NU11 -12263;AL # CUNEIFORM SIGN NUN -12264;AL # CUNEIFORM SIGN NUN LAGAR TIMES GAR -12265;AL # CUNEIFORM SIGN NUN LAGAR TIMES MASH -12266;AL # CUNEIFORM SIGN NUN LAGAR TIMES SAL -12267;AL # CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL -12268;AL # CUNEIFORM SIGN NUN LAGAR TIMES USH -12269;AL # CUNEIFORM SIGN NUN TENU -1226A;AL # CUNEIFORM SIGN NUN OVER NUN -1226B;AL # CUNEIFORM SIGN NUN CROSSING NUN -1226C;AL # CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR -1226D;AL # CUNEIFORM SIGN NUNUZ -1226E;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB -1226F;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES BI -12270;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES DUG -12271;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES GUD -12272;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU -12273;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3 -12274;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES LA -12275;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES NE -12276;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3 -12277;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES U2 -12278;AL # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI -12279;AL # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U -1227A;AL # CUNEIFORM SIGN PA -1227B;AL # CUNEIFORM SIGN PAD -1227C;AL # CUNEIFORM SIGN PAN -1227D;AL # CUNEIFORM SIGN PAP -1227E;AL # CUNEIFORM SIGN PESH2 -1227F;AL # CUNEIFORM SIGN PI -12280;AL # CUNEIFORM SIGN PI TIMES A -12281;AL # CUNEIFORM SIGN PI TIMES AB -12282;AL # CUNEIFORM SIGN PI TIMES BI -12283;AL # CUNEIFORM SIGN PI TIMES BU -12284;AL # CUNEIFORM SIGN PI TIMES E -12285;AL # CUNEIFORM SIGN PI TIMES I -12286;AL # CUNEIFORM SIGN PI TIMES IB -12287;AL # CUNEIFORM SIGN PI TIMES U -12288;AL # CUNEIFORM SIGN PI TIMES U2 -12289;AL # CUNEIFORM SIGN PI CROSSING PI -1228A;AL # CUNEIFORM SIGN PIRIG -1228B;AL # CUNEIFORM SIGN PIRIG TIMES KAL -1228C;AL # CUNEIFORM SIGN PIRIG TIMES UD -1228D;AL # CUNEIFORM SIGN PIRIG TIMES ZA -1228E;AL # CUNEIFORM SIGN PIRIG OPPOSING PIRIG -1228F;AL # CUNEIFORM SIGN RA -12290;AL # CUNEIFORM SIGN RAB -12291;AL # CUNEIFORM SIGN RI -12292;AL # CUNEIFORM SIGN RU -12293;AL # CUNEIFORM SIGN SA -12294;AL # CUNEIFORM SIGN SAG NUTILLU -12295;AL # CUNEIFORM SIGN SAG -12296;AL # CUNEIFORM SIGN SAG TIMES A -12297;AL # CUNEIFORM SIGN SAG TIMES DU -12298;AL # CUNEIFORM SIGN SAG TIMES DUB -12299;AL # CUNEIFORM SIGN SAG TIMES HA -1229A;AL # CUNEIFORM SIGN SAG TIMES KAK -1229B;AL # CUNEIFORM SIGN SAG TIMES KUR -1229C;AL # CUNEIFORM SIGN SAG TIMES LUM -1229D;AL # CUNEIFORM SIGN SAG TIMES MI -1229E;AL # CUNEIFORM SIGN SAG TIMES NUN -1229F;AL # CUNEIFORM SIGN SAG TIMES SAL -122A0;AL # CUNEIFORM SIGN SAG TIMES SHID -122A1;AL # CUNEIFORM SIGN SAG TIMES TAB -122A2;AL # CUNEIFORM SIGN SAG TIMES U2 -122A3;AL # CUNEIFORM SIGN SAG TIMES UB -122A4;AL # CUNEIFORM SIGN SAG TIMES UM -122A5;AL # CUNEIFORM SIGN SAG TIMES UR -122A6;AL # CUNEIFORM SIGN SAG TIMES USH -122A7;AL # CUNEIFORM SIGN SAG OVER SAG -122A8;AL # CUNEIFORM SIGN SAG GUNU -122A9;AL # CUNEIFORM SIGN SAL -122AA;AL # CUNEIFORM SIGN SAL LAGAB TIMES ASH2 -122AB;AL # CUNEIFORM SIGN SANGA2 -122AC;AL # CUNEIFORM SIGN SAR -122AD;AL # CUNEIFORM SIGN SHA -122AE;AL # CUNEIFORM SIGN SHA3 -122AF;AL # CUNEIFORM SIGN SHA3 TIMES A -122B0;AL # CUNEIFORM SIGN SHA3 TIMES BAD -122B1;AL # CUNEIFORM SIGN SHA3 TIMES GISH -122B2;AL # CUNEIFORM SIGN SHA3 TIMES NE -122B3;AL # CUNEIFORM SIGN SHA3 TIMES SHU2 -122B4;AL # CUNEIFORM SIGN SHA3 TIMES TUR -122B5;AL # CUNEIFORM SIGN SHA3 TIMES U -122B6;AL # CUNEIFORM SIGN SHA3 TIMES U PLUS A -122B7;AL # CUNEIFORM SIGN SHA6 -122B8;AL # CUNEIFORM SIGN SHAB6 -122B9;AL # CUNEIFORM SIGN SHAR2 -122BA;AL # CUNEIFORM SIGN SHE -122BB;AL # CUNEIFORM SIGN SHE HU -122BC;AL # CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR -122BD;AL # CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR -122BE;AL # CUNEIFORM SIGN SHEG9 -122BF;AL # CUNEIFORM SIGN SHEN -122C0;AL # CUNEIFORM SIGN SHESH -122C1;AL # CUNEIFORM SIGN SHESH2 -122C2;AL # CUNEIFORM SIGN SHESHLAM -122C3;AL # CUNEIFORM SIGN SHID -122C4;AL # CUNEIFORM SIGN SHID TIMES A -122C5;AL # CUNEIFORM SIGN SHID TIMES IM -122C6;AL # CUNEIFORM SIGN SHIM -122C7;AL # CUNEIFORM SIGN SHIM TIMES A -122C8;AL # CUNEIFORM SIGN SHIM TIMES BAL -122C9;AL # CUNEIFORM SIGN SHIM TIMES BULUG -122CA;AL # CUNEIFORM SIGN SHIM TIMES DIN -122CB;AL # CUNEIFORM SIGN SHIM TIMES GAR -122CC;AL # CUNEIFORM SIGN SHIM TIMES IGI -122CD;AL # CUNEIFORM SIGN SHIM TIMES IGI GUNU -122CE;AL # CUNEIFORM SIGN SHIM TIMES KUSHU2 -122CF;AL # CUNEIFORM SIGN SHIM TIMES LUL -122D0;AL # CUNEIFORM SIGN SHIM TIMES MUG -122D1;AL # CUNEIFORM SIGN SHIM TIMES SAL -122D2;AL # CUNEIFORM SIGN SHINIG -122D3;AL # CUNEIFORM SIGN SHIR -122D4;AL # CUNEIFORM SIGN SHIR TENU -122D5;AL # CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR -122D6;AL # CUNEIFORM SIGN SHITA -122D7;AL # CUNEIFORM SIGN SHU -122D8;AL # CUNEIFORM SIGN SHU OVER INVERTED SHU -122D9;AL # CUNEIFORM SIGN SHU2 -122DA;AL # CUNEIFORM SIGN SHUBUR -122DB;AL # CUNEIFORM SIGN SI -122DC;AL # CUNEIFORM SIGN SI GUNU -122DD;AL # CUNEIFORM SIGN SIG -122DE;AL # CUNEIFORM SIGN SIG4 -122DF;AL # CUNEIFORM SIGN SIG4 OVER SIG4 SHU2 -122E0;AL # CUNEIFORM SIGN SIK2 -122E1;AL # CUNEIFORM SIGN SILA3 -122E2;AL # CUNEIFORM SIGN SU -122E3;AL # CUNEIFORM SIGN SU OVER SU -122E4;AL # CUNEIFORM SIGN SUD -122E5;AL # CUNEIFORM SIGN SUD2 -122E6;AL # CUNEIFORM SIGN SUHUR -122E7;AL # CUNEIFORM SIGN SUM -122E8;AL # CUNEIFORM SIGN SUMASH -122E9;AL # CUNEIFORM SIGN SUR -122EA;AL # CUNEIFORM SIGN SUR9 -122EB;AL # CUNEIFORM SIGN TA -122EC;AL # CUNEIFORM SIGN TA ASTERISK -122ED;AL # CUNEIFORM SIGN TA TIMES HI -122EE;AL # CUNEIFORM SIGN TA TIMES MI -122EF;AL # CUNEIFORM SIGN TA GUNU -122F0;AL # CUNEIFORM SIGN TAB -122F1;AL # CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH -122F2;AL # CUNEIFORM SIGN TAB SQUARED -122F3;AL # CUNEIFORM SIGN TAG -122F4;AL # CUNEIFORM SIGN TAG TIMES BI -122F5;AL # CUNEIFORM SIGN TAG TIMES GUD -122F6;AL # CUNEIFORM SIGN TAG TIMES SHE -122F7;AL # CUNEIFORM SIGN TAG TIMES SHU -122F8;AL # CUNEIFORM SIGN TAG TIMES TUG2 -122F9;AL # CUNEIFORM SIGN TAG TIMES UD -122FA;AL # CUNEIFORM SIGN TAK4 -122FB;AL # CUNEIFORM SIGN TAR -122FC;AL # CUNEIFORM SIGN TE -122FD;AL # CUNEIFORM SIGN TE GUNU -122FE;AL # CUNEIFORM SIGN TI -122FF;AL # CUNEIFORM SIGN TI TENU -12300;AL # CUNEIFORM SIGN TIL -12301;AL # CUNEIFORM SIGN TIR -12302;AL # CUNEIFORM SIGN TIR TIMES TAK4 -12303;AL # CUNEIFORM SIGN TIR OVER TIR -12304;AL # CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR -12305;AL # CUNEIFORM SIGN TU -12306;AL # CUNEIFORM SIGN TUG2 -12307;AL # CUNEIFORM SIGN TUK -12308;AL # CUNEIFORM SIGN TUM -12309;AL # CUNEIFORM SIGN TUR -1230A;AL # CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA -1230B;AL # CUNEIFORM SIGN U -1230C;AL # CUNEIFORM SIGN U GUD -1230D;AL # CUNEIFORM SIGN U U U -1230E;AL # CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR -1230F;AL # CUNEIFORM SIGN U OVER U SUR OVER SUR -12310;AL # CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED -12311;AL # CUNEIFORM SIGN U2 -12312;AL # CUNEIFORM SIGN UB -12313;AL # CUNEIFORM SIGN UD -12314;AL # CUNEIFORM SIGN UD KUSHU2 -12315;AL # CUNEIFORM SIGN UD TIMES BAD -12316;AL # CUNEIFORM SIGN UD TIMES MI -12317;AL # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U -12318;AL # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU -12319;AL # CUNEIFORM SIGN UD GUNU -1231A;AL # CUNEIFORM SIGN UD SHESHIG -1231B;AL # CUNEIFORM SIGN UD SHESHIG TIMES BAD -1231C;AL # CUNEIFORM SIGN UDUG -1231D;AL # CUNEIFORM SIGN UM -1231E;AL # CUNEIFORM SIGN UM TIMES LAGAB -1231F;AL # CUNEIFORM SIGN UM TIMES ME PLUS DA -12320;AL # CUNEIFORM SIGN UM TIMES SHA3 -12321;AL # CUNEIFORM SIGN UM TIMES U -12322;AL # CUNEIFORM SIGN UMBIN -12323;AL # CUNEIFORM SIGN UMUM -12324;AL # CUNEIFORM SIGN UMUM TIMES KASKAL -12325;AL # CUNEIFORM SIGN UMUM TIMES PA -12326;AL # CUNEIFORM SIGN UN -12327;AL # CUNEIFORM SIGN UN GUNU -12328;AL # CUNEIFORM SIGN UR -12329;AL # CUNEIFORM SIGN UR CROSSING UR -1232A;AL # CUNEIFORM SIGN UR SHESHIG -1232B;AL # CUNEIFORM SIGN UR2 -1232C;AL # CUNEIFORM SIGN UR2 TIMES A PLUS HA -1232D;AL # CUNEIFORM SIGN UR2 TIMES A PLUS NA -1232E;AL # CUNEIFORM SIGN UR2 TIMES AL -1232F;AL # CUNEIFORM SIGN UR2 TIMES HA -12330;AL # CUNEIFORM SIGN UR2 TIMES NUN -12331;AL # CUNEIFORM SIGN UR2 TIMES U2 -12332;AL # CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH -12333;AL # CUNEIFORM SIGN UR2 TIMES U2 PLUS BI -12334;AL # CUNEIFORM SIGN UR4 -12335;AL # CUNEIFORM SIGN URI -12336;AL # CUNEIFORM SIGN URI3 -12337;AL # CUNEIFORM SIGN URU -12338;AL # CUNEIFORM SIGN URU TIMES A -12339;AL # CUNEIFORM SIGN URU TIMES ASHGAB -1233A;AL # CUNEIFORM SIGN URU TIMES BAR -1233B;AL # CUNEIFORM SIGN URU TIMES DUN -1233C;AL # CUNEIFORM SIGN URU TIMES GA -1233D;AL # CUNEIFORM SIGN URU TIMES GAL -1233E;AL # CUNEIFORM SIGN URU TIMES GAN2 TENU -1233F;AL # CUNEIFORM SIGN URU TIMES GAR -12340;AL # CUNEIFORM SIGN URU TIMES GU -12341;AL # CUNEIFORM SIGN URU TIMES HA -12342;AL # CUNEIFORM SIGN URU TIMES IGI -12343;AL # CUNEIFORM SIGN URU TIMES IM -12344;AL # CUNEIFORM SIGN URU TIMES ISH -12345;AL # CUNEIFORM SIGN URU TIMES KI -12346;AL # CUNEIFORM SIGN URU TIMES LUM -12347;AL # CUNEIFORM SIGN URU TIMES MIN -12348;AL # CUNEIFORM SIGN URU TIMES PA -12349;AL # CUNEIFORM SIGN URU TIMES SHE -1234A;AL # CUNEIFORM SIGN URU TIMES SIG4 -1234B;AL # CUNEIFORM SIGN URU TIMES TU -1234C;AL # CUNEIFORM SIGN URU TIMES U PLUS GUD -1234D;AL # CUNEIFORM SIGN URU TIMES UD -1234E;AL # CUNEIFORM SIGN URU TIMES URUDA -1234F;AL # CUNEIFORM SIGN URUDA -12350;AL # CUNEIFORM SIGN URUDA TIMES U -12351;AL # CUNEIFORM SIGN USH -12352;AL # CUNEIFORM SIGN USH TIMES A -12353;AL # CUNEIFORM SIGN USH TIMES KU -12354;AL # CUNEIFORM SIGN USH TIMES KUR -12355;AL # CUNEIFORM SIGN USH TIMES TAK4 -12356;AL # CUNEIFORM SIGN USHX -12357;AL # CUNEIFORM SIGN USH2 -12358;AL # CUNEIFORM SIGN USHUMX -12359;AL # CUNEIFORM SIGN UTUKI -1235A;AL # CUNEIFORM SIGN UZ3 -1235B;AL # CUNEIFORM SIGN UZ3 TIMES KASKAL -1235C;AL # CUNEIFORM SIGN UZU -1235D;AL # CUNEIFORM SIGN ZA -1235E;AL # CUNEIFORM SIGN ZA TENU -1235F;AL # CUNEIFORM SIGN ZA SQUARED TIMES KUR -12360;AL # CUNEIFORM SIGN ZAG -12361;AL # CUNEIFORM SIGN ZAMX -12362;AL # CUNEIFORM SIGN ZE2 -12363;AL # CUNEIFORM SIGN ZI -12364;AL # CUNEIFORM SIGN ZI OVER ZI -12365;AL # CUNEIFORM SIGN ZI3 -12366;AL # CUNEIFORM SIGN ZIB -12367;AL # CUNEIFORM SIGN ZIB KABA TENU -12368;AL # CUNEIFORM SIGN ZIG -12369;AL # CUNEIFORM SIGN ZIZ2 -1236A;AL # CUNEIFORM SIGN ZU -1236B;AL # CUNEIFORM SIGN ZU5 -1236C;AL # CUNEIFORM SIGN ZU5 TIMES A -1236D;AL # CUNEIFORM SIGN ZUBUR -1236E;AL # CUNEIFORM SIGN ZUM -12400;AL # CUNEIFORM NUMERIC SIGN TWO ASH -12401;AL # CUNEIFORM NUMERIC SIGN THREE ASH -12402;AL # CUNEIFORM NUMERIC SIGN FOUR ASH -12403;AL # CUNEIFORM NUMERIC SIGN FIVE ASH -12404;AL # CUNEIFORM NUMERIC SIGN SIX ASH -12405;AL # CUNEIFORM NUMERIC SIGN SEVEN ASH -12406;AL # CUNEIFORM NUMERIC SIGN EIGHT ASH -12407;AL # CUNEIFORM NUMERIC SIGN NINE ASH -12408;AL # CUNEIFORM NUMERIC SIGN THREE DISH -12409;AL # CUNEIFORM NUMERIC SIGN FOUR DISH -1240A;AL # CUNEIFORM NUMERIC SIGN FIVE DISH -1240B;AL # CUNEIFORM NUMERIC SIGN SIX DISH -1240C;AL # CUNEIFORM NUMERIC SIGN SEVEN DISH -1240D;AL # CUNEIFORM NUMERIC SIGN EIGHT DISH -1240E;AL # CUNEIFORM NUMERIC SIGN NINE DISH -1240F;AL # CUNEIFORM NUMERIC SIGN FOUR U -12410;AL # CUNEIFORM NUMERIC SIGN FIVE U -12411;AL # CUNEIFORM NUMERIC SIGN SIX U -12412;AL # CUNEIFORM NUMERIC SIGN SEVEN U -12413;AL # CUNEIFORM NUMERIC SIGN EIGHT U -12414;AL # CUNEIFORM NUMERIC SIGN NINE U -12415;AL # CUNEIFORM NUMERIC SIGN ONE GESH2 -12416;AL # CUNEIFORM NUMERIC SIGN TWO GESH2 -12417;AL # CUNEIFORM NUMERIC SIGN THREE GESH2 -12418;AL # CUNEIFORM NUMERIC SIGN FOUR GESH2 -12419;AL # CUNEIFORM NUMERIC SIGN FIVE GESH2 -1241A;AL # CUNEIFORM NUMERIC SIGN SIX GESH2 -1241B;AL # CUNEIFORM NUMERIC SIGN SEVEN GESH2 -1241C;AL # CUNEIFORM NUMERIC SIGN EIGHT GESH2 -1241D;AL # CUNEIFORM NUMERIC SIGN NINE GESH2 -1241E;AL # CUNEIFORM NUMERIC SIGN ONE GESHU -1241F;AL # CUNEIFORM NUMERIC SIGN TWO GESHU -12420;AL # CUNEIFORM NUMERIC SIGN THREE GESHU -12421;AL # CUNEIFORM NUMERIC SIGN FOUR GESHU -12422;AL # CUNEIFORM NUMERIC SIGN FIVE GESHU -12423;AL # CUNEIFORM NUMERIC SIGN TWO SHAR2 -12424;AL # CUNEIFORM NUMERIC SIGN THREE SHAR2 -12425;AL # CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM -12426;AL # CUNEIFORM NUMERIC SIGN FOUR SHAR2 -12427;AL # CUNEIFORM NUMERIC SIGN FIVE SHAR2 -12428;AL # CUNEIFORM NUMERIC SIGN SIX SHAR2 -12429;AL # CUNEIFORM NUMERIC SIGN SEVEN SHAR2 -1242A;AL # CUNEIFORM NUMERIC SIGN EIGHT SHAR2 -1242B;AL # CUNEIFORM NUMERIC SIGN NINE SHAR2 -1242C;AL # CUNEIFORM NUMERIC SIGN ONE SHARU -1242D;AL # CUNEIFORM NUMERIC SIGN TWO SHARU -1242E;AL # CUNEIFORM NUMERIC SIGN THREE SHARU -1242F;AL # CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM -12430;AL # CUNEIFORM NUMERIC SIGN FOUR SHARU -12431;AL # CUNEIFORM NUMERIC SIGN FIVE SHARU -12432;AL # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH -12433;AL # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN -12434;AL # CUNEIFORM NUMERIC SIGN ONE BURU -12435;AL # CUNEIFORM NUMERIC SIGN TWO BURU -12436;AL # CUNEIFORM NUMERIC SIGN THREE BURU -12437;AL # CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM -12438;AL # CUNEIFORM NUMERIC SIGN FOUR BURU -12439;AL # CUNEIFORM NUMERIC SIGN FIVE BURU -1243A;AL # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16 -1243B;AL # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21 -1243C;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU -1243D;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4 -1243E;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A -1243F;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B -12440;AL # CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9 -12441;AL # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3 -12442;AL # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A -12443;AL # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B -12444;AL # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU -12445;AL # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3 -12446;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU -12447;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3 -12448;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4 -12449;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A -1244A;AL # CUNEIFORM NUMERIC SIGN TWO ASH TENU -1244B;AL # CUNEIFORM NUMERIC SIGN THREE ASH TENU -1244C;AL # CUNEIFORM NUMERIC SIGN FOUR ASH TENU -1244D;AL # CUNEIFORM NUMERIC SIGN FIVE ASH TENU -1244E;AL # CUNEIFORM NUMERIC SIGN SIX ASH TENU -1244F;AL # CUNEIFORM NUMERIC SIGN ONE BAN2 -12450;AL # CUNEIFORM NUMERIC SIGN TWO BAN2 -12451;AL # CUNEIFORM NUMERIC SIGN THREE BAN2 -12452;AL # CUNEIFORM NUMERIC SIGN FOUR BAN2 -12453;AL # CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM -12454;AL # CUNEIFORM NUMERIC SIGN FIVE BAN2 -12455;AL # CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM -12456;AL # CUNEIFORM NUMERIC SIGN NIGIDAMIN -12457;AL # CUNEIFORM NUMERIC SIGN NIGIDAESH -12458;AL # CUNEIFORM NUMERIC SIGN ONE ESHE3 -12459;AL # CUNEIFORM NUMERIC SIGN TWO ESHE3 -1245A;AL # CUNEIFORM NUMERIC SIGN ONE THIRD DISH -1245B;AL # CUNEIFORM NUMERIC SIGN TWO THIRDS DISH -1245C;AL # CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH -1245D;AL # CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A -1245E;AL # CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A -1245F;AL # CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH -12460;AL # CUNEIFORM NUMERIC SIGN ONE QUARTER ASH -12461;AL # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH -12462;AL # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER -12470;BA # CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER -12471;BA # CUNEIFORM PUNCTUATION SIGN VERTICAL COLON -12472;BA # CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON -12473;BA # CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON -1D000;AL # BYZANTINE MUSICAL SYMBOL PSILI -1D001;AL # BYZANTINE MUSICAL SYMBOL DASEIA -1D002;AL # BYZANTINE MUSICAL SYMBOL PERISPOMENI -1D003;AL # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON -1D004;AL # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI -1D005;AL # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON -1D006;AL # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI -1D007;AL # BYZANTINE MUSICAL SYMBOL KATHISTI -1D008;AL # BYZANTINE MUSICAL SYMBOL SYRMATIKI -1D009;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI -1D00A;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS -1D00B;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI -1D00C;AL # BYZANTINE MUSICAL SYMBOL KREMASTI -1D00D;AL # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON -1D00E;AL # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON -1D00F;AL # BYZANTINE MUSICAL SYMBOL TELEIA -1D010;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA -1D011;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS -1D012;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI -1D013;AL # BYZANTINE MUSICAL SYMBOL SYNEVMA -1D014;AL # BYZANTINE MUSICAL SYMBOL THITA -1D015;AL # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION -1D016;AL # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION -1D017;AL # BYZANTINE MUSICAL SYMBOL PSILON -1D018;AL # BYZANTINE MUSICAL SYMBOL CHAMILON -1D019;AL # BYZANTINE MUSICAL SYMBOL VATHY -1D01A;AL # BYZANTINE MUSICAL SYMBOL ISON ARCHAION -1D01B;AL # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION -1D01C;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION -1D01D;AL # BYZANTINE MUSICAL SYMBOL SAXIMATA -1D01E;AL # BYZANTINE MUSICAL SYMBOL PARICHON -1D01F;AL # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA -1D020;AL # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION -1D021;AL # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION -1D022;AL # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION -1D023;AL # BYZANTINE MUSICAL SYMBOL APOTHEMA -1D024;AL # BYZANTINE MUSICAL SYMBOL KLASMA -1D025;AL # BYZANTINE MUSICAL SYMBOL REVMA -1D026;AL # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION -1D027;AL # BYZANTINE MUSICAL SYMBOL TINAGMA -1D028;AL # BYZANTINE MUSICAL SYMBOL ANATRICHISMA -1D029;AL # BYZANTINE MUSICAL SYMBOL SEISMA -1D02A;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION -1D02B;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU -1D02C;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION -1D02D;AL # BYZANTINE MUSICAL SYMBOL THEMA -1D02E;AL # BYZANTINE MUSICAL SYMBOL LEMOI -1D02F;AL # BYZANTINE MUSICAL SYMBOL DYO -1D030;AL # BYZANTINE MUSICAL SYMBOL TRIA -1D031;AL # BYZANTINE MUSICAL SYMBOL TESSERA -1D032;AL # BYZANTINE MUSICAL SYMBOL KRATIMATA -1D033;AL # BYZANTINE MUSICAL SYMBOL APESO EXO NEO -1D034;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION -1D035;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORA -1D036;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION -1D037;AL # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON -1D038;AL # BYZANTINE MUSICAL SYMBOL PELASTON -1D039;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON -1D03A;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA -1D03B;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION -1D03C;AL # BYZANTINE MUSICAL SYMBOL RAPISMA -1D03D;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION -1D03E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION -1D03F;AL # BYZANTINE MUSICAL SYMBOL ICHADIN -1D040;AL # BYZANTINE MUSICAL SYMBOL NANA -1D041;AL # BYZANTINE MUSICAL SYMBOL PETASMA -1D042;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO -1D043;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO -1D044;AL # BYZANTINE MUSICAL SYMBOL STRAGGISMATA -1D045;AL # BYZANTINE MUSICAL SYMBOL GRONTHISMATA -1D046;AL # BYZANTINE MUSICAL SYMBOL ISON NEO -1D047;AL # BYZANTINE MUSICAL SYMBOL OLIGON NEO -1D048;AL # BYZANTINE MUSICAL SYMBOL OXEIA NEO -1D049;AL # BYZANTINE MUSICAL SYMBOL PETASTI -1D04A;AL # BYZANTINE MUSICAL SYMBOL KOUFISMA -1D04B;AL # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA -1D04C;AL # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA -1D04D;AL # BYZANTINE MUSICAL SYMBOL PELASTON NEO -1D04E;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO -1D04F;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO -1D050;AL # BYZANTINE MUSICAL SYMBOL YPSILI -1D051;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO -1D052;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO -1D053;AL # BYZANTINE MUSICAL SYMBOL YPORROI -1D054;AL # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON -1D055;AL # BYZANTINE MUSICAL SYMBOL ELAFRON -1D056;AL # BYZANTINE MUSICAL SYMBOL CHAMILI -1D057;AL # BYZANTINE MUSICAL SYMBOL MIKRON ISON -1D058;AL # BYZANTINE MUSICAL SYMBOL VAREIA NEO -1D059;AL # BYZANTINE MUSICAL SYMBOL PIASMA NEO -1D05A;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO -1D05B;AL # BYZANTINE MUSICAL SYMBOL OMALON -1D05C;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOMA -1D05D;AL # BYZANTINE MUSICAL SYMBOL LYGISMA -1D05E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO -1D05F;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO -1D060;AL # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA -1D061;AL # BYZANTINE MUSICAL SYMBOL KYLISMA -1D062;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA -1D063;AL # BYZANTINE MUSICAL SYMBOL TROMIKON NEO -1D064;AL # BYZANTINE MUSICAL SYMBOL EKSTREPTON -1D065;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO -1D066;AL # BYZANTINE MUSICAL SYMBOL SYRMA -1D067;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO -1D068;AL # BYZANTINE MUSICAL SYMBOL EPEGERMA -1D069;AL # BYZANTINE MUSICAL SYMBOL SEISMA NEO -1D06A;AL # BYZANTINE MUSICAL SYMBOL XIRON KLASMA -1D06B;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON -1D06C;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA -1D06D;AL # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA -1D06E;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA -1D06F;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA -1D070;AL # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA -1D071;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA -1D072;AL # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON -1D073;AL # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON -1D074;AL # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON -1D075;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO -1D076;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO -1D077;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO -1D078;AL # BYZANTINE MUSICAL SYMBOL THEMA APLOUN -1D079;AL # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES -1D07A;AL # BYZANTINE MUSICAL SYMBOL KATAVASMA -1D07B;AL # BYZANTINE MUSICAL SYMBOL ENDOFONON -1D07C;AL # BYZANTINE MUSICAL SYMBOL YFEN KATO -1D07D;AL # BYZANTINE MUSICAL SYMBOL YFEN ANO -1D07E;AL # BYZANTINE MUSICAL SYMBOL STAVROS -1D07F;AL # BYZANTINE MUSICAL SYMBOL KLASMA ANO -1D080;AL # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION -1D081;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION -1D082;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO -1D083;AL # BYZANTINE MUSICAL SYMBOL KRATIMA NEO -1D084;AL # BYZANTINE MUSICAL SYMBOL APODERMA NEO -1D085;AL # BYZANTINE MUSICAL SYMBOL APLI -1D086;AL # BYZANTINE MUSICAL SYMBOL DIPLI -1D087;AL # BYZANTINE MUSICAL SYMBOL TRIPLI -1D088;AL # BYZANTINE MUSICAL SYMBOL TETRAPLI -1D089;AL # BYZANTINE MUSICAL SYMBOL KORONIS -1D08A;AL # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU -1D08B;AL # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON -1D08C;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON -1D08D;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON -1D08E;AL # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU -1D08F;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO -1D090;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA -1D091;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA -1D092;AL # BYZANTINE MUSICAL SYMBOL DIGORGON -1D093;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO -1D094;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO -1D095;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA -1D096;AL # BYZANTINE MUSICAL SYMBOL TRIGORGON -1D097;AL # BYZANTINE MUSICAL SYMBOL ARGON -1D098;AL # BYZANTINE MUSICAL SYMBOL IMIDIARGON -1D099;AL # BYZANTINE MUSICAL SYMBOL DIARGON -1D09A;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI -1D09B;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI -1D09C;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGI -1D09D;AL # BYZANTINE MUSICAL SYMBOL AGOGI METRIA -1D09E;AL # BYZANTINE MUSICAL SYMBOL AGOGI MESI -1D09F;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGI -1D0A0;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI -1D0A1;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI -1D0A2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS -1D0A3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS -1D0A4;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS -1D0A5;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS -1D0A6;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS -1D0A7;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS -1D0A8;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS -1D0A9;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS -1D0AA;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS -1D0AB;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS -1D0AC;AL # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS -1D0AD;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS -1D0AE;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS -1D0AF;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS -1D0B0;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS -1D0B1;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS -1D0B2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS -1D0B3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS -1D0B4;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN -1D0B5;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN -1D0B6;AL # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU -1D0B7;AL # BYZANTINE MUSICAL SYMBOL IMIFONON -1D0B8;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORON -1D0B9;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU -1D0BA;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA -1D0BB;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA -1D0BC;AL # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS -1D0BD;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI -1D0BE;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI -1D0BF;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE -1D0C0;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO -1D0C1;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO -1D0C2;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO -1D0C3;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS -1D0C4;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS -1D0C5;AL # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS -1D0C6;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI -1D0C7;AL # BYZANTINE MUSICAL SYMBOL FTHORA NENANO -1D0C8;AL # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS -1D0C9;AL # BYZANTINE MUSICAL SYMBOL CHROA KLITON -1D0CA;AL # BYZANTINE MUSICAL SYMBOL CHROA SPATHI -1D0CB;AL # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION -1D0CC;AL # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA -1D0CD;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION -1D0CE;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION -1D0CF;AL # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION -1D0D0;AL # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA -1D0D1;AL # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA -1D0D2;AL # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA -1D0D3;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA -1D0D4;AL # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA -1D0D5;AL # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA -1D0D6;AL # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA -1D0D7;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA -1D0D8;AL # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS -1D0D9;AL # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS -1D0DA;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI -1D0DB;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI -1D0DC;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI -1D0DD;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS -1D0DE;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS -1D0DF;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU -1D0E0;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU -1D0E1;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU -1D0E2;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS -1D0E3;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU -1D0E4;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU -1D0E5;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU -1D0E6;AL # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG -1D0E7;AL # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU -1D0E8;AL # BYZANTINE MUSICAL SYMBOL STIGMA -1D0E9;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO PA -1D0EA;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU -1D0EB;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO GA -1D0EC;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO DI -1D0ED;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO KE -1D0EE;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO -1D0EF;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO NI -1D0F0;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO -1D0F1;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO -1D0F2;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO -1D0F3;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO -1D0F4;AL # BYZANTINE MUSICAL SYMBOL KLASMA KATO -1D0F5;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO -1D100;AL # MUSICAL SYMBOL SINGLE BARLINE -1D101;AL # MUSICAL SYMBOL DOUBLE BARLINE -1D102;AL # MUSICAL SYMBOL FINAL BARLINE -1D103;AL # MUSICAL SYMBOL REVERSE FINAL BARLINE -1D104;AL # MUSICAL SYMBOL DASHED BARLINE -1D105;AL # MUSICAL SYMBOL SHORT BARLINE -1D106;AL # MUSICAL SYMBOL LEFT REPEAT SIGN -1D107;AL # MUSICAL SYMBOL RIGHT REPEAT SIGN -1D108;AL # MUSICAL SYMBOL REPEAT DOTS -1D109;AL # MUSICAL SYMBOL DAL SEGNO -1D10A;AL # MUSICAL SYMBOL DA CAPO -1D10B;AL # MUSICAL SYMBOL SEGNO -1D10C;AL # MUSICAL SYMBOL CODA -1D10D;AL # MUSICAL SYMBOL REPEATED FIGURE-1 -1D10E;AL # MUSICAL SYMBOL REPEATED FIGURE-2 -1D10F;AL # MUSICAL SYMBOL REPEATED FIGURE-3 -1D110;AL # MUSICAL SYMBOL FERMATA -1D111;AL # MUSICAL SYMBOL FERMATA BELOW -1D112;AL # MUSICAL SYMBOL BREATH MARK -1D113;AL # MUSICAL SYMBOL CAESURA -1D114;AL # MUSICAL SYMBOL BRACE -1D115;AL # MUSICAL SYMBOL BRACKET -1D116;AL # MUSICAL SYMBOL ONE-LINE STAFF -1D117;AL # MUSICAL SYMBOL TWO-LINE STAFF -1D118;AL # MUSICAL SYMBOL THREE-LINE STAFF -1D119;AL # MUSICAL SYMBOL FOUR-LINE STAFF -1D11A;AL # MUSICAL SYMBOL FIVE-LINE STAFF -1D11B;AL # MUSICAL SYMBOL SIX-LINE STAFF -1D11C;AL # MUSICAL SYMBOL SIX-STRING FRETBOARD -1D11D;AL # MUSICAL SYMBOL FOUR-STRING FRETBOARD -1D11E;AL # MUSICAL SYMBOL G CLEF -1D11F;AL # MUSICAL SYMBOL G CLEF OTTAVA ALTA -1D120;AL # MUSICAL SYMBOL G CLEF OTTAVA BASSA -1D121;AL # MUSICAL SYMBOL C CLEF -1D122;AL # MUSICAL SYMBOL F CLEF -1D123;AL # MUSICAL SYMBOL F CLEF OTTAVA ALTA -1D124;AL # MUSICAL SYMBOL F CLEF OTTAVA BASSA -1D125;AL # MUSICAL SYMBOL DRUM CLEF-1 -1D126;AL # MUSICAL SYMBOL DRUM CLEF-2 -1D12A;AL # MUSICAL SYMBOL DOUBLE SHARP -1D12B;AL # MUSICAL SYMBOL DOUBLE FLAT -1D12C;AL # MUSICAL SYMBOL FLAT UP -1D12D;AL # MUSICAL SYMBOL FLAT DOWN -1D12E;AL # MUSICAL SYMBOL NATURAL UP -1D12F;AL # MUSICAL SYMBOL NATURAL DOWN -1D130;AL # MUSICAL SYMBOL SHARP UP -1D131;AL # MUSICAL SYMBOL SHARP DOWN -1D132;AL # MUSICAL SYMBOL QUARTER TONE SHARP -1D133;AL # MUSICAL SYMBOL QUARTER TONE FLAT -1D134;AL # MUSICAL SYMBOL COMMON TIME -1D135;AL # MUSICAL SYMBOL CUT TIME -1D136;AL # MUSICAL SYMBOL OTTAVA ALTA -1D137;AL # MUSICAL SYMBOL OTTAVA BASSA -1D138;AL # MUSICAL SYMBOL QUINDICESIMA ALTA -1D139;AL # MUSICAL SYMBOL QUINDICESIMA BASSA -1D13A;AL # MUSICAL SYMBOL MULTI REST -1D13B;AL # MUSICAL SYMBOL WHOLE REST -1D13C;AL # MUSICAL SYMBOL HALF REST -1D13D;AL # MUSICAL SYMBOL QUARTER REST -1D13E;AL # MUSICAL SYMBOL EIGHTH REST -1D13F;AL # MUSICAL SYMBOL SIXTEENTH REST -1D140;AL # MUSICAL SYMBOL THIRTY-SECOND REST -1D141;AL # MUSICAL SYMBOL SIXTY-FOURTH REST -1D142;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST -1D143;AL # MUSICAL SYMBOL X NOTEHEAD -1D144;AL # MUSICAL SYMBOL PLUS NOTEHEAD -1D145;AL # MUSICAL SYMBOL CIRCLE X NOTEHEAD -1D146;AL # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE -1D147;AL # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK -1D148;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE -1D149;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK -1D14A;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE -1D14B;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK -1D14C;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE -1D14D;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK -1D14E;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE -1D14F;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK -1D150;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE -1D151;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK -1D152;AL # MUSICAL SYMBOL MOON NOTEHEAD WHITE -1D153;AL # MUSICAL SYMBOL MOON NOTEHEAD BLACK -1D154;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE -1D155;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK -1D156;AL # MUSICAL SYMBOL PARENTHESIS NOTEHEAD -1D157;AL # MUSICAL SYMBOL VOID NOTEHEAD -1D158;AL # MUSICAL SYMBOL NOTEHEAD BLACK -1D159;AL # MUSICAL SYMBOL NULL NOTEHEAD -1D15A;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE -1D15B;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK -1D15C;AL # MUSICAL SYMBOL BREVE -1D15D;AL # MUSICAL SYMBOL WHOLE NOTE -1D15E;AL # MUSICAL SYMBOL HALF NOTE -1D15F;AL # MUSICAL SYMBOL QUARTER NOTE -1D160;AL # MUSICAL SYMBOL EIGHTH NOTE -1D161;AL # MUSICAL SYMBOL SIXTEENTH NOTE -1D162;AL # MUSICAL SYMBOL THIRTY-SECOND NOTE -1D163;AL # MUSICAL SYMBOL SIXTY-FOURTH NOTE -1D164;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE -1D165;CM # MUSICAL SYMBOL COMBINING STEM -1D166;CM # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM -1D167;CM # MUSICAL SYMBOL COMBINING TREMOLO-1 -1D168;CM # MUSICAL SYMBOL COMBINING TREMOLO-2 -1D169;CM # MUSICAL SYMBOL COMBINING TREMOLO-3 -1D16A;AL # MUSICAL SYMBOL FINGERED TREMOLO-1 -1D16B;AL # MUSICAL SYMBOL FINGERED TREMOLO-2 -1D16C;AL # MUSICAL SYMBOL FINGERED TREMOLO-3 -1D16D;CM # MUSICAL SYMBOL COMBINING AUGMENTATION DOT -1D16E;CM # MUSICAL SYMBOL COMBINING FLAG-1 -1D16F;CM # MUSICAL SYMBOL COMBINING FLAG-2 -1D170;CM # MUSICAL SYMBOL COMBINING FLAG-3 -1D171;CM # MUSICAL SYMBOL COMBINING FLAG-4 -1D172;CM # MUSICAL SYMBOL COMBINING FLAG-5 -1D173;CM # MUSICAL SYMBOL BEGIN BEAM -1D174;CM # MUSICAL SYMBOL END BEAM -1D175;CM # MUSICAL SYMBOL BEGIN TIE -1D176;CM # MUSICAL SYMBOL END TIE -1D177;CM # MUSICAL SYMBOL BEGIN SLUR -1D178;CM # MUSICAL SYMBOL END SLUR -1D179;CM # MUSICAL SYMBOL BEGIN PHRASE -1D17A;CM # MUSICAL SYMBOL END PHRASE -1D17B;CM # MUSICAL SYMBOL COMBINING ACCENT -1D17C;CM # MUSICAL SYMBOL COMBINING STACCATO -1D17D;CM # MUSICAL SYMBOL COMBINING TENUTO -1D17E;CM # MUSICAL SYMBOL COMBINING STACCATISSIMO -1D17F;CM # MUSICAL SYMBOL COMBINING MARCATO -1D180;CM # MUSICAL SYMBOL COMBINING MARCATO-STACCATO -1D181;CM # MUSICAL SYMBOL COMBINING ACCENT-STACCATO -1D182;CM # MUSICAL SYMBOL COMBINING LOURE -1D183;AL # MUSICAL SYMBOL ARPEGGIATO UP -1D184;AL # MUSICAL SYMBOL ARPEGGIATO DOWN -1D185;CM # MUSICAL SYMBOL COMBINING DOIT -1D186;CM # MUSICAL SYMBOL COMBINING RIP -1D187;CM # MUSICAL SYMBOL COMBINING FLIP -1D188;CM # MUSICAL SYMBOL COMBINING SMEAR -1D189;CM # MUSICAL SYMBOL COMBINING BEND -1D18A;CM # MUSICAL SYMBOL COMBINING DOUBLE TONGUE -1D18B;CM # MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D18C;AL # MUSICAL SYMBOL RINFORZANDO -1D18D;AL # MUSICAL SYMBOL SUBITO -1D18E;AL # MUSICAL SYMBOL Z -1D18F;AL # MUSICAL SYMBOL PIANO -1D190;AL # MUSICAL SYMBOL MEZZO -1D191;AL # MUSICAL SYMBOL FORTE -1D192;AL # MUSICAL SYMBOL CRESCENDO -1D193;AL # MUSICAL SYMBOL DECRESCENDO -1D194;AL # MUSICAL SYMBOL GRACE NOTE SLASH -1D195;AL # MUSICAL SYMBOL GRACE NOTE NO SLASH -1D196;AL # MUSICAL SYMBOL TR -1D197;AL # MUSICAL SYMBOL TURN -1D198;AL # MUSICAL SYMBOL INVERTED TURN -1D199;AL # MUSICAL SYMBOL TURN SLASH -1D19A;AL # MUSICAL SYMBOL TURN UP -1D19B;AL # MUSICAL SYMBOL ORNAMENT STROKE-1 -1D19C;AL # MUSICAL SYMBOL ORNAMENT STROKE-2 -1D19D;AL # MUSICAL SYMBOL ORNAMENT STROKE-3 -1D19E;AL # MUSICAL SYMBOL ORNAMENT STROKE-4 -1D19F;AL # MUSICAL SYMBOL ORNAMENT STROKE-5 -1D1A0;AL # MUSICAL SYMBOL ORNAMENT STROKE-6 -1D1A1;AL # MUSICAL SYMBOL ORNAMENT STROKE-7 -1D1A2;AL # MUSICAL SYMBOL ORNAMENT STROKE-8 -1D1A3;AL # MUSICAL SYMBOL ORNAMENT STROKE-9 -1D1A4;AL # MUSICAL SYMBOL ORNAMENT STROKE-10 -1D1A5;AL # MUSICAL SYMBOL ORNAMENT STROKE-11 -1D1A6;AL # MUSICAL SYMBOL HAUPTSTIMME -1D1A7;AL # MUSICAL SYMBOL NEBENSTIMME -1D1A8;AL # MUSICAL SYMBOL END OF STIMME -1D1A9;AL # MUSICAL SYMBOL DEGREE SLASH -1D1AA;CM # MUSICAL SYMBOL COMBINING DOWN BOW -1D1AB;CM # MUSICAL SYMBOL COMBINING UP BOW -1D1AC;CM # MUSICAL SYMBOL COMBINING HARMONIC -1D1AD;CM # MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1D1AE;AL # MUSICAL SYMBOL PEDAL MARK -1D1AF;AL # MUSICAL SYMBOL PEDAL UP MARK -1D1B0;AL # MUSICAL SYMBOL HALF PEDAL MARK -1D1B1;AL # MUSICAL SYMBOL GLISSANDO UP -1D1B2;AL # MUSICAL SYMBOL GLISSANDO DOWN -1D1B3;AL # MUSICAL SYMBOL WITH FINGERNAILS -1D1B4;AL # MUSICAL SYMBOL DAMP -1D1B5;AL # MUSICAL SYMBOL DAMP ALL -1D1B6;AL # MUSICAL SYMBOL MAXIMA -1D1B7;AL # MUSICAL SYMBOL LONGA -1D1B8;AL # MUSICAL SYMBOL BREVIS -1D1B9;AL # MUSICAL SYMBOL SEMIBREVIS WHITE -1D1BA;AL # MUSICAL SYMBOL SEMIBREVIS BLACK -1D1BB;AL # MUSICAL SYMBOL MINIMA -1D1BC;AL # MUSICAL SYMBOL MINIMA BLACK -1D1BD;AL # MUSICAL SYMBOL SEMIMINIMA WHITE -1D1BE;AL # MUSICAL SYMBOL SEMIMINIMA BLACK -1D1BF;AL # MUSICAL SYMBOL FUSA WHITE -1D1C0;AL # MUSICAL SYMBOL FUSA BLACK -1D1C1;AL # MUSICAL SYMBOL LONGA PERFECTA REST -1D1C2;AL # MUSICAL SYMBOL LONGA IMPERFECTA REST -1D1C3;AL # MUSICAL SYMBOL BREVIS REST -1D1C4;AL # MUSICAL SYMBOL SEMIBREVIS REST -1D1C5;AL # MUSICAL SYMBOL MINIMA REST -1D1C6;AL # MUSICAL SYMBOL SEMIMINIMA REST -1D1C7;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA -1D1C8;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA -1D1C9;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 -1D1CA;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA -1D1CB;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA -1D1CC;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1 -1D1CD;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2 -1D1CE;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3 -1D1CF;AL # MUSICAL SYMBOL CROIX -1D1D0;AL # MUSICAL SYMBOL GREGORIAN C CLEF -1D1D1;AL # MUSICAL SYMBOL GREGORIAN F CLEF -1D1D2;AL # MUSICAL SYMBOL SQUARE B -1D1D3;AL # MUSICAL SYMBOL VIRGA -1D1D4;AL # MUSICAL SYMBOL PODATUS -1D1D5;AL # MUSICAL SYMBOL CLIVIS -1D1D6;AL # MUSICAL SYMBOL SCANDICUS -1D1D7;AL # MUSICAL SYMBOL CLIMACUS -1D1D8;AL # MUSICAL SYMBOL TORCULUS -1D1D9;AL # MUSICAL SYMBOL PORRECTUS -1D1DA;AL # MUSICAL SYMBOL PORRECTUS FLEXUS -1D1DB;AL # MUSICAL SYMBOL SCANDICUS FLEXUS -1D1DC;AL # MUSICAL SYMBOL TORCULUS RESUPINUS -1D1DD;AL # MUSICAL SYMBOL PES SUBPUNCTIS -1D200;AL # GREEK VOCAL NOTATION SYMBOL-1 -1D201;AL # GREEK VOCAL NOTATION SYMBOL-2 -1D202;AL # GREEK VOCAL NOTATION SYMBOL-3 -1D203;AL # GREEK VOCAL NOTATION SYMBOL-4 -1D204;AL # GREEK VOCAL NOTATION SYMBOL-5 -1D205;AL # GREEK VOCAL NOTATION SYMBOL-6 -1D206;AL # GREEK VOCAL NOTATION SYMBOL-7 -1D207;AL # GREEK VOCAL NOTATION SYMBOL-8 -1D208;AL # GREEK VOCAL NOTATION SYMBOL-9 -1D209;AL # GREEK VOCAL NOTATION SYMBOL-10 -1D20A;AL # GREEK VOCAL NOTATION SYMBOL-11 -1D20B;AL # GREEK VOCAL NOTATION SYMBOL-12 -1D20C;AL # GREEK VOCAL NOTATION SYMBOL-13 -1D20D;AL # GREEK VOCAL NOTATION SYMBOL-14 -1D20E;AL # GREEK VOCAL NOTATION SYMBOL-15 -1D20F;AL # GREEK VOCAL NOTATION SYMBOL-16 -1D210;AL # GREEK VOCAL NOTATION SYMBOL-17 -1D211;AL # GREEK VOCAL NOTATION SYMBOL-18 -1D212;AL # GREEK VOCAL NOTATION SYMBOL-19 -1D213;AL # GREEK VOCAL NOTATION SYMBOL-20 -1D214;AL # GREEK VOCAL NOTATION SYMBOL-21 -1D215;AL # GREEK VOCAL NOTATION SYMBOL-22 -1D216;AL # GREEK VOCAL NOTATION SYMBOL-23 -1D217;AL # GREEK VOCAL NOTATION SYMBOL-24 -1D218;AL # GREEK VOCAL NOTATION SYMBOL-50 -1D219;AL # GREEK VOCAL NOTATION SYMBOL-51 -1D21A;AL # GREEK VOCAL NOTATION SYMBOL-52 -1D21B;AL # GREEK VOCAL NOTATION SYMBOL-53 -1D21C;AL # GREEK VOCAL NOTATION SYMBOL-54 -1D21D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-1 -1D21E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-2 -1D21F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-4 -1D220;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-5 -1D221;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-7 -1D222;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-8 -1D223;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-11 -1D224;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-12 -1D225;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-13 -1D226;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-14 -1D227;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-17 -1D228;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-18 -1D229;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-19 -1D22A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-23 -1D22B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-24 -1D22C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-25 -1D22D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-26 -1D22E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-27 -1D22F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-29 -1D230;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-30 -1D231;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-32 -1D232;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-36 -1D233;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-37 -1D234;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-38 -1D235;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-39 -1D236;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-40 -1D237;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-42 -1D238;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-43 -1D239;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-45 -1D23A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-47 -1D23B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-48 -1D23C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-49 -1D23D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-50 -1D23E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-51 -1D23F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-52 -1D240;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-53 -1D241;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-54 -1D242;CM # COMBINING GREEK MUSICAL TRISEME -1D243;CM # COMBINING GREEK MUSICAL TETRASEME -1D244;CM # COMBINING GREEK MUSICAL PENTASEME -1D245;AL # GREEK MUSICAL LEIMMA -1D300;AL # MONOGRAM FOR EARTH -1D301;AL # DIGRAM FOR HEAVENLY EARTH -1D302;AL # DIGRAM FOR HUMAN EARTH -1D303;AL # DIGRAM FOR EARTHLY HEAVEN -1D304;AL # DIGRAM FOR EARTHLY HUMAN -1D305;AL # DIGRAM FOR EARTH -1D306;AL # TETRAGRAM FOR CENTRE -1D307;AL # TETRAGRAM FOR FULL CIRCLE -1D308;AL # TETRAGRAM FOR MIRED -1D309;AL # TETRAGRAM FOR BARRIER -1D30A;AL # TETRAGRAM FOR KEEPING SMALL -1D30B;AL # TETRAGRAM FOR CONTRARIETY -1D30C;AL # TETRAGRAM FOR ASCENT -1D30D;AL # TETRAGRAM FOR OPPOSITION -1D30E;AL # TETRAGRAM FOR BRANCHING OUT -1D30F;AL # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION -1D310;AL # TETRAGRAM FOR DIVERGENCE -1D311;AL # TETRAGRAM FOR YOUTHFULNESS -1D312;AL # TETRAGRAM FOR INCREASE -1D313;AL # TETRAGRAM FOR PENETRATION -1D314;AL # TETRAGRAM FOR REACH -1D315;AL # TETRAGRAM FOR CONTACT -1D316;AL # TETRAGRAM FOR HOLDING BACK -1D317;AL # TETRAGRAM FOR WAITING -1D318;AL # TETRAGRAM FOR FOLLOWING -1D319;AL # TETRAGRAM FOR ADVANCE -1D31A;AL # TETRAGRAM FOR RELEASE -1D31B;AL # TETRAGRAM FOR RESISTANCE -1D31C;AL # TETRAGRAM FOR EASE -1D31D;AL # TETRAGRAM FOR JOY -1D31E;AL # TETRAGRAM FOR CONTENTION -1D31F;AL # TETRAGRAM FOR ENDEAVOUR -1D320;AL # TETRAGRAM FOR DUTIES -1D321;AL # TETRAGRAM FOR CHANGE -1D322;AL # TETRAGRAM FOR DECISIVENESS -1D323;AL # TETRAGRAM FOR BOLD RESOLUTION -1D324;AL # TETRAGRAM FOR PACKING -1D325;AL # TETRAGRAM FOR LEGION -1D326;AL # TETRAGRAM FOR CLOSENESS -1D327;AL # TETRAGRAM FOR KINSHIP -1D328;AL # TETRAGRAM FOR GATHERING -1D329;AL # TETRAGRAM FOR STRENGTH -1D32A;AL # TETRAGRAM FOR PURITY -1D32B;AL # TETRAGRAM FOR FULLNESS -1D32C;AL # TETRAGRAM FOR RESIDENCE -1D32D;AL # TETRAGRAM FOR LAW OR MODEL -1D32E;AL # TETRAGRAM FOR RESPONSE -1D32F;AL # TETRAGRAM FOR GOING TO MEET -1D330;AL # TETRAGRAM FOR ENCOUNTERS -1D331;AL # TETRAGRAM FOR STOVE -1D332;AL # TETRAGRAM FOR GREATNESS -1D333;AL # TETRAGRAM FOR ENLARGEMENT -1D334;AL # TETRAGRAM FOR PATTERN -1D335;AL # TETRAGRAM FOR RITUAL -1D336;AL # TETRAGRAM FOR FLIGHT -1D337;AL # TETRAGRAM FOR VASTNESS OR WASTING -1D338;AL # TETRAGRAM FOR CONSTANCY -1D339;AL # TETRAGRAM FOR MEASURE -1D33A;AL # TETRAGRAM FOR ETERNITY -1D33B;AL # TETRAGRAM FOR UNITY -1D33C;AL # TETRAGRAM FOR DIMINISHMENT -1D33D;AL # TETRAGRAM FOR CLOSED MOUTH -1D33E;AL # TETRAGRAM FOR GUARDEDNESS -1D33F;AL # TETRAGRAM FOR GATHERING IN -1D340;AL # TETRAGRAM FOR MASSING -1D341;AL # TETRAGRAM FOR ACCUMULATION -1D342;AL # TETRAGRAM FOR EMBELLISHMENT -1D343;AL # TETRAGRAM FOR DOUBT -1D344;AL # TETRAGRAM FOR WATCH -1D345;AL # TETRAGRAM FOR SINKING -1D346;AL # TETRAGRAM FOR INNER -1D347;AL # TETRAGRAM FOR DEPARTURE -1D348;AL # TETRAGRAM FOR DARKENING -1D349;AL # TETRAGRAM FOR DIMMING -1D34A;AL # TETRAGRAM FOR EXHAUSTION -1D34B;AL # TETRAGRAM FOR SEVERANCE -1D34C;AL # TETRAGRAM FOR STOPPAGE -1D34D;AL # TETRAGRAM FOR HARDNESS -1D34E;AL # TETRAGRAM FOR COMPLETION -1D34F;AL # TETRAGRAM FOR CLOSURE -1D350;AL # TETRAGRAM FOR FAILURE -1D351;AL # TETRAGRAM FOR AGGRAVATION -1D352;AL # TETRAGRAM FOR COMPLIANCE -1D353;AL # TETRAGRAM FOR ON THE VERGE -1D354;AL # TETRAGRAM FOR DIFFICULTIES -1D355;AL # TETRAGRAM FOR LABOURING -1D356;AL # TETRAGRAM FOR FOSTERING -1D360;AL # COUNTING ROD UNIT DIGIT ONE -1D361;AL # COUNTING ROD UNIT DIGIT TWO -1D362;AL # COUNTING ROD UNIT DIGIT THREE -1D363;AL # COUNTING ROD UNIT DIGIT FOUR -1D364;AL # COUNTING ROD UNIT DIGIT FIVE -1D365;AL # COUNTING ROD UNIT DIGIT SIX -1D366;AL # COUNTING ROD UNIT DIGIT SEVEN -1D367;AL # COUNTING ROD UNIT DIGIT EIGHT -1D368;AL # COUNTING ROD UNIT DIGIT NINE -1D369;AL # COUNTING ROD TENS DIGIT ONE -1D36A;AL # COUNTING ROD TENS DIGIT TWO -1D36B;AL # COUNTING ROD TENS DIGIT THREE -1D36C;AL # COUNTING ROD TENS DIGIT FOUR -1D36D;AL # COUNTING ROD TENS DIGIT FIVE -1D36E;AL # COUNTING ROD TENS DIGIT SIX -1D36F;AL # COUNTING ROD TENS DIGIT SEVEN -1D370;AL # COUNTING ROD TENS DIGIT EIGHT -1D371;AL # COUNTING ROD TENS DIGIT NINE -1D400;AL # MATHEMATICAL BOLD CAPITAL A -1D401;AL # MATHEMATICAL BOLD CAPITAL B -1D402;AL # MATHEMATICAL BOLD CAPITAL C -1D403;AL # MATHEMATICAL BOLD CAPITAL D -1D404;AL # MATHEMATICAL BOLD CAPITAL E -1D405;AL # MATHEMATICAL BOLD CAPITAL F -1D406;AL # MATHEMATICAL BOLD CAPITAL G -1D407;AL # MATHEMATICAL BOLD CAPITAL H -1D408;AL # MATHEMATICAL BOLD CAPITAL I -1D409;AL # MATHEMATICAL BOLD CAPITAL J -1D40A;AL # MATHEMATICAL BOLD CAPITAL K -1D40B;AL # MATHEMATICAL BOLD CAPITAL L -1D40C;AL # MATHEMATICAL BOLD CAPITAL M -1D40D;AL # MATHEMATICAL BOLD CAPITAL N -1D40E;AL # MATHEMATICAL BOLD CAPITAL O -1D40F;AL # MATHEMATICAL BOLD CAPITAL P -1D410;AL # MATHEMATICAL BOLD CAPITAL Q -1D411;AL # MATHEMATICAL BOLD CAPITAL R -1D412;AL # MATHEMATICAL BOLD CAPITAL S -1D413;AL # MATHEMATICAL BOLD CAPITAL T -1D414;AL # MATHEMATICAL BOLD CAPITAL U -1D415;AL # MATHEMATICAL BOLD CAPITAL V -1D416;AL # MATHEMATICAL BOLD CAPITAL W -1D417;AL # MATHEMATICAL BOLD CAPITAL X -1D418;AL # MATHEMATICAL BOLD CAPITAL Y -1D419;AL # MATHEMATICAL BOLD CAPITAL Z -1D41A;AL # MATHEMATICAL BOLD SMALL A -1D41B;AL # MATHEMATICAL BOLD SMALL B -1D41C;AL # MATHEMATICAL BOLD SMALL C -1D41D;AL # MATHEMATICAL BOLD SMALL D -1D41E;AL # MATHEMATICAL BOLD SMALL E -1D41F;AL # MATHEMATICAL BOLD SMALL F -1D420;AL # MATHEMATICAL BOLD SMALL G -1D421;AL # MATHEMATICAL BOLD SMALL H -1D422;AL # MATHEMATICAL BOLD SMALL I -1D423;AL # MATHEMATICAL BOLD SMALL J -1D424;AL # MATHEMATICAL BOLD SMALL K -1D425;AL # MATHEMATICAL BOLD SMALL L -1D426;AL # MATHEMATICAL BOLD SMALL M -1D427;AL # MATHEMATICAL BOLD SMALL N -1D428;AL # MATHEMATICAL BOLD SMALL O -1D429;AL # MATHEMATICAL BOLD SMALL P -1D42A;AL # MATHEMATICAL BOLD SMALL Q -1D42B;AL # MATHEMATICAL BOLD SMALL R -1D42C;AL # MATHEMATICAL BOLD SMALL S -1D42D;AL # MATHEMATICAL BOLD SMALL T -1D42E;AL # MATHEMATICAL BOLD SMALL U -1D42F;AL # MATHEMATICAL BOLD SMALL V -1D430;AL # MATHEMATICAL BOLD SMALL W -1D431;AL # MATHEMATICAL BOLD SMALL X -1D432;AL # MATHEMATICAL BOLD SMALL Y -1D433;AL # MATHEMATICAL BOLD SMALL Z -1D434;AL # MATHEMATICAL ITALIC CAPITAL A -1D435;AL # MATHEMATICAL ITALIC CAPITAL B -1D436;AL # MATHEMATICAL ITALIC CAPITAL C -1D437;AL # MATHEMATICAL ITALIC CAPITAL D -1D438;AL # MATHEMATICAL ITALIC CAPITAL E -1D439;AL # MATHEMATICAL ITALIC CAPITAL F -1D43A;AL # MATHEMATICAL ITALIC CAPITAL G -1D43B;AL # MATHEMATICAL ITALIC CAPITAL H -1D43C;AL # MATHEMATICAL ITALIC CAPITAL I -1D43D;AL # MATHEMATICAL ITALIC CAPITAL J -1D43E;AL # MATHEMATICAL ITALIC CAPITAL K -1D43F;AL # MATHEMATICAL ITALIC CAPITAL L -1D440;AL # MATHEMATICAL ITALIC CAPITAL M -1D441;AL # MATHEMATICAL ITALIC CAPITAL N -1D442;AL # MATHEMATICAL ITALIC CAPITAL O -1D443;AL # MATHEMATICAL ITALIC CAPITAL P -1D444;AL # MATHEMATICAL ITALIC CAPITAL Q -1D445;AL # MATHEMATICAL ITALIC CAPITAL R -1D446;AL # MATHEMATICAL ITALIC CAPITAL S -1D447;AL # MATHEMATICAL ITALIC CAPITAL T -1D448;AL # MATHEMATICAL ITALIC CAPITAL U -1D449;AL # MATHEMATICAL ITALIC CAPITAL V -1D44A;AL # MATHEMATICAL ITALIC CAPITAL W -1D44B;AL # MATHEMATICAL ITALIC CAPITAL X -1D44C;AL # MATHEMATICAL ITALIC CAPITAL Y -1D44D;AL # MATHEMATICAL ITALIC CAPITAL Z -1D44E;AL # MATHEMATICAL ITALIC SMALL A -1D44F;AL # MATHEMATICAL ITALIC SMALL B -1D450;AL # MATHEMATICAL ITALIC SMALL C -1D451;AL # MATHEMATICAL ITALIC SMALL D -1D452;AL # MATHEMATICAL ITALIC SMALL E -1D453;AL # MATHEMATICAL ITALIC SMALL F -1D454;AL # MATHEMATICAL ITALIC SMALL G -1D456;AL # MATHEMATICAL ITALIC SMALL I -1D457;AL # MATHEMATICAL ITALIC SMALL J -1D458;AL # MATHEMATICAL ITALIC SMALL K -1D459;AL # MATHEMATICAL ITALIC SMALL L -1D45A;AL # MATHEMATICAL ITALIC SMALL M -1D45B;AL # MATHEMATICAL ITALIC SMALL N -1D45C;AL # MATHEMATICAL ITALIC SMALL O -1D45D;AL # MATHEMATICAL ITALIC SMALL P -1D45E;AL # MATHEMATICAL ITALIC SMALL Q -1D45F;AL # MATHEMATICAL ITALIC SMALL R -1D460;AL # MATHEMATICAL ITALIC SMALL S -1D461;AL # MATHEMATICAL ITALIC SMALL T -1D462;AL # MATHEMATICAL ITALIC SMALL U -1D463;AL # MATHEMATICAL ITALIC SMALL V -1D464;AL # MATHEMATICAL ITALIC SMALL W -1D465;AL # MATHEMATICAL ITALIC SMALL X -1D466;AL # MATHEMATICAL ITALIC SMALL Y -1D467;AL # MATHEMATICAL ITALIC SMALL Z -1D468;AL # MATHEMATICAL BOLD ITALIC CAPITAL A -1D469;AL # MATHEMATICAL BOLD ITALIC CAPITAL B -1D46A;AL # MATHEMATICAL BOLD ITALIC CAPITAL C -1D46B;AL # MATHEMATICAL BOLD ITALIC CAPITAL D -1D46C;AL # MATHEMATICAL BOLD ITALIC CAPITAL E -1D46D;AL # MATHEMATICAL BOLD ITALIC CAPITAL F -1D46E;AL # MATHEMATICAL BOLD ITALIC CAPITAL G -1D46F;AL # MATHEMATICAL BOLD ITALIC CAPITAL H -1D470;AL # MATHEMATICAL BOLD ITALIC CAPITAL I -1D471;AL # MATHEMATICAL BOLD ITALIC CAPITAL J -1D472;AL # MATHEMATICAL BOLD ITALIC CAPITAL K -1D473;AL # MATHEMATICAL BOLD ITALIC CAPITAL L -1D474;AL # MATHEMATICAL BOLD ITALIC CAPITAL M -1D475;AL # MATHEMATICAL BOLD ITALIC CAPITAL N -1D476;AL # MATHEMATICAL BOLD ITALIC CAPITAL O -1D477;AL # MATHEMATICAL BOLD ITALIC CAPITAL P -1D478;AL # MATHEMATICAL BOLD ITALIC CAPITAL Q -1D479;AL # MATHEMATICAL BOLD ITALIC CAPITAL R -1D47A;AL # MATHEMATICAL BOLD ITALIC CAPITAL S -1D47B;AL # MATHEMATICAL BOLD ITALIC CAPITAL T -1D47C;AL # MATHEMATICAL BOLD ITALIC CAPITAL U -1D47D;AL # MATHEMATICAL BOLD ITALIC CAPITAL V -1D47E;AL # MATHEMATICAL BOLD ITALIC CAPITAL W -1D47F;AL # MATHEMATICAL BOLD ITALIC CAPITAL X -1D480;AL # MATHEMATICAL BOLD ITALIC CAPITAL Y -1D481;AL # MATHEMATICAL BOLD ITALIC CAPITAL Z -1D482;AL # MATHEMATICAL BOLD ITALIC SMALL A -1D483;AL # MATHEMATICAL BOLD ITALIC SMALL B -1D484;AL # MATHEMATICAL BOLD ITALIC SMALL C -1D485;AL # MATHEMATICAL BOLD ITALIC SMALL D -1D486;AL # MATHEMATICAL BOLD ITALIC SMALL E -1D487;AL # MATHEMATICAL BOLD ITALIC SMALL F -1D488;AL # MATHEMATICAL BOLD ITALIC SMALL G -1D489;AL # MATHEMATICAL BOLD ITALIC SMALL H -1D48A;AL # MATHEMATICAL BOLD ITALIC SMALL I -1D48B;AL # MATHEMATICAL BOLD ITALIC SMALL J -1D48C;AL # MATHEMATICAL BOLD ITALIC SMALL K -1D48D;AL # MATHEMATICAL BOLD ITALIC SMALL L -1D48E;AL # MATHEMATICAL BOLD ITALIC SMALL M -1D48F;AL # MATHEMATICAL BOLD ITALIC SMALL N -1D490;AL # MATHEMATICAL BOLD ITALIC SMALL O -1D491;AL # MATHEMATICAL BOLD ITALIC SMALL P -1D492;AL # MATHEMATICAL BOLD ITALIC SMALL Q -1D493;AL # MATHEMATICAL BOLD ITALIC SMALL R -1D494;AL # MATHEMATICAL BOLD ITALIC SMALL S -1D495;AL # MATHEMATICAL BOLD ITALIC SMALL T -1D496;AL # MATHEMATICAL BOLD ITALIC SMALL U -1D497;AL # MATHEMATICAL BOLD ITALIC SMALL V -1D498;AL # MATHEMATICAL BOLD ITALIC SMALL W -1D499;AL # MATHEMATICAL BOLD ITALIC SMALL X -1D49A;AL # MATHEMATICAL BOLD ITALIC SMALL Y -1D49B;AL # MATHEMATICAL BOLD ITALIC SMALL Z -1D49C;AL # MATHEMATICAL SCRIPT CAPITAL A -1D49E;AL # MATHEMATICAL SCRIPT CAPITAL C -1D49F;AL # MATHEMATICAL SCRIPT CAPITAL D -1D4A2;AL # MATHEMATICAL SCRIPT CAPITAL G -1D4A5;AL # MATHEMATICAL SCRIPT CAPITAL J -1D4A6;AL # MATHEMATICAL SCRIPT CAPITAL K -1D4A9;AL # MATHEMATICAL SCRIPT CAPITAL N -1D4AA;AL # MATHEMATICAL SCRIPT CAPITAL O -1D4AB;AL # MATHEMATICAL SCRIPT CAPITAL P -1D4AC;AL # MATHEMATICAL SCRIPT CAPITAL Q -1D4AE;AL # MATHEMATICAL SCRIPT CAPITAL S -1D4AF;AL # MATHEMATICAL SCRIPT CAPITAL T -1D4B0;AL # MATHEMATICAL SCRIPT CAPITAL U -1D4B1;AL # MATHEMATICAL SCRIPT CAPITAL V -1D4B2;AL # MATHEMATICAL SCRIPT CAPITAL W -1D4B3;AL # MATHEMATICAL SCRIPT CAPITAL X -1D4B4;AL # MATHEMATICAL SCRIPT CAPITAL Y -1D4B5;AL # MATHEMATICAL SCRIPT CAPITAL Z -1D4B6;AL # MATHEMATICAL SCRIPT SMALL A -1D4B7;AL # MATHEMATICAL SCRIPT SMALL B -1D4B8;AL # MATHEMATICAL SCRIPT SMALL C -1D4B9;AL # MATHEMATICAL SCRIPT SMALL D -1D4BB;AL # MATHEMATICAL SCRIPT SMALL F -1D4BD;AL # MATHEMATICAL SCRIPT SMALL H -1D4BE;AL # MATHEMATICAL SCRIPT SMALL I -1D4BF;AL # MATHEMATICAL SCRIPT SMALL J -1D4C0;AL # MATHEMATICAL SCRIPT SMALL K -1D4C1;AL # MATHEMATICAL SCRIPT SMALL L -1D4C2;AL # MATHEMATICAL SCRIPT SMALL M -1D4C3;AL # MATHEMATICAL SCRIPT SMALL N -1D4C5;AL # MATHEMATICAL SCRIPT SMALL P -1D4C6;AL # MATHEMATICAL SCRIPT SMALL Q -1D4C7;AL # MATHEMATICAL SCRIPT SMALL R -1D4C8;AL # MATHEMATICAL SCRIPT SMALL S -1D4C9;AL # MATHEMATICAL SCRIPT SMALL T -1D4CA;AL # MATHEMATICAL SCRIPT SMALL U -1D4CB;AL # MATHEMATICAL SCRIPT SMALL V -1D4CC;AL # MATHEMATICAL SCRIPT SMALL W -1D4CD;AL # MATHEMATICAL SCRIPT SMALL X -1D4CE;AL # MATHEMATICAL SCRIPT SMALL Y -1D4CF;AL # MATHEMATICAL SCRIPT SMALL Z -1D4D0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL A -1D4D1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL B -1D4D2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL C -1D4D3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL D -1D4D4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL E -1D4D5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL F -1D4D6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL G -1D4D7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL H -1D4D8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL I -1D4D9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL J -1D4DA;AL # MATHEMATICAL BOLD SCRIPT CAPITAL K -1D4DB;AL # MATHEMATICAL BOLD SCRIPT CAPITAL L -1D4DC;AL # MATHEMATICAL BOLD SCRIPT CAPITAL M -1D4DD;AL # MATHEMATICAL BOLD SCRIPT CAPITAL N -1D4DE;AL # MATHEMATICAL BOLD SCRIPT CAPITAL O -1D4DF;AL # MATHEMATICAL BOLD SCRIPT CAPITAL P -1D4E0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Q -1D4E1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL R -1D4E2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL S -1D4E3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL T -1D4E4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL U -1D4E5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL V -1D4E6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL W -1D4E7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL X -1D4E8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Y -1D4E9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Z -1D4EA;AL # MATHEMATICAL BOLD SCRIPT SMALL A -1D4EB;AL # MATHEMATICAL BOLD SCRIPT SMALL B -1D4EC;AL # MATHEMATICAL BOLD SCRIPT SMALL C -1D4ED;AL # MATHEMATICAL BOLD SCRIPT SMALL D -1D4EE;AL # MATHEMATICAL BOLD SCRIPT SMALL E -1D4EF;AL # MATHEMATICAL BOLD SCRIPT SMALL F -1D4F0;AL # MATHEMATICAL BOLD SCRIPT SMALL G -1D4F1;AL # MATHEMATICAL BOLD SCRIPT SMALL H -1D4F2;AL # MATHEMATICAL BOLD SCRIPT SMALL I -1D4F3;AL # MATHEMATICAL BOLD SCRIPT SMALL J -1D4F4;AL # MATHEMATICAL BOLD SCRIPT SMALL K -1D4F5;AL # MATHEMATICAL BOLD SCRIPT SMALL L -1D4F6;AL # MATHEMATICAL BOLD SCRIPT SMALL M -1D4F7;AL # MATHEMATICAL BOLD SCRIPT SMALL N -1D4F8;AL # MATHEMATICAL BOLD SCRIPT SMALL O -1D4F9;AL # MATHEMATICAL BOLD SCRIPT SMALL P -1D4FA;AL # MATHEMATICAL BOLD SCRIPT SMALL Q -1D4FB;AL # MATHEMATICAL BOLD SCRIPT SMALL R -1D4FC;AL # MATHEMATICAL BOLD SCRIPT SMALL S -1D4FD;AL # MATHEMATICAL BOLD SCRIPT SMALL T -1D4FE;AL # MATHEMATICAL BOLD SCRIPT SMALL U -1D4FF;AL # MATHEMATICAL BOLD SCRIPT SMALL V -1D500;AL # MATHEMATICAL BOLD SCRIPT SMALL W -1D501;AL # MATHEMATICAL BOLD SCRIPT SMALL X -1D502;AL # MATHEMATICAL BOLD SCRIPT SMALL Y -1D503;AL # MATHEMATICAL BOLD SCRIPT SMALL Z -1D504;AL # MATHEMATICAL FRAKTUR CAPITAL A -1D505;AL # MATHEMATICAL FRAKTUR CAPITAL B -1D507;AL # MATHEMATICAL FRAKTUR CAPITAL D -1D508;AL # MATHEMATICAL FRAKTUR CAPITAL E -1D509;AL # MATHEMATICAL FRAKTUR CAPITAL F -1D50A;AL # MATHEMATICAL FRAKTUR CAPITAL G -1D50D;AL # MATHEMATICAL FRAKTUR CAPITAL J -1D50E;AL # MATHEMATICAL FRAKTUR CAPITAL K -1D50F;AL # MATHEMATICAL FRAKTUR CAPITAL L -1D510;AL # MATHEMATICAL FRAKTUR CAPITAL M -1D511;AL # MATHEMATICAL FRAKTUR CAPITAL N -1D512;AL # MATHEMATICAL FRAKTUR CAPITAL O -1D513;AL # MATHEMATICAL FRAKTUR CAPITAL P -1D514;AL # MATHEMATICAL FRAKTUR CAPITAL Q -1D516;AL # MATHEMATICAL FRAKTUR CAPITAL S -1D517;AL # MATHEMATICAL FRAKTUR CAPITAL T -1D518;AL # MATHEMATICAL FRAKTUR CAPITAL U -1D519;AL # MATHEMATICAL FRAKTUR CAPITAL V -1D51A;AL # MATHEMATICAL FRAKTUR CAPITAL W -1D51B;AL # MATHEMATICAL FRAKTUR CAPITAL X -1D51C;AL # MATHEMATICAL FRAKTUR CAPITAL Y -1D51E;AL # MATHEMATICAL FRAKTUR SMALL A -1D51F;AL # MATHEMATICAL FRAKTUR SMALL B -1D520;AL # MATHEMATICAL FRAKTUR SMALL C -1D521;AL # MATHEMATICAL FRAKTUR SMALL D -1D522;AL # MATHEMATICAL FRAKTUR SMALL E -1D523;AL # MATHEMATICAL FRAKTUR SMALL F -1D524;AL # MATHEMATICAL FRAKTUR SMALL G -1D525;AL # MATHEMATICAL FRAKTUR SMALL H -1D526;AL # MATHEMATICAL FRAKTUR SMALL I -1D527;AL # MATHEMATICAL FRAKTUR SMALL J -1D528;AL # MATHEMATICAL FRAKTUR SMALL K -1D529;AL # MATHEMATICAL FRAKTUR SMALL L -1D52A;AL # MATHEMATICAL FRAKTUR SMALL M -1D52B;AL # MATHEMATICAL FRAKTUR SMALL N -1D52C;AL # MATHEMATICAL FRAKTUR SMALL O -1D52D;AL # MATHEMATICAL FRAKTUR SMALL P -1D52E;AL # MATHEMATICAL FRAKTUR SMALL Q -1D52F;AL # MATHEMATICAL FRAKTUR SMALL R -1D530;AL # MATHEMATICAL FRAKTUR SMALL S -1D531;AL # MATHEMATICAL FRAKTUR SMALL T -1D532;AL # MATHEMATICAL FRAKTUR SMALL U -1D533;AL # MATHEMATICAL FRAKTUR SMALL V -1D534;AL # MATHEMATICAL FRAKTUR SMALL W -1D535;AL # MATHEMATICAL FRAKTUR SMALL X -1D536;AL # MATHEMATICAL FRAKTUR SMALL Y -1D537;AL # MATHEMATICAL FRAKTUR SMALL Z -1D538;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL A -1D539;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D53B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL D -1D53C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL E -1D53D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL F -1D53E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D540;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL I -1D541;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL J -1D542;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL K -1D543;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL L -1D544;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D546;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D54A;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL S -1D54B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL T -1D54C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL U -1D54D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL V -1D54E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL W -1D54F;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL X -1D550;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D552;AL # MATHEMATICAL DOUBLE-STRUCK SMALL A -1D553;AL # MATHEMATICAL DOUBLE-STRUCK SMALL B -1D554;AL # MATHEMATICAL DOUBLE-STRUCK SMALL C -1D555;AL # MATHEMATICAL DOUBLE-STRUCK SMALL D -1D556;AL # MATHEMATICAL DOUBLE-STRUCK SMALL E -1D557;AL # MATHEMATICAL DOUBLE-STRUCK SMALL F -1D558;AL # MATHEMATICAL DOUBLE-STRUCK SMALL G -1D559;AL # MATHEMATICAL DOUBLE-STRUCK SMALL H -1D55A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL I -1D55B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL J -1D55C;AL # MATHEMATICAL DOUBLE-STRUCK SMALL K -1D55D;AL # MATHEMATICAL DOUBLE-STRUCK SMALL L -1D55E;AL # MATHEMATICAL DOUBLE-STRUCK SMALL M -1D55F;AL # MATHEMATICAL DOUBLE-STRUCK SMALL N -1D560;AL # MATHEMATICAL DOUBLE-STRUCK SMALL O -1D561;AL # MATHEMATICAL DOUBLE-STRUCK SMALL P -1D562;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Q -1D563;AL # MATHEMATICAL DOUBLE-STRUCK SMALL R -1D564;AL # MATHEMATICAL DOUBLE-STRUCK SMALL S -1D565;AL # MATHEMATICAL DOUBLE-STRUCK SMALL T -1D566;AL # MATHEMATICAL DOUBLE-STRUCK SMALL U -1D567;AL # MATHEMATICAL DOUBLE-STRUCK SMALL V -1D568;AL # MATHEMATICAL DOUBLE-STRUCK SMALL W -1D569;AL # MATHEMATICAL DOUBLE-STRUCK SMALL X -1D56A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Y -1D56B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Z -1D56C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL A -1D56D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL B -1D56E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL C -1D56F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL D -1D570;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL E -1D571;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL F -1D572;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL G -1D573;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL H -1D574;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL I -1D575;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL J -1D576;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL K -1D577;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL L -1D578;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL M -1D579;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL N -1D57A;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL O -1D57B;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL P -1D57C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Q -1D57D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL R -1D57E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL S -1D57F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL T -1D580;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL U -1D581;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL V -1D582;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL W -1D583;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL X -1D584;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Y -1D585;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Z -1D586;AL # MATHEMATICAL BOLD FRAKTUR SMALL A -1D587;AL # MATHEMATICAL BOLD FRAKTUR SMALL B -1D588;AL # MATHEMATICAL BOLD FRAKTUR SMALL C -1D589;AL # MATHEMATICAL BOLD FRAKTUR SMALL D -1D58A;AL # MATHEMATICAL BOLD FRAKTUR SMALL E -1D58B;AL # MATHEMATICAL BOLD FRAKTUR SMALL F -1D58C;AL # MATHEMATICAL BOLD FRAKTUR SMALL G -1D58D;AL # MATHEMATICAL BOLD FRAKTUR SMALL H -1D58E;AL # MATHEMATICAL BOLD FRAKTUR SMALL I -1D58F;AL # MATHEMATICAL BOLD FRAKTUR SMALL J -1D590;AL # MATHEMATICAL BOLD FRAKTUR SMALL K -1D591;AL # MATHEMATICAL BOLD FRAKTUR SMALL L -1D592;AL # MATHEMATICAL BOLD FRAKTUR SMALL M -1D593;AL # MATHEMATICAL BOLD FRAKTUR SMALL N -1D594;AL # MATHEMATICAL BOLD FRAKTUR SMALL O -1D595;AL # MATHEMATICAL BOLD FRAKTUR SMALL P -1D596;AL # MATHEMATICAL BOLD FRAKTUR SMALL Q -1D597;AL # MATHEMATICAL BOLD FRAKTUR SMALL R -1D598;AL # MATHEMATICAL BOLD FRAKTUR SMALL S -1D599;AL # MATHEMATICAL BOLD FRAKTUR SMALL T -1D59A;AL # MATHEMATICAL BOLD FRAKTUR SMALL U -1D59B;AL # MATHEMATICAL BOLD FRAKTUR SMALL V -1D59C;AL # MATHEMATICAL BOLD FRAKTUR SMALL W -1D59D;AL # MATHEMATICAL BOLD FRAKTUR SMALL X -1D59E;AL # MATHEMATICAL BOLD FRAKTUR SMALL Y -1D59F;AL # MATHEMATICAL BOLD FRAKTUR SMALL Z -1D5A0;AL # MATHEMATICAL SANS-SERIF CAPITAL A -1D5A1;AL # MATHEMATICAL SANS-SERIF CAPITAL B -1D5A2;AL # MATHEMATICAL SANS-SERIF CAPITAL C -1D5A3;AL # MATHEMATICAL SANS-SERIF CAPITAL D -1D5A4;AL # MATHEMATICAL SANS-SERIF CAPITAL E -1D5A5;AL # MATHEMATICAL SANS-SERIF CAPITAL F -1D5A6;AL # MATHEMATICAL SANS-SERIF CAPITAL G -1D5A7;AL # MATHEMATICAL SANS-SERIF CAPITAL H -1D5A8;AL # MATHEMATICAL SANS-SERIF CAPITAL I -1D5A9;AL # MATHEMATICAL SANS-SERIF CAPITAL J -1D5AA;AL # MATHEMATICAL SANS-SERIF CAPITAL K -1D5AB;AL # MATHEMATICAL SANS-SERIF CAPITAL L -1D5AC;AL # MATHEMATICAL SANS-SERIF CAPITAL M -1D5AD;AL # MATHEMATICAL SANS-SERIF CAPITAL N -1D5AE;AL # MATHEMATICAL SANS-SERIF CAPITAL O -1D5AF;AL # MATHEMATICAL SANS-SERIF CAPITAL P -1D5B0;AL # MATHEMATICAL SANS-SERIF CAPITAL Q -1D5B1;AL # MATHEMATICAL SANS-SERIF CAPITAL R -1D5B2;AL # MATHEMATICAL SANS-SERIF CAPITAL S -1D5B3;AL # MATHEMATICAL SANS-SERIF CAPITAL T -1D5B4;AL # MATHEMATICAL SANS-SERIF CAPITAL U -1D5B5;AL # MATHEMATICAL SANS-SERIF CAPITAL V -1D5B6;AL # MATHEMATICAL SANS-SERIF CAPITAL W -1D5B7;AL # MATHEMATICAL SANS-SERIF CAPITAL X -1D5B8;AL # MATHEMATICAL SANS-SERIF CAPITAL Y -1D5B9;AL # MATHEMATICAL SANS-SERIF CAPITAL Z -1D5BA;AL # MATHEMATICAL SANS-SERIF SMALL A -1D5BB;AL # MATHEMATICAL SANS-SERIF SMALL B -1D5BC;AL # MATHEMATICAL SANS-SERIF SMALL C -1D5BD;AL # MATHEMATICAL SANS-SERIF SMALL D -1D5BE;AL # MATHEMATICAL SANS-SERIF SMALL E -1D5BF;AL # MATHEMATICAL SANS-SERIF SMALL F -1D5C0;AL # MATHEMATICAL SANS-SERIF SMALL G -1D5C1;AL # MATHEMATICAL SANS-SERIF SMALL H -1D5C2;AL # MATHEMATICAL SANS-SERIF SMALL I -1D5C3;AL # MATHEMATICAL SANS-SERIF SMALL J -1D5C4;AL # MATHEMATICAL SANS-SERIF SMALL K -1D5C5;AL # MATHEMATICAL SANS-SERIF SMALL L -1D5C6;AL # MATHEMATICAL SANS-SERIF SMALL M -1D5C7;AL # MATHEMATICAL SANS-SERIF SMALL N -1D5C8;AL # MATHEMATICAL SANS-SERIF SMALL O -1D5C9;AL # MATHEMATICAL SANS-SERIF SMALL P -1D5CA;AL # MATHEMATICAL SANS-SERIF SMALL Q -1D5CB;AL # MATHEMATICAL SANS-SERIF SMALL R -1D5CC;AL # MATHEMATICAL SANS-SERIF SMALL S -1D5CD;AL # MATHEMATICAL SANS-SERIF SMALL T -1D5CE;AL # MATHEMATICAL SANS-SERIF SMALL U -1D5CF;AL # MATHEMATICAL SANS-SERIF SMALL V -1D5D0;AL # MATHEMATICAL SANS-SERIF SMALL W -1D5D1;AL # MATHEMATICAL SANS-SERIF SMALL X -1D5D2;AL # MATHEMATICAL SANS-SERIF SMALL Y -1D5D3;AL # MATHEMATICAL SANS-SERIF SMALL Z -1D5D4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL A -1D5D5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL B -1D5D6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL C -1D5D7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL D -1D5D8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL E -1D5D9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL F -1D5DA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL G -1D5DB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL H -1D5DC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL I -1D5DD;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL J -1D5DE;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL K -1D5DF;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL L -1D5E0;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL M -1D5E1;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL N -1D5E2;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL O -1D5E3;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL P -1D5E4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q -1D5E5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL R -1D5E6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL S -1D5E7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL T -1D5E8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL U -1D5E9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL V -1D5EA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL W -1D5EB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL X -1D5EC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y -1D5ED;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z -1D5EE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL A -1D5EF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL B -1D5F0;AL # MATHEMATICAL SANS-SERIF BOLD SMALL C -1D5F1;AL # MATHEMATICAL SANS-SERIF BOLD SMALL D -1D5F2;AL # MATHEMATICAL SANS-SERIF BOLD SMALL E -1D5F3;AL # MATHEMATICAL SANS-SERIF BOLD SMALL F -1D5F4;AL # MATHEMATICAL SANS-SERIF BOLD SMALL G -1D5F5;AL # MATHEMATICAL SANS-SERIF BOLD SMALL H -1D5F6;AL # MATHEMATICAL SANS-SERIF BOLD SMALL I -1D5F7;AL # MATHEMATICAL SANS-SERIF BOLD SMALL J -1D5F8;AL # MATHEMATICAL SANS-SERIF BOLD SMALL K -1D5F9;AL # MATHEMATICAL SANS-SERIF BOLD SMALL L -1D5FA;AL # MATHEMATICAL SANS-SERIF BOLD SMALL M -1D5FB;AL # MATHEMATICAL SANS-SERIF BOLD SMALL N -1D5FC;AL # MATHEMATICAL SANS-SERIF BOLD SMALL O -1D5FD;AL # MATHEMATICAL SANS-SERIF BOLD SMALL P -1D5FE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Q -1D5FF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL R -1D600;AL # MATHEMATICAL SANS-SERIF BOLD SMALL S -1D601;AL # MATHEMATICAL SANS-SERIF BOLD SMALL T -1D602;AL # MATHEMATICAL SANS-SERIF BOLD SMALL U -1D603;AL # MATHEMATICAL SANS-SERIF BOLD SMALL V -1D604;AL # MATHEMATICAL SANS-SERIF BOLD SMALL W -1D605;AL # MATHEMATICAL SANS-SERIF BOLD SMALL X -1D606;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Y -1D607;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Z -1D608;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A -1D609;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B -1D60A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C -1D60B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D -1D60C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E -1D60D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F -1D60E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G -1D60F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H -1D610;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I -1D611;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J -1D612;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K -1D613;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L -1D614;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M -1D615;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N -1D616;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O -1D617;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P -1D618;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q -1D619;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R -1D61A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S -1D61B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T -1D61C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U -1D61D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V -1D61E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W -1D61F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X -1D620;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y -1D621;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z -1D622;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL A -1D623;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL B -1D624;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL C -1D625;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL D -1D626;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL E -1D627;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL F -1D628;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL G -1D629;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL H -1D62A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL I -1D62B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL J -1D62C;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL K -1D62D;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL L -1D62E;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL M -1D62F;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL N -1D630;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL O -1D631;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL P -1D632;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Q -1D633;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL R -1D634;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL S -1D635;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL T -1D636;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL U -1D637;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL V -1D638;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL W -1D639;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL X -1D63A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Y -1D63B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Z -1D63C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A -1D63D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B -1D63E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C -1D63F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D -1D640;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E -1D641;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F -1D642;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G -1D643;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H -1D644;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I -1D645;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J -1D646;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K -1D647;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L -1D648;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M -1D649;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N -1D64A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O -1D64B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P -1D64C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q -1D64D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R -1D64E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S -1D64F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T -1D650;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U -1D651;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V -1D652;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W -1D653;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X -1D654;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y -1D655;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z -1D656;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A -1D657;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B -1D658;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C -1D659;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D -1D65A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E -1D65B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F -1D65C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G -1D65D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H -1D65E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I -1D65F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J -1D660;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K -1D661;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L -1D662;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M -1D663;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N -1D664;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O -1D665;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P -1D666;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q -1D667;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R -1D668;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S -1D669;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T -1D66A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U -1D66B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V -1D66C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W -1D66D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X -1D66E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y -1D66F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z -1D670;AL # MATHEMATICAL MONOSPACE CAPITAL A -1D671;AL # MATHEMATICAL MONOSPACE CAPITAL B -1D672;AL # MATHEMATICAL MONOSPACE CAPITAL C -1D673;AL # MATHEMATICAL MONOSPACE CAPITAL D -1D674;AL # MATHEMATICAL MONOSPACE CAPITAL E -1D675;AL # MATHEMATICAL MONOSPACE CAPITAL F -1D676;AL # MATHEMATICAL MONOSPACE CAPITAL G -1D677;AL # MATHEMATICAL MONOSPACE CAPITAL H -1D678;AL # MATHEMATICAL MONOSPACE CAPITAL I -1D679;AL # MATHEMATICAL MONOSPACE CAPITAL J -1D67A;AL # MATHEMATICAL MONOSPACE CAPITAL K -1D67B;AL # MATHEMATICAL MONOSPACE CAPITAL L -1D67C;AL # MATHEMATICAL MONOSPACE CAPITAL M -1D67D;AL # MATHEMATICAL MONOSPACE CAPITAL N -1D67E;AL # MATHEMATICAL MONOSPACE CAPITAL O -1D67F;AL # MATHEMATICAL MONOSPACE CAPITAL P -1D680;AL # MATHEMATICAL MONOSPACE CAPITAL Q -1D681;AL # MATHEMATICAL MONOSPACE CAPITAL R -1D682;AL # MATHEMATICAL MONOSPACE CAPITAL S -1D683;AL # MATHEMATICAL MONOSPACE CAPITAL T -1D684;AL # MATHEMATICAL MONOSPACE CAPITAL U -1D685;AL # MATHEMATICAL MONOSPACE CAPITAL V -1D686;AL # MATHEMATICAL MONOSPACE CAPITAL W -1D687;AL # MATHEMATICAL MONOSPACE CAPITAL X -1D688;AL # MATHEMATICAL MONOSPACE CAPITAL Y -1D689;AL # MATHEMATICAL MONOSPACE CAPITAL Z -1D68A;AL # MATHEMATICAL MONOSPACE SMALL A -1D68B;AL # MATHEMATICAL MONOSPACE SMALL B -1D68C;AL # MATHEMATICAL MONOSPACE SMALL C -1D68D;AL # MATHEMATICAL MONOSPACE SMALL D -1D68E;AL # MATHEMATICAL MONOSPACE SMALL E -1D68F;AL # MATHEMATICAL MONOSPACE SMALL F -1D690;AL # MATHEMATICAL MONOSPACE SMALL G -1D691;AL # MATHEMATICAL MONOSPACE SMALL H -1D692;AL # MATHEMATICAL MONOSPACE SMALL I -1D693;AL # MATHEMATICAL MONOSPACE SMALL J -1D694;AL # MATHEMATICAL MONOSPACE SMALL K -1D695;AL # MATHEMATICAL MONOSPACE SMALL L -1D696;AL # MATHEMATICAL MONOSPACE SMALL M -1D697;AL # MATHEMATICAL MONOSPACE SMALL N -1D698;AL # MATHEMATICAL MONOSPACE SMALL O -1D699;AL # MATHEMATICAL MONOSPACE SMALL P -1D69A;AL # MATHEMATICAL MONOSPACE SMALL Q -1D69B;AL # MATHEMATICAL MONOSPACE SMALL R -1D69C;AL # MATHEMATICAL MONOSPACE SMALL S -1D69D;AL # MATHEMATICAL MONOSPACE SMALL T -1D69E;AL # MATHEMATICAL MONOSPACE SMALL U -1D69F;AL # MATHEMATICAL MONOSPACE SMALL V -1D6A0;AL # MATHEMATICAL MONOSPACE SMALL W -1D6A1;AL # MATHEMATICAL MONOSPACE SMALL X -1D6A2;AL # MATHEMATICAL MONOSPACE SMALL Y -1D6A3;AL # MATHEMATICAL MONOSPACE SMALL Z -1D6A4;AL # MATHEMATICAL ITALIC SMALL DOTLESS I -1D6A5;AL # MATHEMATICAL ITALIC SMALL DOTLESS J -1D6A8;AL # MATHEMATICAL BOLD CAPITAL ALPHA -1D6A9;AL # MATHEMATICAL BOLD CAPITAL BETA -1D6AA;AL # MATHEMATICAL BOLD CAPITAL GAMMA -1D6AB;AL # MATHEMATICAL BOLD CAPITAL DELTA -1D6AC;AL # MATHEMATICAL BOLD CAPITAL EPSILON -1D6AD;AL # MATHEMATICAL BOLD CAPITAL ZETA -1D6AE;AL # MATHEMATICAL BOLD CAPITAL ETA -1D6AF;AL # MATHEMATICAL BOLD CAPITAL THETA -1D6B0;AL # MATHEMATICAL BOLD CAPITAL IOTA -1D6B1;AL # MATHEMATICAL BOLD CAPITAL KAPPA -1D6B2;AL # MATHEMATICAL BOLD CAPITAL LAMDA -1D6B3;AL # MATHEMATICAL BOLD CAPITAL MU -1D6B4;AL # MATHEMATICAL BOLD CAPITAL NU -1D6B5;AL # MATHEMATICAL BOLD CAPITAL XI -1D6B6;AL # MATHEMATICAL BOLD CAPITAL OMICRON -1D6B7;AL # MATHEMATICAL BOLD CAPITAL PI -1D6B8;AL # MATHEMATICAL BOLD CAPITAL RHO -1D6B9;AL # MATHEMATICAL BOLD CAPITAL THETA SYMBOL -1D6BA;AL # MATHEMATICAL BOLD CAPITAL SIGMA -1D6BB;AL # MATHEMATICAL BOLD CAPITAL TAU -1D6BC;AL # MATHEMATICAL BOLD CAPITAL UPSILON -1D6BD;AL # MATHEMATICAL BOLD CAPITAL PHI -1D6BE;AL # MATHEMATICAL BOLD CAPITAL CHI -1D6BF;AL # MATHEMATICAL BOLD CAPITAL PSI -1D6C0;AL # MATHEMATICAL BOLD CAPITAL OMEGA -1D6C1;AL # MATHEMATICAL BOLD NABLA -1D6C2;AL # MATHEMATICAL BOLD SMALL ALPHA -1D6C3;AL # MATHEMATICAL BOLD SMALL BETA -1D6C4;AL # MATHEMATICAL BOLD SMALL GAMMA -1D6C5;AL # MATHEMATICAL BOLD SMALL DELTA -1D6C6;AL # MATHEMATICAL BOLD SMALL EPSILON -1D6C7;AL # MATHEMATICAL BOLD SMALL ZETA -1D6C8;AL # MATHEMATICAL BOLD SMALL ETA -1D6C9;AL # MATHEMATICAL BOLD SMALL THETA -1D6CA;AL # MATHEMATICAL BOLD SMALL IOTA -1D6CB;AL # MATHEMATICAL BOLD SMALL KAPPA -1D6CC;AL # MATHEMATICAL BOLD SMALL LAMDA -1D6CD;AL # MATHEMATICAL BOLD SMALL MU -1D6CE;AL # MATHEMATICAL BOLD SMALL NU -1D6CF;AL # MATHEMATICAL BOLD SMALL XI -1D6D0;AL # MATHEMATICAL BOLD SMALL OMICRON -1D6D1;AL # MATHEMATICAL BOLD SMALL PI -1D6D2;AL # MATHEMATICAL BOLD SMALL RHO -1D6D3;AL # MATHEMATICAL BOLD SMALL FINAL SIGMA -1D6D4;AL # MATHEMATICAL BOLD SMALL SIGMA -1D6D5;AL # MATHEMATICAL BOLD SMALL TAU -1D6D6;AL # MATHEMATICAL BOLD SMALL UPSILON -1D6D7;AL # MATHEMATICAL BOLD SMALL PHI -1D6D8;AL # MATHEMATICAL BOLD SMALL CHI -1D6D9;AL # MATHEMATICAL BOLD SMALL PSI -1D6DA;AL # MATHEMATICAL BOLD SMALL OMEGA -1D6DB;AL # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL -1D6DC;AL # MATHEMATICAL BOLD EPSILON SYMBOL -1D6DD;AL # MATHEMATICAL BOLD THETA SYMBOL -1D6DE;AL # MATHEMATICAL BOLD KAPPA SYMBOL -1D6DF;AL # MATHEMATICAL BOLD PHI SYMBOL -1D6E0;AL # MATHEMATICAL BOLD RHO SYMBOL -1D6E1;AL # MATHEMATICAL BOLD PI SYMBOL -1D6E2;AL # MATHEMATICAL ITALIC CAPITAL ALPHA -1D6E3;AL # MATHEMATICAL ITALIC CAPITAL BETA -1D6E4;AL # MATHEMATICAL ITALIC CAPITAL GAMMA -1D6E5;AL # MATHEMATICAL ITALIC CAPITAL DELTA -1D6E6;AL # MATHEMATICAL ITALIC CAPITAL EPSILON -1D6E7;AL # MATHEMATICAL ITALIC CAPITAL ZETA -1D6E8;AL # MATHEMATICAL ITALIC CAPITAL ETA -1D6E9;AL # MATHEMATICAL ITALIC CAPITAL THETA -1D6EA;AL # MATHEMATICAL ITALIC CAPITAL IOTA -1D6EB;AL # MATHEMATICAL ITALIC CAPITAL KAPPA -1D6EC;AL # MATHEMATICAL ITALIC CAPITAL LAMDA -1D6ED;AL # MATHEMATICAL ITALIC CAPITAL MU -1D6EE;AL # MATHEMATICAL ITALIC CAPITAL NU -1D6EF;AL # MATHEMATICAL ITALIC CAPITAL XI -1D6F0;AL # MATHEMATICAL ITALIC CAPITAL OMICRON -1D6F1;AL # MATHEMATICAL ITALIC CAPITAL PI -1D6F2;AL # MATHEMATICAL ITALIC CAPITAL RHO -1D6F3;AL # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL -1D6F4;AL # MATHEMATICAL ITALIC CAPITAL SIGMA -1D6F5;AL # MATHEMATICAL ITALIC CAPITAL TAU -1D6F6;AL # MATHEMATICAL ITALIC CAPITAL UPSILON -1D6F7;AL # MATHEMATICAL ITALIC CAPITAL PHI -1D6F8;AL # MATHEMATICAL ITALIC CAPITAL CHI -1D6F9;AL # MATHEMATICAL ITALIC CAPITAL PSI -1D6FA;AL # MATHEMATICAL ITALIC CAPITAL OMEGA -1D6FB;AL # MATHEMATICAL ITALIC NABLA -1D6FC;AL # MATHEMATICAL ITALIC SMALL ALPHA -1D6FD;AL # MATHEMATICAL ITALIC SMALL BETA -1D6FE;AL # MATHEMATICAL ITALIC SMALL GAMMA -1D6FF;AL # MATHEMATICAL ITALIC SMALL DELTA -1D700;AL # MATHEMATICAL ITALIC SMALL EPSILON -1D701;AL # MATHEMATICAL ITALIC SMALL ZETA -1D702;AL # MATHEMATICAL ITALIC SMALL ETA -1D703;AL # MATHEMATICAL ITALIC SMALL THETA -1D704;AL # MATHEMATICAL ITALIC SMALL IOTA -1D705;AL # MATHEMATICAL ITALIC SMALL KAPPA -1D706;AL # MATHEMATICAL ITALIC SMALL LAMDA -1D707;AL # MATHEMATICAL ITALIC SMALL MU -1D708;AL # MATHEMATICAL ITALIC SMALL NU -1D709;AL # MATHEMATICAL ITALIC SMALL XI -1D70A;AL # MATHEMATICAL ITALIC SMALL OMICRON -1D70B;AL # MATHEMATICAL ITALIC SMALL PI -1D70C;AL # MATHEMATICAL ITALIC SMALL RHO -1D70D;AL # MATHEMATICAL ITALIC SMALL FINAL SIGMA -1D70E;AL # MATHEMATICAL ITALIC SMALL SIGMA -1D70F;AL # MATHEMATICAL ITALIC SMALL TAU -1D710;AL # MATHEMATICAL ITALIC SMALL UPSILON -1D711;AL # MATHEMATICAL ITALIC SMALL PHI -1D712;AL # MATHEMATICAL ITALIC SMALL CHI -1D713;AL # MATHEMATICAL ITALIC SMALL PSI -1D714;AL # MATHEMATICAL ITALIC SMALL OMEGA -1D715;AL # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL -1D716;AL # MATHEMATICAL ITALIC EPSILON SYMBOL -1D717;AL # MATHEMATICAL ITALIC THETA SYMBOL -1D718;AL # MATHEMATICAL ITALIC KAPPA SYMBOL -1D719;AL # MATHEMATICAL ITALIC PHI SYMBOL -1D71A;AL # MATHEMATICAL ITALIC RHO SYMBOL -1D71B;AL # MATHEMATICAL ITALIC PI SYMBOL -1D71C;AL # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA -1D71D;AL # MATHEMATICAL BOLD ITALIC CAPITAL BETA -1D71E;AL # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA -1D71F;AL # MATHEMATICAL BOLD ITALIC CAPITAL DELTA -1D720;AL # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON -1D721;AL # MATHEMATICAL BOLD ITALIC CAPITAL ZETA -1D722;AL # MATHEMATICAL BOLD ITALIC CAPITAL ETA -1D723;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA -1D724;AL # MATHEMATICAL BOLD ITALIC CAPITAL IOTA -1D725;AL # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA -1D726;AL # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA -1D727;AL # MATHEMATICAL BOLD ITALIC CAPITAL MU -1D728;AL # MATHEMATICAL BOLD ITALIC CAPITAL NU -1D729;AL # MATHEMATICAL BOLD ITALIC CAPITAL XI -1D72A;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON -1D72B;AL # MATHEMATICAL BOLD ITALIC CAPITAL PI -1D72C;AL # MATHEMATICAL BOLD ITALIC CAPITAL RHO -1D72D;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL -1D72E;AL # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA -1D72F;AL # MATHEMATICAL BOLD ITALIC CAPITAL TAU -1D730;AL # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON -1D731;AL # MATHEMATICAL BOLD ITALIC CAPITAL PHI -1D732;AL # MATHEMATICAL BOLD ITALIC CAPITAL CHI -1D733;AL # MATHEMATICAL BOLD ITALIC CAPITAL PSI -1D734;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D735;AL # MATHEMATICAL BOLD ITALIC NABLA -1D736;AL # MATHEMATICAL BOLD ITALIC SMALL ALPHA -1D737;AL # MATHEMATICAL BOLD ITALIC SMALL BETA -1D738;AL # MATHEMATICAL BOLD ITALIC SMALL GAMMA -1D739;AL # MATHEMATICAL BOLD ITALIC SMALL DELTA -1D73A;AL # MATHEMATICAL BOLD ITALIC SMALL EPSILON -1D73B;AL # MATHEMATICAL BOLD ITALIC SMALL ZETA -1D73C;AL # MATHEMATICAL BOLD ITALIC SMALL ETA -1D73D;AL # MATHEMATICAL BOLD ITALIC SMALL THETA -1D73E;AL # MATHEMATICAL BOLD ITALIC SMALL IOTA -1D73F;AL # MATHEMATICAL BOLD ITALIC SMALL KAPPA -1D740;AL # MATHEMATICAL BOLD ITALIC SMALL LAMDA -1D741;AL # MATHEMATICAL BOLD ITALIC SMALL MU -1D742;AL # MATHEMATICAL BOLD ITALIC SMALL NU -1D743;AL # MATHEMATICAL BOLD ITALIC SMALL XI -1D744;AL # MATHEMATICAL BOLD ITALIC SMALL OMICRON -1D745;AL # MATHEMATICAL BOLD ITALIC SMALL PI -1D746;AL # MATHEMATICAL BOLD ITALIC SMALL RHO -1D747;AL # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA -1D748;AL # MATHEMATICAL BOLD ITALIC SMALL SIGMA -1D749;AL # MATHEMATICAL BOLD ITALIC SMALL TAU -1D74A;AL # MATHEMATICAL BOLD ITALIC SMALL UPSILON -1D74B;AL # MATHEMATICAL BOLD ITALIC SMALL PHI -1D74C;AL # MATHEMATICAL BOLD ITALIC SMALL CHI -1D74D;AL # MATHEMATICAL BOLD ITALIC SMALL PSI -1D74E;AL # MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D74F;AL # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL -1D750;AL # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL -1D751;AL # MATHEMATICAL BOLD ITALIC THETA SYMBOL -1D752;AL # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL -1D753;AL # MATHEMATICAL BOLD ITALIC PHI SYMBOL -1D754;AL # MATHEMATICAL BOLD ITALIC RHO SYMBOL -1D755;AL # MATHEMATICAL BOLD ITALIC PI SYMBOL -1D756;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA -1D757;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA -1D758;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA -1D759;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA -1D75A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON -1D75B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA -1D75C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA -1D75D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA -1D75E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA -1D75F;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA -1D760;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA -1D761;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU -1D762;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU -1D763;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI -1D764;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON -1D765;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI -1D766;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO -1D767;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL -1D768;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA -1D769;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU -1D76A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON -1D76B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI -1D76C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI -1D76D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI -1D76E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D76F;AL # MATHEMATICAL SANS-SERIF BOLD NABLA -1D770;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA -1D771;AL # MATHEMATICAL SANS-SERIF BOLD SMALL BETA -1D772;AL # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA -1D773;AL # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA -1D774;AL # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON -1D775;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA -1D776;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ETA -1D777;AL # MATHEMATICAL SANS-SERIF BOLD SMALL THETA -1D778;AL # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA -1D779;AL # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA -1D77A;AL # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA -1D77B;AL # MATHEMATICAL SANS-SERIF BOLD SMALL MU -1D77C;AL # MATHEMATICAL SANS-SERIF BOLD SMALL NU -1D77D;AL # MATHEMATICAL SANS-SERIF BOLD SMALL XI -1D77E;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON -1D77F;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PI -1D780;AL # MATHEMATICAL SANS-SERIF BOLD SMALL RHO -1D781;AL # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA -1D782;AL # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA -1D783;AL # MATHEMATICAL SANS-SERIF BOLD SMALL TAU -1D784;AL # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON -1D785;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PHI -1D786;AL # MATHEMATICAL SANS-SERIF BOLD SMALL CHI -1D787;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PSI -1D788;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D789;AL # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL -1D78A;AL # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL -1D78B;AL # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL -1D78C;AL # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL -1D78D;AL # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL -1D78E;AL # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL -1D78F;AL # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL -1D790;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA -1D791;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA -1D792;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA -1D793;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA -1D794;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON -1D795;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA -1D796;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA -1D797;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA -1D798;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA -1D799;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA -1D79A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA -1D79B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU -1D79C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU -1D79D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI -1D79E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON -1D79F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI -1D7A0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO -1D7A1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL -1D7A2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA -1D7A3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU -1D7A4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON -1D7A5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI -1D7A6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI -1D7A7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI -1D7A8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1D7A9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA -1D7AA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA -1D7AB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA -1D7AC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA -1D7AD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA -1D7AE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON -1D7AF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA -1D7B0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA -1D7B1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA -1D7B2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA -1D7B3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA -1D7B4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA -1D7B5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU -1D7B6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU -1D7B7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI -1D7B8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON -1D7B9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI -1D7BA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO -1D7BB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA -1D7BC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA -1D7BD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU -1D7BE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON -1D7BF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI -1D7C0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI -1D7C1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI -1D7C2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -1D7C3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL -1D7C4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL -1D7C5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL -1D7C6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL -1D7C7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL -1D7C8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL -1D7C9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL -1D7CA;AL # MATHEMATICAL BOLD CAPITAL DIGAMMA -1D7CB;AL # MATHEMATICAL BOLD SMALL DIGAMMA -1D7CE;NU # MATHEMATICAL BOLD DIGIT ZERO -1D7CF;NU # MATHEMATICAL BOLD DIGIT ONE -1D7D0;NU # MATHEMATICAL BOLD DIGIT TWO -1D7D1;NU # MATHEMATICAL BOLD DIGIT THREE -1D7D2;NU # MATHEMATICAL BOLD DIGIT FOUR -1D7D3;NU # MATHEMATICAL BOLD DIGIT FIVE -1D7D4;NU # MATHEMATICAL BOLD DIGIT SIX -1D7D5;NU # MATHEMATICAL BOLD DIGIT SEVEN -1D7D6;NU # MATHEMATICAL BOLD DIGIT EIGHT -1D7D7;NU # MATHEMATICAL BOLD DIGIT NINE -1D7D8;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO -1D7D9;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE -1D7DA;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO -1D7DB;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE -1D7DC;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR -1D7DD;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE -1D7DE;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX -1D7DF;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN -1D7E0;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT -1D7E1;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE -1D7E2;NU # MATHEMATICAL SANS-SERIF DIGIT ZERO -1D7E3;NU # MATHEMATICAL SANS-SERIF DIGIT ONE -1D7E4;NU # MATHEMATICAL SANS-SERIF DIGIT TWO -1D7E5;NU # MATHEMATICAL SANS-SERIF DIGIT THREE -1D7E6;NU # MATHEMATICAL SANS-SERIF DIGIT FOUR -1D7E7;NU # MATHEMATICAL SANS-SERIF DIGIT FIVE -1D7E8;NU # MATHEMATICAL SANS-SERIF DIGIT SIX -1D7E9;NU # MATHEMATICAL SANS-SERIF DIGIT SEVEN -1D7EA;NU # MATHEMATICAL SANS-SERIF DIGIT EIGHT -1D7EB;NU # MATHEMATICAL SANS-SERIF DIGIT NINE -1D7EC;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO -1D7ED;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE -1D7EE;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO -1D7EF;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE -1D7F0;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR -1D7F1;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE -1D7F2;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX -1D7F3;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN -1D7F4;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT -1D7F5;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE -1D7F6;NU # MATHEMATICAL MONOSPACE DIGIT ZERO -1D7F7;NU # MATHEMATICAL MONOSPACE DIGIT ONE -1D7F8;NU # MATHEMATICAL MONOSPACE DIGIT TWO -1D7F9;NU # MATHEMATICAL MONOSPACE DIGIT THREE -1D7FA;NU # MATHEMATICAL MONOSPACE DIGIT FOUR -1D7FB;NU # MATHEMATICAL MONOSPACE DIGIT FIVE -1D7FC;NU # MATHEMATICAL MONOSPACE DIGIT SIX -1D7FD;NU # MATHEMATICAL MONOSPACE DIGIT SEVEN -1D7FE;NU # MATHEMATICAL MONOSPACE DIGIT EIGHT -1D7FF;NU # MATHEMATICAL MONOSPACE DIGIT NINE -20000..2A6D6;ID # <CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last> -2F800;ID # CJK COMPATIBILITY IDEOGRAPH-2F800 -2F801;ID # CJK COMPATIBILITY IDEOGRAPH-2F801 -2F802;ID # CJK COMPATIBILITY IDEOGRAPH-2F802 -2F803;ID # CJK COMPATIBILITY IDEOGRAPH-2F803 -2F804;ID # CJK COMPATIBILITY IDEOGRAPH-2F804 -2F805;ID # CJK COMPATIBILITY IDEOGRAPH-2F805 -2F806;ID # CJK COMPATIBILITY IDEOGRAPH-2F806 -2F807;ID # CJK COMPATIBILITY IDEOGRAPH-2F807 -2F808;ID # CJK COMPATIBILITY IDEOGRAPH-2F808 -2F809;ID # CJK COMPATIBILITY IDEOGRAPH-2F809 -2F80A;ID # CJK COMPATIBILITY IDEOGRAPH-2F80A -2F80B;ID # CJK COMPATIBILITY IDEOGRAPH-2F80B -2F80C;ID # CJK COMPATIBILITY IDEOGRAPH-2F80C -2F80D;ID # CJK COMPATIBILITY IDEOGRAPH-2F80D -2F80E;ID # CJK COMPATIBILITY IDEOGRAPH-2F80E -2F80F;ID # CJK COMPATIBILITY IDEOGRAPH-2F80F -2F810;ID # CJK COMPATIBILITY IDEOGRAPH-2F810 -2F811;ID # CJK COMPATIBILITY IDEOGRAPH-2F811 -2F812;ID # CJK COMPATIBILITY IDEOGRAPH-2F812 -2F813;ID # CJK COMPATIBILITY IDEOGRAPH-2F813 -2F814;ID # CJK COMPATIBILITY IDEOGRAPH-2F814 -2F815;ID # CJK COMPATIBILITY IDEOGRAPH-2F815 -2F816;ID # CJK COMPATIBILITY IDEOGRAPH-2F816 -2F817;ID # CJK COMPATIBILITY IDEOGRAPH-2F817 -2F818;ID # CJK COMPATIBILITY IDEOGRAPH-2F818 -2F819;ID # CJK COMPATIBILITY IDEOGRAPH-2F819 -2F81A;ID # CJK COMPATIBILITY IDEOGRAPH-2F81A -2F81B;ID # CJK COMPATIBILITY IDEOGRAPH-2F81B -2F81C;ID # CJK COMPATIBILITY IDEOGRAPH-2F81C -2F81D;ID # CJK COMPATIBILITY IDEOGRAPH-2F81D -2F81E;ID # CJK COMPATIBILITY IDEOGRAPH-2F81E -2F81F;ID # CJK COMPATIBILITY IDEOGRAPH-2F81F -2F820;ID # CJK COMPATIBILITY IDEOGRAPH-2F820 -2F821;ID # CJK COMPATIBILITY IDEOGRAPH-2F821 -2F822;ID # CJK COMPATIBILITY IDEOGRAPH-2F822 -2F823;ID # CJK COMPATIBILITY IDEOGRAPH-2F823 -2F824;ID # CJK COMPATIBILITY IDEOGRAPH-2F824 -2F825;ID # CJK COMPATIBILITY IDEOGRAPH-2F825 -2F826;ID # CJK COMPATIBILITY IDEOGRAPH-2F826 -2F827;ID # CJK COMPATIBILITY IDEOGRAPH-2F827 -2F828;ID # CJK COMPATIBILITY IDEOGRAPH-2F828 -2F829;ID # CJK COMPATIBILITY IDEOGRAPH-2F829 -2F82A;ID # CJK COMPATIBILITY IDEOGRAPH-2F82A -2F82B;ID # CJK COMPATIBILITY IDEOGRAPH-2F82B -2F82C;ID # CJK COMPATIBILITY IDEOGRAPH-2F82C -2F82D;ID # CJK COMPATIBILITY IDEOGRAPH-2F82D -2F82E;ID # CJK COMPATIBILITY IDEOGRAPH-2F82E -2F82F;ID # CJK COMPATIBILITY IDEOGRAPH-2F82F -2F830;ID # CJK COMPATIBILITY IDEOGRAPH-2F830 -2F831;ID # CJK COMPATIBILITY IDEOGRAPH-2F831 -2F832;ID # CJK COMPATIBILITY IDEOGRAPH-2F832 -2F833;ID # CJK COMPATIBILITY IDEOGRAPH-2F833 -2F834;ID # CJK COMPATIBILITY IDEOGRAPH-2F834 -2F835;ID # CJK COMPATIBILITY IDEOGRAPH-2F835 -2F836;ID # CJK COMPATIBILITY IDEOGRAPH-2F836 -2F837;ID # CJK COMPATIBILITY IDEOGRAPH-2F837 -2F838;ID # CJK COMPATIBILITY IDEOGRAPH-2F838 -2F839;ID # CJK COMPATIBILITY IDEOGRAPH-2F839 -2F83A;ID # CJK COMPATIBILITY IDEOGRAPH-2F83A -2F83B;ID # CJK COMPATIBILITY IDEOGRAPH-2F83B -2F83C;ID # CJK COMPATIBILITY IDEOGRAPH-2F83C -2F83D;ID # CJK COMPATIBILITY IDEOGRAPH-2F83D -2F83E;ID # CJK COMPATIBILITY IDEOGRAPH-2F83E -2F83F;ID # CJK COMPATIBILITY IDEOGRAPH-2F83F -2F840;ID # CJK COMPATIBILITY IDEOGRAPH-2F840 -2F841;ID # CJK COMPATIBILITY IDEOGRAPH-2F841 -2F842;ID # CJK COMPATIBILITY IDEOGRAPH-2F842 -2F843;ID # CJK COMPATIBILITY IDEOGRAPH-2F843 -2F844;ID # CJK COMPATIBILITY IDEOGRAPH-2F844 -2F845;ID # CJK COMPATIBILITY IDEOGRAPH-2F845 -2F846;ID # CJK COMPATIBILITY IDEOGRAPH-2F846 -2F847;ID # CJK COMPATIBILITY IDEOGRAPH-2F847 -2F848;ID # CJK COMPATIBILITY IDEOGRAPH-2F848 -2F849;ID # CJK COMPATIBILITY IDEOGRAPH-2F849 -2F84A;ID # CJK COMPATIBILITY IDEOGRAPH-2F84A -2F84B;ID # CJK COMPATIBILITY IDEOGRAPH-2F84B -2F84C;ID # CJK COMPATIBILITY IDEOGRAPH-2F84C -2F84D;ID # CJK COMPATIBILITY IDEOGRAPH-2F84D -2F84E;ID # CJK COMPATIBILITY IDEOGRAPH-2F84E -2F84F;ID # CJK COMPATIBILITY IDEOGRAPH-2F84F -2F850;ID # CJK COMPATIBILITY IDEOGRAPH-2F850 -2F851;ID # CJK COMPATIBILITY IDEOGRAPH-2F851 -2F852;ID # CJK COMPATIBILITY IDEOGRAPH-2F852 -2F853;ID # CJK COMPATIBILITY IDEOGRAPH-2F853 -2F854;ID # CJK COMPATIBILITY IDEOGRAPH-2F854 -2F855;ID # CJK COMPATIBILITY IDEOGRAPH-2F855 -2F856;ID # CJK COMPATIBILITY IDEOGRAPH-2F856 -2F857;ID # CJK COMPATIBILITY IDEOGRAPH-2F857 -2F858;ID # CJK COMPATIBILITY IDEOGRAPH-2F858 -2F859;ID # CJK COMPATIBILITY IDEOGRAPH-2F859 -2F85A;ID # CJK COMPATIBILITY IDEOGRAPH-2F85A -2F85B;ID # CJK COMPATIBILITY IDEOGRAPH-2F85B -2F85C;ID # CJK COMPATIBILITY IDEOGRAPH-2F85C -2F85D;ID # CJK COMPATIBILITY IDEOGRAPH-2F85D -2F85E;ID # CJK COMPATIBILITY IDEOGRAPH-2F85E -2F85F;ID # CJK COMPATIBILITY IDEOGRAPH-2F85F -2F860;ID # CJK COMPATIBILITY IDEOGRAPH-2F860 -2F861;ID # CJK COMPATIBILITY IDEOGRAPH-2F861 -2F862;ID # CJK COMPATIBILITY IDEOGRAPH-2F862 -2F863;ID # CJK COMPATIBILITY IDEOGRAPH-2F863 -2F864;ID # CJK COMPATIBILITY IDEOGRAPH-2F864 -2F865;ID # CJK COMPATIBILITY IDEOGRAPH-2F865 -2F866;ID # CJK COMPATIBILITY IDEOGRAPH-2F866 -2F867;ID # CJK COMPATIBILITY IDEOGRAPH-2F867 -2F868;ID # CJK COMPATIBILITY IDEOGRAPH-2F868 -2F869;ID # CJK COMPATIBILITY IDEOGRAPH-2F869 -2F86A;ID # CJK COMPATIBILITY IDEOGRAPH-2F86A -2F86B;ID # CJK COMPATIBILITY IDEOGRAPH-2F86B -2F86C;ID # CJK COMPATIBILITY IDEOGRAPH-2F86C -2F86D;ID # CJK COMPATIBILITY IDEOGRAPH-2F86D -2F86E;ID # CJK COMPATIBILITY IDEOGRAPH-2F86E -2F86F;ID # CJK COMPATIBILITY IDEOGRAPH-2F86F -2F870;ID # CJK COMPATIBILITY IDEOGRAPH-2F870 -2F871;ID # CJK COMPATIBILITY IDEOGRAPH-2F871 -2F872;ID # CJK COMPATIBILITY IDEOGRAPH-2F872 -2F873;ID # CJK COMPATIBILITY IDEOGRAPH-2F873 -2F874;ID # CJK COMPATIBILITY IDEOGRAPH-2F874 -2F875;ID # CJK COMPATIBILITY IDEOGRAPH-2F875 -2F876;ID # CJK COMPATIBILITY IDEOGRAPH-2F876 -2F877;ID # CJK COMPATIBILITY IDEOGRAPH-2F877 -2F878;ID # CJK COMPATIBILITY IDEOGRAPH-2F878 -2F879;ID # CJK COMPATIBILITY IDEOGRAPH-2F879 -2F87A;ID # CJK COMPATIBILITY IDEOGRAPH-2F87A -2F87B;ID # CJK COMPATIBILITY IDEOGRAPH-2F87B -2F87C;ID # CJK COMPATIBILITY IDEOGRAPH-2F87C -2F87D;ID # CJK COMPATIBILITY IDEOGRAPH-2F87D -2F87E;ID # CJK COMPATIBILITY IDEOGRAPH-2F87E -2F87F;ID # CJK COMPATIBILITY IDEOGRAPH-2F87F -2F880;ID # CJK COMPATIBILITY IDEOGRAPH-2F880 -2F881;ID # CJK COMPATIBILITY IDEOGRAPH-2F881 -2F882;ID # CJK COMPATIBILITY IDEOGRAPH-2F882 -2F883;ID # CJK COMPATIBILITY IDEOGRAPH-2F883 -2F884;ID # CJK COMPATIBILITY IDEOGRAPH-2F884 -2F885;ID # CJK COMPATIBILITY IDEOGRAPH-2F885 -2F886;ID # CJK COMPATIBILITY IDEOGRAPH-2F886 -2F887;ID # CJK COMPATIBILITY IDEOGRAPH-2F887 -2F888;ID # CJK COMPATIBILITY IDEOGRAPH-2F888 -2F889;ID # CJK COMPATIBILITY IDEOGRAPH-2F889 -2F88A;ID # CJK COMPATIBILITY IDEOGRAPH-2F88A -2F88B;ID # CJK COMPATIBILITY IDEOGRAPH-2F88B -2F88C;ID # CJK COMPATIBILITY IDEOGRAPH-2F88C -2F88D;ID # CJK COMPATIBILITY IDEOGRAPH-2F88D -2F88E;ID # CJK COMPATIBILITY IDEOGRAPH-2F88E -2F88F;ID # CJK COMPATIBILITY IDEOGRAPH-2F88F -2F890;ID # CJK COMPATIBILITY IDEOGRAPH-2F890 -2F891;ID # CJK COMPATIBILITY IDEOGRAPH-2F891 -2F892;ID # CJK COMPATIBILITY IDEOGRAPH-2F892 -2F893;ID # CJK COMPATIBILITY IDEOGRAPH-2F893 -2F894;ID # CJK COMPATIBILITY IDEOGRAPH-2F894 -2F895;ID # CJK COMPATIBILITY IDEOGRAPH-2F895 -2F896;ID # CJK COMPATIBILITY IDEOGRAPH-2F896 -2F897;ID # CJK COMPATIBILITY IDEOGRAPH-2F897 -2F898;ID # CJK COMPATIBILITY IDEOGRAPH-2F898 -2F899;ID # CJK COMPATIBILITY IDEOGRAPH-2F899 -2F89A;ID # CJK COMPATIBILITY IDEOGRAPH-2F89A -2F89B;ID # CJK COMPATIBILITY IDEOGRAPH-2F89B -2F89C;ID # CJK COMPATIBILITY IDEOGRAPH-2F89C -2F89D;ID # CJK COMPATIBILITY IDEOGRAPH-2F89D -2F89E;ID # CJK COMPATIBILITY IDEOGRAPH-2F89E -2F89F;ID # CJK COMPATIBILITY IDEOGRAPH-2F89F -2F8A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A0 -2F8A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A1 -2F8A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A2 -2F8A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A3 -2F8A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A4 -2F8A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A5 -2F8A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A6 -2F8A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A7 -2F8A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A8 -2F8A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A9 -2F8AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AA -2F8AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AB -2F8AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AC -2F8AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AD -2F8AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AE -2F8AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AF -2F8B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B0 -2F8B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B1 -2F8B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B2 -2F8B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B3 -2F8B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B4 -2F8B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B5 -2F8B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B6 -2F8B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B7 -2F8B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B8 -2F8B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B9 -2F8BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BA -2F8BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BB -2F8BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BC -2F8BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BD -2F8BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BE -2F8BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BF -2F8C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C0 -2F8C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C1 -2F8C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C2 -2F8C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C3 -2F8C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C4 -2F8C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C5 -2F8C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C6 -2F8C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C7 -2F8C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C8 -2F8C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C9 -2F8CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CA -2F8CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CB -2F8CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CC -2F8CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CD -2F8CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CE -2F8CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CF -2F8D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D0 -2F8D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D1 -2F8D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D2 -2F8D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D3 -2F8D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D4 -2F8D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D5 -2F8D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D6 -2F8D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D7 -2F8D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D8 -2F8D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D9 -2F8DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DA -2F8DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DB -2F8DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DC -2F8DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DD -2F8DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DE -2F8DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DF -2F8E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E0 -2F8E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E1 -2F8E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E2 -2F8E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E3 -2F8E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E4 -2F8E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E5 -2F8E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E6 -2F8E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E7 -2F8E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E8 -2F8E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E9 -2F8EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EA -2F8EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EB -2F8EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EC -2F8ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F8ED -2F8EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EE -2F8EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EF -2F8F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F0 -2F8F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F1 -2F8F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F2 -2F8F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F3 -2F8F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F4 -2F8F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F5 -2F8F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F6 -2F8F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F7 -2F8F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F8 -2F8F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F9 -2F8FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FA -2F8FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FB -2F8FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FC -2F8FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FD -2F8FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FE -2F8FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FF -2F900;ID # CJK COMPATIBILITY IDEOGRAPH-2F900 -2F901;ID # CJK COMPATIBILITY IDEOGRAPH-2F901 -2F902;ID # CJK COMPATIBILITY IDEOGRAPH-2F902 -2F903;ID # CJK COMPATIBILITY IDEOGRAPH-2F903 -2F904;ID # CJK COMPATIBILITY IDEOGRAPH-2F904 -2F905;ID # CJK COMPATIBILITY IDEOGRAPH-2F905 -2F906;ID # CJK COMPATIBILITY IDEOGRAPH-2F906 -2F907;ID # CJK COMPATIBILITY IDEOGRAPH-2F907 -2F908;ID # CJK COMPATIBILITY IDEOGRAPH-2F908 -2F909;ID # CJK COMPATIBILITY IDEOGRAPH-2F909 -2F90A;ID # CJK COMPATIBILITY IDEOGRAPH-2F90A -2F90B;ID # CJK COMPATIBILITY IDEOGRAPH-2F90B -2F90C;ID # CJK COMPATIBILITY IDEOGRAPH-2F90C -2F90D;ID # CJK COMPATIBILITY IDEOGRAPH-2F90D -2F90E;ID # CJK COMPATIBILITY IDEOGRAPH-2F90E -2F90F;ID # CJK COMPATIBILITY IDEOGRAPH-2F90F -2F910;ID # CJK COMPATIBILITY IDEOGRAPH-2F910 -2F911;ID # CJK COMPATIBILITY IDEOGRAPH-2F911 -2F912;ID # CJK COMPATIBILITY IDEOGRAPH-2F912 -2F913;ID # CJK COMPATIBILITY IDEOGRAPH-2F913 -2F914;ID # CJK COMPATIBILITY IDEOGRAPH-2F914 -2F915;ID # CJK COMPATIBILITY IDEOGRAPH-2F915 -2F916;ID # CJK COMPATIBILITY IDEOGRAPH-2F916 -2F917;ID # CJK COMPATIBILITY IDEOGRAPH-2F917 -2F918;ID # CJK COMPATIBILITY IDEOGRAPH-2F918 -2F919;ID # CJK COMPATIBILITY IDEOGRAPH-2F919 -2F91A;ID # CJK COMPATIBILITY IDEOGRAPH-2F91A -2F91B;ID # CJK COMPATIBILITY IDEOGRAPH-2F91B -2F91C;ID # CJK COMPATIBILITY IDEOGRAPH-2F91C -2F91D;ID # CJK COMPATIBILITY IDEOGRAPH-2F91D -2F91E;ID # CJK COMPATIBILITY IDEOGRAPH-2F91E -2F91F;ID # CJK COMPATIBILITY IDEOGRAPH-2F91F -2F920;ID # CJK COMPATIBILITY IDEOGRAPH-2F920 -2F921;ID # CJK COMPATIBILITY IDEOGRAPH-2F921 -2F922;ID # CJK COMPATIBILITY IDEOGRAPH-2F922 -2F923;ID # CJK COMPATIBILITY IDEOGRAPH-2F923 -2F924;ID # CJK COMPATIBILITY IDEOGRAPH-2F924 -2F925;ID # CJK COMPATIBILITY IDEOGRAPH-2F925 -2F926;ID # CJK COMPATIBILITY IDEOGRAPH-2F926 -2F927;ID # CJK COMPATIBILITY IDEOGRAPH-2F927 -2F928;ID # CJK COMPATIBILITY IDEOGRAPH-2F928 -2F929;ID # CJK COMPATIBILITY IDEOGRAPH-2F929 -2F92A;ID # CJK COMPATIBILITY IDEOGRAPH-2F92A -2F92B;ID # CJK COMPATIBILITY IDEOGRAPH-2F92B -2F92C;ID # CJK COMPATIBILITY IDEOGRAPH-2F92C -2F92D;ID # CJK COMPATIBILITY IDEOGRAPH-2F92D -2F92E;ID # CJK COMPATIBILITY IDEOGRAPH-2F92E -2F92F;ID # CJK COMPATIBILITY IDEOGRAPH-2F92F -2F930;ID # CJK COMPATIBILITY IDEOGRAPH-2F930 -2F931;ID # CJK COMPATIBILITY IDEOGRAPH-2F931 -2F932;ID # CJK COMPATIBILITY IDEOGRAPH-2F932 -2F933;ID # CJK COMPATIBILITY IDEOGRAPH-2F933 -2F934;ID # CJK COMPATIBILITY IDEOGRAPH-2F934 -2F935;ID # CJK COMPATIBILITY IDEOGRAPH-2F935 -2F936;ID # CJK COMPATIBILITY IDEOGRAPH-2F936 -2F937;ID # CJK COMPATIBILITY IDEOGRAPH-2F937 -2F938;ID # CJK COMPATIBILITY IDEOGRAPH-2F938 -2F939;ID # CJK COMPATIBILITY IDEOGRAPH-2F939 -2F93A;ID # CJK COMPATIBILITY IDEOGRAPH-2F93A -2F93B;ID # CJK COMPATIBILITY IDEOGRAPH-2F93B -2F93C;ID # CJK COMPATIBILITY IDEOGRAPH-2F93C -2F93D;ID # CJK COMPATIBILITY IDEOGRAPH-2F93D -2F93E;ID # CJK COMPATIBILITY IDEOGRAPH-2F93E -2F93F;ID # CJK COMPATIBILITY IDEOGRAPH-2F93F -2F940;ID # CJK COMPATIBILITY IDEOGRAPH-2F940 -2F941;ID # CJK COMPATIBILITY IDEOGRAPH-2F941 -2F942;ID # CJK COMPATIBILITY IDEOGRAPH-2F942 -2F943;ID # CJK COMPATIBILITY IDEOGRAPH-2F943 -2F944;ID # CJK COMPATIBILITY IDEOGRAPH-2F944 -2F945;ID # CJK COMPATIBILITY IDEOGRAPH-2F945 -2F946;ID # CJK COMPATIBILITY IDEOGRAPH-2F946 -2F947;ID # CJK COMPATIBILITY IDEOGRAPH-2F947 -2F948;ID # CJK COMPATIBILITY IDEOGRAPH-2F948 -2F949;ID # CJK COMPATIBILITY IDEOGRAPH-2F949 -2F94A;ID # CJK COMPATIBILITY IDEOGRAPH-2F94A -2F94B;ID # CJK COMPATIBILITY IDEOGRAPH-2F94B -2F94C;ID # CJK COMPATIBILITY IDEOGRAPH-2F94C -2F94D;ID # CJK COMPATIBILITY IDEOGRAPH-2F94D -2F94E;ID # CJK COMPATIBILITY IDEOGRAPH-2F94E -2F94F;ID # CJK COMPATIBILITY IDEOGRAPH-2F94F -2F950;ID # CJK COMPATIBILITY IDEOGRAPH-2F950 -2F951;ID # CJK COMPATIBILITY IDEOGRAPH-2F951 -2F952;ID # CJK COMPATIBILITY IDEOGRAPH-2F952 -2F953;ID # CJK COMPATIBILITY IDEOGRAPH-2F953 -2F954;ID # CJK COMPATIBILITY IDEOGRAPH-2F954 -2F955;ID # CJK COMPATIBILITY IDEOGRAPH-2F955 -2F956;ID # CJK COMPATIBILITY IDEOGRAPH-2F956 -2F957;ID # CJK COMPATIBILITY IDEOGRAPH-2F957 -2F958;ID # CJK COMPATIBILITY IDEOGRAPH-2F958 -2F959;ID # CJK COMPATIBILITY IDEOGRAPH-2F959 -2F95A;ID # CJK COMPATIBILITY IDEOGRAPH-2F95A -2F95B;ID # CJK COMPATIBILITY IDEOGRAPH-2F95B -2F95C;ID # CJK COMPATIBILITY IDEOGRAPH-2F95C -2F95D;ID # CJK COMPATIBILITY IDEOGRAPH-2F95D -2F95E;ID # CJK COMPATIBILITY IDEOGRAPH-2F95E -2F95F;ID # CJK COMPATIBILITY IDEOGRAPH-2F95F -2F960;ID # CJK COMPATIBILITY IDEOGRAPH-2F960 -2F961;ID # CJK COMPATIBILITY IDEOGRAPH-2F961 -2F962;ID # CJK COMPATIBILITY IDEOGRAPH-2F962 -2F963;ID # CJK COMPATIBILITY IDEOGRAPH-2F963 -2F964;ID # CJK COMPATIBILITY IDEOGRAPH-2F964 -2F965;ID # CJK COMPATIBILITY IDEOGRAPH-2F965 -2F966;ID # CJK COMPATIBILITY IDEOGRAPH-2F966 -2F967;ID # CJK COMPATIBILITY IDEOGRAPH-2F967 -2F968;ID # CJK COMPATIBILITY IDEOGRAPH-2F968 -2F969;ID # CJK COMPATIBILITY IDEOGRAPH-2F969 -2F96A;ID # CJK COMPATIBILITY IDEOGRAPH-2F96A -2F96B;ID # CJK COMPATIBILITY IDEOGRAPH-2F96B -2F96C;ID # CJK COMPATIBILITY IDEOGRAPH-2F96C -2F96D;ID # CJK COMPATIBILITY IDEOGRAPH-2F96D -2F96E;ID # CJK COMPATIBILITY IDEOGRAPH-2F96E -2F96F;ID # CJK COMPATIBILITY IDEOGRAPH-2F96F -2F970;ID # CJK COMPATIBILITY IDEOGRAPH-2F970 -2F971;ID # CJK COMPATIBILITY IDEOGRAPH-2F971 -2F972;ID # CJK COMPATIBILITY IDEOGRAPH-2F972 -2F973;ID # CJK COMPATIBILITY IDEOGRAPH-2F973 -2F974;ID # CJK COMPATIBILITY IDEOGRAPH-2F974 -2F975;ID # CJK COMPATIBILITY IDEOGRAPH-2F975 -2F976;ID # CJK COMPATIBILITY IDEOGRAPH-2F976 -2F977;ID # CJK COMPATIBILITY IDEOGRAPH-2F977 -2F978;ID # CJK COMPATIBILITY IDEOGRAPH-2F978 -2F979;ID # CJK COMPATIBILITY IDEOGRAPH-2F979 -2F97A;ID # CJK COMPATIBILITY IDEOGRAPH-2F97A -2F97B;ID # CJK COMPATIBILITY IDEOGRAPH-2F97B -2F97C;ID # CJK COMPATIBILITY IDEOGRAPH-2F97C -2F97D;ID # CJK COMPATIBILITY IDEOGRAPH-2F97D -2F97E;ID # CJK COMPATIBILITY IDEOGRAPH-2F97E -2F97F;ID # CJK COMPATIBILITY IDEOGRAPH-2F97F -2F980;ID # CJK COMPATIBILITY IDEOGRAPH-2F980 -2F981;ID # CJK COMPATIBILITY IDEOGRAPH-2F981 -2F982;ID # CJK COMPATIBILITY IDEOGRAPH-2F982 -2F983;ID # CJK COMPATIBILITY IDEOGRAPH-2F983 -2F984;ID # CJK COMPATIBILITY IDEOGRAPH-2F984 -2F985;ID # CJK COMPATIBILITY IDEOGRAPH-2F985 -2F986;ID # CJK COMPATIBILITY IDEOGRAPH-2F986 -2F987;ID # CJK COMPATIBILITY IDEOGRAPH-2F987 -2F988;ID # CJK COMPATIBILITY IDEOGRAPH-2F988 -2F989;ID # CJK COMPATIBILITY IDEOGRAPH-2F989 -2F98A;ID # CJK COMPATIBILITY IDEOGRAPH-2F98A -2F98B;ID # CJK COMPATIBILITY IDEOGRAPH-2F98B -2F98C;ID # CJK COMPATIBILITY IDEOGRAPH-2F98C -2F98D;ID # CJK COMPATIBILITY IDEOGRAPH-2F98D -2F98E;ID # CJK COMPATIBILITY IDEOGRAPH-2F98E -2F98F;ID # CJK COMPATIBILITY IDEOGRAPH-2F98F -2F990;ID # CJK COMPATIBILITY IDEOGRAPH-2F990 -2F991;ID # CJK COMPATIBILITY IDEOGRAPH-2F991 -2F992;ID # CJK COMPATIBILITY IDEOGRAPH-2F992 -2F993;ID # CJK COMPATIBILITY IDEOGRAPH-2F993 -2F994;ID # CJK COMPATIBILITY IDEOGRAPH-2F994 -2F995;ID # CJK COMPATIBILITY IDEOGRAPH-2F995 -2F996;ID # CJK COMPATIBILITY IDEOGRAPH-2F996 -2F997;ID # CJK COMPATIBILITY IDEOGRAPH-2F997 -2F998;ID # CJK COMPATIBILITY IDEOGRAPH-2F998 -2F999;ID # CJK COMPATIBILITY IDEOGRAPH-2F999 -2F99A;ID # CJK COMPATIBILITY IDEOGRAPH-2F99A -2F99B;ID # CJK COMPATIBILITY IDEOGRAPH-2F99B -2F99C;ID # CJK COMPATIBILITY IDEOGRAPH-2F99C -2F99D;ID # CJK COMPATIBILITY IDEOGRAPH-2F99D -2F99E;ID # CJK COMPATIBILITY IDEOGRAPH-2F99E -2F99F;ID # CJK COMPATIBILITY IDEOGRAPH-2F99F -2F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A0 -2F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A1 -2F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A2 -2F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A3 -2F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A4 -2F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A5 -2F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A6 -2F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A7 -2F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A8 -2F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A9 -2F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AA -2F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AB -2F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AC -2F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AD -2F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AE -2F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AF -2F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B0 -2F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B1 -2F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B2 -2F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B3 -2F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B4 -2F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B5 -2F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B6 -2F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B7 -2F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B8 -2F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B9 -2F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BA -2F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BB -2F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BC -2F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BD -2F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BE -2F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BF -2F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C0 -2F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C1 -2F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C2 -2F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C3 -2F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C4 -2F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C5 -2F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C6 -2F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C7 -2F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C8 -2F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C9 -2F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CA -2F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CB -2F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CC -2F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CD -2F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CE -2F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CF -2F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D0 -2F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D1 -2F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D2 -2F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D3 -2F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D4 -2F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D5 -2F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D6 -2F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D7 -2F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D8 -2F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D9 -2F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DA -2F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DB -2F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DC -2F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DD -2F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DE -2F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DF -2F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E0 -2F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E1 -2F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E2 -2F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E3 -2F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E4 -2F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E5 -2F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E6 -2F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E7 -2F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E8 -2F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E9 -2F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EA -2F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EB -2F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EC -2F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F9ED -2F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EE -2F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EF -2F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F0 -2F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F1 -2F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F2 -2F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F3 -2F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F4 -2F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F5 -2F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F6 -2F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F7 -2F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F8 -2F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F9 -2F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FA -2F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FB -2F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FC -2F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FD -2F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FE -2F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FF -2FA00;ID # CJK COMPATIBILITY IDEOGRAPH-2FA00 -2FA01;ID # CJK COMPATIBILITY IDEOGRAPH-2FA01 -2FA02;ID # CJK COMPATIBILITY IDEOGRAPH-2FA02 -2FA03;ID # CJK COMPATIBILITY IDEOGRAPH-2FA03 -2FA04;ID # CJK COMPATIBILITY IDEOGRAPH-2FA04 -2FA05;ID # CJK COMPATIBILITY IDEOGRAPH-2FA05 -2FA06;ID # CJK COMPATIBILITY IDEOGRAPH-2FA06 -2FA07;ID # CJK COMPATIBILITY IDEOGRAPH-2FA07 -2FA08;ID # CJK COMPATIBILITY IDEOGRAPH-2FA08 -2FA09;ID # CJK COMPATIBILITY IDEOGRAPH-2FA09 -2FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0A -2FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0B -2FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0C -2FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0D -2FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0E -2FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0F -2FA10;ID # CJK COMPATIBILITY IDEOGRAPH-2FA10 -2FA11;ID # CJK COMPATIBILITY IDEOGRAPH-2FA11 -2FA12;ID # CJK COMPATIBILITY IDEOGRAPH-2FA12 -2FA13;ID # CJK COMPATIBILITY IDEOGRAPH-2FA13 -2FA14;ID # CJK COMPATIBILITY IDEOGRAPH-2FA14 -2FA15;ID # CJK COMPATIBILITY IDEOGRAPH-2FA15 -2FA16;ID # CJK COMPATIBILITY IDEOGRAPH-2FA16 -2FA17;ID # CJK COMPATIBILITY IDEOGRAPH-2FA17 -2FA18;ID # CJK COMPATIBILITY IDEOGRAPH-2FA18 -2FA19;ID # CJK COMPATIBILITY IDEOGRAPH-2FA19 -2FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1A -2FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1B -2FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1C -2FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1D -E0001;CM # LANGUAGE TAG -E0020;CM # TAG SPACE -E0021;CM # TAG EXCLAMATION MARK -E0022;CM # TAG QUOTATION MARK -E0023;CM # TAG NUMBER SIGN -E0024;CM # TAG DOLLAR SIGN -E0025;CM # TAG PERCENT SIGN -E0026;CM # TAG AMPERSAND -E0027;CM # TAG APOSTROPHE -E0028;CM # TAG LEFT PARENTHESIS -E0029;CM # TAG RIGHT PARENTHESIS -E002A;CM # TAG ASTERISK -E002B;CM # TAG PLUS SIGN -E002C;CM # TAG COMMA -E002D;CM # TAG HYPHEN-MINUS -E002E;CM # TAG FULL STOP -E002F;CM # TAG SOLIDUS -E0030;CM # TAG DIGIT ZERO -E0031;CM # TAG DIGIT ONE -E0032;CM # TAG DIGIT TWO -E0033;CM # TAG DIGIT THREE -E0034;CM # TAG DIGIT FOUR -E0035;CM # TAG DIGIT FIVE -E0036;CM # TAG DIGIT SIX -E0037;CM # TAG DIGIT SEVEN -E0038;CM # TAG DIGIT EIGHT -E0039;CM # TAG DIGIT NINE -E003A;CM # TAG COLON -E003B;CM # TAG SEMICOLON -E003C;CM # TAG LESS-THAN SIGN -E003D;CM # TAG EQUALS SIGN -E003E;CM # TAG GREATER-THAN SIGN -E003F;CM # TAG QUESTION MARK -E0040;CM # TAG COMMERCIAL AT -E0041;CM # TAG LATIN CAPITAL LETTER A -E0042;CM # TAG LATIN CAPITAL LETTER B -E0043;CM # TAG LATIN CAPITAL LETTER C -E0044;CM # TAG LATIN CAPITAL LETTER D -E0045;CM # TAG LATIN CAPITAL LETTER E -E0046;CM # TAG LATIN CAPITAL LETTER F -E0047;CM # TAG LATIN CAPITAL LETTER G -E0048;CM # TAG LATIN CAPITAL LETTER H -E0049;CM # TAG LATIN CAPITAL LETTER I -E004A;CM # TAG LATIN CAPITAL LETTER J -E004B;CM # TAG LATIN CAPITAL LETTER K -E004C;CM # TAG LATIN CAPITAL LETTER L -E004D;CM # TAG LATIN CAPITAL LETTER M -E004E;CM # TAG LATIN CAPITAL LETTER N -E004F;CM # TAG LATIN CAPITAL LETTER O -E0050;CM # TAG LATIN CAPITAL LETTER P -E0051;CM # TAG LATIN CAPITAL LETTER Q -E0052;CM # TAG LATIN CAPITAL LETTER R -E0053;CM # TAG LATIN CAPITAL LETTER S -E0054;CM # TAG LATIN CAPITAL LETTER T -E0055;CM # TAG LATIN CAPITAL LETTER U -E0056;CM # TAG LATIN CAPITAL LETTER V -E0057;CM # TAG LATIN CAPITAL LETTER W -E0058;CM # TAG LATIN CAPITAL LETTER X -E0059;CM # TAG LATIN CAPITAL LETTER Y -E005A;CM # TAG LATIN CAPITAL LETTER Z -E005B;CM # TAG LEFT SQUARE BRACKET -E005C;CM # TAG REVERSE SOLIDUS -E005D;CM # TAG RIGHT SQUARE BRACKET -E005E;CM # TAG CIRCUMFLEX ACCENT -E005F;CM # TAG LOW LINE -E0060;CM # TAG GRAVE ACCENT -E0061;CM # TAG LATIN SMALL LETTER A -E0062;CM # TAG LATIN SMALL LETTER B -E0063;CM # TAG LATIN SMALL LETTER C -E0064;CM # TAG LATIN SMALL LETTER D -E0065;CM # TAG LATIN SMALL LETTER E -E0066;CM # TAG LATIN SMALL LETTER F -E0067;CM # TAG LATIN SMALL LETTER G -E0068;CM # TAG LATIN SMALL LETTER H -E0069;CM # TAG LATIN SMALL LETTER I -E006A;CM # TAG LATIN SMALL LETTER J -E006B;CM # TAG LATIN SMALL LETTER K -E006C;CM # TAG LATIN SMALL LETTER L -E006D;CM # TAG LATIN SMALL LETTER M -E006E;CM # TAG LATIN SMALL LETTER N -E006F;CM # TAG LATIN SMALL LETTER O -E0070;CM # TAG LATIN SMALL LETTER P -E0071;CM # TAG LATIN SMALL LETTER Q -E0072;CM # TAG LATIN SMALL LETTER R -E0073;CM # TAG LATIN SMALL LETTER S -E0074;CM # TAG LATIN SMALL LETTER T -E0075;CM # TAG LATIN SMALL LETTER U -E0076;CM # TAG LATIN SMALL LETTER V -E0077;CM # TAG LATIN SMALL LETTER W -E0078;CM # TAG LATIN SMALL LETTER X -E0079;CM # TAG LATIN SMALL LETTER Y -E007A;CM # TAG LATIN SMALL LETTER Z -E007B;CM # TAG LEFT CURLY BRACKET -E007C;CM # TAG VERTICAL LINE -E007D;CM # TAG RIGHT CURLY BRACKET -E007E;CM # TAG TILDE -E007F;CM # CANCEL TAG -E0100;CM # VARIATION SELECTOR-17 -E0101;CM # VARIATION SELECTOR-18 -E0102;CM # VARIATION SELECTOR-19 -E0103;CM # VARIATION SELECTOR-20 -E0104;CM # VARIATION SELECTOR-21 -E0105;CM # VARIATION SELECTOR-22 -E0106;CM # VARIATION SELECTOR-23 -E0107;CM # VARIATION SELECTOR-24 -E0108;CM # VARIATION SELECTOR-25 -E0109;CM # VARIATION SELECTOR-26 -E010A;CM # VARIATION SELECTOR-27 -E010B;CM # VARIATION SELECTOR-28 -E010C;CM # VARIATION SELECTOR-29 -E010D;CM # VARIATION SELECTOR-30 -E010E;CM # VARIATION SELECTOR-31 -E010F;CM # VARIATION SELECTOR-32 -E0110;CM # VARIATION SELECTOR-33 -E0111;CM # VARIATION SELECTOR-34 -E0112;CM # VARIATION SELECTOR-35 -E0113;CM # VARIATION SELECTOR-36 -E0114;CM # VARIATION SELECTOR-37 -E0115;CM # VARIATION SELECTOR-38 -E0116;CM # VARIATION SELECTOR-39 -E0117;CM # VARIATION SELECTOR-40 -E0118;CM # VARIATION SELECTOR-41 -E0119;CM # VARIATION SELECTOR-42 -E011A;CM # VARIATION SELECTOR-43 -E011B;CM # VARIATION SELECTOR-44 -E011C;CM # VARIATION SELECTOR-45 -E011D;CM # VARIATION SELECTOR-46 -E011E;CM # VARIATION SELECTOR-47 -E011F;CM # VARIATION SELECTOR-48 -E0120;CM # VARIATION SELECTOR-49 -E0121;CM # VARIATION SELECTOR-50 -E0122;CM # VARIATION SELECTOR-51 -E0123;CM # VARIATION SELECTOR-52 -E0124;CM # VARIATION SELECTOR-53 -E0125;CM # VARIATION SELECTOR-54 -E0126;CM # VARIATION SELECTOR-55 -E0127;CM # VARIATION SELECTOR-56 -E0128;CM # VARIATION SELECTOR-57 -E0129;CM # VARIATION SELECTOR-58 -E012A;CM # VARIATION SELECTOR-59 -E012B;CM # VARIATION SELECTOR-60 -E012C;CM # VARIATION SELECTOR-61 -E012D;CM # VARIATION SELECTOR-62 -E012E;CM # VARIATION SELECTOR-63 -E012F;CM # VARIATION SELECTOR-64 -E0130;CM # VARIATION SELECTOR-65 -E0131;CM # VARIATION SELECTOR-66 -E0132;CM # VARIATION SELECTOR-67 -E0133;CM # VARIATION SELECTOR-68 -E0134;CM # VARIATION SELECTOR-69 -E0135;CM # VARIATION SELECTOR-70 -E0136;CM # VARIATION SELECTOR-71 -E0137;CM # VARIATION SELECTOR-72 -E0138;CM # VARIATION SELECTOR-73 -E0139;CM # VARIATION SELECTOR-74 -E013A;CM # VARIATION SELECTOR-75 -E013B;CM # VARIATION SELECTOR-76 -E013C;CM # VARIATION SELECTOR-77 -E013D;CM # VARIATION SELECTOR-78 -E013E;CM # VARIATION SELECTOR-79 -E013F;CM # VARIATION SELECTOR-80 -E0140;CM # VARIATION SELECTOR-81 -E0141;CM # VARIATION SELECTOR-82 -E0142;CM # VARIATION SELECTOR-83 -E0143;CM # VARIATION SELECTOR-84 -E0144;CM # VARIATION SELECTOR-85 -E0145;CM # VARIATION SELECTOR-86 -E0146;CM # VARIATION SELECTOR-87 -E0147;CM # VARIATION SELECTOR-88 -E0148;CM # VARIATION SELECTOR-89 -E0149;CM # VARIATION SELECTOR-90 -E014A;CM # VARIATION SELECTOR-91 -E014B;CM # VARIATION SELECTOR-92 -E014C;CM # VARIATION SELECTOR-93 -E014D;CM # VARIATION SELECTOR-94 -E014E;CM # VARIATION SELECTOR-95 -E014F;CM # VARIATION SELECTOR-96 -E0150;CM # VARIATION SELECTOR-97 -E0151;CM # VARIATION SELECTOR-98 -E0152;CM # VARIATION SELECTOR-99 -E0153;CM # VARIATION SELECTOR-100 -E0154;CM # VARIATION SELECTOR-101 -E0155;CM # VARIATION SELECTOR-102 -E0156;CM # VARIATION SELECTOR-103 -E0157;CM # VARIATION SELECTOR-104 -E0158;CM # VARIATION SELECTOR-105 -E0159;CM # VARIATION SELECTOR-106 -E015A;CM # VARIATION SELECTOR-107 -E015B;CM # VARIATION SELECTOR-108 -E015C;CM # VARIATION SELECTOR-109 -E015D;CM # VARIATION SELECTOR-110 -E015E;CM # VARIATION SELECTOR-111 -E015F;CM # VARIATION SELECTOR-112 -E0160;CM # VARIATION SELECTOR-113 -E0161;CM # VARIATION SELECTOR-114 -E0162;CM # VARIATION SELECTOR-115 -E0163;CM # VARIATION SELECTOR-116 -E0164;CM # VARIATION SELECTOR-117 -E0165;CM # VARIATION SELECTOR-118 -E0166;CM # VARIATION SELECTOR-119 -E0167;CM # VARIATION SELECTOR-120 -E0168;CM # VARIATION SELECTOR-121 -E0169;CM # VARIATION SELECTOR-122 -E016A;CM # VARIATION SELECTOR-123 -E016B;CM # VARIATION SELECTOR-124 -E016C;CM # VARIATION SELECTOR-125 -E016D;CM # VARIATION SELECTOR-126 -E016E;CM # VARIATION SELECTOR-127 -E016F;CM # VARIATION SELECTOR-128 -E0170;CM # VARIATION SELECTOR-129 -E0171;CM # VARIATION SELECTOR-130 -E0172;CM # VARIATION SELECTOR-131 -E0173;CM # VARIATION SELECTOR-132 -E0174;CM # VARIATION SELECTOR-133 -E0175;CM # VARIATION SELECTOR-134 -E0176;CM # VARIATION SELECTOR-135 -E0177;CM # VARIATION SELECTOR-136 -E0178;CM # VARIATION SELECTOR-137 -E0179;CM # VARIATION SELECTOR-138 -E017A;CM # VARIATION SELECTOR-139 -E017B;CM # VARIATION SELECTOR-140 -E017C;CM # VARIATION SELECTOR-141 -E017D;CM # VARIATION SELECTOR-142 -E017E;CM # VARIATION SELECTOR-143 -E017F;CM # VARIATION SELECTOR-144 -E0180;CM # VARIATION SELECTOR-145 -E0181;CM # VARIATION SELECTOR-146 -E0182;CM # VARIATION SELECTOR-147 -E0183;CM # VARIATION SELECTOR-148 -E0184;CM # VARIATION SELECTOR-149 -E0185;CM # VARIATION SELECTOR-150 -E0186;CM # VARIATION SELECTOR-151 -E0187;CM # VARIATION SELECTOR-152 -E0188;CM # VARIATION SELECTOR-153 -E0189;CM # VARIATION SELECTOR-154 -E018A;CM # VARIATION SELECTOR-155 -E018B;CM # VARIATION SELECTOR-156 -E018C;CM # VARIATION SELECTOR-157 -E018D;CM # VARIATION SELECTOR-158 -E018E;CM # VARIATION SELECTOR-159 -E018F;CM # VARIATION SELECTOR-160 -E0190;CM # VARIATION SELECTOR-161 -E0191;CM # VARIATION SELECTOR-162 -E0192;CM # VARIATION SELECTOR-163 -E0193;CM # VARIATION SELECTOR-164 -E0194;CM # VARIATION SELECTOR-165 -E0195;CM # VARIATION SELECTOR-166 -E0196;CM # VARIATION SELECTOR-167 -E0197;CM # VARIATION SELECTOR-168 -E0198;CM # VARIATION SELECTOR-169 -E0199;CM # VARIATION SELECTOR-170 -E019A;CM # VARIATION SELECTOR-171 -E019B;CM # VARIATION SELECTOR-172 -E019C;CM # VARIATION SELECTOR-173 -E019D;CM # VARIATION SELECTOR-174 -E019E;CM # VARIATION SELECTOR-175 -E019F;CM # VARIATION SELECTOR-176 -E01A0;CM # VARIATION SELECTOR-177 -E01A1;CM # VARIATION SELECTOR-178 -E01A2;CM # VARIATION SELECTOR-179 -E01A3;CM # VARIATION SELECTOR-180 -E01A4;CM # VARIATION SELECTOR-181 -E01A5;CM # VARIATION SELECTOR-182 -E01A6;CM # VARIATION SELECTOR-183 -E01A7;CM # VARIATION SELECTOR-184 -E01A8;CM # VARIATION SELECTOR-185 -E01A9;CM # VARIATION SELECTOR-186 -E01AA;CM # VARIATION SELECTOR-187 -E01AB;CM # VARIATION SELECTOR-188 -E01AC;CM # VARIATION SELECTOR-189 -E01AD;CM # VARIATION SELECTOR-190 -E01AE;CM # VARIATION SELECTOR-191 -E01AF;CM # VARIATION SELECTOR-192 -E01B0;CM # VARIATION SELECTOR-193 -E01B1;CM # VARIATION SELECTOR-194 -E01B2;CM # VARIATION SELECTOR-195 -E01B3;CM # VARIATION SELECTOR-196 -E01B4;CM # VARIATION SELECTOR-197 -E01B5;CM # VARIATION SELECTOR-198 -E01B6;CM # VARIATION SELECTOR-199 -E01B7;CM # VARIATION SELECTOR-200 -E01B8;CM # VARIATION SELECTOR-201 -E01B9;CM # VARIATION SELECTOR-202 -E01BA;CM # VARIATION SELECTOR-203 -E01BB;CM # VARIATION SELECTOR-204 -E01BC;CM # VARIATION SELECTOR-205 -E01BD;CM # VARIATION SELECTOR-206 -E01BE;CM # VARIATION SELECTOR-207 -E01BF;CM # VARIATION SELECTOR-208 -E01C0;CM # VARIATION SELECTOR-209 -E01C1;CM # VARIATION SELECTOR-210 -E01C2;CM # VARIATION SELECTOR-211 -E01C3;CM # VARIATION SELECTOR-212 -E01C4;CM # VARIATION SELECTOR-213 -E01C5;CM # VARIATION SELECTOR-214 -E01C6;CM # VARIATION SELECTOR-215 -E01C7;CM # VARIATION SELECTOR-216 -E01C8;CM # VARIATION SELECTOR-217 -E01C9;CM # VARIATION SELECTOR-218 -E01CA;CM # VARIATION SELECTOR-219 -E01CB;CM # VARIATION SELECTOR-220 -E01CC;CM # VARIATION SELECTOR-221 -E01CD;CM # VARIATION SELECTOR-222 -E01CE;CM # VARIATION SELECTOR-223 -E01CF;CM # VARIATION SELECTOR-224 -E01D0;CM # VARIATION SELECTOR-225 -E01D1;CM # VARIATION SELECTOR-226 -E01D2;CM # VARIATION SELECTOR-227 -E01D3;CM # VARIATION SELECTOR-228 -E01D4;CM # VARIATION SELECTOR-229 -E01D5;CM # VARIATION SELECTOR-230 -E01D6;CM # VARIATION SELECTOR-231 -E01D7;CM # VARIATION SELECTOR-232 -E01D8;CM # VARIATION SELECTOR-233 -E01D9;CM # VARIATION SELECTOR-234 -E01DA;CM # VARIATION SELECTOR-235 -E01DB;CM # VARIATION SELECTOR-236 -E01DC;CM # VARIATION SELECTOR-237 -E01DD;CM # VARIATION SELECTOR-238 -E01DE;CM # VARIATION SELECTOR-239 -E01DF;CM # VARIATION SELECTOR-240 -E01E0;CM # VARIATION SELECTOR-241 -E01E1;CM # VARIATION SELECTOR-242 -E01E2;CM # VARIATION SELECTOR-243 -E01E3;CM # VARIATION SELECTOR-244 -E01E4;CM # VARIATION SELECTOR-245 -E01E5;CM # VARIATION SELECTOR-246 -E01E6;CM # VARIATION SELECTOR-247 -E01E7;CM # VARIATION SELECTOR-248 -E01E8;CM # VARIATION SELECTOR-249 -E01E9;CM # VARIATION SELECTOR-250 -E01EA;CM # VARIATION SELECTOR-251 -E01EB;CM # VARIATION SELECTOR-252 -E01EC;CM # VARIATION SELECTOR-253 -E01ED;CM # VARIATION SELECTOR-254 -E01EE;CM # VARIATION SELECTOR-255 -E01EF;CM # VARIATION SELECTOR-256 -F0000..FFFFD;XX # <Plane 15 Private Use, First>..<Plane 15 Private Use, Last> -100000..10FFFD;XX # <Plane 16 Private Use, First>..<Plane 16 Private Use, Last> - -# EOF \ No newline at end of file diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/LineBreak.cpp --- a/graphicsdeviceinterface/gdi/sgdi/LineBreak.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1990 +0,0 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// This file was last edited on 09/04/2007. Please read the 'Unicode Character Data and Line Break data Update History.doc' file -// for the latest updates. -// -// - -#include "LineBreak.h" -#include "LineBreakImp.h" -#include <e32std.h> -#include <e32svr.h> - -_LIT(KLinebreakPanicCategory,"LineBreak"); - -GLDEF_C void Panic(TInt aError) - { - User::Panic(KLinebreakPanicCategory,aError); - } - -const TUint KOpFlag = 1 << MLineBreaker::EOpLineBreakClass; -const TUint KClFlag = 1 << MLineBreaker::EClLineBreakClass; -const TUint KNsFlag = 1 << MLineBreaker::ENsLineBreakClass; -const TUint KExFlag = 1 << MLineBreaker::EExLineBreakClass; -const TUint KSyFlag = 1 << MLineBreaker::ESyLineBreakClass; -const TUint KIsFlag = 1 << MLineBreaker::EIsLineBreakClass; -const TUint KPrFlag = 1 << MLineBreaker::EPrLineBreakClass; -const TUint KPoFlag = 1 << MLineBreaker::EPoLineBreakClass; -const TUint KNuFlag = 1 << MLineBreaker::ENuLineBreakClass; -const TUint KAlFlag = 1 << MLineBreaker::EAlLineBreakClass; -const TUint KIdFlag = 1 << MLineBreaker::EIdLineBreakClass; -const TUint KInFlag = 1 << MLineBreaker::EInLineBreakClass; -const TUint KBbFlag = 1 << MLineBreaker::EBbLineBreakClass; -const TUint KB2Flag = 1 << MLineBreaker::EB2LineBreakClass; -const TUint KZwFlag = 1 << MLineBreaker::EZwLineBreakClass; -const TUint KCmFlag = 1 << MLineBreaker::ECmLineBreakClass; -const TUint KAiFlag = 1 << MLineBreaker::EAiLineBreakClass; - -const TUint KAiAlFlags = KAiFlag | KAlFlag; - -const TUint KAllBreaks = 0xFFFFFFFF; -const TUint KUsualForbidden = KClFlag | KExFlag | KSyFlag | KIsFlag | KZwFlag; -const TUint KUsualAllowed = KOpFlag | KPrFlag | KPoFlag | KNuFlag | KAiAlFlags | KIdFlag | KInFlag | KBbFlag | KB2Flag; - -const TUint KAlAllowed = KOpFlag | KPrFlag | KPoFlag | KIdFlag | KBbFlag | KB2Flag; - -// A table of break rules, indexed by the class of the character before the possible break. -static const TLineBreakRule TheLineBreakRuleTable[MLineBreaker::ELineBreakClasses] = - { - { KAllBreaks - KCmFlag,0 }, // Op - { KUsualForbidden | KNsFlag,KUsualAllowed - KPoFlag }, // Cl - { KUsualForbidden | KOpFlag,0 }, // Qu - { KUsualForbidden, 0 }, // Gl - { KUsualForbidden, KUsualAllowed }, // Ns - { KUsualForbidden, KUsualAllowed }, // Ex - { KUsualForbidden, KUsualAllowed - KNuFlag }, // Sy - { KUsualForbidden, KUsualAllowed - KNuFlag }, // Is - { KUsualForbidden, KPrFlag | KPoFlag | KInFlag | KBbFlag | KB2Flag }, // Pr - { KUsualForbidden, KUsualAllowed }, // Po - { KUsualForbidden, KOpFlag | KPrFlag | KIdFlag | KBbFlag | KB2Flag }, // Nu - { KUsualForbidden, KAlAllowed }, // Al - { KUsualForbidden, KUsualAllowed - KPoFlag - KInFlag }, // Id - { KUsualForbidden, KUsualAllowed - KInFlag }, // In - { KUsualForbidden, KUsualAllowed }, // Hy - { KUsualForbidden, KUsualAllowed }, // Ba - { KUsualForbidden, 0 }, // Bb - { KUsualForbidden | KB2Flag, KUsualAllowed }, // B2 - { KZwFlag, KAllBreaks - KZwFlag - KCmFlag}, // Zw - { KUsualForbidden, KOpFlag | KPrFlag | KPoFlag | KIdFlag | KBbFlag | KB2Flag }, // Cm - { 0, 0, }, // Bk - { 0, 0, }, // Cr - { 0, 0, }, // Lf - { 0, 0, }, // Sg - { 0, 0, }, // Cb - { KAllBreaks, 0, }, // Sp - { 0, 0, }, // Sa - { KUsualForbidden, KAlAllowed, }, // Ai - { 0, 0, } // Xx - }; - -/** -A sorted table of ranges of characters, with their line breaking classes. -A range includes all codes for iStart <= code < iEnd. -All these items have fixed range, please don't split any item into more or -combine consecutive items even if they have the same property, -because these change will cause mismatch with customer definition. -*/ -static const TLineBreakRange TheLineBreakRangeTable[] = - { - { 0x0000, 0x0009, MLineBreaker::ECmLineBreakClass }, //<control> - { 0x0009, 0x000a, MLineBreaker::EBaLineBreakClass }, //<control> - { 0x000a, 0x000b, MLineBreaker::ELfLineBreakClass }, //<control> - { 0x000b, 0x000c, MLineBreaker::ECmLineBreakClass }, //<control> - { 0x000c, 0x000d, MLineBreaker::EBkLineBreakClass }, //<control> - { 0x000d, 0x000e, MLineBreaker::ECrLineBreakClass }, //<control> - { 0x000e, 0x0020, MLineBreaker::ECmLineBreakClass }, //<control> - { 0x0020, 0x0021, MLineBreaker::ESpLineBreakClass }, //space - { 0x0021, 0x0022, MLineBreaker::EExLineBreakClass }, //exclamation mark - { 0x0022, 0x0023, MLineBreaker::EQuLineBreakClass }, //quotation mark - { 0x0023, 0x0024, MLineBreaker::EAlLineBreakClass }, //number sign - { 0x0024, 0x0025, MLineBreaker::EPrLineBreakClass }, //dollar sign - { 0x0025, 0x0026, MLineBreaker::EPoLineBreakClass }, //percent sign - { 0x0026, 0x0027, MLineBreaker::EAlLineBreakClass }, //ampersand - { 0x0027, 0x0028, MLineBreaker::EQuLineBreakClass }, //apostrophe - { 0x0028, 0x0029, MLineBreaker::EOpLineBreakClass }, //left parenthesis - { 0x0029, 0x002a, MLineBreaker::EClLineBreakClass }, //right parenthesis - { 0x002a, 0x002b, MLineBreaker::EAlLineBreakClass }, //asterisk - { 0x002b, 0x002c, MLineBreaker::EPrLineBreakClass }, //plus sign - { 0x002c, 0x002d, MLineBreaker::EIsLineBreakClass }, //comma - { 0x002d, 0x002e, MLineBreaker::EHyLineBreakClass }, //hyphen-minus - { 0x002e, 0x002f, MLineBreaker::EIsLineBreakClass }, //full stop - { 0x002f, 0x0030, MLineBreaker::ESyLineBreakClass }, //solidus - { 0x0030, 0x003a, MLineBreaker::ENuLineBreakClass }, //digit zero - { 0x003a, 0x003c, MLineBreaker::EIsLineBreakClass }, //colon - { 0x003c, 0x003f, MLineBreaker::EAlLineBreakClass }, //less-than sign - { 0x003f, 0x0040, MLineBreaker::EExLineBreakClass }, //question mark - { 0x0040, 0x005b, MLineBreaker::EAlLineBreakClass }, //commercial at - { 0x005b, 0x005c, MLineBreaker::EOpLineBreakClass }, //left square bracket - { 0x005c, 0x005d, MLineBreaker::EPrLineBreakClass }, //reverse solidus - { 0x005d, 0x005e, MLineBreaker::EClLineBreakClass }, //right square bracket - { 0x005e, 0x005f, MLineBreaker::EAlLineBreakClass }, //circumflex accent - { 0x005f, 0x0060, MLineBreaker::EAlLineBreakClass }, //low line (underscore) - { 0x0060, 0x007b, MLineBreaker::EAlLineBreakClass }, //grave accent - { 0x007b, 0x007c, MLineBreaker::EOpLineBreakClass }, //left curly bracket - { 0x007c, 0x007d, MLineBreaker::EBaLineBreakClass }, //vertical line - { 0x007d, 0x007e, MLineBreaker::EClLineBreakClass }, //right curly bracket - { 0x007e, 0x007f, MLineBreaker::EAlLineBreakClass }, //tilde - { 0x007f, 0x00a0, MLineBreaker::ECmLineBreakClass }, //<control> - { 0x00a0, 0x00a1, MLineBreaker::EGlLineBreakClass }, //no-break space - { 0x00a1, 0x00a2, MLineBreaker::EAiLineBreakClass }, //inverted exclamation mark - { 0x00a2, 0x00a3, MLineBreaker::EPoLineBreakClass }, //cent sign - { 0x00a3, 0x00a6, MLineBreaker::EPrLineBreakClass }, //pound sign - { 0x00a6, 0x00a7, MLineBreaker::EAlLineBreakClass }, //broken bar - { 0x00a7, 0x00a9, MLineBreaker::EAiLineBreakClass }, //section sign - { 0x00a9, 0x00aa, MLineBreaker::EAlLineBreakClass }, //copyright sign - { 0x00aa, 0x00ab, MLineBreaker::EAiLineBreakClass }, //feminine ordinal indicator - { 0x00ab, 0x00ac, MLineBreaker::EQuLineBreakClass }, //left-pointing double angle quotation mark - { 0x00ac, 0x00ad, MLineBreaker::EAlLineBreakClass }, //not sign - { 0x00ad, 0x00ae, MLineBreaker::EBaLineBreakClass }, //soft hyphen - { 0x00ae, 0x00b0, MLineBreaker::EAlLineBreakClass }, //registered sign - { 0x00b0, 0x00b1, MLineBreaker::EPoLineBreakClass }, //degree sign - { 0x00b1, 0x00b2, MLineBreaker::EPrLineBreakClass }, //plus-minus sign - { 0x00b2, 0x00b4, MLineBreaker::EAiLineBreakClass }, //superscript two - { 0x00b4, 0x00b5, MLineBreaker::EBaLineBreakClass }, //acute accent - { 0x00b5, 0x00b6, MLineBreaker::EAlLineBreakClass }, //micro sign - { 0x00b6, 0x00bb, MLineBreaker::EAiLineBreakClass }, //pilcrow sign - { 0x00bb, 0x00bc, MLineBreaker::EQuLineBreakClass }, //right-pointing double angle quotation mark - { 0x00bc, 0x00c0, MLineBreaker::EAiLineBreakClass }, //vulgar fraction one quarter - { 0x00c0, 0x00c6, MLineBreaker::EAlLineBreakClass }, //latin capital letter a with grave - { 0x00c6, 0x00c7, MLineBreaker::EAiLineBreakClass }, //latin capital letter ae - { 0x00c7, 0x00d0, MLineBreaker::EAlLineBreakClass }, //latin capital letter c with cedilla - { 0x00d0, 0x00d1, MLineBreaker::EAiLineBreakClass }, //latin capital letter eth - { 0x00d1, 0x00d7, MLineBreaker::EAlLineBreakClass }, //latin capital letter n with tilde - { 0x00d7, 0x00d9, MLineBreaker::EAiLineBreakClass }, //multiplication sign - { 0x00d9, 0x00de, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with grave - { 0x00de, 0x00e2, MLineBreaker::EAiLineBreakClass }, //latin capital letter thorn - { 0x00e2, 0x00e6, MLineBreaker::EAlLineBreakClass }, //latin small letter a with circumflex - { 0x00e6, 0x00e7, MLineBreaker::EAiLineBreakClass }, //latin small letter ae - { 0x00e7, 0x00e8, MLineBreaker::EAlLineBreakClass }, //latin small letter c with cedilla - { 0x00e8, 0x00eb, MLineBreaker::EAiLineBreakClass }, //latin small letter e with grave - { 0x00eb, 0x00ec, MLineBreaker::EAlLineBreakClass }, //latin small letter e with diaeresis - { 0x00ec, 0x00ee, MLineBreaker::EAiLineBreakClass }, //latin small letter i with grave - { 0x00ee, 0x00f0, MLineBreaker::EAlLineBreakClass }, //latin small letter i with circumflex - { 0x00f0, 0x00f1, MLineBreaker::EAiLineBreakClass }, //latin small letter eth - { 0x00f1, 0x00f2, MLineBreaker::EAlLineBreakClass }, //latin small letter n with tilde - { 0x00f2, 0x00f4, MLineBreaker::EAiLineBreakClass }, //latin small letter o with grave - { 0x00f4, 0x00f7, MLineBreaker::EAlLineBreakClass }, //latin small letter o with circumflex - { 0x00f7, 0x00fb, MLineBreaker::EAiLineBreakClass }, //division sign - { 0x00fb, 0x00fc, MLineBreaker::EAlLineBreakClass }, //latin small letter u with circumflex - { 0x00fc, 0x00fd, MLineBreaker::EAiLineBreakClass }, //latin small letter u with diaeresis - { 0x00fd, 0x00fe, MLineBreaker::EAlLineBreakClass }, //latin small letter y with acute - { 0x00fe, 0x00ff, MLineBreaker::EAiLineBreakClass }, //latin small letter thorn - { 0x00ff, 0x0101, MLineBreaker::EAlLineBreakClass }, //latin small letter y with diaeresis - { 0x0101, 0x0102, MLineBreaker::EAiLineBreakClass }, //latin small letter a with macron - { 0x0102, 0x0111, MLineBreaker::EAlLineBreakClass }, //latin capital letter a with breve - { 0x0111, 0x0112, MLineBreaker::EAiLineBreakClass }, //latin small letter d with stroke - { 0x0112, 0x0113, MLineBreaker::EAlLineBreakClass }, //latin capital letter e with macron - { 0x0113, 0x0114, MLineBreaker::EAiLineBreakClass }, //latin small letter e with macron - { 0x0114, 0x011b, MLineBreaker::EAlLineBreakClass }, //latin capital letter e with breve - { 0x011b, 0x011c, MLineBreaker::EAiLineBreakClass }, //latin small letter e with caron - { 0x011c, 0x0126, MLineBreaker::EAlLineBreakClass }, //latin capital letter g with circumflex - { 0x0126, 0x0128, MLineBreaker::EAiLineBreakClass }, //latin capital letter h with stroke - { 0x0128, 0x012b, MLineBreaker::EAlLineBreakClass }, //latin capital letter i with tilde - { 0x012b, 0x012c, MLineBreaker::EAiLineBreakClass }, //latin small letter i with macron - { 0x012c, 0x0131, MLineBreaker::EAlLineBreakClass }, //latin capital letter i with breve - { 0x0131, 0x0134, MLineBreaker::EAiLineBreakClass }, //latin small letter dotless i - { 0x0134, 0x0138, MLineBreaker::EAlLineBreakClass }, //latin capital letter j with circumflex - { 0x0138, 0x0139, MLineBreaker::EAiLineBreakClass }, //latin small letter kra - { 0x0139, 0x013f, MLineBreaker::EAlLineBreakClass }, //latin capital letter l with acute - { 0x013f, 0x0143, MLineBreaker::EAiLineBreakClass }, //latin capital letter l with middle dot - { 0x0143, 0x0144, MLineBreaker::EAlLineBreakClass }, //latin capital letter n with acute - { 0x0144, 0x0145, MLineBreaker::EAiLineBreakClass }, //latin small letter n with acute - { 0x0145, 0x0148, MLineBreaker::EAlLineBreakClass }, //latin capital letter n with cedilla - { 0x0148, 0x014b, MLineBreaker::EAiLineBreakClass }, //latin small letter n with caron - { 0x014b, 0x014d, MLineBreaker::EAlLineBreakClass }, //latin small letter eng - { 0x014d, 0x014e, MLineBreaker::EAiLineBreakClass }, //latin small letter o with macron - { 0x014e, 0x0152, MLineBreaker::EAlLineBreakClass }, //latin capital letter o with breve - { 0x0152, 0x0154, MLineBreaker::EAiLineBreakClass }, //latin capital ligature oe - { 0x0154, 0x0166, MLineBreaker::EAlLineBreakClass }, //latin capital letter r with acute - { 0x0166, 0x0168, MLineBreaker::EAiLineBreakClass }, //latin capital letter t with stroke - { 0x0168, 0x016b, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with tilde - { 0x016b, 0x016c, MLineBreaker::EAiLineBreakClass }, //latin small letter u with macron - { 0x016c, 0x01ce, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with breve - { 0x01ce, 0x01cf, MLineBreaker::EAiLineBreakClass }, //latin small letter a with caron - { 0x01cf, 0x01d0, MLineBreaker::EAlLineBreakClass }, //latin capital letter i with caron - { 0x01d0, 0x01d1, MLineBreaker::EAiLineBreakClass }, //latin small letter i with caron - { 0x01d1, 0x01d2, MLineBreaker::EAlLineBreakClass }, //latin capital letter o with caron - { 0x01d2, 0x01d3, MLineBreaker::EAiLineBreakClass }, //latin small letter o with caron - { 0x01d3, 0x01d4, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with caron - { 0x01d4, 0x01d5, MLineBreaker::EAiLineBreakClass }, //latin small letter u with caron - { 0x01d5, 0x01d6, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with diaeresis and macron - { 0x01d6, 0x01d7, MLineBreaker::EAiLineBreakClass }, //latin small letter u with diaeresis and macron - { 0x01d7, 0x01d8, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with diaeresis and acute - { 0x01d8, 0x01d9, MLineBreaker::EAiLineBreakClass }, //latin small letter u with diaeresis and acute - { 0x01d9, 0x01da, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with diaeresis and caron - { 0x01da, 0x01db, MLineBreaker::EAiLineBreakClass }, //latin small letter u with diaeresis and caron - { 0x01db, 0x01dc, MLineBreaker::EAlLineBreakClass }, //latin capital letter u with diaeresis and grave - { 0x01dc, 0x01dd, MLineBreaker::EAiLineBreakClass }, //latin small letter u with diaeresis and grave - { 0x01dd, 0x0250, MLineBreaker::EAlLineBreakClass }, //latin small letter turned e - { 0x0250, 0x0251, MLineBreaker::EAlLineBreakClass }, //latin small letter turned a - { 0x0251, 0x0252, MLineBreaker::EAiLineBreakClass }, //latin small letter alpha - { 0x0252, 0x0261, MLineBreaker::EAlLineBreakClass }, //latin small letter turned alpha - { 0x0261, 0x0262, MLineBreaker::EAiLineBreakClass }, //latin small letter script g - { 0x0262, 0x02c7, MLineBreaker::EAlLineBreakClass }, //latin letter small capital g - { 0x02c7, 0x02c8, MLineBreaker::EAiLineBreakClass }, //caron - { 0x02c8, 0x02c9, MLineBreaker::EBbLineBreakClass }, //modifier letter vertical line - { 0x02c9, 0x02cc, MLineBreaker::EAiLineBreakClass }, //modifier letter macron - { 0x02cc, 0x02cd, MLineBreaker::EBbLineBreakClass }, //modifier letter low vertical line - { 0x02cd, 0x02ce, MLineBreaker::EAiLineBreakClass }, //modifier letter low macron - { 0x02ce, 0x02d0, MLineBreaker::EAlLineBreakClass }, //modifier letter low grave accent - { 0x02d0, 0x02d1, MLineBreaker::EAiLineBreakClass }, //modifier letter triangular colon - { 0x02d1, 0x02d8, MLineBreaker::EAlLineBreakClass }, //modifier letter half triangular colon - { 0x02d8, 0x02dc, MLineBreaker::EAiLineBreakClass }, //breve - { 0x02dc, 0x02dd, MLineBreaker::EAlLineBreakClass }, //small tilde - { 0x02dd, 0x02de, MLineBreaker::EAiLineBreakClass }, //double acute accent - { 0x02de, 0x0300, MLineBreaker::EAlLineBreakClass }, //modifier letter rhotic hook - { 0x0300, 0x034f, MLineBreaker::ECmLineBreakClass }, //combining grave accent - { 0x034f, 0x0350, MLineBreaker::EGlLineBreakClass }, //COMBINING GRAPHEME JOINER - { 0x0350, 0x035c, MLineBreaker::ECmLineBreakClass }, //COMBINING RIGHT ARROWHEAD ABOVE - { 0x035c, 0x0360, MLineBreaker::EGlLineBreakClass }, //COMBINING DOUBLE BREVE BELOW - { 0x0360, 0x0370, MLineBreaker::ECmLineBreakClass }, //combining double tilde - { 0x0374, 0x0376, MLineBreaker::EAlLineBreakClass }, //greek numeral sign - { 0x037a, 0x037b, MLineBreaker::EAlLineBreakClass }, //greek ypogegrammeni - { 0x037b, 0x037e, MLineBreaker::EAlLineBreakClass }, //GREEK SMALL REVERSED LUNATE SIGMA SYMBOL - { 0x037e, 0x037f, MLineBreaker::EAlLineBreakClass }, //greek question mark - { 0x0384, 0x038b, MLineBreaker::EAlLineBreakClass }, //greek tonos - { 0x038c, 0x038d, MLineBreaker::EAlLineBreakClass }, //greek capital letter omicron with tonos - { 0x038e, 0x0391, MLineBreaker::EAlLineBreakClass }, //greek capital letter upsilon with tonos - { 0x0391, 0x03a2, MLineBreaker::EAiLineBreakClass }, //greek capital letter alpha - { 0x03a3, 0x03aa, MLineBreaker::EAiLineBreakClass }, //greek capital letter sigma - { 0x03aa, 0x03b1, MLineBreaker::EAlLineBreakClass }, //greek capital letter iota with dialytika - { 0x03b1, 0x03c2, MLineBreaker::EAiLineBreakClass }, //greek small letter alpha - { 0x03c2, 0x03c3, MLineBreaker::EAlLineBreakClass }, //greek small letter final sigma - { 0x03c3, 0x03ca, MLineBreaker::EAiLineBreakClass }, //greek small letter sigma - { 0x03ca, 0x03cf, MLineBreaker::EAlLineBreakClass }, //greek small letter iota with dialytika - { 0x03d0, 0x0400, MLineBreaker::EAlLineBreakClass }, //greek beta symbol - { 0x0400, 0x0401, MLineBreaker::EAlLineBreakClass }, //cyrillic capital letter ie with grave - { 0x0401, 0x0402, MLineBreaker::EAiLineBreakClass }, //cyrillic capital letter io - { 0x0402, 0x0410, MLineBreaker::EAlLineBreakClass }, //cyrillic capital letter dje - { 0x0410, 0x0450, MLineBreaker::EAiLineBreakClass }, //cyrillic capital letter a - { 0x0450, 0x0451, MLineBreaker::EAlLineBreakClass }, //cyrillic small letter ie with grave - { 0x0451, 0x0452, MLineBreaker::EAiLineBreakClass }, //cyrillic small letter io - { 0x0452, 0x0483, MLineBreaker::EAlLineBreakClass }, //cyrillic small letter dje - { 0x0483, 0x0487, MLineBreaker::ECmLineBreakClass }, //combining cyrillic titlo - { 0x0488, 0x048a, MLineBreaker::ECmLineBreakClass }, //combining cyrillic hundred thousands sign - { 0x048a, 0x0514, MLineBreaker::EAlLineBreakClass }, //CYRILLIC CAPITAL LETTER SHORT I WITH TAIL - { 0x0531, 0x0557, MLineBreaker::EAlLineBreakClass }, //armenian capital letter ayb - { 0x0559, 0x0560, MLineBreaker::EAlLineBreakClass }, //armenian modifier letter left half ring - { 0x0561, 0x0588, MLineBreaker::EAlLineBreakClass }, //armenian small letter ayb - { 0x0589, 0x058a, MLineBreaker::EIsLineBreakClass }, //armenian full stop - { 0x058a, 0x058b, MLineBreaker::EBaLineBreakClass }, //armenian hyphen - { 0x0591, 0x05be, MLineBreaker::ECmLineBreakClass }, //hebrew accent etnahta - { 0x05be, 0x05bf, MLineBreaker::EAlLineBreakClass }, //hebrew punctuation maqaf - { 0x05bf, 0x05c0, MLineBreaker::ECmLineBreakClass }, //hebrew point rafe - { 0x05c0, 0x05c1, MLineBreaker::EAlLineBreakClass }, //hebrew punctuation paseq - { 0x05c1, 0x05c3, MLineBreaker::ECmLineBreakClass }, //hebrew point shin dot - { 0x05c3, 0x05c4, MLineBreaker::EAlLineBreakClass }, //hebrew punctuation sof pasuq - { 0x05c4, 0x05c5, MLineBreaker::ECmLineBreakClass }, //hebrew mark upper dot - { 0x05c5, 0x05c6, MLineBreaker::ECmLineBreakClass }, //HEBREW MARK LOWER DOT - { 0x05c6, 0x05c7, MLineBreaker::EExLineBreakClass }, //HEBREW PUNCTUATION NUN HAFUKHA - { 0x05c7, 0x05c8, MLineBreaker::ECmLineBreakClass }, //HEBREW POINT QAMATS QATAN - { 0x05d0, 0x05eb, MLineBreaker::EAlLineBreakClass }, //hebrew letter alef - { 0x05f0, 0x05f5, MLineBreaker::EAlLineBreakClass }, //hebrew ligature yiddish double vav - { 0x0600, 0x0604, MLineBreaker::EAlLineBreakClass }, //ARABIC NUMBER SIGN - { 0x060b, 0x060c, MLineBreaker::EPoLineBreakClass }, //AFGHANI SIGN - { 0x060c, 0x060d, MLineBreaker::EExLineBreakClass }, //arabic comma - { 0x060d, 0x060e, MLineBreaker::EIsLineBreakClass }, //ARABIC DATE SEPARATOR - { 0x060e, 0x0610, MLineBreaker::EAlLineBreakClass }, //ARABIC POETIC VERSE SIGN - { 0x0610, 0x0616, MLineBreaker::ECmLineBreakClass }, //ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM - { 0x061b, 0x061c, MLineBreaker::EExLineBreakClass }, //arabic semicolon - { 0x061e, 0x061f, MLineBreaker::EExLineBreakClass }, //ARABIC TRIPLE DOT PUNCTUATION MARK - { 0x061f, 0x0620, MLineBreaker::EExLineBreakClass }, //arabic question mark - { 0x0621, 0x063b, MLineBreaker::EAlLineBreakClass }, //arabic letter hamza - { 0x0640, 0x064b, MLineBreaker::EAlLineBreakClass }, //arabic tatweel - { 0x064b, 0x065f, MLineBreaker::ECmLineBreakClass }, //arabic fathatan - { 0x0660, 0x066a, MLineBreaker::ENuLineBreakClass }, //arabic-indic digit zero - { 0x066a, 0x066b, MLineBreaker::EExLineBreakClass }, //arabic percent sign - { 0x066b, 0x066d, MLineBreaker::ENuLineBreakClass }, //arabic decimal & thousands separator - { 0x066d, 0x066e, MLineBreaker::EAlLineBreakClass }, //arabic five pointed star - { 0x066e, 0x0670, MLineBreaker::EAlLineBreakClass }, //arabic five pointed star - { 0x0670, 0x0671, MLineBreaker::ECmLineBreakClass }, //arabic letter superscript alef - { 0x0671, 0x06d4, MLineBreaker::EAlLineBreakClass }, //arabic letter alef wasla - { 0x06d4, 0x06d5, MLineBreaker::EExLineBreakClass }, //arabic full stop - { 0x06d5, 0x06d6, MLineBreaker::EAlLineBreakClass }, //arabic letter ae - { 0x06d6, 0x06e5, MLineBreaker::ECmLineBreakClass }, //arabic small high ligature sad with lam with alef maksura - { 0x06e5, 0x06e7, MLineBreaker::EAlLineBreakClass }, //arabic small waw - { 0x06e7, 0x06e9, MLineBreaker::ECmLineBreakClass }, //arabic small high yeh - { 0x06e9, 0x06ea, MLineBreaker::EAlLineBreakClass }, //arabic place of sajdah - { 0x06ea, 0x06ee, MLineBreaker::ECmLineBreakClass }, //arabic empty centre low stop - { 0x06ee, 0x06f0, MLineBreaker::EAlLineBreakClass }, //ARABIC LETTER DAL WITH INVERTED V - { 0x06f0, 0x06fa, MLineBreaker::ENuLineBreakClass }, //extended arabic-indic digit zero - { 0x06fa, 0x070e, MLineBreaker::EAlLineBreakClass }, //arabic letter sheen with dot below - { 0x070f, 0x0710, MLineBreaker::ECmLineBreakClass }, //syriac abbreviation mark - { 0x0710, 0x0711, MLineBreaker::EAlLineBreakClass }, //syriac letter alaph - { 0x0711, 0x0712, MLineBreaker::ECmLineBreakClass }, //syriac letter superscript alaph - { 0x0712, 0x0730, MLineBreaker::EAlLineBreakClass }, //syriac letter beth - { 0x0730, 0x074b, MLineBreaker::ECmLineBreakClass }, //syriac pthaha above - { 0x074d, 0x076e, MLineBreaker::EAlLineBreakClass }, //SYRIAC LETTER SOGDIAN ZHAIN - { 0x0780, 0x07a6, MLineBreaker::EAlLineBreakClass }, //thaana letter haa - { 0x07a6, 0x07b1, MLineBreaker::ECmLineBreakClass }, //thaana abafili - { 0x07b1, 0x07b2, MLineBreaker::EAlLineBreakClass }, //THAANA LETTER NAA - { 0x07c0, 0x07ca, MLineBreaker::ENuLineBreakClass }, //NKO DIGIT ZERO - { 0x07ca, 0x07eb, MLineBreaker::EAlLineBreakClass }, //NKO LETTER A - { 0x07eb, 0x07f4, MLineBreaker::ECmLineBreakClass }, //NKO COMBINING SHORT HIGH TONE - { 0x07f4, 0x07f8, MLineBreaker::EAlLineBreakClass }, //NKO HIGH TONE APOSTROPHE - { 0x07f8, 0x07f9, MLineBreaker::EIsLineBreakClass }, //NKO COMMA - { 0x07f9, 0x07fa, MLineBreaker::EExLineBreakClass }, //NKO EXCLAMATION MARK - { 0x07fa, 0x07fb, MLineBreaker::EAlLineBreakClass }, //NKO LAJANYALAN - { 0x0901, 0x0904, MLineBreaker::ECmLineBreakClass }, //devanagari sign candrabindu - { 0x0904, 0x093a, MLineBreaker::EAlLineBreakClass }, //devanagari letter short a: CR1080 - { 0x093c, 0x093d, MLineBreaker::ECmLineBreakClass }, //devanagari sign nukta - { 0x093d, 0x093e, MLineBreaker::EAlLineBreakClass }, //devanagari sign avagraha - { 0x093e, 0x094e, MLineBreaker::ECmLineBreakClass }, //devanagari vowel sign aa - { 0x0950, 0x0951, MLineBreaker::EAlLineBreakClass }, //devanagari om - { 0x0951, 0x0955, MLineBreaker::ECmLineBreakClass }, //devanagari stress sign udatta - { 0x0958, 0x0962, MLineBreaker::EAlLineBreakClass }, //devanagari letter qa - { 0x0962, 0x0964, MLineBreaker::ECmLineBreakClass }, //devanagari vowel sign vocalic l - { 0x0964, 0x0966, MLineBreaker::EAlLineBreakClass }, //devanagari danda - { 0x0966, 0x0970, MLineBreaker::ENuLineBreakClass }, //devanagari digit zero - { 0x0970, 0x0971, MLineBreaker::EAlLineBreakClass }, //devanagari abbreviation sign - { 0x097b, 0x0980, MLineBreaker::EAlLineBreakClass }, //devanagari letter gga: CR1080 - { 0x0981, 0x0984, MLineBreaker::ECmLineBreakClass }, //bengali sign candrabindu - { 0x0985, 0x098d, MLineBreaker::EAlLineBreakClass }, //bengali letter a - { 0x098f, 0x0991, MLineBreaker::EAlLineBreakClass }, //bengali letter e - { 0x0993, 0x09a9, MLineBreaker::EAlLineBreakClass }, //bengali letter o - { 0x09aa, 0x09b1, MLineBreaker::EAlLineBreakClass }, //bengali letter pa - { 0x09b2, 0x09b3, MLineBreaker::EAlLineBreakClass }, //bengali letter la - { 0x09b6, 0x09ba, MLineBreaker::EAlLineBreakClass }, //bengali letter sha - { 0x09bc, 0x09bd, MLineBreaker::ECmLineBreakClass }, //bengali sign nukta - { 0x09bd, 0x09be, MLineBreaker::EAlLineBreakClass }, //bengali sign avagraha: CR1080 - { 0x09be, 0x09c5, MLineBreaker::ECmLineBreakClass }, //bengali vowel sign aa - { 0x09c7, 0x09c9, MLineBreaker::ECmLineBreakClass }, //bengali vowel sign e - { 0x09cb, 0x09ce, MLineBreaker::ECmLineBreakClass }, //bengali vowel sign o - { 0x09ce, 0x09cf, MLineBreaker::EAlLineBreakClass }, //bengali letter khanda ta: CR1080 - { 0x09d7, 0x09d8, MLineBreaker::ECmLineBreakClass }, //bengali au length mark - { 0x09dc, 0x09de, MLineBreaker::EAlLineBreakClass }, //bengali letter rra - { 0x09df, 0x09e2, MLineBreaker::EAlLineBreakClass }, //bengali letter yya - { 0x09e2, 0x09e4, MLineBreaker::ECmLineBreakClass }, //bengali vowel sign vocalic l - { 0x09e6, 0x09f0, MLineBreaker::ENuLineBreakClass }, //bengali digit zero - { 0x09f0, 0x09f2, MLineBreaker::EAlLineBreakClass }, //bengali letter ra with middle diagonal - { 0x09f2, 0x09f4, MLineBreaker::EPrLineBreakClass }, //bengali rupee mark - { 0x09f4, 0x09fb, MLineBreaker::EAlLineBreakClass }, //bengali currency numerator one - { 0x0a01, 0x0a04, MLineBreaker::ECmLineBreakClass }, //gurmukhi sign adak bindi: CR1080 - { 0x0a05, 0x0a0b, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter a - { 0x0a0f, 0x0a11, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter ee - { 0x0a13, 0x0a29, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter oo - { 0x0a2a, 0x0a31, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter pa - { 0x0a32, 0x0a34, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter la - { 0x0a35, 0x0a37, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter va - { 0x0a38, 0x0a3a, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter sa - { 0x0a3c, 0x0a3d, MLineBreaker::ECmLineBreakClass }, //gurmukhi sign nukta - { 0x0a3e, 0x0a43, MLineBreaker::ECmLineBreakClass }, //gurmukhi vowel sign aa - { 0x0a47, 0x0a49, MLineBreaker::ECmLineBreakClass }, //gurmukhi vowel sign ee - { 0x0a4b, 0x0a4e, MLineBreaker::ECmLineBreakClass }, //gurmukhi vowel sign oo - { 0x0a59, 0x0a5d, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter khha - { 0x0a5e, 0x0a5f, MLineBreaker::EAlLineBreakClass }, //gurmukhi letter fa - { 0x0a66, 0x0a70, MLineBreaker::ENuLineBreakClass }, //gurmukhi digit zero - { 0x0a70, 0x0a72, MLineBreaker::ECmLineBreakClass }, //gurmukhi tippi - { 0x0a72, 0x0a75, MLineBreaker::EAlLineBreakClass }, //gurmukhi iri - { 0x0a81, 0x0a84, MLineBreaker::ECmLineBreakClass }, //gujarati sign candrabindu - { 0x0a85, 0x0a8d, MLineBreaker::EAlLineBreakClass }, //gujarati letter a: CR1080 - { 0x0a8d, 0x0a8e, MLineBreaker::EAlLineBreakClass }, //gujarati vowel candra e - { 0x0a8f, 0x0a92, MLineBreaker::EAlLineBreakClass }, //gujarati letter e - { 0x0a93, 0x0aa9, MLineBreaker::EAlLineBreakClass }, //gujarati letter o - { 0x0aaa, 0x0ab1, MLineBreaker::EAlLineBreakClass }, //gujarati letter pa - { 0x0ab2, 0x0ab4, MLineBreaker::EAlLineBreakClass }, //gujarati letter la - { 0x0ab5, 0x0aba, MLineBreaker::EAlLineBreakClass }, //gujarati letter va - { 0x0abc, 0x0abd, MLineBreaker::ECmLineBreakClass }, //gujarati sign nukta - { 0x0abd, 0x0abe, MLineBreaker::EAlLineBreakClass }, //gujarati sign avagraha - { 0x0abe, 0x0ac6, MLineBreaker::ECmLineBreakClass }, //gujarati vowel sign aa - { 0x0ac7, 0x0aca, MLineBreaker::ECmLineBreakClass }, //gujarati vowel sign e - { 0x0acb, 0x0ace, MLineBreaker::ECmLineBreakClass }, //gujarati vowel sign o - { 0x0ad0, 0x0ad1, MLineBreaker::EAlLineBreakClass }, //gujarati om - { 0x0ae0, 0x0ae2, MLineBreaker::EAlLineBreakClass }, //gujarati letter vocalic rr: CR1080 - { 0x0ae2, 0x0ae4, MLineBreaker::ECmLineBreakClass }, //gujarati vowel sign vocalic l: CR1080 - { 0x0ae6, 0x0af0, MLineBreaker::ENuLineBreakClass }, //gujarati digit zero - { 0x0af1, 0x0af2, MLineBreaker::EPrLineBreakClass }, //gujarati rupee sign: CR1080 - { 0x0b01, 0x0b04, MLineBreaker::ECmLineBreakClass }, //oriya sign candrabindu - { 0x0b05, 0x0b0d, MLineBreaker::EAlLineBreakClass }, //oriya letter a - { 0x0b0f, 0x0b11, MLineBreaker::EAlLineBreakClass }, //oriya letter e - { 0x0b13, 0x0b29, MLineBreaker::EAlLineBreakClass }, //oriya letter o - { 0x0b2a, 0x0b31, MLineBreaker::EAlLineBreakClass }, //oriya letter pa - { 0x0b32, 0x0b34, MLineBreaker::EAlLineBreakClass }, //oriya letter la - { 0x0b35, 0x0b36, MLineBreaker::EAlLineBreakClass }, //oriya letter va: CR1080 - { 0x0b36, 0x0b3a, MLineBreaker::EAlLineBreakClass }, //oriya letter sha - { 0x0b3c, 0x0b3d, MLineBreaker::ECmLineBreakClass }, //oriya sign nukta - { 0x0b3d, 0x0b3e, MLineBreaker::EAlLineBreakClass }, //oriya sign avagraha - { 0x0b3e, 0x0b44, MLineBreaker::ECmLineBreakClass }, //oriya vowel sign aa - { 0x0b47, 0x0b49, MLineBreaker::ECmLineBreakClass }, //oriya vowel sign e - { 0x0b4b, 0x0b4e, MLineBreaker::ECmLineBreakClass }, //oriya vowel sign o - { 0x0b56, 0x0b58, MLineBreaker::ECmLineBreakClass }, //oriya ai length mark - { 0x0b5c, 0x0b5e, MLineBreaker::EAlLineBreakClass }, //oriya letter rra - { 0x0b5f, 0x0b62, MLineBreaker::EAlLineBreakClass }, //oriya letter yya - { 0x0b66, 0x0b70, MLineBreaker::ENuLineBreakClass }, //oriya digit zero - { 0x0b70, 0x0b71, MLineBreaker::EAlLineBreakClass }, //oriya isshar - { 0x0b71, 0x0b72, MLineBreaker::EAlLineBreakClass }, //oriya letter wa: CR1080 - { 0x0b82, 0x0b84, MLineBreaker::ECmLineBreakClass }, //tamil sign anusvara - { 0x0b85, 0x0b8b, MLineBreaker::EAlLineBreakClass }, //tamil letter a - { 0x0b8e, 0x0b91, MLineBreaker::EAlLineBreakClass }, //tamil letter e - { 0x0b92, 0x0b96, MLineBreaker::EAlLineBreakClass }, //tamil letter o - { 0x0b99, 0x0b9b, MLineBreaker::EAlLineBreakClass }, //tamil letter nga - { 0x0b9c, 0x0b9d, MLineBreaker::EAlLineBreakClass }, //tamil letter ja - { 0x0b9e, 0x0ba0, MLineBreaker::EAlLineBreakClass }, //tamil letter nya - { 0x0ba3, 0x0ba5, MLineBreaker::EAlLineBreakClass }, //tamil letter nna - { 0x0ba8, 0x0bab, MLineBreaker::EAlLineBreakClass }, //tamil letter na - { 0x0bae, 0x0bba, MLineBreaker::EAlLineBreakClass }, //tamil letter ma: CR1080 - { 0x0bbe, 0x0bc3, MLineBreaker::ECmLineBreakClass }, //tamil vowel sign aa - { 0x0bc6, 0x0bc9, MLineBreaker::ECmLineBreakClass }, //tamil vowel sign e - { 0x0bca, 0x0bce, MLineBreaker::ECmLineBreakClass }, //tamil vowel sign o - { 0x0bd7, 0x0bd8, MLineBreaker::ECmLineBreakClass }, //tamil au length mark - { 0x0be6, 0x0bf0, MLineBreaker::ENuLineBreakClass }, //tamil digit one: CR1080 - { 0x0bf0, 0x0bf9, MLineBreaker::EAlLineBreakClass }, //tamil number ten: CR1080 - { 0x0bf9, 0x0bfa, MLineBreaker::EPrLineBreakClass }, //tamil rupee sign: CR1080 - { 0x0bfa, 0x0bfb, MLineBreaker::EAlLineBreakClass }, //tamil number sign: CR1080 - { 0x0c01, 0x0c04, MLineBreaker::ECmLineBreakClass }, //telugu sign candrabindu - { 0x0c05, 0x0c0d, MLineBreaker::EAlLineBreakClass }, //telugu letter a - { 0x0c0e, 0x0c11, MLineBreaker::EAlLineBreakClass }, //telugu letter e - { 0x0c12, 0x0c29, MLineBreaker::EAlLineBreakClass }, //telugu letter o - { 0x0c2a, 0x0c34, MLineBreaker::EAlLineBreakClass }, //telugu letter pa - { 0x0c35, 0x0c3a, MLineBreaker::EAlLineBreakClass }, //telugu letter va - { 0x0c3e, 0x0c45, MLineBreaker::ECmLineBreakClass }, //telugu vowel sign aa - { 0x0c46, 0x0c49, MLineBreaker::ECmLineBreakClass }, //telugu vowel sign e - { 0x0c4a, 0x0c4e, MLineBreaker::ECmLineBreakClass }, //telugu vowel sign o - { 0x0c55, 0x0c57, MLineBreaker::ECmLineBreakClass }, //telugu length mark - { 0x0c60, 0x0c62, MLineBreaker::EAlLineBreakClass }, //telugu letter vocalic rr - { 0x0c66, 0x0c70, MLineBreaker::ENuLineBreakClass }, //telugu digit zero - { 0x0c82, 0x0c84, MLineBreaker::ECmLineBreakClass }, //kannada sign anusvara - { 0x0c85, 0x0c8d, MLineBreaker::EAlLineBreakClass }, //kannada letter a - { 0x0c8e, 0x0c91, MLineBreaker::EAlLineBreakClass }, //kannada letter e - { 0x0c92, 0x0ca9, MLineBreaker::EAlLineBreakClass }, //kannada letter o - { 0x0caa, 0x0cb4, MLineBreaker::EAlLineBreakClass }, //kannada letter pa - { 0x0cb5, 0x0cba, MLineBreaker::EAlLineBreakClass }, //kannada letter va - { 0x0cbc, 0x0cbd, MLineBreaker::ECmLineBreakClass }, //kannada sign nukta: CR1080 - { 0x0cbd, 0x0cbe, MLineBreaker::EAlLineBreakClass }, //kannada sign avagraha: CR1080 - { 0x0cbe, 0x0cc5, MLineBreaker::ECmLineBreakClass }, //kannada vowel sign aa - { 0x0cc6, 0x0cc9, MLineBreaker::ECmLineBreakClass }, //kannada vowel sign e - { 0x0cca, 0x0cce, MLineBreaker::ECmLineBreakClass }, //kannada vowel sign o - { 0x0cd5, 0x0cd7, MLineBreaker::ECmLineBreakClass }, //kannada length mark - { 0x0cde, 0x0cdf, MLineBreaker::EAlLineBreakClass }, //kannada letter fa - { 0x0ce0, 0x0ce2, MLineBreaker::EAlLineBreakClass }, //kannada letter vocalic rr - { 0x0ce2, 0x0ce4, MLineBreaker::ECmLineBreakClass }, //kannada vowel sign vocalic l: CR1080 - { 0x0ce6, 0x0cf0, MLineBreaker::ENuLineBreakClass }, //kannada digit zero - { 0x0cf1, 0x0cf3, MLineBreaker::EAlLineBreakClass }, //kannada sign jihvamuliya: CR1080 - { 0x0d02, 0x0d04, MLineBreaker::ECmLineBreakClass }, //malayalam sign anusvara - { 0x0d05, 0x0d0d, MLineBreaker::EAlLineBreakClass }, //malayalam letter a - { 0x0d0e, 0x0d11, MLineBreaker::EAlLineBreakClass }, //malayalam letter e - { 0x0d12, 0x0d29, MLineBreaker::EAlLineBreakClass }, //malayalam letter o - { 0x0d2a, 0x0d3a, MLineBreaker::EAlLineBreakClass }, //malayalam letter pa - { 0x0d3e, 0x0d44, MLineBreaker::ECmLineBreakClass }, //malayalam vowel sign aa - { 0x0d46, 0x0d49, MLineBreaker::ECmLineBreakClass }, //malayalam vowel sign e - { 0x0d4a, 0x0d4e, MLineBreaker::ECmLineBreakClass }, //malayalam vowel sign o - { 0x0d57, 0x0d58, MLineBreaker::ECmLineBreakClass }, //malayalam au length mark - { 0x0d60, 0x0d62, MLineBreaker::EAlLineBreakClass }, //malayalam letter vocalic rr - { 0x0d66, 0x0d70, MLineBreaker::ENuLineBreakClass }, //malayalam digit zero - { 0x0d82, 0x0d84, MLineBreaker::ECmLineBreakClass }, //sinhala sign anusvaraya - { 0x0d85, 0x0d97, MLineBreaker::EAlLineBreakClass }, //sinhala letter ayanna - { 0x0d9a, 0x0db2, MLineBreaker::EAlLineBreakClass }, //sinhala letter alpapraana kayanna - { 0x0db3, 0x0dbc, MLineBreaker::EAlLineBreakClass }, //sinhala letter sanyaka dayanna - { 0x0dbd, 0x0dbe, MLineBreaker::EAlLineBreakClass }, //sinhala letter dantaja layanna - { 0x0dc0, 0x0dc7, MLineBreaker::EAlLineBreakClass }, //sinhala letter vayanna - { 0x0dca, 0x0dcb, MLineBreaker::ECmLineBreakClass }, //sinhala sign al-lakuna - { 0x0dcf, 0x0dd5, MLineBreaker::ECmLineBreakClass }, //sinhala vowel sign aela-pilla - { 0x0dd6, 0x0dd7, MLineBreaker::ECmLineBreakClass }, //sinhala vowel sign diga paa-pilla - { 0x0dd8, 0x0de0, MLineBreaker::ECmLineBreakClass }, //sinhala vowel sign gaetta-pilla - { 0x0df2, 0x0df4, MLineBreaker::ECmLineBreakClass }, //sinhala vowel sign diga gaetta-pilla - { 0x0df4, 0x0df5, MLineBreaker::EAlLineBreakClass }, //sinhala punctuation kunddaliya - { 0x0e01, 0x0e31, MLineBreaker::ESaLineBreakClass }, //thai character ko kai - { 0x0e31, 0x0e32, MLineBreaker::ECmLineBreakClass }, //thai character mai han-akat - { 0x0e32, 0x0e34, MLineBreaker::ESaLineBreakClass }, //thai character sara aa - { 0x0e34, 0x0e3b, MLineBreaker::ECmLineBreakClass }, //thai character sara i - { 0x0e3f, 0x0e40, MLineBreaker::EPrLineBreakClass }, //thai currency symbol baht - { 0x0e40, 0x0e47, MLineBreaker::ESaLineBreakClass }, //thai character sara e - { 0x0e47, 0x0e4f, MLineBreaker::ECmLineBreakClass }, //thai character maitaikhu - { 0x0e4f, 0x0e50, MLineBreaker::EAlLineBreakClass }, //thai character fongman - { 0x0e50, 0x0e5a, MLineBreaker::ENuLineBreakClass }, //thai digit zero - { 0x0e5a, 0x0e5c, MLineBreaker::ENsLineBreakClass }, //thai character angkhankhu - { 0x0e81, 0x0e83, MLineBreaker::ESaLineBreakClass }, //lao letter ko - { 0x0e84, 0x0e85, MLineBreaker::ESaLineBreakClass }, //lao letter kho tam - { 0x0e87, 0x0e89, MLineBreaker::ESaLineBreakClass }, //lao letter ngo - { 0x0e8a, 0x0e8b, MLineBreaker::ESaLineBreakClass }, //lao letter so tam - { 0x0e8d, 0x0e8e, MLineBreaker::ESaLineBreakClass }, //lao letter nyo - { 0x0e94, 0x0e98, MLineBreaker::ESaLineBreakClass }, //lao letter do - { 0x0e99, 0x0ea0, MLineBreaker::ESaLineBreakClass }, //lao letter no - { 0x0ea1, 0x0ea4, MLineBreaker::ESaLineBreakClass }, //lao letter mo - { 0x0ea5, 0x0ea6, MLineBreaker::ESaLineBreakClass }, //lao letter lo loot - { 0x0ea7, 0x0ea8, MLineBreaker::ESaLineBreakClass }, //lao letter wo - { 0x0eaa, 0x0eac, MLineBreaker::ESaLineBreakClass }, //lao letter so sung - { 0x0ead, 0x0eb1, MLineBreaker::ESaLineBreakClass }, //lao letter o - { 0x0eb1, 0x0eb2, MLineBreaker::ECmLineBreakClass }, //lao vowel sign mai kan - { 0x0eb2, 0x0eb4, MLineBreaker::ESaLineBreakClass }, //lao vowel sign aa - { 0x0eb4, 0x0eba, MLineBreaker::ECmLineBreakClass }, //lao vowel sign i - { 0x0ebb, 0x0ebd, MLineBreaker::ECmLineBreakClass }, //lao vowel sign mai kon - { 0x0ebd, 0x0ebe, MLineBreaker::ESaLineBreakClass }, //lao semivowel sign nyo - { 0x0ec0, 0x0ec5, MLineBreaker::ESaLineBreakClass }, //lao vowel sign e - { 0x0ec6, 0x0ec7, MLineBreaker::ESaLineBreakClass }, //lao ko la - { 0x0ec8, 0x0ece, MLineBreaker::ECmLineBreakClass }, //lao tone mai ek - { 0x0ed0, 0x0eda, MLineBreaker::ENuLineBreakClass }, //lao digit zero - { 0x0edc, 0x0ede, MLineBreaker::ESaLineBreakClass }, //lao ho no - { 0x0f00, 0x0f0b, MLineBreaker::EAlLineBreakClass }, //tibetan syllable om - { 0x0f0b, 0x0f0c, MLineBreaker::EBaLineBreakClass }, //tibetan mark intersyllabic tsheg - { 0x0f0c, 0x0f0d, MLineBreaker::EGlLineBreakClass }, //tibetan mark delimiter tsheg bstar - { 0x0f0d, 0x0f18, MLineBreaker::EAlLineBreakClass }, //tibetan mark shad - { 0x0f18, 0x0f1a, MLineBreaker::ECmLineBreakClass }, //tibetan astrological sign -khyud pa - { 0x0f1a, 0x0f20, MLineBreaker::EAlLineBreakClass }, //tibetan sign rdel dkar gcig - { 0x0f20, 0x0f2a, MLineBreaker::ENuLineBreakClass }, //tibetan digit zero - { 0x0f2a, 0x0f35, MLineBreaker::EAlLineBreakClass }, //tibetan digit half one - { 0x0f35, 0x0f36, MLineBreaker::ECmLineBreakClass }, //tibetan mark ngas bzung nyi zla - { 0x0f36, 0x0f37, MLineBreaker::EAlLineBreakClass }, //tibetan mark caret -dzud rtags bzhi mig can - { 0x0f37, 0x0f38, MLineBreaker::ECmLineBreakClass }, //tibetan mark ngas bzung sgor rtags - { 0x0f38, 0x0f39, MLineBreaker::EAlLineBreakClass }, //tibetan mark che mgo - { 0x0f39, 0x0f3a, MLineBreaker::ECmLineBreakClass }, //tibetan mark tsa -phru - { 0x0f3a, 0x0f3b, MLineBreaker::EOpLineBreakClass }, //tibetan mark gug rtags gyon - { 0x0f3b, 0x0f3c, MLineBreaker::EClLineBreakClass }, //tibetan mark gug rtags gyas - { 0x0f3c, 0x0f3d, MLineBreaker::EOpLineBreakClass }, //tibetan mark ang khang gyon - { 0x0f3d, 0x0f3e, MLineBreaker::EClLineBreakClass }, //tibetan mark ang khang gyas - { 0x0f3e, 0x0f40, MLineBreaker::ECmLineBreakClass }, //tibetan sign yar tshes - { 0x0f40, 0x0f48, MLineBreaker::EAlLineBreakClass }, //tibetan letter ka - { 0x0f49, 0x0f6b, MLineBreaker::EAlLineBreakClass }, //tibetan letter nya - { 0x0f71, 0x0f85, MLineBreaker::ECmLineBreakClass }, //tibetan vowel sign aa - { 0x0f85, 0x0f86, MLineBreaker::EAlLineBreakClass }, //tibetan mark paluta - { 0x0f86, 0x0f88, MLineBreaker::ECmLineBreakClass }, //tibetan sign lci rtags - { 0x0f88, 0x0f8c, MLineBreaker::EAlLineBreakClass }, //tibetan sign lce tsa can - { 0x0f90, 0x0f98, MLineBreaker::ECmLineBreakClass }, //tibetan subjoined letter ka - { 0x0f99, 0x0fbd, MLineBreaker::ECmLineBreakClass }, //tibetan subjoined letter nya - { 0x0fbe, 0x0fc6, MLineBreaker::EAlLineBreakClass }, //tibetan ku ru kha - { 0x0fc6, 0x0fc7, MLineBreaker::ECmLineBreakClass }, //tibetan symbol padma gdan - { 0x0fc7, 0x0fcd, MLineBreaker::EAlLineBreakClass }, //tibetan symbol rdo rje rgya gram - { 0x0fcf, 0x0fd0, MLineBreaker::EAlLineBreakClass }, //tibetan sign rdel nag gsum - { 0x0fd0, 0x0fd2, MLineBreaker::EBbLineBreakClass }, //TIBETAN MARK BSKA- SHOG GI MGO RGYAN - { 0x1000, 0x1022, MLineBreaker::ESaLineBreakClass }, //myanmar letter ka - { 0x1023, 0x1028, MLineBreaker::ESaLineBreakClass }, //myanmar letter i - { 0x1029, 0x102b, MLineBreaker::ESaLineBreakClass }, //myanmar letter o - { 0x102c, 0x1033, MLineBreaker::ECmLineBreakClass }, //myanmar vowel sign aa - { 0x1036, 0x103a, MLineBreaker::ECmLineBreakClass }, //myanmar sign anusvara - { 0x1040, 0x104a, MLineBreaker::ENuLineBreakClass }, //myanmar digit zero - { 0x104a, 0x1050, MLineBreaker::EAlLineBreakClass }, //myanmar sign little section - { 0x1050, 0x1056, MLineBreaker::ESaLineBreakClass }, //myanmar letter sha - { 0x1056, 0x105a, MLineBreaker::ECmLineBreakClass }, //myanmar vowel sign vocalic r - { 0x10a0, 0x10c6, MLineBreaker::EAlLineBreakClass }, //georgian capital letter an - { 0x10d0, 0x10fb, MLineBreaker::EAlLineBreakClass }, //georgian letter an - { 0x10fb, 0x10fc, MLineBreaker::EAlLineBreakClass }, //georgian paragraph separator - { 0x10fc, 0x10fd, MLineBreaker::EAlLineBreakClass }, //MODIFIER LETTER GEORGIAN NAR - { 0x1100, 0x115a, MLineBreaker::EIdLineBreakClass }, //hangul choseong kiyeok - { 0x115f, 0x1160, MLineBreaker::EIdLineBreakClass }, //hangul choseong filler - { 0x1160, 0x11a3, MLineBreaker::ECmLineBreakClass }, //hangul jungseong filler - { 0x11a8, 0x11fa, MLineBreaker::ECmLineBreakClass }, //hangul jongseong kiyeok - { 0x1200, 0x1248, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable ha - { 0x1248, 0x1249, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable qwa - { 0x124a, 0x124e, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable qwi - { 0x1250, 0x1257, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable qha - { 0x1258, 0x1259, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable qhwa - { 0x125a, 0x125e, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable qhwi - { 0x1260, 0x1288, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable ba - { 0x1288, 0x1289, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable xwa - { 0x128a, 0x128e, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable xwi - { 0x1290, 0x12b0, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable na - { 0x12b0, 0x12b1, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable kwa - { 0x12b2, 0x12b6, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable kwi - { 0x12b8, 0x12bf, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable kxa - { 0x12c0, 0x12c1, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable kxwa - { 0x12c2, 0x12c6, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable kxwi - { 0x12c8, 0x12d7, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable wa - { 0x12d8, 0x1310, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable za - { 0x1310, 0x1311, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable gwa - { 0x1312, 0x1316, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable gwi - { 0x1318, 0x135b, MLineBreaker::EAlLineBreakClass }, //ethiopic syllable gga - { 0x135f, 0x1360, MLineBreaker::ECmLineBreakClass }, //ETHIOPIC COMBINING GEMINATION MARK - { 0x1360, 0x1361, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SECTION MARK - { 0x1361, 0x1362, MLineBreaker::EBaLineBreakClass }, //ethiopic wordspace - { 0x1362, 0x1369, MLineBreaker::EAlLineBreakClass }, //ethiopic full stop - { 0x1369, 0x1372, MLineBreaker::ENuLineBreakClass }, //ethiopic digit one - { 0x1372, 0x137d, MLineBreaker::EAlLineBreakClass }, //ethiopic number ten - { 0x1380, 0x139a, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE SEBATBEIT MWA - { 0x13a0, 0x13f5, MLineBreaker::EAlLineBreakClass }, //cherokee letter a - { 0x1401, 0x1677, MLineBreaker::EAlLineBreakClass }, //canadian syllabics e - { 0x1680, 0x1681, MLineBreaker::EBaLineBreakClass }, //ogham space mark - { 0x1681, 0x169b, MLineBreaker::EAlLineBreakClass }, //ogham letter beith - { 0x169b, 0x169c, MLineBreaker::EOpLineBreakClass }, //ogham feather mark - { 0x169c, 0x169d, MLineBreaker::EClLineBreakClass }, //ogham reversed feather mark - { 0x16a0, 0x16f1, MLineBreaker::EAlLineBreakClass }, //runic letter fehu feoh fe f - { 0x1700, 0x170d, MLineBreaker::EAlLineBreakClass }, //TAGALOG LETTER A - { 0x170e, 0x1712, MLineBreaker::EAlLineBreakClass }, //TAGALOG LETTER LA - { 0x1712, 0x1715, MLineBreaker::ECmLineBreakClass }, //TAGALOG VOWEL SIGN I - { 0x1720, 0x1732, MLineBreaker::EAlLineBreakClass }, //HANUNOO LETTER A - { 0x1732, 0x1735, MLineBreaker::ECmLineBreakClass }, //HANUNOO VOWEL SIGN I - { 0x1735, 0x1737, MLineBreaker::EBaLineBreakClass }, //PHILIPPINE SINGLE PUNCTUATION - { 0x1740, 0x1752, MLineBreaker::EAlLineBreakClass }, //BUHID LETTER A - { 0x1752, 0x1754, MLineBreaker::ECmLineBreakClass }, //BUHID VOWEL SIGN I - { 0x1760, 0x176d, MLineBreaker::EAlLineBreakClass }, //TAGBANWA LETTER A - { 0x176e, 0x1771, MLineBreaker::EAlLineBreakClass }, //TAGBANWA LETTER LA - { 0x1772, 0x1774, MLineBreaker::ECmLineBreakClass }, //TAGBANWA VOWEL SIGN I - { 0x1780, 0x17b4, MLineBreaker::ESaLineBreakClass }, //khmer letter ka - { 0x17b4, 0x17d4, MLineBreaker::ECmLineBreakClass }, //khmer vowel inherent aq - { 0x17d4, 0x17d5, MLineBreaker::ENsLineBreakClass }, //khmer sign khan - { 0x17d5, 0x17d6, MLineBreaker::EBaLineBreakClass }, //khmer sign bariyoosan - { 0x17d6, 0x17db, MLineBreaker::ENsLineBreakClass }, //khmer sign camnuc pii kuuh - { 0x17db, 0x17dc, MLineBreaker::EPrLineBreakClass }, //khmer currency symbol riel - { 0x17dc, 0x17dd, MLineBreaker::EAlLineBreakClass }, //khmer sign avakrahasanya - { 0x17dd, 0x17de, MLineBreaker::ESaLineBreakClass }, //KHMER SIGN ATTHACAN - { 0x17e0, 0x17ea, MLineBreaker::ENuLineBreakClass }, //khmer digit zero - { 0x17f0, 0x17fa, MLineBreaker::EAlLineBreakClass }, //KHMER SYMBOL LEK ATTAK SON - { 0x1800, 0x1806, MLineBreaker::EAlLineBreakClass }, //mongolian birga - { 0x1806, 0x1807, MLineBreaker::EBbLineBreakClass }, //mongolian todo soft hyphen - { 0x1807, 0x180b, MLineBreaker::EAlLineBreakClass }, //mongolian sibe syllable boundary marker - { 0x180b, 0x180f, MLineBreaker::ECmLineBreakClass }, //mongolian free variation selector one - { 0x1810, 0x181a, MLineBreaker::ENuLineBreakClass }, //mongolian digit zero - { 0x1820, 0x1878, MLineBreaker::EAlLineBreakClass }, //mongolian letter a - { 0x1880, 0x18a9, MLineBreaker::EAlLineBreakClass }, //mongolian letter ali gali anusvara one - { 0x18a9, 0x18aa, MLineBreaker::ECmLineBreakClass }, //mongolian letter ali gali dagalga - { 0x1900, 0x191d, MLineBreaker::EAlLineBreakClass }, //LIMBU VOWEL-CARRIER LETTER - { 0x1920, 0x192c, MLineBreaker::ECmLineBreakClass }, //LIMBU VOWEL SIGN A - { 0x1930, 0x193c, MLineBreaker::ECmLineBreakClass }, //LIMBU SMALL LETTER KA - { 0x1940, 0x1941, MLineBreaker::EAlLineBreakClass }, //LIMBU SIGN LOO - { 0x1944, 0x1946, MLineBreaker::EExLineBreakClass }, //LIMBU EXCLAMATION MARK - { 0x1946, 0x1950, MLineBreaker::ENuLineBreakClass }, //LIMBU DIGIT ZERO - { 0x1950, 0x196e, MLineBreaker::ESaLineBreakClass }, //TAI LE LETTER KA - { 0x1970, 0x1975, MLineBreaker::ESaLineBreakClass }, //TAI LE LETTER TONE-2 - { 0x1980, 0x19aa, MLineBreaker::ESaLineBreakClass }, //NEW TAI LUE LETTER HIGH QA - { 0x19b0, 0x19ca, MLineBreaker::ESaLineBreakClass }, //NEW TAI LUE VOWEL SIGN VOWEL SHORTENER - { 0x19d0, 0x19da, MLineBreaker::ENuLineBreakClass }, //NEW TAI LUE DIGIT ZERO - { 0x19de, 0x19e0, MLineBreaker::ESaLineBreakClass }, //NEW TAI LUE SIGN LAE - { 0x19e0, 0x1a17, MLineBreaker::EAlLineBreakClass }, //KHMER SYMBOL PATHAMASAT - { 0x1a17, 0x1a1c, MLineBreaker::ECmLineBreakClass }, //BUGINESE VOWEL SIGN I - { 0x1a1e, 0x1a1f, MLineBreaker::EBaLineBreakClass }, //BUGINESE PALLAWA - { 0x1a1f, 0x1a20, MLineBreaker::EAlLineBreakClass }, //BUGINESE END OF SECTION - { 0x1b00, 0x1b05, MLineBreaker::ECmLineBreakClass }, //BALINESE SIGN ULU RICEM - { 0x1b05, 0x1b34, MLineBreaker::EAlLineBreakClass }, //BALINESE LETTER AKARA - { 0x1b34, 0x1b45, MLineBreaker::ECmLineBreakClass }, //BALINESE SIGN REREKAN - { 0x1b45, 0x1b4c, MLineBreaker::EAlLineBreakClass }, //BALINESE LETTER KAF SASAK - { 0x1b50, 0x1b5a, MLineBreaker::ENuLineBreakClass }, //BALINESE DIGIT ZERO - { 0x1b5a, 0x1b61, MLineBreaker::EBaLineBreakClass }, //BALINESE PANTI - { 0x1b61, 0x1b6b, MLineBreaker::EAlLineBreakClass }, //BALINESE MUSICAL SYMBOL DONG - { 0x1b6b, 0x1b74, MLineBreaker::ECmLineBreakClass }, //BALINESE MUSICAL SYMBOL COMBINING TEGEH - { 0x1b74, 0x1b7d, MLineBreaker::EAlLineBreakClass }, //BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG - { 0x1d00, 0x1dc0, MLineBreaker::EAlLineBreakClass }, //LATIN LETTER SMALL CAPITAL A - { 0x1dc0, 0x1dcb, MLineBreaker::ECmLineBreakClass }, //COMBINING DOTTED GRAVE ACCENT - { 0x1dfe, 0x1e00, MLineBreaker::ECmLineBreakClass }, //COMBINING LEFT ARROWHEAD ABOVE - { 0x1e00, 0x1e9c, MLineBreaker::EAlLineBreakClass }, //latin capital letter a with ring below - { 0x1ea0, 0x1efa, MLineBreaker::EAlLineBreakClass }, //latin capital letter a with dot below - { 0x1f00, 0x1f16, MLineBreaker::EAlLineBreakClass }, //greek small letter alpha with psili - { 0x1f18, 0x1f1e, MLineBreaker::EAlLineBreakClass }, //greek capital letter epsilon with psili - { 0x1f20, 0x1f46, MLineBreaker::EAlLineBreakClass }, //greek small letter eta with psili - { 0x1f48, 0x1f4e, MLineBreaker::EAlLineBreakClass }, //greek capital letter omicron with psili - { 0x1f50, 0x1f58, MLineBreaker::EAlLineBreakClass }, //greek small letter upsilon with psili - { 0x1f59, 0x1f5a, MLineBreaker::EAlLineBreakClass }, //greek capital letter upsilon with dasia - { 0x1f5b, 0x1f5c, MLineBreaker::EAlLineBreakClass }, //greek capital letter upsilon with dasia and varia - { 0x1f5d, 0x1f5e, MLineBreaker::EAlLineBreakClass }, //greek capital letter upsilon with dasia and oxia - { 0x1f5f, 0x1f7e, MLineBreaker::EAlLineBreakClass }, //greek capital letter upsilon with dasia and perispomeni - { 0x1f80, 0x1fb5, MLineBreaker::EAlLineBreakClass }, //greek small letter alpha with psili and ypogegrammeni - { 0x1fb6, 0x1fc5, MLineBreaker::EAlLineBreakClass }, //greek small letter alpha with perispomeni - { 0x1fc6, 0x1fd4, MLineBreaker::EAlLineBreakClass }, //greek small letter eta with perispomeni - { 0x1fd6, 0x1fdc, MLineBreaker::EAlLineBreakClass }, //greek small letter iota with perispomeni - { 0x1fdd, 0x1ff0, MLineBreaker::EAlLineBreakClass }, //greek dasia and varia - { 0x1ff2, 0x1ff5, MLineBreaker::EAlLineBreakClass }, //greek small letter omega with varia and ypogegrammeni - { 0x1ff6, 0x1fff, MLineBreaker::EAlLineBreakClass }, //greek small letter omega with perispomeni - { 0x2000, 0x2007, MLineBreaker::EBaLineBreakClass }, //en quad - { 0x2007, 0x2008, MLineBreaker::EGlLineBreakClass }, //figure space - { 0x2008, 0x200b, MLineBreaker::EBaLineBreakClass }, //punctuation space - { 0x200b, 0x200c, MLineBreaker::EZwLineBreakClass }, //zero width space - { 0x200c, 0x2010, MLineBreaker::ECmLineBreakClass }, //zero width non-joiner - { 0x2010, 0x2011, MLineBreaker::EBaLineBreakClass }, //hyphen - { 0x2011, 0x2012, MLineBreaker::EGlLineBreakClass }, //non-breaking hyphen - { 0x2012, 0x2014, MLineBreaker::EBaLineBreakClass }, //figure dash - { 0x2014, 0x2015, MLineBreaker::EB2LineBreakClass }, //em dash - { 0x2015, 0x2016, MLineBreaker::EAlLineBreakClass }, //horizontal bar - { 0x2016, 0x2017, MLineBreaker::EAiLineBreakClass }, //double vertical line - { 0x2017, 0x2018, MLineBreaker::EAlLineBreakClass }, //double low line - { 0x2018, 0x201a, MLineBreaker::EQuLineBreakClass }, //left single quotation mark - { 0x201a, 0x201b, MLineBreaker::EOpLineBreakClass }, //single low-9 quotation mark - { 0x201b, 0x201e, MLineBreaker::EQuLineBreakClass }, //single high-reversed-9 quotation mark - { 0x201e, 0x201f, MLineBreaker::EOpLineBreakClass }, //double low-9 quotation mark - { 0x201f, 0x2020, MLineBreaker::EQuLineBreakClass }, //double high-reversed-9 quotation mark - { 0x2020, 0x2022, MLineBreaker::EAiLineBreakClass }, //dagger - { 0x2022, 0x2024, MLineBreaker::EAlLineBreakClass }, //bullet - { 0x2024, 0x2027, MLineBreaker::EInLineBreakClass }, //one dot leader - { 0x2027, 0x2028, MLineBreaker::EBaLineBreakClass }, //hyphenation point - { 0x2028, 0x202a, MLineBreaker::EBkLineBreakClass }, //line separator - { 0x202a, 0x202f, MLineBreaker::ECmLineBreakClass }, //left-to-right embedding - { 0x202f, 0x2030, MLineBreaker::EGlLineBreakClass }, //narrow no-break space - { 0x2030, 0x2038, MLineBreaker::EPoLineBreakClass }, //per mille sign - { 0x2038, 0x2039, MLineBreaker::EAlLineBreakClass }, //caret - { 0x2039, 0x203b, MLineBreaker::EQuLineBreakClass }, //single left-pointing angle quotation mark - { 0x203b, 0x203c, MLineBreaker::EAiLineBreakClass }, //reference mark - { 0x203c, 0x203d, MLineBreaker::ENsLineBreakClass }, //double exclamation mark - { 0x203d, 0x2044, MLineBreaker::EAlLineBreakClass }, //interrobang - { 0x2044, 0x2045, MLineBreaker::ENsLineBreakClass }, //fraction slash - { 0x2045, 0x2046, MLineBreaker::EOpLineBreakClass }, //left square bracket with quill - { 0x2046, 0x2047, MLineBreaker::EClLineBreakClass }, //right square bracket with quill - { 0x2047, 0x2048, MLineBreaker::ENsLineBreakClass }, //DOUBLE QUESTION MARK - { 0x2048, 0x2056, MLineBreaker::EAlLineBreakClass }, //question exclamation mark - { 0x2056, 0x2057, MLineBreaker::EBaLineBreakClass }, //THREE DOT PUNCTUATION - { 0x2057, 0x2058, MLineBreaker::EAlLineBreakClass }, //QUADRUPLE PRIME - { 0x2058, 0x205c, MLineBreaker::EBaLineBreakClass }, //FOUR DOT PUNCTUATION - { 0x205c, 0x205d, MLineBreaker::EAlLineBreakClass }, //DOTTED CROSS - { 0x205d, 0x2060, MLineBreaker::EBaLineBreakClass }, //TRICOLON - { 0x2060, 0x2061, MLineBreaker::EGlLineBreakClass }, //WORD JOINER - { 0x2061, 0x2064, MLineBreaker::EAlLineBreakClass }, //FUNCTION APPLICATION - { 0x206a, 0x2070, MLineBreaker::ECmLineBreakClass }, //inhibit symmetric swapping - { 0x2070, 0x2071, MLineBreaker::EAlLineBreakClass }, //superscript zero - { 0x2071, 0x2072, MLineBreaker::EAlLineBreakClass }, //SUPERSCRIPT LATIN SMALL LETTER I - { 0x2074, 0x2075, MLineBreaker::EAiLineBreakClass }, //superscript four - { 0x2075, 0x207d, MLineBreaker::EAlLineBreakClass }, //superscript five - { 0x207d, 0x207e, MLineBreaker::EOpLineBreakClass }, //superscript left parenthesis - { 0x207e, 0x207f, MLineBreaker::EClLineBreakClass }, //superscript right parenthesis - { 0x207f, 0x2080, MLineBreaker::EAiLineBreakClass }, //superscript latin small letter n - { 0x2080, 0x2081, MLineBreaker::EAlLineBreakClass }, //subscript zero - { 0x2081, 0x2085, MLineBreaker::EAiLineBreakClass }, //subscript one - { 0x2085, 0x208d, MLineBreaker::EAlLineBreakClass }, //subscript five - { 0x208d, 0x208e, MLineBreaker::EOpLineBreakClass }, //subscript left parenthesis - { 0x208e, 0x208f, MLineBreaker::EClLineBreakClass }, //subscript right parenthesis - { 0x2090, 0x2095, MLineBreaker::EAlLineBreakClass }, //LATIN SUBSCRIPT SMALL LETTER A - { 0x20a0, 0x20a7, MLineBreaker::EPrLineBreakClass }, //euro-currency sign - { 0x20a7, 0x20a8, MLineBreaker::EPoLineBreakClass }, //peseta sign - { 0x20a8, 0x20b6, MLineBreaker::EPrLineBreakClass }, //rupee sign - { 0x20d0, 0x20f0, MLineBreaker::ECmLineBreakClass }, //combining left harpoon above - { 0x2100, 0x2103, MLineBreaker::EAlLineBreakClass }, //account of - { 0x2103, 0x2104, MLineBreaker::EPoLineBreakClass }, //degree celsius - { 0x2104, 0x2105, MLineBreaker::EAlLineBreakClass }, //centre line symbol - { 0x2105, 0x2106, MLineBreaker::EAiLineBreakClass }, //care of - { 0x2106, 0x2109, MLineBreaker::EAlLineBreakClass }, //cada una - { 0x2109, 0x210a, MLineBreaker::EPoLineBreakClass }, //degree fahrenheit - { 0x210a, 0x2113, MLineBreaker::EAlLineBreakClass }, //script small g - { 0x2113, 0x2114, MLineBreaker::EAiLineBreakClass }, //script small l - { 0x2114, 0x2116, MLineBreaker::EAlLineBreakClass }, //l b bar symbol - { 0x2116, 0x2117, MLineBreaker::EPrLineBreakClass }, //numero sign - { 0x2117, 0x2121, MLineBreaker::EAlLineBreakClass }, //sound recording copyright - { 0x2121, 0x2123, MLineBreaker::EAiLineBreakClass }, //telephone sign - { 0x2123, 0x2126, MLineBreaker::EAlLineBreakClass }, //versicle - { 0x2126, 0x2127, MLineBreaker::EPoLineBreakClass }, //ohm sign - { 0x2127, 0x212b, MLineBreaker::EAlLineBreakClass }, //inverted ohm sign - { 0x212b, 0x212c, MLineBreaker::EAiLineBreakClass }, //angstrom sign - { 0x212c, 0x214f, MLineBreaker::EAlLineBreakClass }, //script capital b - { 0x2153, 0x2154, MLineBreaker::EAlLineBreakClass }, //vulgar fraction one third - { 0x2154, 0x2156, MLineBreaker::EAiLineBreakClass }, //vulgar fraction two thirds - { 0x2156, 0x215b, MLineBreaker::EAlLineBreakClass }, //vulgar fraction two fifths - { 0x215b, 0x215c, MLineBreaker::EAiLineBreakClass }, //vulgar fraction one eighth - { 0x215c, 0x215e, MLineBreaker::EAlLineBreakClass }, //vulgar fraction three eighths - { 0x215e, 0x215f, MLineBreaker::EAiLineBreakClass }, //vulgar fraction seven eighths - { 0x215f, 0x2160, MLineBreaker::EAlLineBreakClass }, //fraction numerator one - { 0x2160, 0x216c, MLineBreaker::EAiLineBreakClass }, //roman numeral one - { 0x216c, 0x2170, MLineBreaker::EAlLineBreakClass }, //roman numeral fifty - { 0x2170, 0x217a, MLineBreaker::EAiLineBreakClass }, //small roman numeral one - { 0x217a, 0x2185, MLineBreaker::EAlLineBreakClass }, //small roman numeral eleven - { 0x2190, 0x219a, MLineBreaker::EAiLineBreakClass }, //leftwards arrow - { 0x219a, 0x21d2, MLineBreaker::EAlLineBreakClass }, //leftwards arrow with stroke - { 0x21d2, 0x21d3, MLineBreaker::EAiLineBreakClass }, //rightwards double arrow - { 0x21d3, 0x21d4, MLineBreaker::EAlLineBreakClass }, //downwards double arrow - { 0x21d4, 0x21d5, MLineBreaker::EAiLineBreakClass }, //left right double arrow - { 0x21d5, 0x2200, MLineBreaker::EAlLineBreakClass }, //up down double arrow - { 0x2200, 0x2201, MLineBreaker::EAiLineBreakClass }, //for all - { 0x2201, 0x2202, MLineBreaker::EAlLineBreakClass }, //complement - { 0x2202, 0x2204, MLineBreaker::EAiLineBreakClass }, //partial differential - { 0x2204, 0x2207, MLineBreaker::EAlLineBreakClass }, //there does not exist - { 0x2207, 0x2209, MLineBreaker::EAiLineBreakClass }, //nabla - { 0x2209, 0x220b, MLineBreaker::EAlLineBreakClass }, //not an element of - { 0x220b, 0x220c, MLineBreaker::EAiLineBreakClass }, //contains as member - { 0x220c, 0x220f, MLineBreaker::EAlLineBreakClass }, //does not contain as member - { 0x220f, 0x2210, MLineBreaker::EAiLineBreakClass }, //n-ary product - { 0x2210, 0x2211, MLineBreaker::EAlLineBreakClass }, //n-ary coproduct - { 0x2211, 0x2212, MLineBreaker::EAiLineBreakClass }, //n-ary summation - { 0x2212, 0x2214, MLineBreaker::EPrLineBreakClass }, //minus sign - { 0x2214, 0x2215, MLineBreaker::EAlLineBreakClass }, //dot plus - { 0x2215, 0x2216, MLineBreaker::EAiLineBreakClass }, //division slash - { 0x2216, 0x221a, MLineBreaker::EAlLineBreakClass }, //set minus - { 0x221a, 0x221b, MLineBreaker::EAiLineBreakClass }, //square root - { 0x221b, 0x221d, MLineBreaker::EAlLineBreakClass }, //cube root - { 0x221d, 0x2221, MLineBreaker::EAiLineBreakClass }, //proportional to - { 0x2221, 0x2223, MLineBreaker::EAlLineBreakClass }, //measured angle - { 0x2223, 0x2224, MLineBreaker::EAiLineBreakClass }, //divides - { 0x2224, 0x2225, MLineBreaker::EAlLineBreakClass }, //does not divide - { 0x2225, 0x2226, MLineBreaker::EAiLineBreakClass }, //parallel to - { 0x2226, 0x2227, MLineBreaker::EAlLineBreakClass }, //not parallel to - { 0x2227, 0x222d, MLineBreaker::EAiLineBreakClass }, //logical and - { 0x222d, 0x222e, MLineBreaker::EAlLineBreakClass }, //triple integral - { 0x222e, 0x222f, MLineBreaker::EAiLineBreakClass }, //contour integral - { 0x222f, 0x2234, MLineBreaker::EAlLineBreakClass }, //surface integral - { 0x2234, 0x2238, MLineBreaker::EAiLineBreakClass }, //therefore - { 0x2238, 0x223c, MLineBreaker::EAlLineBreakClass }, //dot minus - { 0x223c, 0x223e, MLineBreaker::EAiLineBreakClass }, //tilde operator - { 0x223e, 0x2248, MLineBreaker::EAlLineBreakClass }, //inverted lazy s - { 0x2248, 0x2249, MLineBreaker::EAiLineBreakClass }, //almost equal to - { 0x2249, 0x224c, MLineBreaker::EAlLineBreakClass }, //not almost equal to - { 0x224c, 0x224d, MLineBreaker::EAiLineBreakClass }, //all equal to - { 0x224d, 0x2252, MLineBreaker::EAlLineBreakClass }, //equivalent to - { 0x2252, 0x2253, MLineBreaker::EAiLineBreakClass }, //approximately equal to or the image of - { 0x2253, 0x2260, MLineBreaker::EAlLineBreakClass }, //image of or approximately equal to - { 0x2260, 0x2262, MLineBreaker::EAiLineBreakClass }, //not equal to - { 0x2262, 0x2264, MLineBreaker::EAlLineBreakClass }, //not identical to - { 0x2264, 0x2268, MLineBreaker::EAiLineBreakClass }, //less-than or equal to - { 0x2268, 0x226a, MLineBreaker::EAlLineBreakClass }, //less-than but not equal to - { 0x226a, 0x226c, MLineBreaker::EAiLineBreakClass }, //much less-than - { 0x226c, 0x226e, MLineBreaker::EAlLineBreakClass }, //between - { 0x226e, 0x2270, MLineBreaker::EAiLineBreakClass }, //not less-than - { 0x2270, 0x2282, MLineBreaker::EAlLineBreakClass }, //neither less-than nor equal to - { 0x2282, 0x2284, MLineBreaker::EAiLineBreakClass }, //subset of - { 0x2284, 0x2286, MLineBreaker::EAlLineBreakClass }, //not a subset of - { 0x2286, 0x2288, MLineBreaker::EAiLineBreakClass }, //subset of or equal to - { 0x2288, 0x2295, MLineBreaker::EAlLineBreakClass }, //neither a subset of nor equal to - { 0x2295, 0x2296, MLineBreaker::EAiLineBreakClass }, //circled plus - { 0x2296, 0x2299, MLineBreaker::EAlLineBreakClass }, //circled minus - { 0x2299, 0x229a, MLineBreaker::EAiLineBreakClass }, //circled dot operator - { 0x229a, 0x22a5, MLineBreaker::EAlLineBreakClass }, //circled ring operator - { 0x22a5, 0x22a6, MLineBreaker::EAiLineBreakClass }, //up tack - { 0x22a6, 0x22bf, MLineBreaker::EAlLineBreakClass }, //assertion - { 0x22bf, 0x22c0, MLineBreaker::EAiLineBreakClass }, //right triangle - { 0x22c0, 0x2312, MLineBreaker::EAlLineBreakClass }, //n-ary logical and - { 0x2312, 0x2313, MLineBreaker::EAiLineBreakClass }, //arc - { 0x2313, 0x2329, MLineBreaker::EAlLineBreakClass }, //segment - { 0x2329, 0x232a, MLineBreaker::EOpLineBreakClass }, //left-pointing angle bracket - { 0x232a, 0x232b, MLineBreaker::EClLineBreakClass }, //right-pointing angle bracket - { 0x232b, 0x23e8, MLineBreaker::EAlLineBreakClass }, //erase to the left - { 0x2400, 0x2427, MLineBreaker::EAlLineBreakClass }, //symbol for null - { 0x2440, 0x244b, MLineBreaker::EAlLineBreakClass }, //ocr hook - { 0x2460, 0x24c0, MLineBreaker::EAiLineBreakClass }, //circled digit one - { 0x24c0, 0x24d0, MLineBreaker::EAlLineBreakClass }, //circled latin capital letter k - { 0x24d0, 0x24ea, MLineBreaker::EAiLineBreakClass }, //circled latin small letter a - { 0x24ea, 0x24eb, MLineBreaker::EAlLineBreakClass }, //circled digit zero - { 0x24eb, 0x24ff, MLineBreaker::EAiLineBreakClass }, //NEGATIVE CIRCLED NUMBER ELEVEN - { 0x24ff, 0x2500, MLineBreaker::EAlLineBreakClass }, //NEGATIVE CIRCLED DIGIT ZERO - { 0x2500, 0x254c, MLineBreaker::EAiLineBreakClass }, //box drawings light horizontal - { 0x254c, 0x2550, MLineBreaker::EAlLineBreakClass }, //box drawings light double dash horizontal - { 0x2550, 0x2575, MLineBreaker::EAiLineBreakClass }, //box drawings double horizontal - { 0x2575, 0x2580, MLineBreaker::EAlLineBreakClass }, //box drawings light up - { 0x2580, 0x2590, MLineBreaker::EAiLineBreakClass }, //upper half block - { 0x2590, 0x2592, MLineBreaker::EAlLineBreakClass }, //right half block - { 0x2592, 0x2596, MLineBreaker::EAiLineBreakClass }, //medium shade - { 0x2596, 0x25a0, MLineBreaker::EAlLineBreakClass }, //QUADRANT LOWER LEFT - { 0x25a0, 0x25a2, MLineBreaker::EAiLineBreakClass }, //black square - { 0x25a2, 0x25a3, MLineBreaker::EAlLineBreakClass }, //white square with rounded corners - { 0x25a3, 0x25aa, MLineBreaker::EAiLineBreakClass }, //white square containing black small square - { 0x25aa, 0x25b2, MLineBreaker::EAlLineBreakClass }, //black small square - { 0x25b2, 0x25b4, MLineBreaker::EAiLineBreakClass }, //black up-pointing triangle - { 0x25b4, 0x25b6, MLineBreaker::EAlLineBreakClass }, //black up-pointing small triangle - { 0x25b6, 0x25b8, MLineBreaker::EAiLineBreakClass }, //black right-pointing triangle - { 0x25b8, 0x25bc, MLineBreaker::EAlLineBreakClass }, //black right-pointing small triangle - { 0x25bc, 0x25be, MLineBreaker::EAiLineBreakClass }, //black down-pointing triangle - { 0x25be, 0x25c0, MLineBreaker::EAlLineBreakClass }, //black down-pointing small triangle - { 0x25c0, 0x25c2, MLineBreaker::EAiLineBreakClass }, //black left-pointing triangle - { 0x25c2, 0x25c6, MLineBreaker::EAlLineBreakClass }, //black left-pointing small triangle - { 0x25c6, 0x25c8, MLineBreaker::EAiLineBreakClass }, //black diamond - { 0x25c8, 0x25cb, MLineBreaker::EAlLineBreakClass }, //white diamond containing black small diamond - { 0x25cb, 0x25cc, MLineBreaker::EAiLineBreakClass }, //white circle - { 0x25cc, 0x25ce, MLineBreaker::EAlLineBreakClass }, //dotted circle - { 0x25ce, 0x25d2, MLineBreaker::EAiLineBreakClass }, //bullseye - { 0x25d2, 0x25e2, MLineBreaker::EAlLineBreakClass }, //circle with lower half black - { 0x25e2, 0x25e6, MLineBreaker::EAiLineBreakClass }, //black lower right triangle - { 0x25e6, 0x25ef, MLineBreaker::EAlLineBreakClass }, //white bullet - { 0x25ef, 0x25f0, MLineBreaker::EAiLineBreakClass }, //large circle - { 0x25f0, 0x2605, MLineBreaker::EAlLineBreakClass }, //white square with upper left quadrant - { 0x2605, 0x2607, MLineBreaker::EAiLineBreakClass }, //black star - { 0x2607, 0x2609, MLineBreaker::EAlLineBreakClass }, //lightning - { 0x2609, 0x260a, MLineBreaker::EAiLineBreakClass }, //sun - { 0x260a, 0x260e, MLineBreaker::EAlLineBreakClass }, //ascending node - { 0x260e, 0x2610, MLineBreaker::EAiLineBreakClass }, //black telephone - { 0x2610, 0x2614, MLineBreaker::EAlLineBreakClass }, //ballot box - { 0x2614, 0x2618, MLineBreaker::EAiLineBreakClass }, //UMBRELLA WITH RAIN DROPS - { 0x2618, 0x261c, MLineBreaker::EAlLineBreakClass }, //SHAMROCK - { 0x261c, 0x261d, MLineBreaker::EAiLineBreakClass }, //white left pointing index - { 0x261d, 0x261e, MLineBreaker::EAlLineBreakClass }, //white up pointing index - { 0x261e, 0x261f, MLineBreaker::EAiLineBreakClass }, //white right pointing index - { 0x261f, 0x2640, MLineBreaker::EAlLineBreakClass }, //white down pointing index - { 0x2640, 0x2641, MLineBreaker::EAiLineBreakClass }, //female sign - { 0x2641, 0x2642, MLineBreaker::EAlLineBreakClass }, //earth - { 0x2642, 0x2643, MLineBreaker::EAiLineBreakClass }, //male sign - { 0x2643, 0x2660, MLineBreaker::EAlLineBreakClass }, //jupiter - { 0x2660, 0x2662, MLineBreaker::EAiLineBreakClass }, //black spade suit - { 0x2662, 0x2663, MLineBreaker::EAlLineBreakClass }, //white diamond suit - { 0x2663, 0x2666, MLineBreaker::EAiLineBreakClass }, //black club suit - { 0x2666, 0x2667, MLineBreaker::EAlLineBreakClass }, //black diamond suit - { 0x2667, 0x266b, MLineBreaker::EAiLineBreakClass }, //white club suit - { 0x266b, 0x266c, MLineBreaker::EAlLineBreakClass }, //beamed eighth notes - { 0x266c, 0x266e, MLineBreaker::EAiLineBreakClass }, //beamed sixteenth notes - { 0x266e, 0x266f, MLineBreaker::EAlLineBreakClass }, //music natural sign - { 0x266f, 0x2670, MLineBreaker::EAiLineBreakClass }, //music sharp sign - { 0x2670, 0x269d, MLineBreaker::EAlLineBreakClass }, //west syriac cross - { 0x26a0, 0x26b3, MLineBreaker::EAlLineBreakClass }, //WARNING SIGN - { 0x2701, 0x2705, MLineBreaker::EAlLineBreakClass }, //upper blade scissors - { 0x2706, 0x270a, MLineBreaker::EAlLineBreakClass }, //telephone location sign - { 0x270c, 0x2728, MLineBreaker::EAlLineBreakClass }, //victory hand - { 0x2729, 0x274c, MLineBreaker::EAlLineBreakClass }, //stress outlined white star - { 0x274d, 0x274e, MLineBreaker::EAlLineBreakClass }, //shadowed white circle - { 0x274f, 0x2753, MLineBreaker::EAlLineBreakClass }, //lower right drop-shadowed white square - { 0x2756, 0x2757, MLineBreaker::EAlLineBreakClass }, //black diamond minus white x - { 0x2758, 0x275f, MLineBreaker::EAlLineBreakClass }, //light vertical bar - { 0x2761, 0x2768, MLineBreaker::EAlLineBreakClass }, //curved stem paragraph sign ornament - { 0x2768, 0x2769, MLineBreaker::EOpLineBreakClass }, //MEDIUM LEFT PARENTHESIS ORNAMENT - { 0x2769, 0x276a, MLineBreaker::EClLineBreakClass }, //MEDIUM RIGHT PARENTHESIS ORNAMENT - { 0x276a, 0x276b, MLineBreaker::EOpLineBreakClass }, //MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT - { 0x276b, 0x276c, MLineBreaker::EClLineBreakClass }, //MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT - { 0x276c, 0x276d, MLineBreaker::EOpLineBreakClass }, //MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT - { 0x276d, 0x276e, MLineBreaker::EClLineBreakClass }, //MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT - { 0x276e, 0x276f, MLineBreaker::EOpLineBreakClass }, //HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT - { 0x276f, 0x2770, MLineBreaker::EClLineBreakClass }, //HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT - { 0x2770, 0x2771, MLineBreaker::EOpLineBreakClass }, //HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT - { 0x2771, 0x2772, MLineBreaker::EClLineBreakClass }, //HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT - { 0x2772, 0x2773, MLineBreaker::EOpLineBreakClass }, //LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT - { 0x2773, 0x2774, MLineBreaker::EClLineBreakClass }, //LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT - { 0x2774, 0x2775, MLineBreaker::EOpLineBreakClass }, //MEDIUM LEFT CURLY BRACKET ORNAMENT - { 0x2775, 0x2776, MLineBreaker::EClLineBreakClass }, //MEDIUM RIGHT CURLY BRACKET ORNAMENT - { 0x2776, 0x2795, MLineBreaker::EAlLineBreakClass }, //dingbat negative circled digit one - { 0x2798, 0x27b0, MLineBreaker::EAlLineBreakClass }, //heavy south east arrow - { 0x27b1, 0x27bf, MLineBreaker::EAlLineBreakClass }, //notched upper right-shadowed white rightwards arrow - { 0x27c0, 0x27c5, MLineBreaker::EAlLineBreakClass }, //THREE DIMENSIONAL ANGLE - { 0x27c5, 0x27c6, MLineBreaker::EOpLineBreakClass }, //LEFT S-SHAPED BAG DELIMITER - { 0x27c6, 0x27c7, MLineBreaker::EClLineBreakClass }, //RIGHT S-SHAPED BAG DELIMITER - { 0x27c7, 0x27cb, MLineBreaker::EAlLineBreakClass }, //OR WITH DOT INSIDE - { 0x27d0, 0x27e6, MLineBreaker::EAlLineBreakClass }, //WHITE DIAMOND WITH CENTRED DOT - { 0x27e6, 0x27e7, MLineBreaker::EOpLineBreakClass }, //MATHEMATICAL LEFT WHITE SQUARE BRACKET - { 0x27e7, 0x27e8, MLineBreaker::EClLineBreakClass }, //MATHEMATICAL RIGHT WHITE SQUARE BRACKET - { 0x27e8, 0x27e9, MLineBreaker::EOpLineBreakClass }, //MATHEMATICAL LEFT ANGLE BRACKET - { 0x27e9, 0x27ea, MLineBreaker::EClLineBreakClass }, //MATHEMATICAL RIGHT ANGLE BRACKET - { 0x27ea, 0x27eb, MLineBreaker::EOpLineBreakClass }, //MATHEMATICAL LEFT DOUBLE ANGLE BRACKET - { 0x27eb, 0x27ec, MLineBreaker::EClLineBreakClass }, //MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET - { 0x27f0, 0x2983, MLineBreaker::EAlLineBreakClass }, //UPWARDS QUADRUPLE ARROW - { 0x2983, 0x2984, MLineBreaker::EOpLineBreakClass }, //LEFT WHITE CURLY BRACKET - { 0x2984, 0x2985, MLineBreaker::EClLineBreakClass }, //RIGHT WHITE CURLY BRACKET - { 0x2985, 0x2986, MLineBreaker::EOpLineBreakClass }, //LEFT WHITE PARENTHESIS - { 0x2986, 0x2987, MLineBreaker::EClLineBreakClass }, //RIGHT WHITE PARENTHESIS - { 0x2987, 0x2988, MLineBreaker::EOpLineBreakClass }, //Z NOTATION LEFT IMAGE BRACKET - { 0x2988, 0x2989, MLineBreaker::EClLineBreakClass }, //Z NOTATION RIGHT IMAGE BRACKET - { 0x2989, 0x298a, MLineBreaker::EOpLineBreakClass }, //Z NOTATION LEFT BINDING BRACKET - { 0x298a, 0x298b, MLineBreaker::EClLineBreakClass }, //Z NOTATION RIGHT BINDING BRACKET - { 0x298b, 0x298c, MLineBreaker::EOpLineBreakClass }, //LEFT SQUARE BRACKET WITH UNDERBAR - { 0x298c, 0x298d, MLineBreaker::EClLineBreakClass }, //RIGHT SQUARE BRACKET WITH UNDERBAR - { 0x298d, 0x298e, MLineBreaker::EOpLineBreakClass }, //LEFT SQUARE BRACKET WITH TICK IN TOP CORNER - { 0x298e, 0x298f, MLineBreaker::EClLineBreakClass }, //RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - { 0x298f, 0x2990, MLineBreaker::EOpLineBreakClass }, //LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - { 0x2990, 0x2991, MLineBreaker::EClLineBreakClass }, //RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER - { 0x2991, 0x2992, MLineBreaker::EOpLineBreakClass }, //LEFT ANGLE BRACKET WITH DOT - { 0x2992, 0x2993, MLineBreaker::EClLineBreakClass }, //RIGHT ANGLE BRACKET WITH DOT - { 0x2993, 0x2994, MLineBreaker::EOpLineBreakClass }, //LEFT ARC LESS-THAN BRACKET - { 0x2994, 0x2995, MLineBreaker::EClLineBreakClass }, //RIGHT ARC GREATER-THAN BRACKET - { 0x2995, 0x2996, MLineBreaker::EOpLineBreakClass }, //DOUBLE LEFT ARC GREATER-THAN BRACKET - { 0x2996, 0x2997, MLineBreaker::EClLineBreakClass }, //DOUBLE RIGHT ARC LESS-THAN BRACKET - { 0x2997, 0x2998, MLineBreaker::EOpLineBreakClass }, //LEFT BLACK TORTOISE SHELL BRACKET - { 0x2998, 0x2999, MLineBreaker::EClLineBreakClass }, //RIGHT BLACK TORTOISE SHELL BRACKET - { 0x2999, 0x29d8, MLineBreaker::EAlLineBreakClass }, //DOTTED FENCE - { 0x29d8, 0x29d9, MLineBreaker::EOpLineBreakClass }, //LEFT WIGGLY FENCE - { 0x29d9, 0x29da, MLineBreaker::EClLineBreakClass }, //RIGHT WIGGLY FENCE - { 0x29da, 0x29db, MLineBreaker::EOpLineBreakClass }, //LEFT DOUBLE WIGGLY FENCE - { 0x29db, 0x29dc, MLineBreaker::EClLineBreakClass }, //RIGHT DOUBLE WIGGLY FENCE - { 0x29dc, 0x29fc, MLineBreaker::EAlLineBreakClass }, //INCOMPLETE INFINITY - { 0x29fc, 0x29fd, MLineBreaker::EOpLineBreakClass }, //LEFT-POINTING CURVED ANGLE BRACKET - { 0x29fd, 0x29fe, MLineBreaker::EClLineBreakClass }, //RIGHT-POINTING CURVED ANGLE BRACKET - { 0x29fe, 0x2b1b, MLineBreaker::EAlLineBreakClass }, //TINY - { 0x2b20, 0x2b24, MLineBreaker::EAlLineBreakClass }, //WHITE PENTAGON - { 0x2c00, 0x2c2f, MLineBreaker::EAlLineBreakClass }, //GLAGOLITIC CAPITAL LETTER AZU - { 0x2c30, 0x2c5f, MLineBreaker::EAlLineBreakClass }, //GLAGOLITIC SMALL LETTER AZU - { 0x2c60, 0x2c6d, MLineBreaker::EAlLineBreakClass }, //LATIN CAPITAL LETTER L WITH DOUBLE BAR - { 0x2c74, 0x2c78, MLineBreaker::EAlLineBreakClass }, //LATIN SMALL LETTER V WITH CURL - { 0x2c80, 0x2ceb, MLineBreaker::EAlLineBreakClass }, //COPTIC CAPITAL LETTER ALFA - { 0x2cf9, 0x2cfd, MLineBreaker::EBaLineBreakClass }, //COPTIC OLD NUBIAN FULL STOP - { 0x2cfd, 0x2cfe, MLineBreaker::EAlLineBreakClass }, //COPTIC FRACTION ONE HALF - { 0x2cfe, 0x2d00, MLineBreaker::EBaLineBreakClass }, //COPTIC FULL STOP - { 0x2d00, 0x2d26, MLineBreaker::EAlLineBreakClass }, //GEORGIAN SMALL LETTER AN - { 0x2d30, 0x2d66, MLineBreaker::EAlLineBreakClass }, //TIFINAGH LETTER YA - { 0x2d6f, 0x2d70, MLineBreaker::EAlLineBreakClass }, //TIFINAGH MODIFIER LETTER LABIALIZATION MARK - { 0x2d80, 0x2d97, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE LOA - { 0x2da0, 0x2da7, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE SSA - { 0x2da8, 0x2daf, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE CCA - { 0x2db0, 0x2db7, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE ZZA - { 0x2db8, 0x2dbf, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE CCHA - { 0x2dc0, 0x2dc7, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE QYA - { 0x2dc8, 0x2dcf, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE KYA - { 0x2dd0, 0x2dd7, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE XYA - { 0x2dd8, 0x2ddf, MLineBreaker::EAlLineBreakClass }, //ETHIOPIC SYLLABLE GYA - { 0x2e00, 0x2e0e, MLineBreaker::EQuLineBreakClass }, //RIGHT ANGLE SUBSTITUTION MARKER - { 0x2e0e, 0x2e16, MLineBreaker::EBaLineBreakClass }, //EDITORIAL CORONIS - { 0x2e16, 0x2e17, MLineBreaker::EAlLineBreakClass }, //DOTTED RIGHT-POINTING ANGLE - { 0x2e17, 0x2e18, MLineBreaker::EBaLineBreakClass }, //DOUBLE OBLIQUE HYPHEN - { 0x2e1c, 0x2e1e, MLineBreaker::EQuLineBreakClass }, //LEFT LOW PARAPHRASE BRACKET - { 0x2e80, 0x2e9a, MLineBreaker::EIdLineBreakClass }, //cjk radical repeat - { 0x2e9b, 0x2ef4, MLineBreaker::EIdLineBreakClass }, //cjk radical choke - { 0x2f00, 0x2fd6, MLineBreaker::EIdLineBreakClass }, //kangxi radical one - { 0x2ff0, 0x2ffc, MLineBreaker::EIdLineBreakClass }, //ideographic description character left to right - { 0x3000, 0x3001, MLineBreaker::EIdLineBreakClass }, //ideographic space - { 0x3001, 0x3003, MLineBreaker::EClLineBreakClass }, //ideographic comma - { 0x3003, 0x3005, MLineBreaker::EIdLineBreakClass }, //ditto mark - { 0x3005, 0x3006, MLineBreaker::ENsLineBreakClass }, //ideographic iteration mark - { 0x3006, 0x3008, MLineBreaker::EIdLineBreakClass }, //ideographic closing mark - { 0x3008, 0x3009, MLineBreaker::EOpLineBreakClass }, //left angle bracket - { 0x3009, 0x300a, MLineBreaker::EClLineBreakClass }, //right angle bracket - { 0x300a, 0x300b, MLineBreaker::EOpLineBreakClass }, //left double angle bracket - { 0x300b, 0x300c, MLineBreaker::EClLineBreakClass }, //right double angle bracket - { 0x300c, 0x300d, MLineBreaker::EOpLineBreakClass }, //left corner bracket - { 0x300d, 0x300e, MLineBreaker::EClLineBreakClass }, //right corner bracket - { 0x300e, 0x300f, MLineBreaker::EOpLineBreakClass }, //left white corner bracket - { 0x300f, 0x3010, MLineBreaker::EClLineBreakClass }, //right white corner bracket - { 0x3010, 0x3011, MLineBreaker::EOpLineBreakClass }, //left black lenticular bracket - { 0x3011, 0x3012, MLineBreaker::EClLineBreakClass }, //right black lenticular bracket - { 0x3012, 0x3014, MLineBreaker::EIdLineBreakClass }, //postal mark - { 0x3014, 0x3015, MLineBreaker::EOpLineBreakClass }, //left tortoise shell bracket - { 0x3015, 0x3016, MLineBreaker::EClLineBreakClass }, //right tortoise shell bracket - { 0x3016, 0x3017, MLineBreaker::EOpLineBreakClass }, //left white lenticular bracket - { 0x3017, 0x3018, MLineBreaker::EClLineBreakClass }, //right white lenticular bracket - { 0x3018, 0x3019, MLineBreaker::EOpLineBreakClass }, //left white tortoise shell bracket - { 0x3019, 0x301a, MLineBreaker::EClLineBreakClass }, //right white tortoise shell bracket - { 0x301a, 0x301b, MLineBreaker::EOpLineBreakClass }, //left white square bracket - { 0x301b, 0x301c, MLineBreaker::EClLineBreakClass }, //right white square bracket - { 0x301c, 0x301d, MLineBreaker::ENsLineBreakClass }, //wave dash - { 0x301d, 0x301e, MLineBreaker::EOpLineBreakClass }, //reversed double prime quotation mark - { 0x301e, 0x3020, MLineBreaker::EClLineBreakClass }, //double prime quotation mark - { 0x3020, 0x302a, MLineBreaker::EIdLineBreakClass }, //postal mark face - { 0x302a, 0x3030, MLineBreaker::ECmLineBreakClass }, //ideographic level tone mark - { 0x3030, 0x303b, MLineBreaker::EIdLineBreakClass }, //wavy dash - { 0x303b, 0x303d, MLineBreaker::ENsLineBreakClass }, //VERTICAL IDEOGRAPHIC ITERATION MARK - { 0x303d, 0x3040, MLineBreaker::EIdLineBreakClass }, //PART ALTERNATION MARK - { 0x3041, 0x3042, MLineBreaker::ENsLineBreakClass }, //hiragana letter small a - { 0x3042, 0x3043, MLineBreaker::EIdLineBreakClass }, //hiragana letter a - { 0x3043, 0x3044, MLineBreaker::ENsLineBreakClass }, //hiragana letter small i - { 0x3044, 0x3045, MLineBreaker::EIdLineBreakClass }, //hiragana letter i - { 0x3045, 0x3046, MLineBreaker::ENsLineBreakClass }, //hiragana letter small u - { 0x3046, 0x3047, MLineBreaker::EIdLineBreakClass }, //hiragana letter u - { 0x3047, 0x3048, MLineBreaker::ENsLineBreakClass }, //hiragana letter small e - { 0x3048, 0x3049, MLineBreaker::EIdLineBreakClass }, //hiragana letter e - { 0x3049, 0x304a, MLineBreaker::ENsLineBreakClass }, //hiragana letter small o - { 0x304a, 0x3063, MLineBreaker::EIdLineBreakClass }, //hiragana letter o - { 0x3063, 0x3064, MLineBreaker::ENsLineBreakClass }, //hiragana letter small tu - { 0x3064, 0x3083, MLineBreaker::EIdLineBreakClass }, //hiragana letter tu - { 0x3083, 0x3084, MLineBreaker::ENsLineBreakClass }, //hiragana letter small ya - { 0x3084, 0x3085, MLineBreaker::EIdLineBreakClass }, //hiragana letter ya - { 0x3085, 0x3086, MLineBreaker::ENsLineBreakClass }, //hiragana letter small yu - { 0x3086, 0x3087, MLineBreaker::EIdLineBreakClass }, //hiragana letter yu - { 0x3087, 0x3088, MLineBreaker::ENsLineBreakClass }, //hiragana letter small yo - { 0x3088, 0x308e, MLineBreaker::EIdLineBreakClass }, //hiragana letter yo - { 0x308e, 0x308f, MLineBreaker::ENsLineBreakClass }, //hiragana letter small wa - { 0x308f, 0x3095, MLineBreaker::EIdLineBreakClass }, //hiragana letter wa - { 0x3095, 0x3097, MLineBreaker::ENsLineBreakClass }, //HIRAGANA LETTER SMALL KA - { 0x3099, 0x309b, MLineBreaker::ECmLineBreakClass }, //combining katakana-hiragana voiced sound mark - { 0x309b, 0x309f, MLineBreaker::ENsLineBreakClass }, //katakana-hiragana voiced sound mark - { 0x309f, 0x30a0, MLineBreaker::EIdLineBreakClass }, //HIRAGANA DIGRAPH YORI - { 0x30a0, 0x30a1, MLineBreaker::ENsLineBreakClass }, //KATAKANA-HIRAGANA DOUBLE HYPHEN - { 0x30a1, 0x30a2, MLineBreaker::ENsLineBreakClass }, //katakana letter small a - { 0x30a2, 0x30a3, MLineBreaker::EIdLineBreakClass }, //katakana letter a - { 0x30a3, 0x30a4, MLineBreaker::ENsLineBreakClass }, //katakana letter small i - { 0x30a4, 0x30a5, MLineBreaker::EIdLineBreakClass }, //katakana letter i - { 0x30a5, 0x30a6, MLineBreaker::ENsLineBreakClass }, //katakana letter small u - { 0x30a6, 0x30a7, MLineBreaker::EIdLineBreakClass }, //katakana letter u - { 0x30a7, 0x30a8, MLineBreaker::ENsLineBreakClass }, //katakana letter small e - { 0x30a8, 0x30a9, MLineBreaker::EIdLineBreakClass }, //katakana letter e - { 0x30a9, 0x30aa, MLineBreaker::ENsLineBreakClass }, //katakana letter small o - { 0x30aa, 0x30c3, MLineBreaker::EIdLineBreakClass }, //katakana letter o - { 0x30c3, 0x30c4, MLineBreaker::ENsLineBreakClass }, //katakana letter small tu - { 0x30c4, 0x30e3, MLineBreaker::EIdLineBreakClass }, //katakana letter tu - { 0x30e3, 0x30e4, MLineBreaker::ENsLineBreakClass }, //katakana letter small ya - { 0x30e4, 0x30e5, MLineBreaker::EIdLineBreakClass }, //katakana letter ya - { 0x30e5, 0x30e6, MLineBreaker::ENsLineBreakClass }, //katakana letter small yu - { 0x30e6, 0x30e7, MLineBreaker::EIdLineBreakClass }, //katakana letter yu - { 0x30e7, 0x30e8, MLineBreaker::ENsLineBreakClass }, //katakana letter small yo - { 0x30e8, 0x30ee, MLineBreaker::EIdLineBreakClass }, //katakana letter yo - { 0x30ee, 0x30ef, MLineBreaker::ENsLineBreakClass }, //katakana letter small wa - { 0x30ef, 0x30f5, MLineBreaker::EIdLineBreakClass }, //katakana letter wa - { 0x30f5, 0x30f7, MLineBreaker::ENsLineBreakClass }, //katakana letter small ka - { 0x30f7, 0x30fb, MLineBreaker::EIdLineBreakClass }, //katakana letter va - { 0x30fb, 0x30fc, MLineBreaker::ENsLineBreakClass }, //katakana middle dot - { 0x30fc, 0x30fd, MLineBreaker::EIdLineBreakClass }, //katakana-hiragana prolonged sound mark - { 0x30fd, 0x30fe, MLineBreaker::ENsLineBreakClass }, //katakana iteration mark - { 0x30fe, 0x30ff, MLineBreaker::EIdLineBreakClass }, //katakana voiced iteration mark - { 0x30ff, 0x3100, MLineBreaker::EIdLineBreakClass }, //KATAKANA DIGRAPH KOTO - { 0x3105, 0x312d, MLineBreaker::EIdLineBreakClass }, //bopomofo letter b - { 0x3131, 0x318f, MLineBreaker::EIdLineBreakClass }, //hangul letter kiyeok - { 0x3190, 0x31b8, MLineBreaker::EIdLineBreakClass }, //ideographic annotation linking mark - { 0x31c0, 0x31d0, MLineBreaker::EIdLineBreakClass }, //CJK STROKE T - { 0x31f0, 0x3200, MLineBreaker::ENsLineBreakClass }, //KATAKANA LETTER SMALL KU - { 0x3200, 0x321f, MLineBreaker::EIdLineBreakClass }, //parenthesized hangul kiyeok - { 0x3220, 0x3244, MLineBreaker::EIdLineBreakClass }, //parenthesized ideograph one - { 0x3250, 0x32ff, MLineBreaker::EIdLineBreakClass }, //PARTNERSHIP SIGN - { 0x3300, 0x4db6, MLineBreaker::EIdLineBreakClass }, //square apaato - { 0x4dc0, 0x4e00, MLineBreaker::EAlLineBreakClass }, //HEXAGRAM FOR THE CREATIVE HEAVEN - { 0x4e00, 0x9fbb, MLineBreaker::EIdLineBreakClass }, //<cjk ideograph, - { 0xa000, 0xa48d, MLineBreaker::EIdLineBreakClass }, //yi syllable it - { 0xa490, 0xa4c6, MLineBreaker::EIdLineBreakClass }, //yi radical qot - { 0xa4c6, 0xa4c7, MLineBreaker::EIdLineBreakClass }, //yi radical ke - { 0xa700, 0xa71b, MLineBreaker::EAlLineBreakClass }, //MODIFIER LETTER CHINESE TONE YIN PING - { 0xa720, 0xa722, MLineBreaker::EAlLineBreakClass }, //MODIFIER LETTER STRESS AND HIGH TONE - { 0xa800, 0xa802, MLineBreaker::EAlLineBreakClass }, //SYLOTI NAGRI LETTER A - { 0xa802, 0xa803, MLineBreaker::ECmLineBreakClass }, //SYLOTI NAGRI SIGN DVISVARA - { 0xa803, 0xa806, MLineBreaker::EAlLineBreakClass }, //SYLOTI NAGRI LETTER U - { 0xa806, 0xa807, MLineBreaker::ECmLineBreakClass }, //SYLOTI NAGRI SIGN HASANTA - { 0xa807, 0xa80b, MLineBreaker::EAlLineBreakClass }, //SYLOTI NAGRI LETTER KO - { 0xa80b, 0xa80c, MLineBreaker::ECmLineBreakClass }, //SYLOTI NAGRI SIGN ANUSVARA - { 0xa80c, 0xa823, MLineBreaker::EAlLineBreakClass }, //SYLOTI NAGRI LETTER CO - { 0xa823, 0xa828, MLineBreaker::ECmLineBreakClass }, //SYLOTI NAGRI VOWEL SIGN A - { 0xa828, 0xa82c, MLineBreaker::EAlLineBreakClass }, //SYLOTI NAGRI POETRY MARK-1 - { 0xa840, 0xa874, MLineBreaker::EAlLineBreakClass }, //PHAGS-PA LETTER KA - { 0xa874, 0xa876, MLineBreaker::EBbLineBreakClass }, //PHAGS-PA SINGLE HEAD MARK - { 0xa876, 0xa878, MLineBreaker::EExLineBreakClass }, //PHAGS-PA MARK SHAD - { 0xac00, 0xd7a4, MLineBreaker::EIdLineBreakClass }, //<hangul syllable, - { 0xd800, 0xe000, MLineBreaker::ESgLineBreakClass }, //<non private use high surrogate, - { 0xe000, 0xf900, MLineBreaker::EAiLineBreakClass }, //<private use, - { 0xf900, 0xfa2e, MLineBreaker::EIdLineBreakClass }, //cjk compatibility ideograph-f900 - { 0xfa30, 0xfa6b, MLineBreaker::EIdLineBreakClass }, //CJK COMPATIBILITY IDEOGRAPH-FA30 - { 0xfa70, 0xfada, MLineBreaker::EIdLineBreakClass }, //CJK COMPATIBILITY IDEOGRAPH-FA70 - { 0xfb00, 0xfb07, MLineBreaker::EAlLineBreakClass }, //latin small ligature ff - { 0xfb13, 0xfb18, MLineBreaker::EAlLineBreakClass }, //armenian small ligature men now - { 0xfb1d, 0xfb1e, MLineBreaker::EAlLineBreakClass }, //hebrew letter yod with hiriq - { 0xfb1e, 0xfb1f, MLineBreaker::ECmLineBreakClass }, //hebrew point judeo-spanish varika - { 0xfb1f, 0xfb37, MLineBreaker::EAlLineBreakClass }, //hebrew ligature yiddish yod yod patah - { 0xfb38, 0xfb3d, MLineBreaker::EAlLineBreakClass }, //hebrew letter tet with dagesh - { 0xfb3e, 0xfb3f, MLineBreaker::EAlLineBreakClass }, //hebrew letter mem with dagesh - { 0xfb40, 0xfb42, MLineBreaker::EAlLineBreakClass }, //hebrew letter nun with dagesh - { 0xfb43, 0xfb45, MLineBreaker::EAlLineBreakClass }, //hebrew letter final pe with dagesh - { 0xfb46, 0xfbb2, MLineBreaker::EAlLineBreakClass }, //hebrew letter tsadi with dagesh - { 0xfbd3, 0xfd3e, MLineBreaker::EAlLineBreakClass }, //arabic letter ng isolated form - { 0xfd3e, 0xfd3f, MLineBreaker::EOpLineBreakClass }, //ornate left parenthesis - { 0xfd3f, 0xfd40, MLineBreaker::EClLineBreakClass }, //ornate right parenthesis - { 0xfd50, 0xfd90, MLineBreaker::EAlLineBreakClass }, //arabic ligature teh with jeem with meem initial form - { 0xfd92, 0xfdc8, MLineBreaker::EAlLineBreakClass }, //arabic ligature meem with jeem with khah initial form - { 0xfdf0, 0xfdfc, MLineBreaker::EAlLineBreakClass }, //arabic ligature salla used as koranic stop sign isolated form - { 0xfdfc, 0xfdfd, MLineBreaker::EPoLineBreakClass }, //RIAL SIGN - { 0xfdfd, 0xfdfe, MLineBreaker::EAlLineBreakClass }, //ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM - { 0xfe00, 0xfe10, MLineBreaker::ECmLineBreakClass }, //VARIATION SELECTOR-1 - { 0xfe10, 0xfe11, MLineBreaker::EIsLineBreakClass }, //PRESENTATION FORM FOR VERTICAL COMMA - { 0xfe11, 0xfe13, MLineBreaker::EClLineBreakClass }, //PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA - { 0xfe13, 0xfe15, MLineBreaker::EIsLineBreakClass }, //PRESENTATION FORM FOR VERTICAL COLON - { 0xfe15, 0xfe17, MLineBreaker::EExLineBreakClass }, //PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK - { 0xfe17, 0xfe18, MLineBreaker::EOpLineBreakClass }, //PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET - { 0xfe18, 0xfe19, MLineBreaker::EClLineBreakClass }, //PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET - { 0xfe19, 0xfe1a, MLineBreaker::EInLineBreakClass }, //PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS - { 0xfe20, 0xfe24, MLineBreaker::ECmLineBreakClass }, //combining ligature left half - { 0xfe30, 0xfe35, MLineBreaker::EIdLineBreakClass }, //presentation form for vertical two dot leader - { 0xfe35, 0xfe36, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left parenthesis - { 0xfe36, 0xfe37, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right parenthesis - { 0xfe37, 0xfe38, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left curly bracket - { 0xfe38, 0xfe39, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right curly bracket - { 0xfe39, 0xfe3a, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left tortoise shell bracket - { 0xfe3a, 0xfe3b, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right tortoise shell bracket - { 0xfe3b, 0xfe3c, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left black lenticular bracket - { 0xfe3c, 0xfe3d, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right black lenticular bracket - { 0xfe3d, 0xfe3e, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left double angle bracket - { 0xfe3e, 0xfe3f, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right double angle bracket - { 0xfe3f, 0xfe40, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left angle bracket - { 0xfe40, 0xfe41, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right angle bracket - { 0xfe41, 0xfe42, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left corner bracket - { 0xfe42, 0xfe43, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right corner bracket - { 0xfe43, 0xfe44, MLineBreaker::EOpLineBreakClass }, //presentation form for vertical left white corner bracket - { 0xfe44, 0xfe45, MLineBreaker::EClLineBreakClass }, //presentation form for vertical right white corner bracket - { 0xfe45, 0xfe47, MLineBreaker::EIdLineBreakClass }, //SESAME DOT - { 0xfe47, 0xfe48, MLineBreaker::EOpLineBreakClass }, //PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET - { 0xfe48, 0xfe49, MLineBreaker::EClLineBreakClass }, //PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET - { 0xfe49, 0xfe50, MLineBreaker::EIdLineBreakClass }, //dashed overline - { 0xfe50, 0xfe51, MLineBreaker::EClLineBreakClass }, //small comma - { 0xfe51, 0xfe52, MLineBreaker::EIdLineBreakClass }, //small ideographic comma - { 0xfe52, 0xfe53, MLineBreaker::EClLineBreakClass }, //small full stop - { 0xfe54, 0xfe56, MLineBreaker::ENsLineBreakClass }, //small semicolon - { 0xfe56, 0xfe58, MLineBreaker::EExLineBreakClass }, //small question mark - { 0xfe58, 0xfe59, MLineBreaker::EIdLineBreakClass }, //small em dash - { 0xfe59, 0xfe5a, MLineBreaker::EOpLineBreakClass }, //small left parenthesis - { 0xfe5a, 0xfe5b, MLineBreaker::EClLineBreakClass }, //small right parenthesis - { 0xfe5b, 0xfe5c, MLineBreaker::EOpLineBreakClass }, //small left curly bracket - { 0xfe5c, 0xfe5d, MLineBreaker::EClLineBreakClass }, //small right curly bracket - { 0xfe5d, 0xfe5e, MLineBreaker::EOpLineBreakClass }, //small left tortoise shell bracket - { 0xfe5e, 0xfe5f, MLineBreaker::EClLineBreakClass }, //small right tortoise shell bracket - { 0xfe5f, 0xfe67, MLineBreaker::EIdLineBreakClass }, //small number sign - { 0xfe68, 0xfe69, MLineBreaker::EIdLineBreakClass }, //small reverse solidus - { 0xfe69, 0xfe6a, MLineBreaker::EPrLineBreakClass }, //small dollar sign - { 0xfe6a, 0xfe6b, MLineBreaker::EPoLineBreakClass }, //small percent sign - { 0xfe6b, 0xfe6c, MLineBreaker::EAlLineBreakClass }, //small commercial at - { 0xfe70, 0xfe74, MLineBreaker::EAlLineBreakClass }, //arabic fathatan isolated form - { 0xfe74, 0xfe75, MLineBreaker::EAlLineBreakClass }, //arabic kasratan isolated form - { 0xfe76, 0xfefd, MLineBreaker::EAlLineBreakClass }, //arabic fatha isolated form - { 0xfeff, 0xff00, MLineBreaker::EGlLineBreakClass }, //zero width no-break space - { 0xff01, 0xff02, MLineBreaker::EExLineBreakClass }, //fullwidth exclamation mark - { 0xff02, 0xff04, MLineBreaker::EIdLineBreakClass }, //fullwidth quotation mark - { 0xff04, 0xff05, MLineBreaker::EPrLineBreakClass }, //fullwidth dollar sign - { 0xff05, 0xff06, MLineBreaker::EPoLineBreakClass }, //fullwidth percent sign - { 0xff06, 0xff08, MLineBreaker::EIdLineBreakClass }, //fullwidth ampersand - { 0xff08, 0xff09, MLineBreaker::EOpLineBreakClass }, //fullwidth left parenthesis - { 0xff09, 0xff0a, MLineBreaker::EClLineBreakClass }, //fullwidth right parenthesis - { 0xff0a, 0xff0c, MLineBreaker::EIdLineBreakClass }, //fullwidth asterisk - { 0xff0c, 0xff0d, MLineBreaker::EClLineBreakClass }, //fullwidth comma - { 0xff0d, 0xff0e, MLineBreaker::EIdLineBreakClass }, //fullwidth hyphen-minus - { 0xff0e, 0xff0f, MLineBreaker::EClLineBreakClass }, //fullwidth full stop - { 0xff0f, 0xff1a, MLineBreaker::EIdLineBreakClass }, //fullwidth solidus - { 0xff1a, 0xff1c, MLineBreaker::ENsLineBreakClass }, //fullwidth colon - { 0xff1c, 0xff1f, MLineBreaker::EIdLineBreakClass }, //fullwidth less-than sign - { 0xff1f, 0xff20, MLineBreaker::EExLineBreakClass }, //fullwidth question mark - { 0xff20, 0xff3b, MLineBreaker::EIdLineBreakClass }, //fullwidth commercial at - { 0xff3b, 0xff3c, MLineBreaker::EOpLineBreakClass }, //fullwidth left square bracket - { 0xff3c, 0xff3d, MLineBreaker::EIdLineBreakClass }, //fullwidth reverse solidus - { 0xff3d, 0xff3e, MLineBreaker::EClLineBreakClass }, //fullwidth right square bracket - { 0xff3e, 0xff5b, MLineBreaker::EIdLineBreakClass }, //fullwidth circumflex accent - { 0xff5b, 0xff5c, MLineBreaker::EOpLineBreakClass }, //fullwidth left curly bracket - { 0xff5c, 0xff5d, MLineBreaker::EIdLineBreakClass }, //fullwidth vertical line - { 0xff5d, 0xff5e, MLineBreaker::EClLineBreakClass }, //fullwidth right curly bracket - { 0xff5e, 0xff5f, MLineBreaker::EIdLineBreakClass }, //fullwidth tilde - { 0xff5f, 0xff60, MLineBreaker::EOpLineBreakClass }, //FULLWIDTH LEFT WHITE PARENTHESIS - { 0xff60, 0xff61, MLineBreaker::EClLineBreakClass }, //FULLWIDTH RIGHT WHITE PARENTHESIS - { 0xff61, 0xff62, MLineBreaker::EClLineBreakClass }, //halfwidth ideographic full stop - { 0xff62, 0xff63, MLineBreaker::EOpLineBreakClass }, //halfwidth left corner bracket - { 0xff63, 0xff65, MLineBreaker::EClLineBreakClass }, //halfwidth right corner bracket - { 0xff65, 0xff66, MLineBreaker::ENsLineBreakClass }, //halfwidth katakana middle dot - { 0xff66, 0xff67, MLineBreaker::EAlLineBreakClass }, //halfwidth katakana letter wo - { 0xff67, 0xff71, MLineBreaker::ENsLineBreakClass }, //halfwidth katakana letter small a - { 0xff71, 0xff9e, MLineBreaker::EAlLineBreakClass }, //halfwidth katakana letter a - { 0xff9e, 0xffa0, MLineBreaker::ENsLineBreakClass }, //halfwidth katakana voiced sound mark - { 0xffa0, 0xffbf, MLineBreaker::EAlLineBreakClass }, //halfwidth hangul filler - { 0xffc2, 0xffc8, MLineBreaker::EAlLineBreakClass }, //halfwidth hangul letter a - { 0xffca, 0xffd0, MLineBreaker::EAlLineBreakClass }, //halfwidth hangul letter yeo - { 0xffd2, 0xffd8, MLineBreaker::EAlLineBreakClass }, //halfwidth hangul letter yo - { 0xffda, 0xffdd, MLineBreaker::EAlLineBreakClass }, //halfwidth hangul letter eu - { 0xffe0, 0xffe1, MLineBreaker::EPoLineBreakClass }, //fullwidth cent sign - { 0xffe1, 0xffe2, MLineBreaker::EPrLineBreakClass }, //fullwidth pound sign - { 0xffe2, 0xffe5, MLineBreaker::EIdLineBreakClass }, //fullwidth not sign - { 0xffe5, 0xffe7, MLineBreaker::EPrLineBreakClass }, //fullwidth yen sign - { 0xffe8, 0xffef, MLineBreaker::EAlLineBreakClass }, //halfwidth forms light vertical - { 0xfff9, 0xfffc, MLineBreaker::ECmLineBreakClass }, //interlinear annotation anchor - { 0xfffc, 0xfffd, MLineBreaker::ECbLineBreakClass }, //object replacement character - { 0xfffd, 0xfffe, MLineBreaker::EAiLineBreakClass }, //replacement character - { 0x10000, 0x1000c, MLineBreaker::EAlLineBreakClass }, //LINEAR B SYLLABLE B008 A - { 0x1000d, 0x10027, MLineBreaker::EAlLineBreakClass }, //LINEAR B SYLLABLE B036 JO - { 0x10028, 0x1003b, MLineBreaker::EAlLineBreakClass }, //LINEAR B SYLLABLE B060 RA - { 0x1003c, 0x1003e, MLineBreaker::EAlLineBreakClass }, //LINEAR B SYLLABLE B017 ZA - { 0x1003f, 0x1004e, MLineBreaker::EAlLineBreakClass }, //LINEAR B SYLLABLE B020 ZO - { 0x10050, 0x1005e, MLineBreaker::EAlLineBreakClass }, //LINEAR B SYMBOL B018 - { 0x10080, 0x100fb, MLineBreaker::EAlLineBreakClass }, //LINEAR B IDEOGRAM B100 MAN - { 0x10100, 0x10103, MLineBreaker::EBaLineBreakClass }, //AEGEAN WORD SEPARATOR LINE - { 0x10107, 0x10134, MLineBreaker::EAlLineBreakClass }, //AEGEAN NUMBER ONE - { 0x10137, 0x1018b, MLineBreaker::EAlLineBreakClass }, //AEGEAN WEIGHT BASE UNIT - { 0x10300, 0x1031f, MLineBreaker::EAlLineBreakClass }, //OLD ITALIC LETTER A - { 0x10320, 0x10324, MLineBreaker::EAlLineBreakClass }, //OLD ITALIC NUMERAL ONE - { 0x10330, 0x1034b, MLineBreaker::EAlLineBreakClass }, //GOTHIC LETTER AHSA - { 0x10380, 0x1039e, MLineBreaker::EAlLineBreakClass }, //UGARITIC LETTER ALPA - { 0x1039f, 0x103a0, MLineBreaker::EBaLineBreakClass }, //UGARITIC WORD DIVIDER - { 0x103a0, 0x103c4, MLineBreaker::EAlLineBreakClass }, //OLD PERSIAN SIGN A - { 0x103c8, 0x103d0, MLineBreaker::EAlLineBreakClass }, //OLD PERSIAN SIGN AURAMAZDAA - { 0x103d0, 0x103d1, MLineBreaker::EBaLineBreakClass }, //OLD PERSIAN WORD DIVIDER - { 0x103d1, 0x103d6, MLineBreaker::EAlLineBreakClass }, //OLD PERSIAN NUMBER ONE - { 0x10400, 0x1049e, MLineBreaker::EAlLineBreakClass }, //DESERET CAPITAL LETTER LONG I - { 0x104a0, 0x104aa, MLineBreaker::ENuLineBreakClass }, //OSMANYA DIGIT ZERO - { 0x10800, 0x10806, MLineBreaker::EAlLineBreakClass }, //CYPRIOT SYLLABLE A - { 0x10808, 0x10809, MLineBreaker::EAlLineBreakClass }, //CYPRIOT SYLLABLE JO - { 0x1080a, 0x10836, MLineBreaker::EAlLineBreakClass }, //CYPRIOT SYLLABLE KA - { 0x10837, 0x10839, MLineBreaker::EAlLineBreakClass }, //CYPRIOT SYLLABLE XA - { 0x1083c, 0x1083d, MLineBreaker::EAlLineBreakClass }, //CYPRIOT SYLLABLE ZA - { 0x1083f, 0x10840, MLineBreaker::EAlLineBreakClass }, //CYPRIOT SYLLABLE ZO - { 0x10900, 0x1091a, MLineBreaker::EAlLineBreakClass }, //PHOENICIAN LETTER ALF - { 0x1091f, 0x10920, MLineBreaker::EBaLineBreakClass }, //PHOENICIAN WORD SEPARATOR - { 0x10a00, 0x10a01, MLineBreaker::EAlLineBreakClass }, //KHAROSHTHI LETTER A - { 0x10a01, 0x10a04, MLineBreaker::ECmLineBreakClass }, //KHAROSHTHI VOWEL SIGN I - { 0x10a05, 0x10a07, MLineBreaker::ECmLineBreakClass }, //KHAROSHTHI VOWEL SIGN E - { 0x10a0c, 0x10a10, MLineBreaker::ECmLineBreakClass }, //KHAROSHTHI VOWEL LENGTH MARK - { 0x10a10, 0x10a14, MLineBreaker::EAlLineBreakClass }, //KHAROSHTHI LETTER KA - { 0x10a15, 0x10a18, MLineBreaker::EAlLineBreakClass }, //KHAROSHTHI LETTER CA - { 0x10a19, 0x10a34, MLineBreaker::EAlLineBreakClass }, //KHAROSHTHI LETTER NYA - { 0x10a38, 0x10a3b, MLineBreaker::ECmLineBreakClass }, //KHAROSHTHI SIGN BAR ABOVE - { 0x10a3f, 0x10a40, MLineBreaker::ECmLineBreakClass }, //KHAROSHTHI VIRAMA - { 0x10a40, 0x10a48, MLineBreaker::EAlLineBreakClass }, //KHAROSHTHI DIGIT ONE - { 0x10a50, 0x10a58, MLineBreaker::EBaLineBreakClass }, //KHAROSHTHI PUNCTUATION DOT - { 0x10a58, 0x10a59, MLineBreaker::EAlLineBreakClass }, //KHAROSHTHI PUNCTUATION LINES - { 0x12000, 0x1236f, MLineBreaker::EAlLineBreakClass }, //CUNEIFORM SIGN A - { 0x12400, 0x12463, MLineBreaker::EAlLineBreakClass }, //CUNEIFORM NUMERIC SIGN TWO ASH - { 0x12470, 0x12474, MLineBreaker::EBaLineBreakClass }, //CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER - { 0x1d000, 0x1d0f6, MLineBreaker::EAlLineBreakClass }, //BYZANTINE MUSICAL SYMBOL PSILI - { 0x1d100, 0x1d127, MLineBreaker::EAlLineBreakClass }, //MUSICAL SYMBOL SINGLE BARLINE - { 0x1d12a, 0x1d165, MLineBreaker::EAlLineBreakClass }, //MUSICAL SYMBOL DOUBLE SHARP - { 0x1d165, 0x1d16a, MLineBreaker::ECmLineBreakClass }, //MUSICAL SYMBOL COMBINING STEM - { 0x1d16a, 0x1d16d, MLineBreaker::EAlLineBreakClass }, //MUSICAL SYMBOL FINGERED TREMOLO-1 - { 0x1d16d, 0x1d183, MLineBreaker::ECmLineBreakClass }, //MUSICAL SYMBOL COMBINING AUGMENTATION DOT - { 0x1d183, 0x1d185, MLineBreaker::EAlLineBreakClass }, //MUSICAL SYMBOL ARPEGGIATO UP - { 0x1d185, 0x1d18c, MLineBreaker::ECmLineBreakClass }, //MUSICAL SYMBOL COMBINING DOIT - { 0x1d18c, 0x1d1aa, MLineBreaker::EAlLineBreakClass }, //MUSICAL SYMBOL RINFORZANDO - { 0x1d1aa, 0x1d1ae, MLineBreaker::ECmLineBreakClass }, //MUSICAL SYMBOL COMBINING DOWN BOW - { 0x1d1ae, 0x1d1de, MLineBreaker::EAlLineBreakClass }, //MUSICAL SYMBOL PEDAL MARK - { 0x1d200, 0x1d242, MLineBreaker::EAlLineBreakClass }, //GREEK VOCAL NOTATION SYMBOL-1 - { 0x1d242, 0x1d245, MLineBreaker::ECmLineBreakClass }, //COMBINING GREEK MUSICAL TRISEME - { 0x1d245, 0x1d246, MLineBreaker::EAlLineBreakClass }, //GREEK MUSICAL LEIMMA - { 0x1d300, 0x1d357, MLineBreaker::EAlLineBreakClass }, //MONOGRAM FOR EARTH - { 0x1d360, 0x1d372, MLineBreaker::EAlLineBreakClass }, //COUNTING ROD UNIT DIGIT ONE - { 0x1d400, 0x1d455, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL BOLD CAPITAL A - { 0x1d456, 0x1d49d, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL ITALIC SMALL I - { 0x1d49e, 0x1d4a0, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT CAPITAL C - { 0x1d4a2, 0x1d4a3, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT CAPITAL G - { 0x1d4a5, 0x1d4a7, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT CAPITAL J - { 0x1d4a9, 0x1d4ad, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT CAPITAL N - { 0x1d4ae, 0x1d4ba, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT CAPITAL S - { 0x1d4bb, 0x1d4bc, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT SMALL F - { 0x1d4bd, 0x1d4c4, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT SMALL H - { 0x1d4c5, 0x1d506, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL SCRIPT SMALL P - { 0x1d507, 0x1d50b, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL FRAKTUR CAPITAL D - { 0x1d50d, 0x1d515, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL FRAKTUR CAPITAL J - { 0x1d516, 0x1d51d, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL FRAKTUR CAPITAL S - { 0x1d51e, 0x1d53a, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL FRAKTUR SMALL A - { 0x1d53b, 0x1d53f, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL DOUBLE-STRUCK CAPITAL D - { 0x1d540, 0x1d545, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL DOUBLE-STRUCK CAPITAL I - { 0x1d546, 0x1d547, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL DOUBLE-STRUCK CAPITAL O - { 0x1d54a, 0x1d551, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL DOUBLE-STRUCK CAPITAL S - { 0x1d552, 0x1d6a6, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL DOUBLE-STRUCK SMALL A - { 0x1d6a8, 0x1d7cc, MLineBreaker::EAlLineBreakClass }, //MATHEMATICAL BOLD CAPITAL ALPHA - { 0x1d7ce, 0x1d800, MLineBreaker::ENuLineBreakClass }, //MATHEMATICAL BOLD DIGIT ZERO - { 0x20000, 0x2a6d6, MLineBreaker::EIdLineBreakClass }, //<CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last> - { 0x2f800, 0x2fa1e, MLineBreaker::EIdLineBreakClass }, //CJK COMPATIBILITY IDEOGRAPH-2F800 - { 0xe0001, 0xe0002, MLineBreaker::ECmLineBreakClass }, //LANGUAGE TAG - { 0xe0020, 0xe0080, MLineBreaker::ECmLineBreakClass }, //TAG SPACE - { 0xe0100, 0xe01f0, MLineBreaker::ECmLineBreakClass }, //VARIATION SELECTOR-17 - { 0xf0000, 0xffffd, MLineBreaker::EXxLineBreakClass }, //<Plane 15 Private Use, First>..<Plane 15 Private Use, Last> - { 0x100000, 0x10fffd, MLineBreaker::EXxLineBreakClass }, //<Plane 16 Private Use, First>..<Plane 16 Private Use, Last> - }; - -static const TInt TheLineBreakRanges = sizeof(TheLineBreakRangeTable) / sizeof(TheLineBreakRangeTable[0]); - -void TestLineBreakTables(void) - { -#ifdef _DEBUG - TUint prev_end = 0; - for (int i = 0; i < TheLineBreakRanges; i++) - { - const TLineBreakRange& r = TheLineBreakRangeTable[i]; - if (r.iStart >= r.iEnd || r.iClass >= MLineBreaker::ELineBreakClasses || r.iStart < prev_end) - Panic(ELineBreakPanic_BadTable); - prev_end = r.iEnd; - } -#endif - } - -TUint TLineBreakClassCache::LineBreakClass(TUint aChar) - { - if (aChar >= iStart && aChar < iEnd) - return iClass; - TUint new_start, new_end; - TUint new_class = iBreaker.LineBreakClass(aChar,new_start,new_end); - if (new_start < new_end - 1) - { - iStart = new_start; - iEnd = new_end; - iClass = new_class; - } - return new_class; - } - -EXPORT_C TBool MLineBreaker::LineBreakPossible( - TUint aPrevClass, TUint aNextClass, TBool aHaveSpaces) const -/** Returns whether line breaks are legal between a character of line breaking -class aPrevClass and aNextClass, with intervening spaces or not as determined -by aHaveSpaces. - -@param aPrevClass The class before the potential line break. -@param aNextClass The class after the potential line break. -@param aHaveSpaces Whether spaces separate the characters. -@return ETrue if and only if a line break is legal in the situation described. */ - { - if (aPrevClass >= ELineBreakClasses || aNextClass >= ELineBreakClasses) - return FALSE; - const TLineBreakRule& rule = TheLineBreakRuleTable[aPrevClass]; - TUint flag = 1 << aNextClass; - if (rule.iForbid & flag) - return FALSE; - return aHaveSpaces || (rule.iAllow & flag); - } - -EXPORT_C TUint MLineBreaker::LineBreakClass(TUint aCode,TUint& aRangeStart,TUint& aRangeEnd) const -/** Converts Unicode character into line breaking class. - -@param aCode Input Unicode value. -@param aRangeStart Returns the start of the contiguous range of characters -including aCode that have the returned line breaking class. -@param aRangeEnd Returns the end of the contiguous range of characters including -aCode that have the returned line breaking class. -@return The line breaking class for aCode. */ - { - aRangeStart = aCode; - aRangeEnd = aCode + 1; - - // First check for a space; this needs to be fast. - if (aCode == 0x0020) - return ESpLineBreakClass; - - // Now search the table. - const TLineBreakRange* base = TheLineBreakRangeTable; - const TLineBreakRange* end = base + TheLineBreakRanges; - while (base < end) - { - int n = end - base; - const TLineBreakRange* r = &base[n / 2]; - if (r->iStart > aCode) - end = r; - else if (r->iEnd <= aCode) - base = r + 1; - else - { - aRangeStart = r->iStart; - aRangeEnd = r->iEnd; - return r->iClass; - } - } - - // If the character was not in the table determine the line break class using the Unicode character category. - TChar::TCategory cat = TChar(aCode).GetCategory(); - switch (cat) - { - case TChar::ELuCategory: - case TChar::ELlCategory: - case TChar::ELtCategory: - case TChar::ELoCategory: - case TChar::ESmCategory: - case TChar::ESoCategory: - return EAlLineBreakClass; - - case TChar::ESkCategory: - if (TChar(aCode).GetCjkWidth() == TChar::EWide) - return ENsLineBreakClass; - else - return EAlLineBreakClass; - - case TChar::ELmCategory: - { - TChar::TCjkWidth cjk_width = TChar(aCode).GetCjkWidth(); - if (cjk_width == TChar::EWide || cjk_width == TChar::EHalfWidth) - return ENsLineBreakClass; - } - break; - - case TChar::EMnCategory: - case TChar::EMcCategory: - case TChar::EMeCategory: - case TChar::ECcCategory: - case TChar::ECfCategory: - return ECmLineBreakClass; - - case TChar::ENdCategory: - return ENuLineBreakClass; - - case TChar::EPsCategory: - return EOpLineBreakClass; - - case TChar::EPeCategory: - return EClLineBreakClass; - - case TChar::EScCategory: - return EPrLineBreakClass; - - case TChar::EPfCategory: - case TChar::EPiCategory: - return EQuLineBreakClass; - - case TChar::ECsCategory: - return ESgLineBreakClass; - - default: - break; - } - - // If it has still not been found it may be an ideographic character not covered above. - if (aCode >= 0x3000 && aCode <= 0x3FFF) - return EIdLineBreakClass; - - // Or it may be a surrogate; assume plane 1 is alphabetic, plane 2 is ideographic. - if (aCode >= 0x10000 && aCode <= 0x1FFFF) - return EAlLineBreakClass; - if (aCode >= 0x20000 && aCode <= 0x2FFFF) - return EIdLineBreakClass; - - // Return the catch-all class. - return EXxLineBreakClass; - } - - -EXPORT_C TBool MLineBreaker::IsHangingCharacter(TUint) const -/** Returns ETrue if the character value may be positioned outside the margins. - -@param aChar Chatacter to test -@return ETrue if the character value may be positioned outside the margins. */ - { - return EFalse; - } - -TInt MakeSurrogate(TInt aHigh, TInt aLow) - { - return (aHigh << 10) + (aLow & 0x3FF) - + (0x10000 - 0xD800*0x400); - } - -inline TBool IsSurrogate(TInt aChar) - { - return (aChar & 0xF800) == 0xD800; - } - -inline TBool IsHighSurrogate(TInt aChar) - { - return (aChar & 0xFC00) == 0xD800; - } - -inline TBool IsLowSurrogate(TInt aChar) - { - return (aChar & 0xFC00) == 0xDC00; - } - -/** -Move past the current character and return the next. -@param aPtr - Pointer to the current character. On return, contains a pointer to the next - character. -@param aLimit - Limit of the iteration. For positive aOffset (moving forwards) this should - be one less than the end of the text. For negative aOffset (moving - backwards) this should be the start of the text. -@param aOffset - 1 for moving forward, -1 for moving backward. -@return - Unicode character value or -1 on error. -@internalComponent -*/ -TInt MoveTextPtr(const TText*& aPtr, const TText* aLimit, TInt aOffset) - { - // if (aPtr - aLimit) has the same sign as aOffset then we are - // already too far. - if (0 <= ((aPtr - aLimit) ^ aOffset) - && aLimit) - return -1; - TInt c = 0; - for (;;) - { - if (aPtr == aLimit) - return -1; - aPtr += aOffset; - TInt lastc = c; - c = *aPtr; - if (!IsSurrogate(c)) - return c; - if (aOffset < 0) - { - if (IsHighSurrogate(c) && IsLowSurrogate(lastc)) - return MakeSurrogate(c, lastc); - } - else - { - if (IsHighSurrogate(lastc) && IsLowSurrogate(c)) - { - // found a surrogate pair - // Set the pointer to the first of the pair - --aPtr; - return MakeSurrogate(lastc, c); - } - } - } - } - -/** Find the line break class of the latest character within [aFirst, aP+1] -to have non-CM line break class. -@pre aP points to a character of CM class. -*/ -inline TUint GetGlyphClusterLineBreakClass(const TText* aP, - const TText* aFirst, TLineBreakClassCache& aBreaker) - { - TInt ch = MoveTextPtr(aP, aFirst, -1); - while (0 <= ch) - { - TUint cl = aBreaker.LineBreakClass(ch); - if (cl != MLineBreaker::ECmLineBreakClass) - return cl; - ch = MoveTextPtr(aP, aFirst, -1); - } - return MLineBreaker::ECmLineBreakClass; - } - -void TLineBreakClassIterator::Set(const TText* aFirst, const TText* aText, TLineBreakClassCache& aBreaker) - { - iFirst = aFirst; - iCurrent = aText; - TInt c = *aText; - if (IsHighSurrogate(c)) - { - if (IsLowSurrogate(aText[1])) - c = MakeSurrogate(c, aText[1]); - } - iClass = aBreaker.LineBreakClass(c); - if (iClass == MLineBreaker::ECmLineBreakClass) - { - TUint baseLbCls = GetGlyphClusterLineBreakClass(iCurrent, iFirst, aBreaker); - if (baseLbCls == MLineBreaker::ESaLineBreakClass) - iClass = MLineBreaker::ESaLineBreakClass; - } - } - -void TLineBreakClassIterator::SetNull() - { - iFirst = iCurrent = 0; - } - -TBool TLineBreakClassIterator::Move(const TText* aLimit, - const TText* aLimitAfterSpaces, TInt aOffset, - TBool& aHasSpaces, TLineBreakClassCache& aBreaker) - { - TInt c = MoveTextPtr(iCurrent, aLimit, aOffset); - if (c < 0) - return EFalse; - TUint lbClass = aBreaker.LineBreakClass(c); - if (lbClass == MLineBreaker::ESpLineBreakClass) - { - aHasSpaces = ETrue; - while (lbClass == MLineBreaker::ESpLineBreakClass) - { - c = MoveTextPtr(iCurrent, aLimitAfterSpaces, aOffset); - // We have hit the limit, but there might be more text to search - // after the spaces. - if (c < 0) - { - iClass = MLineBreaker::ESpLineBreakClass; - return ETrue; - } - lbClass = aBreaker.LineBreakClass(c); - } - iClass = lbClass; - return ETrue; - } - - // Cm class characters taken on their base character's - // line break property in the combining character sequence - // See D14 in Conformance chapter of Unicode 3.0 book. - // We do this just for Complex content to maintain backwards - // compatibility otherwise original test cases fail. - if (lbClass == MLineBreaker::ECmLineBreakClass) - { - TUint baseLbCls = GetGlyphClusterLineBreakClass(iCurrent, iFirst, aBreaker); - if (baseLbCls == MLineBreaker::ESaLineBreakClass) - lbClass = MLineBreaker::ESaLineBreakClass; - } - - aHasSpaces = EFalse; - if (lbClass == MLineBreaker::ESaLineBreakClass - && iClass == MLineBreaker::ESaLineBreakClass) - { - // We have at least two SA characters, so we need to find the - // total extent of the SA block. GetLineBreakInContext will be asked - // to find the break. - const TText* p = iCurrent; - while (0 <= c && lbClass == MLineBreaker::ESaLineBreakClass) - { - iCurrent = p; - c = MoveTextPtr(p, aOffset < 0? iFirst : aLimitAfterSpaces, aOffset); - lbClass = aBreaker.LineBreakClass(c); - - // Cm class characters taken on their base character's - // line break property. See above. - if (lbClass == MLineBreaker::ECmLineBreakClass) - { - TUint baseLbCls = GetGlyphClusterLineBreakClass(p, iFirst, aBreaker); - if (baseLbCls == MLineBreaker::ESaLineBreakClass) - lbClass = MLineBreaker::ESaLineBreakClass; - } - if (lbClass == MLineBreaker::EZwLineBreakClass) - { - iCurrent = p; - } - } - return ETrue; - } - iClass = lbClass; - return ETrue; - } - -TLineBreakIterator::TLineBreakIterator(TLineBreakClassCache& aBreaker, - const TText* aText, TInt aLength, TBool aForwards, - TInt aMinBreakPos, TInt aMaxBreakPos) - : iBreaker(aBreaker), iText(aText), iTextLength(aLength), iHasSpaces(EFalse) - { - if (aMinBreakPos < 1) - aMinBreakPos = 1; - // Find the next valid character and see if it can hang - // over the margin. - const TText* endText = aText + aLength; - const TText* max = aText + aMaxBreakPos; - if (endText <= max && aText < endText) - { - // let 'max' point to last character - max = endText - 1; - if (IsLowSurrogate(*max)) - { - ASSERT(aLength > 1); - --max; - ASSERT(IsHighSurrogate(*max)); - } - } - TInt c = 0xFFFF; - while (max < endText) - { - TInt lastc = c; - c = *max; - if ((c & 0xF800) != 0xD800) - break; - if ((lastc & 0xFC00) == 0xD800 - && (c & 0xFC00) == 0xDC00) - { - c = MakeSurrogate(lastc, c); - break; - } - ++max; - } - if (c != 0xFFFF && max + 1 < endText - && aBreaker.Breaker().IsHangingCharacter(c)) - // Set max to just beyond hanging character - ++max; - // till here, 'max' points to the "end" of a character - - // set up the iteration. - iMinBreakPos = aText + aMinBreakPos; - iMaxBreakPos = aText + aMaxBreakPos; - // Increment or Decrement must be called to complete set up. - if (max < aText + aMinBreakPos) - { - // no possible line breaks - iLimit = 0; - iAfterBreak.SetNull(); - iBeforeBreak.SetNull(); - } - else if (aForwards) - { - iLimit = max; // point to the 'end' of the last character (low surrogate if supplementary) - iLimitAfterSpaces = endText - 1; - iAfterBreak.Set(iText, aText + aMinBreakPos - 1, aBreaker); - } - else - { - iLimit = aText + aMinBreakPos - 1; - iLimitAfterSpaces = iLimit; - iBeforeBreak.Set(iText, max - 1, aBreaker); - iBeforeBreak.Move(endText - 1, endText - 1, 1, iHasSpaces, aBreaker); - } - } - -TBool TLineBreakIterator::IsBreak(TBool aForwards) - { - TInt beforeClass = iBeforeBreak.Class(); - TInt afterClass = iAfterBreak.Class(); - const MLineBreaker& breaker = iBreaker.Breaker(); - - // Line break characters overhang the margin - // along with the spaces that precede them. - if (afterClass == MLineBreaker::EBkLineBreakClass) - { - const TText* p = iAfterBreak.Ptr(); - MoveTextPtr(p, iText + iTextLength, 1); - iAfterBreak.Set(iText, p, iBreaker); - return ETrue; - } - - // Find break within this run of SA text - const TText* startOfSaText = iBeforeBreak.Ptr(); - const TText* endOfSaText = iAfterBreak.Ptr(); - - if ((beforeClass != MLineBreaker::ESaLineBreakClass && *startOfSaText != KWhiteSpace) || - (afterClass != MLineBreaker::ESaLineBreakClass)) - // Complex (South-East Asian) line breaking rules not required. - return breaker.LineBreakPossible(beforeClass, afterClass, iHasSpaces); - - MoveTextPtr(endOfSaText, iText + iTextLength, 1); - const TText* minBreak = startOfSaText < iMinBreakPos ? - iMinBreakPos : startOfSaText + 1; - const TText* maxBreak = iMaxBreakPos < endOfSaText ? - iMaxBreakPos : endOfSaText - 1; - TInt breakPos; - TPtrC saText(startOfSaText, endOfSaText - startOfSaText); - if (!breaker.GetLineBreakInContext(saText, - minBreak - startOfSaText, maxBreak - startOfSaText, - aForwards, breakPos)) - return EFalse; - - // Convert the break position within SA text into iterator positions. - const TText* p = startOfSaText + breakPos; - iAfterBreak.Set(iText, p, iBreaker); - if (*p != KZeroWidthSpace) MoveTextPtr(p, 0, -1); - iBeforeBreak.Set(iText, p, iBreaker); - - return ETrue; - } - -TBool TLineBreakIterator::HasContingentBreak() const - { - return iBeforeBreak.Class() == MLineBreaker::ECbLineBreakClass - || iAfterBreak.Class() == MLineBreaker::ECbLineBreakClass; - } - -TInt TLineBreakIterator::PreviousClass() const - { - return iBeforeBreak.Class(); - } - -TInt TLineBreakIterator::NextClass() const - { - return iAfterBreak.Class(); - } - -TBool TLineBreakIterator::HasSpaces() const - { - return iHasSpaces; - } - -TBool TLineBreakIterator::Decrement() - { - iAfterBreak = iBeforeBreak; - return iBeforeBreak.Move(iLimit, iLimitAfterSpaces, -1, iHasSpaces, iBreaker); - } - -TBool TLineBreakIterator::Increment() - { - iBeforeBreak = iAfterBreak; - return iAfterBreak.Move(iLimit, iLimitAfterSpaces, 1, iHasSpaces, iBreaker); - } - -TInt TLineBreakIterator::BreakPos() const - { - const TText* t = iBeforeBreak.Ptr(); - MoveTextPtr(t, 0, 1); - return t - iText; - } - -TInt TLineBreakIterator::BeforeBreakPos() const - { - return iBeforeBreak.Ptr() - iText; - } - -TInt TLineBreakIterator::AfterBreakPos() const - { - return iAfterBreak.Ptr() - iText; - } - -TBool HasContingentBreak(TLineBreakIterator& aIterator, - MContingentLineBreaker& aCbDelegate) - { - if (aIterator.PreviousClass() == MLineBreaker::ECbLineBreakClass - && aCbDelegate.IsLegalBreakAfter( - aIterator.BeforeBreakPos(), aIterator.NextClass(), - aIterator.HasSpaces())) - return ETrue; - if (aIterator.NextClass() == MLineBreaker::ECbLineBreakClass - && aCbDelegate.IsLegalBreakBefore( - aIterator.AfterBreakPos(), aIterator.PreviousClass(), - aIterator.HasSpaces())) - return ETrue; - return EFalse; - } - -TBool FindBreak(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreaker* aCbDelegate) - { - while (aForwards? aIterator.Increment() : aIterator.Decrement()) - { - if (aCbDelegate && aIterator.HasContingentBreak()) - { - if (HasContingentBreak(aIterator, *aCbDelegate)) - { - return ETrue; - } - } - else if (aIterator.IsBreak(aForwards)) - { - return ETrue; - } - } - return EFalse; - } - -TBool HasContingentBreakL(TLineBreakIterator& aIterator, - MContingentLineBreakerL& aCbDelegate) - { - if (aIterator.PreviousClass() == MLineBreaker::ECbLineBreakClass - && aCbDelegate.IsLegalBreakAfterL( - aIterator.BeforeBreakPos(), aIterator.NextClass(), - aIterator.HasSpaces())) - return ETrue; - if (aIterator.NextClass() == MLineBreaker::ECbLineBreakClass - && aCbDelegate.IsLegalBreakBeforeL( - aIterator.AfterBreakPos(), aIterator.PreviousClass(), - aIterator.HasSpaces())) - return ETrue; - return EFalse; - } - -TBool FindBreakL(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreakerL* aCbDelegate) - { - while (aForwards? aIterator.Increment() : aIterator.Decrement()) - { - if (aCbDelegate && aIterator.HasContingentBreak()) - { - if (HasContingentBreakL(aIterator, *aCbDelegate)) - return ETrue; - } - else if (aIterator.IsBreak(aForwards)) - return ETrue; - } - return EFalse; - } - -EXPORT_C TBool MLineBreaker::GetLineBreak(const TDesC& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards, - MContingentLineBreaker* aCbDelegate, - TInt& aBreakPos, TInt& aBreakPosAfterSpaces) const -/** Finds the line break according to the rules in the virtual functions. - -@param aText The text to be broken. -@param aMinBreakPos The smallest allowed result. -@param aMaxBreakPos The position of the first character that fails to fit the -measure. -@param aForwards ETrue to find the earliest legal break opportunity, EFalse -to find the last. -@param aCbDelegate Object to resolve breaks around characters with the CB (cointingent -break) line breaking class. Typically this class is only used for character -0xFFFD, which usually marks the position of embedded pictures. May be NULL, -in which case LineBreakPossible() determines whether these breaks are legal. -@param aBreakPos Returns the position of the break. -@param aBreakPosAfterSpaces Returns the position of the start of the next line. -@return ETrue if successful, EFalse if no legal line breaks were found. */ - { - TLineBreakClassCache cache(*this); - const TText* text = aText.Ptr(); - TLineBreakIterator it(cache, text, aText.Length(), - aForwards, aMinBreakPos, aMaxBreakPos); - if (!FindBreak(it, aForwards, aCbDelegate)) - return EFalse; - aBreakPos = it.BreakPos(); - aBreakPosAfterSpaces = it.AfterBreakPos(); - return ETrue; - } - -EXPORT_C TBool MLineBreaker::GetLineBreakL(const TDesC& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards, - MContingentLineBreakerL* aCbDelegate, - TInt& aBreakPos, TInt& aBreakPosAfterSpaces) const -/** Exactly the same as GetLineBreak, but aCbDelegate's functions may leave so -the whole function may leave. - -@param aText The text to be broken. -@param aMinBreakPos The smallest allowed result. -@param aMaxBreakPos he position of the first character that fails to fit the -measure. -@param aForwards ETrue to find the earliest legal break opportunity, EFalse -to find the last. -@param aCbDelegate Object to resolve breaks around characters with the CB (cointingent -break) line breaking class. Typically this class is only used for character -0xFFFD, which usually marks the position of embedded pictures. May be NULL, -in which case LineBreakPossible() determines whether these breaks are legal. -@param aBreakPos Returns the position of the break. -@param aBreakPosAfterSpaces Returns the position of the start of the next line. -@return ETrue if successful, EFalse if no legal line breaks were found. */ - { - if (aMaxBreakPos < aMinBreakPos) - return EFalse; - TLineBreakClassCache cache(*this); - const TText* text = aText.Ptr(); - TLineBreakIterator it(cache, text, aText.Length(), - aForwards, aMinBreakPos, aMaxBreakPos); - if (!FindBreakL(it, aForwards, aCbDelegate)) - return EFalse; - aBreakPos = it.BreakPos(); - aBreakPosAfterSpaces = it.AfterBreakPos(); - return ETrue; - } -EXPORT_C void* MLineBreaker::ExtendedInterface(TUid&) const -/** Returns an interface to more functions, or 0 if these are unsupported. -Currently there are no other functions, so 0 is always returned. If this -function is overridden, it must base call if aUid is not recognised, -rather than just returning 0. -@param aUid Identifies the interface to be returned. -@return A pointer to the extended interface, or 0 if not supported. */ - { - return 0; - } - - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/LineBreakImp.h --- a/graphicsdeviceinterface/gdi/sgdi/LineBreakImp.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,181 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef LINEBREAKIMP_H_ -#define LINEBREAKIMP_H_ - -#include <e32def.h> - -const TText KZeroWidthSpace = 0x200B; -const TText KWhiteSpace = 0x0020; - -// Forward delcarations. -GLREF_C void Panic(TInt aError); -class MLineBreaker; - -/** - Rule for which classes may be broken before. -@internalComponent - */ -struct TLineBreakRule - { - /** Classes that breaks are illegal before, even after spaces. */ - TUint iForbid; - /** Classes that breaks are legal before, even without spaces. */ - TUint iAllow; - }; - -/** - Range of characters which have a particular line breaking class. -@internalComponent - */ -struct TLineBreakRange - { - TUint iStart; - TUint iEnd; - TUint iClass; - }; - -/** - Single-entry line break cache. Saves asking the MLineBreaker for the classes - of multiple characters in the same run. -@internalComponent - */ -class TLineBreakClassCache - { -public: - TLineBreakClassCache(const MLineBreaker& aBreaker): iBreaker(aBreaker), iStart(0), iEnd(0), iClass(0) { } - TUint LineBreakClass(TUint aChar); - const MLineBreaker& Breaker() const { return iBreaker; } - -private: - const MLineBreaker& iBreaker; - TUint iStart; - TUint iEnd; - TUint iClass; - }; - -/** -@internalComponent - */ -void TestLineBreakTables(void); - -/** -@internalComponent - */ -class TLineBreakClassIterator - { -public: - void Set(const TText* aFirst, const TText* aText, TLineBreakClassCache& aBreaker); - void SetNull(); - /** Returns the pointer to the character that has the class returned by - Class(). */ - const TText* Ptr() const { return iCurrent; } - /** Returns the class of the current character. */ - TInt Class() const { return iClass; } - // Will not go beyond maximum of aLimit - // Should not be called with aLimit == Ptr() - // Will return EFalse if the limit has been exceeded - // aOffset must be 1 or -1 - TBool Move(const TText* aLimit, const TText* aLimitAfterSpaces, - TInt aOffset, TBool& aHasSpaces, TLineBreakClassCache& aBreaker); -private: - /** Addres of first character in the string to iterator through */ - const TText* iFirst; - /** Current position within the iteration. */ - const TText* iCurrent; - /** Class of the character at the currrent position. */ - TInt iClass; - }; - - -/** -@internalComponent - */ -TInt MoveTextPtr(const TText*& aPtr, const TText* aLimit, TInt aOffset); - -/** - Class for implementing the Unicode line breaking algorithm -@internalComponent - */ -class TLineBreakIterator - { -public: - TLineBreakIterator(TLineBreakClassCache& aBreaker, - const TText* aText, TInt aLength, TBool aForwards, - TInt aMinBreakPos, TInt aMaxBreakPos); - TBool IsBreak(TBool aForwards); - // Is one side of the potential line break CB class? - TBool HasContingentBreak() const; - // Get class before the break: useful for CB - TInt PreviousClass() const; - // Get class after the break: useful for CB - TInt NextClass() const; - // Are there spaces between the classes: useful for CB - TInt HasSpaces() const; - // go backwards - TBool Decrement(); - // go forwards - TBool Increment(); - // position of iterator at the break - TInt BreakPos() const; - // position of iterator after the break - TInt AfterBreakPos() const; - // position of iterator before the break - TInt BeforeBreakPos() const; -private: - TLineBreakClassCache iBreaker; - const TText* iText; - TInt iTextLength; - const TText* iLimit; - /** The limit that we are allowed to search beyond space characters. For - forwards this will be up to the end of the text, for backwards we may not - search beyond the minimum break position because that would mean that the - break position returned would be below the minimum. */ - const TText* iLimitAfterSpaces; - TLineBreakClassIterator iBeforeBreak; - TLineBreakClassIterator iAfterBreak; - TBool iHasSpaces; - /** Holds the address of the lowest point allowed to break at */ - const TText* iMinBreakPos; - /** Holds the address of the highest point allowed to break at */ - const TText* iMaxBreakPos; - }; - -/** -@internalComponent -*/ -TBool HasContingentBreak(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreaker& aCbDelegate); - -/** -@internalComponent -*/ -TBool HasContingentBreakL(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreakerL& aCbDelegate); - -/** -@internalComponent -*/ -TBool FindBreak(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreaker* aCbDelegate); - -/** -@internalComponent -*/ -TBool FindBreakL(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreakerL* aCbDelegate); - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/LinebreakComplex.cpp --- a/graphicsdeviceinterface/gdi/sgdi/LinebreakComplex.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - - -#include <e32std.h> -#include <e32svr.h> -#include "LineBreak.h" -#include "LineBreakImp.h" -#include "GlyphSel.h" - -const TText16 KThaiCodePageStart = 0x0E00; -const TText16 KThaiCodePageEnd = 0x0E5C; -const TUint KNumThaiCharacters = KThaiCodePageEnd - KThaiCodePageStart; - -/** - Ecanpsulates rules for when Thai character sequence line breaking. -@internalComponent -*/ -class ThaiLinebreakRules - { -public: - enum TCharClassification - { - EOutOfRange, - - EConsOAng, - EConsYoYak, - EConsHoHip, - EConsWoWean, - EConsDigraph, - EConsOther, - - EPostVowelA, - EPostVowelAA, - EPostVowelOther, - EPreVowel, - - EDepMaiHanAkat, - EDepSaraI, - EDepOther, - - // marker for end - EMaxClassification - }; - enum - { - KOutOfRangeFlag = 1 << EOutOfRange, - KConsOAngFlag = 1 << EConsOAng, - KConsYoYakFlag = 1 << EConsYoYak, - KConsHoHipFlag = 1 << EConsHoHip, - KConsWoWeanFlag = 1 << EConsWoWean, - KConsDigraphFlag = 1 << EConsDigraph, - KConsOtherFlag = 1 << EConsOther, - KPostVowelAFlag = 1 << EPostVowelA, - KPostVowelAAFlag = 1 << EPostVowelAA, - KPostVowelOtherFlag = 1 << EPostVowelOther, - KPreVowelFlag = 1 << EPreVowel, - KDepMaiHanAkatFlag = 1 << EDepMaiHanAkat, - KDepSaraIFlag = 1 << EDepSaraI, - KDepOtherFlag = 1 << EDepOther, - - KSpecialDepFlags = KDepMaiHanAkatFlag | KDepSaraIFlag, - KPostVowelFlags = KPostVowelAFlag | KPostVowelAAFlag | KPostVowelOtherFlag, - KConsFlags = KConsOtherFlag | KConsDigraphFlag | KConsWoWeanFlag - | KConsHoHipFlag | KConsYoYakFlag | KConsOAngFlag, - KAllFlags = KOutOfRangeFlag | KConsOAngFlag | KConsYoYakFlag - | KConsHoHipFlag | KConsWoWeanFlag | KConsDigraphFlag - | KConsOtherFlag | KPostVowelAFlag | KPostVowelAAFlag - | KPostVowelOtherFlag | KPreVowelFlag | KDepMaiHanAkatFlag - | KDepSaraIFlag | KDepOtherFlag - }; - - /** Returns the Thai linebreaking class of the character. */ - static TCharClassification Class(TInt aChar); - /** Returns true if aChar is a combining character according to aBreaker. */ - static TBool IsCombiningChar(TInt aChar, const MLineBreaker& aBreaker); - /** Returns the Thai linebreaking class of the character at (*aChar), - searching backwards for the base character if it is foreign and of type CM. - @param aChar The position of the character within the string. - @param aStart The start of the string. - @param aBreaker The line breaker to query for line breaking class. - */ - static TCharClassification DerivedClass(const TText* aChar, - const TText* aStart, const MLineBreaker& aBreaker); - /** - Gets the line break rule for the previous and current character pair - @param aPrevClass Class of the previous character. - @param aClass Class of the current character. - @return the rule code corresponding to the input pair. - */ - static TBool BreakAllowedBetween( - TCharClassification aPrevClass, TCharClassification aClass); - /** Returns whether a line break is allowed before the SA character at - (*aChar). - @param aChar The position of the character within the string. - @param aStart The start of the string. - @param aBreaker The line breaker to query for line breaking class. - */ - static TBool BreakAllowedAt(const TText* aChar, - const TText* aStart, const MLineBreaker& aBreaker); - - /** - Classification of each character - */ - static const TUint8 KCharClassifications[KNumThaiCharacters]; - - /** - Rules table of prev to next character - */ - static const TUint32 KRules[EMaxClassification]; - }; - -const TUint8 ThaiLinebreakRules::KCharClassifications[KNumThaiCharacters] = - { - EOutOfRange, // 0x0E00 - EConsOther, // 0x0E01 - EConsOther, // 0x0E02 - EConsOther, // 0x0E03 - EConsOther, // 0x0E04 - EConsOther, // 0x0E05 - EConsOther, // 0x0E06 - EConsDigraph, // 0x0E07 - EConsOther, // 0x0E08 - EConsOther, // 0x0E09 - EConsOther, // 0x0E0A - EConsOther, // 0x0E0B - EConsOther, // 0x0E0C - EConsOther, // 0x0E0D - EConsOther, // 0x0E0E - EConsOther, // 0x0E0F - - EConsOther, // 0x0E10 - EConsOther, // 0x0E11 - EConsOther, // 0x0E12 - EConsOther, // 0x0E13 - EConsOther, // 0x0E14 - EConsOther, // 0x0E15 - EConsOther, // 0x0E16 - EConsOther, // 0x0E17 - EConsOther, // 0x0E18 - EConsDigraph, // 0x0E19 - EConsOther, // 0x0E1A - EConsOther, // 0x0E1B - EConsOther, // 0x0E1C - EConsOther, // 0x0E1D - EConsOther, // 0x0E1E - EConsOther, // 0x0E1F - - EConsOther, // 0x0E20 - EConsDigraph, // 0x0E21 - EConsYoYak, // 0x0E22 - EConsDigraph, // 0x0E23 - EConsOther, // 0x0E24 - EConsDigraph, // 0x0E25 - EConsOther, // 0x0E26 - EConsWoWean, // 0x0E27 - EConsOther, // 0x0E28 - EConsOther, // 0x0E29 - EConsOther, // 0x0E2A - EConsHoHip, // 0x0E2B - EConsOther, // 0x0E2C - EConsOAng, // 0x0E2D - EConsOther, // 0x0E2E - EOutOfRange, // 0x0E2F - - EPostVowelA, // 0x0E30 - EDepMaiHanAkat, // 0x0E31 - EPostVowelAA, // 0x0E32 - EPostVowelOther,// 0x0E33 - - EDepSaraI, // 0x0E34 - EDepOther, // 0x0E35 - EDepOther, // 0x0E36 - EDepOther, // 0x0E37 - EDepOther, // 0x0E38 - EDepOther, // 0x0E39 - EDepOther, // 0x0E3A - - EOutOfRange, // 0x0E3B - EOutOfRange, // 0x0E3C - EOutOfRange, // 0x0E3D - EOutOfRange, // 0x0E3E - EOutOfRange, // 0x0E3F - - EPreVowel, // 0x0E40 - EPreVowel, // 0x0E41 - EPreVowel, // 0x0E42 - EPreVowel, // 0x0E43 - EPreVowel, // 0x0E44 - - EPostVowelOther,// 0x0E45 - EOutOfRange, // 0x0E46 - - EDepOther, // 0x0E47 - EDepOther, // 0x0E48 - EDepOther, // 0x0E49 - EDepOther, // 0x0E4A - EDepOther, // 0x0E4B - EDepOther, // 0x0E4C - EDepOther, // 0x0E4D - EDepOther, // 0x0E4E - EOutOfRange, // 0x0E4F - - EOutOfRange, // 0x0E50 - EOutOfRange, // 0x0E51 - EOutOfRange, // 0x0E52 - EOutOfRange, // 0x0E53 - EOutOfRange, // 0x0E54 - EOutOfRange, // 0x0E55 - EOutOfRange, // 0x0E56 - EOutOfRange, // 0x0E57 - EOutOfRange, // 0x0E58 - EOutOfRange, // 0x0E59 - EOutOfRange, // 0x0E5A - EOutOfRange // 0x0E5B - }; - -const TUint32 KNormalBreaksBeforeCons = - ThaiLinebreakRules::KPreVowelFlag - | ThaiLinebreakRules::KConsOtherFlag - | ThaiLinebreakRules::KConsDigraphFlag - | ThaiLinebreakRules::KConsHoHipFlag - | ThaiLinebreakRules::KOutOfRangeFlag; -const TUint32 KNormalBreaksBeforePostVowel = - ThaiLinebreakRules::KPreVowelFlag - | ThaiLinebreakRules::KPostVowelFlags - | ThaiLinebreakRules::KConsFlags - | ThaiLinebreakRules::KOutOfRangeFlag; -const TUint32 ThaiLinebreakRules::KRules[EMaxClassification] = - { - /* Prev Char EOutOfRange */ - KAllFlags - KOutOfRangeFlag, - /* Prev Char EConsOAng */ - KNormalBreaksBeforeCons, - /* Prev Char EConsYoYak */ - KNormalBreaksBeforeCons, - /* Prev Char EConsHoHip */ - KNormalBreaksBeforeCons - KConsDigraphFlag, - /* Prev Char EConsWoWean */ - KNormalBreaksBeforeCons - KConsDigraphFlag - KConsHoHipFlag, - /* Prev Char EConsDigraph */ - KNormalBreaksBeforeCons, - /* Prev Char EConsOther */ - KNormalBreaksBeforeCons, - /* Prev Char EPostVowelA */ - KNormalBreaksBeforePostVowel, - /* Prev Char EPostVowelAA */ - KNormalBreaksBeforePostVowel - KPostVowelAFlag, - /* Prev Char EPostVowelOther */ - KNormalBreaksBeforePostVowel, - /* Prev Char EPreVowel */ - KPreVowelFlag | KPostVowelFlags | KOutOfRangeFlag, - /* Prev Char EDepMaiHanAkat */ - KSpecialDepFlags | KPreVowelFlag | KPostVowelAAFlag - | KPostVowelAFlag | KOutOfRangeFlag, - /* Prev Char EDepSaraI */ - KSpecialDepFlags | KPreVowelFlag | KPostVowelAAFlag - | KPostVowelAFlag | KOutOfRangeFlag, - /* Prev Char EDepOther */ - KSpecialDepFlags | KPreVowelFlag | KPostVowelAAFlag - | KPostVowelAFlag | KConsOtherFlag | KConsDigraphFlag - | KConsWoWeanFlag | KConsHoHipFlag | KOutOfRangeFlag - }; - -ThaiLinebreakRules::TCharClassification ThaiLinebreakRules::Class(TInt a) - { - return static_cast<TCharClassification>( - (KThaiCodePageStart <= a && a < KThaiCodePageEnd) ? - KCharClassifications[a - KThaiCodePageStart] : - EOutOfRange); - } - -TBool ThaiLinebreakRules::IsCombiningChar(TInt aChar, - const MLineBreaker& aBreaker) - { - TUint dummy1, dummy2; - return aBreaker.LineBreakClass(aChar, dummy1, dummy2) == MLineBreaker::ECmLineBreakClass; - } - -ThaiLinebreakRules::TCharClassification ThaiLinebreakRules::DerivedClass( - const TText* aChar, const TText* aStart, const MLineBreaker& aBreaker) - { - ThaiLinebreakRules::TCharClassification c = Class(*aChar); - while (c == EOutOfRange && aChar != aStart - && IsCombiningChar(*aChar, aBreaker)) - { - --aChar; - c = Class(*aChar); - } - return c; - } - -TBool ThaiLinebreakRules::BreakAllowedBetween( - ThaiLinebreakRules::TCharClassification aClass, - ThaiLinebreakRules::TCharClassification aNextClass) - { - return KRules[aClass] & (1 << aNextClass); - } - -TBool ThaiLinebreakRules::BreakAllowedAt(const TText* aChar, - const TText* aStart, const MLineBreaker& aBreaker) - { - __ASSERT_DEBUG(aStart < aChar, User::Invariant()); - TCharClassification c = Class(*aChar); - if (c == EOutOfRange && IsCombiningChar(*aChar, aBreaker)) - return EFalse; - return BreakAllowedBetween(DerivedClass(aChar - 1, aStart, aBreaker), c); - } - -/** - Returns whether a line break is possible within a run of characters all having - the class ESaLineBreakClass (Complex content). Languages with Unicocde - characters having such a class include: Thai, Lao, Myanmar and Khmer. This - default implementation of the GetLineBreakInContext() method only supports the - Thai script. Breaks are determined in Thai based on a simple understanding of - syllable boundaries. When characters from the other unsupported Sa class - languages are found the method exits with EFalse. -@param aText - The text to be searched, which is a contiguous run of characters of class SA - (or CM attatched to SA). The break position may be restricted further by - aMinBreakPos and aMaxBreakPos, but more text is provided for extra context - should it be needed. -@param aMinBreakPos - The start of the text to be considered for line breaks. -@param aMaxBreakPos - The end of the text to be considered for line breaks. -@param aForwards - ETrue if aBreakPos is to be set with the first legal break position, - EFalse if aBreakPos is to be set with the last legal break position. -@param aBreakPos - If break position found on exit its value is >= Min and <= Max - positions supplied. -@return TBool - ETrue if and only if a legal break was found, EFalse otherwise. -@publishedAll -@released -*/ -EXPORT_C TBool MLineBreaker::GetLineBreakInContext(const TDesC16& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards, - TInt& aBreakPos) const - { - __ASSERT_DEBUG (0 <= aMinBreakPos && aMaxBreakPos <= aText.Length(), - Panic(ELineBreakPanic_InvalidInputParam)); - - TInt length = aText.Length(); - - if (aMinBreakPos < 1) - aMinBreakPos = 1; - if (length - 1 < aMaxBreakPos) - aMaxBreakPos = length - 1; - if (aMaxBreakPos < aMinBreakPos) - return EFalse; - - const TText16* text = aText.Ptr(); - - if (*text == KZeroWidthSpace) - { - aBreakPos = aMinBreakPos; - return ETrue; - } - else if (*(text+length-1) == KZeroWidthSpace) - return EFalse; - - TInt start = aForwards? aMinBreakPos : aMaxBreakPos; - TInt end = aForwards? aMaxBreakPos + 1 : aMinBreakPos - 1; - TInt direction = aForwards? 1 : -1; - for (TInt i = start; i != end; i += direction) - { - if (ThaiLinebreakRules::BreakAllowedAt(text + i, text, *this)) - { - aBreakPos = i; - return ETrue; - } - } - return EFalse; - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/ShaperCli.cpp --- a/graphicsdeviceinterface/gdi/sgdi/ShaperCli.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Contains client-side shaper functionality. -// -// - -#include "ShapeImpl.h" -#include "ShapeInfo.h" -#include <gdi.h> -#include "GDIPANIC.h" - -GLREF_C void Panic(TInt aError); - -/** Construct an RShapeInfo. */ -/** @internalComponent */ -EXPORT_C RShapeInfo::RShapeInfo() - : iFont(0), iHeader(0), iEndOfShapedText(-1), iContextualProcessFunc(0) {} - -/** Perform shaping on the text in aText between aStartOfTextToShape and -aEndOfTextToShape, based on the script conventions implied by aScriptCode. -@param aFont The font to use for the shaping. -@param aText The text, including context. -@param aStartOfTextToShape - The start position within aText of the text to be shaped. -@param aEndOfTextToShape - The end position within aText of the text to be shaped. -@param aScriptCode The script code for the script being shaped. -@param aLanguageCode The language code for the language being shaped. -@return - KErrNone if the text was successfully shaped, KErrNotSupported if aFont has - no shaper, KErrCouldNotConnect if the font bitmap server has not been - started. -*/ -TInt RShapeInfo::Open(const CFont* aFont, const TDesC& aText, - TInt aStartOfTextToShape, TInt aEndOfTextToShape, - TInt aScriptCode, TInt aLanguageCode) - { - GDI_ASSERT_DEBUG(0 <= aStartOfTextToShape, - EGdiPanic_InvalidInputParam); - GDI_ASSERT_DEBUG(aStartOfTextToShape <= aEndOfTextToShape, - EGdiPanic_InvalidInputParam); - GDI_ASSERT_DEBUG(aEndOfTextToShape <= aText.Length(), - EGdiPanic_InvalidInputParam); - iFont = aFont; - TFontShapeFunctionParameters param; - param.iText = &aText; - param.iStart = aStartOfTextToShape; - param.iEnd = aEndOfTextToShape; - param.iScript = aScriptCode; - param.iLanguage = aLanguageCode; - const TInt r = aFont->ExtendedFunction(KFontGetShaping, ¶m); - iHeader = r == KErrNone ? param.iShapeHeaderOutput : 0; - if(iHeader) - iEndOfShapedText = aEndOfTextToShape; - return r; - } - -/** Frees the memory associated with this shaping information. */ -/** @internalComponent */ -EXPORT_C void RShapeInfo::Close() - { - if (iHeader) - { - TFontShapeDeleteFunctionParameters param; - param.iShapeHeader = iHeader; - iFont->ExtendedFunction(KFontDeleteShaping, ¶m); - iHeader = NULL; - iEndOfShapedText = -1; - // We don't reset iSingleContextChar because we want the context to remain throughout, - // even when the session is closed. It would eventually simply go out of scope. - } - } - -/** Returns the number of glyphs in the shaped output. -@return The number of glyphs. Also equal to the size of the Glyphs() array and -the GlyphPositions() array. */ -TInt RShapeInfo::GlyphCount() const - { - GDI_ASSERT_ALWAYS(iHeader, EGdiPanic_Invariant); - return iHeader->iGlyphCount; - } - -/** Returns the array of glyphs. These must be ORed with 0x80000000 to make -glyph numbers that functions like CFbsFont::Rasterize can accept to avoid -confusing glyph numbers with Unicode character numbers. -@return The glyph array. The size of this array is RShapeInfo::GlyphCount -@see GlyphCount */ -const TInt32* RShapeInfo::Glyphs() const - { - GDI_ASSERT_ALWAYS(iHeader, EGdiPanic_Invariant); - return reinterpret_cast<const TInt32*>(iHeader->iBuffer); - } - -/** Returns the array of positions for the glyphs returned by Glyphs, and the -total advance for the text. -@return - Array of glyph positions in pixels, relative to the pen position before - the glyphs are drawn. The array has GlyphCount() + 1 entries, as the - last entry represents the total advance of the text. */ -const RShapeInfo::TPoint16* RShapeInfo::GlyphPositions() const - { - GDI_ASSERT_ALWAYS(iHeader, EGdiPanic_Invariant); - return reinterpret_cast<const RShapeInfo::TPoint16*>(iHeader->iBuffer - + ((iHeader->iGlyphCount) << 2)); - } - -/** Returns the pen advance these glyphs require. -@return The pen advance; where to move the pen after drawing all the glyphs. */ -RShapeInfo::TPoint16 RShapeInfo::Advance() const - { - GDI_ASSERT_ALWAYS(iHeader, EGdiPanic_Invariant); - RShapeInfo::TPoint16 r; - r.iX = *reinterpret_cast<const TInt16*>(iHeader->iBuffer - + (iHeader->iGlyphCount << 3)); - r.iY = *reinterpret_cast<const TInt16*>(iHeader->iBuffer - + (iHeader->iGlyphCount << 3) + 2); - return r; - } - -/** Returns the array of indices. -@return - Indices[n] is the position in the input text that produced Glyphs[n]. -*/ -const TInt16* RShapeInfo::Indices() const - { - GDI_ASSERT_ALWAYS(iHeader, EGdiPanic_Invariant); - return reinterpret_cast<const TInt16*>(iHeader->iBuffer - + (iHeader->iGlyphCount << 3) + 4); - } - -TInt RShapeInfo::EndOfShapedText() - { - return iEndOfShapedText; - } - -/** Checks if this shaping information is still occupying memory. */ -EXPORT_C TBool RShapeInfo::IsOpen() - { - if(iHeader && iHeader->iGlyphCount >= 0 && iHeader->iCharacterCount >=0) - return ETrue; - else - return EFalse; - - } - -void RShapeInfo::SetContext(TAny* aContextualProcessFunc) - { - iContextualProcessFunc = aContextualProcessFunc; - } - -TAny* RShapeInfo::GetContext() - { - return iContextualProcessFunc; - } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/TFSTORE.CPP --- a/graphicsdeviceinterface/gdi/sgdi/TFSTORE.CPP Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,307 +0,0 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include <gdi.h> -#include "GDIPANIC.h" - -_LIT(KCTypefaceStore, "CTypefaceStore"); -static const TInt KDefaultNumOfFontAccess = 4; - -// -// CTypefaceStore -// - -EXPORT_C CTypefaceStore::CTypefaceStore() - { - } - - -EXPORT_C CTypefaceStore::~CTypefaceStore() -/** Destroys the typeface store and reclaims the memory allocated to it. */ - { - if (iFontAccess) - { - const TInt count = iFontAccess->Count(); - for (TInt i = 0; i < count; i++) - { - GDI_ASSERT_DEBUG_GENERAL((*iFontAccess)[0].iAccessCount > 0, User::Panic(KCTypefaceStore, KErrCorrupt)); - GDI_ASSERT_DEBUG_GENERAL((*iFontAccess)[0].iAccessCount == 1, User::Panic(KCTypefaceStore, KErrInUse)); - delete (*iFontAccess)[0].iFont; - iFontAccess->Delete(0); - } - delete iFontAccess; - } - } - -EXPORT_C void CTypefaceStore::ConstructL() -/** Second phase constructor. */ - { - iFontAccess = new(ELeave) CArrayFixFlat<TFontAccess>(KDefaultNumOfFontAccess); - } - -EXPORT_C void CTypefaceStore::AddFontL(CFont* aFont) -/** Adds a hold, by a client of the typeface store, on the specified font. - -If the specified font is not currently accessed by any clients of the typeface store -then the font is added to the font list and the access count set to 1. -If it is currently accessed then the access count for the font is incremented by 1. - -@param aFont Pointer to the device specific font accessed. */ - { - GDI_ASSERT_DEBUG_GENERAL(NULL != iFontAccess, User::Panic(KCTypefaceStore, KErrNoMemory)); - if (IncrementFontCount(aFont)) - return; - TFontAccess fontAccess; - fontAccess.iAccessCount = 1; - fontAccess.iFont = aFont; - iFontAccess->AppendL(fontAccess); - } - -EXPORT_C void CTypefaceStore::ReleaseFont(CFont* aFont) -/** Releases the hold of a typeface store client on a specified font. - -Decrements the access-count for the specified font by one. If this reduces the access-count -to zero then the font is no longer needed by any client, and is deleted from -the typeface store list. - -@param aFont The font to be released by the client. */ - { - - GDI_ASSERT_DEBUG_GENERAL(NULL != iFontAccess, User::Panic(KCTypefaceStore, KErrNoMemory)); - if (!aFont) - return; - TInt idx = 0; - GDI_ASSERT_ALWAYS_GENERAL(FindFont(aFont, idx), User::Panic(KCTypefaceStore, KErrNotFound)); - GDI_ASSERT_DEBUG_GENERAL(0 < iFontAccess->At(idx).iAccessCount, User::Panic(KCTypefaceStore, KErrCorrupt)); - iFontAccess->At(idx).iAccessCount--; - if (0 == iFontAccess->At(idx).iAccessCount) - { - CFont *font=iFontAccess->At(idx).iFont; - iFontAccess->Delete(idx); - delete font; - } - } - -EXPORT_C TBool CTypefaceStore::IncrementFontCount(const CFont* aFont) -/** -Search for the font in iFontAccess and increment its count. -@param aFont Font to search for. -@return ETrue if the specified font is found, EFalse otherwise. -*/ - { - TInt idx = 0; - if (FindFont(aFont, idx)) - { - iFontAccess->At(idx).iAccessCount++; - return ETrue; - } - return EFalse; - } - -TBool CTypefaceStore::FindFont(const CFont* aFont, TInt& aIdx) const -/** -Search for the font in iFontAccess. -@param aFont Font to search for. -@param aIdx Index of the font found. -@return ETrue if the specified font is found, EFalse with aIdx = -1 otherwise. -*/ - { - aIdx = -1; - if (!iFontAccess) - return EFalse; - const TInt count = iFontAccess->Count(); - for (TInt i = 0; i < count; i++) - { - if ((*iFontAccess)[i].iFont == aFont) - { - aIdx = i; - return ETrue; - } - } - return EFalse; - } - -EXPORT_C TInt CTypefaceStore::BaselineOffset(TInt aHeight,TFontPrintPosition aPos) -/** Gets the baseline offset, in twips, for any font in subscript or superscript -form. - -If the print position is normal then zero is returned. If it is superscript -then the baseline offset returned is a percentage, KSuperscriptOffsetPercentage, -of aHeight. If it is subscript then the baseline offset returned is a percentage, -KSubscriptOffsetPercentage, of aHeight. - -@param aHeight The height of a font. -@param aPos The print position of the required font: superscript, subscript -or normal. -@return The baseline offset for the font. */ - { - TInt offset=0; - if (aPos==EPrintPosSuperscript) - offset=KSuperscriptOffsetPercentage*aHeight/100; - else if (aPos==EPrintPosSubscript) - offset=KSubscriptOffsetPercentage*aHeight/100; - return offset; - } - - -EXPORT_C TInt CTypefaceStore::SuperSubHeight(TInt aHeight,TFontPrintPosition aPos) -/** Gets the height for a font in subscript or superscript form. - -If the print position is normal then aHeight is returned unchanged. If it -is superscript or subscript then the height returned is a percentage, KSuperSubScalingPercentage, -of aHeight. - -@param aHeight The height of a font. -@param aPos The print position of the font: superscript, subscript or normal. -@return The required height of the font. */ - { - if(aPos!=EPrintPosNormal) - aHeight=(KSuperSubScalingPercentage*aHeight)/100; - return aHeight; - } - -// -// CFontCache -// - -EXPORT_C CFontCache::CFontCache(): - CBase(), - iMaxEntries(KMaxFontCacheEntries) -/** Default constructor. - -This constructs a CFontCache of size KMaxFontCacheEntries. */ - { - __DECLARE_NAME(_S("CFontCache")); - } - -EXPORT_C CFontCache::CFontCache(TInt aMaxEntries): - CBase(), - iMaxEntries(aMaxEntries) -/** Constructor specifying the number of cache entries. - -@param aMaxEntries Number of entries for this cache. You must ensure this -is less than or equal to KMaxFontCacheEntries. */ - { - __DECLARE_NAME(_S("CFontCache")); - } - - -EXPORT_C CFontCache::~CFontCache() -/** Destructor. - -This destroys the cashe and releases its allocated memory. */ - { - CFontCacheEntry* entry=iFirst; - while(entry) - { - iFirst=entry->iNext; - delete entry; - entry=iFirst; - } - } - - -EXPORT_C CFont* CFontCache::Search(const TFontSpec& aFontSpec) -/** Searches the cache for a specified font. - -The CFont returned is that which corresponds to the font specification aFontSpec. - -@param aFontSpec The specification of the font to be searched for. -@return If an entry for the font specification is found in the cache, the pointer -to the font corresponding to the font specification is returned. Otherwise -NULL is returned. */ - { - CFontCacheEntry* entry=iFirst; - CFontCacheEntry* previous=NULL; - while(entry) - { - if(entry->iSpec==aFontSpec) - { - iNumHits++; - if(previous) - { - previous->iNext=entry->iNext; - entry->iNext=iFirst; - iFirst=entry; - } - return(entry->iFont); - } - previous=entry; - entry=entry->iNext; - } - iNumMisses++; - return(NULL); - } - - -EXPORT_C CFont* CFontCache::AddEntryL(CFont* aFont,const TFontSpec& aFontSpec) -/** Adds a font entry to the cache. - -The font, and the font specification required to extract it from the cache, -are both specified. If the cache is already full, the font replaces the oldest -entry already in the cache, which is returned. - -@param aFont The font to be stored in the cache. -@param aFontSpec The font's corresponding font specification. -@return If the cache isn't full, NULL is returned. If the cache is full, the -displaced cache entry is returned. */ - { - CFontCacheEntry* entry=new(ELeave) CFontCacheEntry(aFont,aFontSpec,iFirst); - iFirst=entry; - iNumEntries++; - if(iNumEntries<=iMaxEntries) - return(NULL); - CFontCacheEntry* previous=NULL; - while(entry->iNext) - { - previous=entry; - entry=entry->iNext; - } - CFont* discardfont=entry->iFont; - delete entry; - iNumEntries--; - if(previous) - previous->iNext=NULL; - else - iFirst=NULL; - return(discardfont); - } - - -EXPORT_C CFont* CFontCache::RemoveFirstEntry() -/** Removes the first entry from the font cache and returns it. - -@return The entry removed from the font cache. If the cache is empty, NULL -is returned. */ - { - if(iFirst==NULL) return(NULL); - CFontCacheEntry* entry=iFirst; - iFirst=entry->iNext; - CFont* font=entry->iFont; - delete entry; - iNumEntries--; - return(font); - } - -// CFontCacheEntry - -CFontCache::CFontCacheEntry::CFontCacheEntry(CFont* aFont,const TFontSpec& aFontSpec,CFontCacheEntry* aNext): - CBase(), - iFont(aFont), - iSpec(aFontSpec), - iNext(aNext) - { - __DECLARE_NAME(_S("CFontCacheEntry")); - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/TextBaseStub.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicsdeviceinterface/gdi/sgdi/TextBaseStub.cpp Fri Sep 17 08:36:49 2010 +0300 @@ -0,0 +1,316 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +// Importane: +// The only purpose of this file is to make a pseudo invoking to the APIs want to export from TextBase.lib. +// All APIs you want to export from TextBase.lib must be "called" in this file. +// Do not care about the return value or parameters. Just call them, directly or indirectly. +// It is not necessary to call all the APIs one by one, since an API could finally call many other APIs directly or indirectly. +// +// Currently, 121 APIs will be exported by GDI.dll from TextBase.lib. +// Without this file, 111 APIs won't be exported by GDI.dll. (The other 10 APIs already been called by GDI.dll.) +// +/* +??0CFontCache@@QAE@H@Z @ 1 NONAME ; CFontCache::CFontCache(int) +??0CFontCache@@QAE@XZ @ 2 NONAME ; CFontCache::CFontCache(void) +??0CTypefaceStore@@IAE@XZ @ 8 NONAME ; CTypefaceStore::CTypefaceStore(void) +??0TFontSpec@@QAE@ABVTDesC16@@H@Z @ 10 NONAME ; TFontSpec::TFontSpec(class TDesC16 const &, int) +??0TFontSpec@@QAE@XZ @ 11 NONAME ; TFontSpec::TFontSpec(void) +??0TFontStyle@@QAE@W4TFontPosture@@W4TFontStrokeWeight@@W4TFontPrintPosition@@@Z @ 12 NONAME ; TFontStyle::TFontStyle(enum TFontPosture, enum TFontStrokeWeight, enum TFontPrintPosition) +??0TFontStyle@@QAE@XZ @ 13 NONAME ; TFontStyle::TFontStyle(void) +??0TTypeface@@QAE@XZ @ 19 NONAME ; TTypeface::TTypeface(void) +??1CFont@@MAE@XZ @ 21 NONAME ; CFont::~CFont(void) +??1CFontCache@@UAE@XZ @ 22 NONAME ; CFontCache::~CFontCache(void) +??1CTypefaceStore@@UAE@XZ @ 29 NONAME ; CTypefaceStore::~CTypefaceStore(void) +??8TFontSpec@@QBEHABV0@@Z @ 32 NONAME ; int TFontSpec::operator==(class TFontSpec const &) const +??8TTypeface@@QBEHABV0@@Z @ 35 NONAME ; int TTypeface::operator==(class TTypeface const &) const +?AddEntryL@CFontCache@@QAEPAVCFont@@PAV2@ABVTFontSpec@@@Z @ 41 NONAME ; class CFont * CFontCache::AddEntryL(class CFont *, class TFontSpec const &) +?AddFontL@CTypefaceStore@@IAEXPAVCFont@@@Z @ 42 NONAME ; void CTypefaceStore::AddFontL(class CFont *) +?Attributes@TTypeface@@QBEHXZ @ 44 NONAME ; int TTypeface::Attributes(void) const +?BaselineOffset@CTypefaceStore@@SAHHW4TFontPrintPosition@@@Z @ 45 NONAME ; int CTypefaceStore::BaselineOffset(int, enum TFontPrintPosition) +?ConstructL@CTypefaceStore@@IAEXXZ @ 54 NONAME ; void CTypefaceStore::ConstructL(void) +?DescentInPixels@CFont@@QBEHXZ @ 60 NONAME ; int CFont::DescentInPixels(void) const +?ExternalizeL@TFontSpec@@QBEXAAVRWriteStream@@@Z @ 62 NONAME ; void TFontSpec::ExternalizeL(class RWriteStream &) const +?ExternalizeL@TFontStyle@@QBEXAAVRWriteStream@@@Z @ 63 NONAME ; void TFontStyle::ExternalizeL(class RWriteStream &) const +?ExternalizeL@TTypeface@@QBEXAAVRWriteStream@@@Z @ 70 NONAME ; void TTypeface::ExternalizeL(class RWriteStream &) const +?InternalizeL@TFontSpec@@QAEXAAVRReadStream@@@Z @ 86 NONAME ; void TFontSpec::InternalizeL(class RReadStream &) +?InternalizeL@TFontStyle@@QAEXAAVRReadStream@@@Z @ 87 NONAME ; void TFontStyle::InternalizeL(class RReadStream &) +?InternalizeL@TTypeface@@QAEXAAVRReadStream@@@Z @ 94 NONAME ; void TTypeface::InternalizeL(class RReadStream &) +?IsProportional@TTypeface@@QBEHXZ @ 95 NONAME ; int TTypeface::IsProportional(void) const +?IsSerif@TTypeface@@QBEHXZ @ 96 NONAME ; int TTypeface::IsSerif(void) const +?IsSymbol@TTypeface@@QBEHXZ @ 97 NONAME ; int TTypeface::IsSymbol(void) const +?Posture@TFontStyle@@QBE?AW4TFontPosture@@XZ @ 118 NONAME ; enum TFontPosture TFontStyle::Posture(void) const +?PrintPosition@TFontStyle@@QBE?AW4TFontPrintPosition@@XZ @ 119 NONAME ; enum TFontPrintPosition TFontStyle::PrintPosition(void) const +?ReleaseFont@CTypefaceStore@@QAEXPAVCFont@@@Z @ 121 NONAME ; void CTypefaceStore::ReleaseFont(class CFont *) +?RemoveFirstEntry@CFontCache@@QAEPAVCFont@@XZ @ 123 NONAME ; class CFont * CFontCache::RemoveFirstEntry(void) +?Search@CFontCache@@QAEPAVCFont@@ABVTFontSpec@@@Z @ 129 NONAME ; class CFont * CFontCache::Search(class TFontSpec const &) +?SetAttributes@TTypeface@@QAEXH@Z @ 131 NONAME ; void TTypeface::SetAttributes(int) +?SetIsProportional@TTypeface@@QAEXH@Z @ 136 NONAME ; void TTypeface::SetIsProportional(int) +?SetIsSerif@TTypeface@@QAEXH@Z @ 137 NONAME ; void TTypeface::SetIsSerif(int) +?SetIsSymbol@TTypeface@@QAEXH@Z @ 138 NONAME ; void TTypeface::SetIsSymbol(int) +?SetPosture@TFontStyle@@QAEXW4TFontPosture@@@Z @ 139 NONAME ; void TFontStyle::SetPosture(enum TFontPosture) +?SetPrintPosition@TFontStyle@@QAEXW4TFontPrintPosition@@@Z @ 140 NONAME ; void TFontStyle::SetPrintPosition(enum TFontPrintPosition) +?SetStrokeWeight@TFontStyle@@QAEXW4TFontStrokeWeight@@@Z @ 146 NONAME ; void TFontStyle::SetStrokeWeight(enum TFontStrokeWeight) +?StrokeWeight@TFontStyle@@QBE?AW4TFontStrokeWeight@@XZ @ 153 NONAME ; enum TFontStrokeWeight TFontStyle::StrokeWeight(void) const +?SuperSubHeight@CTypefaceStore@@SAHHW4TFontPrintPosition@@@Z @ 154 NONAME ; int CTypefaceStore::SuperSubHeight(int, enum TFontPrintPosition) +?WidthZeroInPixels@CFont@@QBEHXZ @ 160 NONAME ; int CFont::WidthZeroInPixels(void) const +?GetCharacterData@CFont@@QBE?AW4TCharacterDataAvailability@1@IAAVTOpenFontCharMetrics@@AAPBEAAVTSize@@@Z @ 174 NONAME ; enum CFont::TCharacterDataAvailability CFont::GetCharacterData(unsigned int, class TOpenFontCharMetrics &, unsigned char const * &, class TSize &) const +?GetCharacterPosition@CFont@@QBEHAAVTPositionParam@1@@Z @ 177 NONAME ; int CFont::GetCharacterPosition(class CFont::TPositionParam &) const +?MeasureText@CFont@@QBEHABVTDesC16@@PBVTMeasureTextInput@1@PAVTMeasureTextOutput@1@@Z @ 178 NONAME ; int CFont::MeasureText(class TDesC16 const &, class CFont::TMeasureTextInput const *, class CFont::TMeasureTextOutput *) const +??0TBidirectionalState@@QAE@XZ @ 179 NONAME ; TBidirectionalState::TBidirectionalState(void) +??8TBidirectionalState@@QBEHABV0@@Z @ 180 NONAME ; int TBidirectionalState::operator==(class TBidirectionalState const &) const +?ExternalizeL@TBidirectionalState@@QAEXAAVRWriteStream@@@Z @ 181 NONAME ; void TBidirectionalState::ExternalizeL(class RWriteStream &) +?InternalizeL@TBidirectionalState@@QAEXAAVRReadStream@@@Z @ 182 NONAME ; void TBidirectionalState::InternalizeL(class RReadStream &) +?IsDefault@TBidirectionalState@@QBEHXZ @ 183 NONAME ; int TBidirectionalState::IsDefault(void) const +?ReorderLine@TBidirectionalState@@QAEXPAVTRunInfo@1@HHHHW4TBdCategory@TChar@@1@Z @ 184 NONAME ; void TBidirectionalState::ReorderLine(class TBidirectionalState::TRunInfo *, int, int, int, int, enum TChar::TBdCategory, enum TChar::TBdCategory) +?ReorderText@TBidirectionalState@@SAHPBGHHAAPAG@Z @ 185 NONAME ; int TBidirectionalState::ReorderText(unsigned short const *, int, int, unsigned short * &) +?Reset@TBidirectionalState@@QAEXXZ @ 186 NONAME ; void TBidirectionalState::Reset(void) +?ExtendedFunction@CFont@@QBEHVTUid@@PAX@Z @ 187 NONAME ; int CFont::ExtendedFunction(class TUid, void *) const +?ReverseGroups@TBidirectionalState@@SAXPAGH@Z @ 189 NONAME ; void TBidirectionalState::ReverseGroups(unsigned short *, int) +?CharactersJoin@CFont@@SAHHH@Z @ 196 NONAME ; int CFont::CharactersJoin(int, int) +?Directionality@TBidiText@@QBE?AW4TDirectionality@1@XZ @ 197 NONAME ; enum TBidiText::TDirectionality TBidiText::Directionality(void) const +?DisplayText@TBidiText@@QBE?AVTPtrC16@@XZ @ 198 NONAME ; class TPtrC16 TBidiText::DisplayText(void) const +?DrawText@TBidiText@@QBEXAAVCGraphicsContext@@ABVTPoint@@@Z @ 199 NONAME ; void TBidiText::DrawText(class CGraphicsContext &, class TPoint const &) const +?DrawText@TBidiText@@QBEXAAVCGraphicsContext@@ABVTPoint@@H@Z @ 200 NONAME ; void TBidiText::DrawText(class CGraphicsContext &, class TPoint const &, int) const +?DrawText@TBidiText@@QBEXAAVCGraphicsContext@@ABVTPoint@@HW4TTextAlign@2@@Z @ 201 NONAME ; void TBidiText::DrawText(class CGraphicsContext &, class TPoint const &, int, enum CGraphicsContext::TTextAlign) const +?NewL@TBidiText@@SAPAV1@ABVTDesC16@@H@Z @ 202 NONAME ; class TBidiText * TBidiText::NewL(class TDesC16 const &, int) +?NewL@TBidiText@@SAPAV1@ABVTDesC16@@HW4TDirectionality@1@@Z @ 203 NONAME ; class TBidiText * TBidiText::NewL(class TDesC16 const &, int, enum TBidiText::TDirectionality) +?SetTruncationChar@TBidiText@@QAEXVTChar@@@Z @ 204 NONAME ; void TBidiText::SetTruncationChar(class TChar) +?Text@TBidiText@@QBE?AVTPtrC16@@XZ @ 205 NONAME ; class TPtrC16 TBidiText::Text(void) const +?WrapText@TBidiText@@QAEXHABVCFont@@PBVMLineBreaker@@@Z @ 206 NONAME ; void TBidiText::WrapText(int, class CFont const &, class MLineBreaker const *) +?WrappingWidth@TBidiText@@QBEHXZ @ 207 NONAME ; int TBidiText::WrappingWidth(void) const +?ScriptDirectionality@TBidiText@@SA?AW4TDirectionality@1@W4TLanguage@@@Z @ 208 NONAME ; enum TBidiText::TDirectionality TBidiText::ScriptDirectionality(enum TLanguage) +?TextDirectionality@TBidiText@@SA?AW4TDirectionality@1@ABVTDesC16@@PAH@Z @ 209 NONAME ; enum TBidiText::TDirectionality TBidiText::TextDirectionality(class TDesC16 const &, int *) +??0TBidiLogicalToVisual@@QAE@ABVTDesC16@@HPAVTRunInfo@TBidirectionalState@@H@Z @ 210 NONAME ; TBidiLogicalToVisual::TBidiLogicalToVisual(class TDesC16 const &, int, class TBidirectionalState::TRunInfo *, int) +??0TBidiLogicalToVisual@@QAE@ABVTDesC16@@PAVTRunInfo@TBidirectionalState@@H@Z @ 211 NONAME ; TBidiLogicalToVisual::TBidiLogicalToVisual(class TDesC16 const &, class TBidirectionalState::TRunInfo *, int) +?GetVisualLine@TBidiLogicalToVisual@@QAEXAAVTDes16@@HHVTChar@@@Z @ 212 NONAME ; void TBidiLogicalToVisual::GetVisualLine(class TDes16 &, int, int, class TChar) +?Reorder@TBidiLogicalToVisual@@QAEHXZ @ 213 NONAME ; int TBidiLogicalToVisual::Reorder(void) +?LineOfDisplayText@TBidiText@@QBE?AVTPtrC16@@HAAH@Z @ 216 NONAME ; class TPtrC16 TBidiText::LineOfDisplayText(int, int &) const +?NumberOfLinesInDisplayText@TBidiText@@QBEHXZ @ 217 NONAME ; int TBidiText::NumberOfLinesInDisplayText(void) const +?WrapText@TBidiText@@QAEXHABVCFont@@PBVMLineBreaker@@H@Z @ 218 NONAME ; void TBidiText::WrapText(int, class CFont const &, class MLineBreaker const *, int) +?ReorderLine@TBidirectionalState@@QAEXPAVTRunInfo@1@HHHHW4TBdCategory@TChar@@1AAH@Z @ 231 NONAME ; void TBidirectionalState::ReorderLine(class TBidirectionalState::TRunInfo *, int, int, int, int, enum TChar::TBdCategory, enum TChar::TBdCategory, int &) +??0RRunInfoArray@@QAE@XZ @ 232 NONAME ; RRunInfoArray::RRunInfoArray(void) +?Close@RRunInfoArray@@QAEXXZ @ 233 NONAME ; void RRunInfoArray::Close(void) +?MinimumSize@TBidiText@@QBE?AVTSize@@HABVCFont@@HHPBVMLineBreaker@@@Z @ 234 NONAME ; class TSize TBidiText::MinimumSize(int, class CFont const &, int, int, class MLineBreaker const *) const +?NewL@TBidiText@@SAPAV1@HH@Z @ 235 NONAME ; class TBidiText * TBidiText::NewL(int, int) +?OpenL@RRunInfoArray@@QAEXXZ @ 236 NONAME ; void RRunInfoArray::OpenL(void) +?SetText@TBidiText@@QAEHABVTDesC16@@AAVRRunInfoArray@@@Z @ 237 NONAME ; int TBidiText::SetText(class TDesC16 const &, class RRunInfoArray &) +?SetText@TBidiText@@QAEHABVTDesC16@@W4TDirectionality@1@AAVRRunInfoArray@@@Z @ 238 NONAME ; int TBidiText::SetText(class TDesC16 const &, enum TBidiText::TDirectionality, class RRunInfoArray &) +?TruncationChar@TBidiText@@QBE?AVTChar@@XZ @ 239 NONAME ; class TChar TBidiText::TruncationChar(void) const +?AscentInPixels@CFont@@QBEHXZ @ 240 NONAME ; int CFont::AscentInPixels(void) const +?BaselineOffsetInPixels@CFont@@QBEHXZ @ 241 NONAME ; int CFont::BaselineOffsetInPixels(void) const +?CharWidthInPixels@CFont@@QBEHVTChar@@@Z @ 242 NONAME ; int CFont::CharWidthInPixels(class TChar) const +?FontSpecInTwips@CFont@@QBE?AVTFontSpec@@XZ @ 243 NONAME ; class TFontSpec CFont::FontSpecInTwips(void) const +?HeightInPixels@CFont@@QBEHXZ @ 244 NONAME ; int CFont::HeightInPixels(void) const +?MaxCharWidthInPixels@CFont@@QBEHXZ @ 245 NONAME ; int CFont::MaxCharWidthInPixels(void) const +?MaxNormalCharWidthInPixels@CFont@@QBEHXZ @ 246 NONAME ; int CFont::MaxNormalCharWidthInPixels(void) const +?TextCount@CFont@@QBEHABVTDesC16@@H@Z @ 247 NONAME ; int CFont::TextCount(class TDesC16 const &, int) const +?TextCount@CFont@@QBEHABVTDesC16@@HAAH@Z @ 248 NONAME ; int CFont::TextCount(class TDesC16 const &, int, int &) const +?TextWidthInPixels@CFont@@QBEHABVTDesC16@@@Z @ 249 NONAME ; int CFont::TextWidthInPixels(class TDesC16 const &) const +?TypeUid@CFont@@QBE?AVTUid@@XZ @ 250 NONAME ; class TUid CFont::TypeUid(void) const +?DoDescentInPixels@CFont@@EBEHXZ @ 251 NONAME ; int CFont::DoDescentInPixels(void) const +?DoExtendedFunction@CFont@@MBEHVTUid@@PAX@Z @ 252 NONAME ; int CFont::DoExtendedFunction(class TUid, void *) const +?DoGetCharacterData@CFont@@MBE?AW4TCharacterDataAvailability@1@IAAVTOpenFontCharMetrics@@AAPBEAAVTSize@@@Z @ 253 NONAME ; enum CFont::TCharacterDataAvailability CFont::DoGetCharacterData(unsigned int, class TOpenFontCharMetrics &, unsigned char const * &, class TSize &) const +?DoGetCharacterPosition@CFont@@MBEHAAVTPositionParam@1@@Z @ 254 NONAME ; int CFont::DoGetCharacterPosition(class CFont::TPositionParam &) const +?Effects@TFontStyle@@QBEKXZ @ 255 NONAME ; unsigned long TFontStyle::Effects(void) const +?SetEffects@TFontStyle@@QAEXK@Z @ 256 NONAME ; void TFontStyle::SetEffects(unsigned long) +?SetEffects@TFontStyle@@QAEXW4TEffect@FontEffect@@H@Z @ 257 NONAME ; void TFontStyle::SetEffects(enum FontEffect::TEffect, int) +?IsEffectOn@TFontStyle@@QBEHW4TEffect@FontEffect@@@Z @ 258 NONAME ; int TFontStyle::IsEffectOn(enum FontEffect::TEffect) const +?IsEffectOn@FontEffect@@SAHW4TEffect@1@K@Z @ 259 NONAME ; int FontEffect::IsEffectOn(enum FontEffect::TEffect, unsigned long) +?SetEffect@FontEffect@@SAXW4TEffect@1@HAAK@Z @ 260 NONAME ; void FontEffect::SetEffect(enum FontEffect::TEffect, int, unsigned long &) +?IncrementFontCount@CTypefaceStore@@IAEHPBVCFont@@@Z @ 261 NONAME ; int CTypefaceStore::IncrementFontCount(class CFont const *) +??8TFontStyle@@QBEHABV0@@Z @ 262 NONAME ; int TFontStyle::operator==(class TFontStyle const &) const +?ScriptTypeForMetrics@TTypeface@@QBEHXZ @ 263 NONAME ; int TTypeface::ScriptTypeForMetrics(void) const +?SetScriptTypeForMetrics@TFontSpec@@QAEXW4TLanguage@@@Z @ 264 NONAME ; void TFontSpec::SetScriptTypeForMetrics(enum TLanguage) +?SetScriptTypeForMetrics@TTypeface@@QAEXH@Z @ 265 NONAME ; void TTypeface::SetScriptTypeForMetrics(int) +?SetScriptTypeForMetrics@TTypeface@@QAEXW4TLanguage@@@Z @ 266 NONAME ; void TTypeface::SetScriptTypeForMetrics(enum TLanguage) +?TLanguage2TScript@GlyphSample@@SAHW4TLanguage@@@Z @ 267 NONAME ; int GlyphSample::TLanguage2TScript(enum TLanguage) +?TScript2GlyphSample@GlyphSample@@SA?BVTPtrC16@@H@Z @ 268 NONAME ; class TPtrC16 const GlyphSample::TScript2GlyphSample(int) +?ScriptTypeForMetrics@TFontSpec@@QBEHXZ @ 269 NONAME ; int TFontSpec::ScriptTypeForMetrics(void) const +?GetCharacterPosition2@CFont@@QBEHAAVTPositionParam@1@AAVRShapeInfo@@@Z @ 270 NONAME ; int CFont::GetCharacterPosition2(class CFont::TPositionParam &, class RShapeInfo &) const +??0RShapeInfo@@QAE@XZ @ 271 NONAME ; RShapeInfo::RShapeInfo(void) +?Close@RShapeInfo@@QAEXXZ @ 272 NONAME ; void RShapeInfo::Close(void) +?IsOpen@RShapeInfo@@QAEHXZ @ 273 NONAME ; int RShapeInfo::IsOpen(void) +?TextWidthInPixels@CFont@@QBEHABVTDesC16@@PBVTMeasureTextInput@1@@Z @ 291 NONAME ; int CFont::TextWidthInPixels(class TDesC16 const &, class CFont::TMeasureTextInput const *) const +*/ + + +#include <gdi.h> +#include <bidi.h> +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include <graphics/gdi/GDIPANIC.h> +#include <graphics/gdi/gdistructs.h> +#include <graphics/gdi/gdiconsts.h> +#endif //SYMBIAN_ENABLE_SPLIT_HEADERS +#include "BidiText.h" +#include "BidiVisual.h" +#include <hextree.h> + + +// This function will not be called by anybody. +void Do_NOT_Call_Me__JustToCallAllFunctionsToExport() + { + // common dummy variables + TPtrC des; + + /* + // Below 2 lines effectively call 83 APIs, directly and indirectly. + ??0CFontCache@@QAE@H@Z @ 1 NONAME ; CFontCache::CFontCache(int) + ??0CFontCache@@QAE@XZ @ 2 NONAME ; CFontCache::CFontCache(void) + ??0CTypefaceStore@@IAE@XZ @ 8 NONAME ; CTypefaceStore::CTypefaceStore(void) + ??0TFontSpec@@QAE@ABVTDesC16@@H@Z @ 10 NONAME ; TFontSpec::TFontSpec(class TDesC16 const &, int) + ??0TFontSpec@@QAE@XZ @ 11 NONAME ; TFontSpec::TFontSpec(void) + ??0TFontStyle@@QAE@W4TFontPosture@@W4TFontStrokeWeight@@W4TFontPrintPosition@@@Z @ 12 NONAME ; TFontStyle::TFontStyle(enum TFontPosture, enum TFontStrokeWeight, enum TFontPrintPosition) + ??0TFontStyle@@QAE@XZ @ 13 NONAME ; TFontStyle::TFontStyle(void) + ??0TTypeface@@QAE@XZ @ 19 NONAME ; TTypeface::TTypeface(void) + ??1CFont@@MAE@XZ @ 21 NONAME ; CFont::~CFont(void) + ??1CFontCache@@UAE@XZ @ 22 NONAME ; CFontCache::~CFontCache(void) + ??1CTypefaceStore@@UAE@XZ @ 29 NONAME ; CTypefaceStore::~CTypefaceStore(void) + ??8TFontSpec@@QBEHABV0@@Z @ 32 NONAME ; int TFontSpec::operator==(class TFontSpec const &) const + ??8TTypeface@@QBEHABV0@@Z @ 35 NONAME ; int TTypeface::operator==(class TTypeface const &) const + ?AddEntryL@CFontCache@@QAEPAVCFont@@PAV2@ABVTFontSpec@@@Z @ 41 NONAME ; class CFont * CFontCache::AddEntryL(class CFont *, class TFontSpec const &) + ?AddFontL@CTypefaceStore@@IAEXPAVCFont@@@Z @ 42 NONAME ; void CTypefaceStore::AddFontL(class CFont *) + ?Attributes@TTypeface@@QBEHXZ @ 44 NONAME ; int TTypeface::Attributes(void) const + ?BaselineOffset@CTypefaceStore@@SAHHW4TFontPrintPosition@@@Z @ 45 NONAME ; int CTypefaceStore::BaselineOffset(int, enum TFontPrintPosition) + ?ConstructL@CTypefaceStore@@IAEXXZ @ 54 NONAME ; void CTypefaceStore::ConstructL(void) + ?DescentInPixels@CFont@@QBEHXZ @ 60 NONAME ; int CFont::DescentInPixels(void) const + ?ExternalizeL@TFontSpec@@QBEXAAVRWriteStream@@@Z @ 62 NONAME ; void TFontSpec::ExternalizeL(class RWriteStream &) const + ?ExternalizeL@TFontStyle@@QBEXAAVRWriteStream@@@Z @ 63 NONAME ; void TFontStyle::ExternalizeL(class RWriteStream &) const + ?ExternalizeL@TTypeface@@QBEXAAVRWriteStream@@@Z @ 70 NONAME ; void TTypeface::ExternalizeL(class RWriteStream &) const + ?InternalizeL@TFontSpec@@QAEXAAVRReadStream@@@Z @ 86 NONAME ; void TFontSpec::InternalizeL(class RReadStream &) + ?InternalizeL@TFontStyle@@QAEXAAVRReadStream@@@Z @ 87 NONAME ; void TFontStyle::InternalizeL(class RReadStream &) + ?InternalizeL@TTypeface@@QAEXAAVRReadStream@@@Z @ 94 NONAME ; void TTypeface::InternalizeL(class RReadStream &) + ?IsProportional@TTypeface@@QBEHXZ @ 95 NONAME ; int TTypeface::IsProportional(void) const + ?IsSerif@TTypeface@@QBEHXZ @ 96 NONAME ; int TTypeface::IsSerif(void) const + ?IsSymbol@TTypeface@@QBEHXZ @ 97 NONAME ; int TTypeface::IsSymbol(void) const + ?Posture@TFontStyle@@QBE?AW4TFontPosture@@XZ @ 118 NONAME ; enum TFontPosture TFontStyle::Posture(void) const + ?PrintPosition@TFontStyle@@QBE?AW4TFontPrintPosition@@XZ @ 119 NONAME ; enum TFontPrintPosition TFontStyle::PrintPosition(void) const + ?ReleaseFont@CTypefaceStore@@QAEXPAVCFont@@@Z @ 121 NONAME ; void CTypefaceStore::ReleaseFont(class CFont *) + ?RemoveFirstEntry@CFontCache@@QAEPAVCFont@@XZ @ 123 NONAME ; class CFont * CFontCache::RemoveFirstEntry(void) + ?Search@CFontCache@@QAEPAVCFont@@ABVTFontSpec@@@Z @ 129 NONAME ; class CFont * CFontCache::Search(class TFontSpec const &) + ?SetAttributes@TTypeface@@QAEXH@Z @ 131 NONAME ; void TTypeface::SetAttributes(int) + ?SetIsProportional@TTypeface@@QAEXH@Z @ 136 NONAME ; void TTypeface::SetIsProportional(int) + ?SetIsSerif@TTypeface@@QAEXH@Z @ 137 NONAME ; void TTypeface::SetIsSerif(int) + ?SetIsSymbol@TTypeface@@QAEXH@Z @ 138 NONAME ; void TTypeface::SetIsSymbol(int) + ?SetPosture@TFontStyle@@QAEXW4TFontPosture@@@Z @ 139 NONAME ; void TFontStyle::SetPosture(enum TFontPosture) + ?SetPrintPosition@TFontStyle@@QAEXW4TFontPrintPosition@@@Z @ 140 NONAME ; void TFontStyle::SetPrintPosition(enum TFontPrintPosition) + ?SetStrokeWeight@TFontStyle@@QAEXW4TFontStrokeWeight@@@Z @ 146 NONAME ; void TFontStyle::SetStrokeWeight(enum TFontStrokeWeight) + ?StrokeWeight@TFontStyle@@QBE?AW4TFontStrokeWeight@@XZ @ 153 NONAME ; enum TFontStrokeWeight TFontStyle::StrokeWeight(void) const + ?SuperSubHeight@CTypefaceStore@@SAHHW4TFontPrintPosition@@@Z @ 154 NONAME ; int CTypefaceStore::SuperSubHeight(int, enum TFontPrintPosition) + ?WidthZeroInPixels@CFont@@QBEHXZ @ 160 NONAME ; int CFont::WidthZeroInPixels(void) const + ?GetCharacterData@CFont@@QBE?AW4TCharacterDataAvailability@1@IAAVTOpenFontCharMetrics@@AAPBEAAVTSize@@@Z @ 174 NONAME ; enum CFont::TCharacterDataAvailability CFont::GetCharacterData(unsigned int, class TOpenFontCharMetrics &, unsigned char const * &, class TSize &) const + ?GetCharacterPosition@CFont@@QBEHAAVTPositionParam@1@@Z @ 177 NONAME ; int CFont::GetCharacterPosition(class CFont::TPositionParam &) const + ?MeasureText@CFont@@QBEHABVTDesC16@@PBVTMeasureTextInput@1@PAVTMeasureTextOutput@1@@Z @ 178 NONAME ; int CFont::MeasureText(class TDesC16 const &, class CFont::TMeasureTextInput const *, class CFont::TMeasureTextOutput *) const + ?ExtendedFunction@CFont@@QBEHVTUid@@PAX@Z @ 187 NONAME ; int CFont::ExtendedFunction(class TUid, void *) const + ?CharactersJoin@CFont@@SAHHH@Z @ 196 NONAME ; int CFont::CharactersJoin(int, int) + ?AscentInPixels@CFont@@QBEHXZ @ 240 NONAME ; int CFont::AscentInPixels(void) const + ?BaselineOffsetInPixels@CFont@@QBEHXZ @ 241 NONAME ; int CFont::BaselineOffsetInPixels(void) const + ?CharWidthInPixels@CFont@@QBEHVTChar@@@Z @ 242 NONAME ; int CFont::CharWidthInPixels(class TChar) const + ?FontSpecInTwips@CFont@@QBE?AVTFontSpec@@XZ @ 243 NONAME ; class TFontSpec CFont::FontSpecInTwips(void) const + ?HeightInPixels@CFont@@QBEHXZ @ 244 NONAME ; int CFont::HeightInPixels(void) const + ?MaxCharWidthInPixels@CFont@@QBEHXZ @ 245 NONAME ; int CFont::MaxCharWidthInPixels(void) const + ?MaxNormalCharWidthInPixels@CFont@@QBEHXZ @ 246 NONAME ; int CFont::MaxNormalCharWidthInPixels(void) const + ?TextCount@CFont@@QBEHABVTDesC16@@H@Z @ 247 NONAME ; int CFont::TextCount(class TDesC16 const &, int) const + ?TextCount@CFont@@QBEHABVTDesC16@@HAAH@Z @ 248 NONAME ; int CFont::TextCount(class TDesC16 const &, int, int &) const + ?TextWidthInPixels@CFont@@QBEHABVTDesC16@@@Z @ 249 NONAME ; int CFont::TextWidthInPixels(class TDesC16 const &) const + ?TypeUid@CFont@@QBE?AVTUid@@XZ @ 250 NONAME ; class TUid CFont::TypeUid(void) const + ?DoDescentInPixels@CFont@@EBEHXZ @ 251 NONAME ; int CFont::DoDescentInPixels(void) const + ?DoExtendedFunction@CFont@@MBEHVTUid@@PAX@Z @ 252 NONAME ; int CFont::DoExtendedFunction(class TUid, void *) const + ?DoGetCharacterData@CFont@@MBE?AW4TCharacterDataAvailability@1@IAAVTOpenFontCharMetrics@@AAPBEAAVTSize@@@Z @ 253 NONAME ; enum CFont::TCharacterDataAvailability CFont::DoGetCharacterData(unsigned int, class TOpenFontCharMetrics &, unsigned char const * &, class TSize &) const + ?DoGetCharacterPosition@CFont@@MBEHAAVTPositionParam@1@@Z @ 254 NONAME ; int CFont::DoGetCharacterPosition(class CFont::TPositionParam &) const + ?Effects@TFontStyle@@QBEKXZ @ 255 NONAME ; unsigned long TFontStyle::Effects(void) const + ?SetEffects@TFontStyle@@QAEXK@Z @ 256 NONAME ; void TFontStyle::SetEffects(unsigned long) + ?SetEffects@TFontStyle@@QAEXW4TEffect@FontEffect@@H@Z @ 257 NONAME ; void TFontStyle::SetEffects(enum FontEffect::TEffect, int) + ?IsEffectOn@TFontStyle@@QBEHW4TEffect@FontEffect@@@Z @ 258 NONAME ; int TFontStyle::IsEffectOn(enum FontEffect::TEffect) const + ?IsEffectOn@FontEffect@@SAHW4TEffect@1@K@Z @ 259 NONAME ; int FontEffect::IsEffectOn(enum FontEffect::TEffect, unsigned long) + ?SetEffect@FontEffect@@SAXW4TEffect@1@HAAK@Z @ 260 NONAME ; void FontEffect::SetEffect(enum FontEffect::TEffect, int, unsigned long &) + ?IncrementFontCount@CTypefaceStore@@IAEHPBVCFont@@@Z @ 261 NONAME ; int CTypefaceStore::IncrementFontCount(class CFont const *) + ??8TFontStyle@@QBEHABV0@@Z @ 262 NONAME ; int TFontStyle::operator==(class TFontStyle const &) const + ?ScriptTypeForMetrics@TTypeface@@QBEHXZ @ 263 NONAME ; int TTypeface::ScriptTypeForMetrics(void) const + ?SetScriptTypeForMetrics@TFontSpec@@QAEXW4TLanguage@@@Z @ 264 NONAME ; void TFontSpec::SetScriptTypeForMetrics(enum TLanguage) + ?SetScriptTypeForMetrics@TTypeface@@QAEXH@Z @ 265 NONAME ; void TTypeface::SetScriptTypeForMetrics(int) + ?SetScriptTypeForMetrics@TTypeface@@QAEXW4TLanguage@@@Z @ 266 NONAME ; void TTypeface::SetScriptTypeForMetrics(enum TLanguage) + ?TLanguage2TScript@GlyphSample@@SAHW4TLanguage@@@Z @ 267 NONAME ; int GlyphSample::TLanguage2TScript(enum TLanguage) + ?TScript2GlyphSample@GlyphSample@@SA?BVTPtrC16@@H@Z @ 268 NONAME ; class TPtrC16 const GlyphSample::TScript2GlyphSample(int) + ?ScriptTypeForMetrics@TFontSpec@@QBEHXZ @ 269 NONAME ; int TFontSpec::ScriptTypeForMetrics(void) const + ?GetCharacterPosition2@CFont@@QBEHAAVTPositionParam@1@AAVRShapeInfo@@@Z @ 270 NONAME ; int CFont::GetCharacterPosition2(class CFont::TPositionParam &, class RShapeInfo &) const + ??0RShapeInfo@@QAE@XZ @ 271 NONAME ; RShapeInfo::RShapeInfo(void) + ?Close@RShapeInfo@@QAEXXZ @ 272 NONAME ; void RShapeInfo::Close(void) + ?IsOpen@RShapeInfo@@QAEHXZ @ 273 NONAME ; int RShapeInfo::IsOpen(void) + ?TextWidthInPixels@CFont@@QBEHABVTDesC16@@PBVTMeasureTextInput@1@@Z @ 291 NONAME ; int CFont::TextWidthInPixels(class TDesC16 const &, class CFont::TMeasureTextInput const *) const + */ + CFontCache *fc = new CFontCache(); + delete fc; + + /* + // Below 2 lines effectively call 24 APIs, directly and indirectly. + ?Directionality@TBidiText@@QBE?AW4TDirectionality@1@XZ @ 197 NONAME ; enum TBidiText::TDirectionality TBidiText::Directionality(void) const + ?DisplayText@TBidiText@@QBE?AVTPtrC16@@XZ @ 198 NONAME ; class TPtrC16 TBidiText::DisplayText(void) const + ?DrawText@TBidiText@@QBEXAAVCGraphicsContext@@ABVTPoint@@@Z @ 199 NONAME ; void TBidiText::DrawText(class CGraphicsContext &, class TPoint const &) const + ?DrawText@TBidiText@@QBEXAAVCGraphicsContext@@ABVTPoint@@H@Z @ 200 NONAME ; void TBidiText::DrawText(class CGraphicsContext &, class TPoint const &, int) const + ?DrawText@TBidiText@@QBEXAAVCGraphicsContext@@ABVTPoint@@HW4TTextAlign@2@@Z @ 201 NONAME ; void TBidiText::DrawText(class CGraphicsContext &, class TPoint const &, int, enum CGraphicsContext::TTextAlign) const + ?NewL@TBidiText@@SAPAV1@ABVTDesC16@@H@Z @ 202 NONAME ; class TBidiText * TBidiText::NewL(class TDesC16 const &, int) + ?NewL@TBidiText@@SAPAV1@ABVTDesC16@@HW4TDirectionality@1@@Z @ 203 NONAME ; class TBidiText * TBidiText::NewL(class TDesC16 const &, int, enum TBidiText::TDirectionality) + ?SetTruncationChar@TBidiText@@QAEXVTChar@@@Z @ 204 NONAME ; void TBidiText::SetTruncationChar(class TChar) + ?Text@TBidiText@@QBE?AVTPtrC16@@XZ @ 205 NONAME ; class TPtrC16 TBidiText::Text(void) const + ?WrapText@TBidiText@@QAEXHABVCFont@@PBVMLineBreaker@@@Z @ 206 NONAME ; void TBidiText::WrapText(int, class CFont const &, class MLineBreaker const *) + ?WrappingWidth@TBidiText@@QBEHXZ @ 207 NONAME ; int TBidiText::WrappingWidth(void) const + ?ScriptDirectionality@TBidiText@@SA?AW4TDirectionality@1@W4TLanguage@@@Z @ 208 NONAME ; enum TBidiText::TDirectionality TBidiText::ScriptDirectionality(enum TLanguage) + ?Reorder@TBidiLogicalToVisual@@QAEHXZ @ 213 NONAME ; int TBidiLogicalToVisual::Reorder(void) + ?LineOfDisplayText@TBidiText@@QBE?AVTPtrC16@@HAAH@Z @ 216 NONAME ; class TPtrC16 TBidiText::LineOfDisplayText(int, int &) const + ?NumberOfLinesInDisplayText@TBidiText@@QBEHXZ @ 217 NONAME ; int TBidiText::NumberOfLinesInDisplayText(void) const + ?WrapText@TBidiText@@QAEXHABVCFont@@PBVMLineBreaker@@H@Z @ 218 NONAME ; void TBidiText::WrapText(int, class CFont const &, class MLineBreaker const *, int) + ??0RRunInfoArray@@QAE@XZ @ 232 NONAME ; RRunInfoArray::RRunInfoArray(void) + ?Close@RRunInfoArray@@QAEXXZ @ 233 NONAME ; void RRunInfoArray::Close(void) + ?MinimumSize@TBidiText@@QBE?AVTSize@@HABVCFont@@HHPBVMLineBreaker@@@Z @ 234 NONAME ; class TSize TBidiText::MinimumSize(int, class CFont const &, int, int, class MLineBreaker const *) const + ?NewL@TBidiText@@SAPAV1@HH@Z @ 235 NONAME ; class TBidiText * TBidiText::NewL(int, int) + ?OpenL@RRunInfoArray@@QAEXXZ @ 236 NONAME ; void RRunInfoArray::OpenL(void) + ?SetText@TBidiText@@QAEHABVTDesC16@@AAVRRunInfoArray@@@Z @ 237 NONAME ; int TBidiText::SetText(class TDesC16 const &, class RRunInfoArray &) + ?SetText@TBidiText@@QAEHABVTDesC16@@W4TDirectionality@1@AAVRRunInfoArray@@@Z @ 238 NONAME ; int TBidiText::SetText(class TDesC16 const &, enum TBidiText::TDirectionality, class RRunInfoArray &) + ?TruncationChar@TBidiText@@QBE?AVTChar@@XZ @ 239 NONAME ; class TChar TBidiText::TruncationChar(void) const + */ + TBidiText *bdt = TBidiText::NewL(0, 0); + delete bdt; + + /* + // Below 2 lines effectively call 4 APIs, directly and indirectly. + ??0TBidiLogicalToVisual@@QAE@ABVTDesC16@@HPAVTRunInfo@TBidirectionalState@@H@Z @ 210 NONAME ; TBidiLogicalToVisual::TBidiLogicalToVisual(class TDesC16 const &, int, class TBidirectionalState::TRunInfo *, int) + ??0TBidiLogicalToVisual@@QAE@ABVTDesC16@@PAVTRunInfo@TBidirectionalState@@H@Z @ 211 NONAME ; TBidiLogicalToVisual::TBidiLogicalToVisual(class TDesC16 const &, class TBidirectionalState::TRunInfo *, int) + ?GetVisualLine@TBidiLogicalToVisual@@QAEXAAVTDes16@@HHVTChar@@@Z @ 212 NONAME ; void TBidiLogicalToVisual::GetVisualLine(class TDes16 &, int, int, class TChar) + ?Reorder@TBidiLogicalToVisual@@QAEHXZ @ 213 NONAME ; int TBidiLogicalToVisual::Reorder(void) + */ + TBidiLogicalToVisual *bdl2v = new TBidiLogicalToVisual(des, ETrue, NULL, 0); + delete bdl2v; + + /* + // Below 11 lines effectively call 4 APIs, directly and indirectly. + ?At@RHexTreeBase@@IBEPAXI@Z @ 318 NONAME ; void * RHexTreeBase::At(unsigned int) const + ??0RHexTreeBase@@IAE@PAVRHeap@@@Z @ 319 NONAME ; RHexTreeBase::RHexTreeBase(class RHeap *) + ?SetAt@RHexTreeBase@@IAEHIPAX@Z @ 320 NONAME ; int RHexTreeBase::SetAt(unsigned int, void *) + ?ResetAndDestroy@RHexTreeBase@@QAEXXZ @ 321 NONAME ; void RHexTreeBase::ResetAndDestroy(void) + */ + class __chtb : public RHexTreeBase + { + public: + __chtb() : RHexTreeBase(NULL) + { + At(1); + SetAt(1, NULL); + ResetAndDestroy(); + }; + }; + __chtb htb; + } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/Unicode,_Inc_License_Agreement_-_Data_Files_and_Software.txt --- a/graphicsdeviceinterface/gdi/sgdi/Unicode,_Inc_License_Agreement_-_Data_Files_and_Software.txt Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ - EXHIBIT 1 -UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE - -Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/ . Unicode Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. - -NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. - -COPYRIGHT AND PERMISSION NOTICE - -Copyright © 1991-2009 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. - -Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that (a) the above copyright notice(s) and this permission notice appear with all copies of the Data Files or Software, (b) both the above copyright notice(s) and this permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified. - -THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. - - --------------------------------------------------------------------------------- - -Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be registered in some jurisdictions. All other trademarks and registered trademarks mentioned herein are the property of their respective owners. diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/hextree.cpp --- a/graphicsdeviceinterface/gdi/sgdi/hextree.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Hexadecimal trees - implementation -// - -#include <hextree.h> -#include <e32atomics.h> - -EXPORT_C RHexTreeBase::RHexTreeBase(RHeap* aHeap) - : iHeap(aHeap) - { - Mem::FillZ(iRootOffsets, sizeof(iRootOffsets)); - } - -EXPORT_C TInt RHexTreeBase::SetAt(TUint aKey, TAny* aValue) - { - TUint mask = 0xF0000000; - for (TInt height = EMaxNumHexDigits; height > 1; --height) - { - if ((aKey & mask) != 0) - { - return SetAt(aKey, aValue, height); - } - mask >>= 4; - } - return SetAt(aKey, aValue, 1); - } - -EXPORT_C TAny* RHexTreeBase::At(TUint aKey) const - { - TUint mask = 0xF0000000; - for (TInt height = EMaxNumHexDigits; height > 1; --height) - { - if ((aKey & mask) != 0) - { - return At(aKey, height); - } - mask >>= 4; - } - return At(aKey, 1); - } - -/** -Empties this associative array and frees all memory allocated both for the -associative array implementation and for the values that have been added to -this associative array. - -The internal state of this associative array is reset so that it can be reused -or allowed to go out of scope after a call to this function. -*/ -EXPORT_C void RHexTreeBase::ResetAndDestroy() - { - for (TInt height = 1; height <= EMaxNumHexDigits; ++height) - { - TInt offset = iRootOffsets[height - 1]; - if (offset != 0) - { - TAny* root = PtrAdd(this, offset); - ResetAndDestroy(height, root, 1); - iRootOffsets[height - 1] = 0; - } - } - } - -TInt RHexTreeBase::SetAt(TUint aKey, TAny* aLeaf, TInt aHeight) - { - TInt err; - TInt offset = iRootOffsets[aHeight - 1]; - if (offset == 0) - { - TAny* root = iHeap->AllocZ(aHeight > 1 ? sizeof(TInt) * 15 : sizeof(TInt) * 16); - if (!root) - { - return KErrNoMemory; - } - err = SetAt(aKey, aLeaf, aHeight, root, 1); - if (err == KErrNone) - { - __e32_atomic_store_rel32(&iRootOffsets[aHeight - 1], reinterpret_cast<TInt>(root) - reinterpret_cast<TInt>(this)); - } - else - { - iHeap->Free(root); - } - } - else - { - TAny* root = PtrAdd(this, offset); - err = SetAt(aKey, aLeaf, aHeight, root, 1); - } - return err; - } - -TInt RHexTreeBase::SetAt(TUint aKey, TAny* aLeaf, TInt aHeight, TAny* aNode, TInt aLevel) - { - TInt err = KErrNone; - TInt branch = (aKey >> ((aHeight - aLevel) << 2)) & 0xF; - if (aLevel == 1 && aHeight > 1) - { - --branch; - } - TInt offset = static_cast<TInt*>(aNode)[branch]; - if (aLevel == aHeight) - { - if (offset == 0) - { - __e32_atomic_store_rel32(&static_cast<TInt*>(aNode)[branch], reinterpret_cast<TInt>(aLeaf) - reinterpret_cast<TInt>(aNode)); - } - else - { - err = KErrAlreadyExists; - } - } - else if (offset == 0) - { - TAny* newNode = iHeap->AllocZ(sizeof(TInt) * 16); - if (!newNode) - { - return KErrNoMemory; - } - err = SetAt(aKey, aLeaf, aHeight, newNode, aLevel + 1); - if (err == KErrNone) - { - __e32_atomic_store_rel32(&static_cast<TInt*>(aNode)[branch], reinterpret_cast<TInt>(newNode) - reinterpret_cast<TInt>(aNode)); - } - else - { - iHeap->Free(newNode); - } - } - else - { - TAny* nextNode = PtrAdd(aNode, offset); - err = SetAt(aKey, aLeaf, aHeight, nextNode, aLevel + 1); - } - return err; - } - -TAny* RHexTreeBase::At(TUint aKey, TInt aHeight) const - { - TInt offset = __e32_atomic_load_acq32(&iRootOffsets[aHeight - 1]); - if (offset == 0) - { - return NULL; - } - const TAny* node = PtrAdd(this, offset); - for (TInt level = 1; level <= aHeight; ++level) - { - TInt branch = (aKey >> ((aHeight - level) << 2)) & 0xF; - if (level == 1 && aHeight > 1) - { - --branch; - } - offset = __e32_atomic_load_acq32(&static_cast<const TInt*>(node)[branch]); - if (offset == 0) - { - return NULL; - } - node = PtrAdd(node, offset); - } - return const_cast<TAny*>(node); - } - -void RHexTreeBase::ResetAndDestroy(TInt aHeight, TAny* aNode, TInt aLevel) - { - TInt maxNumBranches = (aLevel == 1 && aHeight > 1 ? 15 : 16); - for (TInt branch = 0; branch < maxNumBranches; ++branch) - { - TInt offset = static_cast<TInt*>(aNode)[branch]; - if (offset != 0) - { - TAny* nextNode = PtrAdd(aNode, offset); - if (aLevel == aHeight) - { - iHeap->Free(nextNode); - } - else - { - ResetAndDestroy(aHeight, nextNode, aLevel + 1); - } - } - } - iHeap->Free(aNode); - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/sgdi/mglyphs.inl --- a/graphicsdeviceinterface/gdi/sgdi/mglyphs.inl Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Generated by mglyphtool.pl from 'BidiMirroring-1.txt' -// -// - -const unsigned long mGlyphArray[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x227D227C, - 0x2208220B, 0x2209220C, 0x220A220D, 0x220B2208, 0x220C2209, 0x220D220A, 0x300E300F, 0x300F300E, - 0x30103011, 0x30113010, 0x00000000, 0x00000000, 0x30143015, 0x30153014, 0x30163017, 0x30173016, - 0x30183019, 0x30193018, 0x301A301B, 0x301B301A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00280029, 0x00290028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x2039203A, 0x203A2039, 0x00000000, 0x003C003E, 0x223D223C, 0x003E003C, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x224322CD, 0x00000000, 0x20452046, 0x20462045, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x22522253, 0x22532252, 0x22542255, 0x22552254, 0x00000000, 0x00000000, - 0x00000000, 0x30083009, 0x30093008, 0x005B005D, 0x00000000, 0x005D005B, 0x300B300A, 0x00000000, - 0x00000000, 0x300C300D, 0x300D300C, 0x00000000, 0x22642265, 0x22652264, 0x22662267, 0x22672266, - 0x22682269, 0x22692268, 0x226A226B, 0x226B226A, 0x00000000, 0x00000000, 0x226E226F, 0x226F226E, - 0x22702271, 0x22712270, 0x22722273, 0x22732272, 0x22742275, 0x22752274, 0x22762277, 0x22772276, - 0x22782279, 0x22792278, 0x227A227B, 0x007B007D, 0x227C227D, 0x007D007B, 0x207E207D, 0x227F227E, - 0x22802281, 0x22812280, 0x22822283, 0x22832282, 0x22842285, 0x22852284, 0x22862287, 0x22872286, - 0x22882289, 0x22892288, 0x228A228B, 0x228B228A, 0x00000000, 0x208D208E, 0x208E208D, 0x228F2290, - 0x2290228F, 0x22912292, 0x22922291, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x22A222A3, 0x22A322A2, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00AB00BB, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x22B022B1, 0x22B122B0, 0x22B222B3, 0x22B322B2, 0x22B422B5, 0x22B522B4, 0x22B622B7, 0x22B722B6, - 0x00000000, 0x00000000, 0x00000000, 0x00BB00AB, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x223C223D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x22C922CA, 0x22CA22C9, 0x22CB22CC, 0x22CC22CB, 0x22CD2243, 0x00000000, 0x00000000, - 0x22D022D1, 0x22D122D0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x22D622D7, 0x22D722D6, - 0x22D822D9, 0x22D922D8, 0x22DA22DB, 0x22DB22DA, 0x22DC22DD, 0x22DD22DC, 0x22DE22DF, 0x22DF22DE, - 0x22E022E1, 0x22E122E0, 0x22E222E3, 0x22E322E2, 0x22E422E5, 0x22E522E4, 0x22E622E7, 0x22E722E6, - 0x22E822E9, 0x22E922E8, 0x22EA22EB, 0x22EB22EA, 0x22EC22ED, 0x22ED22EC, 0x00000000, 0x00000000, - 0x22F022F1, 0x22F122F0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x300A300B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x23082309, 0x23092308, 0x230A230B, 0x230B230A, 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, 0x00000000, 0x00000000, - 0x00000000, 0x2329232A, 0x232A2329, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x227B227A, 0x00000000, - 0x00000000, 0x00000000, 0x207D207E, 0x00000000, 0x00000000, 0x227E227F, 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, - 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, 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, 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, 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, - 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, 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - -const int KLgMirrorTableSize=9; -const int KMirrorTableSize=512; - -// Returns the first index to probe for character aKey. -inline long MirrorStart(long aKey) - { return aKey & (KMirrorTableSize-1); } - -// Returns the offset for further probes for character aKey. -inline long MirrorStep(long aKey) - { return (aKey | 1) + 72; } - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TBiDi.cpp --- a/graphicsdeviceinterface/gdi/tgdi/TBiDi.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10124 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include "BidiCompact.h" -#include "BidiVisual.h" -#include <s32mem.h> -#include <biditext.h> -#include <linebreak.h> -#include "TGraphicsContext.h" -#include "TBiDi.h" - -// -// Constants -// -static const TInt KBufferSize = 1024; -static const TInt KHalfBufferSize = KBufferSize/2; -static const TInt KQuarterBufferSize = KBufferSize/4; -static const TInt KThreeQuarterBufferSize = KQuarterBufferSize*3; -static const TInt KUnicodeNoSuchCharacter = 0xFFFF; -static const TInt KUnicodeLeftToRightMark = 0x200E; -static const TInt KUnicodeRightToLeftMark = 0x200F; -static const TInt KUnicodeLeftToRightEmbedding = 0x202A; -static const TInt KUnicodeRightToLeftEmbedding = 0x202B; -static const TInt KUnicodePopDirectionFormat = 0x202C; -static const TInt KUnicodeLeftToRightOverride = 0x202D; -static const TInt KUnicodeRightToLeftOverride = 0x202E; -static const TInt KUnicodeZeroWidthJoiner = 0x200D; -static const TInt KUnicodeSpace = 0x0020; -static const TInt KUnicodeLinebreak = 0x2028; - -const TText16 KAlef = 0x627; -//const TText16 KBeh = 0x628; -//const TText16 KTehMarbuta = 0x629; -const TText16 KTeh = 0x62A; -//const TText16 KTheh = 0x62B; -//const TText16 KJeem = 0x62C; -//const TText16 KHah = 0x62D; -//const TText16 KKhah = 0x62E; -//const TText16 KDal = 0x62F; -//const TText16 KThal = 0x630; -const TText16 KReh = 0x631; -//const TText16 KZain = 0x632; -//const TText16 KSeen = 0x633; -//const TText16 KSheen = 0x634; -//const TText16 KSad = 0x635; -//const TText16 KDad = 0x636; -//const TText16 KTah = 0x637; -//const TText16 KZah = 0x638; -//const TText16 KAin = 0x639; -//const TText16 KGhain = 0x63A; -const TText16 KFeh = 0x641; -//const TText16 KQaf = 0x642; -const TText16 KKaf = 0x643; -//const TText16 KLam = 0x644; -//const TText16 KMeem = 0x645; -const TText16 KNoon = 0x646; -//const TText16 KHeh = 0x647; -//const TText16 KWaw = 0x648; -//const TText16 KAlefMaksura = 0x649; -const TText16 KYeh = 0x64A; -const TText16 KEllipsis = 0x2026; - -// List of all glyphs that have mirrors as per Unicode 3.0.1 - -_LIT(KMirrors,"\x28\x29\x3C\x3E\x5B\x5D\x7B\x7D\xAB\xBB\x2039\x203A\x2045\x2046" -L"\x207D\x207E\x208D\x208E\x2208\x2209\x220A\x220B\x220C\x220D\x223C\x223D\x2243" -L"\x2252\x2253\x2254\x2255\x2264\x2265\x2266\x2267\x2268\x2269\x226A\x226B\x226E" -L"\x226F\x2270\x2271\x2272\x2273\x2274\x2275\x2276\x2277\x2278\x2279\x227A\x227B" -L"\x227C\x227D\x227E\x227F\x2280\x2281\x2282\x2283\x2284\x2285\x2286\x2287\x2288" -L"\x2289\x228A\x228B\x228F\x2290\x2291\x2292\x22A2\x22A3\x22B0\x22B1\x22B2\x22B3" -L"\x22B4\x22B5\x22B6\x22B7\x22C9\x22CA\x22CB\x22CC\x22CD\x22D0\x22D1\x22D6\x22D7" -L"\x22D8\x22D9\x22DA\x22DB\x22DC\x22DD\x22DE\x22DF\x22E0\x22E1\x22E2\x22E3\x22E4" -L"\x22E5\x22E6\x22E7\x22E8\x22E9\x22EA\x22EB\x22EC\x22ED\x22F0\x22F1\x2308\x2309" -L"\x230A\x230B\x2329\x232A\x3008\x3009\x300A\x300B\x300C\x300D\x300E\x300F\x3010" -L"\x3011\x3014\x3015\x3016\x3017\x3018\x3019\x301A\x301B"); - -// KMirrord()[Pos] is the mirror of KMirrors()[Pos] - -_LIT(KMirrord,"\x29\x28\x3E\x3C\x5D\x5B\x7D\x7B\xBB\xAB\x203A\x2039\x2046\x2045" -L"\x207E\x207D\x208E\x208D\x220B\x220C\x220D\x2208\x2209\x220A\x223D\x223C\x22CD" -L"\x2253\x2252\x2255\x2254\x2265\x2264\x2267\x2266\x2269\x2268\x226B\x226A\x226F" -L"\x226E\x2271\x2270\x2273\x2272\x2275\x2274\x2277\x2276\x2279\x2278\x227B\x227A" -L"\x227D\x227C\x227F\x227E\x2281\x2280\x2283\x2282\x2285\x2284\x2287\x2286\x2289" -L"\x2288\x228B\x228A\x2290\x228F\x2292\x2291\x22A3\x22A2\x22B1\x22B0\x22B3\x22B2" -L"\x22B5\x22B4\x22B7\x22B6\x22CA\x22C9\x22CC\x22CB\x2243\x22D1\x22D0\x22D7\x22D6" -L"\x22D9\x22D8\x22DB\x22DA\x22DD\x22DC\x22DF\x22DE\x22E1\x22E0\x22E3\x22E2\x22E5" -L"\x22E4\x22E7\x22E6\x22E9\x22E8\x22EB\x22EA\x22ED\x22EC\x22F1\x22F0\x2309\x2308" -L"\x230B\x230A\x232A\x2329\x3009\x3008\x300B\x300A\x300D\x300C\x300F\x300E\x3011" -L"\x3010\x3015\x3014\x3017\x3016\x3019\x3018\x301B\x301A"); - -// This constant defines the Unicode characters in the "LeftToRight" (L) category. -// A conventional _LIT cannot be used here because of the Microsoft limit of -// 2048 bytes for literal strings. -// Note: Remove all "mark" from this array, i.e, category = Mn, Mc or Me. That's -// because a "mark" always follow its base character. This feature will -// lead RLOLeftToRightTest() to fail. -// Note: Remove all unpaired surrogate. -static const TUint16 KLeftToRight[] = - { - 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,0x00aa,0x00b5,0x00ba,0x00c0,0x00c1,0x00c2,0x00c3,0x00c4, - 0x00c5,0x00c6,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb,0x00cc,0x00cd,0x00ce, - 0x00cf,0x00d0,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6,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,0x00f8, - 0x00f9,0x00fa,0x00fb,0x00fc,0x00fd,0x00fe,0x00ff,0x0100,0x0101,0x0102, - 0x0103,0x0104,0x0105,0x0106,0x0107,0x0108,0x0109,0x010a,0x010b,0x010c, - 0x010d,0x010e,0x010f,0x0110,0x0111,0x0112,0x0113,0x0114,0x0115,0x0116, - 0x0117,0x0118,0x0119,0x011a,0x011b,0x011c,0x011d,0x011e,0x011f,0x0120, - 0x0121,0x0122,0x0123,0x0124,0x0125,0x0126,0x0127,0x0128,0x0129,0x012a, - 0x012b,0x012c,0x012d,0x012e,0x012f,0x0130,0x0131,0x0132,0x0133,0x0134, - 0x0135,0x0136,0x0137,0x0138,0x0139,0x013a,0x013b,0x013c,0x013d,0x013e, - 0x013f,0x0140,0x0141,0x0142,0x0143,0x0144,0x0145,0x0146,0x0147,0x0148, - 0x0149,0x014a,0x014b,0x014c,0x014d,0x014e,0x014f,0x0150,0x0151,0x0152, - 0x0153,0x0154,0x0155,0x0156,0x0157,0x0158,0x0159,0x015a,0x015b,0x015c, - 0x015d,0x015e,0x015f,0x0160,0x0161,0x0162,0x0163,0x0164,0x0165,0x0166, - 0x0167,0x0168,0x0169,0x016a,0x016b,0x016c,0x016d,0x016e,0x016f,0x0170, - 0x0171,0x0172,0x0173,0x0174,0x0175,0x0176,0x0177,0x0178,0x0179,0x017a, - 0x017b,0x017c,0x017d,0x017e,0x017f,0x0180,0x0181,0x0182,0x0183,0x0184, - 0x0185,0x0186,0x0187,0x0188,0x0189,0x018a,0x018b,0x018c,0x018d,0x018e, - 0x018f,0x0190,0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198, - 0x0199,0x019a,0x019b,0x019c,0x019d,0x019e,0x019f,0x01a0,0x01a1,0x01a2, - 0x01a3,0x01a4,0x01a5,0x01a6,0x01a7,0x01a8,0x01a9,0x01aa,0x01ab,0x01ac, - 0x01ad,0x01ae,0x01af,0x01b0,0x01b1,0x01b2,0x01b3,0x01b4,0x01b5,0x01b6, - 0x01b7,0x01b8,0x01b9,0x01ba,0x01bb,0x01bc,0x01bd,0x01be,0x01bf,0x01c0, - 0x01c1,0x01c2,0x01c3,0x01c4,0x01c5,0x01c6,0x01c7,0x01c8,0x01c9,0x01ca, - 0x01cb,0x01cc,0x01cd,0x01ce,0x01cf,0x01d0,0x01d1,0x01d2,0x01d3,0x01d4, - 0x01d5,0x01d6,0x01d7,0x01d8,0x01d9,0x01da,0x01db,0x01dc,0x01dd,0x01de, - 0x01df,0x01e0,0x01e1,0x01e2,0x01e3,0x01e4,0x01e5,0x01e6,0x01e7,0x01e8, - 0x01e9,0x01ea,0x01eb,0x01ec,0x01ed,0x01ee,0x01ef,0x01f0,0x01f1,0x01f2, - 0x01f3,0x01f4,0x01f5,0x01f6,0x01f7,0x01f8,0x01f9,0x01fa,0x01fb,0x01fc, - 0x01fd,0x01fe,0x01ff,0x0200,0x0201,0x0202,0x0203,0x0204,0x0205,0x0206, - 0x0207,0x0208,0x0209,0x020a,0x020b,0x020c,0x020d,0x020e,0x020f,0x0210, - 0x0211,0x0212,0x0213,0x0214,0x0215,0x0216,0x0217,0x0218,0x0219,0x021a, - 0x021b,0x021c,0x021d,0x021e,0x021f,0x0220,0x0221,0x0222,0x0223,0x0224, - 0x0225,0x0226,0x0227,0x0228,0x0229,0x022a,0x022b,0x022c,0x022d,0x022e, - 0x022f,0x0230,0x0231,0x0232,0x0233,0x0234,0x0235,0x0236,0x0237,0x0238, - 0x0239,0x023a,0x023b,0x023c,0x023d,0x023e,0x023f,0x0240,0x0241,0x0242, - 0x0243,0x0244,0x0245,0x0246,0x0247,0x0248,0x0249,0x024a,0x024b,0x024c, - 0x024d,0x024e,0x024f,0x0250,0x0251,0x0252,0x0253,0x0254,0x0255,0x0256, - 0x0257,0x0258,0x0259,0x025a,0x025b,0x025c,0x025d,0x025e,0x025f,0x0260, - 0x0261,0x0262,0x0263,0x0264,0x0265,0x0266,0x0267,0x0268,0x0269,0x026a, - 0x026b,0x026c,0x026d,0x026e,0x026f,0x0270,0x0271,0x0272,0x0273,0x0274, - 0x0275,0x0276,0x0277,0x0278,0x0279,0x027a,0x027b,0x027c,0x027d,0x027e, - 0x027f,0x0280,0x0281,0x0282,0x0283,0x0284,0x0285,0x0286,0x0287,0x0288, - 0x0289,0x028a,0x028b,0x028c,0x028d,0x028e,0x028f,0x0290,0x0291,0x0292, - 0x0293,0x0294,0x0295,0x0296,0x0297,0x0298,0x0299,0x029a,0x029b,0x029c, - 0x029d,0x029e,0x029f,0x02a0,0x02a1,0x02a2,0x02a3,0x02a4,0x02a5,0x02a6, - 0x02a7,0x02a8,0x02a9,0x02aa,0x02ab,0x02ac,0x02ad,0x02ae,0x02af,0x02b0, - 0x02b1,0x02b2,0x02b3,0x02b4,0x02b5,0x02b6,0x02b7,0x02b8,0x02bb,0x02bc, - 0x02bd,0x02be,0x02bf,0x02c0,0x02c1,0x02d0,0x02d1,0x02e0,0x02e1,0x02e2, - 0x02e3,0x02e4,0x02ee,0x037a,0x037b,0x037c,0x037d,0x0386,0x0388,0x0389, - 0x038a,0x038c,0x038e,0x038f,0x0390,0x0391,0x0392,0x0393,0x0394,0x0395, - 0x0396,0x0397,0x0398,0x0399,0x039a,0x039b,0x039c,0x039d,0x039e,0x039f, - 0x03a0,0x03a1,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,0x03d0,0x03d1,0x03d2,0x03d3, - 0x03d4,0x03d5,0x03d6,0x03d7,0x03d8,0x03d9,0x03da,0x03db,0x03dc,0x03dd, - 0x03de,0x03df,0x03e0,0x03e1,0x03e2,0x03e3,0x03e4,0x03e5,0x03e6,0x03e7, - 0x03e8,0x03e9,0x03ea,0x03eb,0x03ec,0x03ed,0x03ee,0x03ef,0x03f0,0x03f1, - 0x03f2,0x03f3,0x03f4,0x03f5,0x03f7,0x03f8,0x03f9,0x03fa,0x03fb,0x03fc, - 0x03fd,0x03fe,0x03ff,0x0400,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406, - 0x0407,0x0408,0x0409,0x040a,0x040b,0x040c,0x040d,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,0x0450,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456, - 0x0457,0x0458,0x0459,0x045a,0x045b,0x045c,0x045d,0x045e,0x045f,0x0460, - 0x0461,0x0462,0x0463,0x0464,0x0465,0x0466,0x0467,0x0468,0x0469,0x046a, - 0x046b,0x046c,0x046d,0x046e,0x046f,0x0470,0x0471,0x0472,0x0473,0x0474, - 0x0475,0x0476,0x0477,0x0478,0x0479,0x047a,0x047b,0x047c,0x047d,0x047e, - 0x047f,0x0480,0x0481,0x0482,0x048a,0x048b,0x048c,0x048d,0x048e,0x048f, - 0x0490,0x0491,0x0492,0x0493,0x0494,0x0495,0x0496,0x0497,0x0498,0x0499, - 0x049a,0x049b,0x049c,0x049d,0x049e,0x049f,0x04a0,0x04a1,0x04a2,0x04a3, - 0x04a4,0x04a5,0x04a6,0x04a7,0x04a8,0x04a9,0x04aa,0x04ab,0x04ac,0x04ad, - 0x04ae,0x04af,0x04b0,0x04b1,0x04b2,0x04b3,0x04b4,0x04b5,0x04b6,0x04b7, - 0x04b8,0x04b9,0x04ba,0x04bb,0x04bc,0x04bd,0x04be,0x04bf,0x04c0,0x04c1, - 0x04c2,0x04c3,0x04c4,0x04c5,0x04c6,0x04c7,0x04c8,0x04c9,0x04ca,0x04cb, - 0x04cc,0x04cd,0x04ce,0x04cf,0x04d0,0x04d1,0x04d2,0x04d3,0x04d4,0x04d5, - 0x04d6,0x04d7,0x04d8,0x04d9,0x04da,0x04db,0x04dc,0x04dd,0x04de,0x04df, - 0x04e0,0x04e1,0x04e2,0x04e3,0x04e4,0x04e5,0x04e6,0x04e7,0x04e8,0x04e9, - 0x04ea,0x04eb,0x04ec,0x04ed,0x04ee,0x04ef,0x04f0,0x04f1,0x04f2,0x04f3, - 0x04f4,0x04f5,0x04f6,0x04f7,0x04f8,0x04f9,0x04fa,0x04fb,0x04fc,0x04fd, - 0x04fe,0x04ff,0x0500,0x0501,0x0502,0x0503,0x0504,0x0505,0x0506,0x0507, - 0x0508,0x0509,0x050a,0x050b,0x050c,0x050d,0x050e,0x050f,0x0510,0x0511, - 0x0512,0x0513,0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538, - 0x0539,0x053a,0x053b,0x053c,0x053d,0x053e,0x053f,0x0540,0x0541,0x0542, - 0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,0x0549,0x054a,0x054b,0x054c, - 0x054d,0x054e,0x054f,0x0550,0x0551,0x0552,0x0553,0x0554,0x0555,0x0556, - 0x0559,0x055a,0x055b,0x055c,0x055d,0x055e,0x055f,0x0561,0x0562,0x0563, - 0x0564,0x0565,0x0566,0x0567,0x0568,0x0569,0x056a,0x056b,0x056c,0x056d, - 0x056e,0x056f,0x0570,0x0571,0x0572,0x0573,0x0574,0x0575,0x0576,0x0577, - 0x0578,0x0579,0x057a,0x057b,0x057c,0x057d,0x057e,0x057f,0x0580,0x0581, - 0x0582,0x0583,0x0584,0x0585,0x0586,0x0587,0x0589,0x0904,0x0905,0x0906, - 0x0907,0x0908,0x0909,0x090a,0x090b,0x090c,0x090d,0x090e,0x090f,0x0910, - 0x0911,0x0912,0x0913,0x0914,0x0915,0x0916,0x0917,0x0918,0x0919,0x091a, - 0x091b,0x091c,0x091d,0x091e,0x091f,0x0920,0x0921,0x0922,0x0923,0x0924, - 0x0925,0x0926,0x0927,0x0928,0x0929,0x092a,0x092b,0x092c,0x092d,0x092e, - 0x092f,0x0930,0x0931,0x0932,0x0933,0x0934,0x0935,0x0936,0x0937,0x0938, - 0x0939,0x093d,0x0950,0x0958,0x0959,0x095a,0x095b,0x095c,0x095d,0x095e, - 0x095f,0x0960,0x0961,0x0964,0x0965,0x0966,0x0967,0x0968,0x0969,0x096a, - 0x096b,0x096c,0x096d,0x096e,0x096f,0x0970,0x097b,0x097c,0x097d,0x097e, - 0x097f,0x0985,0x0986,0x0987,0x0988,0x0989,0x098a,0x098b,0x098c,0x098f, - 0x0990,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998,0x0999,0x099a,0x099b, - 0x099c,0x099d,0x099e,0x099f,0x09a0,0x09a1,0x09a2,0x09a3,0x09a4,0x09a5, - 0x09a6,0x09a7,0x09a8,0x09aa,0x09ab,0x09ac,0x09ad,0x09ae,0x09af,0x09b0, - 0x09b2,0x09b6,0x09b7,0x09b8,0x09b9,0x09bd,0x09ce,0x09dc,0x09dd,0x09df, - 0x09e0,0x09e1,0x09e6,0x09e7,0x09e8,0x09e9,0x09ea,0x09eb,0x09ec,0x09ed, - 0x09ee,0x09ef,0x09f0,0x09f1,0x09f4,0x09f5,0x09f6,0x09f7,0x09f8,0x09f9, - 0x09fa,0x0a05,0x0a06,0x0a07,0x0a08,0x0a09,0x0a0a,0x0a0f,0x0a10,0x0a13, - 0x0a14,0x0a15,0x0a16,0x0a17,0x0a18,0x0a19,0x0a1a,0x0a1b,0x0a1c,0x0a1d, - 0x0a1e,0x0a1f,0x0a20,0x0a21,0x0a22,0x0a23,0x0a24,0x0a25,0x0a26,0x0a27, - 0x0a28,0x0a2a,0x0a2b,0x0a2c,0x0a2d,0x0a2e,0x0a2f,0x0a30,0x0a32,0x0a33, - 0x0a35,0x0a36,0x0a38,0x0a39,0x0a59,0x0a5a,0x0a5b,0x0a5c,0x0a5e,0x0a66, - 0x0a67,0x0a68,0x0a69,0x0a6a,0x0a6b,0x0a6c,0x0a6d,0x0a6e,0x0a6f,0x0a72, - 0x0a73,0x0a74,0x0a85,0x0a86,0x0a87,0x0a88,0x0a89,0x0a8a,0x0a8b,0x0a8c, - 0x0a8d,0x0a8f,0x0a90,0x0a91,0x0a93,0x0a94,0x0a95,0x0a96,0x0a97,0x0a98, - 0x0a99,0x0a9a,0x0a9b,0x0a9c,0x0a9d,0x0a9e,0x0a9f,0x0aa0,0x0aa1,0x0aa2, - 0x0aa3,0x0aa4,0x0aa5,0x0aa6,0x0aa7,0x0aa8,0x0aaa,0x0aab,0x0aac,0x0aad, - 0x0aae,0x0aaf,0x0ab0,0x0ab2,0x0ab3,0x0ab5,0x0ab6,0x0ab7,0x0ab8,0x0ab9, - 0x0abd,0x0ad0,0x0ae0,0x0ae1,0x0ae6,0x0ae7,0x0ae8,0x0ae9,0x0aea,0x0aeb, - 0x0aec,0x0aed,0x0aee,0x0aef,0x0b05,0x0b06,0x0b07,0x0b08,0x0b09,0x0b0a, - 0x0b0b,0x0b0c,0x0b0f,0x0b10,0x0b13,0x0b14,0x0b15,0x0b16,0x0b17,0x0b18, - 0x0b19,0x0b1a,0x0b1b,0x0b1c,0x0b1d,0x0b1e,0x0b1f,0x0b20,0x0b21,0x0b22, - 0x0b23,0x0b24,0x0b25,0x0b26,0x0b27,0x0b28,0x0b2a,0x0b2b,0x0b2c,0x0b2d, - 0x0b2e,0x0b2f,0x0b30,0x0b32,0x0b33,0x0b35,0x0b36,0x0b37,0x0b38,0x0b39, - 0x0b3d,0x0b5c,0x0b5d,0x0b5f,0x0b60,0x0b61,0x0b66,0x0b67,0x0b68,0x0b69, - 0x0b6a,0x0b6b,0x0b6c,0x0b6d,0x0b6e,0x0b6f,0x0b70,0x0b71,0x0b83,0x0b85, - 0x0b86,0x0b87,0x0b88,0x0b89,0x0b8a,0x0b8e,0x0b8f,0x0b90,0x0b92,0x0b93, - 0x0b94,0x0b95,0x0b99,0x0b9a,0x0b9c,0x0b9e,0x0b9f,0x0ba3,0x0ba4,0x0ba8, - 0x0ba9,0x0baa,0x0bae,0x0baf,0x0bb0,0x0bb1,0x0bb2,0x0bb3,0x0bb4,0x0bb5, - 0x0bb6,0x0bb7,0x0bb8,0x0bb9,0x0be6,0x0be7,0x0be8,0x0be9,0x0bea,0x0beb, - 0x0bec,0x0bed,0x0bee,0x0bef,0x0bf0,0x0bf1,0x0bf2,0x0c05,0x0c06,0x0c07, - 0x0c08,0x0c09,0x0c0a,0x0c0b,0x0c0c,0x0c0e,0x0c0f,0x0c10,0x0c12,0x0c13, - 0x0c14,0x0c15,0x0c16,0x0c17,0x0c18,0x0c19,0x0c1a,0x0c1b,0x0c1c,0x0c1d, - 0x0c1e,0x0c1f,0x0c20,0x0c21,0x0c22,0x0c23,0x0c24,0x0c25,0x0c26,0x0c27, - 0x0c28,0x0c2a,0x0c2b,0x0c2c,0x0c2d,0x0c2e,0x0c2f,0x0c30,0x0c31,0x0c32, - 0x0c33,0x0c35,0x0c36,0x0c37,0x0c38,0x0c39,0x0c60,0x0c61,0x0c66,0x0c67, - 0x0c68,0x0c69,0x0c6a,0x0c6b,0x0c6c,0x0c6d,0x0c6e,0x0c6f,0x0c85,0x0c86, - 0x0c87,0x0c88,0x0c89,0x0c8a,0x0c8b,0x0c8c,0x0c8e,0x0c8f,0x0c90,0x0c92, - 0x0c93,0x0c94,0x0c95,0x0c96,0x0c97,0x0c98,0x0c99,0x0c9a,0x0c9b,0x0c9c, - 0x0c9d,0x0c9e,0x0c9f,0x0ca0,0x0ca1,0x0ca2,0x0ca3,0x0ca4,0x0ca5,0x0ca6, - 0x0ca7,0x0ca8,0x0caa,0x0cab,0x0cac,0x0cad,0x0cae,0x0caf,0x0cb0,0x0cb1, - 0x0cb2,0x0cb3,0x0cb5,0x0cb6,0x0cb7,0x0cb8,0x0cb9,0x0cbd,0x0cde,0x0ce0, - 0x0ce1,0x0ce6,0x0ce7,0x0ce8,0x0ce9,0x0cea,0x0ceb,0x0cec,0x0ced,0x0cee, - 0x0cef,0x0d05,0x0d06,0x0d07,0x0d08,0x0d09,0x0d0a,0x0d0b,0x0d0c,0x0d0e, - 0x0d0f,0x0d10,0x0d12,0x0d13,0x0d14,0x0d15,0x0d16,0x0d17,0x0d18,0x0d19, - 0x0d1a,0x0d1b,0x0d1c,0x0d1d,0x0d1e,0x0d1f,0x0d20,0x0d21,0x0d22,0x0d23, - 0x0d24,0x0d25,0x0d26,0x0d27,0x0d28,0x0d2a,0x0d2b,0x0d2c,0x0d2d,0x0d2e, - 0x0d2f,0x0d30,0x0d31,0x0d32,0x0d33,0x0d34,0x0d35,0x0d36,0x0d37,0x0d38, - 0x0d39,0x0d60,0x0d61,0x0d66,0x0d67,0x0d68,0x0d69,0x0d6a,0x0d6b,0x0d6c, - 0x0d6d,0x0d6e,0x0d6f,0x0d85,0x0d86,0x0d87,0x0d88,0x0d89,0x0d8a,0x0d8b, - 0x0d8c,0x0d8d,0x0d8e,0x0d8f,0x0d90,0x0d91,0x0d92,0x0d93,0x0d94,0x0d95, - 0x0d96,0x0d9a,0x0d9b,0x0d9c,0x0d9d,0x0d9e,0x0d9f,0x0da0,0x0da1,0x0da2, - 0x0da3,0x0da4,0x0da5,0x0da6,0x0da7,0x0da8,0x0da9,0x0daa,0x0dab,0x0dac, - 0x0dad,0x0dae,0x0daf,0x0db0,0x0db1,0x0db3,0x0db4,0x0db5,0x0db6,0x0db7, - 0x0db8,0x0db9,0x0dba,0x0dbb,0x0dbd,0x0dc0,0x0dc1,0x0dc2,0x0dc3,0x0dc4, - 0x0dc5,0x0dc6,0x0df4,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,0x0e32,0x0e33,0x0e40,0x0e41,0x0e42,0x0e43,0x0e44,0x0e45,0x0e46, - 0x0e4f,0x0e50,0x0e51,0x0e52,0x0e53,0x0e54,0x0e55,0x0e56,0x0e57,0x0e58, - 0x0e59,0x0e5a,0x0e5b,0x0e81,0x0e82,0x0e84,0x0e87,0x0e88,0x0e8a,0x0e8d, - 0x0e94,0x0e95,0x0e96,0x0e97,0x0e99,0x0e9a,0x0e9b,0x0e9c,0x0e9d,0x0e9e, - 0x0e9f,0x0ea1,0x0ea2,0x0ea3,0x0ea5,0x0ea7,0x0eaa,0x0eab,0x0ead,0x0eae, - 0x0eaf,0x0eb0,0x0eb2,0x0eb3,0x0ebd,0x0ec0,0x0ec1,0x0ec2,0x0ec3,0x0ec4, - 0x0ec6,0x0ed0,0x0ed1,0x0ed2,0x0ed3,0x0ed4,0x0ed5,0x0ed6,0x0ed7,0x0ed8, - 0x0ed9,0x0edc,0x0edd,0x0f00,0x0f01,0x0f02,0x0f03,0x0f04,0x0f05,0x0f06, - 0x0f07,0x0f08,0x0f09,0x0f0a,0x0f0b,0x0f0c,0x0f0d,0x0f0e,0x0f0f,0x0f10, - 0x0f11,0x0f12,0x0f13,0x0f14,0x0f15,0x0f16,0x0f17,0x0f1a,0x0f1b,0x0f1c, - 0x0f1d,0x0f1e,0x0f1f,0x0f20,0x0f21,0x0f22,0x0f23,0x0f24,0x0f25,0x0f26, - 0x0f27,0x0f28,0x0f29,0x0f2a,0x0f2b,0x0f2c,0x0f2d,0x0f2e,0x0f2f,0x0f30, - 0x0f31,0x0f32,0x0f33,0x0f34,0x0f36,0x0f38,0x0f40,0x0f41,0x0f42,0x0f43, - 0x0f44,0x0f45,0x0f46,0x0f47,0x0f49,0x0f4a,0x0f4b,0x0f4c,0x0f4d,0x0f4e, - 0x0f4f,0x0f50,0x0f51,0x0f52,0x0f53,0x0f54,0x0f55,0x0f56,0x0f57,0x0f58, - 0x0f59,0x0f5a,0x0f5b,0x0f5c,0x0f5d,0x0f5e,0x0f5f,0x0f60,0x0f61,0x0f62, - 0x0f63,0x0f64,0x0f65,0x0f66,0x0f67,0x0f68,0x0f69,0x0f6a,0x0f85,0x0f88, - 0x0f89,0x0f8a,0x0f8b,0x0fbe,0x0fbf,0x0fc0,0x0fc1,0x0fc2,0x0fc3,0x0fc4, - 0x0fc5,0x0fc7,0x0fc8,0x0fc9,0x0fca,0x0fcb,0x0fcc,0x0fcf,0x0fd0,0x0fd1, - 0x1000,0x1001,0x1002,0x1003,0x1004,0x1005,0x1006,0x1007,0x1008,0x1009, - 0x100a,0x100b,0x100c,0x100d,0x100e,0x100f,0x1010,0x1011,0x1012,0x1013, - 0x1014,0x1015,0x1016,0x1017,0x1018,0x1019,0x101a,0x101b,0x101c,0x101d, - 0x101e,0x101f,0x1020,0x1021,0x1023,0x1024,0x1025,0x1026,0x1027,0x1029, - 0x102a,0x1040,0x1041,0x1042,0x1043,0x1044,0x1045,0x1046,0x1047,0x1048, - 0x1049,0x104a,0x104b,0x104c,0x104d,0x104e,0x104f,0x1050,0x1051,0x1052, - 0x1053,0x1054,0x1055,0x10a0,0x10a1,0x10a2,0x10a3,0x10a4,0x10a5,0x10a6, - 0x10a7,0x10a8,0x10a9,0x10aa,0x10ab,0x10ac,0x10ad,0x10ae,0x10af,0x10b0, - 0x10b1,0x10b2,0x10b3,0x10b4,0x10b5,0x10b6,0x10b7,0x10b8,0x10b9,0x10ba, - 0x10bb,0x10bc,0x10bd,0x10be,0x10bf,0x10c0,0x10c1,0x10c2,0x10c3,0x10c4, - 0x10c5,0x10d0,0x10d1,0x10d2,0x10d3,0x10d4,0x10d5,0x10d6,0x10d7,0x10d8, - 0x10d9,0x10da,0x10db,0x10dc,0x10dd,0x10de,0x10df,0x10e0,0x10e1,0x10e2, - 0x10e3,0x10e4,0x10e5,0x10e6,0x10e7,0x10e8,0x10e9,0x10ea,0x10eb,0x10ec, - 0x10ed,0x10ee,0x10ef,0x10f0,0x10f1,0x10f2,0x10f3,0x10f4,0x10f5,0x10f6, - 0x10f7,0x10f8,0x10f9,0x10fa,0x10fb,0x10fc,0x1100,0x1101,0x1102,0x1103, - 0x1104,0x1105,0x1106,0x1107,0x1108,0x1109,0x110a,0x110b,0x110c,0x110d, - 0x110e,0x110f,0x1110,0x1111,0x1112,0x1113,0x1114,0x1115,0x1116,0x1117, - 0x1118,0x1119,0x111a,0x111b,0x111c,0x111d,0x111e,0x111f,0x1120,0x1121, - 0x1122,0x1123,0x1124,0x1125,0x1126,0x1127,0x1128,0x1129,0x112a,0x112b, - 0x112c,0x112d,0x112e,0x112f,0x1130,0x1131,0x1132,0x1133,0x1134,0x1135, - 0x1136,0x1137,0x1138,0x1139,0x113a,0x113b,0x113c,0x113d,0x113e,0x113f, - 0x1140,0x1141,0x1142,0x1143,0x1144,0x1145,0x1146,0x1147,0x1148,0x1149, - 0x114a,0x114b,0x114c,0x114d,0x114e,0x114f,0x1150,0x1151,0x1152,0x1153, - 0x1154,0x1155,0x1156,0x1157,0x1158,0x1159,0x115f,0x1160,0x1161,0x1162, - 0x1163,0x1164,0x1165,0x1166,0x1167,0x1168,0x1169,0x116a,0x116b,0x116c, - 0x116d,0x116e,0x116f,0x1170,0x1171,0x1172,0x1173,0x1174,0x1175,0x1176, - 0x1177,0x1178,0x1179,0x117a,0x117b,0x117c,0x117d,0x117e,0x117f,0x1180, - 0x1181,0x1182,0x1183,0x1184,0x1185,0x1186,0x1187,0x1188,0x1189,0x118a, - 0x118b,0x118c,0x118d,0x118e,0x118f,0x1190,0x1191,0x1192,0x1193,0x1194, - 0x1195,0x1196,0x1197,0x1198,0x1199,0x119a,0x119b,0x119c,0x119d,0x119e, - 0x119f,0x11a0,0x11a1,0x11a2,0x11a8,0x11a9,0x11aa,0x11ab,0x11ac,0x11ad, - 0x11ae,0x11af,0x11b0,0x11b1,0x11b2,0x11b3,0x11b4,0x11b5,0x11b6,0x11b7, - 0x11b8,0x11b9,0x11ba,0x11bb,0x11bc,0x11bd,0x11be,0x11bf,0x11c0,0x11c1, - 0x11c2,0x11c3,0x11c4,0x11c5,0x11c6,0x11c7,0x11c8,0x11c9,0x11ca,0x11cb, - 0x11cc,0x11cd,0x11ce,0x11cf,0x11d0,0x11d1,0x11d2,0x11d3,0x11d4,0x11d5, - 0x11d6,0x11d7,0x11d8,0x11d9,0x11da,0x11db,0x11dc,0x11dd,0x11de,0x11df, - 0x11e0,0x11e1,0x11e2,0x11e3,0x11e4,0x11e5,0x11e6,0x11e7,0x11e8,0x11e9, - 0x11ea,0x11eb,0x11ec,0x11ed,0x11ee,0x11ef,0x11f0,0x11f1,0x11f2,0x11f3, - 0x11f4,0x11f5,0x11f6,0x11f7,0x11f8,0x11f9,0x1200,0x1201,0x1202,0x1203, - 0x1204,0x1205,0x1206,0x1207,0x1208,0x1209,0x120a,0x120b,0x120c,0x120d, - 0x120e,0x120f,0x1210,0x1211,0x1212,0x1213,0x1214,0x1215,0x1216,0x1217, - 0x1218,0x1219,0x121a,0x121b,0x121c,0x121d,0x121e,0x121f,0x1220,0x1221, - 0x1222,0x1223,0x1224,0x1225,0x1226,0x1227,0x1228,0x1229,0x122a,0x122b, - 0x122c,0x122d,0x122e,0x122f,0x1230,0x1231,0x1232,0x1233,0x1234,0x1235, - 0x1236,0x1237,0x1238,0x1239,0x123a,0x123b,0x123c,0x123d,0x123e,0x123f, - 0x1240,0x1241,0x1242,0x1243,0x1244,0x1245,0x1246,0x1247,0x1248,0x124a, - 0x124b,0x124c,0x124d,0x1250,0x1251,0x1252,0x1253,0x1254,0x1255,0x1256, - 0x1258,0x125a,0x125b,0x125c,0x125d,0x1260,0x1261,0x1262,0x1263,0x1264, - 0x1265,0x1266,0x1267,0x1268,0x1269,0x126a,0x126b,0x126c,0x126d,0x126e, - 0x126f,0x1270,0x1271,0x1272,0x1273,0x1274,0x1275,0x1276,0x1277,0x1278, - 0x1279,0x127a,0x127b,0x127c,0x127d,0x127e,0x127f,0x1280,0x1281,0x1282, - 0x1283,0x1284,0x1285,0x1286,0x1287,0x1288,0x128a,0x128b,0x128c,0x128d, - 0x1290,0x1291,0x1292,0x1293,0x1294,0x1295,0x1296,0x1297,0x1298,0x1299, - 0x129a,0x129b,0x129c,0x129d,0x129e,0x129f,0x12a0,0x12a1,0x12a2,0x12a3, - 0x12a4,0x12a5,0x12a6,0x12a7,0x12a8,0x12a9,0x12aa,0x12ab,0x12ac,0x12ad, - 0x12ae,0x12af,0x12b0,0x12b2,0x12b3,0x12b4,0x12b5,0x12b8,0x12b9,0x12ba, - 0x12bb,0x12bc,0x12bd,0x12be,0x12c0,0x12c2,0x12c3,0x12c4,0x12c5,0x12c8, - 0x12c9,0x12ca,0x12cb,0x12cc,0x12cd,0x12ce,0x12cf,0x12d0,0x12d1,0x12d2, - 0x12d3,0x12d4,0x12d5,0x12d6,0x12d8,0x12d9,0x12da,0x12db,0x12dc,0x12dd, - 0x12de,0x12df,0x12e0,0x12e1,0x12e2,0x12e3,0x12e4,0x12e5,0x12e6,0x12e7, - 0x12e8,0x12e9,0x12ea,0x12eb,0x12ec,0x12ed,0x12ee,0x12ef,0x12f0,0x12f1, - 0x12f2,0x12f3,0x12f4,0x12f5,0x12f6,0x12f7,0x12f8,0x12f9,0x12fa,0x12fb, - 0x12fc,0x12fd,0x12fe,0x12ff,0x1300,0x1301,0x1302,0x1303,0x1304,0x1305, - 0x1306,0x1307,0x1308,0x1309,0x130a,0x130b,0x130c,0x130d,0x130e,0x130f, - 0x1310,0x1312,0x1313,0x1314,0x1315,0x1318,0x1319,0x131a,0x131b,0x131c, - 0x131d,0x131e,0x131f,0x1320,0x1321,0x1322,0x1323,0x1324,0x1325,0x1326, - 0x1327,0x1328,0x1329,0x132a,0x132b,0x132c,0x132d,0x132e,0x132f,0x1330, - 0x1331,0x1332,0x1333,0x1334,0x1335,0x1336,0x1337,0x1338,0x1339,0x133a, - 0x133b,0x133c,0x133d,0x133e,0x133f,0x1340,0x1341,0x1342,0x1343,0x1344, - 0x1345,0x1346,0x1347,0x1348,0x1349,0x134a,0x134b,0x134c,0x134d,0x134e, - 0x134f,0x1350,0x1351,0x1352,0x1353,0x1354,0x1355,0x1356,0x1357,0x1358, - 0x1359,0x135a,0x1360,0x1361,0x1362,0x1363,0x1364,0x1365,0x1366,0x1367, - 0x1368,0x1369,0x136a,0x136b,0x136c,0x136d,0x136e,0x136f,0x1370,0x1371, - 0x1372,0x1373,0x1374,0x1375,0x1376,0x1377,0x1378,0x1379,0x137a,0x137b, - 0x137c,0x1380,0x1381,0x1382,0x1383,0x1384,0x1385,0x1386,0x1387,0x1388, - 0x1389,0x138a,0x138b,0x138c,0x138d,0x138e,0x138f,0x13a0,0x13a1,0x13a2, - 0x13a3,0x13a4,0x13a5,0x13a6,0x13a7,0x13a8,0x13a9,0x13aa,0x13ab,0x13ac, - 0x13ad,0x13ae,0x13af,0x13b0,0x13b1,0x13b2,0x13b3,0x13b4,0x13b5,0x13b6, - 0x13b7,0x13b8,0x13b9,0x13ba,0x13bb,0x13bc,0x13bd,0x13be,0x13bf,0x13c0, - 0x13c1,0x13c2,0x13c3,0x13c4,0x13c5,0x13c6,0x13c7,0x13c8,0x13c9,0x13ca, - 0x13cb,0x13cc,0x13cd,0x13ce,0x13cf,0x13d0,0x13d1,0x13d2,0x13d3,0x13d4, - 0x13d5,0x13d6,0x13d7,0x13d8,0x13d9,0x13da,0x13db,0x13dc,0x13dd,0x13de, - 0x13df,0x13e0,0x13e1,0x13e2,0x13e3,0x13e4,0x13e5,0x13e6,0x13e7,0x13e8, - 0x13e9,0x13ea,0x13eb,0x13ec,0x13ed,0x13ee,0x13ef,0x13f0,0x13f1,0x13f2, - 0x13f3,0x13f4,0x1401,0x1402,0x1403,0x1404,0x1405,0x1406,0x1407,0x1408, - 0x1409,0x140a,0x140b,0x140c,0x140d,0x140e,0x140f,0x1410,0x1411,0x1412, - 0x1413,0x1414,0x1415,0x1416,0x1417,0x1418,0x1419,0x141a,0x141b,0x141c, - 0x141d,0x141e,0x141f,0x1420,0x1421,0x1422,0x1423,0x1424,0x1425,0x1426, - 0x1427,0x1428,0x1429,0x142a,0x142b,0x142c,0x142d,0x142e,0x142f,0x1430, - 0x1431,0x1432,0x1433,0x1434,0x1435,0x1436,0x1437,0x1438,0x1439,0x143a, - 0x143b,0x143c,0x143d,0x143e,0x143f,0x1440,0x1441,0x1442,0x1443,0x1444, - 0x1445,0x1446,0x1447,0x1448,0x1449,0x144a,0x144b,0x144c,0x144d,0x144e, - 0x144f,0x1450,0x1451,0x1452,0x1453,0x1454,0x1455,0x1456,0x1457,0x1458, - 0x1459,0x145a,0x145b,0x145c,0x145d,0x145e,0x145f,0x1460,0x1461,0x1462, - 0x1463,0x1464,0x1465,0x1466,0x1467,0x1468,0x1469,0x146a,0x146b,0x146c, - 0x146d,0x146e,0x146f,0x1470,0x1471,0x1472,0x1473,0x1474,0x1475,0x1476, - 0x1477,0x1478,0x1479,0x147a,0x147b,0x147c,0x147d,0x147e,0x147f,0x1480, - 0x1481,0x1482,0x1483,0x1484,0x1485,0x1486,0x1487,0x1488,0x1489,0x148a, - 0x148b,0x148c,0x148d,0x148e,0x148f,0x1490,0x1491,0x1492,0x1493,0x1494, - 0x1495,0x1496,0x1497,0x1498,0x1499,0x149a,0x149b,0x149c,0x149d,0x149e, - 0x149f,0x14a0,0x14a1,0x14a2,0x14a3,0x14a4,0x14a5,0x14a6,0x14a7,0x14a8, - 0x14a9,0x14aa,0x14ab,0x14ac,0x14ad,0x14ae,0x14af,0x14b0,0x14b1,0x14b2, - 0x14b3,0x14b4,0x14b5,0x14b6,0x14b7,0x14b8,0x14b9,0x14ba,0x14bb,0x14bc, - 0x14bd,0x14be,0x14bf,0x14c0,0x14c1,0x14c2,0x14c3,0x14c4,0x14c5,0x14c6, - 0x14c7,0x14c8,0x14c9,0x14ca,0x14cb,0x14cc,0x14cd,0x14ce,0x14cf,0x14d0, - 0x14d1,0x14d2,0x14d3,0x14d4,0x14d5,0x14d6,0x14d7,0x14d8,0x14d9,0x14da, - 0x14db,0x14dc,0x14dd,0x14de,0x14df,0x14e0,0x14e1,0x14e2,0x14e3,0x14e4, - 0x14e5,0x14e6,0x14e7,0x14e8,0x14e9,0x14ea,0x14eb,0x14ec,0x14ed,0x14ee, - 0x14ef,0x14f0,0x14f1,0x14f2,0x14f3,0x14f4,0x14f5,0x14f6,0x14f7,0x14f8, - 0x14f9,0x14fa,0x14fb,0x14fc,0x14fd,0x14fe,0x14ff,0x1500,0x1501,0x1502, - 0x1503,0x1504,0x1505,0x1506,0x1507,0x1508,0x1509,0x150a,0x150b,0x150c, - 0x150d,0x150e,0x150f,0x1510,0x1511,0x1512,0x1513,0x1514,0x1515,0x1516, - 0x1517,0x1518,0x1519,0x151a,0x151b,0x151c,0x151d,0x151e,0x151f,0x1520, - 0x1521,0x1522,0x1523,0x1524,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a, - 0x152b,0x152c,0x152d,0x152e,0x152f,0x1530,0x1531,0x1532,0x1533,0x1534, - 0x1535,0x1536,0x1537,0x1538,0x1539,0x153a,0x153b,0x153c,0x153d,0x153e, - 0x153f,0x1540,0x1541,0x1542,0x1543,0x1544,0x1545,0x1546,0x1547,0x1548, - 0x1549,0x154a,0x154b,0x154c,0x154d,0x154e,0x154f,0x1550,0x1551,0x1552, - 0x1553,0x1554,0x1555,0x1556,0x1557,0x1558,0x1559,0x155a,0x155b,0x155c, - 0x155d,0x155e,0x155f,0x1560,0x1561,0x1562,0x1563,0x1564,0x1565,0x1566, - 0x1567,0x1568,0x1569,0x156a,0x156b,0x156c,0x156d,0x156e,0x156f,0x1570, - 0x1571,0x1572,0x1573,0x1574,0x1575,0x1576,0x1577,0x1578,0x1579,0x157a, - 0x157b,0x157c,0x157d,0x157e,0x157f,0x1580,0x1581,0x1582,0x1583,0x1584, - 0x1585,0x1586,0x1587,0x1588,0x1589,0x158a,0x158b,0x158c,0x158d,0x158e, - 0x158f,0x1590,0x1591,0x1592,0x1593,0x1594,0x1595,0x1596,0x1597,0x1598, - 0x1599,0x159a,0x159b,0x159c,0x159d,0x159e,0x159f,0x15a0,0x15a1,0x15a2, - 0x15a3,0x15a4,0x15a5,0x15a6,0x15a7,0x15a8,0x15a9,0x15aa,0x15ab,0x15ac, - 0x15ad,0x15ae,0x15af,0x15b0,0x15b1,0x15b2,0x15b3,0x15b4,0x15b5,0x15b6, - 0x15b7,0x15b8,0x15b9,0x15ba,0x15bb,0x15bc,0x15bd,0x15be,0x15bf,0x15c0, - 0x15c1,0x15c2,0x15c3,0x15c4,0x15c5,0x15c6,0x15c7,0x15c8,0x15c9,0x15ca, - 0x15cb,0x15cc,0x15cd,0x15ce,0x15cf,0x15d0,0x15d1,0x15d2,0x15d3,0x15d4, - 0x15d5,0x15d6,0x15d7,0x15d8,0x15d9,0x15da,0x15db,0x15dc,0x15dd,0x15de, - 0x15df,0x15e0,0x15e1,0x15e2,0x15e3,0x15e4,0x15e5,0x15e6,0x15e7,0x15e8, - 0x15e9,0x15ea,0x15eb,0x15ec,0x15ed,0x15ee,0x15ef,0x15f0,0x15f1,0x15f2, - 0x15f3,0x15f4,0x15f5,0x15f6,0x15f7,0x15f8,0x15f9,0x15fa,0x15fb,0x15fc, - 0x15fd,0x15fe,0x15ff,0x1600,0x1601,0x1602,0x1603,0x1604,0x1605,0x1606, - 0x1607,0x1608,0x1609,0x160a,0x160b,0x160c,0x160d,0x160e,0x160f,0x1610, - 0x1611,0x1612,0x1613,0x1614,0x1615,0x1616,0x1617,0x1618,0x1619,0x161a, - 0x161b,0x161c,0x161d,0x161e,0x161f,0x1620,0x1621,0x1622,0x1623,0x1624, - 0x1625,0x1626,0x1627,0x1628,0x1629,0x162a,0x162b,0x162c,0x162d,0x162e, - 0x162f,0x1630,0x1631,0x1632,0x1633,0x1634,0x1635,0x1636,0x1637,0x1638, - 0x1639,0x163a,0x163b,0x163c,0x163d,0x163e,0x163f,0x1640,0x1641,0x1642, - 0x1643,0x1644,0x1645,0x1646,0x1647,0x1648,0x1649,0x164a,0x164b,0x164c, - 0x164d,0x164e,0x164f,0x1650,0x1651,0x1652,0x1653,0x1654,0x1655,0x1656, - 0x1657,0x1658,0x1659,0x165a,0x165b,0x165c,0x165d,0x165e,0x165f,0x1660, - 0x1661,0x1662,0x1663,0x1664,0x1665,0x1666,0x1667,0x1668,0x1669,0x166a, - 0x166b,0x166c,0x166d,0x166e,0x166f,0x1670,0x1671,0x1672,0x1673,0x1674, - 0x1675,0x1676,0x1681,0x1682,0x1683,0x1684,0x1685,0x1686,0x1687,0x1688, - 0x1689,0x168a,0x168b,0x168c,0x168d,0x168e,0x168f,0x1690,0x1691,0x1692, - 0x1693,0x1694,0x1695,0x1696,0x1697,0x1698,0x1699,0x169a,0x16a0,0x16a1, - 0x16a2,0x16a3,0x16a4,0x16a5,0x16a6,0x16a7,0x16a8,0x16a9,0x16aa,0x16ab, - 0x16ac,0x16ad,0x16ae,0x16af,0x16b0,0x16b1,0x16b2,0x16b3,0x16b4,0x16b5, - 0x16b6,0x16b7,0x16b8,0x16b9,0x16ba,0x16bb,0x16bc,0x16bd,0x16be,0x16bf, - 0x16c0,0x16c1,0x16c2,0x16c3,0x16c4,0x16c5,0x16c6,0x16c7,0x16c8,0x16c9, - 0x16ca,0x16cb,0x16cc,0x16cd,0x16ce,0x16cf,0x16d0,0x16d1,0x16d2,0x16d3, - 0x16d4,0x16d5,0x16d6,0x16d7,0x16d8,0x16d9,0x16da,0x16db,0x16dc,0x16dd, - 0x16de,0x16df,0x16e0,0x16e1,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7, - 0x16e8,0x16e9,0x16ea,0x16eb,0x16ec,0x16ed,0x16ee,0x16ef,0x16f0,0x1700, - 0x1701,0x1702,0x1703,0x1704,0x1705,0x1706,0x1707,0x1708,0x1709,0x170a, - 0x170b,0x170c,0x170e,0x170f,0x1710,0x1711,0x1720,0x1721,0x1722,0x1723, - 0x1724,0x1725,0x1726,0x1727,0x1728,0x1729,0x172a,0x172b,0x172c,0x172d, - 0x172e,0x172f,0x1730,0x1731,0x1735,0x1736,0x1740,0x1741,0x1742,0x1743, - 0x1744,0x1745,0x1746,0x1747,0x1748,0x1749,0x174a,0x174b,0x174c,0x174d, - 0x174e,0x174f,0x1750,0x1751,0x1760,0x1761,0x1762,0x1763,0x1764,0x1765, - 0x1766,0x1767,0x1768,0x1769,0x176a,0x176b,0x176c,0x176e,0x176f,0x1770, - 0x1780,0x1781,0x1782,0x1783,0x1784,0x1785,0x1786,0x1787,0x1788,0x1789, - 0x178a,0x178b,0x178c,0x178d,0x178e,0x178f,0x1790,0x1791,0x1792,0x1793, - 0x1794,0x1795,0x1796,0x1797,0x1798,0x1799,0x179a,0x179b,0x179c,0x179d, - 0x179e,0x179f,0x17a0,0x17a1,0x17a2,0x17a3,0x17a4,0x17a5,0x17a6,0x17a7, - 0x17a8,0x17a9,0x17aa,0x17ab,0x17ac,0x17ad,0x17ae,0x17af,0x17b0,0x17b1, - 0x17b2,0x17b3,0x17b4,0x17b5,0x17d4,0x17d5,0x17d6,0x17d7,0x17d8,0x17d9, - 0x17da,0x17dc,0x17e0,0x17e1,0x17e2,0x17e3,0x17e4,0x17e5,0x17e6,0x17e7, - 0x17e8,0x17e9,0x1810,0x1811,0x1812,0x1813,0x1814,0x1815,0x1816,0x1817, - 0x1818,0x1819,0x1820,0x1821,0x1822,0x1823,0x1824,0x1825,0x1826,0x1827, - 0x1828,0x1829,0x182a,0x182b,0x182c,0x182d,0x182e,0x182f,0x1830,0x1831, - 0x1832,0x1833,0x1834,0x1835,0x1836,0x1837,0x1838,0x1839,0x183a,0x183b, - 0x183c,0x183d,0x183e,0x183f,0x1840,0x1841,0x1842,0x1843,0x1844,0x1845, - 0x1846,0x1847,0x1848,0x1849,0x184a,0x184b,0x184c,0x184d,0x184e,0x184f, - 0x1850,0x1851,0x1852,0x1853,0x1854,0x1855,0x1856,0x1857,0x1858,0x1859, - 0x185a,0x185b,0x185c,0x185d,0x185e,0x185f,0x1860,0x1861,0x1862,0x1863, - 0x1864,0x1865,0x1866,0x1867,0x1868,0x1869,0x186a,0x186b,0x186c,0x186d, - 0x186e,0x186f,0x1870,0x1871,0x1872,0x1873,0x1874,0x1875,0x1876,0x1877, - 0x1880,0x1881,0x1882,0x1883,0x1884,0x1885,0x1886,0x1887,0x1888,0x1889, - 0x188a,0x188b,0x188c,0x188d,0x188e,0x188f,0x1890,0x1891,0x1892,0x1893, - 0x1894,0x1895,0x1896,0x1897,0x1898,0x1899,0x189a,0x189b,0x189c,0x189d, - 0x189e,0x189f,0x18a0,0x18a1,0x18a2,0x18a3,0x18a4,0x18a5,0x18a6,0x18a7, - 0x18a8,0x1900,0x1901,0x1902,0x1903,0x1904,0x1905,0x1906,0x1907,0x1908, - 0x1909,0x190a,0x190b,0x190c,0x190d,0x190e,0x190f,0x1910,0x1911,0x1912, - 0x1913,0x1914,0x1915,0x1916,0x1917,0x1918,0x1919,0x191a,0x191b,0x191c, - 0x1946,0x1947,0x1948,0x1949,0x194a,0x194b,0x194c,0x194d,0x194e,0x194f, - 0x1950,0x1951,0x1952,0x1953,0x1954,0x1955,0x1956,0x1957,0x1958,0x1959, - 0x195a,0x195b,0x195c,0x195d,0x195e,0x195f,0x1960,0x1961,0x1962,0x1963, - 0x1964,0x1965,0x1966,0x1967,0x1968,0x1969,0x196a,0x196b,0x196c,0x196d, - 0x1970,0x1971,0x1972,0x1973,0x1974,0x1980,0x1981,0x1982,0x1983,0x1984, - 0x1985,0x1986,0x1987,0x1988,0x1989,0x198a,0x198b,0x198c,0x198d,0x198e, - 0x198f,0x1990,0x1991,0x1992,0x1993,0x1994,0x1995,0x1996,0x1997,0x1998, - 0x1999,0x199a,0x199b,0x199c,0x199d,0x199e,0x199f,0x19a0,0x19a1,0x19a2, - 0x19a3,0x19a4,0x19a5,0x19a6,0x19a7,0x19a8,0x19a9,0x19c1,0x19c2,0x19c3, - 0x19c4,0x19c5,0x19c6,0x19c7,0x19d0,0x19d1,0x19d2,0x19d3,0x19d4,0x19d5, - 0x19d6,0x19d7,0x19d8,0x19d9,0x1a00,0x1a01,0x1a02,0x1a03,0x1a04,0x1a05, - 0x1a06,0x1a07,0x1a08,0x1a09,0x1a0a,0x1a0b,0x1a0c,0x1a0d,0x1a0e,0x1a0f, - 0x1a10,0x1a11,0x1a12,0x1a13,0x1a14,0x1a15,0x1a16,0x1a1e,0x1a1f,0x1b05, - 0x1b06,0x1b07,0x1b08,0x1b09,0x1b0a,0x1b0b,0x1b0c,0x1b0d,0x1b0e,0x1b0f, - 0x1b10,0x1b11,0x1b12,0x1b13,0x1b14,0x1b15,0x1b16,0x1b17,0x1b18,0x1b19, - 0x1b1a,0x1b1b,0x1b1c,0x1b1d,0x1b1e,0x1b1f,0x1b20,0x1b21,0x1b22,0x1b23, - 0x1b24,0x1b25,0x1b26,0x1b27,0x1b28,0x1b29,0x1b2a,0x1b2b,0x1b2c,0x1b2d, - 0x1b2e,0x1b2f,0x1b30,0x1b31,0x1b32,0x1b33,0x1b45,0x1b46,0x1b47,0x1b48, - 0x1b49,0x1b4a,0x1b4b,0x1b50,0x1b51,0x1b52,0x1b53,0x1b54,0x1b55,0x1b56, - 0x1b57,0x1b58,0x1b59,0x1b5a,0x1b5b,0x1b5c,0x1b5d,0x1b5e,0x1b5f,0x1b60, - 0x1b61,0x1b62,0x1b63,0x1b64,0x1b65,0x1b66,0x1b67,0x1b68,0x1b69,0x1b6a, - 0x1b74,0x1b75,0x1b76,0x1b77,0x1b78,0x1b79,0x1b7a,0x1b7b,0x1b7c,0x1d00, - 0x1d01,0x1d02,0x1d03,0x1d04,0x1d05,0x1d06,0x1d07,0x1d08,0x1d09,0x1d0a, - 0x1d0b,0x1d0c,0x1d0d,0x1d0e,0x1d0f,0x1d10,0x1d11,0x1d12,0x1d13,0x1d14, - 0x1d15,0x1d16,0x1d17,0x1d18,0x1d19,0x1d1a,0x1d1b,0x1d1c,0x1d1d,0x1d1e, - 0x1d1f,0x1d20,0x1d21,0x1d22,0x1d23,0x1d24,0x1d25,0x1d26,0x1d27,0x1d28, - 0x1d29,0x1d2a,0x1d2b,0x1d2c,0x1d2d,0x1d2e,0x1d2f,0x1d30,0x1d31,0x1d32, - 0x1d33,0x1d34,0x1d35,0x1d36,0x1d37,0x1d38,0x1d39,0x1d3a,0x1d3b,0x1d3c, - 0x1d3d,0x1d3e,0x1d3f,0x1d40,0x1d41,0x1d42,0x1d43,0x1d44,0x1d45,0x1d46, - 0x1d47,0x1d48,0x1d49,0x1d4a,0x1d4b,0x1d4c,0x1d4d,0x1d4e,0x1d4f,0x1d50, - 0x1d51,0x1d52,0x1d53,0x1d54,0x1d55,0x1d56,0x1d57,0x1d58,0x1d59,0x1d5a, - 0x1d5b,0x1d5c,0x1d5d,0x1d5e,0x1d5f,0x1d60,0x1d61,0x1d62,0x1d63,0x1d64, - 0x1d65,0x1d66,0x1d67,0x1d68,0x1d69,0x1d6a,0x1d6b,0x1d6c,0x1d6d,0x1d6e, - 0x1d6f,0x1d70,0x1d71,0x1d72,0x1d73,0x1d74,0x1d75,0x1d76,0x1d77,0x1d78, - 0x1d79,0x1d7a,0x1d7b,0x1d7c,0x1d7d,0x1d7e,0x1d7f,0x1d80,0x1d81,0x1d82, - 0x1d83,0x1d84,0x1d85,0x1d86,0x1d87,0x1d88,0x1d89,0x1d8a,0x1d8b,0x1d8c, - 0x1d8d,0x1d8e,0x1d8f,0x1d90,0x1d91,0x1d92,0x1d93,0x1d94,0x1d95,0x1d96, - 0x1d97,0x1d98,0x1d99,0x1d9a,0x1d9b,0x1d9c,0x1d9d,0x1d9e,0x1d9f,0x1da0, - 0x1da1,0x1da2,0x1da3,0x1da4,0x1da5,0x1da6,0x1da7,0x1da8,0x1da9,0x1daa, - 0x1dab,0x1dac,0x1dad,0x1dae,0x1daf,0x1db0,0x1db1,0x1db2,0x1db3,0x1db4, - 0x1db5,0x1db6,0x1db7,0x1db8,0x1db9,0x1dba,0x1dbb,0x1dbc,0x1dbd,0x1dbe, - 0x1dbf,0x1e00,0x1e01,0x1e02,0x1e03,0x1e04,0x1e05,0x1e06,0x1e07,0x1e08, - 0x1e09,0x1e0a,0x1e0b,0x1e0c,0x1e0d,0x1e0e,0x1e0f,0x1e10,0x1e11,0x1e12, - 0x1e13,0x1e14,0x1e15,0x1e16,0x1e17,0x1e18,0x1e19,0x1e1a,0x1e1b,0x1e1c, - 0x1e1d,0x1e1e,0x1e1f,0x1e20,0x1e21,0x1e22,0x1e23,0x1e24,0x1e25,0x1e26, - 0x1e27,0x1e28,0x1e29,0x1e2a,0x1e2b,0x1e2c,0x1e2d,0x1e2e,0x1e2f,0x1e30, - 0x1e31,0x1e32,0x1e33,0x1e34,0x1e35,0x1e36,0x1e37,0x1e38,0x1e39,0x1e3a, - 0x1e3b,0x1e3c,0x1e3d,0x1e3e,0x1e3f,0x1e40,0x1e41,0x1e42,0x1e43,0x1e44, - 0x1e45,0x1e46,0x1e47,0x1e48,0x1e49,0x1e4a,0x1e4b,0x1e4c,0x1e4d,0x1e4e, - 0x1e4f,0x1e50,0x1e51,0x1e52,0x1e53,0x1e54,0x1e55,0x1e56,0x1e57,0x1e58, - 0x1e59,0x1e5a,0x1e5b,0x1e5c,0x1e5d,0x1e5e,0x1e5f,0x1e60,0x1e61,0x1e62, - 0x1e63,0x1e64,0x1e65,0x1e66,0x1e67,0x1e68,0x1e69,0x1e6a,0x1e6b,0x1e6c, - 0x1e6d,0x1e6e,0x1e6f,0x1e70,0x1e71,0x1e72,0x1e73,0x1e74,0x1e75,0x1e76, - 0x1e77,0x1e78,0x1e79,0x1e7a,0x1e7b,0x1e7c,0x1e7d,0x1e7e,0x1e7f,0x1e80, - 0x1e81,0x1e82,0x1e83,0x1e84,0x1e85,0x1e86,0x1e87,0x1e88,0x1e89,0x1e8a, - 0x1e8b,0x1e8c,0x1e8d,0x1e8e,0x1e8f,0x1e90,0x1e91,0x1e92,0x1e93,0x1e94, - 0x1e95,0x1e96,0x1e97,0x1e98,0x1e99,0x1e9a,0x1e9b,0x1ea0,0x1ea1,0x1ea2, - 0x1ea3,0x1ea4,0x1ea5,0x1ea6,0x1ea7,0x1ea8,0x1ea9,0x1eaa,0x1eab,0x1eac, - 0x1ead,0x1eae,0x1eaf,0x1eb0,0x1eb1,0x1eb2,0x1eb3,0x1eb4,0x1eb5,0x1eb6, - 0x1eb7,0x1eb8,0x1eb9,0x1eba,0x1ebb,0x1ebc,0x1ebd,0x1ebe,0x1ebf,0x1ec0, - 0x1ec1,0x1ec2,0x1ec3,0x1ec4,0x1ec5,0x1ec6,0x1ec7,0x1ec8,0x1ec9,0x1eca, - 0x1ecb,0x1ecc,0x1ecd,0x1ece,0x1ecf,0x1ed0,0x1ed1,0x1ed2,0x1ed3,0x1ed4, - 0x1ed5,0x1ed6,0x1ed7,0x1ed8,0x1ed9,0x1eda,0x1edb,0x1edc,0x1edd,0x1ede, - 0x1edf,0x1ee0,0x1ee1,0x1ee2,0x1ee3,0x1ee4,0x1ee5,0x1ee6,0x1ee7,0x1ee8, - 0x1ee9,0x1eea,0x1eeb,0x1eec,0x1eed,0x1eee,0x1eef,0x1ef0,0x1ef1,0x1ef2, - 0x1ef3,0x1ef4,0x1ef5,0x1ef6,0x1ef7,0x1ef8,0x1ef9,0x1f00,0x1f01,0x1f02, - 0x1f03,0x1f04,0x1f05,0x1f06,0x1f07,0x1f08,0x1f09,0x1f0a,0x1f0b,0x1f0c, - 0x1f0d,0x1f0e,0x1f0f,0x1f10,0x1f11,0x1f12,0x1f13,0x1f14,0x1f15,0x1f18, - 0x1f19,0x1f1a,0x1f1b,0x1f1c,0x1f1d,0x1f20,0x1f21,0x1f22,0x1f23,0x1f24, - 0x1f25,0x1f26,0x1f27,0x1f28,0x1f29,0x1f2a,0x1f2b,0x1f2c,0x1f2d,0x1f2e, - 0x1f2f,0x1f30,0x1f31,0x1f32,0x1f33,0x1f34,0x1f35,0x1f36,0x1f37,0x1f38, - 0x1f39,0x1f3a,0x1f3b,0x1f3c,0x1f3d,0x1f3e,0x1f3f,0x1f40,0x1f41,0x1f42, - 0x1f43,0x1f44,0x1f45,0x1f48,0x1f49,0x1f4a,0x1f4b,0x1f4c,0x1f4d,0x1f50, - 0x1f51,0x1f52,0x1f53,0x1f54,0x1f55,0x1f56,0x1f57,0x1f59,0x1f5b,0x1f5d, - 0x1f5f,0x1f60,0x1f61,0x1f62,0x1f63,0x1f64,0x1f65,0x1f66,0x1f67,0x1f68, - 0x1f69,0x1f6a,0x1f6b,0x1f6c,0x1f6d,0x1f6e,0x1f6f,0x1f70,0x1f71,0x1f72, - 0x1f73,0x1f74,0x1f75,0x1f76,0x1f77,0x1f78,0x1f79,0x1f7a,0x1f7b,0x1f7c, - 0x1f7d,0x1f80,0x1f81,0x1f82,0x1f83,0x1f84,0x1f85,0x1f86,0x1f87,0x1f88, - 0x1f89,0x1f8a,0x1f8b,0x1f8c,0x1f8d,0x1f8e,0x1f8f,0x1f90,0x1f91,0x1f92, - 0x1f93,0x1f94,0x1f95,0x1f96,0x1f97,0x1f98,0x1f99,0x1f9a,0x1f9b,0x1f9c, - 0x1f9d,0x1f9e,0x1f9f,0x1fa0,0x1fa1,0x1fa2,0x1fa3,0x1fa4,0x1fa5,0x1fa6, - 0x1fa7,0x1fa8,0x1fa9,0x1faa,0x1fab,0x1fac,0x1fad,0x1fae,0x1faf,0x1fb0, - 0x1fb1,0x1fb2,0x1fb3,0x1fb4,0x1fb6,0x1fb7,0x1fb8,0x1fb9,0x1fba,0x1fbb, - 0x1fbc,0x1fbe,0x1fc2,0x1fc3,0x1fc4,0x1fc6,0x1fc7,0x1fc8,0x1fc9,0x1fca, - 0x1fcb,0x1fcc,0x1fd0,0x1fd1,0x1fd2,0x1fd3,0x1fd6,0x1fd7,0x1fd8,0x1fd9, - 0x1fda,0x1fdb,0x1fe0,0x1fe1,0x1fe2,0x1fe3,0x1fe4,0x1fe5,0x1fe6,0x1fe7, - 0x1fe8,0x1fe9,0x1fea,0x1feb,0x1fec,0x1ff2,0x1ff3,0x1ff4,0x1ff6,0x1ff7, - 0x1ff8,0x1ff9,0x1ffa,0x1ffb,0x1ffc,0x200e,0x2071,0x207f,0x2090,0x2091, - 0x2092,0x2093,0x2094,0x2102,0x2107,0x210a,0x210b,0x210c,0x210d,0x210e, - 0x210f,0x2110,0x2111,0x2112,0x2113,0x2115,0x2119,0x211a,0x211b,0x211c, - 0x211d,0x2124,0x2126,0x2128,0x212a,0x212b,0x212c,0x212d,0x212f,0x2130, - 0x2131,0x2132,0x2133,0x2134,0x2135,0x2136,0x2137,0x2138,0x2139,0x213c, - 0x213d,0x213e,0x213f,0x2145,0x2146,0x2147,0x2148,0x2149,0x214e,0x2160, - 0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,0x2167,0x2168,0x2169,0x216a, - 0x216b,0x216c,0x216d,0x216e,0x216f,0x2170,0x2171,0x2172,0x2173,0x2174, - 0x2175,0x2176,0x2177,0x2178,0x2179,0x217a,0x217b,0x217c,0x217d,0x217e, - 0x217f,0x2180,0x2181,0x2182,0x2183,0x2184,0x2336,0x2337,0x2338,0x2339, - 0x233a,0x233b,0x233c,0x233d,0x233e,0x233f,0x2340,0x2341,0x2342,0x2343, - 0x2344,0x2345,0x2346,0x2347,0x2348,0x2349,0x234a,0x234b,0x234c,0x234d, - 0x234e,0x234f,0x2350,0x2351,0x2352,0x2353,0x2354,0x2355,0x2356,0x2357, - 0x2358,0x2359,0x235a,0x235b,0x235c,0x235d,0x235e,0x235f,0x2360,0x2361, - 0x2362,0x2363,0x2364,0x2365,0x2366,0x2367,0x2368,0x2369,0x236a,0x236b, - 0x236c,0x236d,0x236e,0x236f,0x2370,0x2371,0x2372,0x2373,0x2374,0x2375, - 0x2376,0x2377,0x2378,0x2379,0x237a,0x2395,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,0x24b6,0x24b7,0x24b8,0x24b9,0x24ba,0x24bb,0x24bc,0x24bd, - 0x24be,0x24bf,0x24c0,0x24c1,0x24c2,0x24c3,0x24c4,0x24c5,0x24c6,0x24c7, - 0x24c8,0x24c9,0x24ca,0x24cb,0x24cc,0x24cd,0x24ce,0x24cf,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,0x26ac,0x2800,0x2801,0x2802,0x2803,0x2804, - 0x2805,0x2806,0x2807,0x2808,0x2809,0x280a,0x280b,0x280c,0x280d,0x280e, - 0x280f,0x2810,0x2811,0x2812,0x2813,0x2814,0x2815,0x2816,0x2817,0x2818, - 0x2819,0x281a,0x281b,0x281c,0x281d,0x281e,0x281f,0x2820,0x2821,0x2822, - 0x2823,0x2824,0x2825,0x2826,0x2827,0x2828,0x2829,0x282a,0x282b,0x282c, - 0x282d,0x282e,0x282f,0x2830,0x2831,0x2832,0x2833,0x2834,0x2835,0x2836, - 0x2837,0x2838,0x2839,0x283a,0x283b,0x283c,0x283d,0x283e,0x283f,0x2840, - 0x2841,0x2842,0x2843,0x2844,0x2845,0x2846,0x2847,0x2848,0x2849,0x284a, - 0x284b,0x284c,0x284d,0x284e,0x284f,0x2850,0x2851,0x2852,0x2853,0x2854, - 0x2855,0x2856,0x2857,0x2858,0x2859,0x285a,0x285b,0x285c,0x285d,0x285e, - 0x285f,0x2860,0x2861,0x2862,0x2863,0x2864,0x2865,0x2866,0x2867,0x2868, - 0x2869,0x286a,0x286b,0x286c,0x286d,0x286e,0x286f,0x2870,0x2871,0x2872, - 0x2873,0x2874,0x2875,0x2876,0x2877,0x2878,0x2879,0x287a,0x287b,0x287c, - 0x287d,0x287e,0x287f,0x2880,0x2881,0x2882,0x2883,0x2884,0x2885,0x2886, - 0x2887,0x2888,0x2889,0x288a,0x288b,0x288c,0x288d,0x288e,0x288f,0x2890, - 0x2891,0x2892,0x2893,0x2894,0x2895,0x2896,0x2897,0x2898,0x2899,0x289a, - 0x289b,0x289c,0x289d,0x289e,0x289f,0x28a0,0x28a1,0x28a2,0x28a3,0x28a4, - 0x28a5,0x28a6,0x28a7,0x28a8,0x28a9,0x28aa,0x28ab,0x28ac,0x28ad,0x28ae, - 0x28af,0x28b0,0x28b1,0x28b2,0x28b3,0x28b4,0x28b5,0x28b6,0x28b7,0x28b8, - 0x28b9,0x28ba,0x28bb,0x28bc,0x28bd,0x28be,0x28bf,0x28c0,0x28c1,0x28c2, - 0x28c3,0x28c4,0x28c5,0x28c6,0x28c7,0x28c8,0x28c9,0x28ca,0x28cb,0x28cc, - 0x28cd,0x28ce,0x28cf,0x28d0,0x28d1,0x28d2,0x28d3,0x28d4,0x28d5,0x28d6, - 0x28d7,0x28d8,0x28d9,0x28da,0x28db,0x28dc,0x28dd,0x28de,0x28df,0x28e0, - 0x28e1,0x28e2,0x28e3,0x28e4,0x28e5,0x28e6,0x28e7,0x28e8,0x28e9,0x28ea, - 0x28eb,0x28ec,0x28ed,0x28ee,0x28ef,0x28f0,0x28f1,0x28f2,0x28f3,0x28f4, - 0x28f5,0x28f6,0x28f7,0x28f8,0x28f9,0x28fa,0x28fb,0x28fc,0x28fd,0x28fe, - 0x28ff,0x2c00,0x2c01,0x2c02,0x2c03,0x2c04,0x2c05,0x2c06,0x2c07,0x2c08, - 0x2c09,0x2c0a,0x2c0b,0x2c0c,0x2c0d,0x2c0e,0x2c0f,0x2c10,0x2c11,0x2c12, - 0x2c13,0x2c14,0x2c15,0x2c16,0x2c17,0x2c18,0x2c19,0x2c1a,0x2c1b,0x2c1c, - 0x2c1d,0x2c1e,0x2c1f,0x2c20,0x2c21,0x2c22,0x2c23,0x2c24,0x2c25,0x2c26, - 0x2c27,0x2c28,0x2c29,0x2c2a,0x2c2b,0x2c2c,0x2c2d,0x2c2e,0x2c30,0x2c31, - 0x2c32,0x2c33,0x2c34,0x2c35,0x2c36,0x2c37,0x2c38,0x2c39,0x2c3a,0x2c3b, - 0x2c3c,0x2c3d,0x2c3e,0x2c3f,0x2c40,0x2c41,0x2c42,0x2c43,0x2c44,0x2c45, - 0x2c46,0x2c47,0x2c48,0x2c49,0x2c4a,0x2c4b,0x2c4c,0x2c4d,0x2c4e,0x2c4f, - 0x2c50,0x2c51,0x2c52,0x2c53,0x2c54,0x2c55,0x2c56,0x2c57,0x2c58,0x2c59, - 0x2c5a,0x2c5b,0x2c5c,0x2c5d,0x2c5e,0x2c60,0x2c61,0x2c62,0x2c63,0x2c64, - 0x2c65,0x2c66,0x2c67,0x2c68,0x2c69,0x2c6a,0x2c6b,0x2c6c,0x2c74,0x2c75, - 0x2c76,0x2c77,0x2c80,0x2c81,0x2c82,0x2c83,0x2c84,0x2c85,0x2c86,0x2c87, - 0x2c88,0x2c89,0x2c8a,0x2c8b,0x2c8c,0x2c8d,0x2c8e,0x2c8f,0x2c90,0x2c91, - 0x2c92,0x2c93,0x2c94,0x2c95,0x2c96,0x2c97,0x2c98,0x2c99,0x2c9a,0x2c9b, - 0x2c9c,0x2c9d,0x2c9e,0x2c9f,0x2ca0,0x2ca1,0x2ca2,0x2ca3,0x2ca4,0x2ca5, - 0x2ca6,0x2ca7,0x2ca8,0x2ca9,0x2caa,0x2cab,0x2cac,0x2cad,0x2cae,0x2caf, - 0x2cb0,0x2cb1,0x2cb2,0x2cb3,0x2cb4,0x2cb5,0x2cb6,0x2cb7,0x2cb8,0x2cb9, - 0x2cba,0x2cbb,0x2cbc,0x2cbd,0x2cbe,0x2cbf,0x2cc0,0x2cc1,0x2cc2,0x2cc3, - 0x2cc4,0x2cc5,0x2cc6,0x2cc7,0x2cc8,0x2cc9,0x2cca,0x2ccb,0x2ccc,0x2ccd, - 0x2cce,0x2ccf,0x2cd0,0x2cd1,0x2cd2,0x2cd3,0x2cd4,0x2cd5,0x2cd6,0x2cd7, - 0x2cd8,0x2cd9,0x2cda,0x2cdb,0x2cdc,0x2cdd,0x2cde,0x2cdf,0x2ce0,0x2ce1, - 0x2ce2,0x2ce3,0x2ce4,0x2d00,0x2d01,0x2d02,0x2d03,0x2d04,0x2d05,0x2d06, - 0x2d07,0x2d08,0x2d09,0x2d0a,0x2d0b,0x2d0c,0x2d0d,0x2d0e,0x2d0f,0x2d10, - 0x2d11,0x2d12,0x2d13,0x2d14,0x2d15,0x2d16,0x2d17,0x2d18,0x2d19,0x2d1a, - 0x2d1b,0x2d1c,0x2d1d,0x2d1e,0x2d1f,0x2d20,0x2d21,0x2d22,0x2d23,0x2d24, - 0x2d25,0x2d30,0x2d31,0x2d32,0x2d33,0x2d34,0x2d35,0x2d36,0x2d37,0x2d38, - 0x2d39,0x2d3a,0x2d3b,0x2d3c,0x2d3d,0x2d3e,0x2d3f,0x2d40,0x2d41,0x2d42, - 0x2d43,0x2d44,0x2d45,0x2d46,0x2d47,0x2d48,0x2d49,0x2d4a,0x2d4b,0x2d4c, - 0x2d4d,0x2d4e,0x2d4f,0x2d50,0x2d51,0x2d52,0x2d53,0x2d54,0x2d55,0x2d56, - 0x2d57,0x2d58,0x2d59,0x2d5a,0x2d5b,0x2d5c,0x2d5d,0x2d5e,0x2d5f,0x2d60, - 0x2d61,0x2d62,0x2d63,0x2d64,0x2d65,0x2d6f,0x2d80,0x2d81,0x2d82,0x2d83, - 0x2d84,0x2d85,0x2d86,0x2d87,0x2d88,0x2d89,0x2d8a,0x2d8b,0x2d8c,0x2d8d, - 0x2d8e,0x2d8f,0x2d90,0x2d91,0x2d92,0x2d93,0x2d94,0x2d95,0x2d96,0x2da0, - 0x2da1,0x2da2,0x2da3,0x2da4,0x2da5,0x2da6,0x2da8,0x2da9,0x2daa,0x2dab, - 0x2dac,0x2dad,0x2dae,0x2db0,0x2db1,0x2db2,0x2db3,0x2db4,0x2db5,0x2db6, - 0x2db8,0x2db9,0x2dba,0x2dbb,0x2dbc,0x2dbd,0x2dbe,0x2dc0,0x2dc1,0x2dc2, - 0x2dc3,0x2dc4,0x2dc5,0x2dc6,0x2dc8,0x2dc9,0x2dca,0x2dcb,0x2dcc,0x2dcd, - 0x2dce,0x2dd0,0x2dd1,0x2dd2,0x2dd3,0x2dd4,0x2dd5,0x2dd6,0x2dd8,0x2dd9, - 0x2dda,0x2ddb,0x2ddc,0x2ddd,0x2dde,0x3005,0x3006,0x3007,0x3021,0x3022, - 0x3023,0x3024,0x3025,0x3026,0x3027,0x3028,0x3029,0x3031,0x3032,0x3033, - 0x3034,0x3035,0x3038,0x3039,0x303a,0x303b,0x303c,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, - 0x3094,0x3095,0x3096,0x309d,0x309e,0x309f,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,0x30f7,0x30f8,0x30f9,0x30fa,0x30fc,0x30fd,0x30fe,0x30ff, - 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,0x312a,0x312b,0x312c, - 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,0x3190,0x3191,0x3192,0x3193,0x3194,0x3195, - 0x3196,0x3197,0x3198,0x3199,0x319a,0x319b,0x319c,0x319d,0x319e,0x319f, - 0x31a0,0x31a1,0x31a2,0x31a3,0x31a4,0x31a5,0x31a6,0x31a7,0x31a8,0x31a9, - 0x31aa,0x31ab,0x31ac,0x31ad,0x31ae,0x31af,0x31b0,0x31b1,0x31b2,0x31b3, - 0x31b4,0x31b5,0x31b6,0x31b7,0x31f0,0x31f1,0x31f2,0x31f3,0x31f4,0x31f5, - 0x31f6,0x31f7,0x31f8,0x31f9,0x31fa,0x31fb,0x31fc,0x31fd,0x31fe,0x31ff, - 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,0x321c,0x3220, - 0x3221,0x3222,0x3223,0x3224,0x3225,0x3226,0x3227,0x3228,0x3229,0x322a, - 0x322b,0x322c,0x322d,0x322e,0x322f,0x3230,0x3231,0x3232,0x3233,0x3234, - 0x3235,0x3236,0x3237,0x3238,0x3239,0x323a,0x323b,0x323c,0x323d,0x323e, - 0x323f,0x3240,0x3241,0x3242,0x3243,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,0x327f,0x3280,0x3281,0x3282,0x3283,0x3284,0x3285, - 0x3286,0x3287,0x3288,0x3289,0x328a,0x328b,0x328c,0x328d,0x328e,0x328f, - 0x3290,0x3291,0x3292,0x3293,0x3294,0x3295,0x3296,0x3297,0x3298,0x3299, - 0x329a,0x329b,0x329c,0x329d,0x329e,0x329f,0x32a0,0x32a1,0x32a2,0x32a3, - 0x32a4,0x32a5,0x32a6,0x32a7,0x32a8,0x32a9,0x32aa,0x32ab,0x32ac,0x32ad, - 0x32ae,0x32af,0x32b0,0x32c0,0x32c1,0x32c2,0x32c3,0x32c4,0x32c5,0x32c6, - 0x32c7,0x32c8,0x32c9,0x32ca,0x32cb,0x32d0,0x32d1,0x32d2,0x32d3,0x32d4, - 0x32d5,0x32d6,0x32d7,0x32d8,0x32d9,0x32da,0x32db,0x32dc,0x32dd,0x32de, - 0x32df,0x32e0,0x32e1,0x32e2,0x32e3,0x32e4,0x32e5,0x32e6,0x32e7,0x32e8, - 0x32e9,0x32ea,0x32eb,0x32ec,0x32ed,0x32ee,0x32ef,0x32f0,0x32f1,0x32f2, - 0x32f3,0x32f4,0x32f5,0x32f6,0x32f7,0x32f8,0x32f9,0x32fa,0x32fb,0x32fc, - 0x32fd,0x32fe,0x3300,0x3301,0x3302,0x3303,0x3304,0x3305,0x3306,0x3307, - 0x3308,0x3309,0x330a,0x330b,0x330c,0x330d,0x330e,0x330f,0x3310,0x3311, - 0x3312,0x3313,0x3314,0x3315,0x3316,0x3317,0x3318,0x3319,0x331a,0x331b, - 0x331c,0x331d,0x331e,0x331f,0x3320,0x3321,0x3322,0x3323,0x3324,0x3325, - 0x3326,0x3327,0x3328,0x3329,0x332a,0x332b,0x332c,0x332d,0x332e,0x332f, - 0x3330,0x3331,0x3332,0x3333,0x3334,0x3335,0x3336,0x3337,0x3338,0x3339, - 0x333a,0x333b,0x333c,0x333d,0x333e,0x333f,0x3340,0x3341,0x3342,0x3343, - 0x3344,0x3345,0x3346,0x3347,0x3348,0x3349,0x334a,0x334b,0x334c,0x334d, - 0x334e,0x334f,0x3350,0x3351,0x3352,0x3353,0x3354,0x3355,0x3356,0x3357, - 0x3358,0x3359,0x335a,0x335b,0x335c,0x335d,0x335e,0x335f,0x3360,0x3361, - 0x3362,0x3363,0x3364,0x3365,0x3366,0x3367,0x3368,0x3369,0x336a,0x336b, - 0x336c,0x336d,0x336e,0x336f,0x3370,0x3371,0x3372,0x3373,0x3374,0x3375, - 0x3376,0x337b,0x337c,0x337d,0x337e,0x337f,0x3380,0x3381,0x3382,0x3383, - 0x3384,0x3385,0x3386,0x3387,0x3388,0x3389,0x338a,0x338b,0x338c,0x338d, - 0x338e,0x338f,0x3390,0x3391,0x3392,0x3393,0x3394,0x3395,0x3396,0x3397, - 0x3398,0x3399,0x339a,0x339b,0x339c,0x339d,0x339e,0x339f,0x33a0,0x33a1, - 0x33a2,0x33a3,0x33a4,0x33a5,0x33a6,0x33a7,0x33a8,0x33a9,0x33aa,0x33ab, - 0x33ac,0x33ad,0x33ae,0x33af,0x33b0,0x33b1,0x33b2,0x33b3,0x33b4,0x33b5, - 0x33b6,0x33b7,0x33b8,0x33b9,0x33ba,0x33bb,0x33bc,0x33bd,0x33be,0x33bf, - 0x33c0,0x33c1,0x33c2,0x33c3,0x33c4,0x33c5,0x33c6,0x33c7,0x33c8,0x33c9, - 0x33ca,0x33cb,0x33cc,0x33cd,0x33ce,0x33cf,0x33d0,0x33d1,0x33d2,0x33d3, - 0x33d4,0x33d5,0x33d6,0x33d7,0x33d8,0x33d9,0x33da,0x33db,0x33dc,0x33dd, - 0x33e0,0x33e1,0x33e2,0x33e3,0x33e4,0x33e5,0x33e6,0x33e7,0x33e8,0x33e9, - 0x33ea,0x33eb,0x33ec,0x33ed,0x33ee,0x33ef,0x33f0,0x33f1,0x33f2,0x33f3, - 0x33f4,0x33f5,0x33f6,0x33f7,0x33f8,0x33f9,0x33fa,0x33fb,0x33fc,0x33fd, - 0x33fe,0x3400,0x4db5,0x4e00,0x9fbb,0xa000,0xa001,0xa002,0xa003,0xa004, - 0xa005,0xa006,0xa007,0xa008,0xa009,0xa00a,0xa00b,0xa00c,0xa00d,0xa00e, - 0xa00f,0xa010,0xa011,0xa012,0xa013,0xa014,0xa015,0xa016,0xa017,0xa018, - 0xa019,0xa01a,0xa01b,0xa01c,0xa01d,0xa01e,0xa01f,0xa020,0xa021,0xa022, - 0xa023,0xa024,0xa025,0xa026,0xa027,0xa028,0xa029,0xa02a,0xa02b,0xa02c, - 0xa02d,0xa02e,0xa02f,0xa030,0xa031,0xa032,0xa033,0xa034,0xa035,0xa036, - 0xa037,0xa038,0xa039,0xa03a,0xa03b,0xa03c,0xa03d,0xa03e,0xa03f,0xa040, - 0xa041,0xa042,0xa043,0xa044,0xa045,0xa046,0xa047,0xa048,0xa049,0xa04a, - 0xa04b,0xa04c,0xa04d,0xa04e,0xa04f,0xa050,0xa051,0xa052,0xa053,0xa054, - 0xa055,0xa056,0xa057,0xa058,0xa059,0xa05a,0xa05b,0xa05c,0xa05d,0xa05e, - 0xa05f,0xa060,0xa061,0xa062,0xa063,0xa064,0xa065,0xa066,0xa067,0xa068, - 0xa069,0xa06a,0xa06b,0xa06c,0xa06d,0xa06e,0xa06f,0xa070,0xa071,0xa072, - 0xa073,0xa074,0xa075,0xa076,0xa077,0xa078,0xa079,0xa07a,0xa07b,0xa07c, - 0xa07d,0xa07e,0xa07f,0xa080,0xa081,0xa082,0xa083,0xa084,0xa085,0xa086, - 0xa087,0xa088,0xa089,0xa08a,0xa08b,0xa08c,0xa08d,0xa08e,0xa08f,0xa090, - 0xa091,0xa092,0xa093,0xa094,0xa095,0xa096,0xa097,0xa098,0xa099,0xa09a, - 0xa09b,0xa09c,0xa09d,0xa09e,0xa09f,0xa0a0,0xa0a1,0xa0a2,0xa0a3,0xa0a4, - 0xa0a5,0xa0a6,0xa0a7,0xa0a8,0xa0a9,0xa0aa,0xa0ab,0xa0ac,0xa0ad,0xa0ae, - 0xa0af,0xa0b0,0xa0b1,0xa0b2,0xa0b3,0xa0b4,0xa0b5,0xa0b6,0xa0b7,0xa0b8, - 0xa0b9,0xa0ba,0xa0bb,0xa0bc,0xa0bd,0xa0be,0xa0bf,0xa0c0,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,0xa0dc,0xa0dd,0xa0de,0xa0df,0xa0e0, - 0xa0e1,0xa0e2,0xa0e3,0xa0e4,0xa0e5,0xa0e6,0xa0e7,0xa0e8,0xa0e9,0xa0ea, - 0xa0eb,0xa0ec,0xa0ed,0xa0ee,0xa0ef,0xa0f0,0xa0f1,0xa0f2,0xa0f3,0xa0f4, - 0xa0f5,0xa0f6,0xa0f7,0xa0f8,0xa0f9,0xa0fa,0xa0fb,0xa0fc,0xa0fd,0xa0fe, - 0xa0ff,0xa100,0xa101,0xa102,0xa103,0xa104,0xa105,0xa106,0xa107,0xa108, - 0xa109,0xa10a,0xa10b,0xa10c,0xa10d,0xa10e,0xa10f,0xa110,0xa111,0xa112, - 0xa113,0xa114,0xa115,0xa116,0xa117,0xa118,0xa119,0xa11a,0xa11b,0xa11c, - 0xa11d,0xa11e,0xa11f,0xa120,0xa121,0xa122,0xa123,0xa124,0xa125,0xa126, - 0xa127,0xa128,0xa129,0xa12a,0xa12b,0xa12c,0xa12d,0xa12e,0xa12f,0xa130, - 0xa131,0xa132,0xa133,0xa134,0xa135,0xa136,0xa137,0xa138,0xa139,0xa13a, - 0xa13b,0xa13c,0xa13d,0xa13e,0xa13f,0xa140,0xa141,0xa142,0xa143,0xa144, - 0xa145,0xa146,0xa147,0xa148,0xa149,0xa14a,0xa14b,0xa14c,0xa14d,0xa14e, - 0xa14f,0xa150,0xa151,0xa152,0xa153,0xa154,0xa155,0xa156,0xa157,0xa158, - 0xa159,0xa15a,0xa15b,0xa15c,0xa15d,0xa15e,0xa15f,0xa160,0xa161,0xa162, - 0xa163,0xa164,0xa165,0xa166,0xa167,0xa168,0xa169,0xa16a,0xa16b,0xa16c, - 0xa16d,0xa16e,0xa16f,0xa170,0xa171,0xa172,0xa173,0xa174,0xa175,0xa176, - 0xa177,0xa178,0xa179,0xa17a,0xa17b,0xa17c,0xa17d,0xa17e,0xa17f,0xa180, - 0xa181,0xa182,0xa183,0xa184,0xa185,0xa186,0xa187,0xa188,0xa189,0xa18a, - 0xa18b,0xa18c,0xa18d,0xa18e,0xa18f,0xa190,0xa191,0xa192,0xa193,0xa194, - 0xa195,0xa196,0xa197,0xa198,0xa199,0xa19a,0xa19b,0xa19c,0xa19d,0xa19e, - 0xa19f,0xa1a0,0xa1a1,0xa1a2,0xa1a3,0xa1a4,0xa1a5,0xa1a6,0xa1a7,0xa1a8, - 0xa1a9,0xa1aa,0xa1ab,0xa1ac,0xa1ad,0xa1ae,0xa1af,0xa1b0,0xa1b1,0xa1b2, - 0xa1b3,0xa1b4,0xa1b5,0xa1b6,0xa1b7,0xa1b8,0xa1b9,0xa1ba,0xa1bb,0xa1bc, - 0xa1bd,0xa1be,0xa1bf,0xa1c0,0xa1c1,0xa1c2,0xa1c3,0xa1c4,0xa1c5,0xa1c6, - 0xa1c7,0xa1c8,0xa1c9,0xa1ca,0xa1cb,0xa1cc,0xa1cd,0xa1ce,0xa1cf,0xa1d0, - 0xa1d1,0xa1d2,0xa1d3,0xa1d4,0xa1d5,0xa1d6,0xa1d7,0xa1d8,0xa1d9,0xa1da, - 0xa1db,0xa1dc,0xa1dd,0xa1de,0xa1df,0xa1e0,0xa1e1,0xa1e2,0xa1e3,0xa1e4, - 0xa1e5,0xa1e6,0xa1e7,0xa1e8,0xa1e9,0xa1ea,0xa1eb,0xa1ec,0xa1ed,0xa1ee, - 0xa1ef,0xa1f0,0xa1f1,0xa1f2,0xa1f3,0xa1f4,0xa1f5,0xa1f6,0xa1f7,0xa1f8, - 0xa1f9,0xa1fa,0xa1fb,0xa1fc,0xa1fd,0xa1fe,0xa1ff,0xa200,0xa201,0xa202, - 0xa203,0xa204,0xa205,0xa206,0xa207,0xa208,0xa209,0xa20a,0xa20b,0xa20c, - 0xa20d,0xa20e,0xa20f,0xa210,0xa211,0xa212,0xa213,0xa214,0xa215,0xa216, - 0xa217,0xa218,0xa219,0xa21a,0xa21b,0xa21c,0xa21d,0xa21e,0xa21f,0xa220, - 0xa221,0xa222,0xa223,0xa224,0xa225,0xa226,0xa227,0xa228,0xa229,0xa22a, - 0xa22b,0xa22c,0xa22d,0xa22e,0xa22f,0xa230,0xa231,0xa232,0xa233,0xa234, - 0xa235,0xa236,0xa237,0xa238,0xa239,0xa23a,0xa23b,0xa23c,0xa23d,0xa23e, - 0xa23f,0xa240,0xa241,0xa242,0xa243,0xa244,0xa245,0xa246,0xa247,0xa248, - 0xa249,0xa24a,0xa24b,0xa24c,0xa24d,0xa24e,0xa24f,0xa250,0xa251,0xa252, - 0xa253,0xa254,0xa255,0xa256,0xa257,0xa258,0xa259,0xa25a,0xa25b,0xa25c, - 0xa25d,0xa25e,0xa25f,0xa260,0xa261,0xa262,0xa263,0xa264,0xa265,0xa266, - 0xa267,0xa268,0xa269,0xa26a,0xa26b,0xa26c,0xa26d,0xa26e,0xa26f,0xa270, - 0xa271,0xa272,0xa273,0xa274,0xa275,0xa276,0xa277,0xa278,0xa279,0xa27a, - 0xa27b,0xa27c,0xa27d,0xa27e,0xa27f,0xa280,0xa281,0xa282,0xa283,0xa284, - 0xa285,0xa286,0xa287,0xa288,0xa289,0xa28a,0xa28b,0xa28c,0xa28d,0xa28e, - 0xa28f,0xa290,0xa291,0xa292,0xa293,0xa294,0xa295,0xa296,0xa297,0xa298, - 0xa299,0xa29a,0xa29b,0xa29c,0xa29d,0xa29e,0xa29f,0xa2a0,0xa2a1,0xa2a2, - 0xa2a3,0xa2a4,0xa2a5,0xa2a6,0xa2a7,0xa2a8,0xa2a9,0xa2aa,0xa2ab,0xa2ac, - 0xa2ad,0xa2ae,0xa2af,0xa2b0,0xa2b1,0xa2b2,0xa2b3,0xa2b4,0xa2b5,0xa2b6, - 0xa2b7,0xa2b8,0xa2b9,0xa2ba,0xa2bb,0xa2bc,0xa2bd,0xa2be,0xa2bf,0xa2c0, - 0xa2c1,0xa2c2,0xa2c3,0xa2c4,0xa2c5,0xa2c6,0xa2c7,0xa2c8,0xa2c9,0xa2ca, - 0xa2cb,0xa2cc,0xa2cd,0xa2ce,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, - 0xa2e9,0xa2ea,0xa2eb,0xa2ec,0xa2ed,0xa2ee,0xa2ef,0xa2f0,0xa2f1,0xa2f2, - 0xa2f3,0xa2f4,0xa2f5,0xa2f6,0xa2f7,0xa2f8,0xa2f9,0xa2fa,0xa2fb,0xa2fc, - 0xa2fd,0xa2fe,0xa2ff,0xa300,0xa301,0xa302,0xa303,0xa304,0xa305,0xa306, - 0xa307,0xa308,0xa309,0xa30a,0xa30b,0xa30c,0xa30d,0xa30e,0xa30f,0xa310, - 0xa311,0xa312,0xa313,0xa314,0xa315,0xa316,0xa317,0xa318,0xa319,0xa31a, - 0xa31b,0xa31c,0xa31d,0xa31e,0xa31f,0xa320,0xa321,0xa322,0xa323,0xa324, - 0xa325,0xa326,0xa327,0xa328,0xa329,0xa32a,0xa32b,0xa32c,0xa32d,0xa32e, - 0xa32f,0xa330,0xa331,0xa332,0xa333,0xa334,0xa335,0xa336,0xa337,0xa338, - 0xa339,0xa33a,0xa33b,0xa33c,0xa33d,0xa33e,0xa33f,0xa340,0xa341,0xa342, - 0xa343,0xa344,0xa345,0xa346,0xa347,0xa348,0xa349,0xa34a,0xa34b,0xa34c, - 0xa34d,0xa34e,0xa34f,0xa350,0xa351,0xa352,0xa353,0xa354,0xa355,0xa356, - 0xa357,0xa358,0xa359,0xa35a,0xa35b,0xa35c,0xa35d,0xa35e,0xa35f,0xa360, - 0xa361,0xa362,0xa363,0xa364,0xa365,0xa366,0xa367,0xa368,0xa369,0xa36a, - 0xa36b,0xa36c,0xa36d,0xa36e,0xa36f,0xa370,0xa371,0xa372,0xa373,0xa374, - 0xa375,0xa376,0xa377,0xa378,0xa379,0xa37a,0xa37b,0xa37c,0xa37d,0xa37e, - 0xa37f,0xa380,0xa381,0xa382,0xa383,0xa384,0xa385,0xa386,0xa387,0xa388, - 0xa389,0xa38a,0xa38b,0xa38c,0xa38d,0xa38e,0xa38f,0xa390,0xa391,0xa392, - 0xa393,0xa394,0xa395,0xa396,0xa397,0xa398,0xa399,0xa39a,0xa39b,0xa39c, - 0xa39d,0xa39e,0xa39f,0xa3a0,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,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,0xa3fe,0xa3ff,0xa400, - 0xa401,0xa402,0xa403,0xa404,0xa405,0xa406,0xa407,0xa408,0xa409,0xa40a, - 0xa40b,0xa40c,0xa40d,0xa40e,0xa40f,0xa410,0xa411,0xa412,0xa413,0xa414, - 0xa415,0xa416,0xa417,0xa418,0xa419,0xa41a,0xa41b,0xa41c,0xa41d,0xa41e, - 0xa41f,0xa420,0xa421,0xa422,0xa423,0xa424,0xa425,0xa426,0xa427,0xa428, - 0xa429,0xa42a,0xa42b,0xa42c,0xa42d,0xa42e,0xa42f,0xa430,0xa431,0xa432, - 0xa433,0xa434,0xa435,0xa436,0xa437,0xa438,0xa439,0xa43a,0xa43b,0xa43c, - 0xa43d,0xa43e,0xa43f,0xa440,0xa441,0xa442,0xa443,0xa444,0xa445,0xa446, - 0xa447,0xa448,0xa449,0xa44a,0xa44b,0xa44c,0xa44d,0xa44e,0xa44f,0xa450, - 0xa451,0xa452,0xa453,0xa454,0xa455,0xa456,0xa457,0xa458,0xa459,0xa45a, - 0xa45b,0xa45c,0xa45d,0xa45e,0xa45f,0xa460,0xa461,0xa462,0xa463,0xa464, - 0xa465,0xa466,0xa467,0xa468,0xa469,0xa46a,0xa46b,0xa46c,0xa46d,0xa46e, - 0xa46f,0xa470,0xa471,0xa472,0xa473,0xa474,0xa475,0xa476,0xa477,0xa478, - 0xa479,0xa47a,0xa47b,0xa47c,0xa47d,0xa47e,0xa47f,0xa480,0xa481,0xa482, - 0xa483,0xa484,0xa485,0xa486,0xa487,0xa488,0xa489,0xa48a,0xa48b,0xa48c, - 0xa800,0xa801,0xa803,0xa804,0xa805,0xa807,0xa808,0xa809,0xa80a,0xa80c, - 0xa80d,0xa80e,0xa80f,0xa810,0xa811,0xa812,0xa813,0xa814,0xa815,0xa816, - 0xa817,0xa818,0xa819,0xa81a,0xa81b,0xa81c,0xa81d,0xa81e,0xa81f,0xa820, - 0xa821,0xa822,0xa840,0xa841,0xa842,0xa843,0xa844,0xa845,0xa846,0xa847, - 0xa848,0xa849,0xa84a,0xa84b,0xa84c,0xa84d,0xa84e,0xa84f,0xa850,0xa851, - 0xa852,0xa853,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,0xac00,0xd7a3,0xe000,0xf8ff,0xf900,0xf901, - 0xf902,0xf903,0xf904,0xf905,0xf906,0xf907,0xf908,0xf909,0xf90a,0xf90b, - 0xf90c,0xf90d,0xf90e,0xf90f,0xf910,0xf911,0xf912,0xf913,0xf914,0xf915, - 0xf916,0xf917,0xf918,0xf919,0xf91a,0xf91b,0xf91c,0xf91d,0xf91e,0xf91f, - 0xf920,0xf921,0xf922,0xf923,0xf924,0xf925,0xf926,0xf927,0xf928,0xf929, - 0xf92a,0xf92b,0xf92c,0xf92d,0xf92e,0xf92f,0xf930,0xf931,0xf932,0xf933, - 0xf934,0xf935,0xf936,0xf937,0xf938,0xf939,0xf93a,0xf93b,0xf93c,0xf93d, - 0xf93e,0xf93f,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,0xf97f,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,0xf9a1, - 0xf9a2,0xf9a3,0xf9a4,0xf9a5,0xf9a6,0xf9a7,0xf9a8,0xf9a9,0xf9aa,0xf9ab, - 0xf9ac,0xf9ad,0xf9ae,0xf9af,0xf9b0,0xf9b1,0xf9b2,0xf9b3,0xf9b4,0xf9b5, - 0xf9b6,0xf9b7,0xf9b8,0xf9b9,0xf9ba,0xf9bb,0xf9bc,0xf9bd,0xf9be,0xf9bf, - 0xf9c0,0xf9c1,0xf9c2,0xf9c3,0xf9c4,0xf9c5,0xf9c6,0xf9c7,0xf9c8,0xf9c9, - 0xf9ca,0xf9cb,0xf9cc,0xf9cd,0xf9ce,0xf9cf,0xf9d0,0xf9d1,0xf9d2,0xf9d3, - 0xf9d4,0xf9d5,0xf9d6,0xf9d7,0xf9d8,0xf9d9,0xf9da,0xf9db,0xf9dc,0xf9dd, - 0xf9de,0xf9df,0xf9e0,0xf9e1,0xf9e2,0xf9e3,0xf9e4,0xf9e5,0xf9e6,0xf9e7, - 0xf9e8,0xf9e9,0xf9ea,0xf9eb,0xf9ec,0xf9ed,0xf9ee,0xf9ef,0xf9f0,0xf9f1, - 0xf9f2,0xf9f3,0xf9f4,0xf9f5,0xf9f6,0xf9f7,0xf9f8,0xf9f9,0xf9fa,0xf9fb, - 0xf9fc,0xf9fd,0xf9fe,0xf9ff,0xfa00,0xfa01,0xfa02,0xfa03,0xfa04,0xfa05, - 0xfa06,0xfa07,0xfa08,0xfa09,0xfa0a,0xfa0b,0xfa0c,0xfa0d,0xfa0e,0xfa0f, - 0xfa10,0xfa11,0xfa12,0xfa13,0xfa14,0xfa15,0xfa16,0xfa17,0xfa18,0xfa19, - 0xfa1a,0xfa1b,0xfa1c,0xfa1d,0xfa1e,0xfa1f,0xfa20,0xfa21,0xfa22,0xfa23, - 0xfa24,0xfa25,0xfa26,0xfa27,0xfa28,0xfa29,0xfa2a,0xfa2b,0xfa2c,0xfa2d, - 0xfa30,0xfa31,0xfa32,0xfa33,0xfa34,0xfa35,0xfa36,0xfa37,0xfa38,0xfa39, - 0xfa3a,0xfa3b,0xfa3c,0xfa3d,0xfa3e,0xfa3f,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,0xfa70, - 0xfa71,0xfa72,0xfa73,0xfa74,0xfa75,0xfa76,0xfa77,0xfa78,0xfa79,0xfa7a, - 0xfa7b,0xfa7c,0xfa7d,0xfa7e,0xfa7f,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,0xfa9e,0xfa9f,0xfaa0,0xfaa1,0xfaa2, - 0xfaa3,0xfaa4,0xfaa5,0xfaa6,0xfaa7,0xfaa8,0xfaa9,0xfaaa,0xfaab,0xfaac, - 0xfaad,0xfaae,0xfaaf,0xfab0,0xfab1,0xfab2,0xfab3,0xfab4,0xfab5,0xfab6, - 0xfab7,0xfab8,0xfab9,0xfaba,0xfabb,0xfabc,0xfabd,0xfabe,0xfabf,0xfac0, - 0xfac1,0xfac2,0xfac3,0xfac4,0xfac5,0xfac6,0xfac7,0xfac8,0xfac9,0xfaca, - 0xfacb,0xfacc,0xfacd,0xface,0xfacf,0xfad0,0xfad1,0xfad2,0xfad3,0xfad4, - 0xfad5,0xfad6,0xfad7,0xfad8,0xfad9,0xfb00,0xfb01,0xfb02,0xfb03,0xfb04, - 0xfb05,0xfb06,0xfb13,0xfb14,0xfb15,0xfb16,0xfb17,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,0xff57,0xff58,0xff59,0xff5a,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,0xffa0,0xffa1,0xffa2, - 0xffa3,0xffa4,0xffa5,0xffa6,0xffa7,0xffa8,0xffa9,0xffaa,0xffab,0xffac, - 0xffad,0xffae,0xffaf,0xffb0,0xffb1,0xffb2,0xffb3,0xffb4,0xffb5,0xffb6, - 0xffb7,0xffb8,0xffb9,0xffba,0xffbb,0xffbc,0xffbd,0xffbe,0xffc2,0xffc3, - 0xffc4,0xffc5,0xffc6,0xffc7,0xffca,0xffcb,0xffcc,0xffcd,0xffce,0xffcf, - 0xffd2,0xffd3,0xffd4,0xffd5,0xffd6,0xffd7,0xffda,0xffdb,0xffdc, - 0xd800,0xdc00,0xd800,0xdc01,0xd800,0xdc02,0xd800,0xdc03,0xd800,0xdc04, - 0xd800,0xdc05,0xd800,0xdc06,0xd800,0xdc07,0xd800,0xdc08,0xd800,0xdc09, - 0xd800,0xdc0a,0xd800,0xdc0b,0xd800,0xdc0d,0xd800,0xdc0e,0xd800,0xdc0f, - 0xd800,0xdc10,0xd800,0xdc11,0xd800,0xdc12,0xd800,0xdc13,0xd800,0xdc14, - 0xd800,0xdc15,0xd800,0xdc16,0xd800,0xdc17,0xd800,0xdc18,0xd800,0xdc19, - 0xd800,0xdc1a,0xd800,0xdc1b,0xd800,0xdc1c,0xd800,0xdc1d,0xd800,0xdc1e, - 0xd800,0xdc1f,0xd800,0xdc20,0xd800,0xdc21,0xd800,0xdc22,0xd800,0xdc23, - 0xd800,0xdc24,0xd800,0xdc25,0xd800,0xdc26,0xd800,0xdc28,0xd800,0xdc29, - 0xd800,0xdc2a,0xd800,0xdc2b,0xd800,0xdc2c,0xd800,0xdc2d,0xd800,0xdc2e, - 0xd800,0xdc2f,0xd800,0xdc30,0xd800,0xdc31,0xd800,0xdc32,0xd800,0xdc33, - 0xd800,0xdc34,0xd800,0xdc35,0xd800,0xdc36,0xd800,0xdc37,0xd800,0xdc38, - 0xd800,0xdc39,0xd800,0xdc3a,0xd800,0xdc3c,0xd800,0xdc3d,0xd800,0xdc3f, - 0xd800,0xdc40,0xd800,0xdc41,0xd800,0xdc42,0xd800,0xdc43,0xd800,0xdc44, - 0xd800,0xdc45,0xd800,0xdc46,0xd800,0xdc47,0xd800,0xdc48,0xd800,0xdc49, - 0xd800,0xdc4a,0xd800,0xdc4b,0xd800,0xdc4c,0xd800,0xdc4d,0xd800,0xdc50, - 0xd800,0xdc51,0xd800,0xdc52,0xd800,0xdc53,0xd800,0xdc54,0xd800,0xdc55, - 0xd800,0xdc56,0xd800,0xdc57,0xd800,0xdc58,0xd800,0xdc59,0xd800,0xdc5a, - 0xd800,0xdc5b,0xd800,0xdc5c,0xd800,0xdc5d,0xd800,0xdc80,0xd800,0xdc81, - 0xd800,0xdc82,0xd800,0xdc83,0xd800,0xdc84,0xd800,0xdc85,0xd800,0xdc86, - 0xd800,0xdc87,0xd800,0xdc88,0xd800,0xdc89,0xd800,0xdc8a,0xd800,0xdc8b, - 0xd800,0xdc8c,0xd800,0xdc8d,0xd800,0xdc8e,0xd800,0xdc8f,0xd800,0xdc90, - 0xd800,0xdc91,0xd800,0xdc92,0xd800,0xdc93,0xd800,0xdc94,0xd800,0xdc95, - 0xd800,0xdc96,0xd800,0xdc97,0xd800,0xdc98,0xd800,0xdc99,0xd800,0xdc9a, - 0xd800,0xdc9b,0xd800,0xdc9c,0xd800,0xdc9d,0xd800,0xdc9e,0xd800,0xdc9f, - 0xd800,0xdca0,0xd800,0xdca1,0xd800,0xdca2,0xd800,0xdca3,0xd800,0xdca4, - 0xd800,0xdca5,0xd800,0xdca6,0xd800,0xdca7,0xd800,0xdca8,0xd800,0xdca9, - 0xd800,0xdcaa,0xd800,0xdcab,0xd800,0xdcac,0xd800,0xdcad,0xd800,0xdcae, - 0xd800,0xdcaf,0xd800,0xdcb0,0xd800,0xdcb1,0xd800,0xdcb2,0xd800,0xdcb3, - 0xd800,0xdcb4,0xd800,0xdcb5,0xd800,0xdcb6,0xd800,0xdcb7,0xd800,0xdcb8, - 0xd800,0xdcb9,0xd800,0xdcba,0xd800,0xdcbb,0xd800,0xdcbc,0xd800,0xdcbd, - 0xd800,0xdcbe,0xd800,0xdcbf,0xd800,0xdcc0,0xd800,0xdcc1,0xd800,0xdcc2, - 0xd800,0xdcc3,0xd800,0xdcc4,0xd800,0xdcc5,0xd800,0xdcc6,0xd800,0xdcc7, - 0xd800,0xdcc8,0xd800,0xdcc9,0xd800,0xdcca,0xd800,0xdccb,0xd800,0xdccc, - 0xd800,0xdccd,0xd800,0xdcce,0xd800,0xdccf,0xd800,0xdcd0,0xd800,0xdcd1, - 0xd800,0xdcd2,0xd800,0xdcd3,0xd800,0xdcd4,0xd800,0xdcd5,0xd800,0xdcd6, - 0xd800,0xdcd7,0xd800,0xdcd8,0xd800,0xdcd9,0xd800,0xdcda,0xd800,0xdcdb, - 0xd800,0xdcdc,0xd800,0xdcdd,0xd800,0xdcde,0xd800,0xdcdf,0xd800,0xdce0, - 0xd800,0xdce1,0xd800,0xdce2,0xd800,0xdce3,0xd800,0xdce4,0xd800,0xdce5, - 0xd800,0xdce6,0xd800,0xdce7,0xd800,0xdce8,0xd800,0xdce9,0xd800,0xdcea, - 0xd800,0xdceb,0xd800,0xdcec,0xd800,0xdced,0xd800,0xdcee,0xd800,0xdcef, - 0xd800,0xdcf0,0xd800,0xdcf1,0xd800,0xdcf2,0xd800,0xdcf3,0xd800,0xdcf4, - 0xd800,0xdcf5,0xd800,0xdcf6,0xd800,0xdcf7,0xd800,0xdcf8,0xd800,0xdcf9, - 0xd800,0xdcfa,0xd800,0xdd00,0xd800,0xdd02,0xd800,0xdd07,0xd800,0xdd08, - 0xd800,0xdd09,0xd800,0xdd0a,0xd800,0xdd0b,0xd800,0xdd0c,0xd800,0xdd0d, - 0xd800,0xdd0e,0xd800,0xdd0f,0xd800,0xdd10,0xd800,0xdd11,0xd800,0xdd12, - 0xd800,0xdd13,0xd800,0xdd14,0xd800,0xdd15,0xd800,0xdd16,0xd800,0xdd17, - 0xd800,0xdd18,0xd800,0xdd19,0xd800,0xdd1a,0xd800,0xdd1b,0xd800,0xdd1c, - 0xd800,0xdd1d,0xd800,0xdd1e,0xd800,0xdd1f,0xd800,0xdd20,0xd800,0xdd21, - 0xd800,0xdd22,0xd800,0xdd23,0xd800,0xdd24,0xd800,0xdd25,0xd800,0xdd26, - 0xd800,0xdd27,0xd800,0xdd28,0xd800,0xdd29,0xd800,0xdd2a,0xd800,0xdd2b, - 0xd800,0xdd2c,0xd800,0xdd2d,0xd800,0xdd2e,0xd800,0xdd2f,0xd800,0xdd30, - 0xd800,0xdd31,0xd800,0xdd32,0xd800,0xdd33,0xd800,0xdd37,0xd800,0xdd38, - 0xd800,0xdd39,0xd800,0xdd3a,0xd800,0xdd3b,0xd800,0xdd3c,0xd800,0xdd3d, - 0xd800,0xdd3e,0xd800,0xdd3f,0xd800,0xdf00,0xd800,0xdf01,0xd800,0xdf02, - 0xd800,0xdf03,0xd800,0xdf04,0xd800,0xdf05,0xd800,0xdf06,0xd800,0xdf07, - 0xd800,0xdf08,0xd800,0xdf09,0xd800,0xdf0a,0xd800,0xdf0b,0xd800,0xdf0c, - 0xd800,0xdf0d,0xd800,0xdf0e,0xd800,0xdf0f,0xd800,0xdf10,0xd800,0xdf11, - 0xd800,0xdf12,0xd800,0xdf13,0xd800,0xdf14,0xd800,0xdf15,0xd800,0xdf16, - 0xd800,0xdf17,0xd800,0xdf18,0xd800,0xdf19,0xd800,0xdf1a,0xd800,0xdf1b, - 0xd800,0xdf1c,0xd800,0xdf1d,0xd800,0xdf1e,0xd800,0xdf20,0xd800,0xdf21, - 0xd800,0xdf22,0xd800,0xdf23,0xd800,0xdf30,0xd800,0xdf31,0xd800,0xdf32, - 0xd800,0xdf33,0xd800,0xdf34,0xd800,0xdf35,0xd800,0xdf36,0xd800,0xdf37, - 0xd800,0xdf38,0xd800,0xdf39,0xd800,0xdf3a,0xd800,0xdf3b,0xd800,0xdf3c, - 0xd800,0xdf3d,0xd800,0xdf3e,0xd800,0xdf3f,0xd800,0xdf40,0xd800,0xdf41, - 0xd800,0xdf42,0xd800,0xdf43,0xd800,0xdf44,0xd800,0xdf45,0xd800,0xdf46, - 0xd800,0xdf47,0xd800,0xdf48,0xd800,0xdf49,0xd800,0xdf4a,0xd800,0xdf80, - 0xd800,0xdf81,0xd800,0xdf82,0xd800,0xdf83,0xd800,0xdf84,0xd800,0xdf85, - 0xd800,0xdf86,0xd800,0xdf87,0xd800,0xdf88,0xd800,0xdf89,0xd800,0xdf8a, - 0xd800,0xdf8b,0xd800,0xdf8c,0xd800,0xdf8d,0xd800,0xdf8e,0xd800,0xdf8f, - 0xd800,0xdf90,0xd800,0xdf91,0xd800,0xdf92,0xd800,0xdf93,0xd800,0xdf94, - 0xd800,0xdf95,0xd800,0xdf96,0xd800,0xdf97,0xd800,0xdf98,0xd800,0xdf99, - 0xd800,0xdf9a,0xd800,0xdf9b,0xd800,0xdf9c,0xd800,0xdf9d,0xd800,0xdf9f, - 0xd800,0xdfa0,0xd800,0xdfa1,0xd800,0xdfa2,0xd800,0xdfa3,0xd800,0xdfa4, - 0xd800,0xdfa5,0xd800,0xdfa6,0xd800,0xdfa7,0xd800,0xdfa8,0xd800,0xdfa9, - 0xd800,0xdfaa,0xd800,0xdfab,0xd800,0xdfac,0xd800,0xdfad,0xd800,0xdfae, - 0xd800,0xdfaf,0xd800,0xdfb0,0xd800,0xdfb1,0xd800,0xdfb2,0xd800,0xdfb3, - 0xd800,0xdfb4,0xd800,0xdfb5,0xd800,0xdfb6,0xd800,0xdfb7,0xd800,0xdfb8, - 0xd800,0xdfb9,0xd800,0xdfba,0xd800,0xdfbb,0xd800,0xdfbc,0xd800,0xdfbd, - 0xd800,0xdfbe,0xd800,0xdfbf,0xd800,0xdfc0,0xd800,0xdfc1,0xd800,0xdfc2, - 0xd800,0xdfc3,0xd800,0xdfc8,0xd800,0xdfc9,0xd800,0xdfca,0xd800,0xdfcb, - 0xd800,0xdfcc,0xd800,0xdfcd,0xd800,0xdfce,0xd800,0xdfcf,0xd800,0xdfd0, - 0xd800,0xdfd1,0xd800,0xdfd2,0xd800,0xdfd3,0xd800,0xdfd4,0xd800,0xdfd5, - 0xd801,0xdc00,0xd801,0xdc01,0xd801,0xdc02,0xd801,0xdc03,0xd801,0xdc04, - 0xd801,0xdc05,0xd801,0xdc06,0xd801,0xdc07,0xd801,0xdc08,0xd801,0xdc09, - 0xd801,0xdc0a,0xd801,0xdc0b,0xd801,0xdc0c,0xd801,0xdc0d,0xd801,0xdc0e, - 0xd801,0xdc0f,0xd801,0xdc10,0xd801,0xdc11,0xd801,0xdc12,0xd801,0xdc13, - 0xd801,0xdc14,0xd801,0xdc15,0xd801,0xdc16,0xd801,0xdc17,0xd801,0xdc18, - 0xd801,0xdc19,0xd801,0xdc1a,0xd801,0xdc1b,0xd801,0xdc1c,0xd801,0xdc1d, - 0xd801,0xdc1e,0xd801,0xdc1f,0xd801,0xdc20,0xd801,0xdc21,0xd801,0xdc22, - 0xd801,0xdc23,0xd801,0xdc24,0xd801,0xdc25,0xd801,0xdc26,0xd801,0xdc27, - 0xd801,0xdc28,0xd801,0xdc29,0xd801,0xdc2a,0xd801,0xdc2b,0xd801,0xdc2c, - 0xd801,0xdc2d,0xd801,0xdc2e,0xd801,0xdc2f,0xd801,0xdc30,0xd801,0xdc31, - 0xd801,0xdc32,0xd801,0xdc33,0xd801,0xdc34,0xd801,0xdc35,0xd801,0xdc36, - 0xd801,0xdc37,0xd801,0xdc38,0xd801,0xdc39,0xd801,0xdc3a,0xd801,0xdc3b, - 0xd801,0xdc3c,0xd801,0xdc3d,0xd801,0xdc3e,0xd801,0xdc3f,0xd801,0xdc40, - 0xd801,0xdc41,0xd801,0xdc42,0xd801,0xdc43,0xd801,0xdc44,0xd801,0xdc45, - 0xd801,0xdc46,0xd801,0xdc47,0xd801,0xdc48,0xd801,0xdc49,0xd801,0xdc4a, - 0xd801,0xdc4b,0xd801,0xdc4c,0xd801,0xdc4d,0xd801,0xdc4e,0xd801,0xdc4f, - 0xd801,0xdc50,0xd801,0xdc51,0xd801,0xdc52,0xd801,0xdc53,0xd801,0xdc54, - 0xd801,0xdc55,0xd801,0xdc56,0xd801,0xdc57,0xd801,0xdc58,0xd801,0xdc59, - 0xd801,0xdc5a,0xd801,0xdc5b,0xd801,0xdc5c,0xd801,0xdc5d,0xd801,0xdc5e, - 0xd801,0xdc5f,0xd801,0xdc60,0xd801,0xdc61,0xd801,0xdc62,0xd801,0xdc63, - 0xd801,0xdc64,0xd801,0xdc65,0xd801,0xdc66,0xd801,0xdc67,0xd801,0xdc68, - 0xd801,0xdc69,0xd801,0xdc6a,0xd801,0xdc6b,0xd801,0xdc6c,0xd801,0xdc6d, - 0xd801,0xdc6e,0xd801,0xdc6f,0xd801,0xdc70,0xd801,0xdc71,0xd801,0xdc72, - 0xd801,0xdc73,0xd801,0xdc74,0xd801,0xdc75,0xd801,0xdc76,0xd801,0xdc77, - 0xd801,0xdc78,0xd801,0xdc79,0xd801,0xdc7a,0xd801,0xdc7b,0xd801,0xdc7c, - 0xd801,0xdc7d,0xd801,0xdc7e,0xd801,0xdc7f,0xd801,0xdc80,0xd801,0xdc81, - 0xd801,0xdc82,0xd801,0xdc83,0xd801,0xdc84,0xd801,0xdc85,0xd801,0xdc86, - 0xd801,0xdc87,0xd801,0xdc88,0xd801,0xdc89,0xd801,0xdc8a,0xd801,0xdc8b, - 0xd801,0xdc8c,0xd801,0xdc8d,0xd801,0xdc8e,0xd801,0xdc8f,0xd801,0xdc90, - 0xd801,0xdc91,0xd801,0xdc92,0xd801,0xdc93,0xd801,0xdc94,0xd801,0xdc95, - 0xd801,0xdc96,0xd801,0xdc97,0xd801,0xdc98,0xd801,0xdc99,0xd801,0xdc9a, - 0xd801,0xdc9b,0xd801,0xdc9c,0xd801,0xdc9d,0xd801,0xdca0,0xd801,0xdca1, - 0xd801,0xdca2,0xd801,0xdca3,0xd801,0xdca4,0xd801,0xdca5,0xd801,0xdca6, - 0xd801,0xdca7,0xd801,0xdca8,0xd801,0xdca9,0xd808,0xdc00,0xd808,0xdc01, - 0xd808,0xdc02,0xd808,0xdc03,0xd808,0xdc04,0xd808,0xdc05,0xd808,0xdc06, - 0xd808,0xdc07,0xd808,0xdc08,0xd808,0xdc09,0xd808,0xdc0a,0xd808,0xdc0b, - 0xd808,0xdc0c,0xd808,0xdc0d,0xd808,0xdc0e,0xd808,0xdc0f,0xd808,0xdc10, - 0xd808,0xdc11,0xd808,0xdc12,0xd808,0xdc13,0xd808,0xdc14,0xd808,0xdc15, - 0xd808,0xdc16,0xd808,0xdc17,0xd808,0xdc18,0xd808,0xdc19,0xd808,0xdc1a, - 0xd808,0xdc1b,0xd808,0xdc1c,0xd808,0xdc1d,0xd808,0xdc1e,0xd808,0xdc1f, - 0xd808,0xdc20,0xd808,0xdc21,0xd808,0xdc22,0xd808,0xdc23,0xd808,0xdc24, - 0xd808,0xdc25,0xd808,0xdc26,0xd808,0xdc27,0xd808,0xdc28,0xd808,0xdc29, - 0xd808,0xdc2a,0xd808,0xdc2b,0xd808,0xdc2c,0xd808,0xdc2d,0xd808,0xdc2e, - 0xd808,0xdc2f,0xd808,0xdc30,0xd808,0xdc31,0xd808,0xdc32,0xd808,0xdc33, - 0xd808,0xdc34,0xd808,0xdc35,0xd808,0xdc36,0xd808,0xdc37,0xd808,0xdc38, - 0xd808,0xdc39,0xd808,0xdc3a,0xd808,0xdc3b,0xd808,0xdc3c,0xd808,0xdc3d, - 0xd808,0xdc3e,0xd808,0xdc3f,0xd808,0xdc40,0xd808,0xdc41,0xd808,0xdc42, - 0xd808,0xdc43,0xd808,0xdc44,0xd808,0xdc45,0xd808,0xdc46,0xd808,0xdc47, - 0xd808,0xdc48,0xd808,0xdc49,0xd808,0xdc4a,0xd808,0xdc4b,0xd808,0xdc4c, - 0xd808,0xdc4d,0xd808,0xdc4e,0xd808,0xdc4f,0xd808,0xdc50,0xd808,0xdc51, - 0xd808,0xdc52,0xd808,0xdc53,0xd808,0xdc54,0xd808,0xdc55,0xd808,0xdc56, - 0xd808,0xdc57,0xd808,0xdc58,0xd808,0xdc59,0xd808,0xdc5a,0xd808,0xdc5b, - 0xd808,0xdc5c,0xd808,0xdc5d,0xd808,0xdc5e,0xd808,0xdc5f,0xd808,0xdc60, - 0xd808,0xdc61,0xd808,0xdc62,0xd808,0xdc63,0xd808,0xdc64,0xd808,0xdc65, - 0xd808,0xdc66,0xd808,0xdc67,0xd808,0xdc68,0xd808,0xdc69,0xd808,0xdc6a, - 0xd808,0xdc6b,0xd808,0xdc6c,0xd808,0xdc6d,0xd808,0xdc6e,0xd808,0xdc6f, - 0xd808,0xdc70,0xd808,0xdc71,0xd808,0xdc72,0xd808,0xdc73,0xd808,0xdc74, - 0xd808,0xdc75,0xd808,0xdc76,0xd808,0xdc77,0xd808,0xdc78,0xd808,0xdc79, - 0xd808,0xdc7a,0xd808,0xdc7b,0xd808,0xdc7c,0xd808,0xdc7d,0xd808,0xdc7e, - 0xd808,0xdc7f,0xd808,0xdc80,0xd808,0xdc81,0xd808,0xdc82,0xd808,0xdc83, - 0xd808,0xdc84,0xd808,0xdc85,0xd808,0xdc86,0xd808,0xdc87,0xd808,0xdc88, - 0xd808,0xdc89,0xd808,0xdc8a,0xd808,0xdc8b,0xd808,0xdc8c,0xd808,0xdc8d, - 0xd808,0xdc8e,0xd808,0xdc8f,0xd808,0xdc90,0xd808,0xdc91,0xd808,0xdc92, - 0xd808,0xdc93,0xd808,0xdc94,0xd808,0xdc95,0xd808,0xdc96,0xd808,0xdc97, - 0xd808,0xdc98,0xd808,0xdc99,0xd808,0xdc9a,0xd808,0xdc9b,0xd808,0xdc9c, - 0xd808,0xdc9d,0xd808,0xdc9e,0xd808,0xdc9f,0xd808,0xdca0,0xd808,0xdca1, - 0xd808,0xdca2,0xd808,0xdca3,0xd808,0xdca4,0xd808,0xdca5,0xd808,0xdca6, - 0xd808,0xdca7,0xd808,0xdca8,0xd808,0xdca9,0xd808,0xdcaa,0xd808,0xdcab, - 0xd808,0xdcac,0xd808,0xdcad,0xd808,0xdcae,0xd808,0xdcaf,0xd808,0xdcb0, - 0xd808,0xdcb1,0xd808,0xdcb2,0xd808,0xdcb3,0xd808,0xdcb4,0xd808,0xdcb5, - 0xd808,0xdcb6,0xd808,0xdcb7,0xd808,0xdcb8,0xd808,0xdcb9,0xd808,0xdcba, - 0xd808,0xdcbb,0xd808,0xdcbc,0xd808,0xdcbd,0xd808,0xdcbe,0xd808,0xdcbf, - 0xd808,0xdcc0,0xd808,0xdcc1,0xd808,0xdcc2,0xd808,0xdcc3,0xd808,0xdcc4, - 0xd808,0xdcc5,0xd808,0xdcc6,0xd808,0xdcc7,0xd808,0xdcc8,0xd808,0xdcc9, - 0xd808,0xdcca,0xd808,0xdccb,0xd808,0xdccc,0xd808,0xdccd,0xd808,0xdcce, - 0xd808,0xdccf,0xd808,0xdcd0,0xd808,0xdcd1,0xd808,0xdcd2,0xd808,0xdcd3, - 0xd808,0xdcd4,0xd808,0xdcd5,0xd808,0xdcd6,0xd808,0xdcd7,0xd808,0xdcd8, - 0xd808,0xdcd9,0xd808,0xdcda,0xd808,0xdcdb,0xd808,0xdcdc,0xd808,0xdcdd, - 0xd808,0xdcde,0xd808,0xdcdf,0xd808,0xdce0,0xd808,0xdce1,0xd808,0xdce2, - 0xd808,0xdce3,0xd808,0xdce4,0xd808,0xdce5,0xd808,0xdce6,0xd808,0xdce7, - 0xd808,0xdce8,0xd808,0xdce9,0xd808,0xdcea,0xd808,0xdceb,0xd808,0xdcec, - 0xd808,0xdced,0xd808,0xdcee,0xd808,0xdcef,0xd808,0xdcf0,0xd808,0xdcf1, - 0xd808,0xdcf2,0xd808,0xdcf3,0xd808,0xdcf4,0xd808,0xdcf5,0xd808,0xdcf6, - 0xd808,0xdcf7,0xd808,0xdcf8,0xd808,0xdcf9,0xd808,0xdcfa,0xd808,0xdcfb, - 0xd808,0xdcfc,0xd808,0xdcfd,0xd808,0xdcfe,0xd808,0xdcff,0xd808,0xdd00, - 0xd808,0xdd01,0xd808,0xdd02,0xd808,0xdd03,0xd808,0xdd04,0xd808,0xdd05, - 0xd808,0xdd06,0xd808,0xdd07,0xd808,0xdd08,0xd808,0xdd09,0xd808,0xdd0a, - 0xd808,0xdd0b,0xd808,0xdd0c,0xd808,0xdd0d,0xd808,0xdd0e,0xd808,0xdd0f, - 0xd808,0xdd10,0xd808,0xdd11,0xd808,0xdd12,0xd808,0xdd13,0xd808,0xdd14, - 0xd808,0xdd15,0xd808,0xdd16,0xd808,0xdd17,0xd808,0xdd18,0xd808,0xdd19, - 0xd808,0xdd1a,0xd808,0xdd1b,0xd808,0xdd1c,0xd808,0xdd1d,0xd808,0xdd1e, - 0xd808,0xdd1f,0xd808,0xdd20,0xd808,0xdd21,0xd808,0xdd22,0xd808,0xdd23, - 0xd808,0xdd24,0xd808,0xdd25,0xd808,0xdd26,0xd808,0xdd27,0xd808,0xdd28, - 0xd808,0xdd29,0xd808,0xdd2a,0xd808,0xdd2b,0xd808,0xdd2c,0xd808,0xdd2d, - 0xd808,0xdd2e,0xd808,0xdd2f,0xd808,0xdd30,0xd808,0xdd31,0xd808,0xdd32, - 0xd808,0xdd33,0xd808,0xdd34,0xd808,0xdd35,0xd808,0xdd36,0xd808,0xdd37, - 0xd808,0xdd38,0xd808,0xdd39,0xd808,0xdd3a,0xd808,0xdd3b,0xd808,0xdd3c, - 0xd808,0xdd3d,0xd808,0xdd3e,0xd808,0xdd3f,0xd808,0xdd40,0xd808,0xdd41, - 0xd808,0xdd42,0xd808,0xdd43,0xd808,0xdd44,0xd808,0xdd45,0xd808,0xdd46, - 0xd808,0xdd47,0xd808,0xdd48,0xd808,0xdd49,0xd808,0xdd4a,0xd808,0xdd4b, - 0xd808,0xdd4c,0xd808,0xdd4d,0xd808,0xdd4e,0xd808,0xdd4f,0xd808,0xdd50, - 0xd808,0xdd51,0xd808,0xdd52,0xd808,0xdd53,0xd808,0xdd54,0xd808,0xdd55, - 0xd808,0xdd56,0xd808,0xdd57,0xd808,0xdd58,0xd808,0xdd59,0xd808,0xdd5a, - 0xd808,0xdd5b,0xd808,0xdd5c,0xd808,0xdd5d,0xd808,0xdd5e,0xd808,0xdd5f, - 0xd808,0xdd60,0xd808,0xdd61,0xd808,0xdd62,0xd808,0xdd63,0xd808,0xdd64, - 0xd808,0xdd65,0xd808,0xdd66,0xd808,0xdd67,0xd808,0xdd68,0xd808,0xdd69, - 0xd808,0xdd6a,0xd808,0xdd6b,0xd808,0xdd6c,0xd808,0xdd6d,0xd808,0xdd6e, - 0xd808,0xdd6f,0xd808,0xdd70,0xd808,0xdd71,0xd808,0xdd72,0xd808,0xdd73, - 0xd808,0xdd74,0xd808,0xdd75,0xd808,0xdd76,0xd808,0xdd77,0xd808,0xdd78, - 0xd808,0xdd79,0xd808,0xdd7a,0xd808,0xdd7b,0xd808,0xdd7c,0xd808,0xdd7d, - 0xd808,0xdd7e,0xd808,0xdd7f,0xd808,0xdd80,0xd808,0xdd81,0xd808,0xdd82, - 0xd808,0xdd83,0xd808,0xdd84,0xd808,0xdd85,0xd808,0xdd86,0xd808,0xdd87, - 0xd808,0xdd88,0xd808,0xdd89,0xd808,0xdd8a,0xd808,0xdd8b,0xd808,0xdd8c, - 0xd808,0xdd8d,0xd808,0xdd8e,0xd808,0xdd8f,0xd808,0xdd90,0xd808,0xdd91, - 0xd808,0xdd92,0xd808,0xdd93,0xd808,0xdd94,0xd808,0xdd95,0xd808,0xdd96, - 0xd808,0xdd97,0xd808,0xdd98,0xd808,0xdd99,0xd808,0xdd9a,0xd808,0xdd9b, - 0xd808,0xdd9c,0xd808,0xdd9d,0xd808,0xdd9e,0xd808,0xdd9f,0xd808,0xdda0, - 0xd808,0xdda1,0xd808,0xdda2,0xd808,0xdda3,0xd808,0xdda4,0xd808,0xdda5, - 0xd808,0xdda6,0xd808,0xdda7,0xd808,0xdda8,0xd808,0xdda9,0xd808,0xddaa, - 0xd808,0xddab,0xd808,0xddac,0xd808,0xddad,0xd808,0xddae,0xd808,0xddaf, - 0xd808,0xddb0,0xd808,0xddb1,0xd808,0xddb2,0xd808,0xddb3,0xd808,0xddb4, - 0xd808,0xddb5,0xd808,0xddb6,0xd808,0xddb7,0xd808,0xddb8,0xd808,0xddb9, - 0xd808,0xddba,0xd808,0xddbb,0xd808,0xddbc,0xd808,0xddbd,0xd808,0xddbe, - 0xd808,0xddbf,0xd808,0xddc0,0xd808,0xddc1,0xd808,0xddc2,0xd808,0xddc3, - 0xd808,0xddc4,0xd808,0xddc5,0xd808,0xddc6,0xd808,0xddc7,0xd808,0xddc8, - 0xd808,0xddc9,0xd808,0xddca,0xd808,0xddcb,0xd808,0xddcc,0xd808,0xddcd, - 0xd808,0xddce,0xd808,0xddcf,0xd808,0xddd0,0xd808,0xddd1,0xd808,0xddd2, - 0xd808,0xddd3,0xd808,0xddd4,0xd808,0xddd5,0xd808,0xddd6,0xd808,0xddd7, - 0xd808,0xddd8,0xd808,0xddd9,0xd808,0xddda,0xd808,0xdddb,0xd808,0xdddc, - 0xd808,0xdddd,0xd808,0xddde,0xd808,0xdddf,0xd808,0xdde0,0xd808,0xdde1, - 0xd808,0xdde2,0xd808,0xdde3,0xd808,0xdde4,0xd808,0xdde5,0xd808,0xdde6, - 0xd808,0xdde7,0xd808,0xdde8,0xd808,0xdde9,0xd808,0xddea,0xd808,0xddeb, - 0xd808,0xddec,0xd808,0xdded,0xd808,0xddee,0xd808,0xddef,0xd808,0xddf0, - 0xd808,0xddf1,0xd808,0xddf2,0xd808,0xddf3,0xd808,0xddf4,0xd808,0xddf5, - 0xd808,0xddf6,0xd808,0xddf7,0xd808,0xddf8,0xd808,0xddf9,0xd808,0xddfa, - 0xd808,0xddfb,0xd808,0xddfc,0xd808,0xddfd,0xd808,0xddfe,0xd808,0xddff, - 0xd808,0xde00,0xd808,0xde01,0xd808,0xde02,0xd808,0xde03,0xd808,0xde04, - 0xd808,0xde05,0xd808,0xde06,0xd808,0xde07,0xd808,0xde08,0xd808,0xde09, - 0xd808,0xde0a,0xd808,0xde0b,0xd808,0xde0c,0xd808,0xde0d,0xd808,0xde0e, - 0xd808,0xde0f,0xd808,0xde10,0xd808,0xde11,0xd808,0xde12,0xd808,0xde13, - 0xd808,0xde14,0xd808,0xde15,0xd808,0xde16,0xd808,0xde17,0xd808,0xde18, - 0xd808,0xde19,0xd808,0xde1a,0xd808,0xde1b,0xd808,0xde1c,0xd808,0xde1d, - 0xd808,0xde1e,0xd808,0xde1f,0xd808,0xde20,0xd808,0xde21,0xd808,0xde22, - 0xd808,0xde23,0xd808,0xde24,0xd808,0xde25,0xd808,0xde26,0xd808,0xde27, - 0xd808,0xde28,0xd808,0xde29,0xd808,0xde2a,0xd808,0xde2b,0xd808,0xde2c, - 0xd808,0xde2d,0xd808,0xde2e,0xd808,0xde2f,0xd808,0xde30,0xd808,0xde31, - 0xd808,0xde32,0xd808,0xde33,0xd808,0xde34,0xd808,0xde35,0xd808,0xde36, - 0xd808,0xde37,0xd808,0xde38,0xd808,0xde39,0xd808,0xde3a,0xd808,0xde3b, - 0xd808,0xde3c,0xd808,0xde3d,0xd808,0xde3e,0xd808,0xde3f,0xd808,0xde40, - 0xd808,0xde41,0xd808,0xde42,0xd808,0xde43,0xd808,0xde44,0xd808,0xde45, - 0xd808,0xde46,0xd808,0xde47,0xd808,0xde48,0xd808,0xde49,0xd808,0xde4a, - 0xd808,0xde4b,0xd808,0xde4c,0xd808,0xde4d,0xd808,0xde4e,0xd808,0xde4f, - 0xd808,0xde50,0xd808,0xde51,0xd808,0xde52,0xd808,0xde53,0xd808,0xde54, - 0xd808,0xde55,0xd808,0xde56,0xd808,0xde57,0xd808,0xde58,0xd808,0xde59, - 0xd808,0xde5a,0xd808,0xde5b,0xd808,0xde5c,0xd808,0xde5d,0xd808,0xde5e, - 0xd808,0xde5f,0xd808,0xde60,0xd808,0xde61,0xd808,0xde62,0xd808,0xde63, - 0xd808,0xde64,0xd808,0xde65,0xd808,0xde66,0xd808,0xde67,0xd808,0xde68, - 0xd808,0xde69,0xd808,0xde6a,0xd808,0xde6b,0xd808,0xde6c,0xd808,0xde6d, - 0xd808,0xde6e,0xd808,0xde6f,0xd808,0xde70,0xd808,0xde71,0xd808,0xde72, - 0xd808,0xde73,0xd808,0xde74,0xd808,0xde75,0xd808,0xde76,0xd808,0xde77, - 0xd808,0xde78,0xd808,0xde79,0xd808,0xde7a,0xd808,0xde7b,0xd808,0xde7c, - 0xd808,0xde7d,0xd808,0xde7e,0xd808,0xde7f,0xd808,0xde80,0xd808,0xde81, - 0xd808,0xde82,0xd808,0xde83,0xd808,0xde84,0xd808,0xde85,0xd808,0xde86, - 0xd808,0xde87,0xd808,0xde88,0xd808,0xde89,0xd808,0xde8a,0xd808,0xde8b, - 0xd808,0xde8c,0xd808,0xde8d,0xd808,0xde8e,0xd808,0xde8f,0xd808,0xde90, - 0xd808,0xde91,0xd808,0xde92,0xd808,0xde93,0xd808,0xde94,0xd808,0xde95, - 0xd808,0xde96,0xd808,0xde97,0xd808,0xde98,0xd808,0xde99,0xd808,0xde9a, - 0xd808,0xde9b,0xd808,0xde9c,0xd808,0xde9d,0xd808,0xde9e,0xd808,0xde9f, - 0xd808,0xdea0,0xd808,0xdea1,0xd808,0xdea2,0xd808,0xdea3,0xd808,0xdea4, - 0xd808,0xdea5,0xd808,0xdea6,0xd808,0xdea7,0xd808,0xdea8,0xd808,0xdea9, - 0xd808,0xdeaa,0xd808,0xdeab,0xd808,0xdeac,0xd808,0xdead,0xd808,0xdeae, - 0xd808,0xdeaf,0xd808,0xdeb0,0xd808,0xdeb1,0xd808,0xdeb2,0xd808,0xdeb3, - 0xd808,0xdeb4,0xd808,0xdeb5,0xd808,0xdeb6,0xd808,0xdeb7,0xd808,0xdeb8, - 0xd808,0xdeb9,0xd808,0xdeba,0xd808,0xdebb,0xd808,0xdebc,0xd808,0xdebd, - 0xd808,0xdebe,0xd808,0xdebf,0xd808,0xdec0,0xd808,0xdec1,0xd808,0xdec2, - 0xd808,0xdec3,0xd808,0xdec4,0xd808,0xdec5,0xd808,0xdec6,0xd808,0xdec7, - 0xd808,0xdec8,0xd808,0xdec9,0xd808,0xdeca,0xd808,0xdecb,0xd808,0xdecc, - 0xd808,0xdecd,0xd808,0xdece,0xd808,0xdecf,0xd808,0xded0,0xd808,0xded1, - 0xd808,0xded2,0xd808,0xded3,0xd808,0xded4,0xd808,0xded5,0xd808,0xded6, - 0xd808,0xded7,0xd808,0xded8,0xd808,0xded9,0xd808,0xdeda,0xd808,0xdedb, - 0xd808,0xdedc,0xd808,0xdedd,0xd808,0xdede,0xd808,0xdedf,0xd808,0xdee0, - 0xd808,0xdee1,0xd808,0xdee2,0xd808,0xdee3,0xd808,0xdee4,0xd808,0xdee5, - 0xd808,0xdee6,0xd808,0xdee7,0xd808,0xdee8,0xd808,0xdee9,0xd808,0xdeea, - 0xd808,0xdeeb,0xd808,0xdeec,0xd808,0xdeed,0xd808,0xdeee,0xd808,0xdeef, - 0xd808,0xdef0,0xd808,0xdef1,0xd808,0xdef2,0xd808,0xdef3,0xd808,0xdef4, - 0xd808,0xdef5,0xd808,0xdef6,0xd808,0xdef7,0xd808,0xdef8,0xd808,0xdef9, - 0xd808,0xdefa,0xd808,0xdefb,0xd808,0xdefc,0xd808,0xdefd,0xd808,0xdefe, - 0xd808,0xdeff,0xd808,0xdf00,0xd808,0xdf01,0xd808,0xdf02,0xd808,0xdf03, - 0xd808,0xdf04,0xd808,0xdf05,0xd808,0xdf06,0xd808,0xdf07,0xd808,0xdf08, - 0xd808,0xdf09,0xd808,0xdf0a,0xd808,0xdf0b,0xd808,0xdf0c,0xd808,0xdf0d, - 0xd808,0xdf0e,0xd808,0xdf0f,0xd808,0xdf10,0xd808,0xdf11,0xd808,0xdf12, - 0xd808,0xdf13,0xd808,0xdf14,0xd808,0xdf15,0xd808,0xdf16,0xd808,0xdf17, - 0xd808,0xdf18,0xd808,0xdf19,0xd808,0xdf1a,0xd808,0xdf1b,0xd808,0xdf1c, - 0xd808,0xdf1d,0xd808,0xdf1e,0xd808,0xdf1f,0xd808,0xdf20,0xd808,0xdf21, - 0xd808,0xdf22,0xd808,0xdf23,0xd808,0xdf24,0xd808,0xdf25,0xd808,0xdf26, - 0xd808,0xdf27,0xd808,0xdf28,0xd808,0xdf29,0xd808,0xdf2a,0xd808,0xdf2b, - 0xd808,0xdf2c,0xd808,0xdf2d,0xd808,0xdf2e,0xd808,0xdf2f,0xd808,0xdf30, - 0xd808,0xdf31,0xd808,0xdf32,0xd808,0xdf33,0xd808,0xdf34,0xd808,0xdf35, - 0xd808,0xdf36,0xd808,0xdf37,0xd808,0xdf38,0xd808,0xdf39,0xd808,0xdf3a, - 0xd808,0xdf3b,0xd808,0xdf3c,0xd808,0xdf3d,0xd808,0xdf3e,0xd808,0xdf3f, - 0xd808,0xdf40,0xd808,0xdf41,0xd808,0xdf42,0xd808,0xdf43,0xd808,0xdf44, - 0xd808,0xdf45,0xd808,0xdf46,0xd808,0xdf47,0xd808,0xdf48,0xd808,0xdf49, - 0xd808,0xdf4a,0xd808,0xdf4b,0xd808,0xdf4c,0xd808,0xdf4d,0xd808,0xdf4e, - 0xd808,0xdf4f,0xd808,0xdf50,0xd808,0xdf51,0xd808,0xdf52,0xd808,0xdf53, - 0xd808,0xdf54,0xd808,0xdf55,0xd808,0xdf56,0xd808,0xdf57,0xd808,0xdf58, - 0xd808,0xdf59,0xd808,0xdf5a,0xd808,0xdf5b,0xd808,0xdf5c,0xd808,0xdf5d, - 0xd808,0xdf5e,0xd808,0xdf5f,0xd808,0xdf60,0xd808,0xdf61,0xd808,0xdf62, - 0xd808,0xdf63,0xd808,0xdf64,0xd808,0xdf65,0xd808,0xdf66,0xd808,0xdf67, - 0xd808,0xdf68,0xd808,0xdf69,0xd808,0xdf6a,0xd808,0xdf6b,0xd808,0xdf6c, - 0xd808,0xdf6d,0xd808,0xdf6e,0xd809,0xdc00,0xd809,0xdc01,0xd809,0xdc02, - 0xd809,0xdc03,0xd809,0xdc04,0xd809,0xdc05,0xd809,0xdc06,0xd809,0xdc07, - 0xd809,0xdc08,0xd809,0xdc09,0xd809,0xdc0a,0xd809,0xdc0b,0xd809,0xdc0c, - 0xd809,0xdc0d,0xd809,0xdc0e,0xd809,0xdc0f,0xd809,0xdc10,0xd809,0xdc11, - 0xd809,0xdc12,0xd809,0xdc13,0xd809,0xdc14,0xd809,0xdc15,0xd809,0xdc16, - 0xd809,0xdc17,0xd809,0xdc18,0xd809,0xdc19,0xd809,0xdc1a,0xd809,0xdc1b, - 0xd809,0xdc1c,0xd809,0xdc1d,0xd809,0xdc1e,0xd809,0xdc1f,0xd809,0xdc20, - 0xd809,0xdc21,0xd809,0xdc22,0xd809,0xdc23,0xd809,0xdc24,0xd809,0xdc25, - 0xd809,0xdc26,0xd809,0xdc27,0xd809,0xdc28,0xd809,0xdc29,0xd809,0xdc2a, - 0xd809,0xdc2b,0xd809,0xdc2c,0xd809,0xdc2d,0xd809,0xdc2e,0xd809,0xdc2f, - 0xd809,0xdc30,0xd809,0xdc31,0xd809,0xdc32,0xd809,0xdc33,0xd809,0xdc34, - 0xd809,0xdc35,0xd809,0xdc36,0xd809,0xdc37,0xd809,0xdc38,0xd809,0xdc39, - 0xd809,0xdc3a,0xd809,0xdc3b,0xd809,0xdc3c,0xd809,0xdc3d,0xd809,0xdc3e, - 0xd809,0xdc3f,0xd809,0xdc40,0xd809,0xdc41,0xd809,0xdc42,0xd809,0xdc43, - 0xd809,0xdc44,0xd809,0xdc45,0xd809,0xdc46,0xd809,0xdc47,0xd809,0xdc48, - 0xd809,0xdc49,0xd809,0xdc4a,0xd809,0xdc4b,0xd809,0xdc4c,0xd809,0xdc4d, - 0xd809,0xdc4e,0xd809,0xdc4f,0xd809,0xdc50,0xd809,0xdc51,0xd809,0xdc52, - 0xd809,0xdc53,0xd809,0xdc54,0xd809,0xdc55,0xd809,0xdc56,0xd809,0xdc57, - 0xd809,0xdc58,0xd809,0xdc59,0xd809,0xdc5a,0xd809,0xdc5b,0xd809,0xdc5c, - 0xd809,0xdc5d,0xd809,0xdc5e,0xd809,0xdc5f,0xd809,0xdc60,0xd809,0xdc61, - 0xd809,0xdc62,0xd809,0xdc70,0xd809,0xdc71,0xd809,0xdc72,0xd809,0xdc73, - 0xd834,0xdc00,0xd834,0xdc01,0xd834,0xdc02,0xd834,0xdc03,0xd834,0xdc04, - 0xd834,0xdc05,0xd834,0xdc06,0xd834,0xdc07,0xd834,0xdc08,0xd834,0xdc09, - 0xd834,0xdc0a,0xd834,0xdc0b,0xd834,0xdc0c,0xd834,0xdc0d,0xd834,0xdc0e, - 0xd834,0xdc0f,0xd834,0xdc10,0xd834,0xdc11,0xd834,0xdc12,0xd834,0xdc13, - 0xd834,0xdc14,0xd834,0xdc15,0xd834,0xdc16,0xd834,0xdc17,0xd834,0xdc18, - 0xd834,0xdc19,0xd834,0xdc1a,0xd834,0xdc1b,0xd834,0xdc1c,0xd834,0xdc1d, - 0xd834,0xdc1e,0xd834,0xdc1f,0xd834,0xdc20,0xd834,0xdc21,0xd834,0xdc22, - 0xd834,0xdc23,0xd834,0xdc24,0xd834,0xdc25,0xd834,0xdc26,0xd834,0xdc27, - 0xd834,0xdc28,0xd834,0xdc29,0xd834,0xdc2a,0xd834,0xdc2b,0xd834,0xdc2c, - 0xd834,0xdc2d,0xd834,0xdc2e,0xd834,0xdc2f,0xd834,0xdc30,0xd834,0xdc31, - 0xd834,0xdc32,0xd834,0xdc33,0xd834,0xdc34,0xd834,0xdc35,0xd834,0xdc36, - 0xd834,0xdc37,0xd834,0xdc38,0xd834,0xdc39,0xd834,0xdc3a,0xd834,0xdc3b, - 0xd834,0xdc3c,0xd834,0xdc3d,0xd834,0xdc3e,0xd834,0xdc3f,0xd834,0xdc40, - 0xd834,0xdc41,0xd834,0xdc42,0xd834,0xdc43,0xd834,0xdc44,0xd834,0xdc45, - 0xd834,0xdc46,0xd834,0xdc47,0xd834,0xdc48,0xd834,0xdc49,0xd834,0xdc4a, - 0xd834,0xdc4b,0xd834,0xdc4c,0xd834,0xdc4d,0xd834,0xdc4e,0xd834,0xdc4f, - 0xd834,0xdc50,0xd834,0xdc51,0xd834,0xdc52,0xd834,0xdc53,0xd834,0xdc54, - 0xd834,0xdc55,0xd834,0xdc56,0xd834,0xdc57,0xd834,0xdc58,0xd834,0xdc59, - 0xd834,0xdc5a,0xd834,0xdc5b,0xd834,0xdc5c,0xd834,0xdc5d,0xd834,0xdc5e, - 0xd834,0xdc5f,0xd834,0xdc60,0xd834,0xdc61,0xd834,0xdc62,0xd834,0xdc63, - 0xd834,0xdc64,0xd834,0xdc65,0xd834,0xdc66,0xd834,0xdc67,0xd834,0xdc68, - 0xd834,0xdc69,0xd834,0xdc6a,0xd834,0xdc6b,0xd834,0xdc6c,0xd834,0xdc6d, - 0xd834,0xdc6e,0xd834,0xdc6f,0xd834,0xdc70,0xd834,0xdc71,0xd834,0xdc72, - 0xd834,0xdc73,0xd834,0xdc74,0xd834,0xdc75,0xd834,0xdc76,0xd834,0xdc77, - 0xd834,0xdc78,0xd834,0xdc79,0xd834,0xdc7a,0xd834,0xdc7b,0xd834,0xdc7c, - 0xd834,0xdc7d,0xd834,0xdc7e,0xd834,0xdc7f,0xd834,0xdc80,0xd834,0xdc81, - 0xd834,0xdc82,0xd834,0xdc83,0xd834,0xdc84,0xd834,0xdc85,0xd834,0xdc86, - 0xd834,0xdc87,0xd834,0xdc88,0xd834,0xdc89,0xd834,0xdc8a,0xd834,0xdc8b, - 0xd834,0xdc8c,0xd834,0xdc8d,0xd834,0xdc8e,0xd834,0xdc8f,0xd834,0xdc90, - 0xd834,0xdc91,0xd834,0xdc92,0xd834,0xdc93,0xd834,0xdc94,0xd834,0xdc95, - 0xd834,0xdc96,0xd834,0xdc97,0xd834,0xdc98,0xd834,0xdc99,0xd834,0xdc9a, - 0xd834,0xdc9b,0xd834,0xdc9c,0xd834,0xdc9d,0xd834,0xdc9e,0xd834,0xdc9f, - 0xd834,0xdca0,0xd834,0xdca1,0xd834,0xdca2,0xd834,0xdca3,0xd834,0xdca4, - 0xd834,0xdca5,0xd834,0xdca6,0xd834,0xdca7,0xd834,0xdca8,0xd834,0xdca9, - 0xd834,0xdcaa,0xd834,0xdcab,0xd834,0xdcac,0xd834,0xdcad,0xd834,0xdcae, - 0xd834,0xdcaf,0xd834,0xdcb0,0xd834,0xdcb1,0xd834,0xdcb2,0xd834,0xdcb3, - 0xd834,0xdcb4,0xd834,0xdcb5,0xd834,0xdcb6,0xd834,0xdcb7,0xd834,0xdcb8, - 0xd834,0xdcb9,0xd834,0xdcba,0xd834,0xdcbb,0xd834,0xdcbc,0xd834,0xdcbd, - 0xd834,0xdcbe,0xd834,0xdcbf,0xd834,0xdcc0,0xd834,0xdcc1,0xd834,0xdcc2, - 0xd834,0xdcc3,0xd834,0xdcc4,0xd834,0xdcc5,0xd834,0xdcc6,0xd834,0xdcc7, - 0xd834,0xdcc8,0xd834,0xdcc9,0xd834,0xdcca,0xd834,0xdccb,0xd834,0xdccc, - 0xd834,0xdccd,0xd834,0xdcce,0xd834,0xdccf,0xd834,0xdcd0,0xd834,0xdcd1, - 0xd834,0xdcd2,0xd834,0xdcd3,0xd834,0xdcd4,0xd834,0xdcd5,0xd834,0xdcd6, - 0xd834,0xdcd7,0xd834,0xdcd8,0xd834,0xdcd9,0xd834,0xdcda,0xd834,0xdcdb, - 0xd834,0xdcdc,0xd834,0xdcdd,0xd834,0xdcde,0xd834,0xdcdf,0xd834,0xdce0, - 0xd834,0xdce1,0xd834,0xdce2,0xd834,0xdce3,0xd834,0xdce4,0xd834,0xdce5, - 0xd834,0xdce6,0xd834,0xdce7,0xd834,0xdce8,0xd834,0xdce9,0xd834,0xdcea, - 0xd834,0xdceb,0xd834,0xdcec,0xd834,0xdced,0xd834,0xdcee,0xd834,0xdcef, - 0xd834,0xdcf0,0xd834,0xdcf1,0xd834,0xdcf2,0xd834,0xdcf3,0xd834,0xdcf4, - 0xd834,0xdcf5,0xd834,0xdd00,0xd834,0xdd01,0xd834,0xdd02,0xd834,0xdd03, - 0xd834,0xdd04,0xd834,0xdd05,0xd834,0xdd06,0xd834,0xdd07,0xd834,0xdd08, - 0xd834,0xdd09,0xd834,0xdd0a,0xd834,0xdd0b,0xd834,0xdd0c,0xd834,0xdd0d, - 0xd834,0xdd0e,0xd834,0xdd0f,0xd834,0xdd10,0xd834,0xdd11,0xd834,0xdd12, - 0xd834,0xdd13,0xd834,0xdd14,0xd834,0xdd15,0xd834,0xdd16,0xd834,0xdd17, - 0xd834,0xdd18,0xd834,0xdd19,0xd834,0xdd1a,0xd834,0xdd1b,0xd834,0xdd1c, - 0xd834,0xdd1d,0xd834,0xdd1e,0xd834,0xdd1f,0xd834,0xdd20,0xd834,0xdd21, - 0xd834,0xdd22,0xd834,0xdd23,0xd834,0xdd24,0xd834,0xdd25,0xd834,0xdd26, - 0xd834,0xdd2a,0xd834,0xdd2b,0xd834,0xdd2c,0xd834,0xdd2d,0xd834,0xdd2e, - 0xd834,0xdd2f,0xd834,0xdd30,0xd834,0xdd31,0xd834,0xdd32,0xd834,0xdd33, - 0xd834,0xdd34,0xd834,0xdd35,0xd834,0xdd36,0xd834,0xdd37,0xd834,0xdd38, - 0xd834,0xdd39,0xd834,0xdd3a,0xd834,0xdd3b,0xd834,0xdd3c,0xd834,0xdd3d, - 0xd834,0xdd3e,0xd834,0xdd3f,0xd834,0xdd40,0xd834,0xdd41,0xd834,0xdd42, - 0xd834,0xdd43,0xd834,0xdd44,0xd834,0xdd45,0xd834,0xdd46,0xd834,0xdd47, - 0xd834,0xdd48,0xd834,0xdd49,0xd834,0xdd4a,0xd834,0xdd4b,0xd834,0xdd4c, - 0xd834,0xdd4d,0xd834,0xdd4e,0xd834,0xdd4f,0xd834,0xdd50,0xd834,0xdd51, - 0xd834,0xdd52,0xd834,0xdd53,0xd834,0xdd54,0xd834,0xdd55,0xd834,0xdd56, - 0xd834,0xdd57,0xd834,0xdd58,0xd834,0xdd59,0xd834,0xdd5a,0xd834,0xdd5b, - 0xd834,0xdd5c,0xd834,0xdd5d,0xd834,0xdd5e,0xd834,0xdd5f,0xd834,0xdd60, - 0xd834,0xdd61,0xd834,0xdd62,0xd834,0xdd63,0xd834,0xdd64,0xd834,0xdd6a, - 0xd834,0xdd6b,0xd834,0xdd6c,0xd834,0xdd83,0xd834,0xdd84,0xd834,0xdd8c, - 0xd834,0xdd8d,0xd834,0xdd8e,0xd834,0xdd8f,0xd834,0xdd90,0xd834,0xdd91, - 0xd834,0xdd92,0xd834,0xdd93,0xd834,0xdd94,0xd834,0xdd95,0xd834,0xdd96, - 0xd834,0xdd97,0xd834,0xdd98,0xd834,0xdd99,0xd834,0xdd9a,0xd834,0xdd9b, - 0xd834,0xdd9c,0xd834,0xdd9d,0xd834,0xdd9e,0xd834,0xdd9f,0xd834,0xdda0, - 0xd834,0xdda1,0xd834,0xdda2,0xd834,0xdda3,0xd834,0xdda4,0xd834,0xdda5, - 0xd834,0xdda6,0xd834,0xdda7,0xd834,0xdda8,0xd834,0xdda9,0xd834,0xddae, - 0xd834,0xddaf,0xd834,0xddb0,0xd834,0xddb1,0xd834,0xddb2,0xd834,0xddb3, - 0xd834,0xddb4,0xd834,0xddb5,0xd834,0xddb6,0xd834,0xddb7,0xd834,0xddb8, - 0xd834,0xddb9,0xd834,0xddba,0xd834,0xddbb,0xd834,0xddbc,0xd834,0xddbd, - 0xd834,0xddbe,0xd834,0xddbf,0xd834,0xddc0,0xd834,0xddc1,0xd834,0xddc2, - 0xd834,0xddc3,0xd834,0xddc4,0xd834,0xddc5,0xd834,0xddc6,0xd834,0xddc7, - 0xd834,0xddc8,0xd834,0xddc9,0xd834,0xddca,0xd834,0xddcb,0xd834,0xddcc, - 0xd834,0xddcd,0xd834,0xddce,0xd834,0xddcf,0xd834,0xddd0,0xd834,0xddd1, - 0xd834,0xddd2,0xd834,0xddd3,0xd834,0xddd4,0xd834,0xddd5,0xd834,0xddd6, - 0xd834,0xddd7,0xd834,0xddd8,0xd834,0xddd9,0xd834,0xddda,0xd834,0xdddb, - 0xd834,0xdddc,0xd834,0xdddd,0xd834,0xdf60,0xd834,0xdf61,0xd834,0xdf62, - 0xd834,0xdf63,0xd834,0xdf64,0xd834,0xdf65,0xd834,0xdf66,0xd834,0xdf67, - 0xd834,0xdf68,0xd834,0xdf69,0xd834,0xdf6a,0xd834,0xdf6b,0xd834,0xdf6c, - 0xd834,0xdf6d,0xd834,0xdf6e,0xd834,0xdf6f,0xd834,0xdf70,0xd834,0xdf71, - 0xd835,0xdc00,0xd835,0xdc01,0xd835,0xdc02,0xd835,0xdc03,0xd835,0xdc04, - 0xd835,0xdc05,0xd835,0xdc06,0xd835,0xdc07,0xd835,0xdc08,0xd835,0xdc09, - 0xd835,0xdc0a,0xd835,0xdc0b,0xd835,0xdc0c,0xd835,0xdc0d,0xd835,0xdc0e, - 0xd835,0xdc0f,0xd835,0xdc10,0xd835,0xdc11,0xd835,0xdc12,0xd835,0xdc13, - 0xd835,0xdc14,0xd835,0xdc15,0xd835,0xdc16,0xd835,0xdc17,0xd835,0xdc18, - 0xd835,0xdc19,0xd835,0xdc1a,0xd835,0xdc1b,0xd835,0xdc1c,0xd835,0xdc1d, - 0xd835,0xdc1e,0xd835,0xdc1f,0xd835,0xdc20,0xd835,0xdc21,0xd835,0xdc22, - 0xd835,0xdc23,0xd835,0xdc24,0xd835,0xdc25,0xd835,0xdc26,0xd835,0xdc27, - 0xd835,0xdc28,0xd835,0xdc29,0xd835,0xdc2a,0xd835,0xdc2b,0xd835,0xdc2c, - 0xd835,0xdc2d,0xd835,0xdc2e,0xd835,0xdc2f,0xd835,0xdc30,0xd835,0xdc31, - 0xd835,0xdc32,0xd835,0xdc33,0xd835,0xdc34,0xd835,0xdc35,0xd835,0xdc36, - 0xd835,0xdc37,0xd835,0xdc38,0xd835,0xdc39,0xd835,0xdc3a,0xd835,0xdc3b, - 0xd835,0xdc3c,0xd835,0xdc3d,0xd835,0xdc3e,0xd835,0xdc3f,0xd835,0xdc40, - 0xd835,0xdc41,0xd835,0xdc42,0xd835,0xdc43,0xd835,0xdc44,0xd835,0xdc45, - 0xd835,0xdc46,0xd835,0xdc47,0xd835,0xdc48,0xd835,0xdc49,0xd835,0xdc4a, - 0xd835,0xdc4b,0xd835,0xdc4c,0xd835,0xdc4d,0xd835,0xdc4e,0xd835,0xdc4f, - 0xd835,0xdc50,0xd835,0xdc51,0xd835,0xdc52,0xd835,0xdc53,0xd835,0xdc54, - 0xd835,0xdc56,0xd835,0xdc57,0xd835,0xdc58,0xd835,0xdc59,0xd835,0xdc5a, - 0xd835,0xdc5b,0xd835,0xdc5c,0xd835,0xdc5d,0xd835,0xdc5e,0xd835,0xdc5f, - 0xd835,0xdc60,0xd835,0xdc61,0xd835,0xdc62,0xd835,0xdc63,0xd835,0xdc64, - 0xd835,0xdc65,0xd835,0xdc66,0xd835,0xdc67,0xd835,0xdc68,0xd835,0xdc69, - 0xd835,0xdc6a,0xd835,0xdc6b,0xd835,0xdc6c,0xd835,0xdc6d,0xd835,0xdc6e, - 0xd835,0xdc6f,0xd835,0xdc70,0xd835,0xdc71,0xd835,0xdc72,0xd835,0xdc73, - 0xd835,0xdc74,0xd835,0xdc75,0xd835,0xdc76,0xd835,0xdc77,0xd835,0xdc78, - 0xd835,0xdc79,0xd835,0xdc7a,0xd835,0xdc7b,0xd835,0xdc7c,0xd835,0xdc7d, - 0xd835,0xdc7e,0xd835,0xdc7f,0xd835,0xdc80,0xd835,0xdc81,0xd835,0xdc82, - 0xd835,0xdc83,0xd835,0xdc84,0xd835,0xdc85,0xd835,0xdc86,0xd835,0xdc87, - 0xd835,0xdc88,0xd835,0xdc89,0xd835,0xdc8a,0xd835,0xdc8b,0xd835,0xdc8c, - 0xd835,0xdc8d,0xd835,0xdc8e,0xd835,0xdc8f,0xd835,0xdc90,0xd835,0xdc91, - 0xd835,0xdc92,0xd835,0xdc93,0xd835,0xdc94,0xd835,0xdc95,0xd835,0xdc96, - 0xd835,0xdc97,0xd835,0xdc98,0xd835,0xdc99,0xd835,0xdc9a,0xd835,0xdc9b, - 0xd835,0xdc9c,0xd835,0xdc9e,0xd835,0xdc9f,0xd835,0xdca2,0xd835,0xdca5, - 0xd835,0xdca6,0xd835,0xdca9,0xd835,0xdcaa,0xd835,0xdcab,0xd835,0xdcac, - 0xd835,0xdcae,0xd835,0xdcaf,0xd835,0xdcb0,0xd835,0xdcb1,0xd835,0xdcb2, - 0xd835,0xdcb3,0xd835,0xdcb4,0xd835,0xdcb5,0xd835,0xdcb6,0xd835,0xdcb7, - 0xd835,0xdcb8,0xd835,0xdcb9,0xd835,0xdcbb,0xd835,0xdcbd,0xd835,0xdcbe, - 0xd835,0xdcbf,0xd835,0xdcc0,0xd835,0xdcc1,0xd835,0xdcc2,0xd835,0xdcc3, - 0xd835,0xdcc5,0xd835,0xdcc6,0xd835,0xdcc7,0xd835,0xdcc8,0xd835,0xdcc9, - 0xd835,0xdcca,0xd835,0xdccb,0xd835,0xdccc,0xd835,0xdccd,0xd835,0xdcce, - 0xd835,0xdccf,0xd835,0xdcd0,0xd835,0xdcd1,0xd835,0xdcd2,0xd835,0xdcd3, - 0xd835,0xdcd4,0xd835,0xdcd5,0xd835,0xdcd6,0xd835,0xdcd7,0xd835,0xdcd8, - 0xd835,0xdcd9,0xd835,0xdcda,0xd835,0xdcdb,0xd835,0xdcdc,0xd835,0xdcdd, - 0xd835,0xdcde,0xd835,0xdcdf,0xd835,0xdce0,0xd835,0xdce1,0xd835,0xdce2, - 0xd835,0xdce3,0xd835,0xdce4,0xd835,0xdce5,0xd835,0xdce6,0xd835,0xdce7, - 0xd835,0xdce8,0xd835,0xdce9,0xd835,0xdcea,0xd835,0xdceb,0xd835,0xdcec, - 0xd835,0xdced,0xd835,0xdcee,0xd835,0xdcef,0xd835,0xdcf0,0xd835,0xdcf1, - 0xd835,0xdcf2,0xd835,0xdcf3,0xd835,0xdcf4,0xd835,0xdcf5,0xd835,0xdcf6, - 0xd835,0xdcf7,0xd835,0xdcf8,0xd835,0xdcf9,0xd835,0xdcfa,0xd835,0xdcfb, - 0xd835,0xdcfc,0xd835,0xdcfd,0xd835,0xdcfe,0xd835,0xdcff,0xd835,0xdd00, - 0xd835,0xdd01,0xd835,0xdd02,0xd835,0xdd03,0xd835,0xdd04,0xd835,0xdd05, - 0xd835,0xdd07,0xd835,0xdd08,0xd835,0xdd09,0xd835,0xdd0a,0xd835,0xdd0d, - 0xd835,0xdd0e,0xd835,0xdd0f,0xd835,0xdd10,0xd835,0xdd11,0xd835,0xdd12, - 0xd835,0xdd13,0xd835,0xdd14,0xd835,0xdd16,0xd835,0xdd17,0xd835,0xdd18, - 0xd835,0xdd19,0xd835,0xdd1a,0xd835,0xdd1b,0xd835,0xdd1c,0xd835,0xdd1e, - 0xd835,0xdd1f,0xd835,0xdd20,0xd835,0xdd21,0xd835,0xdd22,0xd835,0xdd23, - 0xd835,0xdd24,0xd835,0xdd25,0xd835,0xdd26,0xd835,0xdd27,0xd835,0xdd28, - 0xd835,0xdd29,0xd835,0xdd2a,0xd835,0xdd2b,0xd835,0xdd2c,0xd835,0xdd2d, - 0xd835,0xdd2e,0xd835,0xdd2f,0xd835,0xdd30,0xd835,0xdd31,0xd835,0xdd32, - 0xd835,0xdd33,0xd835,0xdd34,0xd835,0xdd35,0xd835,0xdd36,0xd835,0xdd37, - 0xd835,0xdd38,0xd835,0xdd39,0xd835,0xdd3b,0xd835,0xdd3c,0xd835,0xdd3d, - 0xd835,0xdd3e,0xd835,0xdd40,0xd835,0xdd41,0xd835,0xdd42,0xd835,0xdd43, - 0xd835,0xdd44,0xd835,0xdd46,0xd835,0xdd4a,0xd835,0xdd4b,0xd835,0xdd4c, - 0xd835,0xdd4d,0xd835,0xdd4e,0xd835,0xdd4f,0xd835,0xdd50,0xd835,0xdd52, - 0xd835,0xdd53,0xd835,0xdd54,0xd835,0xdd55,0xd835,0xdd56,0xd835,0xdd57, - 0xd835,0xdd58,0xd835,0xdd59,0xd835,0xdd5a,0xd835,0xdd5b,0xd835,0xdd5c, - 0xd835,0xdd5d,0xd835,0xdd5e,0xd835,0xdd5f,0xd835,0xdd60,0xd835,0xdd61, - 0xd835,0xdd62,0xd835,0xdd63,0xd835,0xdd64,0xd835,0xdd65,0xd835,0xdd66, - 0xd835,0xdd67,0xd835,0xdd68,0xd835,0xdd69,0xd835,0xdd6a,0xd835,0xdd6b, - 0xd835,0xdd6c,0xd835,0xdd6d,0xd835,0xdd6e,0xd835,0xdd6f,0xd835,0xdd70, - 0xd835,0xdd71,0xd835,0xdd72,0xd835,0xdd73,0xd835,0xdd74,0xd835,0xdd75, - 0xd835,0xdd76,0xd835,0xdd77,0xd835,0xdd78,0xd835,0xdd79,0xd835,0xdd7a, - 0xd835,0xdd7b,0xd835,0xdd7c,0xd835,0xdd7d,0xd835,0xdd7e,0xd835,0xdd7f, - 0xd835,0xdd80,0xd835,0xdd81,0xd835,0xdd82,0xd835,0xdd83,0xd835,0xdd84, - 0xd835,0xdd85,0xd835,0xdd86,0xd835,0xdd87,0xd835,0xdd88,0xd835,0xdd89, - 0xd835,0xdd8a,0xd835,0xdd8b,0xd835,0xdd8c,0xd835,0xdd8d,0xd835,0xdd8e, - 0xd835,0xdd8f,0xd835,0xdd90,0xd835,0xdd91,0xd835,0xdd92,0xd835,0xdd93, - 0xd835,0xdd94,0xd835,0xdd95,0xd835,0xdd96,0xd835,0xdd97,0xd835,0xdd98, - 0xd835,0xdd99,0xd835,0xdd9a,0xd835,0xdd9b,0xd835,0xdd9c,0xd835,0xdd9d, - 0xd835,0xdd9e,0xd835,0xdd9f,0xd835,0xdda0,0xd835,0xdda1,0xd835,0xdda2, - 0xd835,0xdda3,0xd835,0xdda4,0xd835,0xdda5,0xd835,0xdda6,0xd835,0xdda7, - 0xd835,0xdda8,0xd835,0xdda9,0xd835,0xddaa,0xd835,0xddab,0xd835,0xddac, - 0xd835,0xddad,0xd835,0xddae,0xd835,0xddaf,0xd835,0xddb0,0xd835,0xddb1, - 0xd835,0xddb2,0xd835,0xddb3,0xd835,0xddb4,0xd835,0xddb5,0xd835,0xddb6, - 0xd835,0xddb7,0xd835,0xddb8,0xd835,0xddb9,0xd835,0xddba,0xd835,0xddbb, - 0xd835,0xddbc,0xd835,0xddbd,0xd835,0xddbe,0xd835,0xddbf,0xd835,0xddc0, - 0xd835,0xddc1,0xd835,0xddc2,0xd835,0xddc3,0xd835,0xddc4,0xd835,0xddc5, - 0xd835,0xddc6,0xd835,0xddc7,0xd835,0xddc8,0xd835,0xddc9,0xd835,0xddca, - 0xd835,0xddcb,0xd835,0xddcc,0xd835,0xddcd,0xd835,0xddce,0xd835,0xddcf, - 0xd835,0xddd0,0xd835,0xddd1,0xd835,0xddd2,0xd835,0xddd3,0xd835,0xddd4, - 0xd835,0xddd5,0xd835,0xddd6,0xd835,0xddd7,0xd835,0xddd8,0xd835,0xddd9, - 0xd835,0xddda,0xd835,0xdddb,0xd835,0xdddc,0xd835,0xdddd,0xd835,0xddde, - 0xd835,0xdddf,0xd835,0xdde0,0xd835,0xdde1,0xd835,0xdde2,0xd835,0xdde3, - 0xd835,0xdde4,0xd835,0xdde5,0xd835,0xdde6,0xd835,0xdde7,0xd835,0xdde8, - 0xd835,0xdde9,0xd835,0xddea,0xd835,0xddeb,0xd835,0xddec,0xd835,0xdded, - 0xd835,0xddee,0xd835,0xddef,0xd835,0xddf0,0xd835,0xddf1,0xd835,0xddf2, - 0xd835,0xddf3,0xd835,0xddf4,0xd835,0xddf5,0xd835,0xddf6,0xd835,0xddf7, - 0xd835,0xddf8,0xd835,0xddf9,0xd835,0xddfa,0xd835,0xddfb,0xd835,0xddfc, - 0xd835,0xddfd,0xd835,0xddfe,0xd835,0xddff,0xd835,0xde00,0xd835,0xde01, - 0xd835,0xde02,0xd835,0xde03,0xd835,0xde04,0xd835,0xde05,0xd835,0xde06, - 0xd835,0xde07,0xd835,0xde08,0xd835,0xde09,0xd835,0xde0a,0xd835,0xde0b, - 0xd835,0xde0c,0xd835,0xde0d,0xd835,0xde0e,0xd835,0xde0f,0xd835,0xde10, - 0xd835,0xde11,0xd835,0xde12,0xd835,0xde13,0xd835,0xde14,0xd835,0xde15, - 0xd835,0xde16,0xd835,0xde17,0xd835,0xde18,0xd835,0xde19,0xd835,0xde1a, - 0xd835,0xde1b,0xd835,0xde1c,0xd835,0xde1d,0xd835,0xde1e,0xd835,0xde1f, - 0xd835,0xde20,0xd835,0xde21,0xd835,0xde22,0xd835,0xde23,0xd835,0xde24, - 0xd835,0xde25,0xd835,0xde26,0xd835,0xde27,0xd835,0xde28,0xd835,0xde29, - 0xd835,0xde2a,0xd835,0xde2b,0xd835,0xde2c,0xd835,0xde2d,0xd835,0xde2e, - 0xd835,0xde2f,0xd835,0xde30,0xd835,0xde31,0xd835,0xde32,0xd835,0xde33, - 0xd835,0xde34,0xd835,0xde35,0xd835,0xde36,0xd835,0xde37,0xd835,0xde38, - 0xd835,0xde39,0xd835,0xde3a,0xd835,0xde3b,0xd835,0xde3c,0xd835,0xde3d, - 0xd835,0xde3e,0xd835,0xde3f,0xd835,0xde40,0xd835,0xde41,0xd835,0xde42, - 0xd835,0xde43,0xd835,0xde44,0xd835,0xde45,0xd835,0xde46,0xd835,0xde47, - 0xd835,0xde48,0xd835,0xde49,0xd835,0xde4a,0xd835,0xde4b,0xd835,0xde4c, - 0xd835,0xde4d,0xd835,0xde4e,0xd835,0xde4f,0xd835,0xde50,0xd835,0xde51, - 0xd835,0xde52,0xd835,0xde53,0xd835,0xde54,0xd835,0xde55,0xd835,0xde56, - 0xd835,0xde57,0xd835,0xde58,0xd835,0xde59,0xd835,0xde5a,0xd835,0xde5b, - 0xd835,0xde5c,0xd835,0xde5d,0xd835,0xde5e,0xd835,0xde5f,0xd835,0xde60, - 0xd835,0xde61,0xd835,0xde62,0xd835,0xde63,0xd835,0xde64,0xd835,0xde65, - 0xd835,0xde66,0xd835,0xde67,0xd835,0xde68,0xd835,0xde69,0xd835,0xde6a, - 0xd835,0xde6b,0xd835,0xde6c,0xd835,0xde6d,0xd835,0xde6e,0xd835,0xde6f, - 0xd835,0xde70,0xd835,0xde71,0xd835,0xde72,0xd835,0xde73,0xd835,0xde74, - 0xd835,0xde75,0xd835,0xde76,0xd835,0xde77,0xd835,0xde78,0xd835,0xde79, - 0xd835,0xde7a,0xd835,0xde7b,0xd835,0xde7c,0xd835,0xde7d,0xd835,0xde7e, - 0xd835,0xde7f,0xd835,0xde80,0xd835,0xde81,0xd835,0xde82,0xd835,0xde83, - 0xd835,0xde84,0xd835,0xde85,0xd835,0xde86,0xd835,0xde87,0xd835,0xde88, - 0xd835,0xde89,0xd835,0xde8a,0xd835,0xde8b,0xd835,0xde8c,0xd835,0xde8d, - 0xd835,0xde8e,0xd835,0xde8f,0xd835,0xde90,0xd835,0xde91,0xd835,0xde92, - 0xd835,0xde93,0xd835,0xde94,0xd835,0xde95,0xd835,0xde96,0xd835,0xde97, - 0xd835,0xde98,0xd835,0xde99,0xd835,0xde9a,0xd835,0xde9b,0xd835,0xde9c, - 0xd835,0xde9d,0xd835,0xde9e,0xd835,0xde9f,0xd835,0xdea0,0xd835,0xdea1, - 0xd835,0xdea2,0xd835,0xdea3,0xd835,0xdea4,0xd835,0xdea5,0xd835,0xdea8, - 0xd835,0xdea9,0xd835,0xdeaa,0xd835,0xdeab,0xd835,0xdeac,0xd835,0xdead, - 0xd835,0xdeae,0xd835,0xdeaf,0xd835,0xdeb0,0xd835,0xdeb1,0xd835,0xdeb2, - 0xd835,0xdeb3,0xd835,0xdeb4,0xd835,0xdeb5,0xd835,0xdeb6,0xd835,0xdeb7, - 0xd835,0xdeb8,0xd835,0xdeb9,0xd835,0xdeba,0xd835,0xdebb,0xd835,0xdebc, - 0xd835,0xdebd,0xd835,0xdebe,0xd835,0xdebf,0xd835,0xdec0,0xd835,0xdec1, - 0xd835,0xdec2,0xd835,0xdec3,0xd835,0xdec4,0xd835,0xdec5,0xd835,0xdec6, - 0xd835,0xdec7,0xd835,0xdec8,0xd835,0xdec9,0xd835,0xdeca,0xd835,0xdecb, - 0xd835,0xdecc,0xd835,0xdecd,0xd835,0xdece,0xd835,0xdecf,0xd835,0xded0, - 0xd835,0xded1,0xd835,0xded2,0xd835,0xded3,0xd835,0xded4,0xd835,0xded5, - 0xd835,0xded6,0xd835,0xded7,0xd835,0xded8,0xd835,0xded9,0xd835,0xdeda, - 0xd835,0xdedb,0xd835,0xdedc,0xd835,0xdedd,0xd835,0xdede,0xd835,0xdedf, - 0xd835,0xdee0,0xd835,0xdee1,0xd835,0xdee2,0xd835,0xdee3,0xd835,0xdee4, - 0xd835,0xdee5,0xd835,0xdee6,0xd835,0xdee7,0xd835,0xdee8,0xd835,0xdee9, - 0xd835,0xdeea,0xd835,0xdeeb,0xd835,0xdeec,0xd835,0xdeed,0xd835,0xdeee, - 0xd835,0xdeef,0xd835,0xdef0,0xd835,0xdef1,0xd835,0xdef2,0xd835,0xdef3, - 0xd835,0xdef4,0xd835,0xdef5,0xd835,0xdef6,0xd835,0xdef7,0xd835,0xdef8, - 0xd835,0xdef9,0xd835,0xdefa,0xd835,0xdefb,0xd835,0xdefc,0xd835,0xdefd, - 0xd835,0xdefe,0xd835,0xdeff,0xd835,0xdf00,0xd835,0xdf01,0xd835,0xdf02, - 0xd835,0xdf03,0xd835,0xdf04,0xd835,0xdf05,0xd835,0xdf06,0xd835,0xdf07, - 0xd835,0xdf08,0xd835,0xdf09,0xd835,0xdf0a,0xd835,0xdf0b,0xd835,0xdf0c, - 0xd835,0xdf0d,0xd835,0xdf0e,0xd835,0xdf0f,0xd835,0xdf10,0xd835,0xdf11, - 0xd835,0xdf12,0xd835,0xdf13,0xd835,0xdf14,0xd835,0xdf15,0xd835,0xdf16, - 0xd835,0xdf17,0xd835,0xdf18,0xd835,0xdf19,0xd835,0xdf1a,0xd835,0xdf1b, - 0xd835,0xdf1c,0xd835,0xdf1d,0xd835,0xdf1e,0xd835,0xdf1f,0xd835,0xdf20, - 0xd835,0xdf21,0xd835,0xdf22,0xd835,0xdf23,0xd835,0xdf24,0xd835,0xdf25, - 0xd835,0xdf26,0xd835,0xdf27,0xd835,0xdf28,0xd835,0xdf29,0xd835,0xdf2a, - 0xd835,0xdf2b,0xd835,0xdf2c,0xd835,0xdf2d,0xd835,0xdf2e,0xd835,0xdf2f, - 0xd835,0xdf30,0xd835,0xdf31,0xd835,0xdf32,0xd835,0xdf33,0xd835,0xdf34, - 0xd835,0xdf35,0xd835,0xdf36,0xd835,0xdf37,0xd835,0xdf38,0xd835,0xdf39, - 0xd835,0xdf3a,0xd835,0xdf3b,0xd835,0xdf3c,0xd835,0xdf3d,0xd835,0xdf3e, - 0xd835,0xdf3f,0xd835,0xdf40,0xd835,0xdf41,0xd835,0xdf42,0xd835,0xdf43, - 0xd835,0xdf44,0xd835,0xdf45,0xd835,0xdf46,0xd835,0xdf47,0xd835,0xdf48, - 0xd835,0xdf49,0xd835,0xdf4a,0xd835,0xdf4b,0xd835,0xdf4c,0xd835,0xdf4d, - 0xd835,0xdf4e,0xd835,0xdf4f,0xd835,0xdf50,0xd835,0xdf51,0xd835,0xdf52, - 0xd835,0xdf53,0xd835,0xdf54,0xd835,0xdf55,0xd835,0xdf56,0xd835,0xdf57, - 0xd835,0xdf58,0xd835,0xdf59,0xd835,0xdf5a,0xd835,0xdf5b,0xd835,0xdf5c, - 0xd835,0xdf5d,0xd835,0xdf5e,0xd835,0xdf5f,0xd835,0xdf60,0xd835,0xdf61, - 0xd835,0xdf62,0xd835,0xdf63,0xd835,0xdf64,0xd835,0xdf65,0xd835,0xdf66, - 0xd835,0xdf67,0xd835,0xdf68,0xd835,0xdf69,0xd835,0xdf6a,0xd835,0xdf6b, - 0xd835,0xdf6c,0xd835,0xdf6d,0xd835,0xdf6e,0xd835,0xdf6f,0xd835,0xdf70, - 0xd835,0xdf71,0xd835,0xdf72,0xd835,0xdf73,0xd835,0xdf74,0xd835,0xdf75, - 0xd835,0xdf76,0xd835,0xdf77,0xd835,0xdf78,0xd835,0xdf79,0xd835,0xdf7a, - 0xd835,0xdf7b,0xd835,0xdf7c,0xd835,0xdf7d,0xd835,0xdf7e,0xd835,0xdf7f, - 0xd835,0xdf80,0xd835,0xdf81,0xd835,0xdf82,0xd835,0xdf83,0xd835,0xdf84, - 0xd835,0xdf85,0xd835,0xdf86,0xd835,0xdf87,0xd835,0xdf88,0xd835,0xdf89, - 0xd835,0xdf8a,0xd835,0xdf8b,0xd835,0xdf8c,0xd835,0xdf8d,0xd835,0xdf8e, - 0xd835,0xdf8f,0xd835,0xdf90,0xd835,0xdf91,0xd835,0xdf92,0xd835,0xdf93, - 0xd835,0xdf94,0xd835,0xdf95,0xd835,0xdf96,0xd835,0xdf97,0xd835,0xdf98, - 0xd835,0xdf99,0xd835,0xdf9a,0xd835,0xdf9b,0xd835,0xdf9c,0xd835,0xdf9d, - 0xd835,0xdf9e,0xd835,0xdf9f,0xd835,0xdfa0,0xd835,0xdfa1,0xd835,0xdfa2, - 0xd835,0xdfa3,0xd835,0xdfa4,0xd835,0xdfa5,0xd835,0xdfa6,0xd835,0xdfa7, - 0xd835,0xdfa8,0xd835,0xdfa9,0xd835,0xdfaa,0xd835,0xdfab,0xd835,0xdfac, - 0xd835,0xdfad,0xd835,0xdfae,0xd835,0xdfaf,0xd835,0xdfb0,0xd835,0xdfb1, - 0xd835,0xdfb2,0xd835,0xdfb3,0xd835,0xdfb4,0xd835,0xdfb5,0xd835,0xdfb6, - 0xd835,0xdfb7,0xd835,0xdfb8,0xd835,0xdfb9,0xd835,0xdfba,0xd835,0xdfbb, - 0xd835,0xdfbc,0xd835,0xdfbd,0xd835,0xdfbe,0xd835,0xdfbf,0xd835,0xdfc0, - 0xd835,0xdfc1,0xd835,0xdfc2,0xd835,0xdfc3,0xd835,0xdfc4,0xd835,0xdfc5, - 0xd835,0xdfc6,0xd835,0xdfc7,0xd835,0xdfc8,0xd835,0xdfc9,0xd835,0xdfca, - 0xd835,0xdfcb,0xd840,0xdc00,0xd869,0xded6,0xd87e,0xdc00,0xd87e,0xdc01, - 0xd87e,0xdc02,0xd87e,0xdc03,0xd87e,0xdc04,0xd87e,0xdc05,0xd87e,0xdc06, - 0xd87e,0xdc07,0xd87e,0xdc08,0xd87e,0xdc09,0xd87e,0xdc0a,0xd87e,0xdc0b, - 0xd87e,0xdc0c,0xd87e,0xdc0d,0xd87e,0xdc0e,0xd87e,0xdc0f,0xd87e,0xdc10, - 0xd87e,0xdc11,0xd87e,0xdc12,0xd87e,0xdc13,0xd87e,0xdc14,0xd87e,0xdc15, - 0xd87e,0xdc16,0xd87e,0xdc17,0xd87e,0xdc18,0xd87e,0xdc19,0xd87e,0xdc1a, - 0xd87e,0xdc1b,0xd87e,0xdc1c,0xd87e,0xdc1d,0xd87e,0xdc1e,0xd87e,0xdc1f, - 0xd87e,0xdc20,0xd87e,0xdc21,0xd87e,0xdc22,0xd87e,0xdc23,0xd87e,0xdc24, - 0xd87e,0xdc25,0xd87e,0xdc26,0xd87e,0xdc27,0xd87e,0xdc28,0xd87e,0xdc29, - 0xd87e,0xdc2a,0xd87e,0xdc2b,0xd87e,0xdc2c,0xd87e,0xdc2d,0xd87e,0xdc2e, - 0xd87e,0xdc2f,0xd87e,0xdc30,0xd87e,0xdc31,0xd87e,0xdc32,0xd87e,0xdc33, - 0xd87e,0xdc34,0xd87e,0xdc35,0xd87e,0xdc36,0xd87e,0xdc37,0xd87e,0xdc38, - 0xd87e,0xdc39,0xd87e,0xdc3a,0xd87e,0xdc3b,0xd87e,0xdc3c,0xd87e,0xdc3d, - 0xd87e,0xdc3e,0xd87e,0xdc3f,0xd87e,0xdc40,0xd87e,0xdc41,0xd87e,0xdc42, - 0xd87e,0xdc43,0xd87e,0xdc44,0xd87e,0xdc45,0xd87e,0xdc46,0xd87e,0xdc47, - 0xd87e,0xdc48,0xd87e,0xdc49,0xd87e,0xdc4a,0xd87e,0xdc4b,0xd87e,0xdc4c, - 0xd87e,0xdc4d,0xd87e,0xdc4e,0xd87e,0xdc4f,0xd87e,0xdc50,0xd87e,0xdc51, - 0xd87e,0xdc52,0xd87e,0xdc53,0xd87e,0xdc54,0xd87e,0xdc55,0xd87e,0xdc56, - 0xd87e,0xdc57,0xd87e,0xdc58,0xd87e,0xdc59,0xd87e,0xdc5a,0xd87e,0xdc5b, - 0xd87e,0xdc5c,0xd87e,0xdc5d,0xd87e,0xdc5e,0xd87e,0xdc5f,0xd87e,0xdc60, - 0xd87e,0xdc61,0xd87e,0xdc62,0xd87e,0xdc63,0xd87e,0xdc64,0xd87e,0xdc65, - 0xd87e,0xdc66,0xd87e,0xdc67,0xd87e,0xdc68,0xd87e,0xdc69,0xd87e,0xdc6a, - 0xd87e,0xdc6b,0xd87e,0xdc6c,0xd87e,0xdc6d,0xd87e,0xdc6e,0xd87e,0xdc6f, - 0xd87e,0xdc70,0xd87e,0xdc71,0xd87e,0xdc72,0xd87e,0xdc73,0xd87e,0xdc74, - 0xd87e,0xdc75,0xd87e,0xdc76,0xd87e,0xdc77,0xd87e,0xdc78,0xd87e,0xdc79, - 0xd87e,0xdc7a,0xd87e,0xdc7b,0xd87e,0xdc7c,0xd87e,0xdc7d,0xd87e,0xdc7e, - 0xd87e,0xdc7f,0xd87e,0xdc80,0xd87e,0xdc81,0xd87e,0xdc82,0xd87e,0xdc83, - 0xd87e,0xdc84,0xd87e,0xdc85,0xd87e,0xdc86,0xd87e,0xdc87,0xd87e,0xdc88, - 0xd87e,0xdc89,0xd87e,0xdc8a,0xd87e,0xdc8b,0xd87e,0xdc8c,0xd87e,0xdc8d, - 0xd87e,0xdc8e,0xd87e,0xdc8f,0xd87e,0xdc90,0xd87e,0xdc91,0xd87e,0xdc92, - 0xd87e,0xdc93,0xd87e,0xdc94,0xd87e,0xdc95,0xd87e,0xdc96,0xd87e,0xdc97, - 0xd87e,0xdc98,0xd87e,0xdc99,0xd87e,0xdc9a,0xd87e,0xdc9b,0xd87e,0xdc9c, - 0xd87e,0xdc9d,0xd87e,0xdc9e,0xd87e,0xdc9f,0xd87e,0xdca0,0xd87e,0xdca1, - 0xd87e,0xdca2,0xd87e,0xdca3,0xd87e,0xdca4,0xd87e,0xdca5,0xd87e,0xdca6, - 0xd87e,0xdca7,0xd87e,0xdca8,0xd87e,0xdca9,0xd87e,0xdcaa,0xd87e,0xdcab, - 0xd87e,0xdcac,0xd87e,0xdcad,0xd87e,0xdcae,0xd87e,0xdcaf,0xd87e,0xdcb0, - 0xd87e,0xdcb1,0xd87e,0xdcb2,0xd87e,0xdcb3,0xd87e,0xdcb4,0xd87e,0xdcb5, - 0xd87e,0xdcb6,0xd87e,0xdcb7,0xd87e,0xdcb8,0xd87e,0xdcb9,0xd87e,0xdcba, - 0xd87e,0xdcbb,0xd87e,0xdcbc,0xd87e,0xdcbd,0xd87e,0xdcbe,0xd87e,0xdcbf, - 0xd87e,0xdcc0,0xd87e,0xdcc1,0xd87e,0xdcc2,0xd87e,0xdcc3,0xd87e,0xdcc4, - 0xd87e,0xdcc5,0xd87e,0xdcc6,0xd87e,0xdcc7,0xd87e,0xdcc8,0xd87e,0xdcc9, - 0xd87e,0xdcca,0xd87e,0xdccb,0xd87e,0xdccc,0xd87e,0xdccd,0xd87e,0xdcce, - 0xd87e,0xdccf,0xd87e,0xdcd0,0xd87e,0xdcd1,0xd87e,0xdcd2,0xd87e,0xdcd3, - 0xd87e,0xdcd4,0xd87e,0xdcd5,0xd87e,0xdcd6,0xd87e,0xdcd7,0xd87e,0xdcd8, - 0xd87e,0xdcd9,0xd87e,0xdcda,0xd87e,0xdcdb,0xd87e,0xdcdc,0xd87e,0xdcdd, - 0xd87e,0xdcde,0xd87e,0xdcdf,0xd87e,0xdce0,0xd87e,0xdce1,0xd87e,0xdce2, - 0xd87e,0xdce3,0xd87e,0xdce4,0xd87e,0xdce5,0xd87e,0xdce6,0xd87e,0xdce7, - 0xd87e,0xdce8,0xd87e,0xdce9,0xd87e,0xdcea,0xd87e,0xdceb,0xd87e,0xdcec, - 0xd87e,0xdced,0xd87e,0xdcee,0xd87e,0xdcef,0xd87e,0xdcf0,0xd87e,0xdcf1, - 0xd87e,0xdcf2,0xd87e,0xdcf3,0xd87e,0xdcf4,0xd87e,0xdcf5,0xd87e,0xdcf6, - 0xd87e,0xdcf7,0xd87e,0xdcf8,0xd87e,0xdcf9,0xd87e,0xdcfa,0xd87e,0xdcfb, - 0xd87e,0xdcfc,0xd87e,0xdcfd,0xd87e,0xdcfe,0xd87e,0xdcff,0xd87e,0xdd00, - 0xd87e,0xdd01,0xd87e,0xdd02,0xd87e,0xdd03,0xd87e,0xdd04,0xd87e,0xdd05, - 0xd87e,0xdd06,0xd87e,0xdd07,0xd87e,0xdd08,0xd87e,0xdd09,0xd87e,0xdd0a, - 0xd87e,0xdd0b,0xd87e,0xdd0c,0xd87e,0xdd0d,0xd87e,0xdd0e,0xd87e,0xdd0f, - 0xd87e,0xdd10,0xd87e,0xdd11,0xd87e,0xdd12,0xd87e,0xdd13,0xd87e,0xdd14, - 0xd87e,0xdd15,0xd87e,0xdd16,0xd87e,0xdd17,0xd87e,0xdd18,0xd87e,0xdd19, - 0xd87e,0xdd1a,0xd87e,0xdd1b,0xd87e,0xdd1c,0xd87e,0xdd1d,0xd87e,0xdd1e, - 0xd87e,0xdd1f,0xd87e,0xdd20,0xd87e,0xdd21,0xd87e,0xdd22,0xd87e,0xdd23, - 0xd87e,0xdd24,0xd87e,0xdd25,0xd87e,0xdd26,0xd87e,0xdd27,0xd87e,0xdd28, - 0xd87e,0xdd29,0xd87e,0xdd2a,0xd87e,0xdd2b,0xd87e,0xdd2c,0xd87e,0xdd2d, - 0xd87e,0xdd2e,0xd87e,0xdd2f,0xd87e,0xdd30,0xd87e,0xdd31,0xd87e,0xdd32, - 0xd87e,0xdd33,0xd87e,0xdd34,0xd87e,0xdd35,0xd87e,0xdd36,0xd87e,0xdd37, - 0xd87e,0xdd38,0xd87e,0xdd39,0xd87e,0xdd3a,0xd87e,0xdd3b,0xd87e,0xdd3c, - 0xd87e,0xdd3d,0xd87e,0xdd3e,0xd87e,0xdd3f,0xd87e,0xdd40,0xd87e,0xdd41, - 0xd87e,0xdd42,0xd87e,0xdd43,0xd87e,0xdd44,0xd87e,0xdd45,0xd87e,0xdd46, - 0xd87e,0xdd47,0xd87e,0xdd48,0xd87e,0xdd49,0xd87e,0xdd4a,0xd87e,0xdd4b, - 0xd87e,0xdd4c,0xd87e,0xdd4d,0xd87e,0xdd4e,0xd87e,0xdd4f,0xd87e,0xdd50, - 0xd87e,0xdd51,0xd87e,0xdd52,0xd87e,0xdd53,0xd87e,0xdd54,0xd87e,0xdd55, - 0xd87e,0xdd56,0xd87e,0xdd57,0xd87e,0xdd58,0xd87e,0xdd59,0xd87e,0xdd5a, - 0xd87e,0xdd5b,0xd87e,0xdd5c,0xd87e,0xdd5d,0xd87e,0xdd5e,0xd87e,0xdd5f, - 0xd87e,0xdd60,0xd87e,0xdd61,0xd87e,0xdd62,0xd87e,0xdd63,0xd87e,0xdd64, - 0xd87e,0xdd65,0xd87e,0xdd66,0xd87e,0xdd67,0xd87e,0xdd68,0xd87e,0xdd69, - 0xd87e,0xdd6a,0xd87e,0xdd6b,0xd87e,0xdd6c,0xd87e,0xdd6d,0xd87e,0xdd6e, - 0xd87e,0xdd6f,0xd87e,0xdd70,0xd87e,0xdd71,0xd87e,0xdd72,0xd87e,0xdd73, - 0xd87e,0xdd74,0xd87e,0xdd75,0xd87e,0xdd76,0xd87e,0xdd77,0xd87e,0xdd78, - 0xd87e,0xdd79,0xd87e,0xdd7a,0xd87e,0xdd7b,0xd87e,0xdd7c,0xd87e,0xdd7d, - 0xd87e,0xdd7e,0xd87e,0xdd7f,0xd87e,0xdd80,0xd87e,0xdd81,0xd87e,0xdd82, - 0xd87e,0xdd83,0xd87e,0xdd84,0xd87e,0xdd85,0xd87e,0xdd86,0xd87e,0xdd87, - 0xd87e,0xdd88,0xd87e,0xdd89,0xd87e,0xdd8a,0xd87e,0xdd8b,0xd87e,0xdd8c, - 0xd87e,0xdd8d,0xd87e,0xdd8e,0xd87e,0xdd8f,0xd87e,0xdd90,0xd87e,0xdd91, - 0xd87e,0xdd92,0xd87e,0xdd93,0xd87e,0xdd94,0xd87e,0xdd95,0xd87e,0xdd96, - 0xd87e,0xdd97,0xd87e,0xdd98,0xd87e,0xdd99,0xd87e,0xdd9a,0xd87e,0xdd9b, - 0xd87e,0xdd9c,0xd87e,0xdd9d,0xd87e,0xdd9e,0xd87e,0xdd9f,0xd87e,0xdda0, - 0xd87e,0xdda1,0xd87e,0xdda2,0xd87e,0xdda3,0xd87e,0xdda4,0xd87e,0xdda5, - 0xd87e,0xdda6,0xd87e,0xdda7,0xd87e,0xdda8,0xd87e,0xdda9,0xd87e,0xddaa, - 0xd87e,0xddab,0xd87e,0xddac,0xd87e,0xddad,0xd87e,0xddae,0xd87e,0xddaf, - 0xd87e,0xddb0,0xd87e,0xddb1,0xd87e,0xddb2,0xd87e,0xddb3,0xd87e,0xddb4, - 0xd87e,0xddb5,0xd87e,0xddb6,0xd87e,0xddb7,0xd87e,0xddb8,0xd87e,0xddb9, - 0xd87e,0xddba,0xd87e,0xddbb,0xd87e,0xddbc,0xd87e,0xddbd,0xd87e,0xddbe, - 0xd87e,0xddbf,0xd87e,0xddc0,0xd87e,0xddc1,0xd87e,0xddc2,0xd87e,0xddc3, - 0xd87e,0xddc4,0xd87e,0xddc5,0xd87e,0xddc6,0xd87e,0xddc7,0xd87e,0xddc8, - 0xd87e,0xddc9,0xd87e,0xddca,0xd87e,0xddcb,0xd87e,0xddcc,0xd87e,0xddcd, - 0xd87e,0xddce,0xd87e,0xddcf,0xd87e,0xddd0,0xd87e,0xddd1,0xd87e,0xddd2, - 0xd87e,0xddd3,0xd87e,0xddd4,0xd87e,0xddd5,0xd87e,0xddd6,0xd87e,0xddd7, - 0xd87e,0xddd8,0xd87e,0xddd9,0xd87e,0xddda,0xd87e,0xdddb,0xd87e,0xdddc, - 0xd87e,0xdddd,0xd87e,0xddde,0xd87e,0xdddf,0xd87e,0xdde0,0xd87e,0xdde1, - 0xd87e,0xdde2,0xd87e,0xdde3,0xd87e,0xdde4,0xd87e,0xdde5,0xd87e,0xdde6, - 0xd87e,0xdde7,0xd87e,0xdde8,0xd87e,0xdde9,0xd87e,0xddea,0xd87e,0xddeb, - 0xd87e,0xddec,0xd87e,0xdded,0xd87e,0xddee,0xd87e,0xddef,0xd87e,0xddf0, - 0xd87e,0xddf1,0xd87e,0xddf2,0xd87e,0xddf3,0xd87e,0xddf4,0xd87e,0xddf5, - 0xd87e,0xddf6,0xd87e,0xddf7,0xd87e,0xddf8,0xd87e,0xddf9,0xd87e,0xddfa, - 0xd87e,0xddfb,0xd87e,0xddfc,0xd87e,0xddfd,0xd87e,0xddfe,0xd87e,0xddff, - 0xd87e,0xde00,0xd87e,0xde01,0xd87e,0xde02,0xd87e,0xde03,0xd87e,0xde04, - 0xd87e,0xde05,0xd87e,0xde06,0xd87e,0xde07,0xd87e,0xde08,0xd87e,0xde09, - 0xd87e,0xde0a,0xd87e,0xde0b,0xd87e,0xde0c,0xd87e,0xde0d,0xd87e,0xde0e, - 0xd87e,0xde0f,0xd87e,0xde10,0xd87e,0xde11,0xd87e,0xde12,0xd87e,0xde13, - 0xd87e,0xde14,0xd87e,0xde15,0xd87e,0xde16,0xd87e,0xde17,0xd87e,0xde18, - 0xd87e,0xde19,0xd87e,0xde1a,0xd87e,0xde1b,0xd87e,0xde1c,0xd87e,0xde1d, - 0xdb80,0xdc00,0xdbbf,0xdffd,0xdbc0,0xdc00,0xdbff,0xdffd, -}; -static const TUint KLeftToRightLength = 8309 + 6998; - -// This constant defines the Unicode characters in the "LeftToRightOverride" (LRO) category. -static const TUint16 KLeftToRightOverride[] = - { - 0x202d - }; - -// This constant defines the Unicode characters in the "RightToLeft" (R) category. -static const TUint16 KRightToLeft[] = - { - 0x05be,0x05c0,0x05c3,0x05c6,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,0x05f0,0x05f1,0x05f2,0x05f3,0x05f4,0x07c0,0x07c1,0x07c2,0x07c3, - 0x07c4,0x07c5,0x07c6,0x07c7,0x07c8,0x07c9,0x07ca,0x07cb,0x07cc,0x07cd, - 0x07ce,0x07cf,0x07d0,0x07d1,0x07d2,0x07d3,0x07d4,0x07d5,0x07d6,0x07d7, - 0x07d8,0x07d9,0x07da,0x07db,0x07dc,0x07dd,0x07de,0x07df,0x07e0,0x07e1, - 0x07e2,0x07e3,0x07e4,0x07e5,0x07e6,0x07e7,0x07e8,0x07e9,0x07ea,0x07f4, - 0x07f5,0x07fa,0x200f,0xfb1d,0xfb1f,0xfb20,0xfb21,0xfb22,0xfb23,0xfb24, - 0xfb25,0xfb26,0xfb27,0xfb28,0xfb2a,0xfb2b,0xfb2c,0xfb2d,0xfb2e,0xfb2f, - 0xfb30,0xfb31,0xfb32,0xfb33,0xfb34,0xfb35,0xfb36,0xfb38,0xfb39,0xfb3a, - 0xfb3b,0xfb3c,0xfb3e,0xfb40,0xfb41,0xfb43,0xfb44,0xfb46,0xfb47,0xfb48, - 0xfb49,0xfb4a,0xfb4b,0xfb4c,0xfb4d,0xfb4e,0xfb4f,0xd802,0xdc00, - 0xd802,0xdc01,0xd802,0xdc02,0xd802,0xdc03,0xd802,0xdc04,0xd802,0xdc05, - 0xd802,0xdc08,0xd802,0xdc0a,0xd802,0xdc0b,0xd802,0xdc0c,0xd802,0xdc0d, - 0xd802,0xdc0e,0xd802,0xdc0f,0xd802,0xdc10,0xd802,0xdc11,0xd802,0xdc12, - 0xd802,0xdc13,0xd802,0xdc14,0xd802,0xdc15,0xd802,0xdc16,0xd802,0xdc17, - 0xd802,0xdc18,0xd802,0xdc19,0xd802,0xdc1a,0xd802,0xdc1b,0xd802,0xdc1c, - 0xd802,0xdc1d,0xd802,0xdc1e,0xd802,0xdc1f,0xd802,0xdc20,0xd802,0xdc21, - 0xd802,0xdc22,0xd802,0xdc23,0xd802,0xdc24,0xd802,0xdc25,0xd802,0xdc26, - 0xd802,0xdc27,0xd802,0xdc28,0xd802,0xdc29,0xd802,0xdc2a,0xd802,0xdc2b, - 0xd802,0xdc2c,0xd802,0xdc2d,0xd802,0xdc2e,0xd802,0xdc2f,0xd802,0xdc30, - 0xd802,0xdc31,0xd802,0xdc32,0xd802,0xdc33,0xd802,0xdc34,0xd802,0xdc35, - 0xd802,0xdc37,0xd802,0xdc38,0xd802,0xdc3c,0xd802,0xdc3f,0xd802,0xdd00, - 0xd802,0xdd01,0xd802,0xdd02,0xd802,0xdd03,0xd802,0xdd04,0xd802,0xdd05, - 0xd802,0xdd06,0xd802,0xdd07,0xd802,0xdd08,0xd802,0xdd09,0xd802,0xdd0a, - 0xd802,0xdd0b,0xd802,0xdd0c,0xd802,0xdd0d,0xd802,0xdd0e,0xd802,0xdd0f, - 0xd802,0xdd10,0xd802,0xdd11,0xd802,0xdd12,0xd802,0xdd13,0xd802,0xdd14, - 0xd802,0xdd15,0xd802,0xdd16,0xd802,0xdd17,0xd802,0xdd18,0xd802,0xdd19, - 0xd802,0xde00,0xd802,0xde10,0xd802,0xde11,0xd802,0xde12,0xd802,0xde13, - 0xd802,0xde15,0xd802,0xde16,0xd802,0xde17,0xd802,0xde19,0xd802,0xde1a, - 0xd802,0xde1b,0xd802,0xde1c,0xd802,0xde1d,0xd802,0xde1e,0xd802,0xde1f, - 0xd802,0xde20,0xd802,0xde21,0xd802,0xde22,0xd802,0xde23,0xd802,0xde24, - 0xd802,0xde25,0xd802,0xde26,0xd802,0xde27,0xd802,0xde28,0xd802,0xde29, - 0xd802,0xde2a,0xd802,0xde2b,0xd802,0xde2c,0xd802,0xde2d,0xd802,0xde2e, - 0xd802,0xde2f,0xd802,0xde30,0xd802,0xde31,0xd802,0xde32,0xd802,0xde33, - 0xd802,0xde40,0xd802,0xde41,0xd802,0xde42,0xd802,0xde43,0xd802,0xde44, - 0xd802,0xde45,0xd802,0xde46,0xd802,0xde47,0xd802,0xde50,0xd802,0xde51, - 0xd802,0xde52,0xd802,0xde53,0xd802,0xde54,0xd802,0xde55,0xd802,0xde56, - 0xd802,0xde57,0xd802,0xde58, - }; -static const TUint KRightToLeftLength = 127 + 266; - -// This constant defines the Unicode characters in the "RightToLeftArabic" (AL) category. -static const TUint16 KRightToLeftArabic[] = - { - 0x0600,0x0601,0x0602,0x0603,0x060b,0x060d,0x061b,0x061e,0x061f,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,0x0640,0x0641,0x0642,0x0643,0x0644, - 0x0645,0x0646,0x0647,0x0648,0x0649,0x064a,0x066d,0x066e,0x066f,0x0671, - 0x0672,0x0673,0x0674,0x0675,0x0676,0x0677,0x0678,0x0679,0x067a,0x067b, - 0x067c,0x067d,0x067e,0x067f,0x0680,0x0681,0x0682,0x0683,0x0684,0x0685, - 0x0686,0x0687,0x0688,0x0689,0x068a,0x068b,0x068c,0x068d,0x068e,0x068f, - 0x0690,0x0691,0x0692,0x0693,0x0694,0x0695,0x0696,0x0697,0x0698,0x0699, - 0x069a,0x069b,0x069c,0x069d,0x069e,0x069f,0x06a0,0x06a1,0x06a2,0x06a3, - 0x06a4,0x06a5,0x06a6,0x06a7,0x06a8,0x06a9,0x06aa,0x06ab,0x06ac,0x06ad, - 0x06ae,0x06af,0x06b0,0x06b1,0x06b2,0x06b3,0x06b4,0x06b5,0x06b6,0x06b7, - 0x06b8,0x06b9,0x06ba,0x06bb,0x06bc,0x06bd,0x06be,0x06bf,0x06c0,0x06c1, - 0x06c2,0x06c3,0x06c4,0x06c5,0x06c6,0x06c7,0x06c8,0x06c9,0x06ca,0x06cb, - 0x06cc,0x06cd,0x06ce,0x06cf,0x06d0,0x06d1,0x06d2,0x06d3,0x06d4,0x06d5, - 0x06dd,0x06e5,0x06e6,0x06ee,0x06ef,0x06fa,0x06fb,0x06fc,0x06fd,0x06fe, - 0x06ff,0x0700,0x0701,0x0702,0x0703,0x0704,0x0705,0x0706,0x0707,0x0708, - 0x0709,0x070a,0x070b,0x070c,0x070d,0x0710,0x0712,0x0713,0x0714,0x0715, - 0x0716,0x0717,0x0718,0x0719,0x071a,0x071b,0x071c,0x071d,0x071e,0x071f, - 0x0720,0x0721,0x0722,0x0723,0x0724,0x0725,0x0726,0x0727,0x0728,0x0729, - 0x072a,0x072b,0x072c,0x072d,0x072e,0x072f,0x074d,0x074e,0x074f,0x0750, - 0x0751,0x0752,0x0753,0x0754,0x0755,0x0756,0x0757,0x0758,0x0759,0x075a, - 0x075b,0x075c,0x075d,0x075e,0x075f,0x0760,0x0761,0x0762,0x0763,0x0764, - 0x0765,0x0766,0x0767,0x0768,0x0769,0x076a,0x076b,0x076c,0x076d,0x0780, - 0x0781,0x0782,0x0783,0x0784,0x0785,0x0786,0x0787,0x0788,0x0789,0x078a, - 0x078b,0x078c,0x078d,0x078e,0x078f,0x0790,0x0791,0x0792,0x0793,0x0794, - 0x0795,0x0796,0x0797,0x0798,0x0799,0x079a,0x079b,0x079c,0x079d,0x079e, - 0x079f,0x07a0,0x07a1,0x07a2,0x07a3,0x07a4,0x07a5,0x07b1,0xfb50,0xfb51, - 0xfb52,0xfb53,0xfb54,0xfb55,0xfb56,0xfb57,0xfb58,0xfb59,0xfb5a,0xfb5b, - 0xfb5c,0xfb5d,0xfb5e,0xfb5f,0xfb60,0xfb61,0xfb62,0xfb63,0xfb64,0xfb65, - 0xfb66,0xfb67,0xfb68,0xfb69,0xfb6a,0xfb6b,0xfb6c,0xfb6d,0xfb6e,0xfb6f, - 0xfb70,0xfb71,0xfb72,0xfb73,0xfb74,0xfb75,0xfb76,0xfb77,0xfb78,0xfb79, - 0xfb7a,0xfb7b,0xfb7c,0xfb7d,0xfb7e,0xfb7f,0xfb80,0xfb81,0xfb82,0xfb83, - 0xfb84,0xfb85,0xfb86,0xfb87,0xfb88,0xfb89,0xfb8a,0xfb8b,0xfb8c,0xfb8d, - 0xfb8e,0xfb8f,0xfb90,0xfb91,0xfb92,0xfb93,0xfb94,0xfb95,0xfb96,0xfb97, - 0xfb98,0xfb99,0xfb9a,0xfb9b,0xfb9c,0xfb9d,0xfb9e,0xfb9f,0xfba0,0xfba1, - 0xfba2,0xfba3,0xfba4,0xfba5,0xfba6,0xfba7,0xfba8,0xfba9,0xfbaa,0xfbab, - 0xfbac,0xfbad,0xfbae,0xfbaf,0xfbb0,0xfbb1,0xfbd3,0xfbd4,0xfbd5,0xfbd6, - 0xfbd7,0xfbd8,0xfbd9,0xfbda,0xfbdb,0xfbdc,0xfbdd,0xfbde,0xfbdf,0xfbe0, - 0xfbe1,0xfbe2,0xfbe3,0xfbe4,0xfbe5,0xfbe6,0xfbe7,0xfbe8,0xfbe9,0xfbea, - 0xfbeb,0xfbec,0xfbed,0xfbee,0xfbef,0xfbf0,0xfbf1,0xfbf2,0xfbf3,0xfbf4, - 0xfbf5,0xfbf6,0xfbf7,0xfbf8,0xfbf9,0xfbfa,0xfbfb,0xfbfc,0xfbfd,0xfbfe, - 0xfbff,0xfc00,0xfc01,0xfc02,0xfc03,0xfc04,0xfc05,0xfc06,0xfc07,0xfc08, - 0xfc09,0xfc0a,0xfc0b,0xfc0c,0xfc0d,0xfc0e,0xfc0f,0xfc10,0xfc11,0xfc12, - 0xfc13,0xfc14,0xfc15,0xfc16,0xfc17,0xfc18,0xfc19,0xfc1a,0xfc1b,0xfc1c, - 0xfc1d,0xfc1e,0xfc1f,0xfc20,0xfc21,0xfc22,0xfc23,0xfc24,0xfc25,0xfc26, - 0xfc27,0xfc28,0xfc29,0xfc2a,0xfc2b,0xfc2c,0xfc2d,0xfc2e,0xfc2f,0xfc30, - 0xfc31,0xfc32,0xfc33,0xfc34,0xfc35,0xfc36,0xfc37,0xfc38,0xfc39,0xfc3a, - 0xfc3b,0xfc3c,0xfc3d,0xfc3e,0xfc3f,0xfc40,0xfc41,0xfc42,0xfc43,0xfc44, - 0xfc45,0xfc46,0xfc47,0xfc48,0xfc49,0xfc4a,0xfc4b,0xfc4c,0xfc4d,0xfc4e, - 0xfc4f,0xfc50,0xfc51,0xfc52,0xfc53,0xfc54,0xfc55,0xfc56,0xfc57,0xfc58, - 0xfc59,0xfc5a,0xfc5b,0xfc5c,0xfc5d,0xfc5e,0xfc5f,0xfc60,0xfc61,0xfc62, - 0xfc63,0xfc64,0xfc65,0xfc66,0xfc67,0xfc68,0xfc69,0xfc6a,0xfc6b,0xfc6c, - 0xfc6d,0xfc6e,0xfc6f,0xfc70,0xfc71,0xfc72,0xfc73,0xfc74,0xfc75,0xfc76, - 0xfc77,0xfc78,0xfc79,0xfc7a,0xfc7b,0xfc7c,0xfc7d,0xfc7e,0xfc7f,0xfc80, - 0xfc81,0xfc82,0xfc83,0xfc84,0xfc85,0xfc86,0xfc87,0xfc88,0xfc89,0xfc8a, - 0xfc8b,0xfc8c,0xfc8d,0xfc8e,0xfc8f,0xfc90,0xfc91,0xfc92,0xfc93,0xfc94, - 0xfc95,0xfc96,0xfc97,0xfc98,0xfc99,0xfc9a,0xfc9b,0xfc9c,0xfc9d,0xfc9e, - 0xfc9f,0xfca0,0xfca1,0xfca2,0xfca3,0xfca4,0xfca5,0xfca6,0xfca7,0xfca8, - 0xfca9,0xfcaa,0xfcab,0xfcac,0xfcad,0xfcae,0xfcaf,0xfcb0,0xfcb1,0xfcb2, - 0xfcb3,0xfcb4,0xfcb5,0xfcb6,0xfcb7,0xfcb8,0xfcb9,0xfcba,0xfcbb,0xfcbc, - 0xfcbd,0xfcbe,0xfcbf,0xfcc0,0xfcc1,0xfcc2,0xfcc3,0xfcc4,0xfcc5,0xfcc6, - 0xfcc7,0xfcc8,0xfcc9,0xfcca,0xfccb,0xfccc,0xfccd,0xfcce,0xfccf,0xfcd0, - 0xfcd1,0xfcd2,0xfcd3,0xfcd4,0xfcd5,0xfcd6,0xfcd7,0xfcd8,0xfcd9,0xfcda, - 0xfcdb,0xfcdc,0xfcdd,0xfcde,0xfcdf,0xfce0,0xfce1,0xfce2,0xfce3,0xfce4, - 0xfce5,0xfce6,0xfce7,0xfce8,0xfce9,0xfcea,0xfceb,0xfcec,0xfced,0xfcee, - 0xfcef,0xfcf0,0xfcf1,0xfcf2,0xfcf3,0xfcf4,0xfcf5,0xfcf6,0xfcf7,0xfcf8, - 0xfcf9,0xfcfa,0xfcfb,0xfcfc,0xfcfd,0xfcfe,0xfcff,0xfd00,0xfd01,0xfd02, - 0xfd03,0xfd04,0xfd05,0xfd06,0xfd07,0xfd08,0xfd09,0xfd0a,0xfd0b,0xfd0c, - 0xfd0d,0xfd0e,0xfd0f,0xfd10,0xfd11,0xfd12,0xfd13,0xfd14,0xfd15,0xfd16, - 0xfd17,0xfd18,0xfd19,0xfd1a,0xfd1b,0xfd1c,0xfd1d,0xfd1e,0xfd1f,0xfd20, - 0xfd21,0xfd22,0xfd23,0xfd24,0xfd25,0xfd26,0xfd27,0xfd28,0xfd29,0xfd2a, - 0xfd2b,0xfd2c,0xfd2d,0xfd2e,0xfd2f,0xfd30,0xfd31,0xfd32,0xfd33,0xfd34, - 0xfd35,0xfd36,0xfd37,0xfd38,0xfd39,0xfd3a,0xfd3b,0xfd3c,0xfd3d,0xfd50, - 0xfd51,0xfd52,0xfd53,0xfd54,0xfd55,0xfd56,0xfd57,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,0xfd7f,0xfd80,0xfd81,0xfd82, - 0xfd83,0xfd84,0xfd85,0xfd86,0xfd87,0xfd88,0xfd89,0xfd8a,0xfd8b,0xfd8c, - 0xfd8d,0xfd8e,0xfd8f,0xfd92,0xfd93,0xfd94,0xfd95,0xfd96,0xfd97,0xfd98, - 0xfd99,0xfd9a,0xfd9b,0xfd9c,0xfd9d,0xfd9e,0xfd9f,0xfda0,0xfda1,0xfda2, - 0xfda3,0xfda4,0xfda5,0xfda6,0xfda7,0xfda8,0xfda9,0xfdaa,0xfdab,0xfdac, - 0xfdad,0xfdae,0xfdaf,0xfdb0,0xfdb1,0xfdb2,0xfdb3,0xfdb4,0xfdb5,0xfdb6, - 0xfdb7,0xfdb8,0xfdb9,0xfdba,0xfdbb,0xfdbc,0xfdbd,0xfdbe,0xfdbf,0xfdc0, - 0xfdc1,0xfdc2,0xfdc3,0xfdc4,0xfdc5,0xfdc6,0xfdc7,0xfdf0,0xfdf1,0xfdf2, - 0xfdf3,0xfdf4,0xfdf5,0xfdf6,0xfdf7,0xfdf8,0xfdf9,0xfdfa,0xfdfb,0xfdfc, - 0xfe70,0xfe71,0xfe72,0xfe73,0xfe74,0xfe76,0xfe77,0xfe78,0xfe79,0xfe7a, - 0xfe7b,0xfe7c,0xfe7d,0xfe7e,0xfe7f,0xfe80,0xfe81,0xfe82,0xfe83,0xfe84, - 0xfe85,0xfe86,0xfe87,0xfe88,0xfe89,0xfe8a,0xfe8b,0xfe8c,0xfe8d,0xfe8e, - 0xfe8f,0xfe90,0xfe91,0xfe92,0xfe93,0xfe94,0xfe95,0xfe96,0xfe97,0xfe98, - 0xfe99,0xfe9a,0xfe9b,0xfe9c,0xfe9d,0xfe9e,0xfe9f,0xfea0,0xfea1,0xfea2, - 0xfea3,0xfea4,0xfea5,0xfea6,0xfea7,0xfea8,0xfea9,0xfeaa,0xfeab,0xfeac, - 0xfead,0xfeae,0xfeaf,0xfeb0,0xfeb1,0xfeb2,0xfeb3,0xfeb4,0xfeb5,0xfeb6, - 0xfeb7,0xfeb8,0xfeb9,0xfeba,0xfebb,0xfebc,0xfebd,0xfebe,0xfebf,0xfec0, - 0xfec1,0xfec2,0xfec3,0xfec4,0xfec5,0xfec6,0xfec7,0xfec8,0xfec9,0xfeca, - 0xfecb,0xfecc,0xfecd,0xfece,0xfecf,0xfed0,0xfed1,0xfed2,0xfed3,0xfed4, - 0xfed5,0xfed6,0xfed7,0xfed8,0xfed9,0xfeda,0xfedb,0xfedc,0xfedd,0xfede, - 0xfedf,0xfee0,0xfee1,0xfee2,0xfee3,0xfee4,0xfee5,0xfee6,0xfee7,0xfee8, - 0xfee9,0xfeea,0xfeeb,0xfeec,0xfeed,0xfeee,0xfeef,0xfef0,0xfef1,0xfef2, - 0xfef3,0xfef4,0xfef5,0xfef6,0xfef7,0xfef8,0xfef9,0xfefa,0xfefb,0xfefc, - }; -static const TUint KRightToLeftArabicLength = 1010; - -// This constant defines the Unicode characters in the "RightToLeftOverride" (RLO) category. -static const TUint16 KRightToLeftOverride[] = - { - 0x202e - }; - -// This constant defines the Unicode characters in the "PopDirectionalFormat" (PDF) category. -static const TUint16 KPopDirectionalFormat[] = - { - 0x202c - }; - -// This constant defines the Unicode characters in the "EuropeanNumber" (EN) category. -static const TUint16 KEuropeanNumber[] = - { - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039, - 0x00b2,0x00b3,0x00b9,0x06f0,0x06f1,0x06f2,0x06f3,0x06f4,0x06f5,0x06f6, - 0x06f7,0x06f8,0x06f9,0x2070,0x2074,0x2075,0x2076,0x2077,0x2078,0x2079, - 0x2080,0x2081,0x2082,0x2083,0x2084,0x2085,0x2086,0x2087,0x2088,0x2089, - 0x2488,0x2489,0x248a,0x248b,0x248c,0x248d,0x248e,0x248f,0x2490,0x2491, - 0x2492,0x2493,0x2494,0x2495,0x2496,0x2497,0x2498,0x2499,0x249a,0x249b, - 0xff10,0xff11,0xff12,0xff13,0xff14,0xff15,0xff16,0xff17,0xff18,0xff19, - 0xd835,0xdfce,0xd835,0xdfcf,0xd835,0xdfd0,0xd835,0xdfd1,0xd835,0xdfd2, - 0xd835,0xdfd3,0xd835,0xdfd4,0xd835,0xdfd5,0xd835,0xdfd6,0xd835,0xdfd7, - 0xd835,0xdfd8,0xd835,0xdfd9,0xd835,0xdfda,0xd835,0xdfdb,0xd835,0xdfdc, - 0xd835,0xdfdd,0xd835,0xdfde,0xd835,0xdfdf,0xd835,0xdfe0,0xd835,0xdfe1, - 0xd835,0xdfe2,0xd835,0xdfe3,0xd835,0xdfe4,0xd835,0xdfe5,0xd835,0xdfe6, - 0xd835,0xdfe7,0xd835,0xdfe8,0xd835,0xdfe9,0xd835,0xdfea,0xd835,0xdfeb, - 0xd835,0xdfec,0xd835,0xdfed,0xd835,0xdfee,0xd835,0xdfef,0xd835,0xdff0, - 0xd835,0xdff1,0xd835,0xdff2,0xd835,0xdff3,0xd835,0xdff4,0xd835,0xdff5, - 0xd835,0xdff6,0xd835,0xdff7,0xd835,0xdff8,0xd835,0xdff9,0xd835,0xdffa, - 0xd835,0xdffb,0xd835,0xdffc,0xd835,0xdffd,0xd835,0xdffe,0xd835,0xdfff, - }; -static const TUint KEuropeanNumberLength = 70 + 100; - -// This constant defines the Unicode characters in the "EuropeanNumberTerminator" (ET) category. -static const TUint16 KEuropeanNumberTerminator[] = - { - 0x0023,0x0024,0x0025,0x00a2,0x00a3,0x00a4,0x00a5,0x00b0,0x00b1,0x066a, - 0x09f2,0x09f3,0x0af1,0x0bf9,0x0e3f,0x17db,0x2030,0x2031,0x2032,0x2033, - 0x2034,0x20a0,0x20a1,0x20a2,0x20a3,0x20a4,0x20a5,0x20a6,0x20a7,0x20a8, - 0x20a9,0x20aa,0x20ab,0x20ac,0x20ad,0x20ae,0x20af,0x20b0,0x20b1,0x20b2, - 0x20b3,0x20b4,0x20b5,0x212e,0x2213,0xfe5f,0xfe69,0xfe6a,0xff03,0xff04, - 0xff05,0xffe0,0xffe1,0xffe5,0xffe6, - }; -static const TUint KEuropeanNumberTerminatorLength = 55; - - -// This constant defines the Unicode characters in the "ArabicNumber" (AN) category. -static const TUint16 KArabicNumber[] = - { - 0x0660,0x0661,0x0662,0x0663,0x0664,0x0665,0x0666,0x0667,0x0668,0x0669, - 0x066b,0x066c, - }; - -static const TUint KArabicNumberLength = 12; - -// This constant defines the Unicode characters in the "OtherNeutrals" category. -// A conventional _LIT cannot be used here because of the Microsoft limit of -// 2048 bytes for literal strings. -static const TUint16 KOtherNeutrals[] = - { - 0x0021,0x0022,0x0026,0x0027,0x0028,0x0029,0x002a,0x003b,0x003c,0x003d, - 0x003e,0x003f,0x0040,0x005b,0x005c,0x005d,0x005e,0x005f,0x0060,0x007b, - 0x007c,0x007d,0x007e,0x00a1,0x00a6,0x00a7,0x00a8,0x00a9,0x00ab,0x00ac, - 0x00ae,0x00af,0x00b4,0x00b6,0x00b7,0x00b8,0x00bb,0x00bc,0x00bd,0x00be, - 0x00bf,0x00d7,0x00f7,0x02b9,0x02ba,0x02c2,0x02c3,0x02c4,0x02c5,0x02c6, - 0x02c7,0x02c8,0x02c9,0x02ca,0x02cb,0x02cc,0x02cd,0x02ce,0x02cf,0x02d2, - 0x02d3,0x02d4,0x02d5,0x02d6,0x02d7,0x02d8,0x02d9,0x02da,0x02db,0x02dc, - 0x02dd,0x02de,0x02df,0x02e5,0x02e6,0x02e7,0x02e8,0x02e9,0x02ea,0x02eb, - 0x02ec,0x02ed,0x02ef,0x02f0,0x02f1,0x02f2,0x02f3,0x02f4,0x02f5,0x02f6, - 0x02f7,0x02f8,0x02f9,0x02fa,0x02fb,0x02fc,0x02fd,0x02fe,0x02ff,0x0374, - 0x0375,0x037e,0x0384,0x0385,0x0387,0x03f6,0x058a,0x060e,0x060f,0x06e9, - 0x07f6,0x07f7,0x07f8,0x07f9,0x0bf3,0x0bf4,0x0bf5,0x0bf6,0x0bf7,0x0bf8, - 0x0bfa,0x0cf1,0x0cf2,0x0f3a,0x0f3b,0x0f3c,0x0f3d,0x1390,0x1391,0x1392, - 0x1393,0x1394,0x1395,0x1396,0x1397,0x1398,0x1399,0x169b,0x169c,0x17f0, - 0x17f1,0x17f2,0x17f3,0x17f4,0x17f5,0x17f6,0x17f7,0x17f8,0x17f9,0x1800, - 0x1801,0x1802,0x1803,0x1804,0x1805,0x1806,0x1807,0x1808,0x1809,0x180a, - 0x1940,0x1944,0x1945,0x19de,0x19df,0x19e0,0x19e1,0x19e2,0x19e3,0x19e4, - 0x19e5,0x19e6,0x19e7,0x19e8,0x19e9,0x19ea,0x19eb,0x19ec,0x19ed,0x19ee, - 0x19ef,0x19f0,0x19f1,0x19f2,0x19f3,0x19f4,0x19f5,0x19f6,0x19f7,0x19f8, - 0x19f9,0x19fa,0x19fb,0x19fc,0x19fd,0x19fe,0x19ff,0x1fbd,0x1fbf,0x1fc0, - 0x1fc1,0x1fcd,0x1fce,0x1fcf,0x1fdd,0x1fde,0x1fdf,0x1fed,0x1fee,0x1fef, - 0x1ffd,0x1ffe,0x2010,0x2011,0x2012,0x2013,0x2014,0x2015,0x2016,0x2017, - 0x2018,0x2019,0x201a,0x201b,0x201c,0x201d,0x201e,0x201f,0x2020,0x2021, - 0x2022,0x2023,0x2024,0x2025,0x2026,0x2027,0x2035,0x2036,0x2037,0x2038, - 0x2039,0x203a,0x203b,0x203c,0x203d,0x203e,0x203f,0x2040,0x2041,0x2042, - 0x2043,0x2045,0x2046,0x2047,0x2048,0x2049,0x204a,0x204b,0x204c,0x204d, - 0x204e,0x204f,0x2050,0x2051,0x2052,0x2053,0x2054,0x2055,0x2056,0x2057, - 0x2058,0x2059,0x205a,0x205b,0x205c,0x205d,0x205e,0x207c,0x207d,0x207e, - 0x208c,0x208d,0x208e,0x2100,0x2101,0x2103,0x2104,0x2105,0x2106,0x2108, - 0x2109,0x2114,0x2116,0x2117,0x2118,0x211e,0x211f,0x2120,0x2121,0x2122, - 0x2123,0x2125,0x2127,0x2129,0x213a,0x213b,0x2140,0x2141,0x2142,0x2143, - 0x2144,0x214a,0x214b,0x214c,0x214d,0x2153,0x2154,0x2155,0x2156,0x2157, - 0x2158,0x2159,0x215a,0x215b,0x215c,0x215d,0x215e,0x215f,0x2190,0x2191, - 0x2192,0x2193,0x2194,0x2195,0x2196,0x2197,0x2198,0x2199,0x219a,0x219b, - 0x219c,0x219d,0x219e,0x219f,0x21a0,0x21a1,0x21a2,0x21a3,0x21a4,0x21a5, - 0x21a6,0x21a7,0x21a8,0x21a9,0x21aa,0x21ab,0x21ac,0x21ad,0x21ae,0x21af, - 0x21b0,0x21b1,0x21b2,0x21b3,0x21b4,0x21b5,0x21b6,0x21b7,0x21b8,0x21b9, - 0x21ba,0x21bb,0x21bc,0x21bd,0x21be,0x21bf,0x21c0,0x21c1,0x21c2,0x21c3, - 0x21c4,0x21c5,0x21c6,0x21c7,0x21c8,0x21c9,0x21ca,0x21cb,0x21cc,0x21cd, - 0x21ce,0x21cf,0x21d0,0x21d1,0x21d2,0x21d3,0x21d4,0x21d5,0x21d6,0x21d7, - 0x21d8,0x21d9,0x21da,0x21db,0x21dc,0x21dd,0x21de,0x21df,0x21e0,0x21e1, - 0x21e2,0x21e3,0x21e4,0x21e5,0x21e6,0x21e7,0x21e8,0x21e9,0x21ea,0x21eb, - 0x21ec,0x21ed,0x21ee,0x21ef,0x21f0,0x21f1,0x21f2,0x21f3,0x21f4,0x21f5, - 0x21f6,0x21f7,0x21f8,0x21f9,0x21fa,0x21fb,0x21fc,0x21fd,0x21fe,0x21ff, - 0x2200,0x2201,0x2202,0x2203,0x2204,0x2205,0x2206,0x2207,0x2208,0x2209, - 0x220a,0x220b,0x220c,0x220d,0x220e,0x220f,0x2210,0x2211,0x2214,0x2215, - 0x2216,0x2217,0x2218,0x2219,0x221a,0x221b,0x221c,0x221d,0x221e,0x221f, - 0x2220,0x2221,0x2222,0x2223,0x2224,0x2225,0x2226,0x2227,0x2228,0x2229, - 0x222a,0x222b,0x222c,0x222d,0x222e,0x222f,0x2230,0x2231,0x2232,0x2233, - 0x2234,0x2235,0x2236,0x2237,0x2238,0x2239,0x223a,0x223b,0x223c,0x223d, - 0x223e,0x223f,0x2240,0x2241,0x2242,0x2243,0x2244,0x2245,0x2246,0x2247, - 0x2248,0x2249,0x224a,0x224b,0x224c,0x224d,0x224e,0x224f,0x2250,0x2251, - 0x2252,0x2253,0x2254,0x2255,0x2256,0x2257,0x2258,0x2259,0x225a,0x225b, - 0x225c,0x225d,0x225e,0x225f,0x2260,0x2261,0x2262,0x2263,0x2264,0x2265, - 0x2266,0x2267,0x2268,0x2269,0x226a,0x226b,0x226c,0x226d,0x226e,0x226f, - 0x2270,0x2271,0x2272,0x2273,0x2274,0x2275,0x2276,0x2277,0x2278,0x2279, - 0x227a,0x227b,0x227c,0x227d,0x227e,0x227f,0x2280,0x2281,0x2282,0x2283, - 0x2284,0x2285,0x2286,0x2287,0x2288,0x2289,0x228a,0x228b,0x228c,0x228d, - 0x228e,0x228f,0x2290,0x2291,0x2292,0x2293,0x2294,0x2295,0x2296,0x2297, - 0x2298,0x2299,0x229a,0x229b,0x229c,0x229d,0x229e,0x229f,0x22a0,0x22a1, - 0x22a2,0x22a3,0x22a4,0x22a5,0x22a6,0x22a7,0x22a8,0x22a9,0x22aa,0x22ab, - 0x22ac,0x22ad,0x22ae,0x22af,0x22b0,0x22b1,0x22b2,0x22b3,0x22b4,0x22b5, - 0x22b6,0x22b7,0x22b8,0x22b9,0x22ba,0x22bb,0x22bc,0x22bd,0x22be,0x22bf, - 0x22c0,0x22c1,0x22c2,0x22c3,0x22c4,0x22c5,0x22c6,0x22c7,0x22c8,0x22c9, - 0x22ca,0x22cb,0x22cc,0x22cd,0x22ce,0x22cf,0x22d0,0x22d1,0x22d2,0x22d3, - 0x22d4,0x22d5,0x22d6,0x22d7,0x22d8,0x22d9,0x22da,0x22db,0x22dc,0x22dd, - 0x22de,0x22df,0x22e0,0x22e1,0x22e2,0x22e3,0x22e4,0x22e5,0x22e6,0x22e7, - 0x22e8,0x22e9,0x22ea,0x22eb,0x22ec,0x22ed,0x22ee,0x22ef,0x22f0,0x22f1, - 0x22f2,0x22f3,0x22f4,0x22f5,0x22f6,0x22f7,0x22f8,0x22f9,0x22fa,0x22fb, - 0x22fc,0x22fd,0x22fe,0x22ff,0x2300,0x2301,0x2302,0x2303,0x2304,0x2305, - 0x2306,0x2307,0x2308,0x2309,0x230a,0x230b,0x230c,0x230d,0x230e,0x230f, - 0x2310,0x2311,0x2312,0x2313,0x2314,0x2315,0x2316,0x2317,0x2318,0x2319, - 0x231a,0x231b,0x231c,0x231d,0x231e,0x231f,0x2320,0x2321,0x2322,0x2323, - 0x2324,0x2325,0x2326,0x2327,0x2328,0x2329,0x232a,0x232b,0x232c,0x232d, - 0x232e,0x232f,0x2330,0x2331,0x2332,0x2333,0x2334,0x2335,0x237b,0x237c, - 0x237d,0x237e,0x237f,0x2380,0x2381,0x2382,0x2383,0x2384,0x2385,0x2386, - 0x2387,0x2388,0x2389,0x238a,0x238b,0x238c,0x238d,0x238e,0x238f,0x2390, - 0x2391,0x2392,0x2393,0x2394,0x2396,0x2397,0x2398,0x2399,0x239a,0x239b, - 0x239c,0x239d,0x239e,0x239f,0x23a0,0x23a1,0x23a2,0x23a3,0x23a4,0x23a5, - 0x23a6,0x23a7,0x23a8,0x23a9,0x23aa,0x23ab,0x23ac,0x23ad,0x23ae,0x23af, - 0x23b0,0x23b1,0x23b2,0x23b3,0x23b4,0x23b5,0x23b6,0x23b7,0x23b8,0x23b9, - 0x23ba,0x23bb,0x23bc,0x23bd,0x23be,0x23bf,0x23c0,0x23c1,0x23c2,0x23c3, - 0x23c4,0x23c5,0x23c6,0x23c7,0x23c8,0x23c9,0x23ca,0x23cb,0x23cc,0x23cd, - 0x23ce,0x23cf,0x23d0,0x23d1,0x23d2,0x23d3,0x23d4,0x23d5,0x23d6,0x23d7, - 0x23d8,0x23d9,0x23da,0x23db,0x23dc,0x23dd,0x23de,0x23df,0x23e0,0x23e1, - 0x23e2,0x23e3,0x23e4,0x23e5,0x23e6,0x23e7,0x2400,0x2401,0x2402,0x2403, - 0x2404,0x2405,0x2406,0x2407,0x2408,0x2409,0x240a,0x240b,0x240c,0x240d, - 0x240e,0x240f,0x2410,0x2411,0x2412,0x2413,0x2414,0x2415,0x2416,0x2417, - 0x2418,0x2419,0x241a,0x241b,0x241c,0x241d,0x241e,0x241f,0x2420,0x2421, - 0x2422,0x2423,0x2424,0x2425,0x2426,0x2440,0x2441,0x2442,0x2443,0x2444, - 0x2445,0x2446,0x2447,0x2448,0x2449,0x244a,0x2460,0x2461,0x2462,0x2463, - 0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,0x246a,0x246b,0x246c,0x246d, - 0x246e,0x246f,0x2470,0x2471,0x2472,0x2473,0x2474,0x2475,0x2476,0x2477, - 0x2478,0x2479,0x247a,0x247b,0x247c,0x247d,0x247e,0x247f,0x2480,0x2481, - 0x2482,0x2483,0x2484,0x2485,0x2486,0x2487,0x24ea,0x24eb,0x24ec,0x24ed, - 0x24ee,0x24ef,0x24f0,0x24f1,0x24f2,0x24f3,0x24f4,0x24f5,0x24f6,0x24f7, - 0x24f8,0x24f9,0x24fa,0x24fb,0x24fc,0x24fd,0x24fe,0x24ff,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,0x254c,0x254d,0x254e,0x254f,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,0x2574,0x2575,0x2576,0x2577,0x2578,0x2579, - 0x257a,0x257b,0x257c,0x257d,0x257e,0x257f,0x2580,0x2581,0x2582,0x2583, - 0x2584,0x2585,0x2586,0x2587,0x2588,0x2589,0x258a,0x258b,0x258c,0x258d, - 0x258e,0x258f,0x2590,0x2591,0x2592,0x2593,0x2594,0x2595,0x2596,0x2597, - 0x2598,0x2599,0x259a,0x259b,0x259c,0x259d,0x259e,0x259f,0x25a0,0x25a1, - 0x25a2,0x25a3,0x25a4,0x25a5,0x25a6,0x25a7,0x25a8,0x25a9,0x25aa,0x25ab, - 0x25ac,0x25ad,0x25ae,0x25af,0x25b0,0x25b1,0x25b2,0x25b3,0x25b4,0x25b5, - 0x25b6,0x25b7,0x25b8,0x25b9,0x25ba,0x25bb,0x25bc,0x25bd,0x25be,0x25bf, - 0x25c0,0x25c1,0x25c2,0x25c3,0x25c4,0x25c5,0x25c6,0x25c7,0x25c8,0x25c9, - 0x25ca,0x25cb,0x25cc,0x25cd,0x25ce,0x25cf,0x25d0,0x25d1,0x25d2,0x25d3, - 0x25d4,0x25d5,0x25d6,0x25d7,0x25d8,0x25d9,0x25da,0x25db,0x25dc,0x25dd, - 0x25de,0x25df,0x25e0,0x25e1,0x25e2,0x25e3,0x25e4,0x25e5,0x25e6,0x25e7, - 0x25e8,0x25e9,0x25ea,0x25eb,0x25ec,0x25ed,0x25ee,0x25ef,0x25f0,0x25f1, - 0x25f2,0x25f3,0x25f4,0x25f5,0x25f6,0x25f7,0x25f8,0x25f9,0x25fa,0x25fb, - 0x25fc,0x25fd,0x25fe,0x25ff,0x2600,0x2601,0x2602,0x2603,0x2604,0x2605, - 0x2606,0x2607,0x2608,0x2609,0x260a,0x260b,0x260c,0x260d,0x260e,0x260f, - 0x2610,0x2611,0x2612,0x2613,0x2614,0x2615,0x2616,0x2617,0x2618,0x2619, - 0x261a,0x261b,0x261c,0x261d,0x261e,0x261f,0x2620,0x2621,0x2622,0x2623, - 0x2624,0x2625,0x2626,0x2627,0x2628,0x2629,0x262a,0x262b,0x262c,0x262d, - 0x262e,0x262f,0x2630,0x2631,0x2632,0x2633,0x2634,0x2635,0x2636,0x2637, - 0x2638,0x2639,0x263a,0x263b,0x263c,0x263d,0x263e,0x263f,0x2640,0x2641, - 0x2642,0x2643,0x2644,0x2645,0x2646,0x2647,0x2648,0x2649,0x264a,0x264b, - 0x264c,0x264d,0x264e,0x264f,0x2650,0x2651,0x2652,0x2653,0x2654,0x2655, - 0x2656,0x2657,0x2658,0x2659,0x265a,0x265b,0x265c,0x265d,0x265e,0x265f, - 0x2660,0x2661,0x2662,0x2663,0x2664,0x2665,0x2666,0x2667,0x2668,0x2669, - 0x266a,0x266b,0x266c,0x266d,0x266e,0x266f,0x2670,0x2671,0x2672,0x2673, - 0x2674,0x2675,0x2676,0x2677,0x2678,0x2679,0x267a,0x267b,0x267c,0x267d, - 0x267e,0x267f,0x2680,0x2681,0x2682,0x2683,0x2684,0x2685,0x2686,0x2687, - 0x2688,0x2689,0x268a,0x268b,0x268c,0x268d,0x268e,0x268f,0x2690,0x2691, - 0x2692,0x2693,0x2694,0x2695,0x2696,0x2697,0x2698,0x2699,0x269a,0x269b, - 0x269c,0x26a0,0x26a1,0x26a2,0x26a3,0x26a4,0x26a5,0x26a6,0x26a7,0x26a8, - 0x26a9,0x26aa,0x26ab,0x26ad,0x26ae,0x26af,0x26b0,0x26b1,0x26b2,0x2701, - 0x2702,0x2703,0x2704,0x2706,0x2707,0x2708,0x2709,0x270c,0x270d,0x270e, - 0x270f,0x2710,0x2711,0x2712,0x2713,0x2714,0x2715,0x2716,0x2717,0x2718, - 0x2719,0x271a,0x271b,0x271c,0x271d,0x271e,0x271f,0x2720,0x2721,0x2722, - 0x2723,0x2724,0x2725,0x2726,0x2727,0x2729,0x272a,0x272b,0x272c,0x272d, - 0x272e,0x272f,0x2730,0x2731,0x2732,0x2733,0x2734,0x2735,0x2736,0x2737, - 0x2738,0x2739,0x273a,0x273b,0x273c,0x273d,0x273e,0x273f,0x2740,0x2741, - 0x2742,0x2743,0x2744,0x2745,0x2746,0x2747,0x2748,0x2749,0x274a,0x274b, - 0x274d,0x274f,0x2750,0x2751,0x2752,0x2756,0x2758,0x2759,0x275a,0x275b, - 0x275c,0x275d,0x275e,0x2761,0x2762,0x2763,0x2764,0x2765,0x2766,0x2767, - 0x2768,0x2769,0x276a,0x276b,0x276c,0x276d,0x276e,0x276f,0x2770,0x2771, - 0x2772,0x2773,0x2774,0x2775,0x2776,0x2777,0x2778,0x2779,0x277a,0x277b, - 0x277c,0x277d,0x277e,0x277f,0x2780,0x2781,0x2782,0x2783,0x2784,0x2785, - 0x2786,0x2787,0x2788,0x2789,0x278a,0x278b,0x278c,0x278d,0x278e,0x278f, - 0x2790,0x2791,0x2792,0x2793,0x2794,0x2798,0x2799,0x279a,0x279b,0x279c, - 0x279d,0x279e,0x279f,0x27a0,0x27a1,0x27a2,0x27a3,0x27a4,0x27a5,0x27a6, - 0x27a7,0x27a8,0x27a9,0x27aa,0x27ab,0x27ac,0x27ad,0x27ae,0x27af,0x27b1, - 0x27b2,0x27b3,0x27b4,0x27b5,0x27b6,0x27b7,0x27b8,0x27b9,0x27ba,0x27bb, - 0x27bc,0x27bd,0x27be,0x27c0,0x27c1,0x27c2,0x27c3,0x27c4,0x27c5,0x27c6, - 0x27c7,0x27c8,0x27c9,0x27ca,0x27d0,0x27d1,0x27d2,0x27d3,0x27d4,0x27d5, - 0x27d6,0x27d7,0x27d8,0x27d9,0x27da,0x27db,0x27dc,0x27dd,0x27de,0x27df, - 0x27e0,0x27e1,0x27e2,0x27e3,0x27e4,0x27e5,0x27e6,0x27e7,0x27e8,0x27e9, - 0x27ea,0x27eb,0x27f0,0x27f1,0x27f2,0x27f3,0x27f4,0x27f5,0x27f6,0x27f7, - 0x27f8,0x27f9,0x27fa,0x27fb,0x27fc,0x27fd,0x27fe,0x27ff,0x2900,0x2901, - 0x2902,0x2903,0x2904,0x2905,0x2906,0x2907,0x2908,0x2909,0x290a,0x290b, - 0x290c,0x290d,0x290e,0x290f,0x2910,0x2911,0x2912,0x2913,0x2914,0x2915, - 0x2916,0x2917,0x2918,0x2919,0x291a,0x291b,0x291c,0x291d,0x291e,0x291f, - 0x2920,0x2921,0x2922,0x2923,0x2924,0x2925,0x2926,0x2927,0x2928,0x2929, - 0x292a,0x292b,0x292c,0x292d,0x292e,0x292f,0x2930,0x2931,0x2932,0x2933, - 0x2934,0x2935,0x2936,0x2937,0x2938,0x2939,0x293a,0x293b,0x293c,0x293d, - 0x293e,0x293f,0x2940,0x2941,0x2942,0x2943,0x2944,0x2945,0x2946,0x2947, - 0x2948,0x2949,0x294a,0x294b,0x294c,0x294d,0x294e,0x294f,0x2950,0x2951, - 0x2952,0x2953,0x2954,0x2955,0x2956,0x2957,0x2958,0x2959,0x295a,0x295b, - 0x295c,0x295d,0x295e,0x295f,0x2960,0x2961,0x2962,0x2963,0x2964,0x2965, - 0x2966,0x2967,0x2968,0x2969,0x296a,0x296b,0x296c,0x296d,0x296e,0x296f, - 0x2970,0x2971,0x2972,0x2973,0x2974,0x2975,0x2976,0x2977,0x2978,0x2979, - 0x297a,0x297b,0x297c,0x297d,0x297e,0x297f,0x2980,0x2981,0x2982,0x2983, - 0x2984,0x2985,0x2986,0x2987,0x2988,0x2989,0x298a,0x298b,0x298c,0x298d, - 0x298e,0x298f,0x2990,0x2991,0x2992,0x2993,0x2994,0x2995,0x2996,0x2997, - 0x2998,0x2999,0x299a,0x299b,0x299c,0x299d,0x299e,0x299f,0x29a0,0x29a1, - 0x29a2,0x29a3,0x29a4,0x29a5,0x29a6,0x29a7,0x29a8,0x29a9,0x29aa,0x29ab, - 0x29ac,0x29ad,0x29ae,0x29af,0x29b0,0x29b1,0x29b2,0x29b3,0x29b4,0x29b5, - 0x29b6,0x29b7,0x29b8,0x29b9,0x29ba,0x29bb,0x29bc,0x29bd,0x29be,0x29bf, - 0x29c0,0x29c1,0x29c2,0x29c3,0x29c4,0x29c5,0x29c6,0x29c7,0x29c8,0x29c9, - 0x29ca,0x29cb,0x29cc,0x29cd,0x29ce,0x29cf,0x29d0,0x29d1,0x29d2,0x29d3, - 0x29d4,0x29d5,0x29d6,0x29d7,0x29d8,0x29d9,0x29da,0x29db,0x29dc,0x29dd, - 0x29de,0x29df,0x29e0,0x29e1,0x29e2,0x29e3,0x29e4,0x29e5,0x29e6,0x29e7, - 0x29e8,0x29e9,0x29ea,0x29eb,0x29ec,0x29ed,0x29ee,0x29ef,0x29f0,0x29f1, - 0x29f2,0x29f3,0x29f4,0x29f5,0x29f6,0x29f7,0x29f8,0x29f9,0x29fa,0x29fb, - 0x29fc,0x29fd,0x29fe,0x29ff,0x2a00,0x2a01,0x2a02,0x2a03,0x2a04,0x2a05, - 0x2a06,0x2a07,0x2a08,0x2a09,0x2a0a,0x2a0b,0x2a0c,0x2a0d,0x2a0e,0x2a0f, - 0x2a10,0x2a11,0x2a12,0x2a13,0x2a14,0x2a15,0x2a16,0x2a17,0x2a18,0x2a19, - 0x2a1a,0x2a1b,0x2a1c,0x2a1d,0x2a1e,0x2a1f,0x2a20,0x2a21,0x2a22,0x2a23, - 0x2a24,0x2a25,0x2a26,0x2a27,0x2a28,0x2a29,0x2a2a,0x2a2b,0x2a2c,0x2a2d, - 0x2a2e,0x2a2f,0x2a30,0x2a31,0x2a32,0x2a33,0x2a34,0x2a35,0x2a36,0x2a37, - 0x2a38,0x2a39,0x2a3a,0x2a3b,0x2a3c,0x2a3d,0x2a3e,0x2a3f,0x2a40,0x2a41, - 0x2a42,0x2a43,0x2a44,0x2a45,0x2a46,0x2a47,0x2a48,0x2a49,0x2a4a,0x2a4b, - 0x2a4c,0x2a4d,0x2a4e,0x2a4f,0x2a50,0x2a51,0x2a52,0x2a53,0x2a54,0x2a55, - 0x2a56,0x2a57,0x2a58,0x2a59,0x2a5a,0x2a5b,0x2a5c,0x2a5d,0x2a5e,0x2a5f, - 0x2a60,0x2a61,0x2a62,0x2a63,0x2a64,0x2a65,0x2a66,0x2a67,0x2a68,0x2a69, - 0x2a6a,0x2a6b,0x2a6c,0x2a6d,0x2a6e,0x2a6f,0x2a70,0x2a71,0x2a72,0x2a73, - 0x2a74,0x2a75,0x2a76,0x2a77,0x2a78,0x2a79,0x2a7a,0x2a7b,0x2a7c,0x2a7d, - 0x2a7e,0x2a7f,0x2a80,0x2a81,0x2a82,0x2a83,0x2a84,0x2a85,0x2a86,0x2a87, - 0x2a88,0x2a89,0x2a8a,0x2a8b,0x2a8c,0x2a8d,0x2a8e,0x2a8f,0x2a90,0x2a91, - 0x2a92,0x2a93,0x2a94,0x2a95,0x2a96,0x2a97,0x2a98,0x2a99,0x2a9a,0x2a9b, - 0x2a9c,0x2a9d,0x2a9e,0x2a9f,0x2aa0,0x2aa1,0x2aa2,0x2aa3,0x2aa4,0x2aa5, - 0x2aa6,0x2aa7,0x2aa8,0x2aa9,0x2aaa,0x2aab,0x2aac,0x2aad,0x2aae,0x2aaf, - 0x2ab0,0x2ab1,0x2ab2,0x2ab3,0x2ab4,0x2ab5,0x2ab6,0x2ab7,0x2ab8,0x2ab9, - 0x2aba,0x2abb,0x2abc,0x2abd,0x2abe,0x2abf,0x2ac0,0x2ac1,0x2ac2,0x2ac3, - 0x2ac4,0x2ac5,0x2ac6,0x2ac7,0x2ac8,0x2ac9,0x2aca,0x2acb,0x2acc,0x2acd, - 0x2ace,0x2acf,0x2ad0,0x2ad1,0x2ad2,0x2ad3,0x2ad4,0x2ad5,0x2ad6,0x2ad7, - 0x2ad8,0x2ad9,0x2ada,0x2adb,0x2adc,0x2add,0x2ade,0x2adf,0x2ae0,0x2ae1, - 0x2ae2,0x2ae3,0x2ae4,0x2ae5,0x2ae6,0x2ae7,0x2ae8,0x2ae9,0x2aea,0x2aeb, - 0x2aec,0x2aed,0x2aee,0x2aef,0x2af0,0x2af1,0x2af2,0x2af3,0x2af4,0x2af5, - 0x2af6,0x2af7,0x2af8,0x2af9,0x2afa,0x2afb,0x2afc,0x2afd,0x2afe,0x2aff, - 0x2b00,0x2b01,0x2b02,0x2b03,0x2b04,0x2b05,0x2b06,0x2b07,0x2b08,0x2b09, - 0x2b0a,0x2b0b,0x2b0c,0x2b0d,0x2b0e,0x2b0f,0x2b10,0x2b11,0x2b12,0x2b13, - 0x2b14,0x2b15,0x2b16,0x2b17,0x2b18,0x2b19,0x2b1a,0x2b20,0x2b21,0x2b22, - 0x2b23,0x2ce5,0x2ce6,0x2ce7,0x2ce8,0x2ce9,0x2cea,0x2cf9,0x2cfa,0x2cfb, - 0x2cfc,0x2cfd,0x2cfe,0x2cff,0x2e00,0x2e01,0x2e02,0x2e03,0x2e04,0x2e05, - 0x2e06,0x2e07,0x2e08,0x2e09,0x2e0a,0x2e0b,0x2e0c,0x2e0d,0x2e0e,0x2e0f, - 0x2e10,0x2e11,0x2e12,0x2e13,0x2e14,0x2e15,0x2e16,0x2e17,0x2e1c,0x2e1d, - 0x2e80,0x2e81,0x2e82,0x2e83,0x2e84,0x2e85,0x2e86,0x2e87,0x2e88,0x2e89, - 0x2e8a,0x2e8b,0x2e8c,0x2e8d,0x2e8e,0x2e8f,0x2e90,0x2e91,0x2e92,0x2e93, - 0x2e94,0x2e95,0x2e96,0x2e97,0x2e98,0x2e99,0x2e9b,0x2e9c,0x2e9d,0x2e9e, - 0x2e9f,0x2ea0,0x2ea1,0x2ea2,0x2ea3,0x2ea4,0x2ea5,0x2ea6,0x2ea7,0x2ea8, - 0x2ea9,0x2eaa,0x2eab,0x2eac,0x2ead,0x2eae,0x2eaf,0x2eb0,0x2eb1,0x2eb2, - 0x2eb3,0x2eb4,0x2eb5,0x2eb6,0x2eb7,0x2eb8,0x2eb9,0x2eba,0x2ebb,0x2ebc, - 0x2ebd,0x2ebe,0x2ebf,0x2ec0,0x2ec1,0x2ec2,0x2ec3,0x2ec4,0x2ec5,0x2ec6, - 0x2ec7,0x2ec8,0x2ec9,0x2eca,0x2ecb,0x2ecc,0x2ecd,0x2ece,0x2ecf,0x2ed0, - 0x2ed1,0x2ed2,0x2ed3,0x2ed4,0x2ed5,0x2ed6,0x2ed7,0x2ed8,0x2ed9,0x2eda, - 0x2edb,0x2edc,0x2edd,0x2ede,0x2edf,0x2ee0,0x2ee1,0x2ee2,0x2ee3,0x2ee4, - 0x2ee5,0x2ee6,0x2ee7,0x2ee8,0x2ee9,0x2eea,0x2eeb,0x2eec,0x2eed,0x2eee, - 0x2eef,0x2ef0,0x2ef1,0x2ef2,0x2ef3,0x2f00,0x2f01,0x2f02,0x2f03,0x2f04, - 0x2f05,0x2f06,0x2f07,0x2f08,0x2f09,0x2f0a,0x2f0b,0x2f0c,0x2f0d,0x2f0e, - 0x2f0f,0x2f10,0x2f11,0x2f12,0x2f13,0x2f14,0x2f15,0x2f16,0x2f17,0x2f18, - 0x2f19,0x2f1a,0x2f1b,0x2f1c,0x2f1d,0x2f1e,0x2f1f,0x2f20,0x2f21,0x2f22, - 0x2f23,0x2f24,0x2f25,0x2f26,0x2f27,0x2f28,0x2f29,0x2f2a,0x2f2b,0x2f2c, - 0x2f2d,0x2f2e,0x2f2f,0x2f30,0x2f31,0x2f32,0x2f33,0x2f34,0x2f35,0x2f36, - 0x2f37,0x2f38,0x2f39,0x2f3a,0x2f3b,0x2f3c,0x2f3d,0x2f3e,0x2f3f,0x2f40, - 0x2f41,0x2f42,0x2f43,0x2f44,0x2f45,0x2f46,0x2f47,0x2f48,0x2f49,0x2f4a, - 0x2f4b,0x2f4c,0x2f4d,0x2f4e,0x2f4f,0x2f50,0x2f51,0x2f52,0x2f53,0x2f54, - 0x2f55,0x2f56,0x2f57,0x2f58,0x2f59,0x2f5a,0x2f5b,0x2f5c,0x2f5d,0x2f5e, - 0x2f5f,0x2f60,0x2f61,0x2f62,0x2f63,0x2f64,0x2f65,0x2f66,0x2f67,0x2f68, - 0x2f69,0x2f6a,0x2f6b,0x2f6c,0x2f6d,0x2f6e,0x2f6f,0x2f70,0x2f71,0x2f72, - 0x2f73,0x2f74,0x2f75,0x2f76,0x2f77,0x2f78,0x2f79,0x2f7a,0x2f7b,0x2f7c, - 0x2f7d,0x2f7e,0x2f7f,0x2f80,0x2f81,0x2f82,0x2f83,0x2f84,0x2f85,0x2f86, - 0x2f87,0x2f88,0x2f89,0x2f8a,0x2f8b,0x2f8c,0x2f8d,0x2f8e,0x2f8f,0x2f90, - 0x2f91,0x2f92,0x2f93,0x2f94,0x2f95,0x2f96,0x2f97,0x2f98,0x2f99,0x2f9a, - 0x2f9b,0x2f9c,0x2f9d,0x2f9e,0x2f9f,0x2fa0,0x2fa1,0x2fa2,0x2fa3,0x2fa4, - 0x2fa5,0x2fa6,0x2fa7,0x2fa8,0x2fa9,0x2faa,0x2fab,0x2fac,0x2fad,0x2fae, - 0x2faf,0x2fb0,0x2fb1,0x2fb2,0x2fb3,0x2fb4,0x2fb5,0x2fb6,0x2fb7,0x2fb8, - 0x2fb9,0x2fba,0x2fbb,0x2fbc,0x2fbd,0x2fbe,0x2fbf,0x2fc0,0x2fc1,0x2fc2, - 0x2fc3,0x2fc4,0x2fc5,0x2fc6,0x2fc7,0x2fc8,0x2fc9,0x2fca,0x2fcb,0x2fcc, - 0x2fcd,0x2fce,0x2fcf,0x2fd0,0x2fd1,0x2fd2,0x2fd3,0x2fd4,0x2fd5,0x2ff0, - 0x2ff1,0x2ff2,0x2ff3,0x2ff4,0x2ff5,0x2ff6,0x2ff7,0x2ff8,0x2ff9,0x2ffa, - 0x2ffb,0x3001,0x3002,0x3003,0x3004,0x3008,0x3009,0x300a,0x300b,0x300c, - 0x300d,0x300e,0x300f,0x3010,0x3011,0x3012,0x3013,0x3014,0x3015,0x3016, - 0x3017,0x3018,0x3019,0x301a,0x301b,0x301c,0x301d,0x301e,0x301f,0x3020, - 0x3030,0x3036,0x3037,0x303d,0x303e,0x303f,0x309b,0x309c,0x30a0,0x30fb, - 0x31c0,0x31c1,0x31c2,0x31c3,0x31c4,0x31c5,0x31c6,0x31c7,0x31c8,0x31c9, - 0x31ca,0x31cb,0x31cc,0x31cd,0x31ce,0x31cf,0x321d,0x321e,0x3250,0x3251, - 0x3252,0x3253,0x3254,0x3255,0x3256,0x3257,0x3258,0x3259,0x325a,0x325b, - 0x325c,0x325d,0x325e,0x325f,0x327c,0x327d,0x327e,0x32b1,0x32b2,0x32b3, - 0x32b4,0x32b5,0x32b6,0x32b7,0x32b8,0x32b9,0x32ba,0x32bb,0x32bc,0x32bd, - 0x32be,0x32bf,0x32cc,0x32cd,0x32ce,0x32cf,0x3377,0x3378,0x3379,0x337a, - 0x33de,0x33df,0x33ff,0x4dc0,0x4dc1,0x4dc2,0x4dc3,0x4dc4,0x4dc5,0x4dc6, - 0x4dc7,0x4dc8,0x4dc9,0x4dca,0x4dcb,0x4dcc,0x4dcd,0x4dce,0x4dcf,0x4dd0, - 0x4dd1,0x4dd2,0x4dd3,0x4dd4,0x4dd5,0x4dd6,0x4dd7,0x4dd8,0x4dd9,0x4dda, - 0x4ddb,0x4ddc,0x4ddd,0x4dde,0x4ddf,0x4de0,0x4de1,0x4de2,0x4de3,0x4de4, - 0x4de5,0x4de6,0x4de7,0x4de8,0x4de9,0x4dea,0x4deb,0x4dec,0x4ded,0x4dee, - 0x4def,0x4df0,0x4df1,0x4df2,0x4df3,0x4df4,0x4df5,0x4df6,0x4df7,0x4df8, - 0x4df9,0x4dfa,0x4dfb,0x4dfc,0x4dfd,0x4dfe,0x4dff,0xa490,0xa491,0xa492, - 0xa493,0xa494,0xa495,0xa496,0xa497,0xa498,0xa499,0xa49a,0xa49b,0xa49c, - 0xa49d,0xa49e,0xa49f,0xa4a0,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,0xa700,0xa701,0xa702,0xa703,0xa704,0xa705,0xa706,0xa707, - 0xa708,0xa709,0xa70a,0xa70b,0xa70c,0xa70d,0xa70e,0xa70f,0xa710,0xa711, - 0xa712,0xa713,0xa714,0xa715,0xa716,0xa717,0xa718,0xa719,0xa71a,0xa720, - 0xa721,0xa828,0xa829,0xa82a,0xa82b,0xa874,0xa875,0xa876,0xa877,0xfd3e, - 0xfd3f,0xfdfd,0xfe10,0xfe11,0xfe12,0xfe13,0xfe14,0xfe15,0xfe16,0xfe17, - 0xfe18,0xfe19,0xfe30,0xfe31,0xfe32,0xfe33,0xfe34,0xfe35,0xfe36,0xfe37, - 0xfe38,0xfe39,0xfe3a,0xfe3b,0xfe3c,0xfe3d,0xfe3e,0xfe3f,0xfe40,0xfe41, - 0xfe42,0xfe43,0xfe44,0xfe45,0xfe46,0xfe47,0xfe48,0xfe49,0xfe4a,0xfe4b, - 0xfe4c,0xfe4d,0xfe4e,0xfe4f,0xfe51,0xfe54,0xfe56,0xfe57,0xfe58,0xfe59, - 0xfe5a,0xfe5b,0xfe5c,0xfe5d,0xfe5e,0xfe60,0xfe61,0xfe64,0xfe65,0xfe66, - 0xfe68,0xfe6b,0xff01,0xff02,0xff06,0xff07,0xff08,0xff09,0xff0a,0xff1b, - 0xff1c,0xff1d,0xff1e,0xff1f,0xff20,0xff3b,0xff3c,0xff3d,0xff3e,0xff3f, - 0xff40,0xff5b,0xff5c,0xff5d,0xff5e,0xff5f,0xff60,0xff61,0xff62,0xff63, - 0xff64,0xff65,0xffe2,0xffe3,0xffe4,0xffe8,0xffe9,0xffea,0xffeb,0xffec, - 0xffed,0xffee,0xfff9,0xfffa,0xfffb,0xfffc,0xfffd,0xd800,0xdd01, - 0xd800,0xdd40,0xd800,0xdd41,0xd800,0xdd42,0xd800,0xdd43,0xd800,0xdd44, - 0xd800,0xdd45,0xd800,0xdd46,0xd800,0xdd47,0xd800,0xdd48,0xd800,0xdd49, - 0xd800,0xdd4a,0xd800,0xdd4b,0xd800,0xdd4c,0xd800,0xdd4d,0xd800,0xdd4e, - 0xd800,0xdd4f,0xd800,0xdd50,0xd800,0xdd51,0xd800,0xdd52,0xd800,0xdd53, - 0xd800,0xdd54,0xd800,0xdd55,0xd800,0xdd56,0xd800,0xdd57,0xd800,0xdd58, - 0xd800,0xdd59,0xd800,0xdd5a,0xd800,0xdd5b,0xd800,0xdd5c,0xd800,0xdd5d, - 0xd800,0xdd5e,0xd800,0xdd5f,0xd800,0xdd60,0xd800,0xdd61,0xd800,0xdd62, - 0xd800,0xdd63,0xd800,0xdd64,0xd800,0xdd65,0xd800,0xdd66,0xd800,0xdd67, - 0xd800,0xdd68,0xd800,0xdd69,0xd800,0xdd6a,0xd800,0xdd6b,0xd800,0xdd6c, - 0xd800,0xdd6d,0xd800,0xdd6e,0xd800,0xdd6f,0xd800,0xdd70,0xd800,0xdd71, - 0xd800,0xdd72,0xd800,0xdd73,0xd800,0xdd74,0xd800,0xdd75,0xd800,0xdd76, - 0xd800,0xdd77,0xd800,0xdd78,0xd800,0xdd79,0xd800,0xdd7a,0xd800,0xdd7b, - 0xd800,0xdd7c,0xd800,0xdd7d,0xd800,0xdd7e,0xd800,0xdd7f,0xd800,0xdd80, - 0xd800,0xdd81,0xd800,0xdd82,0xd800,0xdd83,0xd800,0xdd84,0xd800,0xdd85, - 0xd800,0xdd86,0xd800,0xdd87,0xd800,0xdd88,0xd800,0xdd89,0xd800,0xdd8a, - 0xd802,0xdd1f,0xd834,0xde00,0xd834,0xde01,0xd834,0xde02,0xd834,0xde03, - 0xd834,0xde04,0xd834,0xde05,0xd834,0xde06,0xd834,0xde07,0xd834,0xde08, - 0xd834,0xde09,0xd834,0xde0a,0xd834,0xde0b,0xd834,0xde0c,0xd834,0xde0d, - 0xd834,0xde0e,0xd834,0xde0f,0xd834,0xde10,0xd834,0xde11,0xd834,0xde12, - 0xd834,0xde13,0xd834,0xde14,0xd834,0xde15,0xd834,0xde16,0xd834,0xde17, - 0xd834,0xde18,0xd834,0xde19,0xd834,0xde1a,0xd834,0xde1b,0xd834,0xde1c, - 0xd834,0xde1d,0xd834,0xde1e,0xd834,0xde1f,0xd834,0xde20,0xd834,0xde21, - 0xd834,0xde22,0xd834,0xde23,0xd834,0xde24,0xd834,0xde25,0xd834,0xde26, - 0xd834,0xde27,0xd834,0xde28,0xd834,0xde29,0xd834,0xde2a,0xd834,0xde2b, - 0xd834,0xde2c,0xd834,0xde2d,0xd834,0xde2e,0xd834,0xde2f,0xd834,0xde30, - 0xd834,0xde31,0xd834,0xde32,0xd834,0xde33,0xd834,0xde34,0xd834,0xde35, - 0xd834,0xde36,0xd834,0xde37,0xd834,0xde38,0xd834,0xde39,0xd834,0xde3a, - 0xd834,0xde3b,0xd834,0xde3c,0xd834,0xde3d,0xd834,0xde3e,0xd834,0xde3f, - 0xd834,0xde40,0xd834,0xde41,0xd834,0xde45,0xd834,0xdf00,0xd834,0xdf01, - 0xd834,0xdf02,0xd834,0xdf03,0xd834,0xdf04,0xd834,0xdf05,0xd834,0xdf06, - 0xd834,0xdf07,0xd834,0xdf08,0xd834,0xdf09,0xd834,0xdf0a,0xd834,0xdf0b, - 0xd834,0xdf0c,0xd834,0xdf0d,0xd834,0xdf0e,0xd834,0xdf0f,0xd834,0xdf10, - 0xd834,0xdf11,0xd834,0xdf12,0xd834,0xdf13,0xd834,0xdf14,0xd834,0xdf15, - 0xd834,0xdf16,0xd834,0xdf17,0xd834,0xdf18,0xd834,0xdf19,0xd834,0xdf1a, - 0xd834,0xdf1b,0xd834,0xdf1c,0xd834,0xdf1d,0xd834,0xdf1e,0xd834,0xdf1f, - 0xd834,0xdf20,0xd834,0xdf21,0xd834,0xdf22,0xd834,0xdf23,0xd834,0xdf24, - 0xd834,0xdf25,0xd834,0xdf26,0xd834,0xdf27,0xd834,0xdf28,0xd834,0xdf29, - 0xd834,0xdf2a,0xd834,0xdf2b,0xd834,0xdf2c,0xd834,0xdf2d,0xd834,0xdf2e, - 0xd834,0xdf2f,0xd834,0xdf30,0xd834,0xdf31,0xd834,0xdf32,0xd834,0xdf33, - 0xd834,0xdf34,0xd834,0xdf35,0xd834,0xdf36,0xd834,0xdf37,0xd834,0xdf38, - 0xd834,0xdf39,0xd834,0xdf3a,0xd834,0xdf3b,0xd834,0xdf3c,0xd834,0xdf3d, - 0xd834,0xdf3e,0xd834,0xdf3f,0xd834,0xdf40,0xd834,0xdf41,0xd834,0xdf42, - 0xd834,0xdf43,0xd834,0xdf44,0xd834,0xdf45,0xd834,0xdf46,0xd834,0xdf47, - 0xd834,0xdf48,0xd834,0xdf49,0xd834,0xdf4a,0xd834,0xdf4b,0xd834,0xdf4c, - 0xd834,0xdf4d,0xd834,0xdf4e,0xd834,0xdf4f,0xd834,0xdf50,0xd834,0xdf51, - 0xd834,0xdf52,0xd834,0xdf53,0xd834,0xdf54,0xd834,0xdf55,0xd834,0xdf56, - }; -static const TUint KOtherNeutralsLength = 2917 + 462; - -//This test data is an extract from the Project Gutenberg version of -//The War Of The Worlds by H G Wells - -static const TUint16 KArab1Data[] = - { - 0xfeff, 0x0623, 0x0633, 0x0627, 0x0633, 0x064b, 0x0627, 0x060c, - 0x0020, 0x000d, 0x000a, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x062a, 0x062a, 0x0639, 0x0627, 0x0645, 0x0644, 0x0020, - 0x0627, 0x0644, 0x062d, 0x0648, 0x0627, 0x0633, 0x064a, 0x0628, - 0x0020, 0x0641, 0x0642, 0x0637, 0x0020, 0x0645, 0x0639, 0x0020, - 0x0627, 0x0644, 0x0623, 0x0631, 0x0642, 0x0627, 0x0645, 0x060c, - 0x0020, 0x0648, 0x062a, 0x0642, 0x0648, 0x0645, 0x0020, 0x0628, - 0x062a, 0x062e, 0x0632, 0x064a, 0x0646, 0x0020, 0x0627, 0x0644, - 0x0623, 0x062d, 0x0631, 0x0641, 0x0020, 0x0648, 0x0627, 0x0644, - 0x0645, 0x062d, 0x0627, 0x0631, 0x0641, 0x0020, 0x000d, 0x000a, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0627, 0x0644, - 0x0623, 0x062e, 0x0631, 0x0649, 0x0020, 0x0628, 0x0639, 0x062f, - 0x0020, 0x0623, 0x0646, 0x0020, 0x062a, 0x064f, 0x0639, 0x0637, - 0x064a, 0x0020, 0x0631, 0x0642, 0x0645, 0x0627, 0x0020, 0x0645, - 0x0639, 0x064a, 0x0646, 0x0627, 0x0020, 0x0644, 0x0643, 0x0644, - 0x0020, 0x0648, 0x0627, 0x062d, 0x062f, 0x0020, 0x0645, 0x0646, - 0x0647, 0x0627, 0x002e, 0x0020, 0x0648, 0x0642, 0x0628, 0x0644, - 0x0020, 0x0627, 0x062e, 0x062a, 0x0631, 0x0627, 0x0639, 0x0020, - 0x000d, 0x000a, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0022, 0x064a, 0x0648, 0x0646, 0x0650, 0x0643, 0x0648, 0x062f, - 0x0022, 0x060c, 0x0020, 0x0643, 0x0627, 0x0646, 0x0020, 0x0647, - 0x0646, 0x0627, 0x0643, 0x0020, 0x0645, 0x0626, 0x0627, 0x062a, - 0x0020, 0x0627, 0x0644, 0x0623, 0x0646, 0x0638, 0x0645, 0x0629, - 0x0020, 0x0644, 0x0644, 0x062a, 0x0634, 0x0641, 0x064a, 0x0631, - 0x0020, 0x0648, 0x062a, 0x062e, 0x0635, 0x064a, 0x0635, 0x0020, - 0x0647, 0x0630, 0x0647, 0x0020, 0x0627, 0x0644, 0x0623, 0x0631, - 0x0642, 0x0627, 0x0645, 0x0020, 0x000d, 0x000a, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0644, 0x0644, 0x0645, 0x062d, - 0x0627, 0x0631, 0x0641, 0x060c, 0x0020, 0x0648, 0x0644, 0x0645, - 0x0020, 0x064a, 0x0648, 0x062c, 0x062f, 0x0020, 0x0646, 0x0638, - 0x0627, 0x0645, 0x0020, 0x062a, 0x0634, 0x0641, 0x064a, 0x0631, - 0x0020, 0x0648, 0x0627, 0x062d, 0x062f, 0x0020, 0x064a, 0x062d, - 0x062a, 0x0648, 0x064a, 0x0020, 0x0639, 0x0644, 0x0649, 0x0020, - 0x062c, 0x0645, 0x064a, 0x0639, 0x0020, 0x0627, 0x0644, 0x0645, - 0x062d, 0x0627, 0x0631, 0x0641, 0x0020, 0x0627, 0x0644, 0x0636, - 0x0631, 0x0648, 0x0631, 0x064a, 0x0629, 0x002e, 0x0020, 0x000d, - 0x000a, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0648, - 0x0639, 0x0644, 0x0649, 0x0020, 0x0633, 0x0628, 0x064a, 0x0644, - 0x0020, 0x0627, 0x0644, 0x0645, 0x062b, 0x0627, 0x0644, 0x060c, - 0x0020, 0x0641, 0x0625, 0x0646, 0x0020, 0x0627, 0x0644, 0x0627, - 0x062a, 0x062d, 0x0627, 0x062f, 0x0020, 0x0627, 0x0644, 0x0623, - 0x0648, 0x0631, 0x0648, 0x0628, 0x064a, 0x0020, 0x0644, 0x0648, - 0x062d, 0x062f, 0x0647, 0x060c, 0x0020, 0x0627, 0x062d, 0x062a, - 0x0648, 0x0649, 0x0020, 0x0627, 0x0644, 0x0639, 0x062f, 0x064a, - 0x062f, 0x0020, 0x0645, 0x0646, 0x0020, 0x000d, 0x000a, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0627, 0x0644, 0x0634, - 0x0641, 0x0631, 0x0627, 0x062a, 0x0020, 0x0627, 0x0644, 0x0645, - 0x062e, 0x062a, 0x0644, 0x0641, 0x0629, 0x0020, 0x0644, 0x064a, - 0x063a, 0x0637, 0x064a, 0x0020, 0x062c, 0x0645, 0x064a, 0x0639, - 0x0020, 0x0627, 0x0644, 0x0644, 0x063a, 0x0627, 0x062a, 0x0020, - 0x0627, 0x0644, 0x0645, 0x0633, 0x062a, 0x062e, 0x062f, 0x0645, - 0x0629, 0x0020, 0x0641, 0x064a, 0x0020, 0x0627, 0x0644, 0x0627, - 0x062a, 0x062d, 0x0627, 0x062f, 0x002e, 0x0020, 0x0648, 0x062d, - 0x062a, 0x0649, 0x0020, 0x0644, 0x0648, 0x0020, 0x000d, 0x000a, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0627, 0x0639, - 0x062a, 0x0628, 0x0631, 0x0646, 0x0627, 0x0020, 0x0644, 0x063a, - 0x0629, 0x0020, 0x0648, 0x0627, 0x062d, 0x062f, 0x0629, 0x060c, - 0x0020, 0x0643, 0x0627, 0x0644, 0x0644, 0x063a, 0x0629, 0x0020, - 0x0627, 0x0644, 0x0625, 0x0646, 0x062c, 0x0644, 0x064a, 0x0632, - 0x064a, 0x0629, 0x060c, 0x0020, 0x0641, 0x0625, 0x0646, 0x0020, - 0x062c, 0x062f, 0x0648, 0x0644, 0x0020, 0x0634, 0x0641, 0x0631, - 0x0629, 0x0020, 0x0648, 0x0627, 0x062d, 0x062f, 0x0020, 0x0644, - 0x0645, 0x0020, 0x064a, 0x0643, 0x0641, 0x0020, 0x000d, 0x000a, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0644, 0x0627, - 0x0633, 0x062a, 0x064a, 0x0639, 0x0627, 0x0628, 0x0020, 0x062c, - 0x0645, 0x064a, 0x0639, 0x0020, 0x0627, 0x0644, 0x0623, 0x062d, - 0x0631, 0x0641, 0x0020, 0x0648, 0x0639, 0x0644, 0x0627, 0x0645, - 0x0627, 0x062a, 0x0020, 0x0627, 0x0644, 0x062a, 0x0631, 0x0642, - 0x064a, 0x0645, 0x0020, 0x0648, 0x0627, 0x0644, 0x0631, 0x0645, - 0x0648, 0x0632, 0x0020, 0x0627, 0x0644, 0x0641, 0x0646, 0x064a, - 0x0629, 0x0020, 0x0648, 0x0627, 0x0644, 0x0639, 0x0644, 0x0645, - 0x064a, 0x0629, 0x0020, 0x000d, 0x000a, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0627, 0x0644, 0x0634, 0x0627, 0x0626, - 0x0639, 0x0629, 0x0020, 0x0627, 0x0644, 0x0627, 0x0633, 0x062a, - 0x0639, 0x0645, 0x0627 - }; - -static const TInt KArab1Length = sizeof(KArab1Data)/sizeof(TUint16); - -static const TPtrC KArab1(KArab1Data, KArab1Length); - -//Test data for Arabic Illegal Linebreaking - -static const TUint16 KArabicDualJoiningLettersData[] = - { - 0x0626, 0x0628, 0x062a, 0x062b, 0x062c, 0x062e, 0x0633, 0x0634, 0x0637, 0x0638, 0x0639, 0x063a, - 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0647, 0x0648, 0x0649, 0x064a, 0x0678, 0x0679, 0x067a, - 0x067b, 0x067c, 0x067d, 0x067e, 0x067f, 0x0680, 0x0681, 0x0682, 0x0683, 0x0684, 0x0685, 0x0686, - 0x0687, 0x069a, 0x069b, 0x069c, 0x069d, 0x069e, 0x069f, 0x06a0, 0x06a1, 0x06a2, 0x06a3, 0x06a4, - 0x06a5, 0x06a6, 0x06a7, 0x06a9, 0x06aa, 0x06ab, 0x06ac, 0x06ad, 0x06ae, 0x06af, 0x06b0, 0x06b1, - 0x06b2, 0x06b3, 0x06b4, 0x06b5, 0x06b6, 0x06b7, 0x06b8, 0x06b9, 0x06ba, 0x06bb, 0x06bc, 0x06bd, - 0x06be, 0x06bf, 0x06c1, 0x06cc, 0x06ce, 0x06d0, 0x06d1, 0x06fa, 0x06fb, 0x06fc - }; - -static const TInt KArabicDualJoiningLettersLength = sizeof(KArabicDualJoiningLettersData)/sizeof(TUint16); - -static const TPtrC KArabicDualJoiningLetters(KArabicDualJoiningLettersData, KArabicDualJoiningLettersLength); - -static const TUint16 KArabicRightJoiningLettersData[] = - { - 0x0622, 0x0623, 0x0624, 0x0625, 0x0627, 0x0629, 0x062f, 0x0630, 0x0631, 0x0632, 0x0648, 0x0671, - 0x0672, 0x0673, 0x0675, 0x0676, 0x0677, 0x0688, 0x0689, 0x068a, 0x068b, 0x068c, 0x068d, 0x068e, - 0x068f, 0x0690, 0x0691, 0x0692, 0x0693, 0x0694, 0x0695, 0x0696, 0x0697, 0x0698, 0x0699, 0x06c0, - 0x06c2, 0x06c3, 0x06c4, 0x06c5, 0x06c6, 0x06c7, 0x06c8, 0x06c9, 0x06ca, 0x06cb, 0x06cd, 0x06cf, - 0x06d2, 0x06d3 - }; - -static const TInt KArabicRightJoiningLettersLength = sizeof(KArabicRightJoiningLettersData)/sizeof(TUint16); - -static const TPtrC KArabicRightJoiningLetters(KArabicRightJoiningLettersData, KArabicRightJoiningLettersLength); - -static const TUint16 KArabicNonJoiningLettersData[] = - { - 0x0640, 0x0674, 0x06D5 - }; - -static const TInt KArabicNonJoiningLettersLength = sizeof(KArabicNonJoiningLettersData)/sizeof(TUint16); - -static const TPtrC KArabicNonJoiningLetters(KArabicNonJoiningLettersData, KArabicNonJoiningLettersLength); - -static const TUint16 KAlefJoiningGroupData[] = - { - 0x0622, 0x0623, 0x0625, 0x0671, 0x0672, 0x0673, 0x0675 - }; - -static const TInt KAlefJoiningGroupLength = sizeof(KAlefJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KAlefJoiningGroup(KAlefJoiningGroupData, KAlefJoiningGroupLength); - -static const TUint16 KWawJoiningGroupData[] = - { - 0x0624, 0x0648, 0x0676, 0x0677, 0x06c4, 0x06c5, 0x06c6, 0x06c7, 0x06c8, 0x06c9, 0x06ca, 0x06cb, - 0x06cf - }; - -static const TInt KWawJoiningGroupLength = sizeof(KWawJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KWawJoiningGroup(KWawJoiningGroupData, KWawJoiningGroupLength); - - -static const TUint16 KYehJoiningGroupData[] = - { - 0x0626, 0x0649, 0x064a, 0x0678, 0x06cc, 0x06ce, 0x06d0, 0x06d1 - }; - - -static const TInt KYehJoiningGroupLength = sizeof(KYehJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KYehJoiningGroup(KYehJoiningGroupData, KYehJoiningGroupLength); - -static const TUint16 KBehJoiningGroupData[] = - { - 0x0628, 0x062a, 0x062b, 0x0679, 0x067a, 0x067b, 0x067c, 0x067d, 0x067e, 0x067f, 0x0680 - }; - -static const TInt KBehJoiningGroupLength = sizeof(KBehJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KBehJoiningGroup(KBehJoiningGroupData, KBehJoiningGroupLength); - -static const TUint16 KTehMarbutaJoiningGroupData[] = - { - 0x0629, 0x06c0 - }; - -static const TInt KTehMarbutaJoiningGroupLength = sizeof(KTehMarbutaJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KTehMarbutaJoiningGroup(KTehMarbutaJoiningGroupData, KTehMarbutaJoiningGroupLength); - -static const TUint16 KHahJoiningGroupData[] = - { - 0x062c, 0x062d, 0x062e, 0x0681, 0x0682, 0x0683, 0x0684, 0x0685, 0x0686, 0x0687 - }; - -static const TInt KHahJoiningGroupLength = sizeof(KHahJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KHahJoiningGroup(KHahJoiningGroupData, KHahJoiningGroupLength); - -static const TUint16 KDalJoiningGroupData[] = - { - 0x062f, 0x0688, 0x0689, 0x068a, 0x068b, 0x068c, 0x068d, 0x068e, 0x068f, 0x0690 - }; - -static const TInt KDalJoiningGroupLength = sizeof(KDalJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KDalJoiningGroup(KDalJoiningGroupData, KDalJoiningGroupLength); - - -static const TUint16 KRehJoiningGroupData[] = - { - 0x0631, 0x0632, 0x0691, 0x0692, 0x0693, 0x0694, 0x0695, 0x0696, 0x0697, 0x0698, 0x0699 - }; - -static const TInt KRehJoiningGroupLength = sizeof(KRehJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KRehJoiningGroup(KRehJoiningGroupData, KRehJoiningGroupLength); - -static const TUint16 KSeenJoiningGroupData[] = - { - 0x0633, 0x0634, 0x069a, 0x069b, 0x069c, 0x06fa - }; - -static const TInt KSeenJoiningGroupLength = sizeof(KSeenJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KSeenJoiningGroup(KSeenJoiningGroupData, KSeenJoiningGroupLength); - -static const TUint16 KSadJoiningGroupData[] = - { - 0x0635, 0x0636, 0x069d, 0x069e, 0x06fb - }; - -static const TInt KSadJoiningGroupLength = sizeof(KSadJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KSadJoiningGroup(KSadJoiningGroupData, KSadJoiningGroupLength); - -static const TUint16 KTahJoiningGroupData[] = - { - 0x0637, 0x0638, 0x069f - }; - -static const TInt KTahJoiningGroupLength = sizeof(KTahJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KTahJoiningGroup(KTahJoiningGroupData, KTahJoiningGroupLength); - -static const TUint16 KAinJoiningGroupData[] = - { - 0x0639, 0x063a, 0x6a0, 0x06fc - }; - -static const TInt KAinJoiningGroupLength = sizeof(KAinJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KAinJoiningGroup(KAinJoiningGroupData, KAinJoiningGroupLength); - -static const TUint16 KFehJoiningGroupData[] = - { - 0x0641, 0x06a1, 0x06a2, 0x06a3, 0x06a4, 0x06a5, 0x06a6 - }; - - -static const TInt KFehJoiningGroupLength = sizeof(KFehJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KFehJoiningGroup(KFehJoiningGroupData, KFehJoiningGroupLength); - -static const TUint16 KQafJoiningGroupData[] = - { - 0x0642, 0x06a7, 0x06a8 - }; - -static const TInt KQafJoiningGroupLength = sizeof(KQafJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KQafJoiningGroup(KQafJoiningGroupData, KQafJoiningGroupLength); - -static const TUint16 KKafJoiningGroupData[] = - { - 0x0643, 0x06aa, 0x06ac, 0x06ad, 0x06ae - }; - -static const TInt KKafJoiningGroupLength = sizeof(KKafJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KKafJoiningGroup(KKafJoiningGroupData, KKafJoiningGroupLength); - -static const TUint16 KLamJoiningGroupData[] = - { - 0x0644, 0x06b5, 0x06b6, 0x06b7, 0x06b8 - }; - -static const TInt KLamJoiningGroupLength = sizeof(KLamJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KLamJoiningGroup(KLamJoiningGroupData, KLamJoiningGroupLength); - -static const TUint16 KMeemJoiningGroupData[] = - { - 0x0645 - }; - -static const TInt KMeemJoiningGroupLength = sizeof(KMeemJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KMeemJoiningGroup(KMeemJoiningGroupData, KMeemJoiningGroupLength); - -static const TUint16 KNoonJoiningGroupData[] = - { - 0x0646, 0x06b9, 0x06ba, 0x06bb, 0x06bc, 0x06bd - }; - -static const TInt KNoonJoiningGroupLength = sizeof(KNoonJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KNoonJoiningGroup(KNoonJoiningGroupData, KNoonJoiningGroupLength); - -static const TUint16 KHehJoiningGroupData[] = - { - 0x0647 - }; - -static const TInt KHehJoiningGroupLength = sizeof(KHehJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KHehJoiningGroup(KHehJoiningGroupData, KHehJoiningGroupLength); - -static const TUint16 KGafJoiningGroupData[] = - { - 0x06a9, 0x06ab, 0x06af, 0x06b0, 0x06b1, 0x06b2, 0x06b3, 0x06b4 - }; - -static const TInt KGafJoiningGroupLength = sizeof(KGafJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KGafJoiningGroup(KGafJoiningGroupData, KGafJoiningGroupLength); - -static const TUint16 KKnottedHehJoiningGroupData[] = - { - 0x06be - }; - -static const TInt KKnottedHehJoiningGroupLength = sizeof(KKnottedHehJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KKnottedHehJoiningGroup(KKnottedHehJoiningGroupData, KKnottedHehJoiningGroupLength); - -static const TUint16 KHehGoalJoiningGroupData[] = - { - 0x06c1 - }; - -static const TInt KHehGoalJoiningGroupLength = sizeof(KHehGoalJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KHehGoalJoiningGroup(KHehGoalJoiningGroupData, KHehGoalJoiningGroupLength); - -static const TUint16 KHamzaOnHehGoalJoiningGroupData[] = - { - 0x06c2, 0x06c3 - }; - -static const TInt KHamzaOnHehGoalJoiningGroupLength = sizeof(KHamzaOnHehGoalJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KHamzaOnHehGoalJoiningGroup(KHamzaOnHehGoalJoiningGroupData, KHamzaOnHehGoalJoiningGroupLength); - -static const TUint16 KYehWithTailJoiningGroupData[] = - { - 0x06cd - }; - -static const TInt KYehWithTailJoiningGroupLength = sizeof(KYehWithTailJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KYehWithTailJoiningGroup(KYehWithTailJoiningGroupData, KYehWithTailJoiningGroupLength); - -static const TUint16 KYehBarreeJoiningGroupData[] = - { - 0x06d2, 0x06d3 - }; - -static const TInt KYehBarreeJoiningGroupLength = sizeof(KYehBarreeJoiningGroupData)/sizeof(TUint16); - -static const TPtrC KYehBarreeJoiningGroup(KYehBarreeJoiningGroupData, KYehBarreeJoiningGroupLength); - -enum JoiningGroupType - { - EAlefJoiningGroup, - EWawJoiningGroup, - EYehJoiningGroup, - EBehJoiningGroup, - ETehMarbutaJoiningGroup, - EHahJoiningGroup, - EDalJoiningGroup, - ERehJoiningGroup, - ESeenJoiningGroup, - ESadJoiningGroup, - ETahJoiningGroup, - EAinJoiningGroup, - EFehJoiningGroup, - EQafJoiningGroup, - EKafJoiningGroup, - ELamJoiningGroup, - EMeemJoiningGroup, - ENoonJoiningGroup, - EHehJoiningGroup, - EGafJoiningGroup, - EKnottedHehJoiningGroup, - EHehGoalJoiningGroup, - EHamzaOnHehGoalJoiningGroup, - EYehWithTailJoiningGroup, - EYehBarreeJoiningGroup - }; - -struct JoiningGroupListData - { - TInt iGroupType; - const TPtrC* iGroup; - }; - -// Structure to hold basic shape glyph values - -struct ArabicLetterShapes - { - TUint16 iCode; //base Unicode value for character - TUint16 iIsolated; - TUint16 iFinal; - TUint16 iInitial; - TUint16 iMedial; - }; - -static const ArabicLetterShapes KArabicShapeList[] = - { - { 0x0622, 0xfe81, 0xfe82, 0x0622, 0x0622 }, - { 0x0623, 0xfe83, 0xfe84, 0x0623, 0x0623 }, - { 0x0624, 0xfe85, 0xfe86, 0x0624, 0x0624 }, - { 0x0625, 0xfe87, 0xfe88, 0x0625, 0x0625 }, - { 0x0626, 0xfe89, 0xfe8a, 0xfe8b, 0xfe8c }, - { 0x0627, 0xfe8d, 0xfe8e, 0x0627, 0x0627 }, - { 0x0628, 0xfe8f, 0xfe90, 0xfe91, 0xfe92 }, - { 0x0629, 0xfe93, 0xfe94, 0x0629, 0x0629 }, - { 0x062a, 0xfe95, 0xfe96, 0xfe97, 0xfe98 }, - { 0x062b, 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c }, - { 0x062c, 0xfe9d, 0xfe9e, 0xfe9f, 0xfea0 }, - { 0x062d, 0xfea1, 0xfea2, 0xfea3, 0xfea4 }, - { 0x062e, 0xfea5, 0xfea6, 0xfea7, 0xfea8 }, - { 0x062f, 0xfea9, 0xfeaa, 0x062f, 0x062f }, - { 0x0630, 0xfeab, 0xfeac, 0x0630, 0x0630 }, - { 0x0631, 0xfead, 0xfeae, 0x0631, 0x0631 }, - { 0x0632, 0xfeaf, 0xfeb0, 0x0632, 0x0632 }, - { 0x0633, 0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4 }, - { 0x0634, 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8 }, - { 0x0635, 0xfeb9, 0xfeba, 0xfebb, 0xfebc }, - { 0x0636, 0xfebd, 0xfebe, 0xfebf, 0xfec0 }, - { 0x0637, 0xfec1, 0xfec2, 0xfec3, 0xfec4 }, - { 0x0638, 0xfec5, 0xfec6, 0xfec7, 0xfec8 }, - { 0x0639, 0xfec9, 0xfeca, 0xfecb, 0xfecc }, - { 0x063a, 0xfecd, 0xfece, 0xfecf, 0xfed0 }, - { 0x0641, 0xfed1, 0xfed2, 0xfed3, 0xfed4 }, - { 0x0642, 0xfed5, 0xfed6, 0xfed7, 0xfed8 }, - { 0x0643, 0xfed9, 0xfeda, 0xfedb, 0xfedc }, - { 0x0644, 0xfedd, 0xfede, 0xfedf, 0xfee0 }, - { 0x0645, 0xfee1, 0xfee2, 0xfee3, 0xfee4 }, - { 0x0646, 0xfee5, 0xfee6, 0xfee7, 0xfee8 }, - { 0x0647, 0xfee9, 0xfeea, 0xfeeb, 0xfeec }, - { 0x0648, 0xfeed, 0xfeee, 0x0648, 0x0648 }, - { 0x0649, 0xfeef, 0xfef0, 0xfbe8, 0xfbe9 }, - { 0x064a, 0xfef1, 0xfef2, 0xfef3, 0xfef4 }, - { 0x0671, 0xfb50, 0xfb51, 0x0671, 0x0671 }, - { 0x0677, 0xfbdd, 0x0677, 0x0677, 0x0677 }, - { 0x0679, 0xfb66, 0xfb67, 0xfb68, 0xfb69 }, - { 0x067a, 0xfb5e, 0xfb5f, 0xfb60, 0xfb61 }, - { 0x067b, 0xfb52, 0xfb53, 0xfb54, 0xfb55 }, - { 0x067e, 0xfb56, 0xfb57, 0xfb58, 0xfb59 }, - { 0x067f, 0xfb62, 0xfb63, 0xfb64, 0xfb65 }, - { 0x0680, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d }, - { 0x0683, 0xfb76, 0xfb77, 0xfb78, 0xfb79 }, - { 0x0684, 0xfb72, 0xfb73, 0xfb74, 0xfb75 }, - { 0x0686, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d }, - { 0x0687, 0xfb7e, 0xfb7f, 0xfb80, 0xfb81 }, - { 0x0688, 0xfb88, 0xfb89, 0x0688, 0x0688 }, - { 0x068c, 0xfb84, 0xfb85, 0x068c, 0x068c }, - { 0x068d, 0xfb82, 0xfb83, 0x068d, 0x068d }, - { 0x068e, 0xfb86, 0xfb87, 0x068e, 0x068e }, - { 0x0691, 0xfb8c, 0xfb8d, 0x0691, 0x0691 }, - { 0x0698, 0xfb8a, 0xfb8b, 0x0698, 0x0698 }, - { 0x06a4, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d }, - { 0x06a6, 0xfb6e, 0xfb6f, 0xfb70, 0xfb71 }, - { 0x06a9, 0xfb8e, 0xfb8f, 0xfb90, 0xfb91 }, - { 0x06ad, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6 }, - { 0x06af, 0xfb92, 0xfb93, 0xfb94, 0xfb95 }, - { 0x06b1, 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d }, - { 0x06b3, 0xfb96, 0xfb97, 0xfb98, 0xfb99 }, - { 0x06ba, 0xfb9e, 0xfb9f, 0x06ba, 0x06ba }, - { 0x06bb, 0xfba0, 0xfba1, 0xfba2, 0xfba3 }, - { 0x06be, 0xfbaa, 0xfbab, 0xfbac, 0xfbad }, - { 0x06c0, 0xfba4, 0xfba5, 0x06c0, 0x06c0 }, - { 0x06c1, 0xfba6, 0xfba7, 0xfba8, 0xfba9 }, - { 0x06c5, 0xfbe0, 0xfbe1, 0x06c5, 0x06c5 }, - { 0x06c6, 0xfbd9, 0xfbda, 0x06c6, 0x06c6 }, - { 0x06c7, 0xfbd7, 0xfbd8, 0x06c7, 0x06c7 }, - { 0x06c8, 0xfbdb, 0xfbdc, 0x06c8, 0x06c8 }, - { 0x06c9, 0xfbe2, 0xfbe3, 0x06c9, 0x06c9 }, - { 0x06cb, 0xfbde, 0xfbdf, 0x06cb, 0x06cb }, - { 0x06cc, 0xfbfc, 0xfbfd, 0xfbfe, 0xfbff }, - { 0x06d0, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7 }, - { 0x06d2, 0xfbae, 0xfbaf, 0x06d2, 0x06d2 }, - { 0x06d3, 0xfbb0, 0xfbb1, 0x06d3, 0x06d3 } - }; - -static const TInt KArabicShapeListLength = sizeof(KArabicShapeList) / sizeof (ArabicLetterShapes); - -LOCAL_C TInt GetArabicShapeDataIndex(const TUint16 aCode ) - { - for (TInt i = 0 ; i < KArabicShapeListLength ; ++i) - { - if (aCode == KArabicShapeList[i].iCode) - { - return i; - } - } - return -1;//not found - } - -#ifdef USE_ISOLATED -LOCAL_C TUint16 GetIsolatedForm(const TUint16 aCode) - { - TInt index = GetArabicShapeDataIndex(aCode); - return (index >= 0) ? KArabicShapeList[index].iIsolated : aCode; - } -#endif /* USE_ISOLATED */ - -LOCAL_C TUint16 GetFinalForm(const TUint16 aCode) - { - TInt index = GetArabicShapeDataIndex(aCode); - return (index >= 0) ? KArabicShapeList[index].iFinal : aCode; - } - -LOCAL_C TUint16 GetInitialForm(const TUint16 aCode) - { - TInt index = GetArabicShapeDataIndex(aCode); - return (index >= 0) ? KArabicShapeList[index].iInitial : aCode; - } - -LOCAL_C TUint16 GetMedialForm(const TUint16 aCode) - { - TInt index = GetArabicShapeDataIndex(aCode); - return (index >= 0) ? KArabicShapeList[index].iMedial : aCode; - } - -// Utility functions to show contents of test data using aTest->INFO_PRINTF1 - -_LIT(KAddressMarker, "> "); -_LIT(KSpace, " "); -_LIT(KLength, ", Length of Data = %d 16-bit words\r\n"); -_LIT(KSpaces, " "); -_LIT(KPeriod, "."); -_LIT(KSingleString, "%s\r\n"); -_LIT(KDoubleString, "%s <%s>\r\n"); - - - -class MOOMTest - { -public: - virtual TInt ConsecutivePassesRequired() const { return 1; } - virtual void SetUpL() = 0; - virtual void ManipulateL() = 0; - virtual void TestLeftCleanlyL(CTGraphicsBase* /*aTest*/) {}; - virtual void TestIfPassedL(CTGraphicsBase* /*aTest*/) {}; - virtual void TearDown() = 0; - }; - -// Test the internals of the algorithm for Unicode compliance. -class TBdLevelTest - { -public: - TChar::TBdCategory iCat; - TInt iLevel; // or -1 for "no test" - TChar::TBdCategory iChangedCat; - }; - -class CTBiDi : public CTGraphicsBase - { -public: - CTBiDi(CTestStep* aStep); - - void DoTestTextDrawPanic(); - TInt DoTestPanicSetTextL(); - TInt DoTestPanicMinimumSizeLineGap(); - TInt DoTestPanicMinimumSizeMaxLines(); - TInt DoTestPanicMinimumSizeWidth(); - TInt DoTestPanicMinimumNumberOfLinesL(); - static void FillRunArray(const TBdLevelTest* aTests, TBidirectionalState::TRunInfo* aRuns, TInt aArraySize, TBidirectionalState::TReorderContext& aContext); - static void SetContext(TBidirectionalState::TReorderContext& aContext, TChar::TBdCategory aCat); -protected: -//from CTGraphicsStep - virtual void RunTestCaseL(TInt aCurTestCase); -private: - void PrintTestData (const TDesC& aTitle , const TDesC16& aData); - void PrintTestData(const TDesC& aTitle, const TText16* aDataBuffer, const TInt aSize); - void TestReorderTextL(); - void TestOOML(MOOMTest& aOOMTest); - void PrintRunCategories(const TBidirectionalState::TRunInfo* aRunArray, const TInt aRuns, const TText* aText, const TBool aInternal); - void PrintRunArray(const TBidirectionalState::TRunInfo* aRunArray, const TInt aRuns, const TText* aText); - void DoTestRRunInfoArrayInternalsL(); - void DoTestTBidiTextNewL(); - void DoTestTBidiTextSetTextL(); - void DoTestTBidiTextMinimumSizeL(); - void DoTestTBidiTextMinimumSizePanics(); - void TestCrApos69qd7nL(); - void TUnicodeExampleTestL(); - void NoLineBreakDrawTestL(); - void RightToLeftArabicDrawTestL(); - void TRunInfoCompactReorderTest(); - void TBidiLogicalToVisualGetVisualLineTest(); - void TestScriptDirectionality(); - void LeftToRightDrawTestL(); - TBool GlyphTestL(const TDesC16& aTitle, const TDesC16& aOriginal, const TDesC16& aDesired, const TInt aWrapWidth); - void LigatureTestsL(); - void ArabicIllegalLinebreakTestsL(); - TInt TestPanic(TThreadFunction aFunction); - void DEF043323L(); - void DEF052191L(); - void TestBidiTextClassL(); - void TestBidiLogicalToVisualClassL(); - void TestCatToNumber(TInt aIn, TInt aOut); - void CheckRunResults(const TBdLevelTest* aTests, TBidirectionalState::TRunInfo* aRuns, - TInt aArraySize); - void TestTBidirectionalStateInternalsL(); - void DoXTests(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns); - void DoKW123TestsLeft(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoKW123TestsRight(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns); - void DoKW456Tests(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns); - void DoKW7TestsLeft(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns); - void DoKW7TestsRight(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoKN12TestsLeft(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoKN12TestsRight(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoKN12TestsRRL(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoKN12TestsLRR(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoKN12TestsLRP(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoKN12TestsRLP(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) ; - void DoCarryOverTest1(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns); - void INC086135TestL(); - - TInt iTestThreadCounter; - }; - -void CTBiDi::PrintTestData (const TDesC& aTitle , const TDesC16& aData) - { - TInt i; - TInt j; - TInt end; - - TInt length = aData.Length(); - - TBuf<80> buffer; - - buffer.Zero(); - buffer.Append(aTitle); - buffer.Append(KLength); - - INFO_PRINTF2(buffer, length); - - for (i = 0 ; i < length ; i += 8) - { - buffer.Zero(); - buffer.AppendNumFixedWidth(i, EHex, 8); - buffer += KAddressMarker; - - end = ((length-i) >= 8) ? i+8 : length; - - for (j = i ; j < end ; ++j) - { - buffer.AppendNumFixedWidth(aData[j], EHex, 4); - buffer += KSpace; - } - buffer += TPtrC(KSpaces().Ptr(), ((8-(j-i))*5)+4); - - for (j = i ; j < end ; ++j) - { - if (aData[j] >= 32) - { - buffer.Append(aData[j]); - } - else - { - buffer += KPeriod; - } - } - buffer.ZeroTerminate(); - INFO_PRINTF2(KSingleString, buffer.Ptr()); - } - - } - -void CTBiDi::PrintTestData(const TDesC& aTitle, const TText16* aDataBuffer, const TInt aSize) - { - PrintTestData(aTitle, TPtrC16(aDataBuffer, aSize)); - } - -_LIT(KArabicFontName, ""); //any name will do - -//This replicates the definition in TBidirectionalState -//because TCategory is declared as private there -enum TCategory - { - ELeftToRight = 1 << TChar::ELeftToRight, - ELeftToRightEmbedding = 1 << TChar::ELeftToRightEmbedding, - ELeftToRightOverride = 1 << TChar::ELeftToRightOverride, - ERightToLeft = 1 << TChar::ERightToLeft, - ERightToLeftArabic = 1 << TChar::ERightToLeftArabic, - ERightToLeftEmbedding = 1 << TChar::ERightToLeftEmbedding, - ERightToLeftOverride = 1 << TChar::ERightToLeftOverride, - EPopDirectionalFormat = 1 << TChar::EPopDirectionalFormat, - EEuropeanNumber = 1 << TChar::EEuropeanNumber, - EEuropeanNumberSeparator = 1 << TChar::EEuropeanNumberSeparator, - EEuropeanNumberTerminator = 1 << TChar::EEuropeanNumberTerminator, - EArabicNumber = 1 << TChar::EArabicNumber, - ECommonNumberSeparator = 1 << TChar::ECommonNumberSeparator, - ENonSpacingMark = 1 << TChar::ENonSpacingMark, - EBoundaryNeutral = 1 << TChar::EBoundaryNeutral, - EParagraphSeparator = 1 << TChar::EParagraphSeparator, - ESegmentSeparator = 1 << TChar::ESegmentSeparator, - EWhitespace = 1 << TChar::EWhitespace, - EOtherNeutral = 1 << TChar::EOtherNeutral, - - // categories used internally by the bidirectional algorithm - EStartOfParagraph = 1 << (TChar::EOtherNeutral + 1), - EEndOfParagraph = 1 << (TChar::EOtherNeutral + 2), - - // useful groups - EBdControlsGroup = ELeftToRightEmbedding | ERightToLeftEmbedding | - ELeftToRightOverride | ERightToLeftOverride | EPopDirectionalFormat, - ELeftToRightGroup = ELeftToRight | EEuropeanNumber | ELeftToRightOverride | ELeftToRightEmbedding, - ERightToLeftGroup = ERightToLeft | EArabicNumber | ERightToLeftArabic | ERightToLeftOverride | - ERightToLeftEmbedding, - }; - -// Helper function -void AppendCharacter(HBufC *aDes, TUint aChar) - { - if (IsSupplementary(aChar)) - { - TText16 high = GetHighSurrogate(aChar); - TText16 low = GetLowSurrogate(aChar); - aDes->Des().Append(high); - aDes->Des().Append(low); - } - else - { - aDes->Des().Append(aChar); - } - } - -void AppendCharacter(TBuf<24> *aDes, TUint aChar) - { - if (IsSupplementary(aChar)) - { - TText16 high = GetHighSurrogate(aChar); - TText16 low = GetLowSurrogate(aChar); - aDes->Append(high); - aDes->Append(low); - } - else - { - aDes->Append(aChar); - } - } - -//Class to store the start and end of a run of characters -class TTestDataRun - { -public: - TInt iStart; - TInt iLength; - }; - - -class TestTBidirectionalState - { -public: - enum - { - EParaLToR = EFalse, - EParaRToL = ETrue - }; - -/** - * - * Checks that two blocks of 16-bit text contain the same characters in the same order - * NOT a collating function!. - * - * - * @param "const TText* aOldText" - * Pointer to block of text - * @param "const TText* aNewText" - * Pointer to block of text. - * This may point to the same buffer as oldText. - * @param "const TUint aSize" - * Unsigned integer representing size of text blocks. - * - * @return ETrue: test succeeded EFalse: test failed. - * - */ - static TBool TextInSameOrder (const TText* aOldText , const TText* aNewText, const TUint aSize) - { - - __ASSERT_ALWAYS(aOldText, User::Invariant()); - __ASSERT_ALWAYS(aNewText, User::Invariant()); - __ASSERT_ALWAYS(0 < aSize, User::Invariant()); - - if (aOldText == aNewText) - { - //By definition, if both point to the same buffer, it's identical! - return ETrue; - } - - for (TUint i = 0 ; i < aSize ; ++i) - { - if (aOldText[i] != aNewText[i]) - { - return EFalse; - } - } - - return ETrue; - } - -/** - * - * Checks that two blocks of 16-bit text contain the same characters but in reverse order - * NOT a collating function. - * - * - * @param "const TText* aOldText" - * Pointer to block of text - * @param "const TText* aNewText" - * Pointer to block of text. - * This may point to the same buffer as oldText. - * @param "const TUint aSize" - * The size of the text blocks. - * - * @return ETrue: test succeeded EFalse: test failed. - * - */ - static TBool TextInReverseOrder (const TText* aOldText , const TText* aNewText, const TUint aSize, CTGraphicsBase* aTest=NULL) - { - __ASSERT_ALWAYS(aOldText, User::Invariant()); - __ASSERT_ALWAYS(aNewText, User::Invariant()); - __ASSERT_ALWAYS(0 < aSize, User::Invariant()); - - TUint i = 0; // index into aOldText - TUint j = aSize - 1; // index into aNewText - while (i < aSize) - { - if (IsHighSurrogate(aOldText[i])) - { - if (aOldText[i] != aNewText[j-1] || aOldText[i+1] != aNewText[j]) - { - if (aTest) - { - _LIT(KMismatchFormat, "TextInReverseOrder report mismatch: aOldText[%d]=%04X != aNewText[%d]=%04X || aOldText[%d]=%04X != aNewText[%d]=%04X\r\n"); - aTest->Logger().LogExtra(((TText8*)__FILE__), __LINE__, ESevrWarn, KMismatchFormat, - i, aOldText[i], j-1, aNewText[j-1], i+1, aOldText[i+1], j, aNewText[j]); - } - return EFalse; - } - i += 2; - j -= 2; - } - else - { - if (aOldText[i] != aNewText[j]) - { - if (aTest) - { - _LIT(KMismatchFormat, "TextInReverseOrder report mismatch: aOldText[%d]=%04X != aNewText[%d]=%04X\r\n"); - aTest->INFO_PRINTF5(KMismatchFormat, i, aOldText[i], j, aNewText[j]); - } - return EFalse; - } - i++; - j--; - } - } - - return ETrue; - } - -/** - * - * Checks that two blocks of 16-bit text contain the same characters but in - * reverse order, skipping any zero-width joiners in aNewText. - * - * @param "const TText* aOldText" - * Pointer to block of text - * @param "const TText* aNewText" - * Pointer to block of text. - * This may point to the same buffer as oldText. - * @param "const TUint aSize" - * The size of aOldText. - * - * @return - * 0 if the text did not match, or a pointer one past the end of aNewText's - * match if it did. - * - */ - static const TText* TextInReverseOrderIgnoringJoiners( - const TText* aOldText , const TText* aNewText, const TUint aSize) - { - __ASSERT_ALWAYS(aOldText, User::Invariant()); - __ASSERT_ALWAYS(aNewText, User::Invariant()); - __ASSERT_ALWAYS(0 < aSize, User::Invariant()); - - const TText* newText = aNewText; - for (const TText* old = aOldText + aSize - 1; - aOldText <= old; - --old, ++newText) - { - while (*newText == KUnicodeZeroWidthJoiner) - ++newText; - if (*newText != *old) - return 0; - } - - while (*newText == KUnicodeZeroWidthJoiner) - ++newText; - return newText; - } - -/** - * - * Compares two pointers. - * If the second pointer does not point to the same place as the first, the - * block of memory it points to is deleted as an array. - * - * - * @param "const TText* aOldText" - * Pointer to block of text - * @param "TText*& aNewText" - * Pointer to block of text. - * This may point to the same buffer as aOldText. - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - */ - - static void DeleteText( const TText* aOldText, TText*& aNewText, CTGraphicsBase* aTest) - { - if (aNewText != aOldText) - { - TInt diff; - if (aNewText > aOldText) - { - diff = aNewText-aOldText; - } - else - { - diff = aOldText-aNewText; - } - if (diff < KBufferSize) - { - aTest->INFO_PRINTF2(_L("Bad free detected - diff %d\r\n"), diff); - aTest->TEST(EFalse); - } - - delete[] aNewText; - aNewText = 0; - } - } -/** - * - * Test Internalization and Externalization of TBidirectionalState class. - * - * - * @param "TBidirectionalState& aState" - * Reference to a TBidirectionalState object. - * The state object is assumed not to be newly created, i.e. it has - * non-default internal state. - * - * @param "TBidirectionalState& aState2" - * Reference to a TBidirectionalState object. - * The state object is assumed not to be newly created, i.e. it has - * non-default internal state. This state is also assumed to be - * different to that of aState - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - */ - static void TestInternalizeL(TBidirectionalState& aState, TBidirectionalState& aState2, CTGraphicsBase* aTest) - { - //Now test internalization and externalization functions - - //Create memory-based streams to externalize into - - CBufStore* rStore = CBufStore::NewLC(KBufferSize); - CBufStore* lStore = CBufStore::NewLC(KBufferSize); - - RStoreWriteStream lWStream; - RStoreWriteStream rWStream; - - TStreamId lStreamID = lWStream.CreateLC(*lStore); - TStreamId rStreamID = rWStream.CreateLC(*rStore); - - //Now externalize the states. - - aState.ExternalizeL(lWStream); - aState2.ExternalizeL(rWStream); - - lWStream.Close(); - rWStream.Close(); - - //Now read the externalised streams into two new state objects - - TBidirectionalState newLState; - TBidirectionalState newRState; - - RStoreReadStream rRStream; - RStoreReadStream lRStream; - - lRStream.OpenLC(*lStore, lStreamID); - rRStream.OpenLC(*rStore, rStreamID); - - newLState.InternalizeL(lRStream); - newRState.InternalizeL(rRStream); - - //Now establish that the internalization has changed the state - - aTest->TEST(!newLState.IsDefault()); - aTest->TEST(!newRState.IsDefault()); - - //Make sure that two distinct sets of data exist - - aTest->TEST(!(newLState == newRState)); - - //check that the new state objects are equivalent to the old ones - - aTest->TEST(newLState == aState); - aTest->TEST(newRState == aState2); - - //Now check that the externalization / internalization has - //produced true copies, i.e. that there are no shared buffers - //anywhere - - aState.Reset(); - aTest->TEST (aState.IsDefault()); - aTest->TEST (!(aState2 == aState)); - aTest->TEST (!(aState == aState2)); - aTest->TEST (!(aState == newLState)); - aTest->TEST(!newLState.IsDefault()); - aTest->TEST(!newRState.IsDefault()); - - aState2.Reset(); - aTest->TEST (aState2.IsDefault()); - aTest->TEST (aState == aState2); - aTest->TEST (aState2 == aState); - aTest->TEST (!(aState2 == newRState)); - aTest->TEST(!newLState.IsDefault()); - aTest->TEST(!newRState.IsDefault()); - - //End of tests - deal with cleanup stack - - CleanupStack::PopAndDestroy(6); - } - -/** - * - * Test API of TBidirectionalState class. - * - * with the exception of BidirectionalState::ReorderText - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void TestAPIL(CTGraphicsBase* aTest) - { - TInt run; - TInt i; - - //General tests for the DLL API to TBidirectionalState - - aTest->INFO_PRINTF1(_L("TBidirectionalState general exported API test\r\n")); - -#ifdef PRINT_RUNS - _LIT(KRunTitle, "Populating aOldText buffer with embedded runs of characters as follows:\r\n"); - _LIT(KRunFormat, "Run %d begins with %04x\r\n"); - _LIT(KEndRunFormat, "End of Run %d begins with %04x\r\n"); - -#endif // PRINT_RUNS - - const TInt KRuns = 64; - const TInt KRunSize = ((KBufferSize/KRuns)/2 ); - - //Create buffer to hold test data - - HBufC* oldTextBufPtr = HBufC::NewLC(KBufferSize); - - for (i = 0 ; i < KBufferSize ; ++i) - { - oldTextBufPtr->Des().Append(0); - } - - TPtr oldText(oldTextBufPtr->Des()); - - - TBidirectionalState::TRunInfo* lRunInfoArray = new(ELeave) TBidirectionalState::TRunInfo[KRuns]; - CleanupArrayDeletePushL(lRunInfoArray); - TBidirectionalState::TRunInfo* rRunInfoArray = new(ELeave) TBidirectionalState::TRunInfo[KRuns]; - CleanupArrayDeletePushL(rRunInfoArray); - - - //Build up a lot of levels of L-R and R-L text - - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - //Loop through all available test data - //There are more Left-To-Right characters than Right-To-Left, so - //use ltorIterator as the guide - - while (!ltorIterator.Wrapped()) - { - //Build up runs - TInt index = 0; - #ifdef PRINT_RUNS - aTest->INFO_PRINTF1(KRunTitle); - #endif // PRINT_RUNS - for (run = 0 ; run < KRuns ; run++) - { - TUint first; - lRunInfoArray[run].iStart = rRunInfoArray[run].iStart = index; - lRunInfoArray[run].iIndex = rRunInfoArray[run].iIndex = 0; - lRunInfoArray[run].iEmbeddingLevel = rRunInfoArray[run].iEmbeddingLevel = 0; - - if ((run & 1) == 0) - { - //Odd values of Run use R-L, even use L-R - - first = ltorIterator.NextChar(); - #ifdef PRINT_RUNS - aTest->INFO_PRINTF3(KRunFormat, run, first); - #endif // PRINT_RUNS - ltorIterator.NextCharInto(oldText, index, -1, ETrue, EFalse); - for (i = 1; i < KRunSize ; ++i) - { - if (!ltorIterator.NextCharInto(oldText, index)) - break; - } - lRunInfoArray[run].iDirection = rRunInfoArray[run].iDirection = 0; - #ifdef PRINT_RUNS - aTest->INFO_PRINTF4(KRunFormat, run, (first & 0xffff), 0); - #endif // PRINT_RUN - - } - else - { - first = rtolIterator.NextChar(); - oldText[index++] = first; - for (i = 1; i < KRunSize ; ++i) - { - oldText[index++] = rtolIterator.NextChar(); - } - lRunInfoArray[run].iDirection = rRunInfoArray[run].iDirection = 1; - } - #ifdef PRINT_RUNS - aTest->INFO_PRINTF4(KRunFormat, run, (first & 0xffff) , 1); - #endif // PRINT_RUNS - lRunInfoArray[run].iCategory = rRunInfoArray[run].iCategory = TChar(first).GetBdCategory(); - lRunInfoArray[run].iLength = rRunInfoArray[run].iLength = KRunSize; - } - -#ifdef PRINT_ARRAYS - _LIT(KArrayData, "Data\r\n"); - PrintTestData(KArrayData, oldText.Ptr(), KBufferSize); -#endif // PRINT_ARRAYS - - TBidirectionalState lState; - TBidirectionalState rState; - - //Check that newly created state objects match IsDefault - aTest->TEST (lState.IsDefault()); - aTest->TEST (rState.IsDefault()); - - //Check that default state objects work with operator== - aTest->TEST (lState == rState); - aTest->TEST (rState == lState); - - //Call ReorderLine to both populate lRunInfoArray and change - //the internal state of lState - lState.ReorderLine(lRunInfoArray, KRuns, ETrue, ETrue, EParaLToR, - TChar::EOtherNeutral, TChar::EOtherNeutral); - - //Check that the state object is no longer in default state - aTest->TEST (!lState.IsDefault()); - - //Check that operator== can detect that - aTest->TEST (!(lState == rState)); - - //Call ReorderLine to both populate rRunInfoArray and change - //the internal state of RState - rState.ReorderLine(rRunInfoArray, KRuns, ETrue, ETrue, EParaRToL, - TChar::EOtherNeutral, TChar::EOtherNeutral); - - //now rState should not be in default state - aTest->TEST(!rState.IsDefault()); - - //Test that lSTate and rState are not the same. - //Make sure that lState.operator== and rState.operator== give - //the same answer. - - aTest->TEST (!(lState == rState)); - aTest->TEST (!(rState == lState)); - - -#ifdef PRINT_RUNS - //Print the contents of kRunInfo in epocwind.out - _LIT(KRunInfo1, "run Category Embedding Level Direction Index Start Length\r\n"); - _LIT(KRunInfo2, " %d %d %d %d %d %d %d\r\n"); - - //Temp - print contents of arrays - aTest->INFO_PRINTF1(_L("Left-To-Right Paragraph\r\n")); - aTest->INFO_PRINTF1(KRunInfo1); - for (run = 0 ; run < KRuns ; ++run) - { - aTest->Logger().LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, - KRunInfo2, run, lRunInfoArray[run].iCategory, - lRunInfoArray[run].iEmbeddingLevel, lRunInfoArray[run].iDirection, - lRunInfoArray[run].iIndex, lRunInfoArray[run].iStart, lRunInfoArray[run].iLength); - } - aTest->INFO_PRINTF1(_L("Right-to-Left Paragraph\r\n")); - aTest->INFO_PRINTF1(KRunInfo1); - for (run = 0 ; run < KRuns ; ++run) - { - aTest->Logger().LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, - KRunInfo2, run, rRunInfoArray[run].iCategory, - rRunInfoArray[run].iEmbeddingLevel, rRunInfoArray[run].iDirection, - rRunInfoArray[run].iIndex, rRunInfoArray[run].iStart, rRunInfoArray[run].iLength); - } - -#endif // PRINT_RUNS - - //With the test data presented, there should be 64 runs in ascending order - //when processed in a left-to-right context and in descending order when processed - //as right-to-left, corresponding to each run being printed in entry order in - //the former case and in reverse order in the latter case. - - for (run = 0 ; run < KRuns ; ++run) - { - aTest->TEST(lRunInfoArray[run].iIndex == run); - aTest->TEST(rRunInfoArray[KRuns - run - 1].iIndex == run); - } - - - TestInternalizeL(lState,rState, aTest); - } - - - CleanupStack::PopAndDestroy(rRunInfoArray); - CleanupStack::PopAndDestroy(lRunInfoArray); - CleanupStack::PopAndDestroy(); - } - -/** - * - * Tests that the Bidirectional Algorithm leaves left to right text alone. - * - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LeftToRightReorderTest(TDes& aOldText, CTGraphicsBase* aTest) - {//LeftToRight test - are left-to-right character strings preserved? - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - while (!ltorIterator.Wrapped()) - { - for (TInt i = 0 ; i < KBufferSize; ) - { - if (!ltorIterator.NextCharInto(aOldText, i)) - break; - } - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - //LtoR characters should remain unchanged in either paragraph direction - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, KBufferSize)); - aTest->TEST(TextInSameOrder(aOldText.Ptr(), rText, KBufferSize)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - } - } -/** - * - * Tests that the Bidirectional Algorithm leaves european numbers alone - * - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void SimpleEuropeanNumberTest(TDes& aOldText, CTGraphicsBase* aTest) - {//European number test - are left-to-right character strings preserved? - - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - - - TextIterator numIterator(KEuropeanNumber, KEuropeanNumberLength); - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!numIterator.Wrapped()) - { - for (TInt i = 0 ; i < KBufferSize; ++i) - { - aOldText[i] = numIterator.NextChar(); - } - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, KBufferSize)); - aTest->TEST(TextInSameOrder(aOldText.Ptr(), rText, KBufferSize)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - } - - } -/** - * - * Tests that the Bidirectional Algorithm reverses right-to-left text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void SimpleRightToLeftTest(TDes& aOldText, CTGraphicsBase* aTest) - {// Basic Right-to-Left test - - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!rtolIterator.Wrapped()) - { - TInt i = 0; - rtolIterator.FillInto(aOldText, i, KBufferSize); - aOldText.SetLength(i); - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - //RightToLeft characters should be reversed in order - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), rText, i)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests that the Bidirectional Algorithm reverses right-to-left Arabic text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void SimpleRightToLeftArabicTest(TDes& aOldText, CTGraphicsBase* aTest) - {// Basic Right-to-Left Arabic test - - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - - // Basic Right-to-Left Arabic test - - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!rtolIterator.Wrapped()) - { - for (TInt i = 0 ; i < KBufferSize; ++i) - { - aOldText[i] = rtolIterator.NextChar(); - } - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - //RightToLeftArabic characters should be reversed - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, KBufferSize)); - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), rText, KBufferSize)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - - } - } - -/** - * - * Tests that characters that have mirrors are replaced by their mirrors - * when right-to-left Arabic text is reversed. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void MirroredCharacterTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - - // Mirrored Characters Test - - //Some Arabic test is interspersed with characters that have Mirror versions. - - //After reordering the text should be reversed and the mirror characters substituted - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - TextIterator mirrorsIterator(KMirrors().Ptr(), KMirrors().Length()); - TextIterator mirrordIterator(KMirrord().Ptr(), KMirrord().Length()); - - while (!rtolIterator.Wrapped()) - { - TInt i; - TInt j; - for (i = 0 ; i < (KBufferSize-3); i+=4) - { - aOldText[i] = rtolIterator.NextChar(); - aOldText[i+1] = mirrorsIterator.NextChar(); - aOldText[i+2] = mirrorsIterator.NextChar(); - aOldText[i+3] = rtolIterator.NextChar(); - } - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - - for (i = 0 ; i < (KBufferSize-3) ; i+=4) - { - j = KBufferSize - i - 1; - aTest->TEST(aOldText[i] == lText[j]); - aTest->TEST(aOldText[i] == rText[j]); - aTest->TEST(aOldText[i+3] == lText[j-3]); - aTest->TEST(aOldText[i+3] == rText[j-3]); - - TText16 nextMirror = mirrordIterator.NextChar(); - - aTest->TEST(nextMirror == lText[j-1]); - aTest->TEST(nextMirror == rText[j-1]); - - nextMirror = mirrordIterator.NextChar(); - - aTest->TEST(nextMirror == lText[j-2]); - aTest->TEST(nextMirror == rText[j-2]); - } - - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - - } - } -/** - * - * Tests the effect of LeftToRightOverride on left-to-right text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LROLeftToRightTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* newText = 0; - TInt retval = KErrNone; - - aTest->TEST(aOldText.Length() >= KBufferSize); - //LRO test - are left-to-right character strings preserved? - - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - while (ltorIterator.Wrapped()) - { - aOldText[0] = KLeftToRightOverride[0]; - for (TInt i = 1 ; i < (KBufferSize-1); ++i) - { - aOldText[i] = ltorIterator.NextChar(); - } - - aOldText[KBufferSize-1] = KPopDirectionalFormat[0]; - retval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, newText); - - aTest->TEST(retval == KErrNone); - - aTest->TEST(TextInSameOrder(aOldText.Ptr(), newText, KBufferSize)); - - DeleteText(aOldText.Ptr(), newText, aTest); - - } - } - -/** - * - * Tests the effect of LeftToRightOverride on right-to-left text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LRORightToLeftTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* newText = 0; - TInt retval = KErrNone; - - - //LRO test - are right-to-left character strings overidden? - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - while (!rtolIterator.Wrapped()) - { - aOldText[0] = KLeftToRightOverride[0]; - for (TInt i = 1 ; i < (KBufferSize-1); ++i) - { - aOldText[i] = rtolIterator.NextChar(); - } - - aOldText[KBufferSize-1] = KPopDirectionalFormat[0]; - retval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, newText); - - aTest->TEST(retval == KErrNone); - - aTest->TEST(TextInSameOrder(aOldText.Ptr(), newText, KBufferSize)); - - DeleteText(aOldText.Ptr(),newText, aTest); - } - } - -/** - * - * Tests the effect of RightToLeftOverride on right-to-left text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RLORightToLeftTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* newText = 0; - TInt retval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // RLO Test - are right-to-left characters unaffected? - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!rtolIterator.Wrapped()) - { - aOldText[0] = KRightToLeftOverride[0]; - - TInt i = 1; - rtolIterator.FillInto(aOldText, i, KBufferSize-1); - aOldText[i++] = KPopDirectionalFormat[0]; - aOldText.SetLength(i); - - retval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, newText); - - aTest->TEST(retval == KErrNone); - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), newText, i)); - - DeleteText(aOldText.Ptr(), newText, aTest); - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests the effect of RightToLeftOverride on right-to-left Arabic text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RLORightToLeftArabicTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* newText = 0; - TInt retval = KErrNone; - - // RLO Test - are right-to-left Arabic characters unaffected? - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!rtolIterator.Wrapped()) - { - aOldText[0] = KRightToLeftOverride[0]; - - for (TInt i = 1 ; i < (KBufferSize-1); ++i) - { - aOldText[i] = rtolIterator.NextChar(); - } - - aOldText[KBufferSize-1] = KPopDirectionalFormat[0]; - - retval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaRToL, newText); - - aTest->TEST(retval == KErrNone); - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), newText, KBufferSize)); - - DeleteText(aOldText.Ptr(), newText, aTest); - - } - } - -/** - * - * Tests the effect of RightToLeftOverride on left-to-right text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RLOLeftToRightTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* newText = 0; - TInt retval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // RLO Test - are left-to-right characters overriden? - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - aOldText[0] = KRightToLeftOverride[0]; - - TInt i; - for (i = 1 ; i < (KBufferSize-1); ) - { - if (!ltorIterator.NextCharInto(aOldText, i, KBufferSize-1)) - break; - } - - aOldText[i] = KPopDirectionalFormat[0]; - TInt newLength = i + 1; - aOldText.SetLength(newLength); - - retval = TBidirectionalState::ReorderText(aOldText.Ptr(), newLength, EParaRToL, newText); - - aTest->TEST(retval == KErrNone); - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), newText, newLength, aTest)); - - DeleteText(aOldText.Ptr(), newText, aTest); - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests the effect of putting Left To Right text by Right To Left text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenRToLTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // Mixing L-R & R-L without embed codes - L-R at start, R-L at end - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i = 0; - ltorIterator.FillInto(aOldText, i, KHalfBufferSize); - TInt realSize1 = i; - - rtolIterator.FillInto(aOldText, i, KBufferSize); - TInt realSize2 = i - realSize1; - aOldText.SetLength(i); - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, realSize1)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize1], &lText[realSize1], realSize2)); - aTest->TEST(TextInSameOrder(aOldText.Ptr(), rText, realSize1)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize1], &rText[realSize1], realSize2)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests the effect of putting Left To Right text by Right To Left Arabic text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenRToLATest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - while (!ltorIterator.Wrapped()) - { - TInt i; - - for (i = 0 ; i < KHalfBufferSize; ) - { - if (!ltorIterator.NextCharInto(aOldText, i, KHalfBufferSize)) - break; - } - TInt realSize1 = i; - - for (; i < KBufferSize; ++i) - { - aOldText[i] = rtolIterator.NextChar(); - } - TInt realSize2 = i - realSize1; - aOldText.SetLength(i); - - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, realSize1)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize1], &lText[realSize1], realSize2)); - aTest->TEST(TextInSameOrder(aOldText.Ptr(), rText, realSize1)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize1], &rText[realSize1], realSize2)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - } - } -/** - * - * Tests the effect of putting Right To Left Arabic by Left To Right text. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLAThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // Mixing L-R & R-LA without embed codes - R-LA at start, L-R at end - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i = 0; - - rtolIterator.FillInto(aOldText, i, KHalfBufferSize); - TInt realSize1 = i; - - ltorIterator.FillInto(aOldText, i, KBufferSize); - TInt realSize2 = i - realSize1; - aOldText.SetLength(i); - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, realSize1)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize1], &lText[realSize1] , realSize2)); - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), &rText[realSize2], realSize1)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize1], rText, realSize2)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests the effect of interspersing right to left and left to right text - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenRToLThenLToRThenRToLTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // Mixing L-R & R-L without embed codes - quarter buffers L-R R-L L-R R-L - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i = 0; - - ltorIterator.FillInto(aOldText, i, KQuarterBufferSize); - TInt realSize1 = i; - - rtolIterator.FillInto(aOldText, i, KHalfBufferSize); - TInt realSize2 = i - realSize1; - TInt realSize12 = i; - - ltorIterator.FillInto(aOldText, i, KThreeQuarterBufferSize); - TInt realSize3 = i - realSize12; - TInt realSize123 = i; - - rtolIterator.FillInto(aOldText, i, KBufferSize); - TInt realSize4 = i - realSize123; - TInt realSize34 = i - realSize12; - TInt realSize234 = i - realSize1; - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - // source: L1 R2 L3 R4 - // l should be: L1 L2 L3 L4 - // r should be: R4 R3 R2 R1 - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, realSize1)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize1], &lText[realSize1], realSize2)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize12], &lText[realSize12], realSize3)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize123], &lText[realSize123], realSize4)); - - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize123], rText, realSize4)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize12], &rText[realSize4], realSize3)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize1], &rText[realSize34], realSize2)); - aTest->TEST(TextInSameOrder(aOldText.Ptr(), &rText[realSize234], realSize1)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests the effect of interspersing right to left and left to right text - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLThenLToRThenRToLThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // Mixing L-R & R-L without embed codes - quarter buffers R-L L-R R-L L-R - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i = 0; - - rtolIterator.FillInto(aOldText, i, KQuarterBufferSize); - TInt realSize1 = i; - - ltorIterator.FillInto(aOldText, i, KHalfBufferSize); - TInt realSize2 = i - realSize1; - TInt realSize12 = i; - - rtolIterator.FillInto(aOldText, i, KThreeQuarterBufferSize); - TInt realSize3 = i - realSize12; - TInt realSize123 = i; - - ltorIterator.FillInto(aOldText, i, KBufferSize); - TInt realSize4 = i - realSize123; - TInt realSize34 = i - realSize12; - TInt realSize234 = i - realSize1; - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - // source: R1 L2 R3 L4 - // l should be: L1 L2 L3 L4 - // r should be: L4 L3 L2 L1 - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, realSize1)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize1], &lText[realSize1], realSize2)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize12], &lText[realSize12], realSize3)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize123], &lText[realSize123], realSize4)); - - aTest->TEST( TextInSameOrder(&aOldText.Ptr()[realSize123], rText, realSize4)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[realSize12], &rText[realSize4], realSize3)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize1], &rText[realSize34], realSize2)); - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), &rText[realSize234], realSize1)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests the effect of mixing blocks of right to left text, left to right text, - * European numbers and Arabic numbers - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void SimpleNumberTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // Now mix in some numbers - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i = 0; - rtolIterator.FillInto(aOldText, i, KQuarterBufferSize); - TInt realSize1 = i; - - ltorIterator.FillInto(aOldText, i, KHalfBufferSize); - TInt realSize2 = i - realSize1; - TInt realSize12 = i; - - euronIterator.FillInto(aOldText, i, KThreeQuarterBufferSize); - TInt realSize3 = i - realSize12; - TInt realSize123 = i; - TInt realSize23 = realSize123 - realSize1; - - arabnIterator.FillInto(aOldText, i, KBufferSize); - TInt realSize4 = i - realSize123; - TInt realSize234 = i - realSize1; - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - // source: 1 2 3 4 - // l should be: 2 3 4 -1 - // r should be: -1 2 3 4 - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize1], rText, realSize2)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize12], &rText[realSize2], realSize3)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize123], &rText[realSize23], realSize4)); - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), &rText[realSize234], realSize1)); - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, realSize1)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize1], &lText[realSize1], realSize2)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize12], &lText[realSize12], realSize3)); - aTest->TEST(TextInSameOrder(&aOldText.Ptr()[realSize123], &lText[realSize123], realSize4)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - } - } - -/** - * - * Tests what happens when Arabic and European numbers are surrounded by Arabic letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLAThenANThenENThenRToLATest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - - while (!rtolIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - aTest->TEST(TextInReverseOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } -/** - * - * Tests what happens when Arabic and European numbers are surrounded by Arabic letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLAThenENThenANThenRToLATest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - - while (!rtolIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - aTest->TEST(TextInReverseOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } -/** - * - * Tests what happens when Arabic and European numbers are surrounded by right-to-left letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLThenANThenENThenRToLTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - - while (!rtolIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - aTest->TEST(TextInReverseOrder(lResult->Ptr(), lText, i, aTest)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } - -/** - * - * Tests what happens when Arabic and European numbers are surrounded by right-to-left letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLThenENThenANThenRToLTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - - while (!rtolIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - - aTest->TEST(TextInReverseOrder(lResult->Ptr(), lText, i, aTest)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } -/** - * - * Tests what happens when Arabic and European numbers are surrounded by Left to Right letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenANThenENThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // Now mix in some numbers - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - while (!ltorIterator.Wrapped()) - { - TInt i; - - for (i = 0 ; i < KBufferSize-3; ) - { - if (!ltorIterator.NextCharInto(aOldText, i)) - break; - if (!arabnIterator.NextCharInto(aOldText, i)) - break; - if (!euronIterator.NextCharInto(aOldText, i)) - break; - if (!ltorIterator.NextCharInto(aOldText, i)) - break; - } - aOldText.SetLength(i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, i)); - aTest->TEST(TextInSameOrder(aOldText.Ptr(), rText, i)); - - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests what happens when Arabic and European numbers are surrounded by Left To Right letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenENThenANThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - // Now mix in some numbers - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i; - - for (i = 0 ; i < KBufferSize-3; ) - { - if (!ltorIterator.NextCharInto(aOldText, i)) - break; - if (!arabnIterator.NextCharInto(aOldText, i)) - break; - if (!euronIterator.NextCharInto(aOldText, i)) - break; - if (!ltorIterator.NextCharInto(aOldText, i)) - break; - } - aOldText.SetLength(i); - - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, i)); - aTest->TEST(TextInSameOrder(aOldText.Ptr(), rText, i)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - } - } - -/** - * - * Tests what happens when Arabic and European numbers are preceded by Left To Right - * and succeeded by Right To Left letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenANThenENThenRToLTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - lasti = i; - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - } - -/** - * - * Tests what happens when Arabic and European numbers are preceded by Left To Right - * and succeeded by Right To Left letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenENThenANThenRToLTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch3); - AppendCharacter(lResult, ch2); - - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - -#ifdef PRINT_DATA - - _LIT(KOTitle, "Original"); - _LIT(KLTitle, "Left-to-Right"); - _LIT(KRTitle, "Right-to-Left"); - - - PrintTestData(KOTitle, aOldText); - PrintTestData(KLTitle, lText, KBufferSize); - PrintTestData(KRTitle, rText, KBufferSize); - -#endif - aTest->TEST(TextInSameOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } -/** - * - * Tests what happens when Arabic and European numbers are preceded by Left To Right - * and succeeded by Right To Left Arabic letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenANThenENThenRToLATest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - - for (i = 0 ; i < KBufferSize-3; ) - { - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(rResult->Des().Length() == i); - - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - -#ifdef PRINT_DATA - - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - } -/** - * - * Tests what happens when Arabic and European numbers are preceded by Left To Right - * and succeeded by Right To Left Arabic letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void LToRThenENThenANThenRToLATest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - // Now mix in some numbers - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch3); - AppendCharacter(lResult, ch2); - - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - aTest->TEST(TextInSameOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } -/** - * - * Tests what happens when Arabic and European numbers are preceded by Right to Left - * and succeeded by Left To Right letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLThenANThenENThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-L AN EN L-R test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - - aTest->TEST(TextInSameOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } - -/** - * - * Tests what happens when Arabic and European numbers are preceded by Right to Left - * and succeeded by Left To Right letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLThenENThenANThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-L EN AN L-R test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - - aTest->TEST(TextInSameOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } -/** - * - * Tests what happens when Arabic and European numbers are preceded by Right to Left Arabic - * and succeeded by Left To Right letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLAThenANThenENThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-LA AN EN L-R test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - - aTest->TEST(TextInSameOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } - -/** - * - * Tests what happens when Arabic and European numbers are preceded by Right to Left Arabic - * and succeeded by Left To Right letters - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLAThenENThenANThenLToRTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-LA EN AN L-R test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - - while (!ltorIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!arabnIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!ltorIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch1); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch3); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - - aTest->TEST(TextInSameOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } - -/** - * - * Tests what happens to European Terminators in a pair of European Numbers - * when the first character is a Right To Left letter - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLThenENThenETThenENTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - HBufC *lResult = HBufC::NewLC(KBufferSize); - HBufC *rResult = HBufC::NewLC(KBufferSize); - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-L EN ET EN test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator eurotIterator(KEuropeanNumberTerminator, KEuropeanNumberTerminatorLength); - - while(!rtolIterator.Wrapped()) - { - TInt i; - TInt lasti = 0; - TUint ch0, ch1, ch2, ch3; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch0)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch1)) - break; - if (!eurotIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch2)) - break; - if (!euronIterator.NextCharInto(aOldText, i, -1, ETrue, ETrue, &ch3)) - break; - - lasti = i; - AppendCharacter(lResult, ch0); - AppendCharacter(lResult, ch3); - AppendCharacter(lResult, ch2); - AppendCharacter(lResult, ch1); - - AppendCharacter(rResult, ch0); - AppendCharacter(rResult, ch3); - AppendCharacter(rResult, ch2); - AppendCharacter(rResult, ch1); - } - i = lasti; - aOldText.SetLength(i); - ASSERT(lResult->Des().Length() == i); - ASSERT(rResult->Des().Length() == i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - aTest->TEST(TextInReverseOrder(lResult->Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(rResult->Ptr(), rText, i, aTest)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - lResult->Des().SetLength(0); - rResult->Des().SetLength(0); - } - CleanupStack::PopAndDestroy(rResult); - CleanupStack::PopAndDestroy(lResult); - } -/** - * - * Tests what happens to European Terminators in a pair of Arabic Numbers - * when the first character is a Right To Left letter - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLThenANThenETThenANTest(TDes& aOldText, CTGraphicsBase *aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-L AN ET AN test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator eurotIterator(KEuropeanNumberTerminator, KEuropeanNumberTerminatorLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while(!rtolIterator.Wrapped()) - { - TInt i; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i)) - break; - if (!arabnIterator.NextCharInto(aOldText, i)) - break; - if (!eurotIterator.NextCharInto(aOldText, i)) - break; - if (!arabnIterator.NextCharInto(aOldText, i)) - break; - } - aOldText.SetLength(i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), rText, i)); - - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - } - } -/** - * - * Tests what happens to European Terminators in a pair of European Numbers - * when the first character is a Right To Left Arabic letter - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLAThenENThenETThenENTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-LA EN ET EN test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - TextIterator euronIterator(KEuropeanNumber, KEuropeanNumberLength); - TextIterator eurotIterator(KEuropeanNumberTerminator, KEuropeanNumberTerminatorLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while(!rtolIterator.Wrapped()) - { - TInt i; - - TInt lasti = 0; - for (i = 0 ; i < KBufferSize-3; ) - { - if (!rtolIterator.NextCharInto(aOldText, i)) - break; - if (!euronIterator.NextCharInto(aOldText, i)) - break; - if (!eurotIterator.NextCharInto(aOldText, i)) - break; - if (!euronIterator.NextCharInto(aOldText, i)) - break; - lasti = i; - } - i = lasti; - aOldText.SetLength(i); - - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), i, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, i)); - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), rText, i)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - aOldText.SetLength(oldTextLength); - } - } -/** - * - * Tests what happens to European Terminators in a pair of Arabic Numbers - * when the first character is a Right To Left Arabic letter - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void RToLAThenANThenETThenANTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - R-LA AN ET AN test\r\n")); - - // Now mix in some numbers - TextIterator rtolIterator(KRightToLeftArabic, KRightToLeftArabicLength); - TextIterator arabnIterator(KArabicNumber, KArabicNumberLength); - TextIterator eurotIterator(KEuropeanNumberTerminator, KEuropeanNumberTerminatorLength); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while(!rtolIterator.Wrapped()) - { - TInt i; - - for (i = 0 ; i < (KBufferSize-3) ; i+=4) - { - aOldText[i] = rtolIterator.NextChar(); - aOldText[i+1] = arabnIterator.NextChar(); - aOldText[i+2] = eurotIterator.NextChar(); - aOldText[i+3] = arabnIterator.NextChar(); - } - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaRToL, rText); - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, lText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); -#ifdef PRINT_DATA - _LIT(KOTitleT, "Original (Top)"); - _LIT(KLTitleT, "Left-to-Right (Top)"); - _LIT(KRTitleT, "Right-to-Left (Top)"); - _LIT(KOTitleB, "Original (Bottom)"); - _LIT(KLTitleB, "Left-to-Right (Bottom)"); - _LIT(KRTitleB, "Right-to-Left (Bottom)"); - - - PrintTestData(KOTitleT, aOldText.Ptr(), 32); - PrintTestData(KOTitleB, aOldText.Ptr()+KBufferSize-32, 32); - - PrintTestData(KLTitleT, lText, 32); - PrintTestData(KLTitleB, lText+KBufferSize-32, 32); - - PrintTestData(KRTitleT, rText, 32); - PrintTestData(KRTitleB, rText+KBufferSize-32, 32); - -#endif - - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), lText, KBufferSize)); - aTest->TEST(TextInReverseOrder(aOldText.Ptr(), rText, KBufferSize)); - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - - - } - } - - -/** - * - * Tests what happens to Other Neutrals when mixed into Left To Right and Right To Left text - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ - static void InterspersedNeutralsTest(TDes& aOldText, CTGraphicsBase* aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - aTest->INFO_PRINTF1(_L("TBidirectionalState test - L-R R-L with interspersed Neutrals test\r\n")); - TInt oldTextLength = aOldText.Length(); - - // Neutrals Test - - // These should go left-to-right when with left-to-right text - // and right-to-left with right-to-left text. - - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - TextIterator neutIterator(KOtherNeutrals, KOtherNeutralsLength); - TUint16 neut; - - aTest->TEST(aOldText.Length() >= KBufferSize); - - while (!ltorIterator.Wrapped()) - { - TInt i; - for (i = 0 ; i < KHalfBufferSize; i+=2) - { - aOldText[i] = ltorIterator.NextChar(); - //Skip any characters that are mirrored for simplicity of checking - while(KMirrors().Locate(neut = neutIterator.NextChar()) != KErrNotFound) - { - } - - aOldText[i+1] = neut; - } - - for (i = KHalfBufferSize ; i < KBufferSize; i+=2) - { - aOldText[i] = rtolIterator.NextChar(); - //Skip any characters that are mirrored for simplicity of checking - while(KMirrors().Locate(neut = neutIterator.NextChar()) != KErrNotFound) - { - } - aOldText[i+1] = neut; - } - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), KBufferSize, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - /* - Note - the tests are made more complex because of the behaviour of the last - neutral in the first half of the buffer. - - Because the sequence goes <LtoR> <Neutral> <RtoL>, the way that last - neutral is interpreted depends upon the paragraph direction instead of - the direction of the adjacent text. - - */ - - aTest->TEST(TextInSameOrder(aOldText.Ptr(), lText, KHalfBufferSize)); - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[KHalfBufferSize], &lText[KHalfBufferSize], KHalfBufferSize-1)); - aTest->TEST((aOldText.Ptr()[KBufferSize-1] == lText[KBufferSize-1])); //Last neutral obeys L-R hence stays where it was - aTest->TEST(TextInReverseOrder(&aOldText.Ptr()[KHalfBufferSize], rText, KHalfBufferSize)); - aTest->TEST((aOldText.Ptr()[KHalfBufferSize-1] == rText[KHalfBufferSize])); //First neutral stays RtoL and stays at the front - aTest->TEST(TextInSameOrder(aOldText.Ptr(), &rText[KHalfBufferSize+1], KHalfBufferSize-1)); - - - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - } - } - -/** - * - * Tests that the behaviour shown in small numbers of runs also occurs when lots of - * left to right and right to left text is intermixed. - * - * @param "TDes& aOldText" - * Descriptor that points to a buffer at least KBufferSize 16-bit characters long - * - * @param "CTGraphicsBase* aTest" - * Pointer to the test object - * - */ -static void ComplexTextTest(TDes& aOldText, CTGraphicsBase *aTest) - { - TText* lText = 0; - TText* rText = 0; - TInt lretval = KErrNone; - TInt rretval = KErrNone; - TInt oldTextLength = aOldText.Length(); - -#ifdef PRINT_RUNS - _LIT(KRunTitle, "Populating aOldText buffer with embedded runs of characters as follows:\r\n"); - _LIT(KRunFormat, "Run %d begins with %04x\r\n"); - _LIT(KEndRunFormat, "End of Run %d begins with %04x\r\n"); - -#endif // PRINT_RUNS - - - aTest->INFO_PRINTF1(_L("TBidirectionalState test - Complex text test\r\n")); - - aTest->TEST(aOldText.Length() >= KBufferSize); - - - //Build up a lot of levels of L-R and R-L text - - TextIterator ltorIterator(KLeftToRight, KLeftToRightLength); - TextIterator rtolIterator(KRightToLeft, KRightToLeftLength); - const TInt KRuns = 64; - const TInt KRunSize = ((KBufferSize/KRuns)/2 ); - TInt runStart[KRuns]; - TInt runEnd[KRuns]; - TInt runStartSize[KRuns]; - TInt runEndSize[KRuns]; - while (!ltorIterator.Wrapped()) - { - //Build up start of runs - TInt index = 0; - TInt run; -#ifdef PRINT_RUNS - aTest->INFO_PRINTF1(KRunTitle); -#endif // PRINT_RUNS - for (run = 0 ; run < KRuns ; run++) - { - runStart[run]=index; - if ((run & 1) == 0) - { - ltorIterator.FillInto(aOldText, index, KRunSize*(run+1)); - } - else - { - rtolIterator.FillInto(aOldText, index, KRunSize*(run+1)); - } - runStartSize[run] = index - runStart[run]; - } - //Now fill in the ends - for (TInt brun = KRuns ; brun > 0 ; --brun) - { - run = brun - 1; - runEnd[run] = index; - if ((run & 1) == 0) - { - ltorIterator.FillInto(aOldText, index, KRunSize*(KRuns*2-run)); - } - else - { - rtolIterator.FillInto(aOldText, index, KRunSize*(KRuns*2-run)); - } - runEndSize[run] = index - runEnd[run]; - } - aOldText.SetLength(index); - - lretval = TBidirectionalState::ReorderText(aOldText.Ptr(), index, EParaLToR, lText); - rretval = TBidirectionalState::ReorderText(aOldText.Ptr(), index, EParaRToL, rText); - - aTest->TEST(lretval == KErrNone); - aTest->TEST(rretval == KErrNone); - - -#ifdef PRINT_ARRAYS - _LIT(KHexTitleo, "Contents of aOldText"); - _LIT(KHexTitlel, "Contents of lText"); - _LIT(KHexTitler, "Contents of rText"); - - PrintTestData(KHexTitleo, aOldText); - PrintTestData(KHexTitlel, lText, KBufferSize); - PrintTestData(KHexTitler, rText, KBufferSize); - -#endif // PRINT_ARRAYS - //LeftToRight Paragraph test - all but last run should be in-place, - //but the right-to-left text is reversed. - - for (run = 0 ; run < (KRuns-1) ; ++run) - { - - aTest->TEST( (KRunSize <= aOldText.Length() - runStart[run]) && (KRunSize <= KBufferSize - runStart[run])); - aTest->TEST( (KRunSize <= aOldText.Length() - runEnd[run]) && (KRunSize <= KBufferSize - runEnd[run])); - if ((run & 1) == 0) - { - aTest->TEST(TextInSameOrder (&aOldText.Ptr()[runStart[run]], &lText[runStart[run]], runStartSize[run])); - aTest->TEST(TextInSameOrder (&aOldText.Ptr()[runEnd[run]], &lText[runEnd[run]], runEndSize[run])); - } - else - { - aTest->TEST(TextInReverseOrder (&aOldText.Ptr()[runStart[run]], &lText[runStart[run]], runStartSize[run])); - aTest->TEST(TextInReverseOrder (&aOldText.Ptr()[runEnd[run]], &lText[runEnd[run]], runEndSize[run])); - } - } - - run = KRuns-1; //now do last run, which is double-sized - - aTest->TEST( (KRunSize*2 <= aOldText.Length() - runStart[run]) && (KRunSize*2 <= KBufferSize - runStart[run])); - if ((run & 1) == 0) - { - aTest->TEST(TextInSameOrder (&aOldText.Ptr()[runStart[run]], &lText[runStart[run]], runStartSize[run]+runEndSize[run])); - } - else - { - aTest->TEST(TextInReverseOrder (&aOldText.Ptr()[runStart[run]], &lText[runStart[run]], runStartSize[run]+runEndSize[run])); - } - - //Right-To-Left Paragraph test - all runs are exchanged about the centre, - //so the last end run is swapped with the first run and so on - //and the right-to-left text is reversed. - for (run = 0 ; run < (KRuns-1) ; ++run) - { - - aTest->TEST( (KRunSize <= aOldText.Length() - runStart[run]) && (KRunSize <= KBufferSize - runEnd[run])); - aTest->TEST( (KRunSize <= aOldText.Length() - runEnd[run]) && (KRunSize <= KBufferSize - runStart[run])); - if ((run & 1) == 0) - { - aTest->TEST(TextInSameOrder (&aOldText.Ptr()[runStart[run]], &rText[index-runStart[run+1]], runStartSize[run])); - aTest->TEST(TextInSameOrder (&aOldText.Ptr()[runEnd[run]], &rText[index-runEnd[run]-runEndSize[run]], runEndSize[run])); - } - else - { - aTest->TEST(TextInReverseOrder (&aOldText.Ptr()[runStart[run]], &rText[index-runStart[run+1]], runStartSize[run])); - aTest->TEST(TextInReverseOrder (&aOldText.Ptr()[runEnd[run]], &rText[index-runEnd[run]-runEndSize[run]], runEndSize[run])); - } - } - - run = KRuns-1; //now do last run, which is double-sized - - aTest->TEST( (KRunSize*2 <= aOldText.Length() - runStart[run]) && (KRunSize*2 <= KBufferSize - runStart[run])); - - if ((run & 1) == 0) - { - - aTest->TEST(TextInSameOrder (&aOldText.Ptr()[runStart[run]], &rText[index-runEnd[run-1]], runStartSize[run]+runEndSize[run])); - } - else - { - aTest->TEST(TextInReverseOrder (&aOldText.Ptr()[runStart[run]], &rText[index-runEnd[run-1]], runStartSize[run]+runEndSize[run])); - } - DeleteText(aOldText.Ptr(), lText, aTest); - DeleteText(aOldText.Ptr(), rText, aTest); - aOldText.SetLength(oldTextLength); - } - } - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0003 - - @SYMDEF DEF105603 - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test reordering text based on various combinations of formatting codes & characters - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -static void TestReorderTextL(CTGraphicsBase* aTest) - { - //Create buffer to hold test data - - HBufC* oldTextBufPtr = HBufC::NewLC(KBufferSize); - - //Force buffer to desired aSize - for (int i = 0 ; i < KBufferSize ; ++i) - { - oldTextBufPtr->Des().Append(0); - } - - TPtr oldText(oldTextBufPtr->Des()); - - aTest->INFO_PRINTF1(_L("TBidirectionalState::ReorderText")); - - LeftToRightReorderTest(oldText, aTest); - SimpleEuropeanNumberTest(oldText, aTest); - SimpleRightToLeftTest(oldText, aTest); - SimpleRightToLeftArabicTest(oldText, aTest); - - MirroredCharacterTest(oldText, aTest); - - LROLeftToRightTest(oldText, aTest); - LRORightToLeftTest(oldText, aTest); - RLORightToLeftTest(oldText, aTest); - RLORightToLeftArabicTest(oldText, aTest); - RLOLeftToRightTest(oldText, aTest); - - LToRThenRToLTest(oldText, aTest); - LToRThenRToLATest(oldText, aTest); - RToLAThenLToRTest(oldText, aTest); - - LToRThenRToLThenLToRThenRToLTest(oldText, aTest); - RToLThenLToRThenRToLThenLToRTest(oldText, aTest); - - SimpleNumberTest(oldText, aTest); - - RToLAThenANThenENThenRToLATest(oldText, aTest); - RToLAThenENThenANThenRToLATest(oldText, aTest); - RToLThenANThenENThenRToLTest(oldText, aTest); - RToLThenENThenANThenRToLTest(oldText, aTest); - LToRThenANThenENThenLToRTest(oldText, aTest); - LToRThenENThenANThenLToRTest(oldText, aTest); - LToRThenANThenENThenRToLTest(oldText, aTest); - LToRThenENThenANThenRToLTest(oldText, aTest); - LToRThenANThenENThenRToLATest(oldText, aTest); - LToRThenENThenANThenRToLATest(oldText, aTest); - RToLThenANThenENThenLToRTest(oldText, aTest); - RToLThenENThenANThenLToRTest(oldText, aTest); - RToLAThenANThenENThenLToRTest(oldText, aTest); - RToLAThenENThenANThenLToRTest(oldText, aTest); - RToLThenENThenETThenENTest(oldText, aTest); - RToLThenANThenETThenANTest(oldText, aTest); - RToLAThenENThenETThenENTest(oldText, aTest); - RToLAThenANThenETThenANTest(oldText, aTest); - - ComplexTextTest(oldText, aTest); - - aTest->INFO_PRINTF1(_L("TBidirectionalState::ReorderText tests complete\r\n")); - - CleanupStack::PopAndDestroy(); - } - }; - -/** - * Test behaviour of text reordering under normal & OOM conditions - * - * @param "MOOMTest& aOOMTest" - * Reference to the BD test object -*/ -void CTBiDi::TestOOML(MOOMTest& aOOMTest) - { - aOOMTest.SetUpL(); - aOOMTest.ManipulateL(); - aOOMTest.TearDown(); - TInt successesRequired = aOOMTest.ConsecutivePassesRequired(); - __ASSERT_DEBUG(0 < successesRequired, User::Panic(_L("TBiDi"), KErrGeneral)); - TInt consecutiveSuccesses = 0; - for (TInt i = 1; consecutiveSuccesses != successesRequired; ++i) - { - TInt pHCountStart; - TInt tHCountStart; - RThread().HandleCount(pHCountStart,tHCountStart); - __UHEAP_MARK; - - aOOMTest.SetUpL(); - __UHEAP_SETFAIL(RHeap::EDeterministic, i); - TRAPD(err, aOOMTest.ManipulateL()); - if (err == KErrNone) - { - aOOMTest.TestIfPassedL(this); - ++consecutiveSuccesses; - } - else - { - aOOMTest.TestLeftCleanlyL(this); - consecutiveSuccesses = 0; - } - aOOMTest.TearDown(); - __UHEAP_SETFAIL(RHeap::ENone, 0); - - // test no memory or handles leaked - __UHEAP_MARKENDC(0); - TInt pHCountEnd; - TInt tHCountEnd; - RThread().HandleCount(pHCountEnd,tHCountEnd); - TEST(pHCountStart == pHCountEnd); - TEST(tHCountStart == tHCountEnd); - } - } - -class TReorderTextOOMTest : public MOOMTest - { - const TDesC* iText; - TBool iRightToLeft; - const TDesC* iReorderedText; - TText* iBuffer; - TInt iReturnValue; -public: - TReorderTextOOMTest(const TDesC& aText, TBool aRightToLeft, const TDesC& aReorderedText) - : iText(&aText), iRightToLeft(aRightToLeft), iReorderedText(&aReorderedText), - iBuffer(0), iReturnValue(0) - {} - virtual ~TReorderTextOOMTest() { TearDown(); } - void Initialize(const TDesC& aText, TBool aRightToLeft, - const TDesC& aReorderedText) - { - TearDown(); - iText = &aText; - iRightToLeft = aRightToLeft; - iReorderedText = &aReorderedText; - } - void SetUpL() - { - iBuffer = 0; - iReturnValue = 0; - } - void ManipulateL() - { - iReturnValue = TBidirectionalState::ReorderText(iText->Ptr(), - iText->Length(), iRightToLeft, iBuffer); - User::LeaveIfError(iReturnValue); - } - static TBool IsIgnorable(TText a) - { - if (a == 0xFFFF) - return ETrue; - if (a < 0x202A || 0x202E < a) - return EFalse; - return ETrue; - } - static TBool StringsMatch(const TText* a1, TInt a1Len, - const TText* a2, TInt a2Len) - { - const TText* a1End = a1 + a1Len; - const TText* a2End = a2 + a2Len; - for (;;) - { - while (a1 != a1End && IsIgnorable(*a1)) - ++a1; - while (a2 != a2End && IsIgnorable(*a2)) - ++a2; - if (a1 == a1End) - return a2 == a2End; - else if (a2 == a2End) - return EFalse; - if (*a1 != *a2) - return EFalse; - ++a1; - ++a2; - } - } - - void TestIfPassedL(CTGraphicsBase* aTest) - { - // test the reordered text was returned in iBuffer (as per SDK documentation for TBidirectionalState::ReorderText) - aTest->TEST(iBuffer != 0); - aTest->TEST( StringsMatch(iBuffer, iText->Length(), iReorderedText->Ptr(), iReorderedText->Length()) ); - } - - void TestLeftCleanlyL(CTGraphicsBase* aTest) - { - // test the original text was returned in iBuffer (as per SDK documentation for TBidirectionalState::ReorderText) - aTest->TEST(iBuffer != 0); - aTest->TEST( StringsMatch(iBuffer, iText->Length(), iText->Ptr(), iText->Length()) ); - } - - void TearDown() - { - if (iBuffer != iText->Ptr()) - delete[] iBuffer; - iBuffer = 0; - } - }; - -/** - * - * Prints some details about an array of TBidirectionalState::TRunInfo objects to the test console. - * This function prints each character of text with category code and Bidirectional category - * - * - * @param "const TBidirectionalState::TRunInfo* aRunArray" - * Points to the array of run info objects - * - * @param "const TInt aRuns" - * Number of objects in the array - * - * @param "const TText* aText" - * The text which after being analysed by the Bidirectional Algorithm resulted in - * the array of run info objects. - * - * @param "const TBool aInternal" - * The iCategory element of a run info object may be encoded in two ways, either - * the codes used by TChar or those used by TBidirectionalState. If this flag is ETrue - * the value is interpreted as a TBidirectionalState code. - * - */ -void CTBiDi::PrintRunCategories(const TBidirectionalState::TRunInfo* aRunArray, const TInt aRuns, const TText* aText, const TBool aInternal) - { - TBuf16<100> line2; - TBuf16<100> line3; - TBuf16<100> line4; - TBuf16<100> line5; - line2.Fill(' ',100); - line3.Fill(' ',100); - line4.Fill(' ',100); - line5.Fill(' ',100); - for (int ii = 0 ; ii < aRuns ; ++ii) - { - TUint cat = aRunArray[ii].iCategory; - if (aInternal) - { - cat = 1 << cat; //translate from the form used by TChar to that used internally - //in TBidirectionalText. - } - for (int jj = aRunArray[ii].iStart ; - (jj < aRunArray[ii].iStart+aRunArray[ii].iLength) ; ++jj) - { - line2[jj] = aText[jj]; - switch(cat) - { - - case ELeftToRight: - line3[jj] = 'L'; - line4[jj] = ' '; - line5[jj] = ' '; - break; - case ELeftToRightEmbedding: - line3[jj] = 'L'; - line4[jj] = 'R'; - line5[jj] = 'E'; - break; - case ELeftToRightOverride: - line3[jj] = 'L'; - line4[jj] = 'R'; - line5[jj] = 'O'; - break; - case ERightToLeft: - line3[jj] = 'R'; - line4[jj] = ' '; - line5[jj] = ' '; - break; - case ERightToLeftArabic: - line3[jj] = 'A'; - line4[jj] = 'L'; - line5[jj] = ' '; - break; - case ERightToLeftEmbedding: - line3[jj] = 'R'; - line4[jj] = 'L'; - line5[jj] = 'E'; - break; - case ERightToLeftOverride: - line3[jj] = 'R'; - line4[jj] = 'L'; - line5[jj] = 'O'; - break; - case EPopDirectionalFormat: - line3[jj] = 'P'; - line4[jj] = 'D'; - line5[jj] = 'F'; - break; - case EEuropeanNumber: - line3[jj] = 'E'; - line4[jj] = 'N'; - line5[jj] = ' '; - break; - case EEuropeanNumberSeparator: - line3[jj] = 'E'; - line4[jj] = 'S'; - line5[jj] = ' '; - break; - case EEuropeanNumberTerminator: - line3[jj] = 'E'; - line4[jj] = 'T'; - line5[jj] = ' '; - break; - case EArabicNumber: - line3[jj] = 'A'; - line4[jj] = 'N'; - line5[jj] = ' '; - break; - case ECommonNumberSeparator: - line3[jj] = 'C'; - line4[jj] = 'S'; - line5[jj] = ' '; - break; - case ENonSpacingMark: - line3[jj] = 'N'; - line4[jj] = 'S'; - line5[jj] = 'M'; - break; - case EBoundaryNeutral: - line3[jj] = 'B'; - line4[jj] = 'N'; - line5[jj] = ' '; - break; - case EParagraphSeparator: - line3[jj] = 'B'; - line4[jj] = ' '; - line5[jj] = ' '; - break; - case ESegmentSeparator: - line3[jj] = 'S'; - line4[jj] = ' '; - line5[jj] = ' '; - break; - case EWhitespace: - line3[jj] = 'W'; - line4[jj] = 'S'; - line5[jj] = ' '; - break; - case EOtherNeutral: - line3[jj] = 'O'; - line4[jj] = 'N'; - line5[jj] = ' '; - break; - case EStartOfParagraph: - line3[jj] = 'S'; - line4[jj] = 'O'; - line5[jj] = 'P'; - break; - case EEndOfParagraph: - line3[jj] = 'E'; - line4[jj] = 'O'; - line5[jj] = 'P'; - break; - default: - line3[jj] = '?'; - line4[jj] = ' '; - line5[jj] = ' '; - break; - } - } - } - line2.TrimRight(); - line3.TrimRight(); - line4.TrimRight(); - line5.TrimRight(); - line2.ZeroTerminate(); - line3.ZeroTerminate(); - line4.ZeroTerminate(); - line5.ZeroTerminate(); - INFO_PRINTF2(KSingleString, line2.Ptr()); - INFO_PRINTF2(KSingleString, line3.Ptr()); - INFO_PRINTF2(KSingleString, line4.Ptr()); - INFO_PRINTF2(KSingleString, line5.Ptr()); - } - -/** - * - * Prints some details about an array of TBidirectionalState::TRunInfo objects to the test console. - * This function prints each character of text with the embedding level and Bidirectional category - * - * - * @param "const TBidirectionalState::TRunInfo* aRunArray" - * Points to the array of run info objects - * - * @param "const TInt aRuns" - * Number of objects in the array - * - * @param "const TText* aText" - * The text which after being analysed by the Bidirectional Algorithm resulted in - * the array of run info objects. - * -* - */ -void CTBiDi::PrintRunArray(const TBidirectionalState::TRunInfo* aRunArray, const TInt aRuns, const TText* aText) - { - if (aRunArray) - { -#ifdef PRINT_RUN_DETAILS - _LIT(KRunFmt, "Run %d - Category %d Level %d Direction %d Index %d Start %d Length %d"); -#endif // PRINT_RUN_DETAILS - - TBuf16<100> line1; - TBuf16<100> line2; - TBuf16<100> line3; - TBuf16<100> line4; - TBuf16<100> line5; - line1.Zero(); - line2.Zero(); - line3.Zero(); - line4.Zero(); - line5.Zero(); - for (int ii = 0 ; ii < aRuns ; ++ii) - { -#ifdef PRINT_RUN_DETAILS - aTest->INFO_PRINTF1(KRunFmt, ii, aRunArray[ii].iCategory, - aRunArray[ii].iEmbeddingLevel, - aRunArray[ii].iDirection, - aRunArray[ii].iIndex, - aRunArray[ii].iStart, - aRunArray[ii].iLength); -#endif // PRINT_RUN_DETAILS - //mark up each character slot with embedding level. - //Only works well for small values of the embedding level! - for (int jj = aRunArray[ii].iStart ; - (jj < aRunArray[ii].iStart+aRunArray[ii].iLength) ; ++jj) - { - line1.Append(aText[jj]); - line2.Append(static_cast<TUint16>(aRunArray[ii].iEmbeddingLevel + '0')); - switch(aRunArray[ii].iCategory) - { - - case ELeftToRight: - line3.Append('L'); - line4.Append(' '); - line5.Append(' '); - break; - case ELeftToRightEmbedding: - line3.Append('L'); - line4.Append('R'); - line5.Append('E'); - break; - case ELeftToRightOverride: - line3.Append('L'); - line4.Append('R'); - line5.Append('O'); - break; - case ERightToLeft: - line3.Append('R'); - line4.Append(' '); - line5.Append(' '); - break; - case ERightToLeftArabic: - line3.Append('A'); - line4.Append('L'); - line5.Append(' '); - break; - case ERightToLeftEmbedding: - line3.Append('R'); - line4.Append('L'); - line5.Append('E'); - break; - case ERightToLeftOverride: - line3.Append('R'); - line4.Append('L'); - line5.Append('O'); - break; - case EPopDirectionalFormat: - line3.Append('P'); - line4.Append('D'); - line5.Append('F'); - break; - case EEuropeanNumber: - line3.Append('E'); - line4.Append('N'); - line5.Append(' '); - break; - case EEuropeanNumberSeparator: - line3.Append('E'); - line4.Append('S'); - line5.Append(' '); - break; - case EEuropeanNumberTerminator: - line3.Append('E'); - line4.Append('T'); - line5.Append(' '); - break; - case EArabicNumber: - line3.Append('A'); - line4.Append('N'); - line5.Append(' '); - break; - case ECommonNumberSeparator: - line3.Append('C'); - line4.Append('S'); - line5.Append(' '); - break; - case ENonSpacingMark: - line3.Append('N'); - line4.Append('S'); - line5.Append('M'); - break; - case EBoundaryNeutral: - line3.Append('B'); - line4.Append('N'); - line5.Append(' '); - break; - case EParagraphSeparator: - line3.Append('B'); - line4.Append(' '); - line5.Append(' '); - break; - case ESegmentSeparator: - line3.Append('S'); - line4.Append(' '); - line5.Append(' '); - break; - case EWhitespace: - line3.Append('W'); - line4.Append('S'); - line5.Append(' '); - break; - case EOtherNeutral: - line3.Append('O'); - line4.Append('N'); - line5.Append(' '); - break; - case EStartOfParagraph: - line3.Append('S'); - line4.Append('O'); - line5.Append('P'); - break; - case EEndOfParagraph: - line3.Append('E'); - line4.Append('O'); - line5.Append('P'); - break; - default: - line3.Append('?'); - line4.Append(' '); - line5.Append(' '); - break; - } - } - } - - line1.ZeroTerminate(); - line2.ZeroTerminate(); - line3.ZeroTerminate(); - line4.ZeroTerminate(); - line5.ZeroTerminate(); - INFO_PRINTF2(KSingleString, line1.Ptr()); - INFO_PRINTF2(KSingleString, line2.Ptr()); - INFO_PRINTF2(KSingleString, line3.Ptr()); - INFO_PRINTF2(KSingleString, line4.Ptr()); - INFO_PRINTF2(KSingleString, line5.Ptr()); - } - -} - - -#define TEST_BUF_LEN 80 - -/** -The Unicode Example test class - -This class contains functions that support tests based on the examples given by -Unicode Standard Annexe 9 - -Those examples use UPPER CASE latin letters to represent Arabic letters and quotes -to represent embedding levels. - -The functions of this class allow the example to be transcoded using real Arabic letters and -LRE and RLE embedding codes before applying the bidirectional algorithm. - -*/ -class TUnicodeExampleOOMTest : public MOOMTest - { - TBuf<TEST_BUF_LEN> iText; - TBuf<TEST_BUF_LEN> iOriginalText; - TBuf<TEST_BUF_LEN> iPrintData; - TBool iRightToLeft; - TBuf<TEST_BUF_LEN> iReorderedText; - TText* iBuffer; - TInt iReturnValue; - TInt iAlef; - TPtrC iArabicChars; - TBool iFirst; - enum { - EAlef = 0x627 - }; - -public: - TUnicodeExampleOOMTest(const TDesC& aText, TBool aRightToLeft, - const TDesC& aReorderedText, CTGraphicsBase* aTest) - : iOriginalText(aText), - iRightToLeft(aRightToLeft), - iBuffer(0), - iReturnValue(0), - iArabicChars(KRightToLeftArabic, KRightToLeftArabicLength) - { - //Find position of arabic letters in table - iAlef = iArabicChars.Locate(EAlef); - iText.SetLength(iText.MaxLength()); //set buffer to max size to begin with ensuring first copy fills whole buffer - iReorderedText.SetLength(iReorderedText.MaxLength()); //set buffer to max size to begin with - CopyAndMapToArabic(iText, aText, aTest); - CopyAndMapToArabic(iReorderedText, aReorderedText, aTest); - } - virtual ~TUnicodeExampleOOMTest() { TearDown(); } - void Initialize(const TDesC& aText, TBool aRightToLeft, - const TDesC& aReorderedText, CTGraphicsBase* aTest) - { - TearDown(); - iOriginalText = aText; - CopyAndMapToArabic(iText, aText, aTest); - iRightToLeft = aRightToLeft; - CopyAndMapToArabic(iReorderedText, aReorderedText, aTest); - } - void SetUpL() - { - iBuffer = 0; - iReturnValue = 0; - } - void ManipulateL() - { - iReturnValue = TBidirectionalState::ReorderText(iText.Ptr(), - iText.Length(), iRightToLeft, iBuffer); - User::LeaveIfError(iReturnValue); - } - - TUint MapToArabic(TUint aChar) - { - TUint newChar = aChar; - if (TChar(aChar).IsUpper()) - { - newChar = KRightToLeftArabic[aChar-'A'+iAlef]; //Note this isn't a linguistic transliteration. - }; - return newChar; - } - TUint MapFromArabic(TUint aChar) - { - TInt pos = iArabicChars.Locate(aChar) - iAlef; - TUint newChar = aChar; - if ((pos >= 0) && (pos < 26)) - { - newChar = 'A'+pos; - }; - return newChar; - - } - - void CopyAndMapToArabic(TDes& aBuffer, const TDesC& aDes, CTGraphicsBase* aTest) - { - TInt quoteLevel = 0; - TChar lastQuote = 0; - aTest->TEST(aDes.Length() <= aBuffer.MaxLength()); - - aBuffer.Fill(0xFFFF); //fill old contents to help debugging if new string is shorter - - aBuffer.Zero(); - - for (TInt i = 0 ; i < aDes.Length() ; ++i) - { - TUint newChar = MapToArabic(aDes[i]); - if ((newChar == '\'') || (newChar == '"')) - { - //Quote handling - if (newChar == lastQuote) - { - //match so drop a level if there is a level to drop - if (quoteLevel > 0) - { - aBuffer.Append(0x202c); //emit a PLD - aBuffer.Append(newChar); - --quoteLevel; - lastQuote = ((lastQuote == '"') ? '\'' : '"' ); - } - } - else - { - //start new level - aBuffer.Append(newChar); - if (newChar == '\'') - { - aBuffer.Append(0x202a); //emit LRE - } - else - { - aBuffer.Append(0x202b); //emit RLE - } - ++quoteLevel; - lastQuote = newChar; - } - } - else - { - aBuffer.Append(newChar); - } - } - - } - void PrintMappedData(const TDesC& aTitle, const TDesC& aBuffer, CTGraphicsBase* aTest) - { - iPrintData.Zero(); - for (TInt i = 0 ; i < aBuffer.Length() ; ++i) - { - TText a = aBuffer[i]; - - if (!IsIgnorable(a)) - { - iPrintData.Append(MapFromArabic(a)); - } - } - iPrintData.ZeroTerminate(); - aTest->INFO_PRINTF3(KDoubleString, aTitle.Ptr(), iPrintData.Ptr()); - } - static TBool IsIgnorable(TText a) - { - TBool ignorable = EFalse; - switch(a) { - case KUnicodeNoSuchCharacter: - case KUnicodeLeftToRightMark: - case KUnicodeRightToLeftMark: - case KUnicodeLeftToRightEmbedding: - case KUnicodeRightToLeftEmbedding: - case KUnicodePopDirectionFormat: - case KUnicodeLeftToRightOverride: - case KUnicodeRightToLeftOverride: - ignorable = ETrue; - break; - default: - break; - } - return ignorable; - } - static TBool StringsMatch(const TText* a1, TInt a1Len, - const TText* a2, TInt a2Len) - { - const TText* a1End = a1 + a1Len; - const TText* a2End = a2 + a2Len; - for (;;) - { - while (a1 != a1End && IsIgnorable(*a1)) - ++a1; - while (a2 != a2End && IsIgnorable(*a2)) - ++a2; - if (a1 == a1End) - return a2 == a2End; - else if (a2 == a2End) - return EFalse; - if (*a1 != *a2) - return EFalse; - ++a1; - ++a2; - } - } - void TestIfPassedL(CTGraphicsBase* aTest) - { -#ifdef PRINT_EXAMPLE - _LIT(KTestPassR, "Test Passed - result"); - _LIT(KTestFailE, "Test Failed - expected"); - _LIT(KTestFailR, "Test Failed - result"); -#endif // PRINT_EXAMPLE - aTest->TEST(iBuffer != 0); - TBool match = StringsMatch(iBuffer, iText.Length(), iReorderedText.Ptr(), iReorderedText.Length()); - - if (match) - { -#ifdef PRINT_EXAMPLE - PrintMappedData(KTestPassR, TPtrC(iBuffer, iText.Length())); -#endif // PRINT_EXAMPLE - } - else - { -#ifdef PRINT_EXAMPLE - PrintMappedData(KTestFailE, iReorderedText); - PrintMappedData(KTestFailR, TPtrC(iBuffer, iText.Length())); -#endif // PRINT_EXAMPLE - aTest->TEST(EFalse); - } - - } - void TearDown() - { - if (iBuffer != iText.Ptr()) - delete[] iBuffer; - iBuffer = 0; - } - }; - - - -//Unicode Spec sample data -// This uses UPPER CASE english to represent right to left Arabic characters -// A straight mapping to tabularly equivalent Arabic letters is done during the -// tests using this data. KxxS is the "Storage" value, KxxD is the "Display" value. -// Also all the values like <RLE> are ignored in the comparison, so aren't included in the D value -// Embedding codes: -// <RLE> \x202b <LRE> \0x202a <PDF> \0x202c <RLO> \x202e <LRO> \x202d <RLM> \0x200f <LRM> \0x200e - -_LIT(KU1S, "he said \"THE VALUES ARE 123, 456, 789, OK\"."); -_LIT(KU1D, "he said \"KO ,789 ,456 ,123 ERA SEULAV EHT\"."); -_LIT(KU2S, "he said \"IT IS A bmw 500, OK.\""); -_LIT(KU2D, "he said \".KO ,bmw 500 A SI TI\""); -_LIT(KU3S, "car means CAR."); -_LIT(KU3D, "car means RAC."); -_LIT(KU4S, "car MEANS CAR."); -_LIT(KU4D, ".RAC SNAEM car"); -//_LIT(KU5S, "he said \"car MEANS CAR.\""); -//_LIT(KU5D, "he said \"RAC SNAEM car.\""); -_LIT(KU6S, "DID YOU SAY 'he said \"car MEANS CAR\"'?"); -_LIT(KU6D, "?'he said \"RAC SNAEM car\"' YAS UOY DID"); -_LIT(KU7S, "he said `I NEED WATER!`, and expired."); -_LIT(KU7D, "he said `RETAW DEEN I!`, and expired."); -_LIT(KU8S, "he said `\x202bI NEED WATER!\x202c`, and expired."); -_LIT(KU8D, "he said `!RETAW DEEN I`, and expired."); -_LIT(KU9S, "he said `I NEED WATER!\x200f`, and expired."); -_LIT(KU9D, "he said `!RETAW DEEN I`, and expired."); -_LIT(KU10S,"DID YOU SAY '\x202ahe said \"I NEED WATER!\x200f\", and expired.\x202c'?"); -_LIT(KU10D,"?'he said \"!RETAW DEEN I\", and expired.' YAS UOY DID"); - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0005 - - @SYMDEF DEF105603 - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test behaviour of text-reordering under normal & OOM conditions using examples derived from Unicode Standard Annex 9 - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -void CTBiDi::TUnicodeExampleTestL() - { - TUnicodeExampleOOMTest toom(KU1S, EFalse, KU1D, this); - TestOOML(toom); - toom.Initialize(KU2S, EFalse, KU2D, this); - TestOOML(toom); - toom.Initialize(KU3S, EFalse, KU3D, this); - TestOOML(toom); - toom.Initialize(KU4S, ETrue, KU4D, this); - TestOOML(toom); -// This test commented out because there seems to be no way to persuade a computer -// to reproduce this example, it only makes sense to human beings. -// toom.Initialize(KU5S, EFalse, KU5D); -// TestOOML(toom); - toom.Initialize(KU6S, ETrue, KU6D, this); - TestOOML(toom); - toom.Initialize(KU7S, EFalse, KU7D, this); - TestOOML(toom); - toom.Initialize(KU8S, EFalse, KU8D, this); - TestOOML(toom); - toom.Initialize(KU9S, EFalse, KU9D, this); - TestOOML(toom); - toom.Initialize(KU10S, ETrue, KU10D, this); - TestOOML(toom); - - } - - -_LIT(KHalalL, "\x62D\x644\x627\x644"); -_LIT(KHalalD, "\x644\x627\x644\x62D"); -_LIT(KHello, "Hello"); -_LIT(KHttL, "\x62D\x644\x627\x644 12:30 \x644\x633"); -_LIT(KHttD, "\x633\x644 12:30 \x644\x627\x644\x62D"); -_LIT(KHttsL, "\x62D\x644\x627\x644 12, 30 \x644\x633"); -_LIT(KHttsD, "\x633\x644 30 ,12 \x644\x627\x644\x62D"); -_LIT(KEmbedL,"he said \x202B\x644 some text 12 nos \x627 \x202A=Hah is \x62D\x202C \x633\x202C perhaps"); -_LIT(KEmbedD,"he said \x633 =Hah is \x62D \x627 some text 12 nos \x644 perhaps"); -_LIT(KMixedL, "\x644\x627 ab"); -_LIT(KMixedD, "ab \x627\x644"); -_LIT(KMixedDL, "\x627\x644 ab"); -_LIT(KRLOverrideL, "\x202Ewxyz\x202Cijkl"); -_LIT(KRLOverrideD, "zyxwijkl"); - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0004 - - @SYMDEF DEF105603 - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test reordering under normal & OOM conditions, using custom strings mixing text with formatting codes - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -void CTBiDi::TestReorderTextL() - { - TReorderTextOOMTest toom(KHalalL, EFalse, KHalalD); - TestOOML(toom); - toom.Initialize(KHalalL, ETrue, KHalalD); - TestOOML(toom); - toom.Initialize(KHello, ETrue, KHello); - TestOOML(toom); - toom.Initialize(KHello, EFalse, KHello); - TestOOML(toom); - toom.Initialize(KHttL, ETrue, KHttD); - TestOOML(toom); - toom.Initialize(KHttL, EFalse, KHttD); - TestOOML(toom); - toom.Initialize(KHttsL, ETrue, KHttsD); - TestOOML(toom); - toom.Initialize(KHttsL, EFalse, KHttsD); - TestOOML(toom); - toom.Initialize(KMixedL, ETrue, KMixedD); - TestOOML(toom); - toom.Initialize(KMixedL, EFalse, KMixedDL); - TestOOML(toom); - toom.Initialize(KRLOverrideL, EFalse, KRLOverrideD); - TestOOML(toom); - toom.Initialize(KEmbedL, EFalse, KEmbedD); -// TestOOML(toom); - } - -/** -TBidiTextOOMTest - -This class contains functions that support tests based on the examples given by -Unicode Standard Annexe 9 - -The class contains methods for creating text with different directionality (left-to-right, right-to-left) -and test functions to determine directionality -*/ -class TBidiTextOOMTest : public MOOMTest - { -public: -/** Overall directionality of the text. */ -/** Text reading begins on the left. */ -/** Text reading begins on the right. */ - enum TDirectionality { ELeftToRight, ERightToLeft, EAutomatic }; - TBidiTextOOMTest(CTGraphicsBase *aTest) : iInputText(0), iBidi(0), iTest(aTest) {} - void Initialize(const TDesC& aInput, - TDirectionality aDirectionality, TInt aMaxLines) - { - iInputText = &aInput; - iDirectionality = aDirectionality; - iMaxLines = aMaxLines; - delete iBidi; - iBidi = 0; - } - - void SetUpL() {} - - void ManipulateL() - { - switch(iDirectionality) { - case EAutomatic: - iBidi = TBidiText::NewL(*iInputText, iMaxLines); - break; - case ELeftToRight: - iBidi = TBidiText::NewL(*iInputText, iMaxLines, TBidiText::ELeftToRight); - break; - case ERightToLeft: - iBidi = TBidiText::NewL(*iInputText, iMaxLines, TBidiText::ERightToLeft); - break; - default: - iTest->TEST(EFalse); //Invalid value for iDirectionality - } - } - - void TearDown() - { - delete iBidi; - iBidi = 0; - } - - void TestIfPassedL(CTGraphicsBase* aTest) - { - aTest->TEST(iBidi != NULL); - const TFileName a(iBidi->Text()); - aTest->TEST(a == *iInputText); - // tests on the actual display text are run in a separate test case - } - - void TestLeftCleanlyL(CTGraphicsBase* aTest) - { - aTest->TEST(iBidi == NULL); - } -private: - const TDesC* iInputText; - TDirectionality iDirectionality; - TInt iMaxLines; - TBidiText* iBidi; - CTGraphicsBase *iTest; - }; - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0006 - - @SYMDEF DEF105603 - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test detection of 'overall' directionality of a given language/script - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -void CTBiDi::TestScriptDirectionality() - { - for (TInt i = 0; i != 100; ++i) - { - TBidiText::TDirectionality dir = TBidiText::ScriptDirectionality( - static_cast<TLanguage>(i)); - TEST(i == ELangArabic || i == ELangHebrew || i == ELangFarsi || i == ELangUrdu? - dir==TBidiText::ERightToLeft : dir == TBidiText::ELeftToRight); - } - } - -_LIT(KMultiLine, "Many\x644\x633 runs\xD\xAwith\xDmany\xAtypes\x2028of\x2029\x633\x633 Linebreaks"); -_LIT(KLineSep, "\x2028"); - -/** - * - * void CTBiDi::NoLineBreakDrawTestL - * - * Test for TBidiText::DrawText - * - * Some Arabic text is drawn without any line break opportunities. - * - * The result should still be broken into screenwidths and drawn. - * - * - */ -void CTBiDi::NoLineBreakDrawTestL() - { - INFO_PRINTF1(_L("TBidiText test - RightToLeftArabic draw test without line break opportunities\r\n")); - - TSize windowSize(400,200); - - RArray<TTestDataRun> runsArray(16); - CleanupClosePushL(runsArray); - - CFont* testFont = new(ELeave) CTestFont; - CleanupStack::PushL(testFont); - - - CTestGraphicsDevice* testDevice = CTestGraphicsDevice::NewL(windowSize); - - CleanupStack::PushL(testDevice); - - CGraphicsContext* tContext = NULL; - - TEST(testDevice->CreateContext(tContext) == KErrNone); - //note - no cleanupstack entry as the context is owned by the device - - CTestGraphicsContext* testContext = static_cast<CTestGraphicsContext*>(tContext); - - - //Create buffer to hold test data - HBufC* oldTextBufPtr = HBufC::NewLC(KBufferSize); - - TPtrC original; - TPtrC wrapped; - - TextIterator rIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - TInt i; - TInt length; - TInt end; - MLineBreaker breaker; - - //Fill buffer with data - for (i = 0 ; i < KBufferSize ; ++i) - { - TUint s, e; - TText16 ch = rIterator.NextChar(); - if (breaker.LineBreakClass(ch, s, e) == MLineBreaker::EAlLineBreakClass) - oldTextBufPtr->Des().Append(ch); - } - - TPtr oldText(oldTextBufPtr->Des()); - - TBidiText* bidi = TBidiText::NewL(oldText, 50); - - CleanupStack::PushL(bidi); - - TInt comparedLength = (oldText.Length() < KBufferSize )? oldText.Length(): KBufferSize; - - TEST(oldText.Length() == bidi->Text().Length()); - - TEST(TestTBidirectionalState::TextInSameOrder(oldText.Ptr(), bidi->Text().Ptr(), comparedLength)); - - bidi->WrapText(400 , *testFont, 0); - - TEST(bidi->WrappingWidth() == 400); - - original.Set(bidi->Text()); - - wrapped.Set(bidi->DisplayText()); - -#ifdef PRINT_ARRAYS - _LIT(KOriginalTitle, "Original: \r\n"); - _LIT(KDisplayTitle, "Display: \r\n"); - - PrintTestData(KOriginalTitle, original); - PrintTestData(KDisplayTitle, wrapped); - -#endif // PRINT_ARRAYS - - //Using a font where every character is 10 pixels wide and wrapping to 400 pixels width, - //every 40 characters should be a Linebreak character, and each of those lines should be reversed. - - length = oldText.Length(); - end = wrapped.Length(); - - TEST(original.Length() == length); - TEST(end >= length); - - const TText* currentWrapped = wrapped.Ptr(); - const TText* wrappedEnd = currentWrapped + wrapped.Length(); - for (i = 0; i < length ; i += 40) - { - end = ((length-i) >= 40) ? i+40 : length; - - TTestDataRun runData; - - runData.iStart = i; - runData.iLength = end-i; - - runsArray.Append(runData); - - TEST( ( end-i <= oldText.Length() - i) && ( end-i <= wrappedEnd - currentWrapped)); - const TText* endLine = TestTBidirectionalState::TextInReverseOrderIgnoringJoiners( - oldText.Ptr() + i, currentWrapped, end-i); - if (!endLine) - { - INFO_PRINTF3(_L("TBidiText test - wrapped - reverse order check failed for index %d out-index %d"), - i, currentWrapped - wrapped.Ptr()); - TEST(EFalse); - } - - if (wrappedEnd <= endLine) - break; - - if (*endLine != 0x02028) - { - INFO_PRINTF3(_L("TBidiText test - wrapped - line terminator check failed for index %d out-index %d"), - i, currentWrapped - wrapped.Ptr()); - TEST(EFalse); - } - currentWrapped = endLine + 1; - } - - TPoint origin(0,0); - TInt baseline_offset = testFont->BaselineOffsetInPixels(); - bidi->DrawText(*testContext, origin, baseline_offset); - - //now check that DrawText passed the right data - for (i = 0 ; i < runsArray.Count() ; i++) - { - TPtrC spec(testContext->DisplayLine(i).LineData()); - TEST( ( runsArray[i].iLength <= oldText.Length() - runsArray[i].iStart) && ( runsArray[i].iLength <= spec.Length())); - TEST(0 != TestTBidirectionalState::TextInReverseOrderIgnoringJoiners( - oldText.Ptr() + runsArray[i].iStart , spec.Ptr(), runsArray[i].iLength)); - }; - - INFO_PRINTF1(_L("TBidiText test - wrapped - display text test passed\r\n")); - - CleanupStack::PopAndDestroy(bidi); - CleanupStack::PopAndDestroy(oldTextBufPtr); //whatever is pushed by HBufC::NewLC - delete testContext; - CleanupStack::PopAndDestroy(testDevice); - - CleanupStack::PopAndDestroy(testFont); - CleanupStack::PopAndDestroy(); //closes runsArray - } - -/** - * - * void CTBiDi::RightToLeftArabicDrawTestL() - * - * Test for TBidiText::DrawText - * - * Some Arabic text is drawn with line break opportunities, but the resulting lines - * are still longer than the declared screen width. So every line becomes two lines. - * - */ -void CTBiDi::RightToLeftArabicDrawTestL() - { - INFO_PRINTF1(_L("TBidiText test - RightToLeftArabic draw test with linebreak opportunities\r\n")); - - TSize windowSize(400,200); - - RArray<TTestDataRun> runsArray(16); - CleanupClosePushL(runsArray); - - CFont* testFont = new(ELeave) CTestFont; - CleanupStack::PushL(testFont); - - CTestGraphicsDevice* testDevice = CTestGraphicsDevice::NewL(windowSize); - - CleanupStack::PushL(testDevice); - - CGraphicsContext* tContext; - - TEST(testDevice->CreateContext(tContext) == KErrNone); - //note - no cleanupstack entry as the context is owned by the device - - CTestGraphicsContext* testContext = static_cast<CTestGraphicsContext*>(tContext); - - - //Create buffer to hold test data - HBufC* oldTextBufPtr = HBufC::NewLC(KBufferSize); - - TPtrC original; - TPtrC wrapped; - - TextIterator rIterator(KRightToLeftArabic, KRightToLeftArabicLength); - - TInt i; - TInt length; - TInt end; - - //Fill buffer with groups of 16 characters separated by single spaces - //Avoid a trailing space - for (i = 0 ; i < (KBufferSize-1) ; ++i) - { - if ( (i & 15) == 15) - { - oldTextBufPtr->Des().Append(0x020); - } - else - { - oldTextBufPtr->Des().Append(rIterator.NextChar()); - } - } - - oldTextBufPtr->Des().Append(rIterator.NextChar()); //final character in buffer should not be a space - - - TPtr oldText(oldTextBufPtr->Des()); - - TBidiText* bidi = TBidiText::NewL(oldText, 50); - - CleanupStack::PushL(bidi); - - TEST( (oldText.Length() == bidi->Text().Length() ) && (oldText.Length() == KBufferSize) ); - TEST(TestTBidirectionalState::TextInSameOrder(oldText.Ptr(), bidi->Text().Ptr(), KBufferSize)); - - bidi->WrapText(400 , *testFont, 0); - - TEST(bidi->WrappingWidth() == 400); - - original.Set(bidi->Text()); - - wrapped.Set(bidi->DisplayText()); - -#ifdef PRINT_ARRAYS - _LIT(KOriginalTitle, "Original: \r\n"); - _LIT(KDisplayTitle, "Display: \r\n"); - - PrintTestData(KOriginalTitle, original); - PrintTestData(KDisplayTitle, wrapped); - -#endif // PRINT_ARRAYS - - //Using a font where every character is 10 pixels wide and wrapping to 400 pixels width, - // The space every 32 characters should be replaced by a linebreak character - - length = oldText.Length(); - end = wrapped.Length(); - - TEST(original.Length() == length); - - for (i = 0; i < length ; i += 32) - { - TInt left = length-i; - TTestDataRun runData; - runData.iStart = i; - - if (left <= 33) - { - end = length; - runData.iLength = end - i; - } - else - { - end = i+32; - runData.iLength = 31; - }; - - runsArray.Append(runData); - - TEST( (runData.iLength <= oldText.Length() - runData.iStart) && (runData.iLength <= wrapped.Length() - runData.iStart) ); - - if (!TestTBidirectionalState::TextInReverseOrder(oldText.Ptr() + runData.iStart , wrapped.Ptr() + runData.iStart, runData.iLength)) - { - INFO_PRINTF2(_L("TBidiText test - wrapped - reverse order check failed for index %d\r\n"), i); - TEST(EFalse); - } - - if (length-end < 32) - { - break; //don't expect an end of line on the last line - } - - if (wrapped[i+31] != 0x02028) - { - INFO_PRINTF2(_L("TBidiText test - wrapped - line terminator check failed for index %d\r\n"), i); - TEST(EFalse); - } - - } - - TPoint origin(0,0); - TInt baseline_offset = testFont->BaselineOffsetInPixels(); - bidi->DrawText(*testContext, origin, baseline_offset); - - //now check that DrawText passed the right data - for (i = 0 ; i < runsArray.Count() ; i++) - { - TPtrC16 spec(testContext->DisplayLine(i).LineData()); - TEST(spec.Length() == runsArray[i].iLength); - TEST( spec.Length() <= (oldText.Length() - runsArray[i].iStart) ); - TEST(TestTBidirectionalState::TextInReverseOrder(oldText.Ptr() + runsArray[i].iStart , spec.Ptr(), spec.Length())); - }; - - INFO_PRINTF1(_L("TBidiText test - wrapped - display text test passed\r\n")); - - CleanupStack::PopAndDestroy(bidi); - CleanupStack::PopAndDestroy(); //whatever is pushed by HBufC::NewLC - delete testContext; - CleanupStack::PopAndDestroy(testDevice); - CleanupStack::PopAndDestroy(testFont); - CleanupStack::PopAndDestroy(); //closes runsArray - - } - -/** - * - * void CTBiDi::LeftToRightDrawTestL() - * - * Test for TBidiText::DrawText - * - * Some Latin text is drawn with line breaks - * - */ -void CTBiDi::LeftToRightDrawTestL() - {//as well as left to right text, this uses a variety of break opportunities. - INFO_PRINTF1(_L("TBidiText test - LeftToRight draw test\r\n")); - - TSize windowSize(100,400); - - RArray<TTestDataRun> runsArray(16); - CleanupClosePushL(runsArray); - - CFont* testFont = new(ELeave) CTestFont; - CleanupStack::PushL(testFont); - - - CTestGraphicsDevice* testDevice = CTestGraphicsDevice::NewL(windowSize); - - CleanupStack::PushL(testDevice); - - CGraphicsContext* tContext; - - TEST(testDevice->CreateContext(tContext) == KErrNone); - //note - no cleanupstack entry as the context is owned by the device - - CTestGraphicsContext* testContext = static_cast<CTestGraphicsContext*>(tContext); - - - //Create buffer to hold test data - HBufC* oldTextBufPtr = HBufC::NewLC(KBufferSize); - - TPtrC original; - TPtrC wrapped; - - TextIterator lIterator(KLeftToRight, KLeftToRightLength); - - TInt i; - TInt j; - TInt length; - TInt endOfWrapped; - - //Fill buffer with groups of 16 characters separated by single spaces - for (i = 0 ; i < KBufferSize ; ++i) - { - if ( (i & 15) == 15) - { - oldTextBufPtr->Des().Append(0x020); - } - else - { - oldTextBufPtr->Des().Append(lIterator.NextChar()); - } - } - - TPtr oldText(oldTextBufPtr->Des()); - - TBidiText* bidi = TBidiText::NewL(oldText, 200); - - CleanupStack::PushL(bidi); - - TEST( (oldText.Length() == bidi->Text().Length() ) && (oldText.Length() == KBufferSize) ); - - TEST(TestTBidirectionalState::TextInSameOrder(oldText.Ptr(), bidi->Text().Ptr(), KBufferSize)); - - bidi->WrapText(100 , *testFont, 0); - - TEST(bidi->WrappingWidth() == 100); - - original.Set(bidi->Text()); - - wrapped.Set(bidi->DisplayText()); - -#ifdef PRINT_ARRAYS - _LIT(KOriginalTitle, "Original: \r\n"); - _LIT(KDisplayTitle, "Display: \r\n"); - - PrintTestData(KOriginalTitle, original); - PrintTestData(KDisplayTitle, wrapped); - -#endif // PRINT_ARRAYS - - //Using a font where every character is 10 pixels wide and wrapping to 100 pixels width, - //after 10 characters should be a linebreak, then the next space is replaced by another linebreak and so on. - - length = oldText.Length(); - endOfWrapped = wrapped.Length(); - - TEST(original.Length() == length); - TEST(endOfWrapped >= length); - - TInt increment = 10; - - i = 0; - j = 0; - - for(i=0,j=0; i < length; i += increment, (increment = (increment == 5) ? 10 : 5)) - { - - TTestDataRun runData; - - TInt endOfRun = ((length-i) > increment) ? i+increment : length; - - runData.iStart = i; - runData.iLength = endOfRun-i; - - runsArray.Append(runData); - - //make sure the array is not overread - TEST( (runData.iLength <= oldText.Length() - i) && (runData.iLength <= wrapped.Length() - j) ); - - if (!TestTBidirectionalState::TextInSameOrder(oldText.Ptr() + i , wrapped.Ptr() + j, runData.iLength)) - { - INFO_PRINTF3(_L("TBidiText test - wrapped - same order check failed for index %d out-index %d\r\n"), i, j); - TEST(EFalse); - } - - j += increment; - - if (j >= (endOfWrapped-1)) - { - break; - } - - if (wrapped[j++] != 0x02028) - { - INFO_PRINTF3(_L("TBidiText test - wrapped - line terminator check failed for index %d out-index %d\r\n"), i, j-1); - TEST(EFalse); - } - if (increment == 5) - { - i++; //skip space at end of every 15 characters - }; - - - } - - TPoint origin(0,0); - TInt baseline_offset = testFont->BaselineOffsetInPixels(); - bidi->DrawText(*testContext, origin, baseline_offset); - - //now check that DrawText passed the right data - for (i = 0 ; i < (runsArray.Count()-1) ; i++) - { - TPoint line_origin(testContext->DisplayLine(i).Position()); - TEST (line_origin.iY == (origin.iY + (i * baseline_offset))); - TPtrC16 spec(testContext->DisplayLine(i).LineData()); - TTestDataRun run = runsArray[i]; - TEST(spec.Length() == run.iLength); - //make sure the array is not overread - TEST(spec.Length() <= oldText.Length() - run.iStart); - TEST(TestTBidirectionalState::TextInSameOrder(oldText.Ptr() + run.iStart , spec.Ptr(), spec.Length())); - }; - - INFO_PRINTF1(_L("TBidiText test - wrapped - display text test passed\r\n")); - - CleanupStack::PopAndDestroy(bidi); - CleanupStack::PopAndDestroy(); //whatever is pushed by HBufC::NewLC - delete testContext; - CleanupStack::PopAndDestroy(testDevice); - CleanupStack::PopAndDestroy(testFont); - CleanupStack::PopAndDestroy(); //closes runsArray - - } - -/** - * - * TBool CTBiDi::GlyphTestL - * - * Test function for glyph substitution - * - * @param "const TDesC16& aTitle" - * Reference to literal string used for logging. Id's the particular test - * - * @param "const TDesC16& aOriginal" - * Reference text - * - * @param "const TDesC16& aDesired" - * Reference to expected result following call to DisplayText - * - * @param "const TInt aWrapWidth" - * The maximum width of the text (in pixels) - * - */ -TBool CTBiDi::GlyphTestL(const TDesC16& aTitle, const TDesC16& aOriginal, const TDesC16& aDesired, const TInt aWrapWidth) - { - TBool pass = ETrue; - INFO_PRINTF1(aTitle); - - TSize windowSize(400,200); - - CTestGraphicsDevice* testDevice = CTestGraphicsDevice::NewL(windowSize); - CleanupStack::PushL(testDevice); - - CFont* testFont; - CGraphicsContext* tContext; - - User::LeaveIfError(testDevice->CreateContext(tContext)); - CleanupStack::PushL(tContext); - - User::LeaveIfError(testDevice->GetNearestFontToDesignHeightInPixels(testFont,TFontSpec(KArabicFontName,16))); - - TPtrC original; - TPtrC wrapped; - TPtrC desired(aDesired); - TInt desiredIndex = 0; - TInt desiredLength = desired.Length(); - - TBidiText* bidi = TBidiText::NewL(aOriginal, 50); - - CleanupStack::PushL(bidi); - - bidi->WrapText(aWrapWidth , *testFont, 0); - - TEST(bidi->WrappingWidth() == aWrapWidth); - - original.Set(bidi->Text()); - - wrapped.Set(bidi->DisplayText()); - - - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iText.Set(bidi->DisplayText()); - - param.iPosInText = 0; - TInt end_char = wrapped.Length(); - - pass = ETrue; - - while (param.iPosInText < end_char) - { - if (testFont->GetCharacterPosition(param)) //turn character(s) into glyphs - { - //some glyphs have been output - TInt i; - for (i = 0 ; i < param.iOutputGlyphs ; ++i) - { - pass = pass && (desiredIndex < desiredLength); //see if more glyphs generated than expected - - while (desired[desiredIndex] == KUnicodeNoSuchCharacter) - { - ++desiredIndex; //skip any padding - } - - pass = pass && (desired[desiredIndex] == param.iOutput[i].iCode); - - ++desiredIndex; - } - } - } - _LIT(KPassed, " passed\r\n"); - _LIT(KFailed, " FAILED\r\n"); - - if (pass) - { - INFO_PRINTF1(KPassed); - } - else - { - INFO_PRINTF1(KFailed); - _LIT(KOriginalTitle, "Original: \r\n"); - _LIT(KDisplayTitle, "Display: \r\n"); - _LIT(KDesiredTitle, "Desired: \r\n"); - PrintTestData(KOriginalTitle, original); - PrintTestData(KDisplayTitle, wrapped); - PrintTestData(KDesiredTitle, desired); - - } - - CleanupStack::PopAndDestroy(bidi); - CleanupStack::PopAndDestroy(tContext); - CleanupStack::PopAndDestroy(testDevice); - delete ((CTestFont*)testFont); //this is to avoid compilation warnings as CFont desructor is private - - return pass; - } - -_LIT(KLamAlefIsolateTitle, "Lam-Alef Ligature Test (Alef-Lam in logical order) "); -_LIT(KLamAlefIsolate, " \x644\x627 "); -_LIT(KLamAlefIsolateDesired, " \xfefb "); -_LIT(KLamAlefTahTtitle, "Lam-Alef Tah Ligature Test (Tah Alef Lam in logical order) "); -_LIT(KLamAlefTah, " \x637\x644\x627 "); -_LIT(KLamAlefTahDesired, " \xfefc\xfec3 "); -_LIT(KTaaTaaTaaTitle, "Taa Taa Taa Shaping test "); -_LIT(KTaaTaaTaa, " \x637\x637\x637 "); -_LIT(KTaaTaaTaaDesired, " \xfec2\xfec4\xfec3 "); - - -/** - * - * TBool CTBiDi::LigatureTextsL - * - * Test function of glyphs using ligatures - * - */ -void CTBiDi::LigatureTestsL() - { - TInt passed = 0; - TInt wrapWidth = 400; - //set the wrapping width very large - we don't want these tests to linewrap. - - if (GlyphTestL(KLamAlefIsolateTitle, KLamAlefIsolate, KLamAlefIsolateDesired, wrapWidth)) - { - ++passed; - } - if (GlyphTestL(KLamAlefTahTtitle, KLamAlefTah, KLamAlefTahDesired, wrapWidth)) - { - ++passed; - } - if (GlyphTestL(KTaaTaaTaaTitle, KTaaTaaTaa, KTaaTaaTaaDesired, wrapWidth)) - { - ++passed; - } - TEST(passed == 3); - } - -_LIT(KIllegalBreakTitle, "Arabic Illegal Linebreak Test"); - -/** -* -* void CTBiDi::ArabicIllegalLinebreakTestsL -* -* Tests that when rendering a long Arabic "word" that needs to be broken up part-way -* due to screen width, that the characters inside the word are still rendered as their -* medial form rather than incorrectly making them initial final or isolated. -*/ -void CTBiDi::ArabicIllegalLinebreakTestsL() - { - static const TInt KWrappingWidth = 100; //in pixels - static const TInt KLineWidth = 10; //not including linebreak - static const TInt KInputLength = 150; - static const TInt KOutputLength = ((KInputLength/(KLineWidth-1))+1)*KLineWidth; //allow for linebreak characters - - TBuf<KInputLength> iBuffer; //holds input data - TBuf<KOutputLength> oBuffer; //holds expected glyphs that the input will be turned into - - TextIterator iterator(KArabicDualJoiningLettersData, KArabicDualJoiningLettersLength); - - while (!iterator.Wrapped()) - { - TInt i; - TInt j; - TInt startOfLine; - iBuffer.Zero(); - oBuffer.FillZ(oBuffer.MaxLength()); - TUint16 ch = iterator.NextChar(); - TUint16 medial_ch; - - startOfLine = 0; - j = KLineWidth; - iBuffer.Append(KUnicodeSpace); - oBuffer[j--] = KUnicodeLinebreak; - oBuffer[j--] = KUnicodeSpace; - iBuffer.Append(ch); - oBuffer[j--] = GetInitialForm(ch); - - //Now compose a very long nonsense word in Arabic. - //At the same time insert the corresponding - for (i = 1; i < (iBuffer.MaxLength()-3) ; ++i) - { - do - { - ch = iterator.NextChar(); - medial_ch = GetMedialForm(ch); - } - while (medial_ch == ch); //skip characters without medial form - iBuffer.Append(ch); - oBuffer[j--] = medial_ch;; - if (j < startOfLine) - { - startOfLine += KLineWidth+1; - j = startOfLine + KLineWidth; - oBuffer[j--] = KUnicodeLinebreak; - } - } - ch = iterator.NextChar(); - iBuffer.Append(ch); - oBuffer[j--] = GetFinalForm(ch); - iBuffer.Append(KUnicodeSpace); - oBuffer[j--] = KUnicodeSpace; //Trailing spaces are not supressed, hence add space to test output - for (; j >= startOfLine ; --j) - { - oBuffer[j] = KUnicodeNoSuchCharacter; - } - - //You might be expecting to see some zero-width joiners in the output. - //In fact these are suppressed by the font object used by GlyphTestL - //so we never see them on the outside. - - TBool passed = GlyphTestL(KIllegalBreakTitle, iBuffer, oBuffer, KWrappingWidth); - if (!passed) - { - TEST(EFalse); - } - } - } - -/** - * - * void CTBiDi::DoTestTextDrawPanic() - * - * Panic Test for TBidiText::DrawText - * - * This attempts to call DrawText without first calling WrapText and consequently is expected to panic. - * - */ -void CTBiDi::DoTestTextDrawPanic() - { - TSize windowSize(100,100); - - CTestGraphicsDevice* testDevice = CTestGraphicsDevice::NewL(windowSize); - - CleanupStack::PushL(testDevice); - - CGraphicsContext* testContext; - - TEST(testDevice->CreateContext(testContext) == KErrNone); - //note - no cleanupstack entry as the context is owned by the device - - _LIT(KBidiText, "This is just a random lump of text"); - - TBidiText* bidi = TBidiText::NewL(KBidiText, 50); - - CleanupStack::PushL(bidi); - - TPoint centre(50,50); - - bidi->DrawText(*testContext, centre); - - CleanupStack::PopAndDestroy(bidi); - CleanupStack::PopAndDestroy(testDevice); - } - -/** - * - * static TInt TestDrawTextPanicThread - * - * Panic Test for TBidiText::DrawText - * - * This calls DoTestDrawTextPanic within its own cleanup stack and TRAPD as it is in - * a separate thread. - * - */ -static TInt TestDrawTextPanicThread(TAny* aData) - { - //Tests that BidiText::DrawText panics if called without first calling - //BidiText::WrapText. - - CTBiDi* theTest = static_cast<CTBiDi*> (aData); - CTrapCleanup* tc = CTrapCleanup::New(); - if (!tc) - return KErrNoMemory; - - TRAPD(err, theTest->DoTestTextDrawPanic()); - - delete tc; - - return err; - } - -/** - * - * TInt CTBiDi::TestPanic - * - * Panic Test for TBidiText - * - * This creates a separate thread to run the test in as normally a panic - * will stop the test process. - * - */ -TInt CTBiDi::TestPanic(TThreadFunction aFunction) - { - // Increment the test thread counter to create threads with different names and thus avoid conflict of kernel resources - ++iTestThreadCounter; - _LIT(KThreadNameFormat, "DeliberatePanicPleaseIgnore%d"); - TBuf<256> threadNameBuf; - threadNameBuf.Format(KThreadNameFormat, iTestThreadCounter); - - TInt KHeapSize = 8192; - RThread thread; - TRequestStatus threadstat; - TBool jit = User::JustInTime(); - User::SetJustInTime(EFalse); - TInt ret = thread.Create(threadNameBuf, aFunction, KDefaultStackSize, KHeapSize, KHeapSize, this); - TEST(KErrNone == ret); - thread.Logon(threadstat); - thread.Resume(); - User::WaitForRequest(threadstat); - TEST (thread.ExitType() == EExitPanic); - TInt reason = thread.ExitReason(); - thread.Close(); - User::SetJustInTime(jit); - return reason; - } - -/** - * - * void CTBiDi::TRunInfoCompactReorderTest - * - * Tests functionality contained within TRunInfoCompact - * - */ -void CTBiDi::TRunInfoCompactReorderTest() - { - _LIT(KLetters, "XYZjklmnPQR"); - static const struct { - TBool iJoinsAtStart; - TBool iJoinsAtEnd; - TBool iTruncated; - TInt iStart; - TInt iEnd; - const TText* iExpected;} testData[] = - { - {EFalse, EFalse, EFalse, 4, 7, _S("klm")}, - {EFalse, EFalse, EFalse, 3, 7, _S("jklm")}, - {EFalse, EFalse, EFalse, 4, 8, _S("klmn")}, - {EFalse, EFalse, EFalse, 2, 9, _S("jklmn")}, - {ETrue, ETrue, EFalse, 2, 9, _S("\x200Djklmn\x200D")}, - {EFalse, ETrue, EFalse, 2, 9, _S("jklmn\x200D")}, - {ETrue, EFalse, EFalse, 2, 9, _S("\x200Djklmn")}, - {EFalse, EFalse, ETrue, 4, 8, _S("klmn")}, - {EFalse, EFalse, ETrue, 2, 9, _S("jklmn\x2029")}, - {ETrue, ETrue, ETrue, 2, 9, _S("\x200Djklmn\x200D\x2029")}, - {EFalse, ETrue, ETrue, 2, 9, _S("jklmn\x200D\x2029")}, - {ETrue, EFalse, ETrue, 2, 9, _S("\x200Djklmn\x2029")}, - {ETrue, ETrue, ETrue, 8, 9, _S("\x200D\x2029")}, - {ETrue, ETrue, ETrue, 8, 8, _S("")}, - {ETrue, ETrue, ETrue, 9, 9, _S("")}, - {ETrue, ETrue, ETrue, 4, 4, _S("")}, - {ETrue, ETrue, ETrue, 4, 5, _S("k")}, - {EFalse, EFalse, EFalse, 7, 4, _S("mlk")}, - {EFalse, EFalse, EFalse, 7, 3, _S("mlkj")}, - {EFalse, EFalse, EFalse, 8, 4, _S("nmlk")}, - {EFalse, EFalse, EFalse, 9, 2, _S("nmlkj")}, - {ETrue, ETrue, EFalse, 9, 2, _S("\x200Dnmlkj\x200D")}, - {EFalse, ETrue, EFalse, 9, 2, _S("\x200Dnmlkj")}, - {ETrue, EFalse, EFalse, 9, 2, _S("nmlkj\x200D")}, - {EFalse, EFalse, ETrue, 8, 4, _S("nmlk")}, - {EFalse, EFalse, ETrue, 9, 2, _S("\x2029nmlkj")}, - {ETrue, ETrue, ETrue, 9, 2, _S("\x2029\x200Dnmlkj\x200D")}, - {EFalse, ETrue, ETrue, 9, 2, _S("\x2029\x200Dnmlkj")}, - {ETrue, EFalse, ETrue, 9, 2, _S("\x2029nmlkj\x200D")}, - {ETrue, ETrue, ETrue, 9, 8, _S("\x2029\x200D")}, - {ETrue, ETrue, ETrue, 5, 4, _S("k")}, - }; - INFO_PRINTF1(_L("TRunInfoCompact::Reorder test\r\n")); - TRunInfoCompact::TReorderingContext context; - context.iSource = KLetters().Ptr(); - context.iStart = 3; - context.iEnd = 8; - TText buffer[20]; - TInt numTestCases = sizeof(testData)/sizeof(testData[0]); - TBool allTestsPassed = ETrue; - for (TInt i = 0; i != numTestCases; ++i) - { - TInt start = testData[i].iStart; - TInt end = testData[i].iEnd; - TBool reverse = EFalse; - if (end < start) - { - reverse = ETrue; - start = testData[i].iEnd; - end = testData[i].iStart; - } - TInt length = end - start; - TRunInfoCompact run(start, length, reverse); - context.iJoinsAtStart = testData[i].iJoinsAtStart; - context.iJoinsAtEnd = testData[i].iJoinsAtEnd; - context.iTruncation = testData[i].iTruncated ? 0x2029 : 0xFFFF; - TText* resultEnd = buffer; - TRAPD(err, resultEnd = run.Reorder(buffer, context)); - TEST(err == KErrNone); - TPtrC result(buffer, resultEnd - buffer); - TPtrC expected(testData[i].iExpected); - if(result.Compare(expected) != 0) - { - INFO_PRINTF2(_L("TRunInfoCompactReorderTest %d Failed\r\n"), i+1); - PrintTestData(_L("Result "), result); - PrintTestData(_L("Expected "), expected); - allTestsPassed = EFalse; - }; - - } - TEST(allTestsPassed); - } - -/** - * - * void CTBiDi::TBidiLogicalToVisualGetVisualLineTest - * - * Tests functionality contained within TBidiLogicalToVisual - * - */ -void CTBiDi::TBidiLogicalToVisualGetVisualLineTest() - { - TBidirectionalState::TRunInfo runArray[4]; - // only iStart, iLength and iDirection are important - // logical: 0>0>0>0>0>3<3<3<1<1<1<1<2>2>2>2>2>2> - // visual: 01234BA98CDEFGH765 - // This text would never really be re-ordered in this way. - // Joiners are between 5 and 6, and 9 and 10. - _LIT(KBidi, "GHIJK\x0643\x0631\x0644\x0621\x0645\x0627\x0639LMNOPQ"); - runArray[0].iStart = 0; - runArray[0].iLength = 5; - runArray[0].iDirection = 0; - runArray[1].iStart = 8; - runArray[1].iLength = 4; - runArray[1].iDirection = 1; - runArray[2].iStart = 12; - runArray[2].iLength = 6; - runArray[2].iDirection = 0; - runArray[3].iStart = 5; - runArray[3].iLength = 3; - runArray[3].iDirection = 1; - - TBidiLogicalToVisual conv(KBidi, EFalse, runArray, 4); - // We won't call TBidiLogicalToVisual::Reorder(), because we are using the - // data as-is as test data. - static const struct { - TInt iStart; - TInt iEnd; - TBool iTruncated; - const TText* iExpected; - } - testData[] = - { - {0, 18, EFalse, _S("GHIJK\x0639\x0627\x0645\x0621LMNOPQ\x0644\x0631\x0643")}, - {0, 17, ETrue, _S("GHIJK\x0639\x0627\x0645\x0621LMNOP\x2026\x0644\x0631\x0643")}, - {0, 13, ETrue, _S("GHIJK\x0639\x0627\x0645\x0621L\x2026\x0644\x0631\x0643")}, - {0, 12, ETrue, _S("GHIJK\x0639\x0627\x0645\x0621\x2026\x0644\x0631\x0643")}, - {0, 11, ETrue, _S("GHIJK\x2026\x0627\x0645\x0621\x0644\x0631\x0643")}, - {0, 10, ETrue, _S("GHIJK\x2026\x200D\x0645\x0621\x0644\x0631\x0643")}, - {4, 10, EFalse, _S("K\x200D\x0645\x0621\x0644\x0631\x0643")}, - {5, 10, ETrue, _S("\x2026\x200D\x0645\x0621\x0644\x0631\x0643")}, - {6, 10, ETrue, _S("\x2026\x200D\x0645\x0621\x0644\x0631\x200D")}, - {7, 10, ETrue, _S("\x2026\x200D\x0645\x0621\x0644")}, - {8, 10, ETrue, _S("\x2026\x200D\x0645\x0621")}, - {8, 9, ETrue, _S("\x2026\x0621")}, - {8, 9, EFalse, _S("\x0621")}, - {9, 9, ETrue, _S("\x2026")}, - }; - - TBuf<100> result; - TInt numTestCases = sizeof(testData)/sizeof(testData[0]); - for (TInt i = 0; i != numTestCases; ++i) - { - conv.GetVisualLine(result, - testData[i].iStart, testData[i].iEnd, - testData[i].iTruncated? 0x2026 : 0xFFFF); - TPtrC expected(testData[i].iExpected); - TEST(0 == result.Compare(expected)); - } - } - -/** -TBidiLogicalToVisualOOMTest - -This class contains functions that support tests based on the examples given by -Unicode Standard Annexe 9 - -The class contains methods for comparing an example text's logical order with it's display order - -*/ -class TBidiLogicalToVisualOOMTest : public MOOMTest - { - const TDesC* iText; - TInt iStart; - TInt iEnd; - TBool iRightToLeft; - const TDesC* iReorderedText; - TInt iReturnValue; - TBidirectionalState::TRunInfo* iRunInfoArray; - TInt iRunInfoLength; - TBuf<80> iLine; - CTBiDi* iTest; -public: - TBidiLogicalToVisualOOMTest( - const TDesC& aText, - const TInt aStart, - const TInt aEnd, - const TBool aRightToLeft, - const TDesC& aReorderedText, - TBidirectionalState::TRunInfo* aRunInfoArray, - TInt aRunInfoLength, - CTBiDi* aTest ) - : iText(&aText), - iStart(aStart), - iEnd(aEnd), - iRightToLeft(aRightToLeft), - iReorderedText(&aReorderedText), - iReturnValue(0) , - iRunInfoArray(aRunInfoArray), - iRunInfoLength(aRunInfoLength), - iTest(aTest) - { - } - virtual ~TBidiLogicalToVisualOOMTest() { TearDown(); } - void Initialize(const TDesC& aText, TInt aStart, TInt aEnd, TBool aRightToLeft, - const TDesC& aReorderedText) - { - TearDown(); - iText = &aText; - iStart = aStart; - iEnd = aEnd; - iRightToLeft = aRightToLeft; - iReorderedText = &aReorderedText; - } - void SetUpL() - { - iLine.Zero(); - iReturnValue = 0; - } - void ManipulateL() - { - TBidiLogicalToVisual ltv(*iText, iRightToLeft, iRunInfoArray, iRunInfoLength); - ltv.Reorder(); //map text to visual order - ltv.GetVisualLine(iLine, iStart, iEnd, 0xFFFF); - iTest->TEST(StringsMatch(iReorderedText->Ptr(), iReorderedText->Length(), iLine.Ptr(), iReorderedText->Length())); - //Because this is an OOM test the contents of Line are the results of repeated calls, so the - //length of iLine is greater than that of iReorderedText. However comparing the first copy suffices. - //This won't detect the algorithm supplying more characters than expected, but other tests in the suite - //will detect that. - User::LeaveIfError(iReturnValue); - } - static TBool IsIgnorable(TText a) - { - TBool ignorable = EFalse; - switch(a) { - case KUnicodeNoSuchCharacter: - case KUnicodeLeftToRightMark: - case KUnicodeRightToLeftMark: - case KUnicodeLeftToRightEmbedding: - case KUnicodeRightToLeftEmbedding: - case KUnicodePopDirectionFormat: - case KUnicodeLeftToRightOverride: - case KUnicodeRightToLeftOverride: - ignorable = ETrue; - break; - default: - break; - } - return ignorable; - } - static TBool StringsMatch(const TText* a1, TInt a1Len, - const TText* a2, TInt a2Len) - { - const TText* a1End = a1 + a1Len; - const TText* a2End = a2 + a2Len; - for (;;) - { - while (a1 != a1End && IsIgnorable(*a1)) - ++a1; - while (a2 != a2End && IsIgnorable(*a2)) - ++a2; - if (a1 == a1End) - return a2 == a2End; - else if (a2 == a2End) - return EFalse; - if (*a1 != *a2) - return EFalse; - ++a1; - ++a2; - } - } - void TearDown() - { - iLine.Zero(); - } - }; - -void CTBiDi::DEF043323L() - { - const TUint16 KArabicPhrase[] = - { - KKaf, KAlef, KFeh, KYeh, KTeh, KYeh, KReh, KYeh, KAlef, KUnicodeSpace, - KNoon, KAlef, KNoon, KAlef - }; - const TUint16 KReversedArabicPhrase[] = - { - KAlef, KNoon, KAlef, KNoon, - KUnicodeSpace, KAlef, KYeh, KReh, KYeh, KTeh, KYeh, KFeh, KAlef, KKaf, - KEllipsis - }; - TPtrC16 phrase(KArabicPhrase, sizeof(KArabicPhrase)/sizeof(KArabicPhrase[0])); - TBidiText* text = TBidiText::NewL(phrase, 3); - CleanupStack::PushL(text); - CFont* font = new (ELeave) CTestFont; - CleanupStack::PushL(font); - // wrap to 3 lines, lengths 50/40/40, no truncation character - text->WrapText(50, *font, 0); - TEST(text->NumberOfLinesInDisplayText() == 3); - TInt width; - TPtrC16 line = text->LineOfDisplayText(0, width); - TPtrC16 expectedLine(KReversedArabicPhrase + 9, 5); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 50); - line.Set( text->LineOfDisplayText(1, width)); - expectedLine.Set(KReversedArabicPhrase + 5, 4); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 40); - line.Set(text->LineOfDisplayText(2, width)); - expectedLine.Set(KReversedArabicPhrase, 4); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 40); - // wrap to 2 lines, lengths 90/40, no truncation character - text->WrapText(90, *font, 0, 2); - TEST(text->NumberOfLinesInDisplayText() == 2); - text->WrapText(90, *font, 0, 3); - TEST(text->NumberOfLinesInDisplayText() == 2); - line.Set(text->LineOfDisplayText(0, width)); - expectedLine.Set(KReversedArabicPhrase + 5, 9); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 90); - line.Set(text->LineOfDisplayText(1, width)); - expectedLine.Set(KReversedArabicPhrase, 4); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 40); - // wrap to 2 lines, lengths 20/20, truncation character - text->WrapText(20, *font, 0, 2); - TEST(text->NumberOfLinesInDisplayText() == 2); - line.Set(text->LineOfDisplayText(0, width)); - expectedLine.Set(KReversedArabicPhrase + 12, 2); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 20); - line.Set(text->LineOfDisplayText(1, width)); - TEST(width == 20); - expectedLine.Set(KReversedArabicPhrase + 11, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - expectedLine.Set(KReversedArabicPhrase + 14, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - // lengths 30/30, truncation character - text->WrapText(30, *font, 0, 2); - TEST(text->NumberOfLinesInDisplayText() == 2); - line.Set(text->LineOfDisplayText(0, width)); - expectedLine.Set(KReversedArabicPhrase + 11, 3); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 30); - line.Set(text->LineOfDisplayText(1, width)); - TEST(width == 30); - expectedLine.Set(KReversedArabicPhrase + 9, 2); - TEST(line.Find(expectedLine) != KErrNotFound); - expectedLine.Set(KReversedArabicPhrase + 14, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - // lengths 40/40, truncation character - text->WrapText(40, *font, 0, 2); - TEST(text->NumberOfLinesInDisplayText() == 2); - line.Set(text->LineOfDisplayText(0, width)); - expectedLine.Set(KReversedArabicPhrase + 10, 4); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 40); - line.Set(text->LineOfDisplayText(1, width)); - TEST(width == 40); - expectedLine.Set(KReversedArabicPhrase + 7, 3); - TEST(line.Find(expectedLine) != KErrNotFound); - expectedLine.Set(KReversedArabicPhrase + 14, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - // lengths 50/50, truncation character - text->WrapText(50, *font, 0, 2); - TEST(text->NumberOfLinesInDisplayText() == 2); - line.Set(text->LineOfDisplayText(0, width)); - expectedLine.Set(KReversedArabicPhrase + 9, 5); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 50); - line.Set(text->LineOfDisplayText(1, width)); - TEST(width == 50); - expectedLine.Set(KReversedArabicPhrase + 5, 4); - TEST(line.Find(expectedLine) != KErrNotFound); - expectedLine.Set(KReversedArabicPhrase + 14, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - // length 100, truncation character - text->WrapText(100, *font, 0, 1); - TEST(text->NumberOfLinesInDisplayText() == 1); - line.Set(text->LineOfDisplayText(0, width)); - expectedLine.Set(KReversedArabicPhrase + 5, 9); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 100); - expectedLine.Set(KReversedArabicPhrase + 14, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - // length 120, truncation character: this caught the defect - text->WrapText(110, *font, 0, 1); - TEST(text->NumberOfLinesInDisplayText() == 1); - line.Set(text->LineOfDisplayText(0, width)); - // the space should not be present, so only 100 width - expectedLine.Set(KReversedArabicPhrase + 5, 9); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 100); - expectedLine.Set(KReversedArabicPhrase + 14, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - // length 120, truncation character - text->WrapText(120, *font, 0, 1); - TEST(text->NumberOfLinesInDisplayText() == 1); - line.Set(text->LineOfDisplayText(0, width)); - expectedLine.Set(KReversedArabicPhrase + 3, 11); - TEST(line.Find(expectedLine) != KErrNotFound); - TEST(width == 120); - expectedLine.Set(KReversedArabicPhrase + 14, 1); - TEST(line.Find(expectedLine) != KErrNotFound); - CleanupStack::PopAndDestroy(font); - CleanupStack::PopAndDestroy(text); - } - -void CTBiDi::DEF052191L() - { - _LIT(KTwoLines, "First line.\nSecond line."); - CFont* font = new (ELeave) CTestFont; - CleanupStack::PushL(font); - TBidiText* text = TBidiText::NewL(KTwoLines, 16); - CleanupStack::PushL(text); - text->WrapText(240, *font, NULL); - TEST(text->NumberOfLinesInDisplayText() == 2); //before the fix this used to return 3 - CleanupStack::PopAndDestroy(2); //font and text - } - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0007 - - @SYMDEF DEF105603 - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test detection of 'overall' directionality of a given language/script under normal & OOM conditions - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -void CTBiDi::TestBidiTextClassL() - { - INFO_PRINTF1(_L("Out of Memory Tests")); - TBidiTextOOMTest toom(this); - toom.Initialize(KHttsD, TBidiTextOOMTest::ELeftToRight, 1); - TestOOML(toom); - toom.Initialize(KHttsD, TBidiTextOOMTest::ERightToLeft, 1); - TestOOML(toom); - toom.Initialize(KHttsD, TBidiTextOOMTest::EAutomatic, 1); - TestOOML(toom); - toom.Initialize(KHttsD, TBidiTextOOMTest::ELeftToRight, 100); - TestOOML(toom); - toom.Initialize(KHttsD, TBidiTextOOMTest::ERightToLeft, 100); - TestOOML(toom); - toom.Initialize(KHttsD, TBidiTextOOMTest::EAutomatic, 100); - TestOOML(toom); - toom.Initialize(KMultiLine, TBidiTextOOMTest::ELeftToRight, 1); - TestOOML(toom); - toom.Initialize(KLineSep, TBidiTextOOMTest::ERightToLeft, 1); - TestOOML(toom); - - INFO_PRINTF1(_L("Panic")); - INFO_PRINTF1(_L("Testing DrawText panic\r\n")); - TEST (EBidiPanic_InvalidVisualOrderedTextLength == TestPanic(TestDrawTextPanicThread)); - INFO_PRINTF1(_L("Arabic with no line break opportunities")); - NoLineBreakDrawTestL(); - INFO_PRINTF1(_L("Arabic with rare line break opportunities")); - RightToLeftArabicDrawTestL(); - INFO_PRINTF1(_L("Latin")); - LeftToRightDrawTestL(); - INFO_PRINTF1(_L("Glyph tests")); - LigatureTestsL(); - - INFO_PRINTF1(_L("TRunInfoCompactReorder")); - TRunInfoCompactReorderTest(); - // Need to test the rest of the TRunInfoCompact API as well. - - INFO_PRINTF1(_L("Arabic Illegal Line breaks")); - ArabicIllegalLinebreakTestsL(); - - INFO_PRINTF1(_L("DEF043323 - Alignment of TBidiText::DrawText() doesn't take the truncation char into account")); - DEF043323L(); - INFO_PRINTF1(_L("DEF042191 - Problems with wraping in TBidiText")); - DEF052191L(); - } - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0008 - - @SYMDEF DEF105603 - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test detection of 'overall' directionality of a given language/script - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -void CTBiDi::TestBidiLogicalToVisualClassL() - { - static const TInt KRunInfoLength = 50; - TBidirectionalState::TRunInfo runInfo[KRunInfoLength]; - INFO_PRINTF1(_L("TBidiVisual test - Out of Memory Tests\r\n")); - TBidiLogicalToVisualOOMTest toom(KHttsL, 0, 14, ETrue, KHttsD, runInfo, KRunInfoLength, this); - TestOOML(toom); - toom.Initialize(KHttL, 0, 13, ETrue, KHttD); - TestOOML(toom); - toom.Initialize(KHttL, 0, 13, EFalse, KHttD); - TestOOML(toom); - toom.Initialize(KMixedL, 0, 5, ETrue, KMixedD); - TestOOML(toom); - toom.Initialize(KMixedL, 0, 5, EFalse, KMixedDL); - TestOOML(toom); - toom.Initialize(KHello, 0, 5, ETrue, KHello); - TestOOML(toom); - toom.Initialize(KHello, 0, 5, EFalse, KHello); - TestOOML(toom); - toom.Initialize(KHalalL, 0, 4, EFalse, KHalalD); - TestOOML(toom); - toom.Initialize(KHalalL, 0, 4, ETrue, KHalalD); - TestOOML(toom); - - TBidiLogicalToVisualGetVisualLineTest(); - } - -/** - * - * void CTBiDi::TestCatToNumber - * - * Convert TBidirectionalState::TCategory into it's equivalent TChar::TBdCategory - * - */ - void CTBiDi::TestCatToNumber(TInt aIn, TInt aOut) - { - TEST(TBidirectionalState::CatToNumber(aIn) == aOut); - } - - -#define FILL_RUN_ARRAY(aTestArray, aRunArray, aContext) \ - CTBiDi::FillRunArray((aTestArray), (aRunArray), \ - sizeof((aTestArray))/sizeof((aTestArray)[0]), (aContext)) - -void CTBiDi::FillRunArray(const TBdLevelTest* aTests, TBidirectionalState::TRunInfo* aRuns, - TInt aArraySize, TBidirectionalState::TReorderContext& aContext) - { - aContext.iCategories = 0; - aContext.iRuns = aArraySize; - for (TInt i = 0; i != aArraySize; ++i) - { - TUint category = 1 << static_cast<TUint>(aTests[i].iCat); - aContext.iCategories |= category; - aRuns[i].iCategory = category; - aRuns[i].iIndex = i; - } - } - -#define CHECK_RUN_RESULTS(aTestArray, aRunArray) \ - CheckRunResults((aTestArray), (aRunArray), \ - sizeof((aTestArray))/sizeof((aTestArray)[0])) - -void CTBiDi::CheckRunResults(const TBdLevelTest* aTests, TBidirectionalState::TRunInfo* aRuns, - TInt aArraySize) - { - for (TInt i = 0; i != aArraySize; ++i) - { - const TBdLevelTest* currentTestData = aTests + i; - TBidirectionalState::TRunInfo* currentRun = aRuns + i; - if (currentTestData->iLevel != -1) - { - TUint category = 1 << static_cast<TUint>(currentTestData->iChangedCat); - TEST(currentTestData->iLevel == currentRun->iEmbeddingLevel); - TEST(category == currentRun->iCategory); - } - } - } - -void CTBiDi::SetContext(TBidirectionalState::TReorderContext& aContext, - TChar::TBdCategory aCat) - { - TInt cat = 1 << static_cast<TInt>(aCat); - // big axe - TInt* p = reinterpret_cast<TInt*> (&(aContext.iNextStrongCategory)); - *p = cat; - p = reinterpret_cast<TInt*> (&(aContext.iNextCategory)); - *p = cat; - } - -//test data for TestTBidirectionalStateInternalsL - -// test X1, X2, X3, X4, X5, X6, X7 -// (X8 does not apply to ReorderLine: should not contain multiple paragraphs) -// (X9 and X10 should not be tested explicitly at this level) -static const TBdLevelTest KXTests[] = - { - - {TChar::ERightToLeftEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 1, TChar::EOtherNeutral}, - {TChar::ELeftToRightEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 2, TChar::EOtherNeutral}, - {TChar::ELeftToRightEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 4, TChar::EOtherNeutral}, - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 6, TChar::ELeftToRight}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 7, TChar::ERightToLeft}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 9, TChar::ERightToLeft}, - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 10, TChar::ELeftToRight}, - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 12, TChar::ELeftToRight}, - {TChar::ERightToLeftEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 13, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 13, TChar::EOtherNeutral}, - {TChar::ERightToLeftEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 15, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 35, TChar::ERightToLeft}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 55, TChar::ERightToLeft}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeftOverride, -1, TChar::EOtherNeutral}, - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 60, TChar::ELeftToRight}, - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, // should not alter directionality - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, // should not alter directionality - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, // should not alter directionality - {TChar::EOtherNeutral, 60, TChar::ELeftToRight}, - {TChar::ERightToLeftEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 61, TChar::EOtherNeutral}, - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, // should not alter directionality - {TChar::ELeftToRightOverride, -1, TChar::EOtherNeutral}, // should not alter directionality - {TChar::EOtherNeutral, 61, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, // matches ignored code - {TChar::EOtherNeutral, 61, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, // matches ignored code - {TChar::EOtherNeutral, 61, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 60, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, // matches ignored code - {TChar::EOtherNeutral, 60, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, // matches ignored code - {TChar::EOtherNeutral, 60, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, // matches ignored code - {TChar::EOtherNeutral, 60, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 55, TChar::ERightToLeft}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 35, TChar::ERightToLeft}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 15, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 13, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 12, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 10, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 9, TChar::ERightToLeft}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 7, TChar::ERightToLeft}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 6, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 4, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 2, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 1, TChar::EOtherNeutral}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral} - }; - -static const TBdLevelTest KW123TestsL[] = - { - {TChar::ENonSpacingMark, 0, TChar::ELeftToRight}, - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::ERightToLeftEmbedding, -1, TChar::EOtherNeutral}, - {TChar::ENonSpacingMark, 1, TChar::ERightToLeft}, - {TChar::ELeftToRight, -1, TChar::EOtherNeutral}, - {TChar::ENonSpacingMark, 1, TChar::ELeftToRight}, - {TChar::EEuropeanNumber, 1, TChar::EEuropeanNumber}, - {TChar::ERightToLeftArabic, 1, TChar::ERightToLeft}, - {TChar::ENonSpacingMark, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, -1, TChar::EOtherNeutral}, - {TChar::ENonSpacingMark, 1, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 1, TChar::EArabicNumber} - }; - -static const TBdLevelTest KW123TestsR[] = - { - {TChar::ENonSpacingMark, 1, TChar::ERightToLeft}, - {TChar::EEuropeanNumber, 1, TChar::EEuropeanNumber}, - {TChar::ENonSpacingMark, 1, TChar::EEuropeanNumber}, - {TChar::ELeftToRightEmbedding, -1, TChar::EOtherNeutral}, - {TChar::ENonSpacingMark, 2, TChar::ELeftToRight}, - {TChar::ELeftToRight, -1, TChar::EOtherNeutral}, - {TChar::ENonSpacingMark, 2, TChar::ELeftToRight}, - {TChar::EWhitespace, -1, TChar::EOtherNeutral}, - {TChar::ENonSpacingMark, 2, TChar::EWhitespace}, - {TChar::EOtherNeutral, -1, TChar::EOtherNeutral}, - {TChar::ENonSpacingMark, 2, TChar::EOtherNeutral} - }; - - -static const TBdLevelTest KW456Tests[] = - { - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EEuropeanNumberSeparator, 0, TChar::EEuropeanNumber}, // W4 - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::ECommonNumberSeparator, 0, TChar::EEuropeanNumber}, // W4 - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::ECommonNumberSeparator, 0, TChar::EArabicNumber}, // W4 - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EEuropeanNumberTerminator, 0, TChar::EEuropeanNumber}, // W5 - {TChar::EEuropeanNumberTerminator, 0, TChar::EEuropeanNumber}, // W5 - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EEuropeanNumberTerminator, 0, TChar::EEuropeanNumber}, // W5 - {TChar::EEuropeanNumberTerminator, 0, TChar::EEuropeanNumber}, // W5 - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EEuropeanNumberTerminator, 0, TChar::EEuropeanNumber}, // W5 - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EEuropeanNumberSeparator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EEuropeanNumberSeparator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EEuropeanNumberTerminator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::EEuropeanNumberSeparator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::EEuropeanNumberSeparator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EEuropeanNumberSeparator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EEuropeanNumberSeparator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EEuropeanNumberSeparator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EEuropeanNumberTerminator, 0, TChar::EOtherNeutral}, // W6 - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - }; - - -static const TBdLevelTest KW7TestsL[] = - { - {TChar::EEuropeanNumber, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 0, TChar::ELeftToRight}, - {TChar::ERightToLeft, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EOtherNeutral, 0, TChar::EOtherNeutral}, - {TChar::ERightToLeftEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 1, TChar::EEuropeanNumber}, - {TChar::ELeftToRightEmbedding, -1, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 2, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 1, TChar::ELeftToRight}, - {TChar::EPopDirectionalFormat, -1, TChar::EOtherNeutral}, - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - }; - -static const TBdLevelTest KW7TestsR[] = - { - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - }; - -static const TBdLevelTest KN12TestsL[] = - { - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::ERightToLeft, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::ERightToLeft, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::ERightToLeft, 0, TChar::ERightToLeft}, - {TChar::ERightToLeft, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::ERightToLeft, 0, TChar::ERightToLeft}, - {TChar::EEuropeanNumber, 0, TChar::EEuropeanNumber}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::ERightToLeft, 0, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::EArabicNumber, 0, TChar::EArabicNumber}, - {TChar::ELeftToRight, 0, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 0, TChar::ELeftToRight}, - }; - -static const TBdLevelTest KN12TestsR[] = - { - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ELeftToRight, 1, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 1, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 1, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 1, TChar::ELeftToRight}, - {TChar::ELeftToRight, 1, TChar::ELeftToRight}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EArabicNumber, 1, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EEuropeanNumber, 1, TChar::EEuropeanNumber}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EEuropeanNumber, 1, TChar::EEuropeanNumber}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EArabicNumber, 1, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EArabicNumber, 1, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ELeftToRight, 1, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ELeftToRight, 1, TChar::ELeftToRight}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - }; - -static const TBdLevelTest KN12TestsRRL[] = - { - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ELeftToRight, 1, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 1, TChar::ELeftToRight} - }; - -static const TBdLevelTest KN12TestsLRR[] = - { - {TChar::EOtherNeutral, 1, TChar::ELeftToRight}, - {TChar::ELeftToRight, 1, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft} - }; - -// Test that pop directional format as the final context does the -// right thing, and that embedded directionalities are taken -// into account. -static const TBdLevelTest KN12TestsLRP[] = - { - {TChar::EOtherNeutral, 1, TChar::ELeftToRight}, - {TChar::ELeftToRightEmbedding, -1, TChar::EOtherNeutral}, - {TChar::ERightToLeft, 2, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 2, TChar::ELeftToRight}, - {TChar::ELeftToRight, 2, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 2, TChar::ELeftToRight} - }; - -static const TBdLevelTest KN12TestsRLP[] = - { - {TChar::EOtherNeutral, 0, TChar::ERightToLeft}, - {TChar::ERightToLeftEmbedding, -1, TChar::EOtherNeutral}, - {TChar::ELeftToRight, 1, TChar::ELeftToRight}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::ERightToLeft, 1, TChar::ERightToLeft}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft} - }; - -static const TBdLevelTest KPreviousCarryOver1Line1[] = - { - {TChar::ERightToLeftArabic, 1, TChar::ERightToLeft}, - }; -static const TBdLevelTest KPreviousCarryOver1Line2[] = - { - {TChar::EEuropeanNumber, 2, TChar::EArabicNumber}, - {TChar::EOtherNeutral, 1, TChar::ERightToLeft}, - {TChar::EEuropeanNumber, 2, TChar::EArabicNumber}, - }; - -void CTBiDi::DoXTests(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - FILL_RUN_ARRAY(KXTests, aRuns, aContext); - aState.HandleBdControls(aContext); - CHECK_RUN_RESULTS(KXTests, aRuns); - } - -void CTBiDi::DoKW123TestsLeft(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ELeftToRight, TChar::ELeftToRight, EFalse); - FILL_RUN_ARRAY(KW123TestsL, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - CHECK_RUN_RESULTS(KW123TestsL, aRuns); - } - -void CTBiDi::DoKW123TestsRight(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ERightToLeft, TChar::ERightToLeft, ETrue); - FILL_RUN_ARRAY(KW123TestsR, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - CHECK_RUN_RESULTS(KW123TestsR, aRuns); - } - -void CTBiDi::DoKW456Tests(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ELeftToRight, TChar::ELeftToRight, EFalse); - FILL_RUN_ARRAY(KW456Tests, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - CHECK_RUN_RESULTS(KW456Tests, aRuns); - - } - - -void CTBiDi::DoKW7TestsLeft(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - - aState = TBidirectionalState(TChar::ELeftToRight, TChar::ELeftToRight, EFalse); - FILL_RUN_ARRAY(KW7TestsL, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - CHECK_RUN_RESULTS(KW7TestsL, aRuns); - - } - -void CTBiDi::DoKW7TestsRight(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ERightToLeft, TChar::ERightToLeft, EFalse); - FILL_RUN_ARRAY(KW7TestsR, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - CHECK_RUN_RESULTS(KW7TestsR, aRuns); - } - -void CTBiDi::DoKN12TestsLeft(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ERightToLeft, TChar::ERightToLeft, EFalse); - SetContext(aContext, TChar::ERightToLeft); - FILL_RUN_ARRAY(KN12TestsL, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - CHECK_RUN_RESULTS(KN12TestsL, aRuns); - - } - -void CTBiDi::DoKN12TestsRight(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ERightToLeft, TChar::ERightToLeft, ETrue); - SetContext(aContext, TChar::ERightToLeft); - FILL_RUN_ARRAY(KN12TestsR, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - CHECK_RUN_RESULTS(KN12TestsR, aRuns); - } - -void CTBiDi::DoKN12TestsRRL(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ERightToLeft, TChar::ERightToLeft, ETrue); - SetContext(aContext, TChar::ELeftToRight); - FILL_RUN_ARRAY(KN12TestsRRL, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - CHECK_RUN_RESULTS(KN12TestsRRL, aRuns); - } - -void CTBiDi::DoKN12TestsLRR(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ELeftToRight, TChar::ELeftToRight, ETrue); - SetContext(aContext, TChar::ERightToLeft); - FILL_RUN_ARRAY(KN12TestsLRR, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - CHECK_RUN_RESULTS(KN12TestsLRR, aRuns); - } - -void CTBiDi::DoKN12TestsLRP(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ELeftToRight, TChar::ELeftToRight, ETrue); - SetContext(aContext, TChar::EPopDirectionalFormat); - FILL_RUN_ARRAY(KN12TestsLRP, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - CHECK_RUN_RESULTS(KN12TestsLRP, aRuns); - } - -void CTBiDi::DoKN12TestsRLP(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ERightToLeft, TChar::ERightToLeft, EFalse); - SetContext(aContext, TChar::EPopDirectionalFormat); - FILL_RUN_ARRAY(KN12TestsRLP, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - CHECK_RUN_RESULTS(KN12TestsRLP, aRuns); - } - -void CTBiDi::DoCarryOverTest1(TBidirectionalState& aState, - TBidirectionalState::TReorderContext& aContext, - TBidirectionalState::TRunInfo* aRuns) - { - aState = TBidirectionalState(TChar::ERightToLeft, TChar::ERightToLeft, EFalse); - SetContext(aContext, TChar::EOtherNeutral); - FILL_RUN_ARRAY(KPreviousCarryOver1Line1, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - aState.ResolveImplicitLevels(aContext); - aState.PrepareForNextLine(aContext); - CHECK_RUN_RESULTS(KPreviousCarryOver1Line1, aRuns); - FILL_RUN_ARRAY(KPreviousCarryOver1Line2, aRuns, aContext); - aState.HandleBdControls(aContext); - aState.ResolveWeakTypesW1W2W3(aContext); - aState.ResolveWeakTypesW4W5W6(aContext); - aState.ResolveWeakTypesW7(aContext); - aState.ResolveNeutralTypes(aContext); - aState.ResolveImplicitLevels(aContext); - aState.PrepareForNextLine(aContext); - CHECK_RUN_RESULTS(KPreviousCarryOver1Line2, aRuns); - } - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0001 - - @SYMDEF DEF105603 - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test conversion of a TBidirectional::TCategory value into it's equivalent TChar::TBdCategory - Test the various phases of the Bidirectional Algorithm implementation (Resolving explicit levels and directions, weak types & neutral types) - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -void CTBiDi::TestTBidirectionalStateInternalsL() - { - INFO_PRINTF1(_L("TBidirectionalState internals")); - TestCatToNumber(1, 0); - TestCatToNumber(2, 1); - TestCatToNumber(3, 1); - TestCatToNumber(4, 2); - TestCatToNumber(6, 2); - TestCatToNumber(8, 3); - TestCatToNumber(9, 3); - TestCatToNumber(0x10, 4); - TestCatToNumber(0x20, 5); - TestCatToNumber(0x40, 6); - TestCatToNumber(0x7F, 6); - TestCatToNumber(0x80, 7); - TestCatToNumber(0x100, 8); - TestCatToNumber(0x200, 9); - TestCatToNumber(0x400, 10); - TestCatToNumber(0x800, 11); - TestCatToNumber(0x1000, 12); - TestCatToNumber(0x2000, 13); - TestCatToNumber(0x4000, 14); - TestCatToNumber(0x8000, 15); - TestCatToNumber(0xFFFF, 15); - TestCatToNumber(0x10000, 16); - TestCatToNumber(0x20000, 17); - TestCatToNumber(0x40000, 18); - TestCatToNumber(0x80000, 19); - TestCatToNumber(0x100000, 20); - TestCatToNumber(0x200000, 21); - TestCatToNumber(0x400000, 22); - TestCatToNumber(0x800000, 23); - TestCatToNumber(0x1000000, 24); - TestCatToNumber(0x2000000, 25); - TestCatToNumber(0x4000000, 26); - TestCatToNumber(0x8000000, 27); - TestCatToNumber(0x10000000, 28); - TestCatToNumber(0x20000000, 29); - TestCatToNumber(0x40000000, 30); - TestCatToNumber(0x7FFFFFFF, 30); - - TBidirectionalState::TRunInfo* runs = new(ELeave) TBidirectionalState::TRunInfo[200]; - CleanupArrayDeletePushL(runs); - TBidirectionalState state(TChar::EOtherNeutral, TChar::EOtherNeutral, EFalse); - TBidirectionalState::TReorderContext context; - context.iRunInfo = runs; - DoXTests(state, context, runs); - DoKW123TestsLeft(state, context, runs); - DoKW123TestsRight(state, context, runs); - DoKW456Tests(state, context, runs); - DoKW7TestsLeft(state, context, runs); - DoKW7TestsRight(state, context, runs); - DoKN12TestsLeft(state, context, runs); - DoKN12TestsRight(state, context, runs); - DoKN12TestsRRL(state, context, runs); - DoKN12TestsLRR(state, context, runs); - DoKN12TestsLRP(state, context, runs); - DoKN12TestsRLP(state, context, runs); - - // Should test "Resolve implicit levels" as well. - //... - - DoCarryOverTest1(state, context, runs); - - CleanupStack::PopAndDestroy(runs); - } - - -/** - * @SYMTestCaseID GRAPHICS-SYSLIB-GDI-CT-0217 - * @SYMTestCaseDesc Test the operation of the run array scratch area - * @SYMTestPriority low - * @SYMTestActions Step 1: Verify that the scratch area is created and destroyed correctly - * and that no memory is leaked. - * Step 2: Verify that the reference counting mechanism operates correctly - * Step 3: Verify that a call to OpenL() will leave correctly if there is - * not enough memory available. - * @SYMTestExpectedResults The test must pass - * @SYMREQ APOS-69QD7N - Change TBidiText to make it useable and easier to port - * code to it - * @SYMDevelopedForRelease Mike - * @SYMTestType CT - * - */ -void CTBiDi::DoTestRRunInfoArrayInternalsL() - { - INFO_PRINTF1(_L("RRunInfoArray Internals...")); - - -#ifdef _DEBUG - const TInt KExpectedHeapCells = 2; -#endif - - - // Step 1: Verify that the scratch area is created and - // destroyed correctly - { - INFO_PRINTF1(_L(" Create/destroy run info scratch area...")); - - __UHEAP_MARK; - RRunInfoArray runInfoArray; - runInfoArray.OpenL(); - __UHEAP_CHECK(KExpectedHeapCells); - runInfoArray.Close(); - __UHEAP_MARKEND; - } - - - // Step 2: Multiple calls to OpenL() and Close() - // - { - INFO_PRINTF1(_L(" Multiple calls to RRunInfoArray::OpenL()...")); - - __UHEAP_MARK; - RRunInfoArray runInfoArray; - runInfoArray.OpenL(); - __UHEAP_CHECK(KExpectedHeapCells); - - // Second call on the same object gets ignored. - runInfoArray.OpenL(); - __UHEAP_CHECK(KExpectedHeapCells); - - - // Creating another one reuses the singleton we created - // earlier. No additional storage gets allocated - RRunInfoArray runInfoArray2; - runInfoArray2.OpenL(); - __UHEAP_CHECK(KExpectedHeapCells); - - - // Shut down can be done in any order - It is the last one - // that should actually free the memory - INFO_PRINTF1(_L(" Multiple calls to RRunInfoArray::Close()...")); - runInfoArray.Close(); - __UHEAP_CHECK(KExpectedHeapCells); - runInfoArray2.Close(); - __UHEAP_CHECK(0); - - - // Try to break it by calling Close() again - runInfoArray.Close(); - __UHEAP_CHECK(0); - - - __UHEAP_MARKEND; - } - - - // Step 3: Check that OpenL() really does leave if not enough - // memory - only valid for debug builds -#ifdef _DEBUG - { - INFO_PRINTF1(_L(" RRunInfoArray::OpenL() fails for OOM...")); - RRunInfoArray runInfoArray; - - // OOM loop - must successfully allocate for 10 consecutive alloc sizes - TInt allocSuccess = 0; - TInt failAlloc = 1; - do - { - __UHEAP_FAILNEXT(failAlloc); - TRAPD(err, runInfoArray.OpenL()); - __UHEAP_RESET; - - if (err == KErrNone) - { - ++allocSuccess; - runInfoArray.Close(); - } - else - { - TEST(KErrNoMemory == err); - allocSuccess = 0; - } - ++failAlloc; - } - while (allocSuccess < 10); - } -#endif - } - - -/** - * - * Check that TBidiText will panic if the NewL call contains - * an invalid max length value. - * - * Note: This function will generate a panic and should therefore - * be called from within a separate worker thread. - * - */ -static TInt TestPanicMaxLengthInvalidL(TAny*) - { - // A max length of 0 or less is invalid. Should cause a panic. - TBidiText* bidi = TBidiText::NewL(-1, 3); - - - return (KErrNone); - } - - -/** - * - * Check that TBidiText will panic if the NewL call contains - * an invalid max lines value - * - * Note: This function will generate a panic and should therefore - * be called from within a separate worker thread. - * - */ -static TInt TestPanicMaxLinesInvalidL(TAny*) - { - // The max number of lines should be 1 or more. Should cause a - // panic. - TBidiText* bidi = TBidiText::NewL(100, -1); - - - return (KErrNone); - } - - -/** - * - * @SYMTestCaseID GRAPHICS-SYSLIB-GDI-CT-0218 - * @SYMTestCaseDesc Test the creation of an empty TBidiText object - * @SYMTestPriority low - * @SYMTestActions Step 1: Verify object creation - * Step 2: Verify that object destruction does not leak memory - * Step 3: Verify that the correct panics are generated if an - * invalid parameter is specified - * @SYMTestExpectedResults The test must pass - * @SYMREQ APOS-69QD7N - Change TBidiText to make it useable and easier to port - * code to it - * @SYMDevelopedForRelease Mike - * @SYMTestType CT - * - */ -void CTBiDi::DoTestTBidiTextNewL() - { - INFO_PRINTF1(_L("TBidiText::NewL()...")); - const TInt KMaxLength = 100; - const TInt KMaxLines = 3; -#ifdef _DEBUG - const TInt KExpectedHeapCells = 1; -#endif - - TBidiText* bidiText = 0; - - // First we're going to test the successful creation. This - // should (hopefully) be how the client app will use the class) - INFO_PRINTF1(_L(" Create an empty object...")); - __UHEAP_MARK; - TRAPD(err, bidiText = TBidiText::NewL(KMaxLength, KMaxLines)); - TEST(KErrNone == err); - __UHEAP_CHECK(KExpectedHeapCells); - - - // Free up the memory and make sure we haven't leaked anything - INFO_PRINTF1(_L(" Delete object...")); - delete bidiText; - bidiText = 0; - __UHEAP_CHECK(0); - __UHEAP_MARKEND; - - - // Now for the invalid parameters. These will generate a panic - // so must be tested in a separate thread. - INFO_PRINTF1(_L(" Invalid max length (will panic!)")); - TEST(EBidiPanic_InvalidReservedMaxLength == TestPanic(TestPanicMaxLengthInvalidL)); - INFO_PRINTF1(_L(" Invalid max lines (will panic!)")); - TEST(EBidiPanic_InvalidMaxline == TestPanic(TestPanicMaxLinesInvalidL)); - } - - -/** - * - * Check that TBidiText will panic if the SetText call is made - * before RRunInfoArray::OpenL(); - * - * Note: This function will generate a panic and should therefore - * be called from within a separate worker thread. - * - */ -TInt CTBiDi::DoTestPanicSetTextL() - { - const TInt KMaxLength = 100; - const TInt KMaxLines = 3; - _LIT(KHello, "Hello World"); - - TBidiText* bidiText = TBidiText::NewL(KMaxLength, KMaxLines); - CleanupStack::PushL(bidiText); - - - // Will cause a KErrDisconnected panic because we have not - // called RRunInfoArray::OpenL() - RRunInfoArray runArray; - bidiText->SetText(KHello, runArray); - - - CleanupStack::PopAndDestroy(bidiText); - return KErrNone; - } - - -/** - * - * Entry point for the DoTestPanicSetTextL test's worker thread - * - * Provides cleanup stack for the test function - * - */ -TInt TestPanicSetTextL(TAny* aData) - { - CTBiDi* theTest = static_cast<CTBiDi*> (aData); - CTrapCleanup* trap = CTrapCleanup::New(); - if (!trap) - return KErrNoMemory; - - - TRAP_IGNORE(theTest->DoTestPanicSetTextL()); - - - delete trap; - return KErrNone; - } - - -/** - * - * @SYMTestCaseID GRAPHICS-SYSLIB-GDI-CT-0219 - * @SYMTestCaseDesc Test the operation of TBidiText::SetText() - * @SYMTestPriority low - * @SYMTestActions Step 1: Verify that RRunInfoArray will panic if OpenL() - * has not been called - * Step 2: Verify that SetText() does change the text and - * string length - * Step 3: Verify that SetText() will return the number of - * characters truncated if the string is too big for - * the object. - * Step 4: Also checks that the text is changed and the - * length is updated. - * Step 5: Verify that RRunInfoArray will panic if it's - * buffer overflows - * @SYMTestExpectedResults The test must pass - * @SYMREQ APOS-69QD7N - Change TBidiText to make it useable and easier to port - * code to it - * @SYMDevelopedForRelease Mike - * @SYMTestType CT - * - */ -void CTBiDi::DoTestTBidiTextSetTextL() - { - INFO_PRINTF1(_L("TBidiText::SetText()...")); - - - INFO_PRINTF1(_L(" Run Array not initialised (will panic!)")); - TEST(EBidiPanic_RunArrayNull == TestPanic(TestPanicSetTextL)); - - - // Rest of the tests will make use of these resources - _LIT(KLine1, "Mary had a little lamb"); - _LIT(KLine2, "and she had a bear"); - _LIT(KLine3, "I've often seen her little lamb"); - const TInt KExpectedDiff = KLine3.iTypeLength - KLine1.iTypeLength; - - - RRunInfoArray runArray; - runArray.OpenL(); - - - INFO_PRINTF1(_L(" Change text...")); - TBidiText* bidiText = TBidiText::NewL(KLine1, 1); - CleanupStack::PushL(bidiText); - TEST(KLine1.iTypeLength == bidiText->Text().Length()); - - - // Will fit. Expect an overflow of 0 characters. - TInt overFlow = bidiText->SetText(KLine2, runArray); - TEST(0 == overFlow); - TEST(KLine2.iTypeLength == bidiText->Text().Length()); - TEST(!bidiText->Text().Compare(KLine2)); - - - // Too long. Expect an overflow for this string. The number of - // characters we have exceeded the buffer by is determined from - // the lengths of the two strings: KLine1 (used to set the initial - // length of the buffer) and KLine3 (used to change the text in the - // buffer - INFO_PRINTF1(_L(" Text overflow...")); - overFlow = bidiText->SetText(KLine3, runArray); - TEST(KExpectedDiff == overFlow); - TEST(KLine1.iTypeLength == bidiText->Text().Length()); - TPtrC line3(KLine3); - TEST(!bidiText->Text().Compare(line3.Left(KLine1.iTypeLength))); - - - // If the Run Info Array is too small, the text will be truncated - // and the excess characters returned to the client application as - // a negative integer. (i.e. can be distinguished from simple - // truncation) - TBidiText* bidiText2 = TBidiText::NewL(512, 1); - CleanupStack::PushL(bidiText2); - - // KManyRuns is too long for RRunArray - _LIT(KManyRuns, "1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a"); - TInt excessChars = bidiText2->SetText(KManyRuns, runArray); - TEST (52 == excessChars); - - - // Tidy up - CleanupStack::PopAndDestroy(bidiText2); - CleanupStack::PopAndDestroy(bidiText); - runArray.Close(); - } - - -/** - * - * @SYMTestCaseID GRAPHICS-SYSLIB-GDI-CT-0220 - * @SYMTestCaseDesc Test the operation of TBidiText::MinimumSize() - * @SYMTestPriority low - * @SYMTestActions Step 1: Verify that MinimumSize() returns the correct - * size in pixels both with and without the aMaxLines - * parameter specified - * Step 2: Verify that MinimumSize() will panic if an invalid - * parameter is specified. - * @SYMTestExpectedResults The test must pass - * @SYMREQ APOS-69QD7N - Change TBidiText to make it useable and easier to port - * code to it - * @SYMDevelopedForRelease Mike - * @SYMTestType CT - * - */ -void CTBiDi::DoTestTBidiTextMinimumSizeL() - { - INFO_PRINTF1(_L("TBidiText::MinimumSize()...")); - - - CFont* testFont = new (ELeave) CTestFont; - CleanupStack::PushL(testFont); - - - // Create and populate the buffer that holds the test data - // for this test. - HBufC* oldTextBufPtr = HBufC::NewLC(KBufferSize); - TextIterator rIterator(KRightToLeftArabic, KRightToLeftArabicLength); - MLineBreaker breaker; - for (TInt i = 0; i < KBufferSize; ++i) - { - TUint s, e; - TText16 ch = rIterator.NextChar(); - if (breaker.LineBreakClass(ch, s, e) == MLineBreaker::EAlLineBreakClass) - oldTextBufPtr->Des().Append(ch); - } - TPtr oldText(oldTextBufPtr->Des()); - - - TBidiText* bidiText = TBidiText::NewL(oldText, 50); - CleanupStack::PushL(bidiText); - - - const TUint KWrapWidth = 400; - const TUint KLineGap = 2; - TSize result = bidiText->MinimumSize(KWrapWidth, *testFont, KLineGap); - - - // For a fixed width font where each character is 10 pixels wide, we - // should expect that we will have 40 characters per line for a wrapping - // width of 400. - const TUint KExpectedWidth = KWrapWidth; - const TUint KExpectedCharsPerLine = KWrapWidth/testFont->CharWidthInPixels('a'); - const TUint KExpectedLines = (oldText.Length() + KExpectedCharsPerLine - 1)/KExpectedCharsPerLine; - const TUint KExpectedHeight = (testFont->HeightInPixels() + KLineGap) * KExpectedLines - KLineGap; - TEST(KExpectedWidth == result.iWidth); - TEST(KExpectedHeight == result.iHeight); - - - // Repeat the above, but this time specify the maximum number of lines - // we're interested in. - const TUint KMaxLines = 14; - result = bidiText->MinimumSize(KWrapWidth, *testFont, KLineGap, KMaxLines); - const TUint KExpectedHeight2 = (testFont->HeightInPixels() + KLineGap) * KMaxLines - KLineGap;; - TEST(KExpectedWidth == result.iWidth); - TEST(KExpectedHeight2 == result.iHeight); - - - CleanupStack::PopAndDestroy(bidiText); - CleanupStack::PopAndDestroy(oldTextBufPtr); - CleanupStack::PopAndDestroy(testFont); - } - - -/** - * - * Check that TBidiText will panic if MinimumSize is called - * with an invalid wrapping width - * - * Note: This function will generate a panic and should therefore - * be called from within a separate worker thread. - * - */ -TInt CTBiDi::DoTestPanicMinimumSizeWidth() - { - CFont* testFont = new (ELeave) CTestFont; - CleanupStack::PushL(testFont); - - _LIT(KDummyText, "Hello World"); - const TInt KMaxLines = 50; - TBidiText* bidiText = TBidiText::NewL(KDummyText, KMaxLines); - CleanupStack::PushL(bidiText); - - - RRunInfoArray runArray; - runArray.OpenL(); - - - // Should panic - KWrappingWidth is negative - const TInt KWrappingWidth = -1; - const TUint KLineGap = 1; - bidiText->MinimumSize(KWrappingWidth, *testFont, KLineGap); - - - CleanupStack::PopAndDestroy(bidiText); - CleanupStack::PopAndDestroy(testFont); - - - return KErrNone; - } - - -/** - * - * Entry point for the DoTestPanicMinimumSizeWidth test's worker - * thread - * - * Provides cleanup stack for the test function - * - */ -static TInt TestPanicMinimumSizeWidth(TAny* aData) - { - CTBiDi* theTest = static_cast<CTBiDi*> (aData); - CTrapCleanup* trap = CTrapCleanup::New(); - if (!trap) - return KErrNoMemory; - - TInt result = KErrNone; - TRAP_IGNORE(result = theTest->DoTestPanicMinimumSizeWidth()); - - delete trap; - return result; - } - - -/** - * - * Check that TBidiText will panic if MinimumSize is called - * with an invalid line gap - * - * Note: This function will generate a panic and should therefore - * be called from within a separate worker thread. - * - */ -TInt CTBiDi::DoTestPanicMinimumSizeLineGap() - { - CFont* testFont = new (ELeave) CTestFont; - CleanupStack::PushL(testFont); - - _LIT(KDummyText, "Hello World"); - const TInt KMaxLines = 50; - TBidiText* bidiText = TBidiText::NewL(KDummyText, KMaxLines); - CleanupStack::PushL(bidiText); - - - RRunInfoArray runArray; - runArray.OpenL(); - - - // Should panic - KLineGap is negative - const TUint KWrappingWidth = 400; - const TInt KLineGap = -1; - bidiText->MinimumSize(KWrappingWidth, *testFont, KLineGap); - - - CleanupStack::PopAndDestroy(bidiText); - CleanupStack::PopAndDestroy(testFont); - - - return KErrNone; - } - - -/** - * - * Entry point for the DoTestPanicMinimumSizeLineGap test's worker - * thread - * - * Provides cleanup stack for the test function - * - */ -static TInt TestPanicMinimumSizeLineGap(TAny* aData) - { - CTBiDi* theTest = static_cast <CTBiDi*> (aData); - CTrapCleanup* trap = CTrapCleanup::New(); - if (!trap) - return KErrNoMemory; - - TInt result = KErrNone;; - TRAP_IGNORE(result = theTest->DoTestPanicMinimumSizeLineGap()); - - delete trap; - return result; - } - - -/** - * - * Check that TBidiText will panic if MinimumSize is called - * with an invalid maximum number of lines - * - * Note: This function will generate a panic and should therefore - * be called from within a separate worker thread. - * - */ -TInt CTBiDi::DoTestPanicMinimumSizeMaxLines() - { - CFont* testFont = new (ELeave) CTestFont; - CleanupStack::PushL(testFont); - - _LIT(KDummyText, "Hello World"); - TBidiText* bidiText = TBidiText::NewL(KDummyText, 50); - CleanupStack::PushL(bidiText); - - - RRunInfoArray runArray; - runArray.OpenL(); - - - // Should panic - KMaxLines is invalid - const TUint KWrappingWidth = 400; - const TUint KLineGap = 1; - const TInt KMaxLines = -2; - bidiText->MinimumSize(KWrappingWidth, *testFont, KLineGap, KMaxLines); - - - CleanupStack::PopAndDestroy(bidiText); - CleanupStack::PopAndDestroy(testFont); - - - return KErrNone; - } - - -/** - * - * Entry point for the DoTestPanicMinimumSizeMaxLines test's worker - * thread - * - * Provides cleanup stack for the test function - * - */ -static TInt TestPanicMinimumSizeMaxLines(TAny* aData) - { - CTBiDi* theTest = static_cast <CTBiDi*> (aData); - CTrapCleanup* trap = CTrapCleanup::New(); - if (!trap) - return KErrNoMemory; - - TInt result = KErrNone;; - TRAP_IGNORE(result = theTest->DoTestPanicMinimumSizeMaxLines()); - - delete trap; - return result; - } - - -/** - * - * Check that TBidiText will panic if LineOfDisplayText is called - * with an invalid number of lines. - * - * Note: This function will generate a panic and should therefore - * be called from within a separate worker thread. - * - */ -TInt CTBiDi::DoTestPanicMinimumNumberOfLinesL() - { - CFont* testFont = new (ELeave) CTestFont; - CleanupStack::PushL(testFont); - - _LIT(KDummyText, "Hello World"); - TBidiText* bidiText = TBidiText::NewL(KDummyText, 50); - CleanupStack::PushL(bidiText); - - TInt width = 400; - bidiText->LineOfDisplayText(-2, width); - - CleanupStack::PopAndDestroy(2,testFont); - - return KErrNone; - } -/** - * - * Entry point for the DoTestPanicMinimumNumberOfLinesL test's worker - * thread - * - * Provides cleanup stack for the test function - * - */ -static TInt TestPanicMinimumNumberOfLines(TAny* aData) - { - CTBiDi* theTest = static_cast <CTBiDi*> (aData); - CTrapCleanup* trap = CTrapCleanup::New(); - if (!trap) - { - return KErrNoMemory; - } - TRAP_IGNORE(theTest->DoTestPanicMinimumNumberOfLinesL()); - - delete trap; - return KErrNone; - } - -/** - * - * Test that TBidiText::MinimumSize() will panic in the following - * circumstances: - * - * o Wrapping width is invalid (i.e. <= 0) - * o Line gap is invalid (i.e. < 0) - * o Max. lines is invalid (i.e. < -1) - * - */ -void CTBiDi::DoTestTBidiTextMinimumSizePanics() - { - INFO_PRINTF1(_L(" Invalid wrapping width (will panic!)")); - TEST(EBidiPanic_InvalidWrappingWidth == TestPanic(TestPanicMinimumSizeWidth)); - - INFO_PRINTF1(_L(" Invalid line gap (will panic!)")); - TEST(EBidiPanic_InvalidLineGap == TestPanic(TestPanicMinimumSizeLineGap)); - - INFO_PRINTF1(_L(" Invalid max lines (will panic!)")); - TEST(EBidiPanic_InvalidMaxline == TestPanic(TestPanicMinimumSizeMaxLines)); - - INFO_PRINTF1(_L(" Invalid minimum number of lines (will panic!)")); - TEST(EBidiPanic_InvalidVisualOrderedTextLength == TestPanic(TestPanicMinimumNumberOfLines)); - } - - -/** - @SYMTestCaseID GRAPHICS-GDI-BiDi-0009 - - @SYMDEF Change Request APOS-69QD7N - - @SYMTestCaseDesc Test TBidirectionalState functionality (Unicode Bidirectional Algorithm impmentation withing SymbianOS) - - @SYMTestPriority High - - @SYMTestStatus Implemented - - @SYMTestActions Test detection of 'overall' directionality of a given language/script - - @SYMTestExpectedResults Confirmation the implementation conforms to the Unicode Birdirection Algorithm standard -*/ -void CTBiDi::TestCrApos69qd7nL() - { - INFO_PRINTF1(_L("CR APOS-69QD7N - TBidiText")); - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CT-0217")); - DoTestRRunInfoArrayInternalsL(); - ((CTBiDiStep*)iStep)->RecordTestResultL(); - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CT-0218")); - DoTestTBidiTextNewL(); - ((CTBiDiStep*)iStep)->RecordTestResultL(); - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CT-0219")); - DoTestTBidiTextSetTextL(); - ((CTBiDiStep*)iStep)->RecordTestResultL(); - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CT-0220")); - DoTestTBidiTextMinimumSizeL(); - ((CTBiDiStep*)iStep)->RecordTestResultL(); - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0009")); - DoTestTBidiTextMinimumSizePanics(); - } - -/** - * - * Test for English Strings inserted into Arabic text with brackets interspersed. - * - */ - -void CTBiDi::INC086135TestL() - { - // originalText: "<ALEF><LAM> ([h]o{m}e(r)):" - const TText* originalText = _S("\x627\x644 ([h]o{m}e(r)):"); - // expected text: ":((h]o{m}e(r]) <LAM><ALEF> - const TText* expectedText = _S(":((h]o{m}e(r]) \x644\x627"); - - TPtrC ptrOriginal(originalText); - TPtrC ptrExpected(expectedText); - - // Construct the bidirectional text - TBidiText* bidiText = TBidiText::NewL(ptrOriginal, 16); - CleanupStack::PushL(bidiText); - - // Call wrap text to prepare the text - CFont* testFont = new(ELeave) CTestFont; - CleanupStack::PushL(testFont); - const TInt KLineLength = 192; - const TInt KNumLines = 1; - bidiText->WrapText(KLineLength , *testFont, NULL, KNumLines); - - // Return the text that would be displayed - TPtrC displayText = bidiText->DisplayText(); - - // Check the result - if(displayText.Compare(ptrExpected) != 0) - { - INFO_PRINTF1(_L("INC086135Test Failed\r\n")); - PrintTestData(_L("Result "), displayText); - PrintTestData(_L("Expected "), ptrExpected); - TEST(EFalse); - } - else - { - INFO_PRINTF1(_L("INC086135Test Passed\r\n")); - } - CleanupStack::PopAndDestroy(2, bidiText); - } - - -CTBiDi::CTBiDi(CTestStep* aStep) : - CTGraphicsBase(aStep) - { - iTestThreadCounter = 0; - INFO_PRINTF1(_L("TBidirectionalState::ReorderText")); - } - - -void CTBiDi::RunTestCaseL(TInt aCurTestCase) - { - ((CTBiDiStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(aCurTestCase) - { - case 1: - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0001")); - TRAPD(err, TestTBidirectionalStateInternalsL()); - TEST(err == KErrNone); - break; - case 2: -/** -@SYMTestCaseID GRAPHICS-GDI-BiDi-0002 -*/ - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0002")); - TRAP(err, TestTBidirectionalState::TestAPIL(this)); - TEST(err == KErrNone); - break; - case 3: - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0003")); - TRAP(err, TestTBidirectionalState::TestReorderTextL(this)); - TEST(err == KErrNone); - break; - case 4: - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0004")); - TRAP(err, TestReorderTextL()); - TEST(err == KErrNone); - break; - case 5: - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0005")); - TRAP(err, TUnicodeExampleTestL()); - TEST(err == KErrNone); - break; - case 6: - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0006")); - INFO_PRINTF1(_L("Script directionality")); - TestScriptDirectionality(); - break; - case 7: - { - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0007")); - INFO_PRINTF1(_L("TBidiText")); - TRAPD(err, TestBidiTextClassL()); - TEST(err == KErrNone); - } - break; - case 8: - { - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0008")); - INFO_PRINTF1(_L("TBidiLogicalToVisual")); - TRAPD(err, TestBidiLogicalToVisualClassL()); - TEST(err == KErrNone); - } - break; - case 9: - { - __UHEAP_MARK; - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0009")); - TRAPD(err, TestCrApos69qd7nL()); - TEST(err == KErrNone); - ((CTBiDiStep*)iStep)->CloseTMSGraphicsStep(); - __UHEAP_MARKEND; - } - break; - case 10: - { -/** -@SYMTestCaseID GRAPHICS-GDI-BiDi-0010 -*/ - ((CTBiDiStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDi-0010")); - INFO_PRINTF1(_L("INC086135Test")); - TRAPD(err, INC086135TestL()); - TEST(err == KErrNone); - break; - } - case 11: - ((CTBiDiStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTBiDiStep*)iStep)->CloseTMSGraphicsStep(); - TestComplete(); - break; - } - ((CTBiDiStep*)iStep)->RecordTestResultL(); - } - -//-------------- -__CONSTRUCT_STEP__(BiDi) diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TBiDi.h --- a/graphicsdeviceinterface/gdi/tgdi/TBiDi.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,280 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __TBIDI_H__ -#define __TBIDI_H__ - -#include "TGraphicsHarness.h" - - -inline TBool IsSupplementary(TUint aChar) -/** -@param aChar The 32-bit code point value of a Unicode character. - -@return True, if aChar is supplementary character; false, otherwise. -*/ - { - return (aChar > 0xFFFF); - } - -inline TBool IsHighSurrogate(TText16 aInt16) -/** -@return True, if aText16 is high surrogate; false, otherwise. -*/ - { - return (aInt16 & 0xFC00) == 0xD800; - } - -inline TBool IsLowSurrogate(TText16 aInt16) -/** -@return True, if aText16 is low surrogate; false, otherwise. -*/ - { - return (aInt16 & 0xFC00) == 0xDC00; - } - -inline TUint JoinSurrogate(TText16 aHighSurrogate, TText16 aLowSurrogate) -/** -Combine a high surrogate and a low surrogate into a supplementary character. - -@return The 32-bit code point value of the generated Unicode supplementary - character. -*/ - { - return ((aHighSurrogate - 0xD7F7) << 10) + aLowSurrogate; - } - -inline TText16 GetHighSurrogate(TUint aChar) -/** -Retrieve the high surrogate of a supplementary character. - -@param aChar The 32-bit code point value of a Unicode character. - -@return High surrogate of aChar, if aChar is a supplementary character; - aChar itself, if aChar is not a supplementary character. -*/ - { - return STATIC_CAST(TText16, 0xD7C0 + (aChar >> 10)); - } - -inline TText16 GetLowSurrogate(TUint aChar) -/** -Retrieve the low surrogate of a supplementary character. - -@param aChar The 32-bit code point value of a Unicode character. - -@return Low surrogate of aChar, if aChar is a supplementary character; - zero, if aChar is not a supplementary character. -*/ - { - return STATIC_CAST(TText16, 0xDC00 | (aChar & 0x3FF)); - } - -void AppendCharacter(HBufC *aDes, TUint aChar); -void AppendCharacter(TBuf<24> *aDes, TUint aChar); - - -// Class to implement a wrapping iterator meant for extracting 16 bit characters -// from a block of text -// This class can handle surrogate pairs correctly. -class TextIterator - { -public: - TextIterator(const TText16* aData, const TInt aLength) : - iData(aData), iLength(aLength), iIndex(0), iWrapped(EFalse), iCombineSurrogatePairs(ETrue) - { - } - TextIterator(const TText16* aData, const TInt aLength, const TInt aIndex) : - iData(aData), iLength(aLength), iIndex(aIndex), iWrapped(EFalse), iCombineSurrogatePairs(ETrue) - { - } - TextIterator(const TText16* aData, const TInt aLength, const TInt aIndex, TBool aCombineSurrogatePairs) : - iData(aData), iLength(aLength), iIndex(aIndex), iWrapped(EFalse), iCombineSurrogatePairs(aCombineSurrogatePairs) - { - } - // Next character from data - wrap pointer to keep within data. - // Get current char, then move the internal pointer forward to next char. - TUint NextChar() - { - TUint ch = Char(); - if (iCombineSurrogatePairs && IsSupplementary(ch)) - iIndex += 2; - else - iIndex += 1; - // wrap - if (iIndex >= iLength) - { - iIndex = 0; - iWrapped = ETrue; - } - return ch; - } - // Move the internal pointer backward, then return the char pointed by internal char. - // Panic if iIndex already = 0. - TUint PreviousChar() - { - ASSERT(iIndex > 0); - iIndex--; - if (iCombineSurrogatePairs && IsLowSurrogate(iData[iIndex])) - { - ASSERT(iIndex > 0); - iIndex--; - ASSERT(IsHighSurrogate(iData[iIndex])); - } - else if (iCombineSurrogatePairs && IsHighSurrogate(iData[iIndex])) - { - ASSERT(EFalse); - } - else - { - // do nothing - } - return Char(); - } - //Reset the iterator to the original values - void Reset() - { - iIndex = 0; - iWrapped = EFalse; - } - void SetIndex(const TInt aIndex) - { - iIndex = aIndex; - iWrapped = EFalse; - } - //Has the iterator wrapped back to the start of the buffer at least once? - TBool Wrapped() const - { - return iWrapped; - } - //Where is the current buffer index? - TInt Index() const - { - return iIndex; - } - //Return pointer to data - const TText16* Ptr() const - { - return iData; - } - //Get length of data - TInt Length() const - { - return iLength; - } - //Get character at current index - TUint Char() const - { - TUint ch = 0xFFFF; - TText16 i16 = iData[iIndex]; - if (iCombineSurrogatePairs && IsHighSurrogate(i16)) - { - ASSERT(iIndex+1 < iLength); - TText16 low = iData[iIndex+1]; - ch = JoinSurrogate(i16, low); - } - else if (iCombineSurrogatePairs && IsLowSurrogate(i16)) - { - ASSERT(EFalse); - } - else - { - ch = i16; - } - return ch; - } - // Fill aBuffer with a char, fill at aIndex, guarded by aMaxIndex (excluded). - // After return, aIndex points to the next position, if aUpdate_aIndex=ETrue. - // aUpdate_aIndex: do you want to update the parameter aIndex? - // aUpdate_iIndex: do you want to update the member variable iIndex? - // aChar: [out] current char - TBool NextCharInto(TDes &aBuffer, TInt &aIndex, TInt aMaxIndex=-1, TBool aUpdate_aIndex=ETrue, TBool aUpdate_iIndex=ETrue, TUint *aChar=NULL) - { - if (aMaxIndex < 0) - aMaxIndex = aBuffer.Length(); - if (aIndex >= aMaxIndex) - return EFalse; - - TUint ch = Char(); - if (iCombineSurrogatePairs && IsSupplementary(ch)) - { - if (aIndex+1 >= aMaxIndex) - return EFalse; - aBuffer[aIndex] = GetHighSurrogate(ch); - aBuffer[aIndex+1] = GetLowSurrogate(ch); - if (aUpdate_aIndex) - aIndex += 2; - } - else - { - aBuffer[aIndex] = (TText16)ch; - if (aUpdate_aIndex) - aIndex++; - } - if (aChar) - *aChar = ch; - if (aUpdate_iIndex) - { - if (iCombineSurrogatePairs && IsSupplementary(ch)) - iIndex += 2; - else - iIndex += 1; - if (iIndex >= iLength) - { - iIndex = 0; - iWrapped = ETrue; - } - } - return ETrue; - } - // Fill aBuffer from aIndex to aMaxIndex (excluded). - // aMaxIndex=-1 means fill to index=aBuffer.Length. - // After return, aIndex points to the next position, if aUpdate_aIndex=ETrue. - TBool FillInto(TDes &aBuffer, TInt &aIndex, TInt aMaxIndex=-1) - { - if (aMaxIndex == -1) - aMaxIndex = aBuffer.Length(); - while (aIndex < aMaxIndex) - { - TBool b = NextCharInto(aBuffer, aIndex, aMaxIndex); - if (!b) - { - return ETrue; - } - } - return ETrue; - } - -private: - const TText16* iData; - TInt iLength; - TInt iIndex; - TBool iWrapped; - TBool iCombineSurrogatePairs; // ETrue = combine surrogates; EFalse = take single surrogate as character - }; - -class CTBiDiStep : public CTGraphicsStep - { -public: - CTBiDiStep(); -protected: - //from CTGraphicsStep - virtual CTGraphicsBase* CreateTestL(); - }; - -_LIT(KTBiDiStep,"TBiDi"); - - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TBiDiDefect.cpp --- a/graphicsdeviceinterface/gdi/tgdi/TBiDiDefect.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,702 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include <biditext.h> -#include <bidi.h> -#include <bidivisual.h> -#include "TGraphicsContext.h" -#include "TBiDiDefect.h" - -class CTBiDiDefect : public CTGraphicsBase - { - -public: - CTBiDiDefect(CTestStep* aStep); - ~CTBiDiDefect(); - -protected: -//from CTGraphicsStep - virtual void RunTestCaseL(TInt aCurTestCase); - -private: - void CreateTestGraphicsContextL(); - - void INC016328L(const TDesC& aTestText); - void INC016665L(); - void INC017825L(); - void INC017974L(); - void INC017991L(); - void DEF021227(); - void INC023337(); - void INC023917(); - void DEF037928(); - void DEF021347L(); - void INC037549L(); - void INC042422L(); - void DEF059214L(); - - void TestDEF021347L(TUint16 aControlCharacter); - void TestDEF043720L(); - - void TestPDEF117110L(); - -private: - TBidirectionalState::TRunInfo* iRunInfoArray; - CTestFont* iTestFont; - TBidiText* iBidiText; - CTestGraphicsDevice* iTestGraphicsDevice; - CTestGraphicsContext* iTestGraphicsContext; - }; - - -CTBiDiDefect::CTBiDiDefect(CTestStep* aStep) : - CTGraphicsBase(aStep), - iRunInfoArray(NULL), - iTestFont(NULL), - iBidiText(NULL), - iTestGraphicsDevice(NULL), - iTestGraphicsContext(NULL) - { - } - -CTBiDiDefect::~CTBiDiDefect() - { - delete iTestGraphicsContext; - delete iTestGraphicsDevice; - delete iBidiText; - delete iTestFont; - delete [] iRunInfoArray; - } - -void CTBiDiDefect::RunTestCaseL(TInt aCurTestCase) - { - ((CTBiDiDefectStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(aCurTestCase) - { - case 1: - { -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0001 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0001")); - TBuf<32> testText(_L(".Test")); - INFO_PRINTF1(_L("INC016328")); - INC016328L(testText); - } - break; - case 2: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0002 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0002")); - INFO_PRINTF1(_L("INC016665")); - INC016665L(); - break; - case 3: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0003 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0003")); - INFO_PRINTF1(_L("INC017825")); - INC017825L(); - break; - case 4: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0004 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0004")); - INFO_PRINTF1(_L("INC017974")); - INC017974L(); - break; - case 5: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0005 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0005")); - INFO_PRINTF1(_L("INC017991")); - INC017991L(); - break; - case 6: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0006 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0006")); - INFO_PRINTF1(_L("DEF021227")); - DEF021227(); - break; - case 7: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0007 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0007")); - INFO_PRINTF1(_L("DEF021347")); - DEF021347L(); - break; - case 8: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0008 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0008")); - INFO_PRINTF1(_L("INC023337")); - INC023337(); - break; - case 9: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0009 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0009")); - INFO_PRINTF1(_L("INC023917")); - INC023917(); - break; - case 10: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0010 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0010")); - INFO_PRINTF1(_L("DEF037928")); - DEF037928(); - break; - case 11: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0011 -*/ - //INC037549 TBidiText crashes if <CR><LF> appear at the end of the text - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0011")); - INFO_PRINTF1(_L("INC037549L")); - INC037549L(); - break; - case 12: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0012 -*/ - //INC042422 when calculated length in BidiCompact.cpp TRunInfoCompact::Reorder < 0 - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0012")); - INFO_PRINTF1(_L("INC042422L")); - INC042422L(); - break; - case 13: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0013 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0013")); - INFO_PRINTF1(_L("DEF043720")); - TestDEF043720L(); - break; - case 14: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0014 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0014")); - INFO_PRINTF1(_L("DEF059214: Erroneous caret cursor movements")); - DEF059214L(); - break; - case 15: -/** - @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0015 -*/ - ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0015")); - INFO_PRINTF1(_L("PDEF117110")); - TestPDEF117110L(); - break; - case 16: - ((CTBiDiDefectStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTBiDiDefectStep*)iStep)->CloseTMSGraphicsStep(); - TestComplete(); - break; - } - ((CTBiDiDefectStep*)iStep)->RecordTestResultL(); - } - -void CTBiDiDefect::CreateTestGraphicsContextL() - { - delete iTestGraphicsContext; - iTestGraphicsContext = NULL; - delete iTestGraphicsDevice; - iTestGraphicsDevice = NULL; - - TSize windowSize(400, 400); - iTestGraphicsDevice = CTestGraphicsDevice::NewL(windowSize); - CGraphicsContext* tContext = NULL; - TEST(iTestGraphicsDevice->CreateContext(tContext) == KErrNone); - iTestGraphicsContext = static_cast<CTestGraphicsContext*>(tContext); - } - -//TBidiText crashes if the first character of the text is '.'. -void CTBiDiDefect::INC016328L(const TDesC& aTestText) - { - TInt arraySize = TBidirectionalState::GenerateBdRunArray(aTestText.Ptr(), aTestText.Length(), 0, 0); - iRunInfoArray = new (ELeave) TBidirectionalState::TRunInfo[arraySize]; - TBidirectionalState::GenerateBdRunArray(aTestText.Ptr(), aTestText.Length(), iRunInfoArray, arraySize); - TBidirectionalState state; - state.ReorderLine(iRunInfoArray, arraySize, ETrue, ETrue, EFalse, TChar::EOtherNeutral, TChar::EOtherNeutral); - TEST(iRunInfoArray->iLength > 0); - } - -//Truncation after space character in Bidirectional text classes. -//Actually it doesn't prove missing space character but proves -//truncation at the middle of "text" word - yet another defect. -void CTBiDiDefect::INC016665L() - { - iTestFont = new (ELeave) CTestFont; - iBidiText = TBidiText::NewL(_L("Truncated text"), 1); - iBidiText->WrapText(110, *iTestFont, NULL);//"Truncated " and "text" - TEST(iBidiText->DisplayText().Length() == 10); - TEST(iBidiText->DisplayText()[9] == 0x2026); - delete (iBidiText); - - iBidiText = TBidiText::NewL(_L("Truncated text"), 1); - iBidiText->WrapText(110, *iTestFont, NULL);//"Truncated " and "text" - TEST(iBidiText->DisplayText().Length() == 10); - TEST(iBidiText->DisplayText()[9] == 0x2026); - } - -//TBidiText crashes with length 0 descriptor. -void CTBiDiDefect::INC017825L() - { - delete iTestGraphicsContext; - iTestGraphicsContext = NULL; - CreateTestGraphicsContextL(); - - delete iTestFont; - iTestFont = NULL; - iTestFont = new (ELeave) CTestFont; - - delete iBidiText; - iBidiText = NULL; - iBidiText = TBidiText::NewL(KNullDesC(), 1); - iBidiText->WrapText(100, *iTestFont, NULL); - - iBidiText->DrawText(*iTestGraphicsContext, TPoint(0, 20), 20, CGraphicsContext::ERight); - } - -//BidiText does not show 0x062A character correctly if it is a first character. -void CTBiDiDefect::INC017974L() - { - _LIT(KTextWithLatinLettersFirstArabicLetter, "\x062A abcdef"); - - delete iTestFont; - iTestFont = NULL; - iTestFont = new (ELeave) CTestFont; - - delete iBidiText; - iBidiText = NULL; - iBidiText = TBidiText::NewL(KTextWithLatinLettersFirstArabicLetter, 1); - iBidiText->WrapText(100, *iTestFont, NULL); - const TText* text = iBidiText->DisplayText().Ptr(); - TEST(text[7] == 0x062A);//the arabic character should be the first at the end. - } - -//TBidiText::DrawText draws out of the area if alignment is right. -void CTBiDiDefect::INC017991L() - { - delete iTestGraphicsContext; - iTestGraphicsContext = NULL; - CreateTestGraphicsContextL(); - - _LIT(KTextWithLatinLetters, "abc def ghijk lmnop qrstuvw xyz 12.34."); - const TInt KTextWidth = 200; - - delete iTestFont; - iTestFont = NULL; - iTestFont = new (ELeave) CTestFont; - - delete iBidiText; - iBidiText = NULL; - iBidiText = TBidiText::NewL(KTextWithLatinLetters, 2); - iBidiText->WrapText(KTextWidth, *iTestFont, NULL); - - iBidiText->DrawText(*iTestGraphicsContext, TPoint(0, 20), 20, CGraphicsContext::ERight); - const TTestGCDisplayLine& line1 = iTestGraphicsContext->DisplayLine(0); - const TDesC& text1 = line1.iLineData; - TInt width1 = iTestFont->TextWidthInPixels(text1); - TEST((width1 + line1.iLinePos.iX) <= KTextWidth); - const TTestGCDisplayLine& line2 = iTestGraphicsContext->DisplayLine(1); - const TDesC& text2 = line2.iLineData; - TInt width2 = iTestFont->TextWidthInPixels(text2); - TEST((width2 + line2.iLinePos.iX) <= KTextWidth); - } - -//TBidiLogicalToVisual seems to lose characters. -void CTBiDiDefect::DEF021227() - { - _LIT(KTestText, "Waitnote + D prompt "); -// _LIT(KTestText, "Waitnote H D prompt "); - TBuf<100> visualText; - visualText.Fill(0xCDCD); - TBidirectionalState::TRunInfo runArray[6]; - - TBidiLogicalToVisual bidiConverter(KTestText, EFalse, runArray, - sizeof(runArray)/sizeof(runArray[0])); - bidiConverter.Reorder(); - TDesC des = KTestText; - bidiConverter.GetVisualLine(visualText, 0, des.Length() - 1, 0xFFFF); - TInt len = visualText.Length(); - TEST((des.Length() - 1) == len); - } - -//DrawText should not draw control codes (particularly Bidirectional ones) -void CTBiDiDefect::DEF021347L() - { - TestDEF021347L(0x200C); - TestDEF021347L(0x200D); - TestDEF021347L(0x200E); - TestDEF021347L(0x200F); - TestDEF021347L(0x202A); - TestDEF021347L(0x202B); - TestDEF021347L(0x202C); - TestDEF021347L(0x202D); - TestDEF021347L(0x202E); - // Tested in TGLYPHSEL now following rewrite. - //TestDEF021347L(0xFFFF); - } - -void CTBiDiDefect::TestDEF021347L(TUint16 aControlCharacter) - { - const TInt KTestTextLen = 5; - TBuf<100> testText(KTestTextLen); - testText[0] = 'a'; - testText[1] = 'b'; - testText[2] = aControlCharacter; - testText[3] = 'c'; - testText[4] = 'd'; - - delete iTestFont; - iTestFont = NULL; - iTestFont = new (ELeave) CTestFont; - - CFont::TPositionParam param; - param.iDirection = 0; - param.iFlags = 1; - param.iText.Set(testText); - param.iPosInText = 0; - param.iPen.iX = 0; - param.iPen.iY = 0; - param.iPosInText = 2; //testText[2] = aControlCharacter - TBool r = iTestFont->GetCharacterPosition(param); - - TEST(r && param.iPen.iX == 0 && param.iOutputGlyphs == 0); - } - -//TBidiLogicalToVisual::GetVisualLine() panics when aEnd == 0 -void CTBiDiDefect::INC023337() - { - _LIT(KTestText, ""); - TBuf<100> visualText; - visualText.Fill(0xCDCD); - TBidirectionalState::TRunInfo runArray[6]; - TBidiLogicalToVisual bidiConverter(KTestText, EFalse, runArray, sizeof(runArray)/sizeof(runArray[0])); - bidiConverter.Reorder(); - - TDesC des = KTestText; - const TUint KEmptyChar = TUint(0xFFFF); - //The next statement will panics, if INC023337 is not fixed. - bidiConverter.GetVisualLine(visualText, 0, des.Length(), KEmptyChar); - } - -//TBidiLogicalToVisual indexes over the given text. -void CTBiDiDefect::INC023917() - { - const TInt dest_buf_len = 10; - TBidirectionalState::TRunInfo runInfoArray[dest_buf_len]; - const TInt src_buf_len = 4; - TBuf<src_buf_len> logical; - logical.Fill(0x0639, src_buf_len); - - _LIT(KArabicWord, "\x0631\x0641\x0636"); - logical = KArabicWord; - - TBidiLogicalToVisual bidiConverter(logical, runInfoArray, sizeof(runInfoArray)/sizeof(runInfoArray[0])); - bidiConverter.Reorder(); - - TBuf<dest_buf_len> visual; - bidiConverter.GetVisualLine(visual, 0, logical.Length(), 0xFFFF); - - TEST(visual[0] == 0x0636); - } - -// DEF037928 - TBidiLogicalToVisual::GetVisualLine does not work correctly for 0 length strings -void CTBiDiDefect::DEF037928() - { - // Zero length string for testing - _LIT(KTestText, ""); - TBuf<100> visualText; - visualText.Fill(0xCDCD); - visualText.SetMax(); - - TBidirectionalState::TRunInfo runArray[6]; - TBidiLogicalToVisual bidiConverter(KTestText, EFalse, runArray, - sizeof(runArray)/sizeof(runArray[0])); - bidiConverter.Reorder(); - - bidiConverter.GetVisualLine(visualText, 0, 1, 0xFFFF); - TEST( visualText.Length() == 0); - } - - -// INC037549 - TBidiText crashes if <CR><LF> appear at the end of the text -void CTBiDiDefect::INC037549L() - { - // This crash occured when the final character is <cr> - // and following memory location is <lf> - // To test this testString has a length of 5, but sPtr has length 4 - _LIT( testString, "123\r\n" ) ; - TBuf<5> string( testString ) ; - TPtrC sPtr( string.Ptr(), 4 ) ; - TBidiText* bText = TBidiText::NewL( sPtr, 1, TBidiText::ELeftToRight ) ; - - delete bText; - } - -// INC042422 - when calculated length in BidiCompact.cpp TRunInfoCompact::Reorder < 0 -// -// This defect causes an extra blank line to be added when text contains \r\n -// This was caused by a miscalculation in Biditext.cpp SizeLineBreak(). -// this test case is modified due to change of TBidiText::DoWrapText for fixing PDEF117110 -void CTBiDiDefect::INC042422L() - { - _LIT( testString, "123\r\n" ) ; - TBidiText* bText = TBidiText::NewL( testString, 1, TBidiText::ELeftToRight ) ; - bText->WrapText(100,*iTestFont,0); - TPtrC text = bText->DisplayText(); - - // The defect caused text to contain an extra blank line - // So the length was 5 ( text contained:1,2,3, 0x2028, 0x2026) - // when the correct value is 4 (text should contain: 1,2,3, 0x2026) - // Note: Due to fix for PDEF117109, the correct value is 3 now (text contains: 1,2,3) - TEST(text.Length() == 3); - TEST(text[0] == '1'); - TEST(text[1] == '2'); - TEST(text[2] == '3'); - - delete bText; - } - -//DEF043720 - Assert fails in TBiDiText wrapping when more than one \n is present in the text -void CTBiDiDefect::TestDEF043720L() - { - delete iTestFont; - iTestFont = NULL; - iTestFont = new (ELeave) CTestFont; - - delete iBidiText; - iBidiText = NULL; - iBidiText = TBidiText::NewL(_L("\n\nAB\n\n\nCD\n"),10); - iBidiText->WrapText(10,*iTestFont,0); - - //After wrapping text should look like "\x2028\x2028A\x2028B\x2028\x2028\x2028C\x2028D" - //where \x2028 is the line separator - TPtrC afterwrap(iBidiText->DisplayText()); - TEST(afterwrap.Length()==11); - TEST(afterwrap[0]==0x2028); - TEST(afterwrap[1]==0x2028); - TEST(afterwrap[3]==0x2028); - TEST(afterwrap[5]==0x2028); - TEST(afterwrap[6]==0x2028); - TEST(afterwrap[7]==0x2028); - TEST(afterwrap[9]==0x2028); - - INFO_PRINTF1(iBidiText->DisplayText()); - - delete iBidiText; - iBidiText = NULL; - delete iTestFont; - iTestFont = NULL; - } - -void CTBiDiDefect::DEF059214L() - { - TBidirectionalState::TRunInfo runs[4]; - TBidirectionalState bs; - TBool ambig; - - // entirely left to right paragraph is not ambiguous - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ELeftToRight; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::ELeftToRight, - TChar::ELeftToRight, ambig); - - // entirely right to left paragraph is not ambiguous - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ERightToLeft; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::ERightToLeft, - TChar::ERightToLeft, ambig); - TEST(!ambig); - - // right to left portion within left to right paragraph is ambiguous - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ERightToLeft; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::ERightToLeft, - TChar::ERightToLeft, ambig); - TEST(ambig && ambig != 3000); - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ERightToLeft; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::EOtherNeutral, - TChar::ERightToLeft, ambig); - TEST(ambig && ambig != 3000); - - // left to right portion within right to left paragraph is ambiguous - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ELeftToRight; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::ELeftToRight, - TChar::ELeftToRight, ambig); - TEST(ambig && ambig != 3000); - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ELeftToRight; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::EOtherNeutral, - TChar::ELeftToRight, ambig); - TEST(ambig && ambig != 3000); - - // right to left following on from left to right paragraph is ambiguous - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ELeftToRight; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::ERightToLeft, - TChar::ERightToLeft, ambig); - TEST(ambig && ambig != 3000); - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ELeftToRight; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::EOtherNeutral, - TChar::ERightToLeft, ambig); - TEST(ambig && ambig != 3000); - - // left to right following on from right to left paragraph is ambiguous - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ERightToLeft; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::ELeftToRight, - TChar::ELeftToRight, ambig); - TEST(ambig && ambig != 3000); - ambig = 3000; - bs.Reset(); - runs[0].iCategory = TChar::ERightToLeft; - runs[0].iStart = 0; - runs[0].iLength = 10; - bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::EOtherNeutral, - TChar::ELeftToRight, ambig); - TEST(ambig && ambig != 3000); - } - -void CTBiDiDefect::TestPDEF117110L() - { - TPtrC wrappedText; - TPtrC expectedText; - - delete iTestFont; - iTestFont = new (ELeave) CTestFont; - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test Text\n"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test Text")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test Text\r"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test Text")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test Text\r\n"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test Text")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test Text\x2028"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test Text")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test Text\n\x2028"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 2); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test Text\x2028")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test\nText\n"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 2); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test\x2028Text")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test\nText\n"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test\x2026")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("TestText\n"), 5); - iBidiText->WrapText(45, *iTestFont, NULL, 2); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test\x2028Text")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = TBidiText::NewL(_L("Test Text"), 5); - iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); - wrappedText.Set(iBidiText->DisplayText()); - expectedText.Set(_L("Test Text")); - TEST(expectedText.Compare(wrappedText) == 0); - - delete iBidiText; - iBidiText = NULL; - delete iTestFont; - iTestFont = NULL; - } - -//-------------- -CTBiDiDefectStep::CTBiDiDefectStep() - { - SetTestStepName(KTBiDiDefectStep); - } - -CTGraphicsBase* CTBiDiDefectStep::CreateTestL() - { - return new (ELeave) CTBiDiDefect(this); - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TBiDiDefect.h --- a/graphicsdeviceinterface/gdi/tgdi/TBiDiDefect.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __TBIDIDEFECT_H_ -#define __TBIDIDEFECT_H_ - -#include <gdi.h> -#include "TGraphicsHarness.h" - - -class CTBiDiDefectStep : public CTGraphicsStep - { -public: - CTBiDiDefectStep(); -protected: - //from CTGraphicsStep - virtual CTGraphicsBase* CreateTestL(); - }; - -_LIT(KTBiDiDefectStep,"TBiDiDefect"); - - - -#endif //__TBIDIDEFECT_H_ - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TGdiServer.cpp --- a/graphicsdeviceinterface/gdi/tgdi/TGdiServer.cpp Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/tgdi/TGdiServer.cpp Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -22,10 +22,6 @@ #include "TGdiServer.h" #include "TRGB.H" #include "TTYPES.H" -#include "TBiDi.h" -#include "TBiDiDefect.h" -#include "TLineBreak.h" -#include "TGlyphSel.h" /* Path to the script z:\GraphicsTest\gditest.script @@ -113,14 +109,5 @@ testStep = new CTRgbStep(); else if(aStepName == KTTypesStep) testStep = new CTTypesStep(); - else if(aStepName == KTBiDiStep) - testStep = new CTBiDiStep(); - else if(aStepName == KTBiDiDefectStep) - testStep = new CTBiDiDefectStep(); - else if(aStepName == KTLineBreakStep) - testStep = new CTLineBreakStep(); - else if(aStepName == KTGlyphSelectionStep) - testStep = new CTGlyphSelectionStep(); - return testStep; } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TGlyphSel.cpp --- a/graphicsdeviceinterface/gdi/tgdi/TGlyphSel.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8636 +0,0 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// This is a unit test module which defines the test code that -// exercise CFont::GetCharacterPosition() functionality. -// -// - -/** - @file - @test - @internalComponent -*/ - - -// -// -- INCLUDE FILES --------------------------------------------------------- -// - - -#include <e32std.h> -#include <biditext.h> -#include <bidi.h> -#include <linebreak.h> -#include <bidivisual.h> -#include "GlyphSel.h" -#include "TGlyphSel.h" -#include <graphics/openfontconstants.h> -#include <graphics/openfontrasterizer.h> - - -// -// -- CONSTANTS ------------------------------------------------------------- -// - -/** - This define when set introduces a delay to start up to allow Glowcode to - be set up to collect statistics. -*/ -//#define _GLOWCODE_LAUNCH_DELAY 1 - - -/** RTest object for unit test output */ -//RTest TEST(_L("TGlyphSel - CFont Glyph Selection")); - -/** Thread name for test cases involving a new thread. */ -_LIT(KThread2NameFirst, "GlyphSelPanicTest_First"); -_LIT(KThread2NameSecond, "GlyphSelPanicTest_Second"); - -/*Beginning of Indic language font file constants declaration*/ - -_LIT16(KTestHindiFontFile, "C:\\TNR_Dev_OT.ttf"); -_LIT16(KTestHindiFontFaceName, "Devanagari OT Eval"); - -//_LIT16(KTestIndicFontFile, "C:\\s60ssb_v435.ttf"); -_LIT16(KTestIndicFontFile, "C:\\s60ssb_v500.ttf"); -_LIT16(KTestIndicFontFaceName, "Series 60 Sans"); - -//_LIT16(KTestTeluguFontFile, "C:\\s60ssb_v500.ttf"); -//_LIT16(KTestTeluguFontFaceName, "Series 60 Sans"); - -_LIT16(KTestGB18030FontFile, "C:\\TestExtB.ttf"); -_LIT16(KTestGB18030FontFaceName, "Test Font for CJK ExtB"); - -/*End of Indic language font file constants declaration*/ -// -// -- THAI TEST DATA -------------------------------------------------------- -// - - -/** - An array of Thai characters each of which is individually passed into - GetCharacterPosition() for testing. -*/ -LOCAL_D const TText16 Thai_SimpleChars[] = { - // Digits test 0..9 - 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, - 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, - - // Consonants - 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, - - // Independent vowels - 0x0E30, 0x0E32, // 0x0E33, Sara Am decomposed, not simple - 0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, - - // Independent signs - 0x0E2F, 0x0E3F, 0x0E45, 0x0E46, 0x0E4F, 0x0E5A, 0x0E5B, - - // Array end - 0xFFFF, - }; - -/** - Data structure used to hold the in and out data of one invoke - of the CFont::GetCharacterPosition() API. -*/ -struct TTestInput_PositionParam - { - TInt iTextLen; - TText16 iText[4]; - TInt iPosInText; - TInt oPosInText; - TInt oOutputLen; - TText16 oOutput[CFont::TPositionParam::EMaxOutputGlyphs]; - }; - -/** - This array of structs is used in the test routine - CTGlyphSelection::TestThai_ValidGlyphClusters() for verifying - GetCharacterPosition() constructs Thai PUA glyph clusters correctly. -*/ -LOCAL_D const TTestInput_PositionParam Thai_ValidGlyphClusters[] = { -// --INPUT---------------- --OUTPUT---------------------- - -// TEST A1..A8 handled in Thai_SimpleChars table. - -//0.TEST A9 - Decomposed SARA AM - { 2, {0x0E01, 0x0E33}, 1, 2, 1, {0x0E33}}, - { 2, {0x0E1B, 0x0E33}, 1, 2, 2, {0xF711, 0x0E32}}, - { 2, {0x0E41, 0x0E33}, 1, 2, 2, {KUnicodeDottedCircle, 0x0E33}}, - { 1, {0x0E33}, 0, 1, 2, {KUnicodeDottedCircle, 0x0E33}}, - { 3, {0x0E19, 0x0E49, 0x0E33}, 0, 3, 4, {0x0E19, 0x0E4D, 0x0E49, 0x0E32}}, - -//5.TEST A9.1 - SARA AM exlcuded from cluster when vowel present - { 3, {0x0E19, 0x0E35, 0x0E33}, 0, 2, 2, {0x0E19, 0x0E35}}, - { 3, {0x0E19, 0x0E39, 0x0E33}, 0, 2, 2, {0x0E19, 0x0E39}}, - { 4, {0x0E19, 0x0E35, 0x0E48, 0x0E33}, 0, 3, 3, {0x0E19, 0x0E35, 0x0E48}}, - -//8.TEST B1 - Normal right aligned vowel/sign above short consonant - { 2, {0x0E04, 0x0E35}, 0, 2, 2, {0x0E04, 0x0E35}}, - { 2, {0x0E01, 0x0E4D}, 0, 2, 2, {0x0E01, 0x0E4D}}, - -//10.TEST B2 - Left aligned vowel/sign above tall consonant - { 2, {0x0E1B, 0x0E34}, 0, 2, 2, {0x0E1B, 0xF701}}, - { 2, {0x0E1D, 0x0E35}, 0, 2, 2, {0x0E1D, 0xF702}}, - { 2, {0x0E1F, 0x0E36}, 0, 2, 2, {0x0E1F, 0xF703}}, - { 2, {0x0E2C, 0x0E37}, 0, 2, 2, {0x0E2C, 0xF704}}, - { 2, {0x0E1B, 0x0E31}, 0, 2, 2, {0x0E1B, 0xF710}}, - { 2, {0x0E1D, 0x0E4D}, 0, 2, 2, {0x0E1D, 0xF711}}, - { 2, {0x0E1F, 0x0E47}, 0, 2, 2, {0x0E1F, 0xF712}}, - -//17.TEST B3 - Normal right aligned vowel below short consonant - { 2, {0x0E2C, 0x0E3A}, 0, 2, 2, {0x0E2C, 0x0E3A}}, - { 2, {0x0E0C, 0x0E38}, 0, 2, 2, {0x0E0C, 0x0E38}}, - -//19.TEST B4 - Vowel below consonant with joint decender - { 2, {0x0E0E, 0x0E38}, 0, 2, 2, {0x0E0E, 0xF718}}, - { 2, {0x0E0F, 0x0E39}, 0, 2, 2, {0x0E0F, 0xF719}}, - { 2, {0x0E0F, 0x0E3A}, 0, 2, 2, {0x0E0F, 0xF71A}}, - { 2, {0x0E24, 0x0E38}, 0, 2, 2, {0x0E24, 0xF718}}, - { 2, {0x0E26, 0x0E39}, 0, 2, 2, {0x0E26, 0xF719}}, - -//24.TEST B5 - Vowel below consonant with disjoint decender - { 2, {0x0E10, 0x0E38}, 0, 2, 2, {0xF700, 0x0E38}}, - { 2, {0x0E0D, 0x0E39}, 0, 2, 2, {0xF70F, 0x0E39}}, - { 2, {0x0E10, 0x0E3A}, 0, 2, 2, {0xF700, 0x0E3A}}, - -//27.TEST C1 - Tone mark/sign above short consonant - { 2, {0x0E14, 0x0E48}, 0, 2, 2, {0x0E14, 0xF70A}}, - { 2, {0x0E16, 0x0E49}, 0, 2, 2, {0x0E16, 0xF70B}}, - { 2, {0x0E17, 0x0E4A}, 0, 2, 2, {0x0E17, 0xF70C}}, - { 2, {0x0E19, 0x0E4B}, 0, 2, 2, {0x0E19, 0xF70D}}, - { 2, {0x0E20, 0x0E4C}, 0, 2, 2, {0x0E20, 0xF70E}}, - // with lower vowel char in between the two? - { 3, {0x0E16, 0x0E39, 0x0E49}, 0, 3, 3, {0x0E16, 0x0E39, 0xF70B}}, - -//33.TEST C2 - Upper Vowel & tone makr/sign above short consonant - { 3, {0x0E01, 0x0E34, 0x0E48}, 0, 3, 3, {0x0E01, 0x0E34, 0x0E48}}, - { 3, {0x0E02, 0x0E35, 0x0E49}, 0, 3, 3, {0x0E02, 0x0E35, 0x0E49}}, - { 3, {0x0E04, 0x0E36, 0x0E4A}, 0, 3, 3, {0x0E04, 0x0E36, 0x0E4A}}, - { 3, {0x0E08, 0x0E37, 0x0E4B}, 0, 3, 3, {0x0E08, 0x0E37, 0x0E4B}}, - { 3, {0x0E09, 0x0E34, 0x0E4C}, 0, 3, 3, {0x0E09, 0x0E34, 0x0E4C}}, - { 3, {0x0E11, 0x0E47, 0x0E4C}, 0, 2, 2, {0x0E11, 0x0E47}}, - -//39.TEST C2.1 - Lower Vowel & tone makr/sign above short consonant - { 3, {0x0E01, 0x0E38, 0x0E48}, 0, 3, 3, {0x0E01, 0x0E38, 0xF70A}}, - { 3, {0x0E02, 0x0E39, 0x0E49}, 0, 3, 3, {0x0E02, 0x0E39, 0xF70B}}, - { 3, {0x0E04, 0x0E38, 0x0E4A}, 0, 3, 3, {0x0E04, 0x0E38, 0xF70C}}, - { 3, {0x0E08, 0x0E39, 0x0E4B}, 0, 3, 3, {0x0E08, 0x0E39, 0xF70D}}, - { 3, {0x0E09, 0x0E38, 0x0E4C}, 0, 3, 3, {0x0E09, 0x0E38, 0xF70E}}, - { 3, {0x0E09, 0x0E39, 0x0E4C}, 0, 2, 2, {0x0E09, 0x0E39}}, - -//45.TEST C3 - Left aligned tone mark/sign above tall consonant - { 2, {0x0E1B, 0x0E48}, 0, 2, 2, {0x0E1B, 0xF705}}, - { 2, {0x0E1D, 0x0E49}, 0, 2, 2, {0x0E1D, 0xF706}}, - { 2, {0x0E1F, 0x0E4A}, 0, 2, 2, {0x0E1F, 0xF707}}, - { 2, {0x0E2C, 0x0E4B}, 0, 2, 2, {0x0E2C, 0xF708}}, - { 2, {0x0E1B, 0x0E4C}, 0, 2, 2, {0x0E1B, 0xF709}}, - -//50.TEST C4 - Left aligned vowel & tone mark/sign above tall consonant - { 3, {0x0E1B, 0x0E34, 0x0E48}, 0, 3, 3, {0x0E1B, 0xF701, 0xF713}}, - { 3, {0x0E1D, 0x0E35, 0x0E49}, 0, 3, 3, {0x0E1D, 0xF702, 0xF714}}, - { 3, {0x0E1F, 0x0E36, 0x0E4A}, 0, 3, 3, {0x0E1F, 0xF703, 0xF715}}, - { 3, {0x0E2C, 0x0E37, 0x0E4B}, 0, 3, 3, {0x0E2C, 0xF704, 0xF716}}, - { 3, {0x0E1B, 0x0E34, 0x0E4C}, 0, 3, 3, {0x0E1B, 0xF701, 0xF717}}, - -//55. INC043221 - Tone marks are not readable with tall consonants and Sara Am -// Test that the nikhahit part of a sara am causes the same effects as top -// vowels. -// Test 4 already does one suitable test. - { 3, {0x0E1B, 0x0E49, 0x0E33}, 0, 3, 4, {0x0E1B, 0xF711, 0xF714, 0x0E32}}, - -//56. INC127996 - Tone mark/diacritic displayed incorrectly when combinded -// with long tail consonanat and below vowel. Test that in context -// 'short consonanat + below vowel + Tone Mark/diacritic', mark/diacritic -// can be replaced by corresonding PUA code. - { 3, {0x0E0D, 0x0E39, 0x0E49}, 0, 3, 3, {0xF70F, 0x0E39, 0xF70B}}, - { 3, {0x0E0E, 0x0E38, 0x0E48}, 0, 3, 3, {0x0E0E, 0xF718, 0xF70A}}, - { 3, {0x0E0F, 0x0E39, 0x0E4A}, 0, 3, 3, {0x0E0F, 0xF719, 0xF70C}}, - { 3, {0x0E26, 0x0E39, 0x0E4B}, 0, 3, 3, {0x0E26, 0xF719, 0xF70D}}, - { 3, {0x0E24, 0x0E38, 0x0E49}, 0, 3, 3, {0x0E24, 0xF718, 0xF70B}}, - { 3, {0x0E10, 0x0E38, 0x0E4C}, 0, 3, 3, {0xF700, 0x0E38, 0xF70E}}, - -//62.TABLE END - { -1, {0}, -1, -1, 0, {0}} - }; - -/** - Data structure used to hold the in and out data of two invokes - of the CFont::GetCharacterPosition() API. -*/ -struct TTestInput_Invoke - { - TInt iPosInText; - TInt oPosInText; - TInt oOutputLen; - TText16 oOutput[CFont::TPositionParam::EMaxOutputGlyphs]; - }; - -/** - Data structure used to hold the in and out data of two invokes - of the CFont::GetCharacterPosition() API. -*/ -struct TTestInput_PositionParam2 - { - TInt iTextLen; - TText16 iText[4]; - TTestInput_Invoke oOut[2]; - }; - -/** - Data structure used to hold the in and out data of two invokes - of the CFont::GetCharacterPosition() API. -*/ -struct TTestInput_PositionParam6 - { - TInt iTextLen; - TText16 iText[6]; - TTestInput_Invoke oOut[6]; - }; - -// {-1, 1, 1, {0} } } indicate end of sequence -// The most significant bit of glyph index is trimmed off when stored -LOCAL_D const TTestInput_PositionParam6 Indic_GurmukhiDigit[] = { - { 1, {0x0a66}, { {0, 1, 1, {0x12fe} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a67}, { {0, 1, 1, {0x12ff} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a68}, { {0, 1, 1, {0x1300} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a69}, { {0, 1, 1, {0x1301} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a6a}, { {0, 1, 1, {0x1302} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a6b}, { {0, 1, 1, {0x1303} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a6c}, { {0, 1, 1, {0x1304} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a6d}, { {0, 1, 1, {0x1305} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a6e}, { {0, 1, 1, {0x1306} }, {-1, 1, 1, {0} } } }, - { 1, {0x0a6f}, { {0, 1, 1, {0x1307} }, {-1, 1, 1, {0} } } }, - // Consonant + digit - { 2, {0x0a15, 0x0a66}, { {0, 1, 1, {0x12cd}}, {1, 2, 1, {0x12fe}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a17, 0x0a67}, { {0, 1, 1, {0x12cf}}, {1, 2, 1, {0x12ff}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a19, 0x0a68}, { {0, 1, 1, {0x12d1}}, {1, 2, 1, {0x1300}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a25, 0x0a69}, { {0, 1, 1, {0x12dd}}, {1, 2, 1, {0x1301}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a27, 0x0a6a}, { {0, 1, 1, {0x12df}}, {1, 2, 1, {0x1302}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a28, 0x0a6b}, { {0, 1, 1, {0x12e0}}, {1, 2, 1, {0x1303}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a29, 0x0a6c}, { {0, 1, 1, {0x0000}}, {1, 2, 1, {0x1304}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3a, 0x0a6d}, { {0, 1, 1, {0x0000}}, {1, 2, 1, {0x1305}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3b, 0x0a6e}, { {0, 1, 1, {0x0000}}, {1, 2, 1, {0x1306}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3c, 0x0a6f}, { {0, 1, 2, {0x058f, 0x12ee}}, {1, 2, 1, {0x1307}}, {-1, 1, 1, {0} } } }, - // Modifier + digit - { 2, {0x0a3e, 0x0a66}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x12fe}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a67}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x12ff}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a68}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1300}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a69}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1301}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a6a}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1302}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a6b}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1303}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a6c}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1304}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a6d}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1305}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a6e}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1306}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a3e, 0x0a6f}, { {0, 1, 2, {0x058f, 0x12ef}}, {1, 2, 1, {0x1307}}, {-1, 1, 1, {0} } } }, - // Vowel + digit - { 2, {0x0a73, 0x0a66}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x12fe}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a67}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x12ff}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a68}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1300}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a69}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1301}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a6a}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1302}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a6b}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1303}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a6c}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1304}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a6d}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1305}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a6e}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1306}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a6f}, { {0, 1, 1, {0x130b}}, {1, 2, 1, {0x1307}}, {-1, 1, 1, {0} } } }, - // Virama + digit - { 2, {0x0a4d, 0x0a66}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x12fe}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a67}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x12ff}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a68}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1300}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a69}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1301}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a6a}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1302}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a6b}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1303}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a6c}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1304}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a6d}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1305}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a6e}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1306}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a4d, 0x0a6f}, { {0, 1, 2, {0x058f, 0x12f8}}, {1, 2, 1, {0x1307}}, {-1, 1, 1, {0} } } }, - // Consonant + digit + Matra - { 3, {0x0a15, 0x0a66, 0x0a3e}, { {0, 1, 1, {0x12cd}}, {1, 2, 1, {0x12fe}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a16, 0x0a67, 0x0a3e}, { {0, 1, 1, {0x12ce}}, {1, 2, 1, {0x12ff}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a17, 0x0a68, 0x0a3e}, { {0, 1, 1, {0x12cf}}, {1, 2, 1, {0x1300}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a18, 0x0a69, 0x0a3e}, { {0, 1, 1, {0x12d0}}, {1, 2, 1, {0x1301}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a19, 0x0a6a, 0x0a3e}, { {0, 1, 1, {0x12d1}}, {1, 2, 1, {0x1302}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a25, 0x0a6b, 0x0a3e}, { {0, 1, 1, {0x12dd}}, {1, 2, 1, {0x1303}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a2a, 0x0a6c, 0x0a3e}, { {0, 1, 1, {0x12e1}}, {1, 2, 1, {0x1304}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a2d, 0x0a6d, 0x0a3e}, { {0, 1, 1, {0x12e4}}, {1, 2, 1, {0x1305}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a30, 0x0a6e, 0x0a3e}, { {0, 1, 1, {0x12e7}}, {1, 2, 1, {0x1306}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a33, 0x0a6f, 0x0a3e}, { {0, 1, 1, {0x12e9}}, {1, 2, 1, {0x1307}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - - -LOCAL_D const TTestInput_PositionParam6 Indic_MalayalamDigit[] = { - { 1, {0x0d66}, { {0, 1, 1, {0x123e} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d67}, { {0, 1, 1, {0x123f} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d68}, { {0, 1, 1, {0x1240} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d69}, { {0, 1, 1, {0x1241} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d6a}, { {0, 1, 1, {0x1242} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d6b}, { {0, 1, 1, {0x1243} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d6c}, { {0, 1, 1, {0x1244} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d6d}, { {0, 1, 1, {0x1245} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d6e}, { {0, 1, 1, {0x1246} }, {-1, 1, 1, {0} } } }, - { 1, {0x0d6f}, { {0, 1, 1, {0x1247} }, {-1, 1, 1, {0} } } }, - // Consonant + digit - { 2, {0x0d15, 0x0d66}, { {0, 1, 1, {0x120a}}, {1, 2, 1, {0x123e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d15, 0x0d67}, { {0, 1, 1, {0x120a}}, {1, 2, 1, {0x123f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d17, 0x0d68}, { {0, 1, 1, {0x120c}}, {1, 2, 1, {0x1240}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d19, 0x0d69}, { {0, 1, 1, {0x120e}}, {1, 2, 1, {0x1241}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d25, 0x0d6a}, { {0, 1, 1, {0x121a}}, {1, 2, 1, {0x1242}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d26, 0x0d6b}, { {0, 1, 1, {0x121b}}, {1, 2, 1, {0x1243}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d15, 0x0d6c}, { {0, 1, 1, {0x120a}}, {1, 2, 1, {0x1244}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d30, 0x0d6d}, { {0, 1, 1, {0x1224}}, {1, 2, 1, {0x1245}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d31, 0x0d6e}, { {0, 1, 1, {0x1225}}, {1, 2, 1, {0x1246}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d32, 0x0d6f}, { {0, 1, 1, {0x1226}}, {1, 2, 1, {0x1247}}, {-1, 1, 1, {0} } } }, - // Modifier + digit - { 2, {0x0d03, 0x0d66}, { {0, 1, 2, {0x058f, 0x11fb}}, {1, 2, 1, {0x123e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d03, 0x0d67}, { {0, 1, 2, {0x058f, 0x11fb}}, {1, 2, 1, {0x123f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d03, 0x0d68}, { {0, 1, 2, {0x058f, 0x11fb}}, {1, 2, 1, {0x1240}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d03, 0x0d69}, { {0, 1, 2, {0x058f, 0x11fb}}, {1, 2, 1, {0x1241}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d03, 0x0d6a}, { {0, 1, 2, {0x058f, 0x11fb}}, {1, 2, 1, {0x1242}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d02, 0x0d6b}, { {0, 1, 2, {0x058f, 0x11fa}}, {1, 2, 1, {0x1243}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d02, 0x0d6c}, { {0, 1, 2, {0x058f, 0x11fa}}, {1, 2, 1, {0x1244}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d02, 0x0d6d}, { {0, 1, 2, {0x058f, 0x11fa}}, {1, 2, 1, {0x1245}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d02, 0x0d6e}, { {0, 1, 2, {0x058f, 0x11fa}}, {1, 2, 1, {0x1246}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d02, 0x0d6f}, { {0, 1, 2, {0x058f, 0x11fa}}, {1, 2, 1, {0x1247}}, {-1, 1, 1, {0} } } }, - // Vowel + digit - { 2, {0x0d3e, 0x0d66}, { {0, 1, 2, {0x058f, 0x122e}}, {1, 2, 1, {0x123e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d3f, 0x0d67}, { {0, 1, 2, {0x058f, 0x122f}}, {1, 2, 1, {0x123f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d40, 0x0d68}, { {0, 1, 2, {0x058f, 0x1230}}, {1, 2, 1, {0x1240}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d41, 0x0d69}, { {0, 1, 2, {0x058f, 0x1231}}, {1, 2, 1, {0x1241}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d42, 0x0d6a}, { {0, 1, 2, {0x058f, 0x1232}}, {1, 2, 1, {0x1242}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d43, 0x0d6b}, { {0, 1, 2, {0x058f, 0x1233}}, {1, 2, 1, {0x1243}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d46, 0x0d6c}, { {0, 1, 2, {0x1234, 0x058f}}, {1, 2, 1, {0x1244}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d47, 0x0d6d}, { {0, 1, 2, {0x1235, 0x058f}}, {1, 2, 1, {0x1245}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d48, 0x0d6e}, { {0, 1, 2, {0x1236, 0x058f}}, {1, 2, 1, {0x1246}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4c, 0x0d6f}, { {0, 1, 2, {0x058f, 0x123b}}, {1, 2, 1, {0x1247}}, {-1, 1, 1, {0} } } }, - // Virama + digit - { 2, {0x0d4d, 0x0d66}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x123e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d67}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x123f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d68}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1240}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d69}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1241}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d6a}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1242}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d6b}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1243}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d6c}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1244}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d6d}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1245}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d6e}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1246}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d4d, 0x0d6f}, { {0, 1, 2, {0x058f, 0x123a}}, {1, 2, 1, {0x1247}}, {-1, 1, 1, {0} } } }, - // Consonant + digit + Matra - { 3, {0x0d15, 0x0d66, 0x0d3e}, { {0, 1, 1, {0x120a}}, {1, 2, 1, {0x123e}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d20, 0x0d67, 0x0d3f}, { {0, 1, 1, {0x1215}}, {1, 2, 1, {0x123f}}, {2, 3, 2, {0x058f, 0x122f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d22, 0x0d68, 0x0d40}, { {0, 1, 1, {0x1217}}, {1, 2, 1, {0x1240}}, {2, 3, 2, {0x058f, 0x1230}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d27, 0x0d69, 0x0d41}, { {0, 1, 1, {0x121c}}, {1, 2, 1, {0x1241}}, {2, 3, 2, {0x058f, 0x1231}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d28, 0x0d6a, 0x0d42}, { {0, 1, 1, {0x121d}}, {1, 2, 1, {0x1242}}, {2, 3, 2, {0x058f, 0x1232}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2A, 0x0d6b, 0x0d43}, { {0, 1, 1, {0x121e}}, {1, 2, 1, {0x1243}}, {2, 3, 2, {0x058f, 0x1233}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2D, 0x0d6c, 0x0d46}, { {0, 1, 1, {0x1221}}, {1, 2, 1, {0x1244}}, {2, 3, 2, {0x1234, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d32, 0x0d6d, 0x0d47}, { {0, 1, 1, {0x1226}}, {1, 2, 1, {0x1245}}, {2, 3, 2, {0x1235, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d34, 0x0d6e, 0x0d48}, { {0, 1, 1, {0x1228}}, {1, 2, 1, {0x1246}}, {2, 3, 2, {0x1236, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d39, 0x0d6f, 0x0d4a}, { {0, 1, 1, {0x122d}}, {1, 2, 1, {0x1247}}, {2, 3, 3, {0x1234, 0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - -LOCAL_D const TTestInput_PositionParam6 Indic_GurmukhiAndLatin[] = { - // Gurmukhi sequence + Latin - { 3, {0x0a05, 0x0a70, 0x0077}, { {0, 2, 2, {0x12c3, 0x1308}}, {1, 2, 1, {0x1308}}, {2, 3, 1, {0x0077}}, {-1, 1, 1, {0} } } }, - // Latin + Gurmukhi sequence - { 3, {0x0063, 0x0a19, 0x0a48}, { {0, 1, 1, {0x0063}}, {1, 3, 2, {0x12d1, 0x12f5}}, {2, 3, 1, {0x12f5}}, {-1, 1, 1, {0} } } }, - { 3, {0x0064, 0x0a3f, 0x0a71}, { {0, 1, 1, {0x0064}}, {1, 2, 2, {0x12f0, 0x058f}}, {2, 3, 2, {0x058f, 0x1309}}, {-1, 1, 1, {0} } } }, - { 3, {0x0066, 0x0a69, 0x0a3e}, { {0, 1, 1, {0x0066}}, {1, 2, 1, {0x1301}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0068, 0x0a6a, 0x0a3e}, { {0, 1, 1, {0x0068}}, {1, 2, 1, {0x1302}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x002e, 0x0a6b, 0x0a3e}, { {0, 1, 1, {0x0772}}, {1, 2, 1, {0x1303}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0074, 0x0a6c, 0x0a3e}, { {0, 1, 1, {0x0074}}, {1, 2, 1, {0x1304}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x002c, 0x0a6d, 0x0a3e}, { {0, 1, 1, {0x0770}}, {1, 2, 1, {0x1305}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0078, 0x0a6e, 0x0a3e}, { {0, 1, 1, {0x0078}}, {1, 2, 1, {0x1306}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x007a, 0x0a6f, 0x0a3e}, { {0, 1, 1, {0x007a}}, {1, 2, 1, {0x1307}}, {2, 3, 2, {0x058f, 0x12ef}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a6f, 0x0a3e, 0x0078}, { {0, 1, 1, {0x1307}}, {1, 2, 2, {0x058f, 0x12ef}}, {2, 3, 1, {0x0078}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a6f, 0x0a3e, 0x002e}, { {0, 1, 1, {0x1307}}, {1, 2, 2, {0x058f, 0x12ef}}, {2, 3, 1, {0x0772}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a6f, 0x0a3e, 0x0066}, { {0, 1, 1, {0x1307}}, {1, 2, 2, {0x058f, 0x12ef}}, {2, 3, 1, {0x0066}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - - -LOCAL_D const TTestInput_PositionParam6 Indic_MalayalamAndLatin[] = { - // Malayalam sequence + Latin - //{ 3, {0x0d05, 0x0d70, 0x0077}, { {0, 1, 1, {0x11fc}}, {1, 2, 1, {0x0000}}, {2, 3, 1, {0x0077}}, {-1, 1, 1, {0} } } }, - // Latin + Malayalam sequence - { 3, {0x0063, 0x0d19, 0x0d48}, { {0, 1, 1, {0x0063}}, {1, 3, 2, {0x1236, 0x120e}}, {2, 3, 1, {0x1236}}, {-1, 1, 1, {0} } } }, - { 3, {0x0066, 0x0d69, 0x0d3e}, { {0, 1, 1, {0x0066}}, {1, 2, 1, {0x1241}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0068, 0x0d6a, 0x0d3e}, { {0, 1, 1, {0x0068}}, {1, 2, 1, {0x1242}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x002e, 0x0d6b, 0x0d3e}, { {0, 1, 1, {0x0c87}}, {1, 2, 1, {0x1243}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0074, 0x0d6c, 0x0d3e}, { {0, 1, 1, {0x0074}}, {1, 2, 1, {0x1244}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x002c, 0x0d6d, 0x0d3e}, { {0, 1, 1, {0x0c85}}, {1, 2, 1, {0x1245}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0078, 0x0d6e, 0x0d3e}, { {0, 1, 1, {0x0078}}, {1, 2, 1, {0x1246}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x007a, 0x0d6f, 0x0d3e}, { {0, 1, 1, {0x007a}}, {1, 2, 1, {0x1247}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - - -LOCAL_D const TTestInput_PositionParam6 Indic_GurmukhiModifierAfterConsonantViramaZWJ[] = { - // Consonant + Virama + ZWJ + Modifier - { 4, {0x0a15, 0x0a4d, 0x200d, 0x0A01}, { {0, 4, 2, {0x1335, 0x12c0}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x12c0}}, {3, 4, 1, {0x12c0}}, {-1, 1, 1, {0} } } }, - { 4, {0x0a16, 0x0a4d, 0x200d, 0x0A02}, { {0, 4, 2, {0x1336, 0x12c1}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x12c1}}, {3, 4, 1, {0x12c1}}, {-1, 1, 1, {0} } } }, - { 4, {0x0a17, 0x0a4d, 0x200d, 0x0A03}, { {0, 4, 2, {0x1337, 0x12c2}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x12c2}}, {3, 4, 1, {0x12c2}}, {-1, 1, 1, {0} } } }, - { 4, {0x0a18, 0x0a4d, 0x200d, 0x0A70}, { {0, 4, 2, {0x1338, 0x1308}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x1308}}, {3, 4, 1, {0x1308}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - - -LOCAL_D const TTestInput_PositionParam6 Indic_MalayalamModifierAfterConsonantViramaZWJ[] = { - // Consonant + Virama + ZWJ + Modifier - { 4, {0x0d15, 0x0d4d, 0x200d, 0x0d02}, { {0, 4, 2, {0x1248, 0x11fa}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fa}}, {3, 4, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d25, 0x0d4d, 0x200d, 0x0d02}, { {0, 4, 2, {0x1258, 0x11fa}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fa}}, {3, 4, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d33, 0x0d4d, 0x200d, 0x0d03}, { {0, 3, 1, {0x1275}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fb}}, {3, 4, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d34, 0x0d4d, 0x200d, 0x0d03}, { {0, 4, 2, {0x1266, 0x11fb}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fb}}, {3, 4, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - -LOCAL_D const TTestInput_PositionParam6 Indic_GurmukhiConsonantLeading[] = { - // Consonant + Nukta - { 2, {0x0a17, 0x0A3C}, { {0, 2, 1, {0x12fa}}, {-1, 1, 1, {0} } } }, - // Consonant + dependent vowel, two sequences to check context shaping - { 2, {0x0a15, 0x0A4C}, { {0, 2, 2, {0x12cd, 0x12f7}}, {1, 2, 1, {0x12f7}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A4C}, { {0, 2, 2, {0x12ce, 0x12f7}}, {1, 2, 1, {0x12f7}}, {-1, 1, 1, {0} } } }, - // Consonant + Matra /i/, and other Matras - { 2, {0x0a16, 0x0A3f}, { {0, 2, 2, {0x12f0, 0x12ce}}, {1, 2, 1, {0x12f0}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A3e}, { {0, 2, 2, {0x12ce, 0x12ef}}, {1, 2, 1, {0x12ef}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A40}, { {0, 2, 2, {0x12ce, 0x12f1}}, {1, 2, 1, {0x12f1}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A41}, { {0, 2, 2, {0x12ce, 0x12f2}}, {1, 2, 1, {0x12f2}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A42}, { {0, 2, 2, {0x12ce, 0x12f3}}, {1, 2, 1, {0x12f3}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A43}, { {0, 1, 1, {0x12ce}}, {1, 2, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A44}, { {0, 1, 1, {0x12ce}}, {1, 2, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A45}, { {0, 1, 1, {0x12ce}}, {1, 2, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A46}, { {0, 1, 1, {0x12ce}}, {1, 2, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A47}, { {0, 2, 2, {0x12ce, 0x12f4}}, {1, 2, 1, {0x12f4}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A48}, { {0, 2, 2, {0x12ce, 0x12f5}}, {1, 2, 1, {0x12f5}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A49}, { {0, 1, 1, {0x12ce}}, {1, 2, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A4a}, { {0, 1, 1, {0x12ce}}, {1, 2, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A4b}, { {0, 2, 2, {0x12ce, 0x12f6}}, {1, 2, 1, {0x12f6}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a16, 0x0A4c}, { {0, 2, 2, {0x12ce, 0x12f7}}, {1, 2, 1, {0x12f7}}, {-1, 1, 1, {0} } } }, - //0d24 + 0d4d + 0d30 - //0d28 + 0d4d + //0d24 + 0d4d + 0d30 - //0d38 + 0d4d + //0d15 + 0d4d + 0d30 - // Consonant + Virama + HA(RA/VA/YA) - { 3, {0x0a15, 0x0a4d, 0x0a39}, { {0, 3, 2, {0x12cd, 0x1331}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1331}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a15, 0x0a4d, 0x0a30}, { {0, 3, 1, {0x13e7}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a15, 0x0a4d, 0x0a35}, { {0, 3, 2, {0x1399, 0x1333}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1333}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a15, 0x0a4d, 0x0a2f}, { {0, 3, 2, {0x12cd, 0x1373}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1373}}, {-1, 1, 1, {0} } } }, - // Consonant + Addak - { 2, {0x0a16, 0x0A71}, { {0, 2, 2, {0x12ce, 0x1309}}, {1, 2, 1, {0x1309}}, {-1, 1, 1, {0} } } }, - // Consonant + bindi - { 2, {0x0a16, 0x0A02}, { {0, 2, 2, {0x12ce, 0x12c1}}, {1, 2, 1, {0x12c1}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a16, 0x0a40, 0x0A02}, { {0, 3, 2, {0x12ce, 0x13f0}}, {1, 2, 1, {0x13f0}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a16, 0x0a4b, 0x0A02}, { {0, 3, 2, {0x12ce, 0x13f3}}, {1, 2, 1, {0x13f3}}, {-1, 1, 1, {0} } } }, - // Consonant + Tippi - { 2, {0x0a25, 0x0A70}, { {0, 2, 2, {0x12dd, 0x1308}}, {1, 2, 1, {0x1308}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a25, 0x0a3f, 0x0A70}, { {0, 3, 3, {0x12f0, 0x12dd, 0x1308}}, {1, 2, 1, {0x12f0}}, {2, 3, 1, {0x1308}}, {-1, 1, 1, {0} } } }, - { 3, {0x0a25, 0x0a41, 0x0A70}, { {0, 3, 3, {0x12dd, 0x12f2, 0x1308}}, {1, 2, 1, {0x12f2}}, {2, 3, 1, {0x1308}}, {-1, 1, 1, {0} } } }, - // Nukta, corresponding consonant, Nukta pair - { 1, {0x0a33}, { {0, 1, 1, {0x12e9}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a32, 0x0A3c}, { {0, 2, 1, {0x12e9}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a36}, { {0, 1, 1, {0x12eb}},{-1, 1, 1, {0} } } }, - { 2, {0x0a38, 0x0A3c}, { {0, 2, 1, {0x12eb}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a59}, { {0, 1, 1, {0x12f9}}, {-1, 1, 1, {0} } } }, - { 2, {0x0aa1, 0x0A3c}, { {0, 1, 1, {0x096e}}, {1, 2, 2, {0x058f, 0x12ee}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a5a}, { {0, 1, 1, {0x12fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a17, 0x0A3c}, { {0, 2, 1, {0x12fa}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a5b}, { {0, 1, 1, {0x12fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a1c, 0x0A3c}, { {0, 2, 1, {0x12fb}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a5e}, { {0, 1, 1, {0x12fd}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a2b, 0x0A3c}, { {0, 2, 1, {0x12fd}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - - - -LOCAL_D const TTestInput_PositionParam6 Indic_MalayalamConsonantLeading[] = { - // Consonant, and its split representation - { 2, {0x0d15, 0x0d14}, { {0, 1, 1, {0x120a}}, {1, 2, 1, {0x1209}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d12, 0x0d57}, { {0, 1, 1, {0x120a}}, {1, 3, 3, {0x1207, 0x058f, 0x123b}}, {2, 3, 2, {0x058f, 0x123b}}, {-1, 1, 1, {0} } } }, - - { 2, {0x0d15, 0x0d4a}, { {0, 2, 3, {0x1234, 0x120a, 0x122e}}, {1, 2, 2, {0x1234, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d46, 0x0d3e}, { {0, 3, 3, {0x1234, 0x120a, 0x122e}}, {1, 2, 1, {0x1234}}, {2, 3, 1, {0x122e}}, {-1, 1, 1, {0} } } }, - - { 2, {0x0d17, 0x0d4b}, { {0, 2, 3, {0x1235, 0x120c, 0x122e}}, {1, 2, 2, {0x1235, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d17, 0x0d47, 0x0d3e}, { {0, 3, 3, {0x1235, 0x120c, 0x122e}}, {1, 2, 1, {0x1235}}, {2, 3, 1, {0x122e}}, {-1, 1, 1, {0} } } }, - - { 2, {0x0d19, 0x0d4c}, { {0, 2, 2, {0x120e, 0x123b}}, {1, 2, 1, {0x123b}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d19, 0x0d46, 0x0d57}, { {0, 3, 2, {0x120e, 0x123b}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x123b}}, {-1, 1, 1, {0} } } }, - - // Consonant + dependent vowel, two sequences to check context shaping - { 2, {0x0d15, 0x0d0a}, { {0, 1, 1, {0x120a}}, {1, 2, 1, {0x1201}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d16, 0x0d0a}, { {0, 1, 1, {0x120b}}, {1, 2, 1, {0x1201}}, {-1, 1, 1, {0} } } }, - - // Consonant + Matra /-e/, /-ee/, /-ai/ - { 2, {0x0d16, 0x0d46}, { {0, 2, 2, {0x1234, 0x120b}}, {1, 2, 1, {0x1234}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d17, 0x0d47}, { {0, 2, 2, {0x1235, 0x120c}}, {1, 2, 1, {0x1235}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d18, 0x0d48}, { {0, 2, 2, {0x1236, 0x120d}}, {1, 2, 1, {0x1236}}, {-1, 1, 1, {0} } } }, - - // Consonant and Matras /-o/, /-oo/, /-au/ to shaper - // Consonant and 0x0d4c (first form of Matra /-au/ ) to shaper, - // Consonant, 0x0d46 and 0x0d57 (second form of Matra /-au/) to shaper002E - { 2, {0x0d16, 0x0d4A}, { {0, 2, 3, {0x1234, 0x120b, 0x122e}}, {1, 2, 2, {0x1234, 0x122e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d17, 0x0d4B}, { {0, 2, 3, {0x1235, 0x120c, 0x122e}}, {1, 2, 2, {0x1235, 0x122e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d18, 0x0d4C}, { {0, 2, 2, {0x120d, 0x123b}}, {1, 2, 1, {0x123b}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d46, 0x0d57}, { {0, 3, 2, {0x120a, 0x123b}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x123b}}, {-1, 1, 1, {0} } } }, - - // Consonant + 0x0d4d + Consonant - { 3, {0x0d15, 0x0d4d, 0x0d15}, { {0, 3, 1, {0x1277}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d31, 0x0d4d, 0x0d31, 0x0d4d}, { {0, 4, 2, {0x12a7, 0x123a}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x123a}}, {3, 4, 1, {0x123a}}, {-1, 1, 1, {0} } } }, - - // Consonant (NNA, NA, RA, LA, LLA) + Virama + ZWJ to shaper - // KA + Virama + ZWJ to shaper. - // other Consonant + Virama + ZWJ to shaper. - { 3, {0x0d23, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1272}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d28, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1273}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d32, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1276}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d33, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1275}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1248}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d16, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1249}}, {-1, 1, 1, {0} } } }, - - // RA + Virama + ZWJ to shaper, - // RRA + Viram + ZWJ to shaper. - { 3, {0x0d30, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1274}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d31, 0x0d4d, 0x200d}, { {0, 3, 1, {0x1263}}, {-1, 1, 1, {0} } } }, - - // Chillu and Modifier to shaper - // Chillu and Virama to shaper - { 4, {0x0d31, 0x0d4d, 0x200d, 0x0d05}, { {0, 3, 1, {0x1263}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x11fc}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d15, 0x0d4d, 0x200d, 0x0d14}, { {0, 3, 1, {0x1248}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x1209}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d31, 0x0d4d, 0x200d, 0x0d4d}, { {0, 3, 1, {0x1263}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x058f, 0x123a}}, {3, 4, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d15, 0x0d4d, 0x200d, 0x0d4d}, { {0, 3, 1, {0x1248}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x058f, 0x123a}}, {3, 4, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - - // AAR - { 3, {0x0d06, 0x0d4d, 0x200d}, { {0, 1, 1, {0x11fd}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d06, 0x0d4d}, { {0, 1, 1, {0x11fd}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - - // K.KA, K.TA, K.SSA, G.NA, G.MA, - // NG.KA, NG.NGA, J.JA, J.NYA, NY.NYA, TT.TTA, NN.MA, T.BHA, T.MA, - // T.SA, D.DA, D.DHA, - // N.TA, N.DA, N.DHA, N.NA, - // M.PA, M.MA, - // SH.CA, S.THA, - // H.NA, H.MA and LL.LLA - { 3, {0x0d15, 0x0d4d, 0x0d15}, { {0, 3, 1, {0x1277}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d4d, 0x0d24}, { {0, 3, 1, {0x1278}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d4d, 0x0d37}, { {0, 3, 1, {0x127b}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d17, 0x0d4d, 0x0d28}, { {0, 3, 1, {0x127e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d17, 0x0d4d, 0x0d2e}, { {0, 3, 1, {0x127d}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d19, 0x0d4d, 0x0d15}, { {0, 3, 1, {0x1280}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d19, 0x0d4d, 0x0d19}, { {0, 3, 1, {0x1281}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d1c, 0x0d4d, 0x0d1c}, { {0, 3, 1, {0x1284}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d1c, 0x0d4d, 0x0d1e}, { {0, 3, 1, {0x1285}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d1f, 0x0d4d, 0x0d1f}, { {0, 3, 1, {0x1288}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d23, 0x0d4d, 0x0d2e}, { {0, 3, 1, {0x128b}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d24, 0x0d4d, 0x0d2d}, { {0, 3, 1, {0x128e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d24, 0x0d4d, 0x0d2e}, { {0, 3, 1, {0x128f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d24, 0x0d4d, 0x0d38}, { {0, 3, 1, {0x1290}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d26, 0x0d4d, 0x0d26}, { {0, 3, 1, {0x1293}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d26, 0x0d4d, 0x0d27}, { {0, 3, 1, {0x1294}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d28, 0x0d4d, 0x0d24}, { {0, 3, 1, {0x129a}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d28, 0x0d4d, 0x0d26}, { {0, 3, 1, {0x1295}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d28, 0x0d4d, 0x0d27}, { {0, 3, 1, {0x1296}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d28, 0x0d4d, 0x0d28}, { {0, 3, 1, {0x1297}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2e, 0x0d4d, 0x0d2a}, { {0, 3, 1, {0x12a4}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2e, 0x0d4d, 0x0d2e}, { {0, 3, 1, {0x12a3}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d36, 0x0d4d, 0x0d1a}, { {0, 3, 1, {0x12ab}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d38, 0x0d4d, 0x0d25}, { {0, 3, 1, {0x12b1}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d39, 0x0d4d, 0x0d28}, { {0, 3, 1, {0x12b4}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d39, 0x0d4d, 0x0d2e}, { {0, 3, 1, {0x12b3}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d33, 0x0d4d, 0x0d23}, { {0, 3, 2, {0x1265, 0x1218}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1218}}, {-1, 1, 1, {0} } } }, - - // One of (KA, GA, PA, BA, MA, LA, SHA, SA, HA), Virama and LA to shaper - { 3, {0x0d15, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x127a}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d17, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x127f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2a, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x129d}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2c, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x12a2}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2e, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x12a5}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d32, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x12a8}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d36, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x12ad}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d38, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x12b2}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d39, 0x0d4d, 0x0d32}, { {0, 3, 1, {0x12b5}}, {-1, 1, 1, {0} } } }, - - // CA, Virama and CA to shaper - // BA, Virama and BA to shaper - // YA, Virama and YA to shaper - // VA, Virama and VA to shaper - // other Consonant, Virama and the same Consonant to shaper. - { 3, {0x0d1a, 0x0d4d, 0x0d1a}, { {0, 3, 1, {0x1282}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2c, 0x0d4d, 0x0d2c}, { {0, 3, 1, {0x129f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2f, 0x0d4d, 0x0d2f}, { {0, 3, 1, {0x12a6}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d35, 0x0d4d, 0x0d35}, { {0, 3, 1, {0x12aa}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d4d, 0x0d15}, { {0, 3, 1, {0x1277}}, {-1, 1, 1, {0} } } }, - - // G.GA, C.CHA, K.TTA, SS.TTA, DD.DDA, NN.NNA, B.DA, B.DHA, P.PA, RR.RRA, SH.SHA, S.SA clusters to shaper - { 3, {0x0d17, 0x0d4d, 0x0d17}, { {0, 3, 1, {0x127c}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2c, 0x0d4d, 0x0d26}, { {0, 3, 1, {0x12a0}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d1a, 0x0d4d, 0x0d1b}, { {0, 3, 1, {0x1283}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2c, 0x0d4d, 0x0d27}, { {0, 3, 1, {0x12a1}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d4d, 0x0d1f}, { {0, 3, 1, {0x1279}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d2a, 0x0d4d, 0x0d2a}, { {0, 3, 1, {0x129c}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d37, 0x0d4d, 0x0d1f}, { {0, 3, 1, {0x12ae}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d31, 0x0d4d, 0x0d31}, { {0, 3, 1, {0x12a7}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d21, 0x0d4d, 0x0d21}, { {0, 3, 1, {0x1289}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d36, 0x0d4d, 0x0d36}, { {0, 3, 1, {0x12ac}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d23, 0x0d4d, 0x0d23}, { {0, 3, 1, {0x128c}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d38, 0x0d4d, 0x0d38}, { {0, 3, 1, {0x12b0}}, {-1, 1, 1, {0} } } }, - - - // Consonant clusters from REQ1.3.11 to shaper. - // Already covered in other sequence - // S.RR.RRA to shaper, - // N.RR.RRA to shaper - { 5, {0x0d38, 0x0d4d, 0x0d31, 0x0d4d, 0x0d31}, { {0, 5, 1, {0x12af}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d28, 0x0d4d, 0x0d31, 0x0d31}, { {0, 3, 2, {0x125b, 0x1225}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1225}}, {3, 4, 1, {0x1225}}, {-1, 1, 1, {0} } } }, - - // N.RRA - { 4, {0x0d28, 0x0d4d, 0x200d, 0x0d31}, { {0, 4, 1, {0x1299}}, {-1, 1, 1, {0} } } }, - - // NA, Virama, ZWJ, RRA to shaper - // NA, Virama, ZWJ, ZWNJ, RRA to shaper - { 4, {0x0d28, 0x0d4d, 0x200d, 0x0d31}, { {0, 4, 1, {0x1299}}, {-1, 1, 1, {0} } } }, - { 5, {0x0d28, 0x0d4d, 0x200d, 0x200c, 0x0d31}, { {0, 3, 1, {0x1273}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 0, {0x0000}}, {4, 5, 1, {0x1225}}, {-1, 1, 1, {0} } } }, - - // Consonant cluster and YA to shaper - // Consonant cluster and VA to shaper - { 4, {0x0d15, 0x0d4d, 0x0d30, 0x0d3f}, { {0, 4, 3, {0x1271, 0x120a, 0x122f}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x1271, 0x122f}}, {3, 4, 1, {0x122f}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d15, 0x0d4d, 0x0d30, 0x0d35}, { {0, 3, 2, {0x1271, 0x120a}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1271}}, {3, 4, 1, {0x1229}}, {-1, 1, 1, {0} } } }, - - // YA, YAKAR to shaper - // VA, VAKAR to shaper - { 3, {0x0d15, 0x0d4d, 0x0d2f}, { {0, 3, 2, {0x120a, 0x126f}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x126f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d15, 0x0d4d, 0x0d35}, { {0, 3, 2, {0x120a, 0x1270}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1270}}, {-1, 1, 1, {0} } } }, - { 5, {0x0d15, 0x0d4d, 0x0d30, 0x0d4d, 0x0d2f}, { {0, 5, 3, {0x1271, 0x120a, 0x126f}}, {1, 2, 0, {0x0000}}, {2, 5, 2, {0x1271, 0x126f}}, {3, 4, 0, {0x0000}}, {4, 5, 1, {0x126f}}, {-1, 1, 1, {0} } } }, - { 5, {0x0d15, 0x0d4d, 0x0d30, 0x0d4d, 0x0d35}, { {0, 5, 3, {0x1271, 0x120a, 0x1270}}, {1, 2, 0, {0x0000}}, {2, 5, 2, {0x1271, 0x1270}}, {3, 4, 0, {0x0000}}, {4, 5, 1, {0x1270}}, {-1, 1, 1, {0} } } }, - { 5, {0x0d15, 0x0d4d, 0x0d2f, 0x0d4d, 0x0d30}, { {0, 5, 3, {0x1248, 0x1271, 0x1223}}, {1, 2, 0, {0x0000}}, {2, 5, 2, {0x1271, 0x1223}}, {3, 4, 0, {0x0000}}, {4, 5, 1, {0x1271}}, {-1, 1, 1, {0} } } }, - { 5, {0x0d15, 0x0d4d, 0x0d35, 0x0d4d, 0x0d30}, { {0, 5, 3, {0x1248, 0x1271, 0x1229}}, {1, 2, 0, {0x0000}}, {2, 5, 2, {0x1271, 0x1229}}, {3, 4, 0, {0x0000}}, {4, 5, 1, {0x1271}}, {-1, 1, 1, {0} } } }, - - // one of (LLA, LLLA, RRA) and YA to shaper - // one of (LLA, LLLA, RRA) and VA to shaper - { 2, {0x0d33, 0x0d2f}, { {0, 1, 1, {0x1227}}, {1, 2, 1, {0x1223}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d34, 0x0d2f}, { {0, 1, 1, {0x1228}}, {1, 2, 1, {0x1223}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d31, 0x0d2f}, { {0, 1, 1, {0x1225}}, {1, 2, 1, {0x1223}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d33, 0x0d35}, { {0, 1, 1, {0x1227}}, {1, 2, 1, {0x1229}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d34, 0x0d35}, { {0, 1, 1, {0x1228}}, {1, 2, 1, {0x1229}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d31, 0x0d35}, { {0, 1, 1, {0x1225}}, {1, 2, 1, {0x1229}}, {-1, 1, 1, {0} } } }, - // KSSA - //0d15, 0d4d, 0d37 - // Consonant cluster and RA to shaper - { 4, {0x0d15, 0x0d4d, 0x0d30, 0x0d30}, { {0, 3, 2, {0x1271, 0x120a}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1271}}, {3, 4, 1, {0x1224}}, {-1, 1, 1, {0} } } }, - - // one of (LLA, LLLA, RRA) and RA to shaper - { 2, {0x0d33, 0x0d30}, { {0, 1, 1, {0x1227}}, {1, 2, 1, {0x1224}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d34, 0x0d30}, { {0, 1, 1, {0x1228}}, {1, 2, 1, {0x1224}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d31, 0x0d30}, { {0, 1, 1, {0x1225}}, {1, 2, 1, {0x1224}}, {-1, 1, 1, {0} } } }, - - // YAKAR/VAKAR and RA to shaper. - { 4, {0x0d15, 0x0d4d, 0x0d2f, 0x0d30}, { {0, 3, 2, {0x120a, 0x126f}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x126f}}, {3, 4, 1, {0x1224}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d15, 0x0d4d, 0x0d35, 0x0d30}, { {0, 3, 2, {0x120a, 0x1270}}, {1, 2, 0, {0x0000}}, {2, 3, 1, {0x1270}}, {3, 4, 1, {0x1224}}, {-1, 1, 1, {0} } } }, - - // Chillu - // Chillu and Vowel to shaper - // Chillu and Consonant to shaper - // Chillu and Modifier to shaper - // Chillu and Virama to shaper - { 4, {0x0d06, 0x0d23, 0x0d4d, 0x200d}, { {0, 1, 1, {0x11fd}}, {1, 4, 1, {0x1272}}, {2, 3, 0, {0x058f, 0x123a}}, {3, 4, 0, {0x0d30}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d06, 0x0d28, 0x0d4d, 0x200d}, { {0, 1, 1, {0x11fd}}, {1, 4, 1, {0x1273}}, {2, 3, 0, {0x058f, 0x123a}}, {3, 4, 0, {0x0d30}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d06, 0x0d30, 0x0d4d, 0x200d}, { {0, 1, 1, {0x11fd}}, {1, 4, 1, {0x1274}}, {2, 3, 0, {0x058f, 0x123a}}, {3, 4, 0, {0x0d30}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d06, 0x0d32, 0x0d4d, 0x200d}, { {0, 1, 1, {0x11fd}}, {1, 4, 1, {0x1276}}, {2, 3, 0, {0x058f, 0x123a}}, {3, 4, 0, {0x0d30}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d06, 0x0d33, 0x0d4d, 0x200d}, { {0, 1, 1, {0x11fd}}, {1, 4, 1, {0x1275}}, {2, 3, 0, {0x058f, 0x123a}}, {3, 4, 0, {0x0d30}}, {-1, 1, 1, {0} } } }, - - { 4, {0x0d23, 0x0d4d, 0x200d, 0x0d06}, { {0, 3, 1, {0x1272}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x11fd}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d28, 0x0d4d, 0x200d, 0x0d09}, { {0, 3, 1, {0x1273}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x1200}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d30, 0x0d4d, 0x200d, 0x0d0a}, { {0, 3, 1, {0x1274}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x1201}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d32, 0x0d4d, 0x200d, 0x0d0f}, { {0, 3, 1, {0x1276}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x1205}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d33, 0x0d4d, 0x200d, 0x0d13}, { {0, 3, 1, {0x1275}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x1208}}, {-1, 1, 1, {0} } } }, - - { 4, {0x0d23, 0x0d4d, 0x200d, 0x0d16}, { {0, 3, 1, {0x1272}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x120b}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d28, 0x0d4d, 0x200d, 0x0d19}, { {0, 3, 1, {0x1273}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x120e}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d30, 0x0d4d, 0x200d, 0x0d1a}, { {0, 3, 1, {0x1274}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x120f}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d32, 0x0d4d, 0x200d, 0x0d1f}, { {0, 3, 1, {0x1276}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x1214}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d33, 0x0d4d, 0x200d, 0x0d31}, { {0, 3, 1, {0x1275}}, {1, 2, 0, {0x0000}}, {2, 3, 0, {0x0000}}, {3, 4, 1, {0x1225}}, {-1, 1, 1, {0} } } }, - - { 4, {0x0d23, 0x0d4d, 0x200d, 0x0d02}, { {0, 3, 1, {0x1272}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fa}}, {3, 4, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d28, 0x0d4d, 0x200d, 0x0d02}, { {0, 3, 1, {0x1273}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fa}}, {3, 4, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d30, 0x0d4d, 0x200d, 0x0d03}, { {0, 3, 1, {0x1274}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fb}}, {3, 4, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d32, 0x0d4d, 0x200d, 0x0d03}, { {0, 3, 1, {0x1276}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fb}}, {3, 4, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d33, 0x0d4d, 0x200d, 0x0d03}, { {0, 3, 1, {0x1275}}, {1, 2, 0, {0x0000}}, {2, 4, 1, {0x11fb}}, {3, 4, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - - { 4, {0x0d23, 0x0d4d, 0x200d, 0x0d4d}, { {0, 3, 1, {0x1272}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x058f, 0x123a}}, {3, 4, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d28, 0x0d4d, 0x200d, 0x0d4d}, { {0, 3, 1, {0x1273}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x058f, 0x123a}}, {3, 4, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d30, 0x0d4d, 0x200d, 0x0d4d}, { {0, 3, 1, {0x1274}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x058f, 0x123a}}, {3, 4, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d32, 0x0d4d, 0x200d, 0x0d4d}, { {0, 3, 1, {0x1276}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x058f, 0x123a}}, {3, 4, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 4, {0x0d33, 0x0d4d, 0x200d, 0x0d4d}, { {0, 3, 1, {0x1275}}, {1, 2, 0, {0x0000}}, {2, 4, 2, {0x058f, 0x123a}}, {3, 4, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - -LOCAL_D const TTestInput_PositionParam6 Indic_GurmukhiVowelLeading[] = { - // ARA, IRI, URA, independent vowel to shaper - { 1, {0x0a05}, { {0, 1, 1, {0x12c3}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a06}, { {0, 1, 1, {0x12c4}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a07}, { {0, 1, 1, {0x12c5}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a08}, { {0, 1, 1, {0x12c6}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a09}, { {0, 1, 1, {0x12c7}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a0a}, { {0, 1, 1, {0x12c8}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a0b}, { {0, 1, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a0c}, { {0, 1, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a0d}, { {0, 1, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a0e}, { {0, 1, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a0f}, { {0, 1, 1, {0x12c9}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a10}, { {0, 1, 1, {0x12ca}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a11}, { {0, 1, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a12}, { {0, 1, 1, {0x0000}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a13}, { {0, 1, 1, {0x12cb}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a14}, { {0, 1, 1, {0x12cc}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a72}, { {0, 1, 1, {0x130a}}, {-1, 1, 1, {0} } } }, - { 1, {0x0a73}, { {0, 1, 1, {0x130b}}, {-1, 1, 1, {0} } } }, - // Valid bear + vowel - { 2, {0x0a05, 0x0a3e}, { {0, 2, 2, {0x12c3, 0x12ef}}, {1, 2, 1, {0x12ef}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a05, 0x0a48}, { {0, 2, 2, {0x12c3, 0x12f5}}, {1, 2, 1, {0x12f5}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a05, 0x0a4c}, { {0, 2, 2, {0x12c3, 0x12f7}}, {1, 2, 1, {0x12f7}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a72, 0x0a3f}, { {0, 2, 2, {0x12f0, 0x130a}}, {1, 2, 1, {0x12f0}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a72, 0x0a40}, { {0, 2, 2, {0x130a, 0x12f1}}, {1, 2, 1, {0x12f1}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a72, 0x0a47}, { {0, 2, 2, {0x130a, 0x12f4}}, {1, 2, 1, {0x12f4}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a41}, { {0, 2, 1, {0x12c7}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a42}, { {0, 2, 1, {0x12c8}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a4b}, { {0, 2, 1, {0x12cb}}, {-1, 1, 1, {0} } } }, - // Invalid bear + vowel sequence - { 2, {0x0a72, 0x0a4b}, { {0, 1, 1, {0x130a}}, {1, 2, 2, {0x058f, 0x12f6}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a05, 0x0a4b}, { {0, 1, 1, {0x12c3}}, {1, 2, 2, {0x058f, 0x12f6}}, {-1, 1, 1, {0} } } }, - { 2, {0x0a73, 0x0a3f}, { {0, 1, 1, {0x130b}}, {1, 2, 2, {0x12f0, 0x058f}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - - -LOCAL_D const TTestInput_PositionParam6 Indic_MalayalamVowelLeading[] = { - // Vowel - { 1, {0x0d05}, { {0, 1, 1, {0x11fc}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d06}, { {0, 1, 1, {0x11fd}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d07}, { {0, 1, 1, {0x11fe}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d08}, { {0, 1, 1, {0x11ff}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d09}, { {0, 1, 1, {0x1200}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d0a}, { {0, 1, 1, {0x1201}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d0b}, { {0, 1, 1, {0x1202}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d60}, { {0, 1, 1, {0x123c}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d0c}, { {0, 1, 1, {0x1203}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d61}, { {0, 1, 1, {0x123d}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d0e}, { {0, 1, 1, {0x1204}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d0f}, { {0, 1, 1, {0x1205}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d10}, { {0, 1, 1, {0x1206}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d12}, { {0, 1, 1, {0x1207}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d13}, { {0, 1, 1, {0x1208}}, {-1, 1, 1, {0} } } }, - { 1, {0x0d14}, { {0, 1, 1, {0x1209}}, {-1, 1, 1, {0} } } }, - // Vowel + modifer - { 2, {0x0d05, 0x0d02}, { {0, 2, 2, {0x11fc, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d06, 0x0d02}, { {0, 2, 2, {0x11fd, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d07, 0x0d02}, { {0, 2, 2, {0x11fe, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d08, 0x0d02}, { {0, 2, 2, {0x11ff, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d09, 0x0d02}, { {0, 2, 2, {0x1200, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0a, 0x0d02}, { {0, 2, 2, {0x1201, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0b, 0x0d02}, { {0, 2, 2, {0x1202, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d60, 0x0d02}, { {0, 2, 2, {0x123c, 0x11fa}}, {1, 2, 1, {0x11fa}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0c, 0x0d03}, { {0, 2, 2, {0x1203, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d61, 0x0d03}, { {0, 2, 2, {0x123d, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0e, 0x0d03}, { {0, 2, 2, {0x1204, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0f, 0x0d03}, { {0, 2, 2, {0x1205, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d10, 0x0d03}, { {0, 2, 2, {0x1206, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d12, 0x0d03}, { {0, 2, 2, {0x1207, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d13, 0x0d03}, { {0, 2, 2, {0x1208, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d14, 0x0d03}, { {0, 2, 2, {0x1209, 0x11fb}}, {1, 2, 1, {0x11fb}}, {-1, 1, 1, {0} } } }, - // Vowel, Modifier, Matra - { 3, {0x0d05, 0x0d02, 0x0d3e}, { {0, 2, 2, {0x11fc, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d06, 0x0d02, 0x0d3f}, { {0, 2, 2, {0x11fd, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x058f, 0x122f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d07, 0x0d02, 0x0d40}, { {0, 2, 2, {0x11fe, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x058f, 0x1230}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d08, 0x0d02, 0x0d41}, { {0, 2, 2, {0x11ff, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x058f, 0x1231}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d09, 0x0d02, 0x0d42}, { {0, 2, 2, {0x1200, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x058f, 0x1232}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0a, 0x0d02, 0x0d43}, { {0, 2, 2, {0x1201, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x058f, 0x1233}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0b, 0x0d02, 0x0d46}, { {0, 2, 2, {0x1202, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x1234, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d60, 0x0d02, 0x0d47}, { {0, 2, 2, {0x123c, 0x11fa}}, {1, 2, 1, {0x11fa}}, {2, 3, 2, {0x1235, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0c, 0x0d03, 0x0d48}, { {0, 2, 2, {0x1203, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 2, {0x1236, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d61, 0x0d03, 0x0d4a}, { {0, 2, 2, {0x123d, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 3, {0x1234, 0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0e, 0x0d03, 0x0d4b}, { {0, 2, 2, {0x1204, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 3, {0x1235, 0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0f, 0x0d03, 0x0d4c}, { {0, 2, 2, {0x1205, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 2, {0x058f, 0x123b}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d10, 0x0d03, 0x0d3e}, { {0, 2, 2, {0x1206, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d12, 0x0d03, 0x0d3f}, { {0, 2, 2, {0x1207, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 2, {0x058f, 0x122f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d13, 0x0d03, 0x0d40}, { {0, 2, 2, {0x1208, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 2, {0x058f, 0x1230}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d14, 0x0d03, 0x0d4c}, { {0, 2, 2, {0x1209, 0x11fb}}, {1, 2, 1, {0x11fb}}, {2, 3, 2, {0x058f, 0x123b}}, {-1, 1, 1, {0} } } }, - - // Vowel, Virama, - { 2, {0x0d05, 0x0d4d}, { {0, 1, 1, {0x11fc}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d06, 0x0d4d}, { {0, 1, 1, {0x11fd}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d07, 0x0d4d}, { {0, 1, 1, {0x11fe}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d08, 0x0d4d}, { {0, 1, 1, {0x11ff}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d09, 0x0d4d}, { {0, 1, 1, {0x1200}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0a, 0x0d4d}, { {0, 1, 1, {0x1201}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0b, 0x0d4d}, { {0, 1, 1, {0x1202}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d60, 0x0d4d}, { {0, 1, 1, {0x123c}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0c, 0x0d4d}, { {0, 1, 1, {0x1203}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d61, 0x0d4d}, { {0, 1, 1, {0x123d}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0e, 0x0d4d}, { {0, 1, 1, {0x1204}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0f, 0x0d4d}, { {0, 1, 1, {0x1205}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d10, 0x0d4d}, { {0, 1, 1, {0x1206}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d12, 0x0d4d}, { {0, 1, 1, {0x1207}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d13, 0x0d4d}, { {0, 1, 1, {0x1208}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d14, 0x0d4d}, { {0, 1, 1, {0x1209}}, {1, 2, 2, {0x058f, 0x123a}}, {-1, 1, 1, {0} } } }, - - // Vowel, Matra, - { 2, {0x0d05, 0x0d3e}, { {0, 1, 1, {0x11fc}}, {1, 2, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d06, 0x0d3f}, { {0, 1, 1, {0x11fd}}, {1, 2, 2, {0x058f, 0x122f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d07, 0x0d40}, { {0, 1, 1, {0x11fe}}, {1, 2, 2, {0x058f, 0x1230}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d08, 0x0d41}, { {0, 1, 1, {0x11ff}}, {1, 2, 2, {0x058f, 0x1231}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d09, 0x0d42}, { {0, 1, 1, {0x1200}}, {1, 2, 2, {0x058f, 0x1232}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0a, 0x0d43}, { {0, 1, 1, {0x1201}}, {1, 2, 2, {0x058f, 0x1233}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0b, 0x0d46}, { {0, 1, 1, {0x1202}}, {1, 2, 2, {0x1234, 0x058f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d60, 0x0d47}, { {0, 1, 1, {0x123c}}, {1, 2, 2, {0x1235, 0x058f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0c, 0x0d48}, { {0, 1, 1, {0x1203}}, {1, 2, 2, {0x1236, 0x058f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d61, 0x0d4a}, { {0, 1, 1, {0x123d}}, {1, 2, 3, {0x1234, 0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0e, 0x0d4b}, { {0, 1, 1, {0x1204}}, {1, 2, 3, {0x1235, 0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d0f, 0x0d4c}, { {0, 1, 1, {0x1205}}, {1, 2, 2, {0x058f, 0x123b}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d10, 0x0d3e}, { {0, 1, 1, {0x1206}}, {1, 2, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d12, 0x0d3f}, { {0, 1, 1, {0x1207}}, {1, 2, 2, {0x058f, 0x122f}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d13, 0x0d40}, { {0, 1, 1, {0x1208}}, {1, 2, 2, {0x058f, 0x1230}}, {-1, 1, 1, {0} } } }, - { 2, {0x0d14, 0x0d4c}, { {0, 1, 1, {0x1209}}, {1, 2, 2, {0x058f, 0x123b}}, {-1, 1, 1, {0} } } }, - // Vowel Virma, Matra - { 3, {0x0d05, 0x0d4d, 0x0d3e}, { {0, 1, 1, {0x11fc}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d06, 0x0d4d, 0x0d3f}, { {0, 1, 1, {0x11fd}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x122f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d07, 0x0d4d, 0x0d40}, { {0, 1, 1, {0x11fe}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x1230}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d08, 0x0d4d, 0x0d41}, { {0, 1, 1, {0x11ff}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x1231}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d09, 0x0d4d, 0x0d42}, { {0, 1, 1, {0x1200}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x1232}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0a, 0x0d4d, 0x0d43}, { {0, 1, 1, {0x1201}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x1233}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0b, 0x0d4d, 0x0d46}, { {0, 1, 1, {0x1202}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x1234, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d60, 0x0d4d, 0x0d47}, { {0, 1, 1, {0x123c}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x1235, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0c, 0x0d4d, 0x0d48}, { {0, 1, 1, {0x1203}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x1236, 0x058f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d61, 0x0d4d, 0x0d4a}, { {0, 1, 1, {0x123d}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 3, {0x1234, 0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0e, 0x0d4d, 0x0d4b}, { {0, 1, 1, {0x1204}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 3, {0x1235, 0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d0f, 0x0d4d, 0x0d4c}, { {0, 1, 1, {0x1205}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x123b}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d10, 0x0d4d, 0x0d3e}, { {0, 1, 1, {0x1206}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x122e}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d12, 0x0d4d, 0x0d3f}, { {0, 1, 1, {0x1207}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x122f}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d13, 0x0d4d, 0x0d40}, { {0, 1, 1, {0x1208}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x1230}}, {-1, 1, 1, {0} } } }, - { 3, {0x0d14, 0x0d4d, 0x0d4c}, { {0, 1, 1, {0x1209}}, {1, 2, 2, {0x058f, 0x123a}}, {2, 3, 2, {0x058f, 0x123b}}, {-1, 1, 1, {0} } } }, - { -1, {0}, -1, -1, 0, {0}} -}; - -/** - This array of structs is used in the test routine - CTGlyphSelection::TestThai_InvalidGlyphClusters() to verify that - GetCharacterPosition() correctly uses the dotted circle character - when it crosses a glyph cluster boundary and finds invalid combining - characters. -*/ -LOCAL_D const TTestInput_PositionParam2 Thai_GlyphClusterBoundaries[] = { -// --TEXT---------------- --INVOKE 1--------------- --INVOKE 2---------------- - -//0.TEST D1 - Control character - skipped - -//0.TEST D2 - Non Thai letter - { 2, {0x0E3F, 0x0E5B}, {{0, 1, 1, {0x0E3F}}, {1, 2, 1, {0x0E5B}}}}, - { 2, {0x0041, 0x0E03}, {{0, 1, 1, {0x0041}}, {1, 2, 1, {0x0E03}}}}, - { 2, {0x0E2F, 0x0E40}, {{0, 1, 1, {0x0E2F}}, {1, 2, 1, {0x0E40}}}}, - { 2, {0x0E3F, 0x0E30}, {{0, 1, 1, {0x0E3F}}, {1, 2, 1, {0x0E30}}}}, - { 2, {0x0E46, 0x0E45}, {{0, 1, 1, {0x0E46}}, {1, 2, 1, {0x0E45}}}}, - { 2, {0x0E4F, 0x0E24}, {{0, 1, 1, {0x0E4F}}, {1, 2, 1, {0x0E24}}}}, - - { 2, {0x0E50, 0x0E38}, {{0, 1, 1, {0x0E50}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 2, {0x0E51, 0x0E39}, {{0, 1, 1, {0x0E51}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 2, {0x0E52, 0x0E3A}, {{0, 1, 1, {0x0E52}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 2, {0x0E55, 0x0E49}, {{0, 1, 1, {0x0E55}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 2, {0x0E56, 0x0E4C}, {{0, 1, 1, {0x0E56}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 2, {0x0E58, 0x0E47}, {{0, 1, 1, {0x0E58}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 2, {0x0E59, 0x0E4E}, {{0, 1, 1, {0x0E59}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 2, {0x0E5A, 0x0E34}, {{0, 1, 1, {0x0E5A}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 2, {0x0E5B, 0x0E31}, {{0, 1, 1, {0x0E5B}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 2, {0x005A, 0x0E37}, {{0, 1, 1, {0x005A}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//16.TEST D3 - Thai consonant - { 2, {0x0E01, 0x0E3F}, {{0, 1, 1, {0x0E01}}, {1, 2, 1, {0x0E3F}}}}, - { 2, {0x0E01, 0x0E03}, {{0, 1, 1, {0x0E01}}, {1, 2, 1, {0x0E03}}}}, - { 2, {0x0E02, 0x0E40}, {{0, 1, 1, {0x0E02}}, {1, 2, 1, {0x0E40}}}}, - { 2, {0x0E03, 0x0E30}, {{0, 1, 1, {0x0E03}}, {1, 2, 1, {0x0E30}}}}, - { 2, {0x0E04, 0x0E45}, {{0, 1, 1, {0x0E04}}, {1, 2, 1, {0x0E45}}}}, - { 2, {0x0E05, 0x0E24}, {{0, 1, 1, {0x0E05}}, {1, 2, 1, {0x0E24}}}}, - - { 2, {0x0E06, 0x0E38}, {{0, 2, 2, {0x0E06, 0x0E38}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E07, 0x0E39}, {{0, 2, 2, {0x0E07, 0x0E39}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E23, 0x0E3A}, {{0, 2, 2, {0x0E23, 0x0E3A}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E25, 0x0E49}, {{0, 2, 2, {0x0E25, 0xF70B}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E27, 0x0E4C}, {{0, 2, 2, {0x0E27, 0xF70E}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E28, 0x0E47}, {{0, 2, 2, {0x0E28, 0x0E47}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E29, 0x0E4E}, {{0, 2, 2, {0x0E29, 0x0E4E}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E2A, 0x0E34}, {{0, 2, 2, {0x0E2A, 0x0E34}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E2D, 0x0E31}, {{0, 2, 2, {0x0E2D, 0x0E31}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E2E, 0x0E37}, {{0, 2, 2, {0x0E2E, 0x0E37}}, {-1, -1, 0, {0}}}}, - -//32.TEST D4 - Thai leading vowel - { 2, {0x0E40, 0x0E3F}, {{0, 1, 1, {0x0E40}}, {1, 2, 1, {0x0E3F}}}}, - { 2, {0x0E41, 0x0E03}, {{0, 1, 1, {0x0E41}}, {1, 2, 1, {0x0E03}}}}, - { 2, {0x0E42, 0x0E40}, {{0, 1, 1, {0x0E42}}, {1, 2, 1, {0x0E40}}}}, - { 2, {0x0E43, 0x0E30}, {{0, 1, 1, {0x0E43}}, {1, 2, 1, {0x0E30}}}}, - { 2, {0x0E44, 0x0E45}, {{0, 1, 1, {0x0E44}}, {1, 2, 1, {0x0E45}}}}, - { 2, {0x0E44, 0x0E24}, {{0, 1, 1, {0x0E44}}, {1, 2, 1, {0x0E24}}}}, - - { 2, {0x0E40, 0x0E38}, {{0, 1, 1, {0x0E40}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 2, {0x0E41, 0x0E39}, {{0, 1, 1, {0x0E41}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 2, {0x0E42, 0x0E3A}, {{0, 1, 1, {0x0E42}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 2, {0x0E43, 0x0E49}, {{0, 1, 1, {0x0E43}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 2, {0x0E44, 0x0E4C}, {{0, 1, 1, {0x0E44}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 2, {0x0E40, 0x0E47}, {{0, 1, 1, {0x0E40}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 2, {0x0E41, 0x0E4E}, {{0, 1, 1, {0x0E41}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 2, {0x0E42, 0x0E34}, {{0, 1, 1, {0x0E42}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 2, {0x0E43, 0x0E31}, {{0, 1, 1, {0x0E43}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 2, {0x0E44, 0x0E37}, {{0, 1, 1, {0x0E44}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//48.TEST D5 - Thai following vowel 1 - { 2, {0x0E30, 0x0E3F}, {{0, 1, 1, {0x0E30}}, {1, 2, 1, {0x0E3F}}}}, - { 2, {0x0E32, 0x0E03}, {{0, 1, 1, {0x0E32}}, {1, 2, 1, {0x0E03}}}}, - { 2, {0x0E33, 0x0E40}, {{0, 1, 2, {KUnicodeDottedCircle, 0x0E33}},{1, 2, 1, {0x0E40}}}}, - { 2, {0x0E30, 0x0E30}, {{0, 1, 1, {0x0E30}}, {1, 2, 1, {0x0E30}}}}, - { 2, {0x0E32, 0x0E45}, {{0, 1, 1, {0x0E32}}, {1, 2, 1, {0x0E45}}}}, - { 2, {0x0E33, 0x0E24}, {{0, 1, 2, {KUnicodeDottedCircle, 0x0E33}},{1, 2, 1, {0x0E24}}}}, - - { 2, {0x0E30, 0x0E38}, {{0, 1, 1, {0x0E30}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 2, {0x0E32, 0x0E39}, {{0, 1, 1, {0x0E32}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 2, {0x0E33, 0x0E3A}, {{0, 1, 2, {KUnicodeDottedCircle, 0x0E33}},{1, 2, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 2, {0x0E30, 0x0E49}, {{0, 1, 1, {0x0E30}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 2, {0x0E32, 0x0E4C}, {{0, 1, 1, {0x0E32}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 2, {0x0E33, 0x0E47}, {{0, 1, 2, {KUnicodeDottedCircle, 0x0E33}},{1, 2, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 2, {0x0E30, 0x0E4E}, {{0, 1, 1, {0x0E30}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 2, {0x0E32, 0x0E34}, {{0, 1, 1, {0x0E32}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 2, {0x0E33, 0x0E31}, {{0, 1, 2, {KUnicodeDottedCircle, 0x0E33}},{1, 2, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 2, {0x0E30, 0x0E37}, {{0, 1, 1, {0x0E30}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//64.TEST D6 - Thai following vowel 2 - { 2, {0x0E45, 0x0E3F}, {{0, 1, 1, {0x0E45}}, {1, 2, 1, {0x0E3F}}}}, - { 2, {0x0E45, 0x0E03}, {{0, 1, 1, {0x0E45}}, {1, 2, 1, {0x0E03}}}}, - { 2, {0x0E45, 0x0E40}, {{0, 1, 1, {0x0E45}}, {1, 2, 1, {0x0E40}}}}, - { 2, {0x0E45, 0x0E30}, {{0, 1, 1, {0x0E45}}, {1, 2, 1, {0x0E30}}}}, - { 2, {0x0E45, 0x0E45}, {{0, 1, 1, {0x0E45}}, {1, 2, 1, {0x0E45}}}}, - { 2, {0x0E45, 0x0E24}, {{0, 1, 1, {0x0E45}}, {1, 2, 1, {0x0E24}}}}, - - { 2, {0x0E45, 0x0E38}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 2, {0x0E45, 0x0E39}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 2, {0x0E45, 0x0E3A}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 2, {0x0E45, 0x0E49}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 2, {0x0E45, 0x0E4C}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 2, {0x0E45, 0x0E47}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 2, {0x0E45, 0x0E4E}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 2, {0x0E45, 0x0E34}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 2, {0x0E45, 0x0E31}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 2, {0x0E45, 0x0E37}, {{0, 1, 1, {0x0E45}}, {1, 2, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//80.TEST D7 - Thai following vowel 3 - { 2, {0x0E24, 0x0E3F}, {{0, 1, 1, {0x0E24}}, {1, 2, 1, {0x0E3F}}}}, - { 2, {0x0E26, 0x0E03}, {{0, 1, 1, {0x0E26}}, {1, 2, 1, {0x0E03}}}}, - { 2, {0x0E24, 0x0E40}, {{0, 1, 1, {0x0E24}}, {1, 2, 1, {0x0E40}}}}, - { 2, {0x0E26, 0x0E30}, {{0, 1, 1, {0x0E26}}, {1, 2, 1, {0x0E30}}}}, - { 2, {0x0E24, 0x0E45}, {{0, 1, 1, {0x0E24}}, {1, 2, 1, {0x0E45}}}}, - { 2, {0x0E26, 0x0E24}, {{0, 1, 1, {0x0E26}}, {1, 2, 1, {0x0E24}}}}, - - { 2, {0x0E24, 0x0E38}, {{0, 2, 2, {0x0E24, 0xF718}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E26, 0x0E39}, {{0, 2, 2, {0x0E26, 0xF719}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E24, 0x0E3A}, {{0, 2, 2, {0x0E24, 0xF71A}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E26, 0x0E49}, {{0, 2, 2, {0x0E26, 0xF70B}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E24, 0x0E4C}, {{0, 2, 2, {0x0E24, 0xF70E}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E26, 0x0E47}, {{0, 2, 2, {0x0E26, 0x0E47}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E24, 0x0E4E}, {{0, 2, 2, {0x0E24, 0x0E4E}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E26, 0x0E34}, {{0, 2, 2, {0x0E26, 0x0E34}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E24, 0x0E31}, {{0, 2, 2, {0x0E24, 0x0E31}}, {-1, -1, 0, {0}}}}, - { 2, {0x0E26, 0x0E37}, {{0, 2, 2, {0x0E26, 0x0E37}}, {-1, -1, 0, {0}}}}, - -//96.TEST D8 - Thai NO NU & Below Vowel 1 - { 3, {0x0E19, 0x0E38, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E38, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E38, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E38, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E38, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E38, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E38, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E38, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E38, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E38, 0x0E49}, {{0, 3, 3, {0x0E19, 0x0E38, 0xF70B}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E19, 0x0E38, 0x0E4C}, {{0, 3, 3, {0x0E19, 0x0E38, 0xF70E}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E19, 0x0E38, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E38, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E38, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E38, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E38, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E38}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//112.TEST D9 - Thai NO NU & Below Vowel 2 - { 3, {0x0E19, 0x0E39, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E39, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E39, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E39, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E39, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E39, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E39, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E39, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E39, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E39, 0x0E49}, {{0, 3, 3, {0x0E19, 0x0E39, 0xF70B}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E19, 0x0E39, 0x0E4C}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E39, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E39, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E39, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E39, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E39, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E39}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//128.TEST D10 - Thai NO NU & Below Diacritic - { 3, {0x0E19, 0x0E3A, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E3A, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E49}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E4C}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E3A, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E3A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//144.TEST D11 - Thai NO NU & Tone mark - { 3, {0x0E19, 0x0E48, 0x0E3F}, {{0, 2, 2, {0x0E19, 0xF70A}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E49, 0x0E03}, {{0, 2, 2, {0x0E19, 0xF70B}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E4A, 0x0E40}, {{0, 2, 2, {0x0E19, 0xF70C}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E4B, 0x0E30}, {{0, 2, 2, {0x0E19, 0xF70D}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E48, 0x0E45}, {{0, 2, 2, {0x0E19, 0xF70A}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E49, 0x0E24}, {{0, 2, 2, {0x0E19, 0xF70B}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E4A, 0x0E38}, {{0, 2, 2, {0x0E19, 0xF70C}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E4B, 0x0E39}, {{0, 2, 2, {0x0E19, 0xF70D}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E48, 0x0E3A}, {{0, 2, 2, {0x0E19, 0xF70A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E49, 0x0E49}, {{0, 2, 2, {0x0E19, 0xF70B}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 3, {0x0E19, 0x0E4A, 0x0E4C}, {{0, 2, 2, {0x0E19, 0xF70C}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E4B, 0x0E47}, {{0, 2, 2, {0x0E19, 0xF70D}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E48, 0x0E4E}, {{0, 2, 2, {0x0E19, 0xF70A}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E49, 0x0E34}, {{0, 2, 2, {0x0E19, 0xF70B}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E4A, 0x0E31}, {{0, 2, 2, {0x0E19, 0xF70C}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E4B, 0x0E37}, {{0, 2, 2, {0x0E19, 0xF70D}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//160.TEST D12 - Thai NO NU & Above Diacritic 1 - { 3, {0x0E19, 0x0E4C, 0x0E3F}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E4C, 0x0E40}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E4C, 0x0E45}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E4C, 0x0E38}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E4C, 0x0E3A}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E49}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 3, {0x0E19, 0x0E4C, 0x0E4C}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E4C, 0x0E4E}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E4C, 0x0E31}, {{0, 2, 2, {0x0E19, 0xF70E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E4D, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E4D}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//176.TEST D13 - Thai NO NU & Above Diacritic 2 - { 3, {0x0E19, 0x0E47, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E47, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E47, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E47, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E47, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E47, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E47, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E47, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E47, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E47, 0x0E49}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 3, {0x0E19, 0x0E47, 0x0E4C}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E47, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E47, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E47, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E47, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E47, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E47}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//176.TEST D14 - Thai NO NU & Above Diacritic 3 - { 3, {0x0E19, 0x0E4E, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E4E, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E49}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E4C}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E4E, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E4E}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//192.TEST D15 - Thai NO NU & Above Vowel 1 - { 3, {0x0E19, 0x0E34, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E34, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E34, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E34, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E34, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E34, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E34, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E34, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E34, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E34, 0x0E49}, {{0, 3, 3, {0x0E19, 0x0E34, 0x0E49}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E19, 0x0E34, 0x0E4C}, {{0, 3, 3, {0x0E19, 0x0E34, 0x0E4C}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E19, 0x0E34, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E34, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E34, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E34, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E34, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//208.TEST D16 - Thai NO NU & Above Vowel 2 - { 3, {0x0E19, 0x0E31, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E36, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E36}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E31, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E36, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E36}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E31, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E36, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E36}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E31, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E36, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E36}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E31, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E36, 0x0E49}, {{0, 3, 3, {0x0E19, 0x0E36, 0x0E49}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E19, 0x0E31, 0x0E4C}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E36, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E36}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E31, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E36, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E36}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E31, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E31}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E36, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E36}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//240.TEST D17 - Thai NO NU & Above Vowel 3 - { 3, {0x0E19, 0x0E35, 0x0E3F}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 1, {0x0E3F}}}}, - { 3, {0x0E19, 0x0E37, 0x0E03}, {{0, 2, 2, {0x0E19, 0x0E37}}, {2, 3, 1, {0x0E03}}}}, - { 3, {0x0E19, 0x0E35, 0x0E40}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 1, {0x0E40}}}}, - { 3, {0x0E19, 0x0E37, 0x0E30}, {{0, 2, 2, {0x0E19, 0x0E37}}, {2, 3, 1, {0x0E30}}}}, - { 3, {0x0E19, 0x0E35, 0x0E45}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 1, {0x0E45}}}}, - { 3, {0x0E19, 0x0E37, 0x0E24}, {{0, 2, 2, {0x0E19, 0x0E37}}, {2, 3, 1, {0x0E24}}}}, - - { 3, {0x0E19, 0x0E35, 0x0E38}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E38}}}}, - { 3, {0x0E19, 0x0E37, 0x0E39}, {{0, 2, 2, {0x0E19, 0x0E37}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E39}}}}, - { 3, {0x0E19, 0x0E35, 0x0E3A}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E3A}}}}, - { 3, {0x0E19, 0x0E37, 0x0E49}, {{0, 3, 3, {0x0E19, 0x0E37, 0x0E49}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E19, 0x0E35, 0x0E4C}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70E}}}}, - { 3, {0x0E19, 0x0E37, 0x0E47}, {{0, 2, 2, {0x0E19, 0x0E37}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E19, 0x0E35, 0x0E4E}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4E}}}}, - { 3, {0x0E19, 0x0E37, 0x0E34}, {{0, 2, 2, {0x0E19, 0x0E37}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E34}}}}, - { 3, {0x0E19, 0x0E35, 0x0E31}, {{0, 2, 2, {0x0E19, 0x0E35}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E31}}}}, - { 3, {0x0E19, 0x0E37, 0x0E37}, {{0, 2, 2, {0x0E19, 0x0E37}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E37}}}}, - -//256.TEST D18a - Test Thai combining marks stack over a dotted circle. - { 2, {0x0E36, 0x0E48}, {{0, 2, 3, {KUnicodeDottedCircle, 0x0E36, 0x0E48}}, {-1, -1, 0, {0}}}}, - -//257.TEST D18b - Test non-thai consonant preceding two tone/signs in a row - { 2, {0x0041, 0x0E48, 0x0E49}, {{1, 2, 2, {KUnicodeDottedCircle, 0xF70A}}, {2, 3, 2, {KUnicodeDottedCircle, 0xF70B}}}}, - -//258. TEST DEF038524 - Test WTT2.0 Rare 4 optional combinations 0xBE, 0xDE, 0xE7, 0xF7 -//3 Not supported, but render should degrade display to not overstrike at a minimum. 1 is supported. - { 3, {0x0E01, 0x0E35, 0x0E47}, {{0, 2, 2, {0x0E01, 0x0E35}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E01, 0x0E37, 0x0E47}, {{0, 2, 2, {0x0E01, 0x0E37}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E47}}}}, - { 3, {0x0E01, 0x0E38, 0x0E4D}, {{0, 3, 3, {0x0E01, 0x0E38, 0x0E4D}}, {-1, -1, 0, {0}}}}, - { 3, {0x0E01, 0x0E34, 0x0E4D}, {{0, 2, 2, {0x0E01, 0x0E34}}, {2, 3, 2, {KUnicodeDottedCircle, 0x0E4D}}}}, - -//246.TABLE END - { -1, {0}, {{-1, -1, 0, {0}}, {-1, -1, 0, {0}}}} - }; - - -// -// --- CLASS CTGlyphSelection -------------------------------------------- -// - - -CTGlyphSelection::CTGlyphSelection(CTestStep* aStep) : - CTGraphicsBase(aStep), - iTestFont(NULL), - iTestGraphicsDevice(NULL), - iTestGraphicsContext(NULL) - { - } - - -CTGlyphSelection::~CTGlyphSelection() -/** - This method cleans up after testing is finished. It releases memory - allocated by the test obejct at a point before object destruction. -*/ - { - delete iTestGraphicsContext; - delete iTestGraphicsDevice; - delete iTestFont; - iFs.Close(); - } - -void CTGlyphSelection::ConstructL() - { - CreateTestGraphicsContextL(); - User::LeaveIfError(iFs.Connect()); - } - -void CTGlyphSelection::CreateTestGraphicsContextL() -/** - This method sets-up the context data for the proceeding test cases. -*/ - { - // Setup 400 pixel dummy graphics test device. - TSize windowSize(400, 400); - iTestGraphicsDevice = CTestGraphicsDevice::NewL(windowSize); - - // Create a dummy graphics test context. - CGraphicsContext* tContext = NULL; - TEST(iTestGraphicsDevice->CreateContext(tContext) == KErrNone); - iTestGraphicsContext = static_cast<CTestGraphicsContext*>(tContext); - - // Allocate the dummy test font to be used. - iTestFont = new (ELeave) CTestFont; - } - - -LOCAL_C TInt TestApiBoundaries_TC2(TAny* aData) -/** - This is a root thread function which runs as part of the test case - CTGlyphSelection::TestApiBoundaries(). It tests a panic - is produced when an invalid text descriptor is supplied in the - TPositionParam argument. -*/ - { - CTGlyphSelection* testPtr = (CTGlyphSelection*)aData; - - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - - testPtr->iTestFont->GetCharacterPosition(param); - - // Line above panics if component in UDEB is working OK; - // should never get here if component is in UDEB. - - // If component is in UREL, then could reach here. - - return (0); - } - - -LOCAL_C TInt TestApiBoundaries_TC5(TAny* aData) -/** - This is a root thread function which runs as part of the test case - CTGlyphSelection::TestApiBoundaries(). It tests a panic - is produced when a negative text position is supplied in the - TPositionParam argument. -*/ - { - CTGlyphSelection* testPtr = (CTGlyphSelection*)aData; - - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - _LIT16(KText_aaaa, "aaaa"); - param.iText.Set(KText_aaaa); - param.iPosInText = -10; - param.iPen.iX = param.iPen.iY = 0; - - testPtr->iTestFont->GetCharacterPosition(param); - - // Line above panics if component in UDEB is working OK; - // should never get here if component is in UDEB. - - // If component is in UREL, then could reach here. - - return (0); - } - - -void CTGlyphSelection::TestApiBoundaries() -/** - This method is a test case to exercise GetCharacterPosition() with - parameter values at range boundaries and in some cases out-or-raange. -*/ - { - TBool r; - TBuf<20> testText(0); - - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - // 1: Check input arguments in paramter not modified - testText = _L16("a"); - param.iText.Set(testText); - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iDirection == CFont::EHorizontal - && param.iFlags == CFont::TPositionParam::EFLogicalOrder - && param.iText.Ptr() == testText.Ptr()); - - // 2: Check invalid iText descriptor panics (when component in UDEB) - // When component built in UREL, behaviour is undefined, so do not test. - TRequestStatus threadStatus; - RThread thread; - TInt rc; - TBool jit; - jit = User::JustInTime(); - User::SetJustInTime(EFalse); - rc = thread.Create(KThread2NameFirst, TestApiBoundaries_TC2, - KDefaultStackSize, KMinHeapSize, KMinHeapSize*4, this); - TEST(KErrNone == rc); - thread.Logon(threadStatus); - thread.Resume(); - User::WaitForRequest(threadStatus); - - if (thread.ExitType() == EExitPanic) - { - TEST (thread.ExitReason() == EGdiPanic_InvalidInputParam); - INFO_PRINTF2(_L("Exit reason %d"), thread.ExitReason()); - TExitCategoryName exitCategory = thread.ExitCategory(); - INFO_PRINTF2(_L("Exit category %S"), &exitCategory); - } - else - { - // Function does not panic on invalid input; - // Warn that this is only valid behaviour if the GDI component being tested is built in UREL mode - // and there is a problem if the function has not panicked if the GDI component is build in UDEB mode - INFO_PRINTF1(_L("Warning: GetCharacterPosition() when given invalid iText descriptor has not panicked - this is only ok if the GDI component is built in UREL mode. If the GDI component is built in UDEB mode, then there is a problem.")); - } - thread.Close(); - User::SetJustInTime(jit); - - // 3: Zero length text descriptor - testText = _L(""); - param.iText.Set(testText); - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(!r && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - // 4: Position in text beyond descriptor length - testText = _L16("a"); - param.iText.Set(testText); - param.iPosInText = 5; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(!r && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - // 5: Position in text is negative, should panic (when component in UDEB) - // When component built in UREL, behaviour is undefined, so do not test. - jit = User::JustInTime(); - User::SetJustInTime(EFalse); - rc = thread.Create(KThread2NameSecond, TestApiBoundaries_TC5, - KDefaultStackSize, KMinHeapSize, KMinHeapSize*4, this); - TEST(KErrNone == rc); - thread.Logon(threadStatus); - thread.Resume(); - User::WaitForRequest(threadStatus); - - if (thread.ExitType() == EExitPanic) - { - TEST (thread.ExitReason() == EGdiPanic_InvalidInputParam); - INFO_PRINTF2(_L("Exit reason %d"), thread.ExitReason()); - TExitCategoryName exitCategory = thread.ExitCategory(); - INFO_PRINTF2(_L("Exit category %S"), &exitCategory); - } - else - { - // Function does not panic on invalid input; - // Warn that this is only valid behaviour if the GDI component being tested is built in UREL mode - // and there is a problem if the function has not panicked if the GDI component is build in UDEB mode - INFO_PRINTF1(_L("Warning: GetCharacterPosition() when given negative iPosInText has not panicked - this is only ok if the GDI component is built in UREL mode. If the GDI component is built in UDEB mode, then there is a problem.")); - } - - thread.Close(); - User::SetJustInTime(jit); - - // 6: Check 'No-char-data' condition handled - testText = _L16("A\033C"); - param.iText.Set(testText); - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST( !r - && param.iPosInText == 2 - && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - // 7: Check "Not-a-Char" condition handled - testText = _L16("\xFFFF\xFFFE\xFFFF\xFFFF\xFFFF\xFFFE\xFFFF\xFFFF\xFFFF\xFFFE\xFFFF\xFFFF"); - param.iText.Set(testText); - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST( r - && param.iPosInText == 1 - && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - param.iPosInText = 5; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST( r - && param.iPosInText == 6 - && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - // 8. Check that a cluster cannot be made from heterogeneous elements - // (in this case a 6 with a Hindi virama) - testText = _L16("6\x94D"); - param.iText.Set(testText); - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iOutputGlyphs == 1); - } - -inline TBool IsSupplementary(TUint aChar) -/** -@param aChar The 32-bit code point value of a Unicode character. - -@return True, if aChar is supplementary character; false, otherwise. -*/ - { - return (aChar > 0xFFFF); - } - -inline TBool IsSurrogate(TText16 aInt16) -/** -@return True, if aText16 is high surrogate or low surrogate; false, otherwise. -*/ - { - return (aInt16 & 0xF800) == 0xD800; - } - -inline TText16 GetHighSurrogate(TUint aChar) -/** -Retrieve the high surrogate of a supplementary character. - -@param aChar The 32-bit code point value of a Unicode character. - -@return High surrogate of aChar, if aChar is a supplementary character; - aChar itself, if aChar is not a supplementary character. -*/ - { - return STATIC_CAST(TText16, 0xD7C0 + (aChar >> 10)); - } - -inline TText16 GetLowSurrogate(TUint aChar) -/** -Retrieve the low surrogate of a supplementary character. - -@param aChar The 32-bit code point value of a Unicode character. - -@return Low surrogate of aChar, if aChar is a supplementary character; - zero, if aChar is not a supplementary character. -*/ - { - return STATIC_CAST(TText16, 0xDC00 | (aChar & 0x3FF)); - } - -void CTGlyphSelection::TestCodepoint(TUint aCodepoint, CFont* aFont) -/** - This helper routine is used by the test case - CTGlyphSelection::TestCtrlCharsIgnored(). -@param aCodepoint - The Unicode character to test. -@param aFont - The font to use in the test. -*/ - { - TInt expectResultPosInText; - - const TInt KTestTextLen = 5; - TBuf<16> testText(KTestTextLen); - testText[0] = 'a'; - testText[1] = 'b'; - if (IsSupplementary(aCodepoint)) - { - testText[2] = GetHighSurrogate(aCodepoint); - testText[3] = GetLowSurrogate(aCodepoint); - expectResultPosInText = 4; - } - else - { - testText[2] = aCodepoint; - testText[3] = 'c'; - expectResultPosInText = 3; - } - testText[4] = 'd'; - - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - param.iText.Set(testText); - param.iPen.iX = param.iPen.iY = 0; - param.iPosInText = 2; - TBool r = aFont->GetCharacterPosition(param); - - TEST(r && param.iPosInText == expectResultPosInText - && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - } - - -void CTGlyphSelection::TestCtrlCharsIgnored() -/** - This method is a test case to test GetCharacterPosition() copes - with formatting and control characters in the text supplied by - ignoring them. -*/ - { - static const TUint testData[] = { - // 1: Formatting control codes Unicode3-p499&p500 - 0x200C, 0x200D, 0x200E, 0x200F, - 0x202A, 0x202B, 0x202C, 0x202D, 0x202E, - // 3: Non-character codes Unicode3-p846 U+FFFE? - // Original: - // 0xFFFF - // 4: Latin Ctrl codes U+0000..U+001F, U+007F Unicode3-p??? - // 5: Latin Supplement Ctrl code U+0080..U+009F Unicode3-p??? - // 6: Supplementary characters (scripts outside BMP still not supported) - }; - static const TUint testDataLength = sizeof(testData)/sizeof(testData[0]); - - for (TUint i = 0; i < testDataLength; i++) - TestCodepoint(testData[i], iTestFont); - } - - -void CTGlyphSelection::TestLatinChars() -/** - This method is a test case to test GetCharacterPosition() correctly - processes characters from the Latin code page returning appropriate glyphs - codes. -*/ - { - TBool r; - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - _LIT16(KText_aBc_1, "aBc 1"); - param.iText.Set(KText_aBc_1); - - // 1: Latin glyph at start of text - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 1 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 'a'); - - // 2: Latin glyph in middle of text - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 2 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 'B'); - - // 3: Latin glyph at end of text - param.iPosInText = 4; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 5 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == '1'); - - // 4: Latin space glyph - param.iPosInText = 3; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 4 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == ' '); - } - - -void CTGlyphSelection::TestSoftHyphen() -/** - This method is a test case to test GetCharacterPosition() correctly - processes soft hyphen chars by ignoring them if they are NOT at the - end of the text (aka end of the line). -*/ - { - TBool r; - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - _LIT16(KText_DKNY, "DK\xadNY\xad"); - param.iText.Set(KText_DKNY); - - // 1: Invoke on char before hyphen position - // This test returns only the glyph of the char before the hyphen - // treating the hyphen as another base char which end scanning. - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 2 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 'K'); - - // 2: Invoke on hyphen position - // This test should show it ignores and skips soft hyphens returning - // no hyphen glyph. This is because soft hyphen are not visible when - // in middle of lines. - param.iPosInText = 2; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 3 - && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - // 3: Invoke on hyphen position when hyphen at end of text - // This test should result in the hyphen glyph being returned as it - // is expect to be visible when it is at the end of the text supplied. - param.iPosInText = 5; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 6 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x00AD); - - } - - -void CTGlyphSelection::TestSurrogates() -/** - This method is a test case to test GetCharacterPosition() correctly - processes surrogate pairs. -*/ - { - static const TUint validPairs[] = { - // Hi Lo Code Hi Lo Code Hi Lo Code - 0xD800, 0xDC00, 0x00010000, 0xD800, 0xDE9A, 0x0001029A, 0xD800, 0xDFFF, 0x000103FF, - 0xD89A, 0xDC00, 0x00036800, 0xD89A, 0xDE9A, 0x00036A9A, 0xD89A, 0xDFFF, 0x00036BFF, - 0xDBFF, 0xDC00, 0x0010FC00, 0xDBFF, 0xDE9A, 0x0010FE9A, 0xDBFF, 0xDFFF, 0x0010FFFF - }; - static const TUint validPairsLength = sizeof(validPairs)/sizeof(TText16); - - TBool r; - TBuf<20> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - // 1: Test valid surrogate pair chars - testText.SetLength(5); - testText[0] = 'a'; - testText[3] = 'D'; - testText[4] = '1'; - param.iText.Set(testText); - for (TUint i = 0; i < validPairsLength/3; i+=3) - { - testText[1] = (TText16) validPairs[i]; - testText[2] = (TText16) validPairs[i+1]; - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 3 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == validPairs[i+2]); - } - - // 2: Test unpaired high surrogate chars - testText[1] = 0xD809; - testText[2] = 'a'; - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 2 - && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - // 3: Test unpaired low surrogate chars - testText[1] = 'a'; - testText[2] = 0xDC09; - param.iPosInText = 2; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 3 - && param.iPen.iX == 0 - && param.iOutputGlyphs == 0); - - // 4: Test latin/surrogate boundry ensuring surrogate not skipped! - testText[1] = (TText16) validPairs[0]; - testText[2] = (TText16) validPairs[1]; - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 1 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode =='a'); - } - - -/** -@SYMTestCaseID TI18N-GDI-CIT-4077 -@SYMTestCaseDesc Automated GDI testing for GB18030 ExtB -@SYMTestPriority High -@SYMTestActions Attempt to get glyph information for GB18030 ExtB characters. -@SYMTestExpectedResults The expected glyph clusters for given Unicode charactors must be returned -@SYMPREQ 2471: UTF-16 compliant text handling -*/ -void CTGlyphSelection::TestNonBmpCharsInGB18030(CFbsFont* aFont) - { - INFO_PRINTF1(_L("Test GB18030 non-BMP Glyphs")); - // Do the testing - - TBool r; - TBuf<30> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(4); - - // 201AD = D840, DDAD - testText[0] = 0xD840; - testText[1] = 0xDDAD; - - // 253BB = D854, DFBB - testText[2] = 0xD854; - testText[3] = 0xDFBB; - - param.iText.Set(testText); - - RShapeInfo aShapeInfo; - - // Do the testing - - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 2 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x000201AD); - - INFO_PRINTF5(_L("The result of this shaping is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 2; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 4 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x000253BB); - - - INFO_PRINTF5(_L("The result of this shaping is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - // Close aShapeInfo which releases any memory it is occupying - if (aShapeInfo.IsOpen()) - aShapeInfo.Close(); - - } - - -void CTGlyphSelection::TestCombiningLatinChars() -/** - This method is a test case to test GetCharacterPosition() correctly - processes regular latin characters with diacritics. -*/ - { - TBool r; - TBuf<20> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(10); - testText[0] = 'A'; - testText[1] = ' '; - testText[2] = 'A'; - testText[3] = 0x0300; // Above Grave Acent - testText[4] = 'I'; - testText[5] = 0x0330; // Below Tidle - testText[6] = 'o'; - testText[7] = 0x0308; // Above Diaeresis - testText[8] = 0x032F; // Below Inverted Breve - testText[9] = 'M'; - param.iText.Set(testText); - - // 1: Latin base with following space - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 1 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 'A'); - - // 2: Latin base with 1 combining above diacritic - param.iPosInText = 2; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - // Will Compose A (0x41) followed by grave accent (0x300) into A grave (0xC0) - TEST(r && param.iPosInText == 4 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0xC0 - && param.iOutput[0].iBounds.iTl == TPoint(0,-10) - && param.iOutput[0].iBounds.iBr == TPoint(10,2)); - - // 3: Latin base with 1 combining below diacritic - param.iPosInText = 4; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - // Will compose I (0x49) with tilde below (0x330) into I with tilde below (0x1E2C) - TEST(r && param.iPosInText == 6 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1E2C - && param.iOutput[0].iBounds.iTl == TPoint(0,-10) - && param.iOutput[0].iBounds.iBr == TPoint(10,2)); - - // 4: Latin base with 2 combining diacritic - param.iPosInText = 6; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 9 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 'o' - && param.iOutput[0].iBounds.iTl == TPoint(0,-10) - && param.iOutput[0].iBounds.iBr == TPoint(10,2) - && param.iOutput[1].iCode == 0x0308 - && param.iOutput[1].iBounds.iTl == TPoint(0,-23) - && param.iOutput[1].iBounds.iBr == TPoint(10,-11) - && param.iOutput[2].iCode == 0x032F - && param.iOutput[2].iBounds.iTl == TPoint(0,3) - && param.iOutput[2].iBounds.iBr == TPoint(10,15)); - - // 5: Latin base with 9 combining chars, should exceed max output! - testText[0] = 'a'; - testText[1] = 0x0300; // Above Grave Acent - testText[2] = 0x0330; // Below Tidle - testText[3] = 0x0308; // Above Diaeresis - testText[4] = 0x032F; // Below Inverted Breve - testText[5] = 0x0300; // Above Grave Acent - testText[6] = 0x0330; // Below Tidle - testText[7] = 0x0308; // Above Diaeresis - testText[8] = 0x032F; // Below Inverted Breve - testText[9] = 0x0300; // Above Grave Acent - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 8 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 8 - && param.iOutput[0].iCode == 'a' - && param.iOutput[7].iCode == 0x0308); - } - -/* -Used for cleanup of RImplInfoArray implementationArray below -This method is stolen from FbsTop.cpp -*/ - -LOCAL_C void ResetAndDestroyRImplInfoPtrArray(TAny* aPtr) - { - RImplInfoPtrArray* array = reinterpret_cast <RImplInfoPtrArray*> (aPtr); - array->ResetAndDestroy(); - } - -LOCAL_C void LoadOpenFontLibraries(CFontStore* aFontStore) - { - - RImplInfoPtrArray implementationArray; - TCleanupItem cleanup(ResetAndDestroyRImplInfoPtrArray, &implementationArray); - CleanupStack::PushL(cleanup); - TInt error; - TInt ecomerror; - TInt ecomnotready; - TUid uid = {KUidOpenFontRasterizerPlunginInterface}; - - // Making sure that no race situation arises - // If ECom is not ready, give it another chance and try again. if it still doesn't work - // after the third try, then it just carries on quietly and fails... - for (ecomnotready =0; ecomnotready <3; ecomnotready++) - { - TRAP(ecomerror,REComSession::ListImplementationsL(uid,implementationArray)); - if (!ecomerror) - { - break; - } - else - { - ecomerror = 0; - User::After(0); - } - } - - const TInt availCount = implementationArray.Count(); - for (TInt count=0;count<availCount;++count) - { - const CImplementationInformation* info = implementationArray[count]; - TUid rasterizerUid = info->ImplementationUid(); - // Create a rasterizer - COpenFontRasterizer* rasterizer=0; - TRAP(error,rasterizer = COpenFontRasterizer::NewL(rasterizerUid)); - if (!error) - { - // Install it in the font store. - TRAP(error,aFontStore->InstallRasterizerL(rasterizer)); - if (error) - delete rasterizer; - } - } - CleanupStack::PopAndDestroy(&implementationArray); - - } - -void CTGlyphSelection::TestIsolatedCombiningLatinChars() -/** - This method is a test case to test GetCharacterPosition() correctly - processes isloated combining marks. -*/ - { - // Need to use a valid font so that GetCharacterPosition will be able to find the necessary glyph information. - _LIT16(KTestFontFile, "C:\\s60ssb_v500.ttf"); - _LIT16(KTestFontFaceName, "Series 60 Sans"); - - // create a font store for testing - CFontStore* fontStore = CFontStore::NewL(&User::Heap()); - //load all ecom implemented rasterizer dlls. installs the rasterizer. - LoadOpenFontLibraries(fontStore); - // test font preparation - fontStore->iKPixelWidthInTwips = 11860; //This value is default - //add any required font files - TUid err = fontStore->AddFileL(KTestFontFile); - TFontSpec testFontSpec(KTestFontFaceName,200); - - CFbsBitmap* bmp = new(ELeave) CFbsBitmap; - - TInt ret = bmp->Create(TSize(100,100),EGray2); - if (ret == KErrNotSupported) - return; - else - User::LeaveIfError(ret); - - CFbsBitmapDevice* device = NULL; - TRAPD(err2,device = CFbsBitmapDevice::NewL(bmp)); - TEST(err2 == KErrNone); - - CFbsBitGc* gc = NULL; - User::LeaveIfError(device->CreateContext(gc)); - // Font file Creation - CFbsFont* testFont = NULL; - User::LeaveIfError(device->GetNearestFontToDesignHeightInTwips(testFont,testFontSpec)); - gc->UseFont(testFont); - CleanupStack::PushL(testFont); - - // Now start the test case: - - TBool r; - TBuf<20> testText(0); - CFont::TPositionParam param; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(7); - testText[0] = 0x0323; //Below Dot - testText[1] = ' '; - testText[2] = 0x0300; //Above Grave Acent - testText[3] = ' '; - testText[4] = 0x0323; //Below Dot - testText[5] = 0x0300; //Above Grave Acent - testText[6] = 0x0301; //Above Acute Acent - param.iText.Set(testText); - - // 1: Test the bounds for combining below mark in isolation - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = testFont->GetCharacterPosition(param); - - TEST(r && param.iPosInText == 1 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x0323); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen == TPoint(0,0) - && param.iOutput[0].iBounds.iTl == TPoint(-6,1) - && param.iOutput[0].iBounds.iBr == TPoint(-4,3)); - #endif - - // 2: Test the bounds for combining above mark in isolation - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = testFont->GetCharacterPosition(param); - - TEST(r && param.iPosInText == 3 - && param.iOutputGlyphs == 2 - && param.iOutput[1].iCode == 0x0300); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen == TPoint(4,0) - && param.iOutput[1].iBounds.iTl == TPoint(-2,-15) - && param.iOutput[1].iBounds.iBr == TPoint(2,-12)); - #endif - - // 3: Test the bounds for multiple combing marks in isolation - param.iPosInText = 3; - param.iPen.iX = param.iPen.iY = 0; - r = testFont->GetCharacterPosition(param); - - TEST(r && param.iPosInText == 7 - && param.iOutputGlyphs == 4 - && param.iOutput[1].iCode == 0x0323 - && param.iOutput[2].iCode == 0x0300 - && param.iOutput[3].iCode == 0x0301); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen == TPoint(4,0) - && param.iOutput[1].iBounds.iTl == TPoint(-1,1) - && param.iOutput[1].iBounds.iBr == TPoint(1,3) - && param.iOutput[2].iBounds.iTl == TPoint(-2,-16) - && param.iOutput[2].iBounds.iBr == TPoint(2,-13) - && param.iOutput[3].iBounds.iTl == TPoint(-2,-20) - && param.iOutput[3].iBounds.iBr == TPoint(2,-17)); - #endif - - // Done with the font, pop it off. - CleanupStack::Pop(testFont); - - //Cleaning the memory - delete bmp; - delete device; - delete gc; - fontStore->RemoveFile(err); - delete fontStore; - REComSession::FinalClose(); - } - - -void CTGlyphSelection::TestContextInShapeInfo() -/** - This method is a test case to test GetCharacterPosition2() correctly - handle context. -*/ - { - TBool r; - TBuf<20> testText(0); - CFont::TPositionParam param; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - RShapeInfo shapeInfo; - - //test control characters which has not defined processFun in TTableEntry - testText.SetLength(7); - testText[0] = 0xffff; //control character, test for the range { 0xFFFE, 0xFFFF, 0} - testText[1] = '1'; - testText[2] = 0x200E; //control character, test for the range { 0x200C, 0x200F, 0} - testText[3] = '.'; - testText[4] = 'a'; - testText[5] = 0x202A; //control character, test for the range { 0x202A, 0x202E, 0} - testText[6] = ','; - - param.iText.Set(testText); - - // 1. Test '0xffff' as NULL context at position zero - - // 0xffff should not be taken as context, and character '1' can be rendered correctly - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition2(param, shapeInfo); - TEST(r && param.iPosInText == 2 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 49); - - // 2. Test '0x200E' - 0x200E is not rendered, either not treated as context. - // character '.' and 'a' should be rendered correctly. - param.iPosInText = 2; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition2(param, shapeInfo); - TEST(r && param.iPosInText == 3 - && param.iOutputGlyphs == 0); - - param.iPosInText = 3; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition2(param, shapeInfo); - TEST(r && param.iPosInText == 4 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 46); - - param.iPosInText = 4; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition2(param, shapeInfo); - TEST(r && param.iPosInText == 5 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 'a'); - - // 3. Test '0x202A' - 0x202A is not rendered, either not treated as context. - // character ',' should be rendered correctly. - param.iPosInText = 5; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition2(param, shapeInfo); - TEST(r && param.iPosInText == 6 - && param.iOutputGlyphs == 0); - - param.iPosInText = 6; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition2(param, shapeInfo); - TEST(r && param.iPosInText == 7 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 44); - } - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-1580 -@SYMTestCaseDesc Automated GDI testing for Hindi -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid and invalid Hindi glyph clusters. -@SYMTestExpectedResults The expected glyph clusters for given Unicode charactors must be returned -@SYMPREQ 18: Hindi for Bravo -*/ -void CTGlyphSelection::TestHindiChars(CFbsFont* aFont) - { - INFO_PRINTF1(_L("Test Hindi Glyphs")); - // Do the testing - - TBool r; - TBuf<30> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(30); - - testText[0] = 0x0930; - testText[1] = 0x093C; - testText[2] = 0x094D; - testText[3] = 0x0915; - - testText[4] = 0x0915; - testText[5] = 0x094D; - testText[6] = 0x0915; - - testText[7] = 0x0930; - testText[8] = 0x094D; - testText[9] = 0x0915; - - testText[10] = 0x0915; - testText[11] = 0x094D; - testText[12] = 0x0930; - - testText[13] = 0x0915; - testText[14] = 0x094D; - testText[15] = 0x0937; - - testText[16] = 0x0915; - testText[17] = 0x094D; - testText[18] = 0x0930; - testText[19] = 0x094D; - testText[20] = 0x092A; - - /* When the following character 0x0036 is shaped, the context will be taken into consideration when - determining the glyph for 0x0036 - The context for 0x0036 is the Devanagari character 0x092A at position (iPosInText) 20 - **/ - testText[21] = 0x0036; - testText[22] = 0x094D; - - testText[23] = 0x0020; - - // INC101103: Strings containing ZWJ do not get rendered properly for Hindi - testText[24] = 0x092E; - testText[25] = 0x094D; - testText[26] = 0x200D; - testText[27] = 0x092E; - testText[28] = 0x093F; - testText[29] = 0x200D; - - param.iText.Set(testText); - - RShapeInfo aShapeInfo; - - // Do the testing - - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 4 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000108 - && param.iOutput[1].iCode == 0x80000072); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF6(_L("The result of this shaping is %d %d %d 0x%x 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 4; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 7 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x800001C2); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The result of this shaping is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 7; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 10 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000072 - && param.iOutput[1].iCode == 0x80000130); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF6(_L("The result of this shaping is %d %d %d 0x%x 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 10; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 13 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000136); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The result of this shaping is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 13; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 16 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x800001BE); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The result of this shaping is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 16; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 21 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x8000017A - && param.iOutput[1].iCode == 0x80000087); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 18); - #endif - - INFO_PRINTF6(_L("The result of this shaping is %d %d %d 0x%x 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - /* The following shaping will consider the context when determining the glyph for 0x0036 Digit character - The context for 0x0036 is the Devanagari character 0x092A at position (iPosInText) 20 - **/ - param.iPosInText = 21; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - - TEST(r && param.iPosInText == 22 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000016); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF5(_L("The result of this shaping is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - // INC101103: Strings containing ZWJ do not get rendered properly for Hindi - param.iPosInText = 24; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param, aShapeInfo); - // We are mainly testing the position in text after rendering, which should be at the end of the syllable - // that should include the ZWJ and any consonant that follows it - TEST(r && param.iPosInText == 29 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x80000272 - && param.iOutput[1].iCode == 0x80000105 - && param.iOutput[2].iCode == 0x8000008B); - - // Close aShapeInfo which releases any memory it is occupying - if (aShapeInfo.IsOpen()) - aShapeInfo.Close(); - - } - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-3381 -@SYMTestCaseDesc Automated GDI testing for Kannada -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid and invalid Kannada glyph clusters. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 19: Kannada for Ogmha -*/ - -void CTGlyphSelection::TestKannadaChars(CFbsFont* aFont) - { -INFO_PRINTF1(_L("Test Kannada Glyphs")); - - TBuf<79> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(79); - //Testdata for kannada Langauage - - testText[0] = 0x0C95; - testText[1] = 0x0CCD; - testText[2] = 0x0020; - - testText[3] = 0x0CAF; - testText[4] = 0x0CCD; - testText[5] = 0x0020; - - testText[6] = 0x0C99; - testText[7] = 0x0CCD; - testText[8] = 0x0020; - - testText[9] = 0x0CA3; - testText[10] = 0x0CCD; - testText[11] = 0x0020; - - testText[12] = 0x0C95; - testText[13] = 0x0CC3; - - testText[14] = 0x0CA4; - testText[15] = 0x0CC6; - - testText[16] = 0x0C9D; - testText[17] = 0x0CBE; - - testText[18] = 0x0C9E; - testText[19] = 0x0CBE; - - testText[20] = 0x0CA3; - testText[21] = 0x0CBE; - - testText[22] = 0x0CB3; - testText[23] = 0x0CC6; - - testText[24] = 0x0C9D; - testText[25] = 0x0CC6; - - testText[26] = 0x0CAC; - testText[27] = 0x0CC6; - - testText[28] = 0x0C9F; - testText[29] = 0x0CC6; - - testText[30] = 0x0C99; - testText[31] = 0x0CC6; - - testText[32] = 0x0CA3; - testText[33] = 0x0CC6; - - testText[34] = 0x0C95; - testText[35] = 0x0CBF; - - testText[36] = 0x0CB8; - testText[37] = 0x0CBF; - - testText[38] = 0x0CA1; - testText[39] = 0x0CBF; - - testText[40] = 0x0CA6; - testText[41] = 0x0CBF; - - testText[42] = 0x0C9D; - testText[43] = 0x0CBF; - - testText[44] = 0x0C9D; - testText[45] = 0x0CC1; - - testText[46] = 0x0CB5; - testText[47] = 0x0CC1; - - testText[48] = 0x0C95; - testText[49] = 0x0CC2; - - testText[50] = 0x0CAA; - testText[51] = 0x0CC2; - - testText[52] = 0x0CAE; - testText[53] = 0x0CCC; - - testText[54] = 0x0C95; - - testText[55] = 0x0CB0; - testText[56] = 0x200D; - testText[57] = 0x0CCD; - testText[58] = 0x0CAE; - - testText[59] = 0x0020; - - testText[60] = 0x0CB0; - testText[61] = 0x200D; - testText[62] = 0x0CCD; - testText[63] = 0x0CB0; - testText[64] = 0x200D; - testText[65] = 0x0CCD; - - - testText[66] = 0x0CB0; - testText[67] = 0x200D; - testText[68] = 0x0CCD; - testText[69] = 0x0CB0; - testText[70] = 0x0CCD; - testText[71] = 0x0CB0; - testText[72] = 0x0CCD; - testText[73] = 0x0CB0; - testText[74] = 0x0CCD; - testText[75] = 0x0CB0; - - // DEF103276: Kannada rendering: IcuLayoutEngine does not recongnise 0X0C8E as a vowel - testText[76] = 0x0020; - testText[77] = 0x0C8E; - testText[78] = 0x0C82; - // End of DEF103276: Kannada rendering: IcuLayoutEngine does not recongnise 0X0C8E as a vowel - - param.iText.Set(testText); - - // Do the testing - - TBool r; - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - RShapeInfo shapeInfo; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText ==2 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000839); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF5(_L("The values of this shaping of Ka + Virama are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 3; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 5 - && param.iOutputGlyphs ==1 - && param.iOutput[0].iCode == 0x80000852 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 27); - #endif - - INFO_PRINTF5(_L("The values of this shaping Ya + Virama are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 6; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 8 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode ==0x8000083D); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Nya + Virama iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 9; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 11 - && param.iOutputGlyphs ==1 - && param.iOutput[0].iCode == 0x80000847); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 20); - #endif - - INFO_PRINTF5(_L("The result of this shaping for NNA + Virama iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 12; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 14 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007A8 - && param.iOutput[1].iCode == 0x800007D2); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Ka + Matra Vocalic R iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 14; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 16 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000088f); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Ta + Matra AA iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 16; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 18 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x8000081E - && param.iOutput[1].iCode == 0x800007CD); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 29); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Jha + Matra AA iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 18; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 20 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007b1 - && param.iOutput[1].iCode == 0x800007cd); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 23); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Nya + Matra AA iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - - param.iPosInText = 20; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 22 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000823 - && param.iOutput[1].iCode == 0x800007CD ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Nna + Matra AA iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 22; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 24 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000089C); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The result of this shaping for LLa + Matra E iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 24; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 26 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000889); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 22); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Jha + Matra E iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 26; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 28 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000896 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Ba + Matra E iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 28; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 30 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000088a); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Tta + Matra E iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 30; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 32 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007ac - && param.iOutput[1].iCode == 0x800007d4 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Nya + Matra E iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 32; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 34 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000088e); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Nna + Matra E iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 34; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 36 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000860 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Ka + Matra I iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 36; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 38 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000087e ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Sa + Matra I iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 38; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 40 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000086a); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Dda + Matra I iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 40; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 42 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000086f); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Va + Matra I iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 42; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 44 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000867 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 22); - #endif - - INFO_PRINTF5(_L("The result of this shaping for Jha + Matra I iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 44; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 46 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007b0 - && param.iOutput[1].iCode == 0x800007d0); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 28); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Jha + Matra U iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 46; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 48 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007c6 - && param.iOutput[1].iCode == 0x800007d0); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 18); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Va + Matra U iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - - param.iPosInText = 48; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 50 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007a8 - && param.iOutput[1].iCode == 0x800007d1 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 20); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Ka Matra UU iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode,param.iOutput[1].iCode); - - param.iPosInText = 50; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 52 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007bc - && param.iOutput[1].iCode == 0x800008a5); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Pa + Matra UU iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - - param.iPosInText = 52; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 54 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x8000082d - && param.iOutput[1].iCode == 0x800007d9); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 26); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Ma + Matra UU iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 55; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 59 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007c2 - && param.iOutput[1].iCode == 0x80000809); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF6(_L("The result of this shaping for Ma + Matra UU iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 60; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - TEST(r && param.iPosInText == 64 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007c2 - && param.iOutput[1].iCode == 0x8000080b); - INFO_PRINTF6(_L("Results are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x "), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 66; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - TEST(r && param.iPosInText == 75 - && param.iOutputGlyphs == 5 - && param.iOutput[0].iCode == 0x800007c2 - && param.iOutput[1].iCode == 0x8000080b - && param.iOutput[2].iCode == 0x800008db - && param.iOutput[3].iCode == 0x800008db - && param.iOutput[4].iCode == 0x800007da); - INFO_PRINTF7(_L("Results are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - - // DEF103276: Kannada rendering: IcuLayoutEngine does not recongnise 0X0C8E as a vowel - param.iPosInText = 77; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - TEST(r && param.iPosInText == 79 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800007A2 - && param.iOutput[1].iCode == 0x80000798); - - INFO_PRINTF5(_L("DEF103276 Vowel E + Anusvara: iPosInText=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - //End of DEF103276: Kannada rendering: IcuLayoutEngine does not recongnise 0X0C8E as a vowel - - } - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-3360 -@SYMTestCaseDesc Automated GDI testing for Marathi -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid and invalid Marathi glyph clusters. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 19: Marathi for Ogmha -*/ - -void CTGlyphSelection::TestMarathiChars(CFbsFont* aFont) - { - INFO_PRINTF1(_L("Test Marathi Glyphs")); - - TBool r; - TBuf<47> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(47); - - //Testdata - testText[0] = 0x0905; - testText[1] = 0x0945; - - testText[2] = 0x0931; - testText[3] = 0x094D; - testText[4] = 0x0915; - - testText[5] = 0x0930; - testText[6] = 0x094D; - testText[7] = 0x200D; - testText[8] = 0x0915; - - testText[9] = 0x0905; - testText[10] = 0x200D; - testText[11] = 0x0945; - - testText[12] = 0x0909; - testText[13] = 0x0945; - - testText[14] = 0x0915; - testText[15] = 0x200D; - testText[16] = 0x0945; - - // DEF102132: Marathi - Certain sequence of characters does not work correctly - testText[17] = 0x0905; - testText[18] = 0x0945; - testText[19] = 0x0901; - - testText[20] = 0x0905; - testText[21] = 0x200D; - testText[22] = 0x0945; - testText[23] = 0x0901; - // End of DEF102132: Marathi - Certain sequence of characters does not work correctly - - - // DEF102858: Marathi - State table does not allow explicit half forms followed by modifiers - testText[24] = 0x0020; - - testText[25] = 0x0930; - testText[26] = 0x094D; - testText[27] = 0x200D; - testText[28] = 0x0901; - // End of DEF102858: Marathi - State table does not allow explicit half forms followed by modifiers - - // INC104705 Marathi input: Incorrect movement of cursor with eyelash ra forming ligature. - testText[29] = 0x0020; - - testText[30] = 0x0930; - testText[31] = 0x094D; - testText[32] = 0x200D; - testText[33] = 0x0930; - testText[34] = 0x094D; - testText[35] = 0x200D; - testText[36] = 0x0930; - testText[37] = 0x094D; - testText[38] = 0x200D; - testText[39] = 0x0930; - testText[40] = 0x094D; - testText[41] = 0x200D; - testText[42] = 0x0930; - testText[43] = 0x094D; - testText[44] = 0x200D; - // End of INC104705 Marathi input: Incorrect movement of cursor with eyelash ra forming ligature. - - // INC116507: Halant get attached with an independent vowel. - testText[45] = 0x0905; - testText[46] = 0x094D; - // End of INC116507: Halant get attached with an independent vowel. - - //To Do - - param.iText.Set(testText); - - // Test CANDRA A: Independent Vowel A + CANDRA E - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - RShapeInfo shapeInfo; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 2 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000528 - && param.iOutput[1].iCode == 0x80000566); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF6(_L("The result of shaping CANDRA A is %d %d %d 0x%x 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - - // Test Eyelash RA post Unicode 3.0: RRA + VIRAMA + CONSONANT - param.iPosInText = 2 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 5 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800005d3 - && param.iOutput[1].iCode == 0x80000538); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 18); - #endif - - INFO_PRINTF6(_L("The result of shaping post Unicode 3.0 Eyelash RA is %d %d %d 0x%x 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - // Test Eyelash RA pre Unicode 3.0: RA + VIRAMA + ZWJ + CONSONANT - param.iPosInText = 5; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 9 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800005d3 - && param.iOutput[1].iCode == 0x80000538); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 18); - #endif - - INFO_PRINTF6(_L("The result of shaping pre Unicode 3.0 Eyelash RA is %d %d %d 0x%x 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - // Test second form of CANDRA A: Independent Vowel A + ZWJ + CANDRA E - param.iPosInText = 9; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 12 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000528 - && param.iOutput[1].iCode == 0x80000566 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF6(_L("The result of shaping second form of CANDRA A is %d %d %d 0x%x 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - // Test that CANDRA E does not join with any other independent vowel - param.iPosInText = 12; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 13 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000052c); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF5(_L("The result of shaping any other Independent Vowel + CANDRA E is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - // Test that the second form of CANDRA A (i.e. using ZWJ) doesn't work for CONSONANTS (illegal) - param.iPosInText = 14; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 15 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000538); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF5(_L("The result of shaping CONSONANT + ZWJ + CANDRA E is %d %d %d 0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - // DEF102132: Marathi - Certain sequence of characters does not work correctly - param.iPosInText = 17; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 20 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000528 - && param.iOutput[1].iCode == 0x8000069d); - - - INFO_PRINTF5(_L("DEF102132 Independent Vowel A + CANDRA E + Vowel Modifier %d %d 0x%x 0x%x"), param.iPosInText, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 20; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 23 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000528 - && param.iOutput[1].iCode == 0x8000069d); - - INFO_PRINTF5(_L("DEF102132 Independent Vowel A + ZWJ + CANDRA E + Vowel Modifier %d %d 0x%x 0x%x"), param.iPosInText, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - // End of DEF102132: Marathi - Certain sequence of characters does not work correctly - - // DEF102858: Marathi - State table does not allow explicit half forms followed by modifiers - param.iPosInText = 25; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - TEST(r && param.iPosInText == 29 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800005D3 - && param.iOutput[1].iCode == 0x80000524); - - INFO_PRINTF5(_L("DEF102858 Ra + Virama + ZWJ + Modifier %d %d 0x%x 0x%x"), param.iPosInText, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - // End of DEF102858: Marathi - State table does not allow explicit half forms followed by modifiers - - // INC104705 Marathi input: Incorrect movement of cursor with eyelash ra forming ligature. - param.iPosInText = 30; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - TEST(r && param.iPosInText == 42 - && param.iOutputGlyphs == 5 - && param.iOutput[0].iCode == 0x800005D3 - && param.iOutput[1].iCode == 0x800005D3 - && param.iOutput[2].iCode == 0x800005B8 - && param.iOutput[3].iCode == 0x80000553 - && param.iOutput[4].iCode == 0x8000056E); - #if defined __WINS__ || defined __WINSCW__ - TEST(param.iPen.iX == 20); - #endif - - INFO_PRINTF7(_L("INC104705 Ra + Virama + ZWJ + Ra + Virama + ZWJ + Ra + Virama + ZWJ + Ra + Virama + ZWJ + Ra + Virama + ZWJ %d %d 0x%x 0x%x 0x%x 0x%x"), param.iPosInText, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode, param.iOutput[3].iCode); - // End of INC104705 Marathi input: Incorrect movement of cursor with eyelash ra forming ligature. - - // INC116507: Halant get attached with an independent vowel. - param.iPosInText = 45; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 47 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x8000058F - && param.iOutput[1].iCode == 0x8000056E); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF6(_L("INC116507: Independent Vowel A + Halant %d %d %d 0x%x 0x%x"), param.iPosInText, param.iOutputGlyphs, param.iPen.iX, param.iOutput[0].iCode, param.iOutput[1].iCode); - // End of INC116507: Halant get attached with an independent vowel. - - } - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-3417 -@SYMTestCaseDesc Automated GDI testing for Gujarati -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid and invalid gujarati glyph clusters. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 19: Gujarati for Ogmha -*/ - - -void CTGlyphSelection::TestGujaratiChars(CFbsFont* aFont) - { - INFO_PRINTF1(_L("Test Gujarati Glyphs")); - - // Do the testing - - TBool r; - TBuf<162> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(162); - //Testdata for gujarati Langauage - - testText[0] = 0x0AAC; - testText[1] = 0x0ACD; - testText[2] = 0x200D; - testText[3] = 0x0020; - - testText[4] = 0x0A96; - testText[5] = 0x0ACD; - testText[6] = 0x0A97; - testText[7] = 0x0ACD; - testText[8] = 0x0A98; - testText[9] = 0x0ACD; - testText[10] = 0x0A9A; - - testText[11] = 0x0A95; - testText[12] = 0x0ACD; - testText[13] = 0x0A9C; - testText[14] = 0x200D; - testText[15] = 0x0020; - - testText[16] = 0x0A99; - testText[17] = 0x0ACD; - testText[18] = 0x0A9B; - testText[19] = 0x0ACD; - testText[20] = 0x0A9F; - testText[21] = 0x0ACD; - testText[22] = 0x0AA0; - - //Requirement (GUJ003) - - testText[23] = 0x0A95; - testText[24] = 0x0ACD; - testText[25] = 0x0AB7; - - - testText[26] = 0x0A95; - testText[27] = 0x0ACD; - testText[28] = 0x0AB7; - testText[29] = 0x0ACD; - testText[30] = 0x0AA4; - - testText[31] = 0x0A9C; - testText[32] = 0x0ACD; - testText[33] = 0x0AB7; - testText[34] = 0x0ACD; - testText[35] = 0x0AA4; - - testText[36] = 0x0A9C; - testText[37] = 0x0ACD; - testText[38] = 0x0A9E; - testText[39] = 0x0ACD; - testText[40] = 0x0AA4; - - //Requirement (GUJ 005) - - testText[41] = 0x0AB0; - testText[42] = 0x0ACD; - testText[43] = 0x0A95; - - testText[44] = 0x0AB0; - testText[45] = 0x0ACD; - testText[46] = 0x0A95; - testText[47] = 0x0AC9; - - testText[48] = 0x0AB0; - testText[49] = 0x0ACD; - testText[50] = 0x0A95; - testText[51] = 0x0A82; - - testText[52] = 0x0AB0; - testText[53] = 0x0ACD; - testText[54] = 0x0A95; - testText[55] = 0x0AC9; - testText[56] = 0x0A82; - testText[57] = 0x0020; - - //Requirement (GUJ 006) - - testText[58] = 0x0A97; - testText[59] = 0x0ACD; - testText[60] = 0x0AB0; - - testText[61] = 0x0A9A; - testText[62] = 0x0ACD; - testText[63] = 0x0AB0; - - testText[64] = 0x0A97; - testText[65] = 0x0ACD; - testText[66] = 0x0AB0; - testText[67] = 0x0ACD; - testText[68] = 0x0AA4; - - testText[69] = 0x0A9A; - testText[70] = 0x0ACD; - testText[71] = 0x0AB0; - testText[72] = 0x0ACD; - testText[73] = 0x0AA4; - - //Requirement (GUJ 007) - - testText[74] = 0x0A95; - testText[75] = 0x0ACD; - testText[76] = 0x0AB0; - - testText[77] = 0x0A9C; - testText[78] = 0x0ACD; - testText[79] = 0x0AB0; - - testText[80] = 0x0A95; - testText[81] = 0x0ACD; - testText[82] = 0x0AB0; - testText[83] = 0x0ACD; - testText[84] = 0x0AA4; - - testText[85] = 0x0A9C; - testText[86] = 0x0ACD; - testText[87] = 0x0AB0; - testText[88] = 0x0ACD; - testText[89] = 0x0AA4; - - //Requirement (GUJ 008) - - testText[90] = 0x0A9B; - testText[91] = 0x0ACD; - testText[92] = 0x0AB0; - - testText[93] = 0x0AAF; - testText[94] = 0x0ACD; - testText[95] = 0x0AB0; - - testText[96] = 0x0A9B; - testText[97] = 0x0ACD; - testText[98] = 0x0AB0; - testText[99] = 0x0ACD; - testText[100]= 0x0AA4; - - testText[101] = 0x0AAF; - testText[102] = 0x0ACD; - testText[103] = 0x0AB0; - - testText[104] = 0x0AAF; - testText[105] = 0x0ACD; - testText[106] = 0x0AB0; - testText[107] = 0x0ACD; - testText[108] = 0x0AA4; - - testText[109] = 0x0AB0; - testText[110] = 0x0ACD; - testText[111] = 0x0AB0; - testText[112] = 0x0ACD; - testText[113] = 0x0AB0; - - //Requirement (GUJ 009) - - testText[114] = 0x0A9F; - testText[115] = 0x0ACD; - testText[116] = 0x0AAF; - - testText[117] = 0x0A9B; - testText[118] = 0x0ACD; - testText[119] = 0x0AAF; - - testText[120] = 0x0AA2; - testText[121] = 0x0ACD; - testText[122] = 0x0AAF; - - testText[123] = 0x0A97; - testText[124] = 0x0ACD; - testText[125] = 0x0AAF; - - //Requirement (GUJ 010) - - testText[126] = 0x0A9F; - testText[127] = 0x0ACD; - testText[128] = 0x0AA0; - - testText[129] = 0x0AA6; - testText[130] = 0x0ACD; - testText[131] = 0x0AB5; - - testText[132] = 0x0A9F; - testText[133] = 0x0ACD; - testText[134] = 0x0AA0; - testText[135] = 0x0ACD; - testText[136] = 0x0AA4; - - - testText[137] = 0x0AA6; - testText[138] = 0x0ACD; - testText[139] = 0x0AB5; - testText[140] = 0x0ACD; - testText[141] = 0x0AA4; - - //Requirement (GUJ 011) - - testText[142] = 0x0AB0; - testText[143] = 0x0AC2; - - testText[144] = 0x0AB9; - testText[145] = 0x0AC3; - - testText[146] = 0x0AA6; - testText[147] = 0x0AC3; - - testText[148] = 0x0A9C; - testText[149] = 0x0AC0; - - //Subscript ligutares - - - testText[150] = 0x0A95; - testText[151] = 0x0A81; - - testText[152] = 0x0A95; - testText[153] = 0x0ABE; - testText[154] = 0x0A81; - - testText[155] = 0x0A95; - testText[156] = 0x0AC1; - testText[157] = 0x0A81; - - testText[158] = 0x0A8D; - testText[159] = 0x0A81; - - testText[160] = 0x0A88; - testText[161] = 0x0A81; - - - - param.iText.Set(testText); - - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - RShapeInfo shapeInfo; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 3 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x800009ec); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 4; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 11 - && param.iOutputGlyphs == 4 - && param.iOutput[0].iCode == 0x800009d7 - && param.iOutput[1].iCode == 0x800009d8 - && param.iOutput[2].iCode == 0x800009d9 - && param.iOutput[3].iCode == 0x80000967 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 34); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - - param.iPosInText = 11; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 14 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800009d6 - && param.iOutput[1].iCode == 0x80000969 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 22); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 16; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 23 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x800009da - && param.iOutput[1].iCode == 0x800009dc - && param.iOutput[2].iCode == 0x80000aad); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 30); - #endif - - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - - param.iPosInText = 23; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 26 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x800009d2 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - - param.iPosInText = 26; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 31 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800009f8 - && param.iOutput[1].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 18); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 31; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 36 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x800009dd - && param.iOutput[1].iCode == 0x800009f5 - && param.iOutput[2].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 30); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - - param.iPosInText = 36; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 41 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800009f9 - && param.iOutput[1].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 41; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 44 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000962 - && param.iOutput[1].iCode == 0x800009d4); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 8); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 44; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 48 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000962 - && param.iOutput[1].iCode == 0x80000ae1 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 48; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 52 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000962 - && param.iOutput[1].iCode == 0x80000ae9); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 8); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 52; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 57 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000962 - && param.iOutput[1].iCode == 0x80000ae2); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 58; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 61 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000a1e ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 61; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 64 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000a21 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 64; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 69 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000a64 - && param.iOutput[1].iCode == 0x80000971 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 69; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 74 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000a67 - && param.iOutput[1].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 74; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 77 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000a1c); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 8); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 77; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 80 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000a23); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 80; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 85 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000a62 - && param.iOutput[1].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 85; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 90 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000a69 - && param.iOutput[1].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 24); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText =90; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 93 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000a22 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 93; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 96 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000a35 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 96; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 101 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000a68 - && param.iOutput[1].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 101; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 104 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000a35 ); - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 104; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 109 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000a7b - && param.iOutput[1].iCode == 0x80000971 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 109; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 114 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000a36 - && param.iOutput[1].iCode == 0x800009d4 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 7); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 114; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 117 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000aae); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 117; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 120 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000aab ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 120; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 123 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000ab5 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 18); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 123; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 126 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x800009d8 - && param.iOutput[1].iCode == 0x8000097b); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 126; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 129 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000aad); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 129; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 132 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000ac0 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText =132; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 137 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x800009e0 - && param.iOutput[1].iCode == 0x800009e1 - && param.iOutput[2].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 26); - #endif - - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - - param.iPosInText = 137; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 142 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x800009e7 - && param.iOutput[1].iCode == 0x800009f3 - && param.iOutput[2].iCode == 0x80000971); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 23); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - - param.iPosInText = 142; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 144 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000b04); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 7); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 144; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 146 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000b05); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 146; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 148 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000b02); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 7); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 148; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 150 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000aff); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 150; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 152 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000962 - && param.iOutput[1].iCode ==0x80000951); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 8); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 152; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 155 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x80000962 - && param.iOutput[1].iCode == 0x80000986 - && param.iOutput[2].iCode == 0x80000951); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - - param.iPosInText = 155; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 158 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x80000962 - && param.iOutput[1].iCode == 0x80000989 - && param.iOutput[2].iCode == 0x80000951); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 8); - #endif - - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - param.iPosInText = 158; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 160 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000aee); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 160; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 162 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000aed); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - } - - -void CTGlyphSelection::TestBengaliChars(CFbsFont* aFont) - { - INFO_PRINTF1(_L("Test Bengali Glyphs")); - - // Do the testing - - TBool r; - TBuf<115> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(115); - // Make sure there is no garbage values in the memory we are using. - for (TInt i = 0; i < testText.Length(); i++) - testText[i]=0xFFFF; - - //Testdata for Bengali language - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4002")); -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4002 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various invalid Bengali glyph clusters to test the requirement. - If any part of stored text (e.g. received or downloaded document) is not properly encoded in logical order, the relevant text handling processes must treat that part as an invalid sequence of text and use appropriate fallback mechanisms. Invalid sequences of characters must be rendered as incomplete syllables and rendering engine must be able to handle invalid coding appropriately -@SYMTestExpectedResults Rendering engine will render as incomplete syllables -@SYMPREQ 1766 Bengali for Sphinx -@SYMREQ 8741 Bengali Text Rendering -*/ - - // BEN002: Test invalid sequences - testText[0] = 0x09C7; - testText[1] = 0x0995; - testText[2] = 0x0995; - testText[3] = 0x09C1; - testText[4] = 0x09C1; - testText[5] = 0x0995; - testText[6] = 0x09CD; - testText[7] = 0x09C1; - testText[8] = 0x0995; - testText[9] = 0x0981; - testText[10] = 0x09C1; - - param.iText.Set(testText); - RShapeInfo shapeInfo; - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 1 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000ce5 - && param.iOutput[1].iCode == 0x8000058f); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 2 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cbc); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 2; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 4 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000ebe); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 4; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 5 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x8000058f - && param.iOutput[1].iCode == 0x80000ce1 - ); - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 5; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 7 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000cbc - && param.iOutput[1].iCode == 0x80000ce9 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 7; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 8 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x8000058f - && param.iOutput[1].iCode == 0x80000ce1 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 8; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 10 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000cbc - && param.iOutput[1].iCode == 0x80000cad - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 10; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 11 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x8000058f - && param.iOutput[1].iCode == 0x80000ce1 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAPD(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4003")); -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4003 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions - Passing both Bengali and Latin scripts simultaneously -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766 Bengali for Sphinx -@SYMREQ 8741 Bengali Text Rendering -*/ - //BEN003 - testText[11] = 0x0995; - testText[12] = 0x0041; // Unicode value for A - testText[13] = 0x09E6; //Bengali digit 1 - - param.iPosInText = 11; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 12 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cbc - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 12; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 13 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x41 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x "), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 13; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 14 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode ==0x80000cf3 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4004")); -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4004 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test the reequirement. - Text rendering in Bengali must be based on syllables and the text rendering engine must be capable of handling the Bengali syllabic structure. If a single word is longer than one row, the line can only be broken at syllable border. - Invalid sequences of characters must be rendered as incomplete syllables - -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - // BEN004: - testText[14] = 0x0985; - testText[15] = 0x09A4; - testText[16] = 0x09CD; - testText[17] = 0x09AF; - testText[18] = 0x09A8; - testText[19] = 0x09CD; - testText[20] = 0x09A4; - - param.iPosInText = 14; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 15 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cb0 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 15; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 18 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode ==0x80000ccb - && param.iOutput[1].iCode ==0x80000d6e - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode,param.iOutput[1].iCode); - - param.iPosInText = 18; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 21 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e14 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4005")); -// BEN005 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4005 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test the requirment - Text rendering must be able to display specified character sequences using ligatures and set of ligatures (stable/unstable) must be font dependent / configurable. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[21] = 0x0995; - testText[22] = 0x09CD; - testText[23] = 0x09B7; - - testText[24] = 0x09A4; - testText[25] = 0x09CD; - testText[26] = 0x09B0; - - testText[27] = 0x09A6; - testText[28] = 0x09CD; - testText[29] = 0x09A6; - - - param.iPosInText = 21; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 24 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000d25 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 24; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 27 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode ==0x80000d89 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 27; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 30 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e0a - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4006")); -// BEN006 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4006 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test - whether tamil digits are recongized as numerals. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[30] = 0x09E6; // Bengali 1 - testText[31] = 0x0030; //Basic Latin 0 - - - param.iPosInText = 30; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 31 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cf3 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 31; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 32 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000774 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 8); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x "), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4007")); -//BEN 008 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4007 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid - All text handling processes ((rendering, editing, searching, sorting etc.) MUST treat the sequence of a base consonant and a nukta equivalently to Nukta consonants -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[32] = 0x09AF; - testText[33] = 0x09BC; - testText[34] = 0x09DF; - - param.iPosInText = 32; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 34 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cee - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x "), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4008")); -// BEN011 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4008 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test - Rendering engine must be capable of handling joining formatters. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[35] = 0x0995; - testText[36] = 0x09CD; - testText[37] = 0x09B7; - - testText[38] = 0x0995; - testText[39] = 0x09CD; - testText[40] = 0x200C; - testText[42] = 0x09B7; - - testText[43] = 0x0995; - testText[44] = 0x09CD; - testText[45] = 0x200D; - testText[46] = 0x09B7; - - - param.iPosInText = 35; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 38 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000d25 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 38; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 40 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000cbc - && param.iOutput[1].iCode == 0x80000ce9 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode,param.iOutput[1].iCode); - - param.iPosInText = 43; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 47 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000d2a - && param.iOutput[1].iCode == 0x80000cd9 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 22); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4009")); -// BEN012 - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4009 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test - If consonant /ya/, /ra/, /la/, /ma/, /na/ or /ba/, is the last element of a consonant cluster, the consonant assumes a phala form. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[47] = 0x09AA; - testText[48] = 0x09CD; - testText[49] = 0x09AF; - - testText[50] = 0x09AA; - testText[51] = 0x09CD; - testText[52] = 0x09A8; - - // Not working with Series60Sans font: - testText[53] = 0x09AA; - testText[54] = 0x09CD; - testText[55] = 0x09AE; - - param.iPosInText = 47; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 50 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000cd0 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 50; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 53 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e25 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - // Not working with Series60Sans font: - param.iPosInText = 53; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 56 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000d3e - && param.iOutput[1].iCode == 0x80000cd4 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4010")); -// BEN013 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4010 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to tet - Sequence <virama, ya>, i.e. ya-phala, MUST be allowed after independent vowels /a/ and /e/. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[56] = 0x0985; - testText[57] = 0x09CD; - testText[58] = 0x09AF; - testText[59] = 0x09BE; - - // Double ya -> Ya, ya-phala - testText[60] = 0x09AA; - testText[61] = 0x09CD; - testText[62] = 0x09AF; - testText[63] = 0x09CD; - testText[64] = 0x09AF; - - param.iPosInText = 56; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPosInText == 57 - && param.iPen.iX == 14 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cb0 - ); - #elif defined __ARMCC__ - TEST(r && param.iPosInText == 57 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cb0 - ); - #endif - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 57; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 58 - && param.iOutputGlyphs == 0 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 0); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 60; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 65 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x80000d3e - && param.iOutput[1].iCode == 0x80000cd5 - && param.iOutput[2].iCode == 0x80000d6e - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 23); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4011")); - // BEN014 - /** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4011 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid and glyph clusters to test - When consonant /ga/, /nna/, /na/, /pa/, /la/, /sha/, /ssa/ or /sa/ is a dead consonant, and none of the other consonant cluster formation rules apply, the consonant MUST be rendered with a stemless half form. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[65] = 0x0997; - testText[66] = 0x09CD; - testText[67] = 0x099C; - - testText[68] = 0x09AA; - testText[69] = 0x09CD; - testText[70] = 0x099C; - - - param.iPosInText = 65; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 68 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000d2c - && param.iOutput[1].iCode == 0x80000cc3 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 68; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 71 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000d3e - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 23); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - - // BEN015 - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4012")); - /** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4012 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test - When /ka/, /nga/, /ca/, /tta/, /dda/, /ta/ or /da/ is a dead consonant, and none of the other consonant cluster formation rules apply, the consonant MUST be rendered with a miniature half form. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[71] = 0x0995; - testText[72] = 0x09CD; - testText[73] = 0x099C; - - - param.iPosInText = 71; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 74 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000d2a - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 26); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4013")); - // BEN016 - - /** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4013 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test - The consonant pairs /k.ka/, /ng.kha/, /c.nya/, /nn.nna/, /n.tha/, /n.pha/, /m.ta/, /m.tha/, /m.pha/, /m.bha/, /l.ka/, /l.ga/, /l.pa/, /ss.ka/, /ss.pha/, /s.ka/, /s.kha/, /s.ta/, /s.tha/, /s.pha/, /h.nna/ MUST be representend as stacks of two consonants. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - // Ma does not stack correctly on top with Series60Sans font, produces half form instead. Font defect. - testText[74] = 0x09AE; - testText[75] = 0x09CD; - testText[76] = 0x09A5; - - testText[77] = 0x09AE; - testText[78] = 0x09CD; - testText[79] = 0x09AB; - // Ma does not stack correctly on top, produces half form instead. - testText[80] = 0x09AE; - testText[81] = 0x09CD; - testText[82] = 0x0995; - - testText[83] = 0x09A8; - testText[84] = 0x09CD; - testText[85] = 0x09A5; - - - //Combination pa,virama,ma produces incorrect glyph mapping: Font defect. - - param.iPosInText = 74; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 77 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000d42 - && param.iOutput[1].iCode == 0x80000ccc - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - - param.iPosInText = 77; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 80 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e30 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - // Ma does not stack correctly on top, produces half form instead. - param.iPosInText = 80; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 83 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000d42 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 22); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - - param.iPosInText = 83; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 86 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e15 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4014")); - // BEN017 - - /** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4014 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test - Consonant pairs /k.tta/, /k.ta/, /k.ssa/, /k.sa/, /g.ga/, /g.dha/, /ng.ka/, /ng.ga/, /j.ja/, /j.jha/, /j.nya/, /ny.ca/, /ny.cha/, /ny.ja/, /ny.jha/, /tt.tta/, /nn.ttha/, /nn.dda/, /t.ta/, /t.tha/, /d.da/, /d.dha/, /d.ba/, /d.bha/, /n.ta/, /n.dha/, /p.ta/, /b.ja/, /b.da/, /b.dha/, /m.pa/, /ss.tta/, /ss.ttha/, /ss.nna/, /s.pa/, /h.na/ /h.ma/ MUST be displayed as ligatures, if they appear at the end of a consonant cluster. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[86] = 0x0995; - testText[87] = 0x09CD; - testText[88] = 0x099F; - - testText[89] = 0x0995; - testText[90] = 0x09CD; - testText[91] = 0x09A4; - - // Not sure if this is forming the correct ligature - testText[92] = 0x09AE; - testText[93] = 0x09CD; - testText[94] = 0x09AA; - - // Not sure if this is forming the correct ligature - testText[95] = 0x09B8; - testText[96] = 0x09CD; - testText[97] = 0x09AA; - - testText[98] = 0x09B9; - testText[99] = 0x09CD; - testText[100] = 0x09A8; - - param.iPosInText = 86; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 89 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000dd7 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 89; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 92 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000dd9 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 92; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 95 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e2f - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 95; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 98 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e56 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 20); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 98; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 101 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000e5d - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4015")); -// BEN020 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4015 -@SYMTestCaseDesc Automated GDI testing for Bengali -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Bengali glyph clusters to test that - If RA is the first consonant cluster, it must assume the form of Repha. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Bengali for Sphinx -@SYMREQ 8741: Bengali Text Rendering -*/ - testText[101] = 0x09B0; - testText[102] = 0x09CD; - testText[103] = 0x0995; - - testText[104] = 0x09B0; - testText[105] = 0x200C; - testText[106] = 0x09CD; - testText[107] = 0x09AF; - - param.iPosInText = 101; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 104 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000cbc - && param.iOutput[1].iCode == 0x80000d27 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText =104; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 105 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000cd6 - ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - } - - -void CTGlyphSelection::TestTamilChars(CFbsFont* aFont) - { -INFO_PRINTF1(_L("Test Tamil Glyphs")); - - TBool r; - TBuf<162> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(162); - // Make sure there is no garbage values in the memory we are using. - for (TInt i = 0; i < testText.Length(); i++) - testText[i]=0xFFFF; - param.iText.Set(testText); - RShapeInfo shapeInfo; - //Testdata for Tamil Langauage - TRAPD(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4016")); -/* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4016 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test - a)The Tamil alphabets are listed in contiguous Unicode range(U+0B80–U+0BFF), This also contains Tamil Numbers. - b)The Tamil alphabets are listed in contiguous Unicode range(U+0B80–U+0BFF), This also contains Tamil Numbers. - c)Internal data storage should always be in the logical order, but the rendering of it may be different to that of the logical order - d)Combination of Unicode sequences must be rendered as valid blocks. In Tamil some character sequences are invalid and therefore only the sequences which follow the logical order as described in Req 1.2.3 should be rendered properly - e)If the text being rendered contains a mixture of scripts, the text in each script should be rendered according to the rules of that particular script. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[0] = 0x0B95; //Tamil Ka - testText[1] = 0x0B8E; //Tamil e - testText[2] = 0x0061; //Latin A - testText[3] = 0x0905; // Hindi Ka - testText[4] = 0x0020; - // Do the testing - param.iPosInText = 0 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 1 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000bf6); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 1 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 2 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000bf0); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 2 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 3 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x61 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - param.iPosInText = 3 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 4 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000528); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - /*Req 02 1.2.3, 1.3.21, 1.3.21.1, 1.3.21.2 1.3.21.3 - - 1.2.3 The attachment presents the logical order used to present Tamil text. In the schematic samples, square brackets are used to presents the components that may be omitted. - 1.3.21 If the text-rendering engine detects invalid sequences of characters, it should render the invalid sequences using an appropriate fallback rendering mechanism -Please see the attachment for examples - 1.3.21.1 For normal rendering, combining Tamil characters must be preceded by a valid base character. - 1.3.21.2 Combining Tamil characters that do not follow a valid base character must be rendered using an appropriate fallback rendering. - 1.3.21.3 Device must not hang or crash because of unexpected character sequences.*/ - - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4017")); -//Req 03 - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4017 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test - It is reasonably common to mix Latin, Tamil as well as other script in texts. This must include the numerals. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[4] = 0x0036;//Latin 06 - testText[5] = 0x0BEC;//Tamil 06 - - param.iPosInText = 4 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 5 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x8000077A); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 8); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 5 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 6 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000c20); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - /*Req 04 1.3.4, 1.3.20 - 1.3.4 1. Tamil is a semi-syllabic script and in Tamil text rendering the basic unit for handling text must be the orthographic syllable. - 2. Therefore, a text-rendering engine should first identify a syllable and then analyze the syllable. Based on the analysis, text-rendering engine should then be able to select and/or shape the glyphs required for rendering the syllable and to perform contextual positioning of glyphs inside a syllable. - 3. After a syllable has been formed it must be considered an indivisible and invariable unit. - 4. The shape of a syllable is not affected by surrounding syllables. - 1.3.20 Syllable is the smallest unbreakable component in Tamil*/ - - /*Req 07 1.3.5 - - 1.3.5 1. In Tamil, when ligatures are used there is a possibility that the shaping of the previous consonant will depend on the next consonant the user enters - 2. In Tamil, there is a possibility that even though the characters are entered one by one the position of the matras change depending on the consonant and the type of the matra - - Req 08 1.3.19 - - 1.3.19 In Tamil white space is used as a word boundary. Line breaking should be based on word boundaries - - - Req 09 1.2.4 - - 1.2.4 For compatibility with legacy encodings, split matra and vowel representations must be recognized as identical to the single code representations (preferred) - */ - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4018")); -//Req 10 1.3.6 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4018 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirement. - Tamil character shaping MUST be based on combining character sequences. All shaping processes (splitting, reordering, glyph selection) MUST occur in the context of combining character sequence. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[6] = 0x0BAA; // Pa - testText[7] = 0x0BCD; //Virama - testText[8] = 0x0B95; //Ka - testText[9] = 0x0BCD; //Virama - testText[10] = 0x0B9F; //Tta - testText[11] = 0x0BC7; //-e - - testText[12] = 0x0BAA;//Pa - testText[13] = 0x0BCD;//Virama - testText[14] = 0x0B95;//Ka - testText[15] = 0x0BCC;//AU - - testText[16] = 0x0B95; //Ka - testText[17] = 0x0BCD; //Virama - testText[18] = 0x0BB7; //Ssa - testText[19] = 0x0BCB; //OO - - param.iPosInText = 6 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 12 - && param.iOutputGlyphs == 4 - && param.iOutput[0].iCode == 0x80000c3a - && param.iOutput[1].iCode == 0x80000c30 - && param.iOutput[2].iCode == 0x80000c13 - && param.iOutput[3].iCode == 0x80000bfb); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 51); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[3].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[3].iCode); - - param.iPosInText = 12 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 16 - && param.iOutputGlyphs ==4 - && param.iOutput[0].iCode == 0x80000c3a - && param.iOutput[1].iCode == 0x80000c12 - && param.iOutput[2].iCode == 0x80000bf6 - && param.iOutput[3].iCode == 0x80000c19); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 56); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[3].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[3].iCode); - - param.iPosInText = 16 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 20 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x80000c13 - && param.iOutput[1].iCode == 0x80000c2f - && param.iOutput[2].iCode == 0x80000c0d); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 54); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4019")); -//Req 11 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4019 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirement - Matras /-e/, /-ee/ and /-ai/ are reordered with the consonant they follow in memory order. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - - testText[20] = 0x0B95; //Ka - testText[21] = 0x0BC7; //-e - - param.iPosInText = 20 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 22 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000c13 - && param.iOutput[1].iCode == 0x80000bf6 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 26); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4020")); -//Req 12 1.3.5.2 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4020 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirment - Matras /-o/, /-oo/ and /-au/ are split into two halves that enclose the consonant they follow in memory order. -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - - testText[22] = 0x0B95; //Ka - testText[23] = 0x0BCA; //O - - - param.iPosInText = 22 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 24 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x80000c12 - && param.iOutput[1].iCode == 0x80000bf6 - && param.iOutput[2].iCode == 0x80000c0d); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 37); - #endif - - INFO_PRINTF7(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x iOutput[2].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode, param.iOutput[2].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4021")); - //Req 13 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4021 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirment. - Tamil Modifier "Ayatham" MUST be treated as an independent character -@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - - testText[24] = 0x0B95; //Ka - testText[25] = 0x0B83; //Aythem - testText[26] = 0x0B85; //A - - param.iPosInText = 24; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 25 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000bf6); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4022")); -//Req 14 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4022 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirement. - Rendering Engine MUST be capable of handling TAMIL ANUSVARA - It has been suggested that this character be deprecated in Unicode -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - - testText[27] = 0x0B95; //Ka - testText[28] = 0x0B82; //Anusvara - testText[29] = 0x0B95; //Ka - - param.iPosInText = 27; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 29 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000bf6 - && param.iOutput[1].iCode == 0x80000be8); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - param.iPosInText = 29; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 30 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000bf6 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4023")); -//Req 15 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4023 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirment - Tamil consonant /ra/ changes its shape, when a virama is applied to it. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - - testText[30] = 0x0BB0; //Ra - testText[31] = 0x0BCD; //Virama - testText[32] = 0x8205; //ZWJ - - - param.iPosInText = 30; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 32 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000c03 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 10); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4024")); -//Req 16 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4024 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test - Matra /-aa/ is combined to consonants in regular fashion. No extra shaping is required. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - - testText[33] = 0x0B95; //Ka - testText[34] = 0x0B82; //Anusvara - - param.iPosInText = 33 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 35 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000bf6 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4025")); -//Req 17 1.3.11 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4025 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test - Matras /-i/ and /-ii/ MUST form a ligature with consonant /tta/. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - - testText[35] = 0x0B9F; //Tta - testText[36] = 0x0BBF; //I - - testText[37] = 0x0B9F; //Tta - testText[38] = 0x0BC0; //Ii - - param.iPosInText = 35 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 37 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000c51); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - param.iPosInText = 37 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 39 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000c52); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4026")); -//Req 18 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4026 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test - Consonant /ra/ takes an alternate shape when combined with matras /-i/ and /-ii/. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[39] = 0x0BB0; //Ra - testText[40] = 0x0BBF; //I - - testText[41] = 0x0BB0; //Ra - testText[42] = 0x0BC0; //Ii - - param.iPosInText = 39 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 41 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000c0d - && param.iOutput[1].iCode == 0x80000c0e ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 41 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 43 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000c0d - && param.iOutput[1].iCode == 0x80000c0f); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4027")); -//Req 19 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4027 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirement - Matras /-i/ and /-ii/ take an alternate form when applied to consonants /nga/, /pa/, /ya/ and /va/. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[43] = 0x0B99; //Nga - testText[44] = 0x0BBF; //I - - testText[45] = 0x0B99; //Nga - testText[46] = 0x0BC0; //Ii - - param.iPosInText = 43 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 45 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000bf7 - && param.iOutput[1].iCode == 0x80000c0e ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - param.iPosInText = 45 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 47 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000c4a ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 17); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4028")); - -//Req 20 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4028 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirement. - Matras /-u/ and /-uu/ join in ligature form with all other consonants than /ha/, /ja/, /sa/, /ssa/ and /k.ssa/. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[47] = 0x0B9C; //Ja - testText[48] = 0x0BC1; //U - - testText[49] = 0x0B9C; //Ja - testText[50] = 0x0BC2; //Uu - - param.iPosInText = 47 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 49 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000bf9 - && param.iOutput[1].iCode == 0x80000c10); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 26); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - - param.iPosInText = 49; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 51 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000bf9 - && param.iOutput[1].iCode == 0x80000c11 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 29); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4029")); -//Req 21 1.3.15 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4029 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirement. - Matra /-ai/ is combined to consonants in regular fashion. No extra shaping is required. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[51] = 0x0B95; //Ka - testText[52] = 0x0BC8; //Ai - - param.iPosInText = 51; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 53 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000c14 - && param.iOutput[1].iCode == 0x80000bf6); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 31); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4030")); -//Req 22 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4030 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test the requirement - Consonant cluster <ka, virama, ssa> MUST always form conjunct consonant /k.ssa/, which behaves as if it were a proper consonant of its own -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[53] = 0x0B95; //Ka - testText[54] = 0x0BCD; //Virama - testText[55] = 0x0BB7; //Ssa - - param.iPosInText = 53; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 56 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000c2f ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 31); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4031")); -//Req 23 1.3.17 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4031 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test - Character sequence <sa, virama, ra, matra_ii> MUST be rendered as a ligature form /s.rii/. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[56] = 0x0BB8; //Sa - testText[57] = 0x0BCD; //Virama - testText[58] = 0x0BB0; //Ra - testText[59] = 0x0BC0; //Matra I - - param.iPosInText = 56; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 60 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000c79 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 27); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4032")); -//Req 24 1.3.18 -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4032 -@SYMTestCaseDesc Automated GDI testing for Tamil -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Tamil glyph clusters to test - Vertical position of the glyphs for combining characters virama, matras /-i/ and /-ii/ must be determined separately in relation to the relevant base glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8742:Tamil Text Rendering -*/ - testText[60] = 0x0B95; //Ka - testText[62] = 0x0BCD; //Virama - testText[63] = 0x8205; //ZWJ - - param.iPosInText = 60; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 61 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000bf6 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - } - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-3479 -@SYMTestCaseDesc Automated GDI testing for correct localised punctuation after indic characters -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Indic strings with western punctuation -@SYMTestExpectedResults The expected punctuation glyphs for the implied locale should be returned -@SYMDEF DEF106651 -*/ -void CTGlyphSelection::TestGlyphs(CFont* aFont, CFont::TPositionParam& aParam, - const TPtrC16& aText, const TPtrC16& aExpectedGlyphs) - { - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-3479")); - TUint16* glyphs = CONST_CAST(TUint16*,aExpectedGlyphs.Ptr()); - const TInt mask = 0x80000000-1; - TBool r; - RShapeInfo shapeInfo; - aParam.iText.Set(aText); - aParam.iPosInText = aParam.iPen.iX = aParam.iPen.iY = 0; - while(aParam.iPosInText < aParam.iText.Length()) - { - r = aFont->GetCharacterPosition2(aParam,shapeInfo); - //INFO_PRINTF3(_L("Glyph %d Icode 0x%x"),*glyphs,aParam.iOutput[0].iCode); - TEST(r && ((aParam.iOutput[0].iCode & mask) == *glyphs++)); - } - shapeInfo.Close(); - TRAPD(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - } -void CTGlyphSelection::TestTeluguChars(CFbsFont* aFont) - { -INFO_PRINTF1(_L("Test Telugu Glyphs")); - - TBool r; - TBuf<162> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(162); - // Make sure there is no garbage values in the memory we are using. - for (TInt i = 0; i < testText.Length(); i++) - testText[i]=0xFFFF; - - param.iText.Set(testText); - RShapeInfo shapeInfo; - - //Testdata for Telugu Langauage - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4033")); -/* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4033 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test - These consonants contain a small tick mark (crest) at the top of the glyph. This graphical detail can be considered to be a vocalic stem that indirectly indicates the inherent vowel /-a/. VIRAMA replaces the vocalic stem. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ -// Req 4.1 - - testText[0] = 0x0C15; - testText[1] = 0x0C4D; - param.iPosInText = 0 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 2 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f49 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 9); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAPD(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4034")); -/* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4034 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test - ?VIRAMA attaches the upward stroke at the right of the glyph. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[2] = 0x0C16; - testText[3] = 0x0C4D; - - param.iPosInText = 2 ; - - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - - TEST(r && param.iPosInText == 4 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f4a); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4035")); -/* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4035 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?VIRAMA is attached to a stroke at the upper right corner. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - - testText[4] = 0x0C23; - testText[5] = 0x0C4D; - - param.iPosInText = 4 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 6 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f57 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4036")); -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4036 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -Matras MATRA VOCALIC R and MATRA VOCALIC RR never attach the consonant glyph causing shape changes, but they are always placed at the right of the consonant glyph. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - //Req 4.2 - testText[6] = 0x0C2E; - testText[7] = 0x0C43; - - param.iPosInText = 6 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 8 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000f21 - && param.iOutput[1].iCode == 0x80000f31 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 24); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4037")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4037 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -Matras MATRA VOCALIC R and MATRA VOCALIC RR never attach the consonant glyph causing shape changes, but they are always placed at the right of the consonant glyph. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[8] = 0x0C32; - - testText[9] = 0x0C44; - - param.iPosInText = 8 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 10 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000f25 - && param.iOutput[1].iCode == 0x80000f32); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 22); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4038")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4038 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Matras MATRA VOCALIC R and MATRA VOCALIC RR never attach the consonant glyph causing shape changes, but they are always placed at the right of the consonant glyph. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - //Req 4.2.1 - testText[10] = 0x0C15; - testText[11] = 0x0C3E; - - param.iPosInText = 10 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 12 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f6d ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4039")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4039 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?MATRA AA attaches to the upwards left curving stroke -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[12] = 0x0C1F; - testText[13] = 0x0C3E; - param.iPosInText = 12 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 14 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f77 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4040")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4040 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?MATRA AA attaches the upwards (left curving) stroke at the top of the glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[14] = 0x0C1C; - testText[15] = 0x0C3E; - - param.iPosInText = 14 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 16 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f74 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4041")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4041 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?MATRA AA is drawn on top of the glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[16] = 0x0C23; - testText[17] = 0x0C3E; - - param.iPosInText = 16 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 18 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f7b ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4042")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4042 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?MATRA AA attaches to the upwards left curving stroke, the vowel stem remains intact -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[18] = 0x0C2B; - testText[19] = 0x0C3E; - - param.iPosInText = 18 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 20 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f82 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4043")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4043 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?MATRA AA replaces the vowel stem, the upwards left curving stroke is extended -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[20] = 0x0C2A; - testText[21] = 0x0C3E; - - param.iPosInText = 20 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 22 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f81); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 16); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4044")); - //Req 4.2.2 - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4044 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the vowel stem -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[22] = 0x0C26; - testText[23] = 0x0C3F; - - param.iPosInText = 22 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 24 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000fa2 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4045")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4045 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?The upwards left curving stroke extends, vowel sign attaches to the extended stroke -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[24] = 0x0C16; - testText[25] = 0x0C3F; - - param.iPosInText = 24 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 26 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f92); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4046")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4046 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign attaches the upward stroke at the top of the glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[26] = 0x0C1C; - testText[27] = 0x0C3F; - - param.iPosInText = 26 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 28 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f98 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4047")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4047 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign attaches the upward stroke at the top of the glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[28] = 0x0C1E; - testText[29] = 0x0C40; - - param.iPosInText = 28 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 30 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000fbe ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4048")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4048 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign attaches to the right upper corner of the glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[30] = 0x0C1F; - testText[31] = 0x0C3F; - - param.iPosInText = 30; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 32 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f9b ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4049")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4049 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign takes a loop form that replaces the vowel stem -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[32] = 0x0C1D; - testText[33] = 0x0C3F; - - param.iPosInText = 32 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 34 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f99 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4050")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4050 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?The upwards left curving stroke extends, vowel sign replaces the vowel stem at the tip of the extended stroke -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[34] = 0x0C1B; - testText[35] = 0x0C3F; - - param.iPosInText =34 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 36 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f97 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4051")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4051 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the upwards curving stroke at the top of the glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[36] = 0x0C1C; - testText[37] = 0x0C3F; - - param.iPosInText = 36 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 38 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000f98 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4052")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4052 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel stem is removed. -?Vowel stem is removed and MATRA II takes a form that looks like MATRA AA -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[38] = 0x0C2F; - testText[39] = 0x0C3F; - - param.iPosInText = 38 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 40 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000faa ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4053")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4053 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign attaches to the right of the consonant glyph, vowel stem remains intact -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[40] = 0x0C15; - testText[41] = 0x0C41; - - param.iPosInText = 40 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText ==42 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000fd9 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4054")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4054 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign takes a miniature form which attaches to the stroke at the top of the consonant glyph -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[42] = 0x0C19; - testText[43] = 0x0C41; - - param.iPosInText = 42 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 44 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80000fda ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 15); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4055")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4055 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign attaches the consonant sign from below. Vowel stem remains intact. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[44] = 0x0C2E; - testText[45] = 0x0C41; - - param.iPosInText = 44 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 46 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000f21 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 21); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - - testText[46] = 0x0C36; - testText[47] = 0x0C41; - - param.iPosInText = 46 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 48 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000f28 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4056")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4056 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the vowel stem -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ -// Req 4.2.4 - testText[48] = 0x0C28; - testText[49] = 0x0C46; - - param.iPosInText = 48 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 50 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80001000 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 11); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4057")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4057 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the vowel stem -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[50] = 0x0C1B; - testText[51] = 0x0C47; - - param.iPosInText = 50 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 52 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80001017 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 12); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4058")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4058 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the vowel stem -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[52] = 0x0C1D; - testText[53] = 0x0C48; - - param.iPosInText = 52 ; - param.iPen.iX = param.iPen.iY = 0; - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 54 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x80000ff5 - && param.iOutput[1].iCode == 0x80000f3b ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 19); - #endif - - INFO_PRINTF6(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x iOutput[1].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode, param.iOutput[1].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4059")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4059 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the vowel stem. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - // Req 4.2.5 - testText[54] = 0x0C15; - testText[55] = 0x0C4A; - - param.iPosInText = 54 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 56 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80001059 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 13); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4060")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4060 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the vowel stem. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - - testText[56] = 0x0C21; - testText[57] = 0x0C4B; - - param.iPosInText = 56 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 58 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x80001089 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-4061")); - /* -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-4061 -@SYMTestCaseDesc Automated GDI testing for Telugu -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid Telugu glyph clusters to test -?Vowel sign replaces the vowel stem. -@@SYMTestExpectedResults The expected glyph clusters for given Unicode characters must be returned -@SYMPREQ 1766: Tamil for Sphinx -@SYMREQ 8743:Tamil Text Rendering -*/ - testText[58] = 0x0C26; - testText[59] = 0x0C4C; - - param.iPosInText = 58 ; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont->GetCharacterPosition2(param,shapeInfo); - - TEST(r && param.iPosInText == 60 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x800010b2 ); - - #if defined __WINS__ || defined __WINSCW__ - TEST(r && param.iPen.iX == 14); - #endif - - INFO_PRINTF5(_L("The values are iPosInText=%d iPen.iX=%d iOutputGlyphs=%d iOutput[0].iCode=0x%x"), param.iPosInText, param.iPen.iX, param.iOutputGlyphs, param.iOutput[0].iCode); - } - -void CTGlyphSelection::TestIndicPunctuation(CFbsFont* aFont) - { - INFO_PRINTF1(_L("Test Indic Punctuation")); - - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - //INFO_PRINTF1(_L("// punctuation string after Kannada text")); - TestGlyphs(aFont,param,_L("\xC95!?#@"),_L("\x7A8\x920\x93C\x922\x23")); - //INFO_PRINTF1(_L("// punctuation string before Kannada text")); - TestGlyphs(aFont,param,_L("!?#@\xC95"),_L("\x21\x3F\x23\x40\x7A8")); - //INFO_PRINTF1(_L("// punctuation string before and after Kannada text")); - TestGlyphs(aFont,param,_L(" \"\xC95\" "),_L("\x20\x20\x22\x7A8\x22\x20\x20")); - //INFO_PRINTF1(_L("// punctuation before and after latin text followed by punctuation before and after kannada text")); - TestGlyphs(aFont,param,_L("\x201c\x041\x201D (\xc95)"),_L("\x201c\x41\x201d\x20\x28\x7a8\x29")); - //INFO_PRINTF1(_L("// mixed kannada/ latin with punctuation surrounded by whitespace inbetween")); - TestGlyphs(aFont,param,_L("\xc95 , \x041"),_L("\x7a8\x20\x929\x20\x41")); - //INFO_PRINTF1(_L("// mixed kannada/ latin with punctuation surrounded by whitespace inbetween (reversed)")); - TestGlyphs(aFont,param,_L("\x041 , \xc95"),_L("\x41\x20\x2C\x20\x7a8")); - //INFO_PRINTF1(_L("// mixed kannada/ latin with punctuation next to latin")); - TestGlyphs(aFont,param,_L("\x041, \xc95"),_L("\x41\x2C\x20\x7a8")); - //INFO_PRINTF1(_L("// mixed kannada/ latin with punctuation next to kannada")); - TestGlyphs(aFont,param,_L("\x041 ,\xc95"),_L("\x41\x20\x2C\x7a8")); - //INFO_PRINTF1(_L("// mixed kannada/ latin with punctuation next to latin and seperating tab")); - TestGlyphs(aFont,param,_L("\x041,\t\xc95"),_L("\x41\x2C\x9\x7a8")); - //INFO_PRINTF1(_L("// mixed kannada/ latin with punctuation next to kannada and seperating tab")); - TestGlyphs(aFont,param,_L("\x041\t,\xc95"),_L("\x41\x9\x2C\x7a8")); - //INFO_PRINTF1(_L("// devanagari digits with colons")); - TestGlyphs(aFont,param,_L("\x966\x03a\x967\x03a\x968\x03a\x969\x03a\x96a\x03a\x96b\x03a\x96c\x03a\x96d\x03a\x96e\x03a\x96f\x03a"), - _L("\x582\x77e\x583\x77e\x584\x77e\x585\x77e\x586\x77e\x587\x77e\x588\x77e\x589\x77e\x58a\x77e\x58b\x77e")); - //INFO_PRINTF1(_L("// string of only punctuation")); - TestGlyphs(aFont,param,_L("\x002D\x002D\x002D\x002D\x002D\x002D"),_L("\x002D\x002D\x002D\x002D\x002D\x002D")); - //INFO_PRINTF1(_L("// one Kannada character followed my multiple punctuation and non-punctuaion")); - TestGlyphs(aFont,param,_L("\x0C95!\x0022\x00A3$%^&*()-={}[]:@~;'#<>?,./"), - _L("\x07A8\x0920\x0022\x00A3\x0024\x0923\x005E\x0009\x0927\x0028\x0029\x092A\x003D\x007B\x007D\x005B\x005D\x0937\x0023\x007E\x0938\x0027\x0922\x003C\x003E\x093C\x0929\x092B\x092C")); - } - - - -void CTGlyphSelection::TestIndicCharsL() - { - // create a font store for testing - CFontStore* fontStore = CFontStore::NewL(&User::Heap()); - - //load all ecom implemented rasterizer dlls. installs the rasterizer. - LoadOpenFontLibraries(fontStore); - // test font preparation - fontStore->iKPixelWidthInTwips = 11860; //This value is default - - //add any required font files - TUid err = fontStore->AddFileL(KTestHindiFontFile); - - TFontSpec testHindiFontSpec(KTestHindiFontFaceName,200); - - TUid err1 = fontStore->AddFileL(KTestIndicFontFile); - - TFontSpec testIndicFontSpec(KTestIndicFontFaceName,200); - - CFbsBitmap* bmp = new(ELeave) CFbsBitmap; - - TInt ret = bmp->Create(TSize(100,100),EGray2); - if (ret == KErrNotSupported) - return; - else - User::LeaveIfError(ret); - - CFbsBitmapDevice* device = NULL; - TRAPD(err2,device = CFbsBitmapDevice::NewL(bmp)); - TEST(err2 == KErrNone); - - CFbsBitGc* gc = NULL; - User::LeaveIfError(device->CreateContext(gc)); - // Font file Creation - CFbsFont* hindiFont = NULL; - User::LeaveIfError(device->GetNearestFontToDesignHeightInTwips(hindiFont,testHindiFontSpec)); - gc->UseFont(hindiFont); - CleanupStack::PushL(hindiFont); - - //Testcode for Hindi language - ((CTGlyphSelectionStep*)iStep)->RecordTestResultL(); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-1580")); - TestHindiChars(hindiFont); - ((CTGlyphSelectionStep*)iStep)->RecordTestResultL(); - - CleanupStack::Pop(hindiFont); - - // Font file Creation - CFbsFont* indicFont = NULL; - User::LeaveIfError(device->GetNearestFontToDesignHeightInTwips(indicFont,testIndicFontSpec)); - gc->UseFont(indicFont); - CleanupStack::PushL(indicFont); - - //Testcode for Kannada, Marathi,Gujarati,Bengali language - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-3381")); - TestKannadaChars(indicFont); - ((CTGlyphSelectionStep*)iStep)->RecordTestResultL(); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-3360")); - TestMarathiChars(indicFont); - ((CTGlyphSelectionStep*)iStep)->RecordTestResultL(); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-3417")); - TestGujaratiChars(indicFont); - TestBengaliChars(indicFont); - TestTamilChars(indicFont); - TestTeluguChars(indicFont); - TestIndicPunctuation(indicFont); - CleanupStack::Pop(indicFont); - - //Cleaning the memory - delete bmp; - delete device; - delete gc; - fontStore->RemoveFile(err); - fontStore->RemoveFile(err1); - delete fontStore; - REComSession::FinalClose(); - } - - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CT-0221 -@SYMTestCaseDesc Test support for Vietnamese characters. -@SYMTestPriority High -@SYMTestActions Attempt to compose various valid and invalid Vietnamese glyph clusters. -@SYMTestExpectedResults The test must not fail. -@SYMPREQ 402: GDI for Bravo. -*/ -void CTGlyphSelection::TestVietnameseChars() - { -/** - This method is a test case to test GetCharacterPosition() correctly - processes Vietnamese characters. -*/ - TBool r; - TBuf<41> testText(0); - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(41); - - testText[0] = 0x0055; // capital U - testText[1] = 0x031B; // combining horn - expect 0x01AF (succeed) - - testText[2] = 0x0055; // capital U - testText[3] = 0x0027; // apostrophe - expect 0x0055 (fail) - - testText[4] = 0x0055; // capital U - testText[5] = 0x02B9; // modifier prime - expect 0x0055 (fail) - - testText[6] = 0x0055; // capital U - testText[7] = 0x02BC; // modifier apostrophe - expect 0x0055 (fail) - - testText[8] = 0x0055; // capital U - testText[9] = 0x0315; // combining comma above right - expect 0x0055, 0x0315 (fail) - - testText[10] = 0x0055; // capital U - testText[11] = 0x2019; // right single quote mark - expect 0x0055 (fail) - - testText[12] = 0x01AF; // capital U with horn - testText[13] = 0x0020; // space - expect 0x01AF (succeed) - - testText[14] = 0x0045; // capital E - testText[15] = 0x031B; // combining horn - expect 0x0045, 0x031B (fail) - - testText[16] = 0x0041; // capital A - testText[17] = 0x0306; // combining breve - testText[18] = 0x0301; // combining acute - expect 0x1EAE (succeed) - - testText[19] = 0x0102; // capital A with breve - testText[20] = 0x0301; // combining acute - expect 0x1EAE (succeed) - - testText[21] = 0x0041; // capital A - testText[22] = 0x0301; // combining acute - testText[23] = 0x0306; // combining breve - expect 0x0041, 0x0301, 0x0306 (fail) - - testText[24] = 0x0041; // capital A - testText[25] = 0x0323; // combining dot below - testText[26] = 0x0306; // combining breve - expect 0x1EB6 (succeed) - - testText[27] = 0x1EA0; // capital A with dot below - testText[28] = 0x0306; // combining breve - expect 0x1EB6 (succeed) - - testText[29] = 0x0102; // capital A with breve - testText[30] = 0x0323; // combining dot below - expect 0x0102, 0x0323 (fail) - - testText[31] = 0x0045; // capital A - testText[32] = 0x0302; // combining circumflex - testText[33] = 0x0301; // combining acute - expect 0x1EBE (succeed) - - testText[34] = 0x00CA; // capital A with circumflex - testText[35] = 0x0301; // combining acute - expect 0x1EBE (succeed) - - testText[36] = 0x004F; // capital O - testText[37] = 0x031B; // combining horn - testText[38] = 0x0309; // combining hook above - expect 0x1EDE (succeed) - - testText[39] = 0x01A0; // capital O with horn - testText[40] = 0x0309; // combining hook above - expect 0x1EDE (succeed) - - param.iText.Set(testText); - - // 1: Capital U with combining horn - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 2 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x01AF); - - // 2: Capital U with apostrophe - param.iPosInText = 2; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 3 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x0055); - - // 3: Capital U with modifier prime - param.iPosInText = 4; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 5 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x0055); - - // 4: Capital U with modifier apostrophe - param.iPosInText = 6; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 7 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x0055); - - // 5: Capital U with combining comma above right - param.iPosInText = 8; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 10 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x0055 - && param.iOutput[1].iCode == 0x0315); - - // 6: Capital U with right single quote - param.iPosInText = 10; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 11 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x0055); - - // 7: Capital U with horn plus space - param.iPosInText = 12; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 13 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x01AF); - - // 8: Capital E with combining horn - param.iPosInText = 14; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 16 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x0045 - && param.iOutput[1].iCode == 0x031B); - - // 9: Capital A with combining breve with combining acute - param.iPosInText = 16; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 19 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EAE); - - // 10: Capital A with breve with combining acute - param.iPosInText = 19; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 21 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EAE); - - // 11: Capital A with combining acute with combining breve - param.iPosInText = 21; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 24 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 3 - && param.iOutput[0].iCode == 0x0041 - && param.iOutput[1].iCode == 0x0301 - && param.iOutput[2].iCode == 0x0306); - - // 12: Capital A with combining dot below with combining breve - param.iPosInText = 24; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 27 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EB6); - - // 13: Capital A with dot below with combining breve - param.iPosInText = 27; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 29 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EB6); - - // 14: Capital A with breve with combining dot below - param.iPosInText = 29; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 31 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 2 - && param.iOutput[0].iCode == 0x0102 - && param.iOutput[1].iCode == 0x0323); - - // 15: Capital A with combining circumflex with combining acute - param.iPosInText = 31; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 34 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EBE); - - // 16: Capital A with circumflex with combining acute - param.iPosInText = 34; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 36 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EBE); - - // 17: Capital O with combining horn with combing hook above - param.iPosInText = 36; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 39 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EDE); - - // 18: Capital O with horn with combing hook above - param.iPosInText = 39; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 41 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 0x1EDE); - } - - -void CTGlyphSelection::TestNonBmpCharsL() - { - // create a font store for testing - CFontStore* fontStore = CFontStore::NewL(&User::Heap()); - - //load all ecom implemented rasterizer dlls. installs the rasterizer. - LoadOpenFontLibraries(fontStore); - // test font preparation - fontStore->iKPixelWidthInTwips = 11860; //This value is default - - //add any required font files - TUid err = fontStore->AddFileL(KTestGB18030FontFile); - - TFontSpec testGB18030FontSpec(KTestGB18030FontFaceName,200); - - CFbsBitmap* bmp = new(ELeave) CFbsBitmap; - - TInt ret = bmp->Create(TSize(100,100),EGray2); - if (ret == KErrNotSupported) - return; - else - User::LeaveIfError(ret); - - CFbsBitmapDevice* device = NULL; - TRAPD(err2,device = CFbsBitmapDevice::NewL(bmp)); - TEST(err2 == KErrNone); - - CFbsBitGc* gc = NULL; - User::LeaveIfError(device->CreateContext(gc)); - // Font file Creation - CFbsFont* gb18030Font = NULL; - User::LeaveIfError(device->GetNearestFontToDesignHeightInTwips(gb18030Font,testGB18030FontSpec)); - gc->UseFont(gb18030Font); - CleanupStack::PushL(gb18030Font); - - //Testcode for GB18030 - ((CTGlyphSelectionStep*)iStep)->RecordTestResultL(); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("TI18N-GDI-CIT-4077")); - TestNonBmpCharsInGB18030(gb18030Font); - ((CTGlyphSelectionStep*)iStep)->RecordTestResultL(); - - CleanupStack::Pop(gb18030Font); - - //Cleaning the memory - delete bmp; - delete device; - delete gc; - fontStore->RemoveFile(err); - delete fontStore; - REComSession::FinalClose(); - } - - -void CTGlyphSelection::TestTextDirection() -/** - This method is a test case to test GetCharacterPosition() correctly - produces glyph bounding boxes and utilizes various pen offsets in - a horizontal and vertical context. -*/ - { - TBool r; - TBuf<20> testText(0); - CFont::TPositionParam param; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - testText.SetLength(5); - testText[0] = 'a'; - testText[1] = 'B'; - testText[2] = 'c'; - testText[3] = ' '; - testText[4] = '1'; - param.iText.Set(testText); - - // 1: Test horizontal text pen advancement & bounds - param.iDirection = CFont::EHorizontal; - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 1 - && param.iPen == TPoint(10,0) - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 'a' - && param.iOutput[0].iBounds.iTl == TPoint(0,-10) - && param.iOutput[0].iBounds.iBr == TPoint(10,2)); - // add check for bounds - - // 2: Test horizontal text pen advancement with +ve pen offset - param.iPosInText = 4; - param.iPen.iX = 20; - param.iPen.iY = 12; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 5 - && param.iPen == TPoint(30,12) - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == '1' - && param.iOutput[0].iBounds.iTl == TPoint(20,2) - && param.iOutput[0].iBounds.iBr == TPoint(30,14)); - - // 3: Test horizontal text pen advancement with -ve pen offset - param.iPosInText = 4; - param.iPen.iX = -10; - param.iPen.iY = -24; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 5 - && param.iPen == TPoint(0,-24) - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == '1' - && param.iOutput[0].iBounds.iTl == TPoint(-10,-34) - && param.iOutput[0].iBounds.iBr == TPoint(0,-22)); - - // 4: Test vertical text pen advancement & bounds - param.iDirection = CFont::EVertical; - param.iPosInText = 1; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 2 - && param.iPen == TPoint(0,12) - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == 'B' - && param.iOutput[0].iBounds.iTl == TPoint(0,0) - && param.iOutput[0].iBounds.iBr == TPoint(10,12)); - - // 5: Test vertical text pen advancement with +ve pen offset - param.iPosInText = 4; - param.iPen.iX = 20; - param.iPen.iY = 12; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 5 - && param.iPen == TPoint(20,24) - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == '1' - && param.iOutput[0].iBounds.iTl == TPoint(20,12) - && param.iOutput[0].iBounds.iBr == TPoint(30,24)); - - // 6: Test vertical text pen advancement with -ve pen offset - param.iPosInText = 4; - param.iPen.iX = -10; - param.iPen.iY = -24; - r = iTestFont->GetCharacterPosition(param); - TEST(r && param.iPosInText == 5 - && param.iPen == TPoint(-10,-12) - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == '1' - && param.iOutput[0].iBounds.iTl == TPoint(-10,-24) - && param.iOutput[0].iBounds.iBr == TPoint(0,-12)); - } - -void CTGlyphSelection::TestAllUnicodeChars() -/** - This method is a test case to test GetCharacterPosition() correctly - processes all the characters in the Unicode code space 0x0000 to - 0xffff. -*/ - { - TBool r; - TBuf<8> testText(0); - CFont::TPositionParam param; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - TInt errors = 0; - testText.SetLength(1); - for (TUint i = 0xd802; i <= 0xffff; i++) - { - testText[0] = (TText16) i; - if (i==0x1b) continue; // Skip as CTestFont designed to fail here r==0. - param.iText.Set(testText); - param.iDirection = CFont::EHorizontal; - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - r = iTestFont->GetCharacterPosition(param); - if (!r || param.iPosInText != 1) - { - errors++; - //RDebug::Print(_L("%04x(%d,%d,%d), "), i, r, param.iPosInText, param.iOutputGlyphs ); - //if (errors%8 == 0) - // RDebug::Print(_L("\n")); - } - } - - TEST (errors == 0); - } - -/** Tests that ligatures (presently just Lam-Alef in Arabic) work correctly -when diacritics are required on one, both or neither character comprising the -ligature. */ -void CTGlyphSelection::TestLigaturesWithDiacritics() - { - // independent letters - const TText KAlef = 0x627; - const TText KLam = 0x644; - const TText KBeh = 0x628; - // dependent marks - const TText KFatha = 0x64E; - const TText KDamma = 0x64F; - // ligature forms - const TText KLamAlefIsolated = 0xFEFB; - const TText KLamAlefFinal = 0xFEFC; - - struct TTestCase - { - // Logical order input. - TText iInputL[8]; - // Visual order input, should be equivalent to iInputL. - TText iInputV[8]; - // Which cluster to test - TInt iClusterUnderTestStartL; - TInt iClusterUnderTestStartV; - // Expected glyphs to appear (in any order, but...) - TInt iGlyphs[8]; - // ...number of glyphs from the start of iGlyphs that - // are in order of their expected x-coordinates (of their - // centres) - TInt iGlyphsInOrder; - }; - const TTestCase KTestCases[] = - { - {{KLam, KAlef, 0}, {KAlef, KLam, 0}, - 0, 0, {KLamAlefIsolated, 0}, 1}, - {{KBeh, KLam, KAlef, KBeh, 0}, {KBeh, KAlef, KLam, KBeh, 0}, - 1, 1, {KLamAlefFinal, 0}, 1}, - {{KLam, KFatha, KAlef, 0}, {KAlef, KLam, KFatha, 0}, - 0, 0, {KLamAlefIsolated, KFatha, 0}, 1}, - {{KBeh, KLam, KFatha, KAlef, KBeh, 0}, {KBeh, KAlef, KLam, KFatha, KBeh, 0}, - 1, 1, {KLamAlefFinal, KFatha, 0}, 1}, - {{KLam, KAlef, KDamma, 0}, {KAlef, KDamma, KLam, 0}, - 0, 0, {KLamAlefIsolated, KDamma, 0}, 1}, - {{KBeh, KLam, KAlef, KDamma, KBeh, 0}, {KBeh, KAlef, KDamma, KLam, KBeh, 0}, - 1, 1, {KLamAlefFinal, KDamma, 0}, 1}, - {{KLam, KFatha, KAlef, KDamma, 0}, {KAlef, KDamma, KLam, KFatha, 0}, - 0, 0, {KDamma, KFatha, KLamAlefIsolated, 0}, 2}, - {{KBeh, KLam, KFatha, KAlef, KDamma, KBeh, 0}, - {KBeh, KAlef, KDamma, KLam, KFatha, KBeh, 0}, - 1, 1, {KDamma, KFatha, KLamAlefFinal, 0}, 2}, - }; - TBuf<8> input; - CFont::TPositionParam param; - for (TInt testCase = 0; - testCase != sizeof(KTestCases)/sizeof(KTestCases[0]); - ++testCase) - { - const TTestCase& t = KTestCases[testCase]; - for (TInt logical = 0; logical != 2; ++logical) - { - const TText* in = logical? - t.iInputL : t.iInputV; - input.Zero(); - while (*in) - input.Append(*in++); - param.iText.Set(input); - param.iPosInText = logical? - t.iClusterUnderTestStartL : t.iClusterUnderTestStartV; - param.iFlags = static_cast<TUint16>(logical? - CFont::TPositionParam::EFLogicalOrder : 0); - param.iPen.SetXY(0, 0); - TBool r = iTestFont->GetCharacterPosition(param); - TEST(r); - TInt currentX = KMinTInt; - TInt expectedGlyphNo = 0; - while (t.iGlyphs[expectedGlyphNo] != 0) - { - // FInd the expected glyph in the output. - TInt outputGlyph = 0; - while (outputGlyph != param.iOutputGlyphs - && static_cast<TInt>(param.iOutput[outputGlyph].iCode) - != t.iGlyphs[expectedGlyphNo]) - { - ++outputGlyph; - } - TEST(outputGlyph < param.iOutputGlyphs); - TInt x = param.iOutput[outputGlyph].iBounds.Center().iX; - TEST(t.iGlyphsInOrder <= expectedGlyphNo - || currentX < x); - currentX = x; - ++expectedGlyphNo; - } - TEST(expectedGlyphNo == param.iOutputGlyphs); - } - } - } - - #if defined(__GCC32__) - typedef wchar_t __TText; - #elif defined(__VC32__) - typedef TUint16 __TText; - #elif defined(__CW32__) - typedef TUint16 __TText; - #elif !defined(__TText_defined) - #error no typedef for __TText - #endif - const __TText* KLatinNoSideBearings = L"ABCDE"; - const __TText* KLatinLeftSideBearing = L"WABCD"; - const __TText* KLatinRightSideBearing = L"ABCDW"; - const __TText* KLatinBothSideBearings = L"WABCW"; - const __TText* KArabicAlefWaw = L"\x627\x648"; - const __TText* KArabicWawAlef = L"\x648\x627"; - const __TText* KGb18030NoSideBearings = L"\xD840\xDC00xyz\xD87E\xDE1D"; - const __TText* KGb18030LeftSideBearings = L"W\xD840\xDC00xy\xD87E\xDE1D"; - const __TText* KGb18030RightSideBearings = L"\xD840\xDC00xy\xD87E\xDE1DW"; - const __TText* KGb18030BothSideBearings = L"W\xD840\xDC00x\xD87E\xDE1DW"; - struct TMeasureTextTest - { - const __TText* iText; - TInt iExpectedAdvanceLogical; - TInt iExpectedAdvanceL2R; - TInt iExpectedBoundsL2RLeft; - TInt iExpectedBoundsL2RRight; - TInt iExpectedBoundsL2RTop; - TInt iExpectedBoundsL2RBottom; - TInt iExpectedAdvanceR2L; - TInt iExpectedBoundsR2LLeft; - TInt iExpectedBoundsR2LRight; - TInt iExpectedBoundsR2LTop; - TInt iExpectedBoundsR2LBottom; - }; - const TMeasureTextTest KMeasureTextResults[] = - { - {KLatinNoSideBearings, 50, 50, 0, 50, -10, 2, 50, 0, 50, -10, 2}, - {KLatinLeftSideBearing, 50, 50, -1, 50, -10, 2, 50, 0, 51, -10, 2}, - {KLatinRightSideBearing, 50, 50, 0, 51, -10, 2, 50, -1, 50, -10, 2}, - {KLatinBothSideBearings, 50, 50, -1, 51, -10, 2, 50, -1, 51, -10, 2}, - {KArabicAlefWaw, 20, 20, 0, 20, -10, 2, 20, -5, 20, -10, 2}, - {KArabicWawAlef, 20, 20, -5, 20, -10, 2, 20, 0, 20, -10, 2}, - // ones containing surrogate pairs - {KGb18030NoSideBearings, 50, 50, 0, 50, -10, 2, 50, 0, 50, -10, 2}, - {KGb18030LeftSideBearings, 50, 50, -1, 50, -10, 2, 50, 0, 51, -10, 2}, - {KGb18030RightSideBearings, 50, 50, 0, 51, -10, 2, 50, -1, 50, -10, 2}, - {KGb18030BothSideBearings, 50, 50, -1, 51, -10, 2, 50, -1, 51, -10, 2}, - }; - /** Tests CFont::MeasureText */ - void CTGlyphSelection::TestMeasureText() - { - CFont::TMeasureTextInput input; - CFont::TMeasureTextOutput output; - TInt advance; - for (TInt i = 0; - i != sizeof(KMeasureTextResults)/sizeof(KMeasureTextResults[0]); ++i) - { - TPtrC text(reinterpret_cast<const TText16*>( - KMeasureTextResults[i].iText)); - advance = iTestFont->MeasureText(text, &input, &output); - TEST(advance == KMeasureTextResults[i].iExpectedAdvanceLogical); - input.iFlags = CFont::TMeasureTextInput::EFVisualOrder; - advance = iTestFont->MeasureText(text, &input, &output); - TEST(advance == KMeasureTextResults[i].iExpectedAdvanceL2R); - TEST(output.iBounds.iTl.iX == KMeasureTextResults[i].iExpectedBoundsL2RLeft); - TEST(output.iBounds.iBr.iX == KMeasureTextResults[i].iExpectedBoundsL2RRight); - TEST(output.iBounds.iTl.iY == KMeasureTextResults[i].iExpectedBoundsL2RTop); - TEST(output.iBounds.iBr.iY == KMeasureTextResults[i].iExpectedBoundsL2RBottom); - input.iFlags = CFont::TMeasureTextInput::EFVisualOrderRightToLeft; - advance = iTestFont->MeasureText(text, &input, &output); - TEST(advance == KMeasureTextResults[i].iExpectedAdvanceR2L); - TEST(output.iBounds.iTl.iX == KMeasureTextResults[i].iExpectedBoundsR2LLeft); - TEST(output.iBounds.iBr.iX == KMeasureTextResults[i].iExpectedBoundsR2LRight); - TEST(output.iBounds.iTl.iY == KMeasureTextResults[i].iExpectedBoundsR2LTop); - TEST(output.iBounds.iBr.iY == KMeasureTextResults[i].iExpectedBoundsR2LBottom); - } - - INFO_PRINTF1(_L("Test fix for INC086257 - EFIncludePenPositionInBoundsCheck")); - // left-to-right w/o flag and bounds set to just fit string disregarding sidebearings - input.iFlags = 0; - input.iMaxBounds = 50; - iTestFont->MeasureText(_L("XXXXX"), &input, &output); - TEST(output.iChars == 5); - // set flag, string should no longer fit (break happens) - input.iFlags = CFont::TMeasureTextInput::EFIncludePenPositionInBoundsCheck; - iTestFont->MeasureText(_L("XXXXX"), &input, &output); - TEST(output.iChars == 4); - // right-to-left w/o flag and bounds set to just fit string disregarding sidebearings - input.iFlags = CFont::TMeasureTextInput::EFVisualOrderRightToLeft; - iTestFont->MeasureText(_L("\x5EA\x5EA\x5EA\x5EA\x5EA"), &input, &output); - TEST(output.iChars == 5); - // set flag, string should no longer fit (break happens) - input.iFlags |= CFont::TMeasureTextInput::EFIncludePenPositionInBoundsCheck; - iTestFont->MeasureText(_L("\x5EA\x5EA\x5EA\x5EA\x5EA"), &input, &output); - TEST(output.iChars == 4); - // top-to-bottom w/o flag and bounds set to just fit string disregarding endbearings - input.iFlags = 0; - input.iMaxBounds = 60; - input.iDirection = CFont::EVertical; - iTestFont->MeasureText(_L("\x304B\x304B\x304B\x304B\x304B"), &input, &output); - TEST(output.iChars == 5); - // set flag, string should no longer fit (break happens) - input.iFlags = CFont::TMeasureTextInput::EFIncludePenPositionInBoundsCheck; - iTestFont->MeasureText(_L("\x304B\x304B\x304B\x304B\x304B"), &input, &output); - TEST(output.iChars == 4); - } - -void CTGlyphSelection::RunTestCaseL(TInt aCurTestCase) -/** - This method will execute each test case method in the class - logging its progress as it does so. -*/ - { - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(aCurTestCase) - { - case 1: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0200 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0200")); - INFO_PRINTF1(_L("Test API Boundaries")); - TestApiBoundaries(); - break; - case 2: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0201 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0201")); - INFO_PRINTF1(_L("Test CTRL Chars")); - TestCtrlCharsIgnored(); - break; - case 3: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0202 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0202")); - INFO_PRINTF1(_L("Test Latin Chars")); - TestLatinChars(); - break; - case 4: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0203 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0203")); - INFO_PRINTF1(_L("Test Soft Hypen Char")); - TestSoftHyphen(); - break; - case 5: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0204 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0204")); - INFO_PRINTF1(_L("Test Surrogate Pairs")); - TestSurrogates(); - INFO_PRINTF1(_L("Test Supplementary Chars")); - TestNonBmpCharsL(); - break; - case 6: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0205 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0205")); - INFO_PRINTF1(_L("Test Combining Latin Chars")); - TestCombiningLatinChars(); - break; - case 7: - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0221")); - INFO_PRINTF1(_L("Test Vietnamese Chars")); - TestVietnameseChars(); - break; - case 8: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0206 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0206")); - INFO_PRINTF1(_L("Test Vertical/Horizontal Text Bounds")); - TestTextDirection(); - break; - case 9: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0207 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0207")); - INFO_PRINTF1(_L("Test All Unicode Characters")); - TestAllUnicodeChars(); - break; - case 10: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0208 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0208")); - INFO_PRINTF1(_L("Test Ligatures with Diacritics")); - TestLigaturesWithDiacritics(); - break; - case 11: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0209 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0209")); - INFO_PRINTF1(_L("Test CFont::MeasureText()")); - TestMeasureText(); - break; - case 12: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0210 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0210")); - INFO_PRINTF1(_L("Test Indic Glyphs")); - TestIndicCharsL(); - break; - case 13: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0211 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0211")); - INFO_PRINTF1(_L("Test Thai Rendering")); - ExecuteThaiTests(); - break; - case 14: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0212 -*/ - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0212")); - INFO_PRINTF1(_L("Test isolated Combining Latin Chars")); - TestIsolatedCombiningLatinChars(); - break; - case 15: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0213 -*/ - INFO_PRINTF1(_L("Test Indic Gurmukhi and Malayalam Chars")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0213")); - ExecuteIndicGurmukhiMalayalamTests(); - break; - case 16: -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CIT-0214 -*/ - INFO_PRINTF1(_L("Test Rendering Context")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-SYSLIB-GDI-CIT-0214")); - TestContextInShapeInfo(); - break; - case 17: - TestComplete(); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTGlyphSelectionStep*)iStep)->CloseTMSGraphicsStep(); - break; - } - ((CTGlyphSelectionStep*)iStep)->RecordTestResultL(); - } - -void CTGlyphSelection::TestPerformance() -/** - This method tests the performance of the API under test - by executing a 10000 cycles of each test case. -**/ - { - TStopWatch profile; - INFO_PRINTF1(_L("Test Performance...")); - - profile.Start(); - for (TInt i = 0; i < 10000; i++) - { - TestCtrlCharsIgnored(); - TestLatinChars(); - TestSoftHyphen(); - TestSurrogates(); - TestCombiningLatinChars(); - TestTextDirection(); - - } - TUint numMilliSecs = profile.Stop(); - - INFO_PRINTF3(_L("Performance test end %d.%d s\n"),numMilliSecs/1000,numMilliSecs%1000); - } - - -void CTGlyphSelection::TestThai_SimpleChars() -/** - This routine tests individual Thai base characters pumping them - through the CFont::GetCharacterPosition() API. -*/ - { - TBool r; - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - TBuf<5> testText(0); - testText.SetLength(1); - param.iText.Set(testText); - - for (TUint i=0; Thai_SimpleChars[i] != 0xFFFF; i++) - { - testText[0] = Thai_SimpleChars[i]; - param.iPosInText = 0; - param.iPen.iX = param.iPen.iY = 0; - - r = iTestFont->GetCharacterPosition(param); - - TEST(r && param.iPosInText == 1 - && param.iPen.iX == 10 - && param.iOutputGlyphs == 1 - && param.iOutput[0].iCode == Thai_SimpleChars[i]); - } - } - - -void CTGlyphSelection::TestThai_ValidGlyphClusters() -/** - This routine tests combining sequences of Thai base & mark - characters pumping them through the CFont::GetCharacterPosition() API. - The sequences mainly test the correct formation of Thay Glyph clusters - and the PUA substutions that take place. -*/ - { - TInt failures=0; - TBool r; - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - for (TUint i=0; Thai_ValidGlyphClusters[i].iTextLen != -1; i++) - { - TBuf<8> testText(Thai_ValidGlyphClusters[i].iText); - param.iText.Set(testText); - param.iPosInText = Thai_ValidGlyphClusters[i].iPosInText; - param.iPen.iX = param.iPen.iY = 0; - - r = iTestFont->GetCharacterPosition(param); - - if (r && param.iPosInText == Thai_ValidGlyphClusters[i].oPosInText - && param.iOutputGlyphs == Thai_ValidGlyphClusters[i].oOutputLen) - { - for (TInt j=0; j<Thai_ValidGlyphClusters[i].oOutputLen; j++) - { - if (param.iOutput[j].iCode != Thai_ValidGlyphClusters[i].oOutput[j]) - { - INFO_PRINTF4(_L("FAILURE: Glyph code invariance, Complex TEST(%d), %x != %x\n"), i, param.iOutput[j].iCode, Thai_ValidGlyphClusters[i].oOutput[j]); - failures++; - break; - } - } - } - else - { - INFO_PRINTF2(_L("FAILURE: Bad output result from GetCharacterPosition, Complex TEST(%d)\n"), i); - failures++; - } - } - - TEST(failures == 0); - } - - -void CTGlyphSelection::TestThai_InvalidGlyphClusters() -/** - This routine tests Thai base & mark cluster boundaries to ensure where - requried the KUnicodeDottedCircle char is used when an invalid sequence is - processed. Test data from the global Thai_GlyphClusterBoundaries - variable is pumped through the CFont::GetCharacterPosition() API. -*/ - { - TInt failures=0; - TBool r; - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - for (TUint i=0; Thai_GlyphClusterBoundaries[i].iTextLen != -1; i++) - { - TBuf<8> testText(Thai_GlyphClusterBoundaries[i].iText); - param.iText.Set(testText); - - for (TUint k=0; k<2; k++) - { - if (Thai_GlyphClusterBoundaries[i].oOut[k].iPosInText == -1) - continue; - - param.iPosInText = Thai_GlyphClusterBoundaries[i].oOut[k].iPosInText; - param.iPen.iX = param.iPen.iY = 0; - - r = iTestFont->GetCharacterPosition(param); - - if (r && param.iPosInText == Thai_GlyphClusterBoundaries[i].oOut[k].oPosInText - && param.iOutputGlyphs == Thai_GlyphClusterBoundaries[i].oOut[k].oOutputLen) - { - for (TInt j=0; j<Thai_GlyphClusterBoundaries[i].oOut[k].oOutputLen; j++) - { - if (!(param.iOutput[j].iCode == Thai_GlyphClusterBoundaries[i].oOut[k].oOutput[j])) - { - INFO_PRINTF5(_L("FAILURE: Glyph code invariance, Complex TEST(%d,%d), %x != %x\n"), i, k, param.iOutput[j].iCode, Thai_GlyphClusterBoundaries[i].oOut[k].oOutput[j]); - failures++; - break; - } - } - } - else - { - INFO_PRINTF3(_L("FAILURE: Bad output result from GetCharacterPosition, Complex TEST(%d,%d)\n"), i, k); - failures++; - } - - } - } - - if (failures) - RDebug::Print(_L("TOTAL FAILURES: %d\n"), failures); - TEST(failures == 0); - } - -/** -@SYMTestCaseID GRAPHICS-SYSLIB-GDI-CT-4062 -@SYMTestCaseDesc Tests that a punctuation character following the special-case - character Thai SaraAm is rendered as a punctuation, not - another SaraAm character. -@SYMTestPriority High -@SYMTestActions Compare input string and corresponding output glyph codes -@SYMTestExpectedResults In this case, the string and the codes should match. -@SYMDEF INC118424 -*/ -void CTGlyphSelection::TestThai_INC118424() - { - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - - //punctuation after SaraAm - TestGlyphs(iTestFont,param,_L("\xE04\xE33:\?>"),_L("\xE04\xE33:\?>")); - } - -/** - This fuction tests Indic Gurmukhi and Malayalam support -*/ -void CTGlyphSelection::ExecuteIndicGurmukhiMalayalamTests() - { - // create a font store for testing - CFontStore* fontStore = CFontStore::NewL(&User::Heap()); - - //load all ecom implemented rasterizer dlls. installs the rasterizer. - LoadOpenFontLibraries(fontStore); - // test font preparation - fontStore->iKPixelWidthInTwips = 11860; //This value is default - - //add any required font files - TUid err1 = fontStore->AddFileL(KTestIndicFontFile); - - TFontSpec testIndicFontSpec(KTestIndicFontFaceName,200); - - CFbsBitmap* bmp = new(ELeave) CFbsBitmap; - - TInt ret = bmp->Create(TSize(100,100),EGray2); - if (ret == KErrNotSupported) - return; - else - User::LeaveIfError(ret); - - CFbsBitmapDevice* device = NULL; - TRAPD(err2,device = CFbsBitmapDevice::NewL(bmp)); - TEST(err2 == KErrNone); - - CFbsBitGc* gc = NULL; - User::LeaveIfError(device->CreateContext(gc)); - - // Font file Creation - CFbsFont* indicFont = NULL; - User::LeaveIfError(device->GetNearestFontToDesignHeightInTwips(indicFont,testIndicFontSpec)); - gc->UseFont(indicFont); - CleanupStack::PushL(indicFont); - - //Testcode for Kannada, Marathi,Gujarati,Bengali language - // Test Indic Gurmukhi digit. - TInt err; - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Gurmukhi digits")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4063")); - TestGurmukhiDigit( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Gurmukhi and Latin")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4064")); - TestGurmukhiAndLatin( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic DEF102858 on Gurmukhi")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4065")); - TestGurmukhiModifierAfterConsonantViramaZWJ( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Gurmukhi consonant leading")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4066")); - TestGurmukhiWithConsonantInitial( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Gurmukhi vowel leading")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4068")); - TestGurmukhiWithVowelInitial( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Malayalam digits")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4067")); - TestMalayalamDigit( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Malayalam and Latin")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4069")); - TestMalayalamAndLatin( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic DEF102858 on Malayalam")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4070")); - TestMalayalamModifierAfterConsonantViramaZWJ( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Malayalam consonant leading")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4071")); - TestMalayalamWithConsonantInitial( *indicFont ); - TRAP(err,((CTGlyphSelectionStep*)iStep)->RecordTestResultL()); - if (err!=KErrNone) - INFO_PRINTF1(_L("Failed to record test result")); - INFO_PRINTF1(_L("Test Indic Malayalam vowel leading")); - ((CTGlyphSelectionStep*)iStep)->SetTestStepID(_L("GRAPHICS-TI18N-GDI-CIT-4072")); - TestMalayalamWithVowelInitial( *indicFont ); - CleanupStack::Pop(indicFont); - - //Cleaning the memory - delete bmp; - delete device; - delete gc; - fontStore->RemoveFile(err1); - delete fontStore; - REComSession::FinalClose(); - } -/** - This function tests the Thai Font Rendering feature of the CFont class - in the GDI.dll and in particular the modifications made to - CFont::GetCharacterPosition() to support the Unicocde Thai code page. - First introduced during the Sirocco project (A3.1.1) -@SYMFssID Graphics/GDI/GDI/1 -@SYMFssID Graphics/GDI/GDI/2 -*/ - -void CTGlyphSelection::ExecuteThaiTests() - { - // Test individual Thai digits, letters and sign characters. - INFO_PRINTF1(_L("Test Thai simple charecters")); - TestThai_SimpleChars(); - - // Test complex Thai char sequences. - INFO_PRINTF1(_L("Test valid Thai glyph clusters")); - TestThai_ValidGlyphClusters(); - - // Test Thai glyph cluster boundaries. - INFO_PRINTF1(_L("Test invalid Thai glyph clusters")); - TestThai_InvalidGlyphClusters(); - - // Test Thai SaraAm-punctuation exception. - INFO_PRINTF1(_L("Test fix for INC118424")); - TestThai_INC118424(); - } - - -/* - * Note: - * This is just a easy way to help generate the test data info - * Any new added test data should do manually check firstly to check the correction before using this function - */ -// #define GEN_GURMUKHIMALAYALAMTESTDATA -void CTGlyphSelection::GenerateGurmukhiMalayalamData( const TDesC& filename, const TTestInput_PositionParam6* testArray, const CFbsFont& aFont ) - { - RFile file; - file.Replace( iFs, filename, EFileWrite ); - - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - RShapeInfo shapeInfo; - - if (!testArray) - { - return; - } - - for (TUint i = 0; testArray[i].iTextLen != -1; i++) - { - TTestInput_PositionParam6 currentArray = testArray[i]; - TBuf<8> testText(testArray[i].iText); - param.iText.Set(testText); - - TBuf8<256> datatext; - datatext.SetLength(0); - //{ 1, {0x0a66}, { {0, 1, 1, {0x12fe} }, {-1, 1, 1, {0} } } }, - datatext.Format(_L8("{ %d, {"), testArray[i].iTextLen); // 1, - - for (TUint i = 0; i<testText.Length(); i++) - { - TBuf8<8> tmp; - tmp.Format(_L8("0x%x, "), currentArray.iText[i]); // {0x0a66}, - datatext.Append(tmp); - } - datatext = datatext.Left(datatext.Length()-2); - datatext.Append(_L8("}, { ")); - - if (shapeInfo.IsOpen()) - shapeInfo.Close(); - - for (TUint k = 0; k < 6; k++) - { - param.iPosInText = k; - param.iPen.iX = param.iPen.iY = 0; - TBool ret = aFont.GetCharacterPosition2(param, shapeInfo); - if (0 == param.iOutputGlyphs) - continue; - - TBuf8<16> tmp; - tmp.Format(_L8("{%d, %d, %d, {"), k, param.iPosInText, param.iOutputGlyphs); - datatext.Append(tmp); - - for (TInt j = 0; j < param.iOutputGlyphs; j++) - { - TText16 aCode = param.iOutput[j].iCode; - TBuf8<128> tmp; - tmp.Format(_L8("0x%x, "), aCode); - datatext.Append(tmp); - } //end for - datatext = datatext.Left(datatext.Length()-2); - datatext.Append(_L8("}}, ")); - } //end for - datatext.Append(_L8(" {-1, 1, 1, {0}} } }, \n")); - - file.Write(datatext); - } //end for - - file.Close(); - return; - } - -void CTGlyphSelection::DoEachGurmukhiMalayalamCase( const TTestInput_PositionParam6* testArray, const CFbsFont& aFont ) - { - TInt failures=0; - TBool r; - CFont::TPositionParam param; - param.iDirection = CFont::EHorizontal; - param.iFlags = CFont::TPositionParam::EFLogicalOrder; - RShapeInfo shapeInfo; - - if ( !testArray ) - { - return; - } - - for (TUint i=0; testArray[i].iTextLen != -1; i++) - { - TBuf<8> testText(testArray[i].iText); - param.iText.Set(testText); - if(shapeInfo.IsOpen()) - shapeInfo.Close(); - - for (TUint k=0; k<6; k++) - { - // If it's end of sequence - if ( testArray[i].oOut[k].iPosInText == -1) - break; - - param.iPosInText = testArray[i].oOut[k].iPosInText; - param.iPen.iX = param.iPen.iY = 0; - - r = aFont.GetCharacterPosition2(param, shapeInfo); - - if (r && param.iPosInText == testArray[i].oOut[k].oPosInText - && param.iOutputGlyphs == testArray[i].oOut[k].oOutputLen) - { - for (TInt j=0; j<testArray[i].oOut[k].oOutputLen; j++) - { - // Trim off the highest bit - TText16 aCode = param.iOutput[j].iCode; - if (!( aCode == testArray[i].oOut[k].oOutput[j])) - { - INFO_PRINTF5(_L("FAILURE: Glyph code invariance, Complex TEST(%d,%d), %x != %x\n"), i, k, param.iOutput[j].iCode, testArray[i].oOut[k].oOutput[j]); - failures++; - break; - } - } - } - else - { - INFO_PRINTF4(_L("FAILURE: Bad output result from GetCharacterPosition, Complex TEST(%d,%d,%d)\n"), i, k, param.iOutputGlyphs); - failures++; - } - - } - } - - if (failures) - RDebug::Print(_L("TOTAL FAILURES: %d\n"), failures); - TEST(failures == 0); - } -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4063 -@SYMTestCaseDesc Case to check Gurmukhi digit support -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following - 1.Pass Gurmukhi digit (0xa66 ~ 0x0a6f) sequence - 2.Pass any Consonant + Gurmukhi digit sequence - 3.Pass any Consonant + Gurmukhi digit + Matra sequence - 4.Repetitive callss with Unicode sequence from the first 3 action items - 5.Pass Modifer + digit sequence - 6.Pass Vowel and digit sequence - 7.Pass Virama and digit sequence -@SYMTestExpectedResults 1.Glyph count, character count for digit is 1 for each digit, and glyph indices depends on font - 2.Digit is recognized as a separate syllable - 3.Matra and digit is not combined together - 4.The shaper returned the same result as first 3 results - 5.digit is recognized, and not combined with Modifier - 6.digit is recognized, and not combined with Vowel. - 7.digit is recognized, and not combined with Virama. -@SYMPREQ 1922: Gurmukhi support -*/ -void CTGlyphSelection::TestGurmukhiDigit( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\GurmukhiDigit.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4064 -@SYMTestCaseDesc case to check if shaper can render Gurmukhi with other implemented Indic scripts and Latin -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following - 1.Pass Gurmukhi sentence and Latin to the function - 2.Pass Latin and Gurmukhi setence. - 3.Pass syllable, Latin and syllable - 4.Pass phoneme, Latin and phoneme - 5.Pass Gurmukhi syllable and other Indic scripts together. - 6.Pass Gurmukhi phoneme and other Indic script phoneme -@SYMTestExpectedResults Gurumuki and Latin characters don¡¯t mess up. Gurmukhi phoneme doesn¡¯t combine with Latin into a new syllable, - Gurmukhi phoneme doesn¡¯t form a syllable with other Indic script. -@SYMPREQ 1922: Gurmukhi support -*/ -void CTGlyphSelection::TestGurmukhiAndLatin( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_GurmukhiAndLatin, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\GurmukhiAndLatin.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4065 -@SYMTestCaseDesc case to check Gurmukhi modifier after Consonant, Virama, ZWJ -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following - 1.Pass Consonant + Virama + ZWJ + Modifier -@SYMTestExpectedResults Modifier is part of the syllable. -@SYMPREQ 1922: Gurmukhi support, make sure DEF102858 fixing does not cause side effect -*/ -void CTGlyphSelection::TestGurmukhiModifierAfterConsonantViramaZWJ( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_GurmukhiModifierAfterConsonantViramaZWJ, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\GurmukhiModifierAfterConsonantViramaZWJ.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4066 -@SYMTestCaseDesc case to check syllable with consonant in initial position -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following using data from above requirements, each requirement above gives a consonant leading Unicode sequence. Each sequence falls into one of the following structure, then pass it to the calling. - 1.Pass consonant and Nukta sequence - 2.Pass two consonant and dependent vowel sequences to shaper, save both returned results. The consonant is first sequence is difference with that of the second sequence.. - 3.Pass consonant and matra /i/ t sequence - 4.Pass the following Consonant, Virama and HA sequence - Another sequence: Consonant , Virama and RA - Another sequence: Consonant, Virama and VA - Another sequence: Consonant, Virama and YA - 5.Pass Consonant and Addak sequence to shaper - Pass Consonant, Addak and Consonant to shaper - 6.Pass Consonant and BINDI sequence: - Sequence1:Consonant and BINDI, - Sequence2: Consonant, dependent vowel which is shown to the right of base consonant and BINDI, - Sequence3: Consonant, dependent vowel which is shown to the top of the base consonant and BINDI - Pass Consonant and TIPPI sequence: - Sequence1: Consonant and TIPPI, - Sequence2: Consonant, dependent vowel which is shown to the left of the base consonant and TIPPI. - Sequence3: Consonant, dependent vowel which is shown to the bottom of the base consonant and TIPPI. - 7.Pass Nukta, equavalent consonant, Nukta sequence to shaper sepeartely, save both result -@SYMTestExpectedResults 1.nukta is combined to the base consonant according to the returned shape info - 2.The matra position is different between two ShapeText calls according to the returned shaped info. - 3.matra /i/ is combined to the left of the base consonant in position - 4.HA, RA, VA is on bottom of the base consonant and subscripted, YA in final form according to the returned shape info. - 5.Addak is on top of consonant, addak belongs to the consonant precedes it. - 6.BINDI is on top, TIPPI is on bottom - 7.The combination¡¯s character count, glyph count, glyph indices info is the same as the single nukta¡¯s -@SYMPREQ 1922: Gurmukhi support -*/ -void CTGlyphSelection::TestGurmukhiWithConsonantInitial( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_GurmukhiConsonantLeading, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\GurmukhiWithConsonantInitial.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4067 -@SYMTestCaseDesc Case to check Malayalam digit support -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following - 1.Pass Malayalam digit (0xd66 ~ 0x0d6f) sequence - 2.Pass any Consonant + Malayalam digit sequence - 3.Pass any Consonant + Malayalam digit + Matra sequence - 4.Repetitive callss with Unicode sequence from the first 3 action items - 5.Pass Modifer + digit sequence - 6.Pass Vowel and digit sequence - 7.Pass Virama and digit sequence -@SYMTestExpectedResults 1.Glyph count, character count for digit is 1 for each digit, and glyph indices depends on font - 2.Digit is recognized as a separate syllable - 3.Matra and digit is not combined together - 4.The shaper returned the same result as first 3 results - 5.digit is recognized, and not combined with Modifier - 6.digit is recognized, and not combined with Vowel. - 7.digit is recognized, and not combined with Virama. -@SYMPREQ 1922: Malayalam support -*/ -void CTGlyphSelection::TestMalayalamDigit( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_MalayalamDigit, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\MalayalamDigit.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4068 -@SYMTestCaseDesc case to check syllable with vowel in initial position -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following using data from above requirements, - each requirement above gives a vowel leading Unicode sequence. Each sequence falls into one of the following structure, - then pass it to the calling. - 1.Pass ARA, IRI to shaper, pass URA sequence - 2.Pass valid bearer and vowel pair sequence - Pass invalid bearer and vowel pair sequence -@SYMTestExpectedResults 1.ARA character count is 1, IRI, URA character count is 0 - 2.valid combination is combined together, invalid is not combined together -@SYMPREQ 1922: Gurmukhi support -*/ -void CTGlyphSelection::TestGurmukhiWithVowelInitial( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_GurmukhiVowelLeading, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\GurmukhiWithVowelInitial.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4069 -@SYMTestCaseDesc case to check if shaper can render Malayalam with other implemented Indic scripts and Latin -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following - 1.Pass Malayalam sentence and Latin to the function - 2.Pass Latin and Gurmukhi setence. - 3.Pass syllable, Latin and syllable - 4.Pass phoneme, Latin and phoneme - 5.Pass Malayalam syllable and other Indic scripts together. - 6.Pass Malayalam phoneme and other Indic script phoneme -@SYMTestExpectedResults Malayalam and Latin characters don¡¯t mess up. Malayalam phoneme doesn¡¯t combine with Latin into a new syllable, - Malayalam phoneme doesn¡¯t form a syllable with other Indic script. -@SYMPREQ 1922: Malayalam support -*/ -void CTGlyphSelection::TestMalayalamAndLatin( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_MalayalamAndLatin, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\MalayalamAndLatin.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4070 -@SYMTestCaseDesc case to check Malayalam modifier after Consonant, Virama, ZWJ -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following - 1. Pass Consonant + Virama + ZWJ + Modifier -@SYMTestExpectedResults Modifier is part of the syllable. -@SYMPREQ 1922: Malayalam support, make sure DEF102858 fixing does not cause side effect -*/ -void CTGlyphSelection::TestMalayalamModifierAfterConsonantViramaZWJ( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_MalayalamModifierAfterConsonantViramaZWJ, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\MalayalamModifierAfterConsonantViramaZWJ.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4071 -@SYMTestCaseDesc case to check syllable with consonant in initial position -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following using data from above requirements, - each requirement above gives a consonant leading Unicode sequence. Each sequence falls into one of the following structure, - then pass it to the calling. - 1.Pass consonant + vowel single code, and consonant + its split representation to shaper - The following Single representation /Split representation is passed to shaper - 0x0d14/0x0d12 + 0x0d57, 0x0d4a/0x0d46 + 0x0d3e, 0x0d4b/0x0d47 + 0x0d3e - 0x0d4c/0x0d46 + 0x0d57 - 2.Pass two Consonant and dependent Vowel sequences to shaper, save both returned results. - The Consonant is first sequence is difference with that of the second sequence, and the dependent Vowel is identical. - 3.Pass Consonant and Matras /-e/, /-ee/, /-ai/ to shaper. - 4.Pass Consonant and Matras /-o/, /-oo/, /-au/ to shaper - Pass Consonant and 0x0d4c (first form of Matra /-au/ ) to shaper, - Pass Consonant, 0x0d46 and 0x0d57 (second form of Matra /-au/) to shaper002E - 5.Pass Consonant + 0x0d4d + Consonant to shaper - Pass Consonant + Virama + Consonant + 0x0d4d to shaper - 6.Pass Consonant (NNA, NA, RA, LA, LLA) + Virama + ZWJ to shaper - Pass KA + Virama + ZWJ to shaper. - Pass other Consonant + Virama + ZWJ to shaper. - 7.Pass RA + Virama + ZWJ to shaper, - Pass RRA + Viram + ZWJ to shaper. - 8.Pass Chillu ( one of 6 special consontants + Virama + ZWJ) and Vowel to shaper - Pass Chillu and Modifier to shaper - Pass Chillu and Virama to shaper - 9.Pass one of (KA, GA, PA, BA, MA, LA, SHA, SA, HA), Virama and LA to shaper - 10.Pass CA, Virama and CA to shaper - Pass BA, Virama and BA to shaper - Pass YA, Virama and YA to shaper - Pass VA, Virama and VA to shaper - PASS other Consonant, Virama and the same Consonant to shaper. - 11.Pass G.GA, C.CHA, K.TTA, SS.TTA, DD.DDA, NN.NNA, B.DA, B.DHA, P.PA, RR.RRA, SH.SHA, S.SA clusters to shaper. - 12.Pass Consonant clusters from REQ1.3.11 to shaper. - 13.Pass S.RR.RRA to shaper, - Pass N.RR.RRA to shaper -@SYMTestExpectedResults 1.First sequence is equivalent to the second sequence - 2.The dependent vowel position is different between the two sequence - 3.The visual position of the Matras is different with the logical order (The same as Keyboard input order). - 4.The Matra is split into halves from visual effect. And the second form of Matra /-au/ is recognized the same as the first form of it. - 5.0x0d4d is recognized as a Virama in first sequence, it¡¯s recognized as MATRA (mid-u sound) in the second sequence - 6.Virama and ZWJ is interpreted as Chillaksharam for the 6 consonants, for others it¡¯s not interpreted that way. - 7.Both sequences will interprete RA Chillu. - 8.The combining character should not combine with Chillu. - 9.LA takes subscript shape. - 10.CA, BA, YA, VA double should result in a ligature, other consonants don¡¯t. - 11.The latter consonant in the cluster becomes a miniature subscript. - 12.sequence forms a ligature. - 13.sequence forms a ligature -@SYMPREQ 1922: Malayalam support -*/ -void CTGlyphSelection::TestMalayalamWithConsonantInitial( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_MalayalamConsonantLeading, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\MalayalamWithConsonantInitial.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - -/** -@SYMTestCaseID GRAPHICS-TI18N-GDI-CIT-4072 -@SYMTestCaseDesc case to check if shaper can render Malayalam with other implemented Indic scripts and Latin -@SYMTestPriority High -@SYMTestActions Call to CFont::GetCharacterPosition2/CFont::MeasureText to check the following - 1.Pass Malayalam sentence and Latin to the function - 2.Pass Latin and Malayalam setence. - 3.Pass syllable, Latin and syllable - 4.Pass phoneme, Latin and phoneme - 5.Pass Malayalam syllable and other Indic scripts together. - 6.Pass Malayalam phoneme and other Indic script phoneme -@SYMTestExpectedResults Malayalam and Latin characters don¡¯t mess up. Malayalam phoneme doesn¡¯t combine with Latin into a new syllable, - Malayalam phoneme doesn¡¯t form a syllable with other Indic script. -@SYMPREQ 1922: Malayalam support -*/ -void CTGlyphSelection::TestMalayalamWithVowelInitial( const CFbsFont& aFont ) - { - DoEachGurmukhiMalayalamCase( (TTestInput_PositionParam6*)Indic_MalayalamVowelLeading, aFont ); - -#ifdef GEN_GURMUKHIMALAYALAMTESTDATA - _LIT(KValidFontPath, "c:\\MalayalamWithVowelInitial.txt"); - GenerateGurmukhiMalayalamData(KValidFontPath, (TTestInput_PositionParam6*)Indic_GurmukhiDigit, aFont ); -#endif - } - - -//-------------- - -__CONSTRUCT_STEP__(GlyphSelection) - -void CTGlyphSelectionStep::TestSetupL() - { -#ifdef _GLOWCODE_LAUNCH_DELAY - INFO_PRINTF1(_L("Time delay....")); - TTime t1, t2; - t1.UniversalTime(); - t1 += TTimeIntervalSeconds(15); - do - { - t2.UniversalTime(); - } - while (t2 < t1); -#endif - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TGlyphSel.h --- a/graphicsdeviceinterface/gdi/tgdi/TGlyphSel.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __TGLYPHSEL_H_ -#define __TGLYPHSEL_H_ - - -#include "TGraphicsContext.h" -#include "TGraphicsHarness.h" - - -class TStopWatch - { -public: - inline void Start(); - inline TUint Stop(); -private: - TTime iTime; - }; - -void TStopWatch::Start() - { - iTime.UniversalTime(); - } - -TUint TStopWatch::Stop() - { - TTime t; - t.UniversalTime(); - TInt64 i = ((t.MicroSecondsFrom(iTime).Int64()) + 500)/1000; - return I64LOW(i); - } - -// Forward declaration -struct TTestInput_PositionParam6; -class CTGlyphSelection : public CTGraphicsBase -/** - This is a unit test class. Its responsibilites are to define and - execute test cases that exercise CFont::GetCharacterPosition() - functionality. -@internalComponent -@test -*/ - { -public: - - // House keeping methods for test setup and shutdown. - CTGlyphSelection(CTestStep* aStep); - ~CTGlyphSelection(); -protected: -//from CTGraphicsStep - virtual void RunTestCaseL(TInt aCurTestCase); - virtual void ConstructL(); - - void CreateTestGraphicsContextL(); - void TestPerformance(); - - // Test case methods testing specific functionality. - void TestCtrlCharsIgnored(); - void TestApiBoundaries(); - void TestLatinChars(); - void TestGlyphs(CFont* aFont, CFont::TPositionParam& aParam, - const TPtrC16& aText, const TPtrC16& aExpectedGlyphs); - - //TestIndicChars() is main function to perform testing for all Indic languages and calls all the indic language functions. - - void TestIndicCharsL(); - void TestHindiChars(CFbsFont* aFont); - void TestKannadaChars(CFbsFont* aFont); - void TestMarathiChars(CFbsFont* aFont); - void TestGujaratiChars(CFbsFont* aFont); - void TestBengaliChars(CFbsFont* aFont); - void TestTamilChars(CFbsFont* aFont); - void TestTeluguChars(CFbsFont* aFont); - void TestIndicPunctuation(CFbsFont* aFont); - void TestIndicPunctuationGlyphs(CFbsFont* aFont, CFont::TPositionParam& aParam, - const TPtrC16& aText, const TPtrC16& aExpectedGlyphs); - - //Gurumukhi and Malayalam support - void ExecuteIndicGurmukhiMalayalamTests(); - void DoEachGurmukhiMalayalamCase( const TTestInput_PositionParam6* aArray, const CFbsFont& aFont ); - void TestGurmukhiDigit( const CFbsFont& aFont ); - void TestGurmukhiAndLatin( const CFbsFont& aFont ); - void TestGurmukhiModifierAfterConsonantViramaZWJ( const CFbsFont& aFont ); - void TestGurmukhiWithConsonantInitial( const CFbsFont& aFont ); - void TestGurmukhiWithVowelInitial( const CFbsFont& aFont ); - void TestMalayalamDigit( const CFbsFont& aFont ); - void TestMalayalamAndLatin( const CFbsFont& aFont ); - void TestMalayalamModifierAfterConsonantViramaZWJ( const CFbsFont& aFont ); - void TestMalayalamWithConsonantInitial( const CFbsFont& aFont ); - void TestMalayalamWithVowelInitial( const CFbsFont& aFont ); - - void TestVietnameseChars(); - void TestSoftHyphen(); - void TestSurrogates(); - void TestNonBmpCharsL(); - void TestNonBmpCharsInGB18030(CFbsFont* aFont); - void TestCombiningLatinChars(); - void TestTextDirection(); - void TestAllUnicodeChars(); - void TestLigaturesWithDiacritics(); - void TestIsolatedCombiningLatinChars(); - void TestContextInShapeInfo(); - - // Test cases methods testing Thai functionality. - void ExecuteThaiTests(); - void TestThai_SimpleChars(); - void TestThai_ValidGlyphClusters(); - void TestThai_InvalidGlyphClusters(); - void TestThai_INC118424(); - - void TestMeasureText(); - - void TestCodepoint(TUint aCodepoint, CFont* aFont); - - void GenerateGurmukhiMalayalamData( const TDesC& filename, const TTestInput_PositionParam6* aArray, const CFbsFont& aFont ); - -public: - // Context data needed for the test cases in this class. - CTestFont* iTestFont; - CTestGraphicsDevice* iTestGraphicsDevice; - CTestGraphicsContext* iTestGraphicsContext; -private: - RFs iFs; - }; - -class CTGlyphSelectionStep : public CTGraphicsStep - { -public: - CTGlyphSelectionStep(); -protected: - //from CTGraphicsStep - virtual CTGraphicsBase* CreateTestL(); - void TestSetupL(); - }; - -_LIT(KTGlyphSelectionStep,"TGlyphSelection"); - - -#endif //__TGLYPHSEL_H_ - diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TLineBreak.cpp --- a/graphicsdeviceinterface/gdi/tgdi/TLineBreak.cpp Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17261 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include <linebreak.h> -#include "TGlyphSel.h" -#include "TBiDi.h" -#include "TLineBreak.h" - - - -// This constant defines the Unicode characters in the "OpeningPunctuation" (OP) category. -static const TUint16 KOpeningPunctuation[] = - { - 0x0028,0x005b,0x007b,0x0f3a,0x0f3c,0x169b,0x201a,0x201e,0x2045,0x207d, - 0x208d,0x2329,0x2768,0x276a,0x276c,0x276e,0x2770,0x2772,0x2774,0x27c5, - 0x27e6,0x27e8,0x27ea,0x2983,0x2985,0x2987,0x2989,0x298b,0x298d,0x298f, - 0x2991,0x2993,0x2995,0x2997,0x29d8,0x29da,0x29fc,0x3008,0x300a,0x300c, - 0x300e,0x3010,0x3014,0x3016,0x3018,0x301a,0x301d,0xfd3e,0xfe17,0xfe35, - 0xfe37,0xfe39,0xfe3b,0xfe3d,0xfe3f,0xfe41,0xfe43,0xfe47,0xfe59,0xfe5b, - 0xfe5d,0xff08,0xff3b,0xff5b,0xff5f,0xff62, - }; -static const TUint KOpeningPunctuationLength = 66; -static const TUint KOpeningPunctuationClass = MLineBreaker::EOpLineBreakClass; - - -// This constant defines the Unicode characters in the "ClosingPunctuation" (CL) category. -static const TUint16 KClosingPunctuation[] = - { - 0x0029,0x005d,0x007d,0x0f3b,0x0f3d,0x169c,0x2046,0x207e,0x208e,0x232a, - 0x2769,0x276b,0x276d,0x276f,0x2771,0x2773,0x2775,0x27c6,0x27e7,0x27e9, - 0x27eb,0x2984,0x2986,0x2988,0x298a,0x298c,0x298e,0x2990,0x2992,0x2994, - 0x2996,0x2998,0x29d9,0x29db,0x29fd,0x3001,0x3002,0x3009,0x300b,0x300d, - 0x300f,0x3011,0x3015,0x3017,0x3019,0x301b,0x301e,0x301f,0xfd3f,0xfe11, - 0xfe12,0xfe18,0xfe36,0xfe38,0xfe3a,0xfe3c,0xfe3e,0xfe40,0xfe42,0xfe44, - 0xfe48,0xfe50,0xfe52,0xfe5a,0xfe5c,0xfe5e,0xff09,0xff0c,0xff0e,0xff3d, - 0xff5d,0xff60,0xff61,0xff63,0xff64, - }; -static const TUint KClosingPunctuationLength = 75; -static const TUint KClosingPunctuationClass = MLineBreaker::EClLineBreakClass; - - -// This constant defines the Unicode characters in the "AmbiguousQuotes" (QU) category. -static const TUint16 KAmbiguousQuotes[] = - { - 0x0022,0x0027,0x00ab,0x00bb,0x2018,0x2019,0x201b,0x201c,0x201d,0x201f, - 0x2039,0x203a,0x2e00,0x2e01,0x2e02,0x2e03,0x2e04,0x2e05,0x2e06,0x2e07, - 0x2e08,0x2e09,0x2e0a,0x2e0b,0x2e0c,0x2e0d,0x2e1c,0x2e1d, - }; -static const TUint KAmbiguousQuotesLength = 28; -static const TUint KAmbiguousQuotesClass = MLineBreaker::EQuLineBreakClass; - - -// This constant defines the Unicode characters in the "Glue" (GL) category. -static const TUint16 KGlue[] = - { - 0x00a0,0x034f,0x035c,0x035d,0x035e,0x035f,0x0f0c,0x2007,0x2011,0x202f, - 0x2060,0xfeff, - }; -static const TUint KGlueLength = 12; -static const TUint KGlueClass = MLineBreaker::EGlLineBreakClass; - - -// This constant defines the Unicode characters in the "NonStarter" (NS) category. -static const TUint16 KNonStarter[] = - { - 0x0e5a,0x0e5b,0x17d4,0x17d6,0x17d7,0x17d8,0x17d9,0x17da,0x203c,0x2044, - 0x2047,0x3005,0x301c,0x303b,0x303c,0x3041,0x3043,0x3045,0x3047,0x3049, - 0x3063,0x3083,0x3085,0x3087,0x308e,0x3095,0x3096,0x309b,0x309c,0x309d, - 0x309e,0x30a0,0x30a1,0x30a3,0x30a5,0x30a7,0x30a9,0x30c3,0x30e3,0x30e5, - 0x30e7,0x30ee,0x30f5,0x30f6,0x30fb,0x30fd,0x31f0,0x31f1,0x31f2,0x31f3, - 0x31f4,0x31f5,0x31f6,0x31f7,0x31f8,0x31f9,0x31fa,0x31fb,0x31fc,0x31fd, - 0x31fe,0x31ff,0xfe54,0xfe55,0xff1a,0xff1b,0xff65,0xff67,0xff68,0xff69, - 0xff6a,0xff6b,0xff6c,0xff6d,0xff6e,0xff6f,0xff70,0xff9e,0xff9f, - }; -static const TUint KNonStarterLength = 79; -static const TUint KNonStarterClass = MLineBreaker::ENsLineBreakClass; - - -// This constant defines the Unicode characters in the "ExclamationOrInterrogation" (EX) category. -static const TUint16 KExclamationOrInterrogation[] = - { - 0x0021,0x003f,0x05c6,0x060c,0x061b,0x061e,0x061f,0x066a,0x06d4,0x07f9, - 0x1944,0x1945,0xa876,0xa877,0xfe15,0xfe16,0xfe56,0xfe57,0xff01,0xff1f, - }; -static const TUint KExclamationOrInterrogationLength = 20; -static const TUint KExclamationOrInterrogationClass = MLineBreaker::EExLineBreakClass; - - -// This constant defines the Unicode characters in the "Symbol" (SY) category. -static const TUint16 KSymbol[] = - { - 0x2f - }; -static const TUint KSymbolLength = 1; -static const TUint KSymbolClass = MLineBreaker::ESyLineBreakClass; - - -// This constant defines the Unicode characters in the "NumericInfixSeparator" (IS) category. -static const TUint16 KNumericInfixSeparator[] = - { - 0x002c,0x002e,0x003a,0x003b,0x0589,0x060d,0x07f8,0xfe10,0xfe13,0xfe14, - }; -static const TUint KNumericInfixSeparatorLength = 10; -static const TUint KNumericInfixSeparatorClass = MLineBreaker::EIsLineBreakClass; - - -// This constant defines the Unicode characters in the "NumericPrefix" (PR) category. -static const TUint16 KNumericPrefix[] = - { - 0x0024,0x002b,0x005c,0x00a3,0x00a4,0x00a5,0x00b1,0x09f2,0x09f3,0x0af1, - 0x0bf9,0x0e3f,0x17db,0x20a0,0x20a1,0x20a2,0x20a3,0x20a4,0x20a5,0x20a6, - 0x20a8,0x20a9,0x20aa,0x20ab,0x20ac,0x20ad,0x20ae,0x20af,0x20b0,0x20b1, - 0x20b2,0x20b3,0x20b4,0x20b5,0x2116,0x2212,0x2213,0xfe69,0xff04,0xffe1, - 0xffe5,0xffe6, - }; -static const TUint KNumericPrefixLength = 42; -static const TUint KNumericPrefixClass = MLineBreaker::EPrLineBreakClass; - - -// This constant defines the Unicode characters in the "NumericPostfix" category. -static const TUint16 KNumericPostfix[] = - { - 0x0025,0x00a2,0x00b0,0x060b,0x2030,0x2031,0x2032,0x2033,0x2034,0x2035, - 0x2036,0x2037,0x20a7,0x2103,0x2109,0x2126,0xfdfc,0xfe6a,0xff05,0xffe0, - }; -static const TUint KNumericPostfixLength = 20; -static const TUint KNumericPostfixClass = MLineBreaker::EPoLineBreakClass; - - -// This constant defines the Unicode characters in the "Numeric" category. -static const TUint16 KNumeric[] = - { - 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039, - 0x0660,0x0661,0x0662,0x0663,0x0664,0x0665,0x0666,0x0667,0x0668,0x0669, - 0x066b,0x066c,0x06f0,0x06f1,0x06f2,0x06f3,0x06f4,0x06f5,0x06f6,0x06f7, - 0x06f8,0x06f9,0x07c0,0x07c1,0x07c2,0x07c3,0x07c4,0x07c5,0x07c6,0x07c7, - 0x07c8,0x07c9,0x0966,0x0967,0x0968,0x0969,0x096a,0x096b,0x096c,0x096d, - 0x096e,0x096f,0x09e6,0x09e7,0x09e8,0x09e9,0x09ea,0x09eb,0x09ec,0x09ed, - 0x09ee,0x09ef,0x0a66,0x0a67,0x0a68,0x0a69,0x0a6a,0x0a6b,0x0a6c,0x0a6d, - 0x0a6e,0x0a6f,0x0ae6,0x0ae7,0x0ae8,0x0ae9,0x0aea,0x0aeb,0x0aec,0x0aed, - 0x0aee,0x0aef,0x0b66,0x0b67,0x0b68,0x0b69,0x0b6a,0x0b6b,0x0b6c,0x0b6d, - 0x0b6e,0x0b6f,0x0be6,0x0be7,0x0be8,0x0be9,0x0bea,0x0beb,0x0bec,0x0bed, - 0x0bee,0x0bef,0x0c66,0x0c67,0x0c68,0x0c69,0x0c6a,0x0c6b,0x0c6c,0x0c6d, - 0x0c6e,0x0c6f,0x0ce6,0x0ce7,0x0ce8,0x0ce9,0x0cea,0x0ceb,0x0cec,0x0ced, - 0x0cee,0x0cef,0x0d66,0x0d67,0x0d68,0x0d69,0x0d6a,0x0d6b,0x0d6c,0x0d6d, - 0x0d6e,0x0d6f,0x0e50,0x0e51,0x0e52,0x0e53,0x0e54,0x0e55,0x0e56,0x0e57, - 0x0e58,0x0e59,0x0ed0,0x0ed1,0x0ed2,0x0ed3,0x0ed4,0x0ed5,0x0ed6,0x0ed7, - 0x0ed8,0x0ed9,0x0f20,0x0f21,0x0f22,0x0f23,0x0f24,0x0f25,0x0f26,0x0f27, - 0x0f28,0x0f29,0x1040,0x1041,0x1042,0x1043,0x1044,0x1045,0x1046,0x1047, - 0x1048,0x1049,0x1369,0x136a,0x136b,0x136c,0x136d,0x136e,0x136f,0x1370, - 0x1371,0x17e0,0x17e1,0x17e2,0x17e3,0x17e4,0x17e5,0x17e6,0x17e7,0x17e8, - 0x17e9,0x1810,0x1811,0x1812,0x1813,0x1814,0x1815,0x1816,0x1817,0x1818, - 0x1819,0x1946,0x1947,0x1948,0x1949,0x194a,0x194b,0x194c,0x194d,0x194e, - 0x194f,0x19d0,0x19d1,0x19d2,0x19d3,0x19d4,0x19d5,0x19d6,0x19d7,0x19d8, - 0x19d9,0x1b50,0x1b51,0x1b52,0x1b53,0x1b54,0x1b55,0x1b56,0x1b57,0x1b58, - 0x1b59,0xd801,0xdca0,0xd801,0xdca1,0xd801,0xdca2,0xd801,0xdca3, - 0xd801,0xdca4,0xd801,0xdca5,0xd801,0xdca6,0xd801,0xdca7,0xd801,0xdca8, - 0xd801,0xdca9,0xd835,0xdfce,0xd835,0xdfcf,0xd835,0xdfd0,0xd835,0xdfd1, - 0xd835,0xdfd2,0xd835,0xdfd3,0xd835,0xdfd4,0xd835,0xdfd5,0xd835,0xdfd6, - 0xd835,0xdfd7,0xd835,0xdfd8,0xd835,0xdfd9,0xd835,0xdfda,0xd835,0xdfdb, - 0xd835,0xdfdc,0xd835,0xdfdd,0xd835,0xdfde,0xd835,0xdfdf,0xd835,0xdfe0, - 0xd835,0xdfe1,0xd835,0xdfe2,0xd835,0xdfe3,0xd835,0xdfe4,0xd835,0xdfe5, - 0xd835,0xdfe6,0xd835,0xdfe7,0xd835,0xdfe8,0xd835,0xdfe9,0xd835,0xdfea, - 0xd835,0xdfeb,0xd835,0xdfec,0xd835,0xdfed,0xd835,0xdfee,0xd835,0xdfef, - 0xd835,0xdff0,0xd835,0xdff1,0xd835,0xdff2,0xd835,0xdff3,0xd835,0xdff4, - 0xd835,0xdff5,0xd835,0xdff6,0xd835,0xdff7,0xd835,0xdff8,0xd835,0xdff9, - 0xd835,0xdffa,0xd835,0xdffb,0xd835,0xdffc,0xd835,0xdffd,0xd835,0xdffe, - 0xd835,0xdfff, -}; -static const TUint KNumericLength = 231 + 120; -static const TUint KNumericClass = MLineBreaker::ENuLineBreakClass; - - -// This constant defines the Unicode characters in the "Alphabetic" (AL) category. -static const TUint16 KAlphabetic[] = - { - 0x0023,0x0026,0x002a,0x003c,0x003d,0x003e,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,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,0x007e,0x00a6,0x00a9,0x00ac,0x00ae,0x00af,0x00b5,0x00c0, - 0x00c1,0x00c2,0x00c3,0x00c4,0x00c5,0x00c7,0x00c8,0x00c9,0x00ca,0x00cb, - 0x00cc,0x00cd,0x00ce,0x00cf,0x00d1,0x00d2,0x00d3,0x00d4,0x00d5,0x00d6, - 0x00d9,0x00da,0x00db,0x00dc,0x00dd,0x00e2,0x00e3,0x00e4,0x00e5,0x00e7, - 0x00eb,0x00ee,0x00ef,0x00f1,0x00f4,0x00f5,0x00f6,0x00fb,0x00fd,0x00ff, - 0x0100,0x0102,0x0103,0x0104,0x0105,0x0106,0x0107,0x0108,0x0109,0x010a, - 0x010b,0x010c,0x010d,0x010e,0x010f,0x0110,0x0112,0x0114,0x0115,0x0116, - 0x0117,0x0118,0x0119,0x011a,0x011c,0x011d,0x011e,0x011f,0x0120,0x0121, - 0x0122,0x0123,0x0124,0x0125,0x0128,0x0129,0x012a,0x012c,0x012d,0x012e, - 0x012f,0x0130,0x0134,0x0135,0x0136,0x0137,0x0139,0x013a,0x013b,0x013c, - 0x013d,0x013e,0x0143,0x0145,0x0146,0x0147,0x014b,0x014c,0x014e,0x014f, - 0x0150,0x0151,0x0154,0x0155,0x0156,0x0157,0x0158,0x0159,0x015a,0x015b, - 0x015c,0x015d,0x015e,0x015f,0x0160,0x0161,0x0162,0x0163,0x0164,0x0165, - 0x0168,0x0169,0x016a,0x016c,0x016d,0x016e,0x016f,0x0170,0x0171,0x0172, - 0x0173,0x0174,0x0175,0x0176,0x0177,0x0178,0x0179,0x017a,0x017b,0x017c, - 0x017d,0x017e,0x017f,0x0180,0x0181,0x0182,0x0183,0x0184,0x0185,0x0186, - 0x0187,0x0188,0x0189,0x018a,0x018b,0x018c,0x018d,0x018e,0x018f,0x0190, - 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198,0x0199,0x019a, - 0x019b,0x019c,0x019d,0x019e,0x019f,0x01a0,0x01a1,0x01a2,0x01a3,0x01a4, - 0x01a5,0x01a6,0x01a7,0x01a8,0x01a9,0x01aa,0x01ab,0x01ac,0x01ad,0x01ae, - 0x01af,0x01b0,0x01b1,0x01b2,0x01b3,0x01b4,0x01b5,0x01b6,0x01b7,0x01b8, - 0x01b9,0x01ba,0x01bb,0x01bc,0x01bd,0x01be,0x01bf,0x01c0,0x01c1,0x01c2, - 0x01c3,0x01c4,0x01c5,0x01c6,0x01c7,0x01c8,0x01c9,0x01ca,0x01cb,0x01cc, - 0x01cd,0x01cf,0x01d1,0x01d3,0x01d5,0x01d7,0x01d9,0x01db,0x01dd,0x01de, - 0x01df,0x01e0,0x01e1,0x01e2,0x01e3,0x01e4,0x01e5,0x01e6,0x01e7,0x01e8, - 0x01e9,0x01ea,0x01eb,0x01ec,0x01ed,0x01ee,0x01ef,0x01f0,0x01f1,0x01f2, - 0x01f3,0x01f4,0x01f5,0x01f6,0x01f7,0x01f8,0x01f9,0x01fa,0x01fb,0x01fc, - 0x01fd,0x01fe,0x01ff,0x0200,0x0201,0x0202,0x0203,0x0204,0x0205,0x0206, - 0x0207,0x0208,0x0209,0x020a,0x020b,0x020c,0x020d,0x020e,0x020f,0x0210, - 0x0211,0x0212,0x0213,0x0214,0x0215,0x0216,0x0217,0x0218,0x0219,0x021a, - 0x021b,0x021c,0x021d,0x021e,0x021f,0x0220,0x0221,0x0222,0x0223,0x0224, - 0x0225,0x0226,0x0227,0x0228,0x0229,0x022a,0x022b,0x022c,0x022d,0x022e, - 0x022f,0x0230,0x0231,0x0232,0x0233,0x0234,0x0235,0x0236,0x0237,0x0238, - 0x0239,0x023a,0x023b,0x023c,0x023d,0x023e,0x023f,0x0240,0x0241,0x0242, - 0x0243,0x0244,0x0245,0x0246,0x0247,0x0248,0x0249,0x024a,0x024b,0x024c, - 0x024d,0x024e,0x024f,0x0250,0x0252,0x0253,0x0254,0x0255,0x0256,0x0257, - 0x0258,0x0259,0x025a,0x025b,0x025c,0x025d,0x025e,0x025f,0x0260,0x0262, - 0x0263,0x0264,0x0265,0x0266,0x0267,0x0268,0x0269,0x026a,0x026b,0x026c, - 0x026d,0x026e,0x026f,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0276, - 0x0277,0x0278,0x0279,0x027a,0x027b,0x027c,0x027d,0x027e,0x027f,0x0280, - 0x0281,0x0282,0x0283,0x0284,0x0285,0x0286,0x0287,0x0288,0x0289,0x028a, - 0x028b,0x028c,0x028d,0x028e,0x028f,0x0290,0x0291,0x0292,0x0293,0x0294, - 0x0295,0x0296,0x0297,0x0298,0x0299,0x029a,0x029b,0x029c,0x029d,0x029e, - 0x029f,0x02a0,0x02a1,0x02a2,0x02a3,0x02a4,0x02a5,0x02a6,0x02a7,0x02a8, - 0x02a9,0x02aa,0x02ab,0x02ac,0x02ad,0x02ae,0x02af,0x02b0,0x02b1,0x02b2, - 0x02b3,0x02b4,0x02b5,0x02b6,0x02b7,0x02b8,0x02b9,0x02ba,0x02bb,0x02bc, - 0x02bd,0x02be,0x02bf,0x02c0,0x02c1,0x02c2,0x02c3,0x02c4,0x02c5,0x02c6, - 0x02ce,0x02cf,0x02d1,0x02d2,0x02d3,0x02d4,0x02d5,0x02d6,0x02d7,0x02dc, - 0x02de,0x02df,0x02e0,0x02e1,0x02e2,0x02e3,0x02e4,0x02e5,0x02e6,0x02e7, - 0x02e8,0x02e9,0x02ea,0x02eb,0x02ec,0x02ed,0x02ee,0x02ef,0x02f0,0x02f1, - 0x02f2,0x02f3,0x02f4,0x02f5,0x02f6,0x02f7,0x02f8,0x02f9,0x02fa,0x02fb, - 0x02fc,0x02fd,0x02fe,0x02ff,0x0374,0x0375,0x037a,0x037b,0x037c,0x037d, - 0x037e,0x0384,0x0385,0x0386,0x0387,0x0388,0x0389,0x038a,0x038c,0x038e, - 0x038f,0x0390,0x03aa,0x03ab,0x03ac,0x03ad,0x03ae,0x03af,0x03b0,0x03c2, - 0x03ca,0x03cb,0x03cc,0x03cd,0x03ce,0x03d0,0x03d1,0x03d2,0x03d3,0x03d4, - 0x03d5,0x03d6,0x03d7,0x03d8,0x03d9,0x03da,0x03db,0x03dc,0x03dd,0x03de, - 0x03df,0x03e0,0x03e1,0x03e2,0x03e3,0x03e4,0x03e5,0x03e6,0x03e7,0x03e8, - 0x03e9,0x03ea,0x03eb,0x03ec,0x03ed,0x03ee,0x03ef,0x03f0,0x03f1,0x03f2, - 0x03f3,0x03f4,0x03f5,0x03f6,0x03f7,0x03f8,0x03f9,0x03fa,0x03fb,0x03fc, - 0x03fd,0x03fe,0x03ff,0x0400,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407, - 0x0408,0x0409,0x040a,0x040b,0x040c,0x040d,0x040e,0x040f,0x0450,0x0452, - 0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459,0x045a,0x045b,0x045c, - 0x045d,0x045e,0x045f,0x0460,0x0461,0x0462,0x0463,0x0464,0x0465,0x0466, - 0x0467,0x0468,0x0469,0x046a,0x046b,0x046c,0x046d,0x046e,0x046f,0x0470, - 0x0471,0x0472,0x0473,0x0474,0x0475,0x0476,0x0477,0x0478,0x0479,0x047a, - 0x047b,0x047c,0x047d,0x047e,0x047f,0x0480,0x0481,0x0482,0x048a,0x048b, - 0x048c,0x048d,0x048e,0x048f,0x0490,0x0491,0x0492,0x0493,0x0494,0x0495, - 0x0496,0x0497,0x0498,0x0499,0x049a,0x049b,0x049c,0x049d,0x049e,0x049f, - 0x04a0,0x04a1,0x04a2,0x04a3,0x04a4,0x04a5,0x04a6,0x04a7,0x04a8,0x04a9, - 0x04aa,0x04ab,0x04ac,0x04ad,0x04ae,0x04af,0x04b0,0x04b1,0x04b2,0x04b3, - 0x04b4,0x04b5,0x04b6,0x04b7,0x04b8,0x04b9,0x04ba,0x04bb,0x04bc,0x04bd, - 0x04be,0x04bf,0x04c0,0x04c1,0x04c2,0x04c3,0x04c4,0x04c5,0x04c6,0x04c7, - 0x04c8,0x04c9,0x04ca,0x04cb,0x04cc,0x04cd,0x04ce,0x04cf,0x04d0,0x04d1, - 0x04d2,0x04d3,0x04d4,0x04d5,0x04d6,0x04d7,0x04d8,0x04d9,0x04da,0x04db, - 0x04dc,0x04dd,0x04de,0x04df,0x04e0,0x04e1,0x04e2,0x04e3,0x04e4,0x04e5, - 0x04e6,0x04e7,0x04e8,0x04e9,0x04ea,0x04eb,0x04ec,0x04ed,0x04ee,0x04ef, - 0x04f0,0x04f1,0x04f2,0x04f3,0x04f4,0x04f5,0x04f6,0x04f7,0x04f8,0x04f9, - 0x04fa,0x04fb,0x04fc,0x04fd,0x04fe,0x04ff,0x0500,0x0501,0x0502,0x0503, - 0x0504,0x0505,0x0506,0x0507,0x0508,0x0509,0x050a,0x050b,0x050c,0x050d, - 0x050e,0x050f,0x0510,0x0511,0x0512,0x0513,0x0531,0x0532,0x0533,0x0534, - 0x0535,0x0536,0x0537,0x0538,0x0539,0x053a,0x053b,0x053c,0x053d,0x053e, - 0x053f,0x0540,0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548, - 0x0549,0x054a,0x054b,0x054c,0x054d,0x054e,0x054f,0x0550,0x0551,0x0552, - 0x0553,0x0554,0x0555,0x0556,0x0559,0x055a,0x055b,0x055c,0x055d,0x055e, - 0x055f,0x0561,0x0562,0x0563,0x0564,0x0565,0x0566,0x0567,0x0568,0x0569, - 0x056a,0x056b,0x056c,0x056d,0x056e,0x056f,0x0570,0x0571,0x0572,0x0573, - 0x0574,0x0575,0x0576,0x0577,0x0578,0x0579,0x057a,0x057b,0x057c,0x057d, - 0x057e,0x057f,0x0580,0x0581,0x0582,0x0583,0x0584,0x0585,0x0586,0x0587, - 0x05be,0x05c0,0x05c3,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, - 0x05f0,0x05f1,0x05f2,0x05f3,0x05f4,0x0600,0x0601,0x0602,0x0603,0x060e, - 0x060f,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,0x0640,0x0641,0x0642, - 0x0643,0x0644,0x0645,0x0646,0x0647,0x0648,0x0649,0x064a,0x066d,0x066e, - 0x066f,0x0671,0x0672,0x0673,0x0674,0x0675,0x0676,0x0677,0x0678,0x0679, - 0x067a,0x067b,0x067c,0x067d,0x067e,0x067f,0x0680,0x0681,0x0682,0x0683, - 0x0684,0x0685,0x0686,0x0687,0x0688,0x0689,0x068a,0x068b,0x068c,0x068d, - 0x068e,0x068f,0x0690,0x0691,0x0692,0x0693,0x0694,0x0695,0x0696,0x0697, - 0x0698,0x0699,0x069a,0x069b,0x069c,0x069d,0x069e,0x069f,0x06a0,0x06a1, - 0x06a2,0x06a3,0x06a4,0x06a5,0x06a6,0x06a7,0x06a8,0x06a9,0x06aa,0x06ab, - 0x06ac,0x06ad,0x06ae,0x06af,0x06b0,0x06b1,0x06b2,0x06b3,0x06b4,0x06b5, - 0x06b6,0x06b7,0x06b8,0x06b9,0x06ba,0x06bb,0x06bc,0x06bd,0x06be,0x06bf, - 0x06c0,0x06c1,0x06c2,0x06c3,0x06c4,0x06c5,0x06c6,0x06c7,0x06c8,0x06c9, - 0x06ca,0x06cb,0x06cc,0x06cd,0x06ce,0x06cf,0x06d0,0x06d1,0x06d2,0x06d3, - 0x06d5,0x06e5,0x06e6,0x06e9,0x06ee,0x06ef,0x06fa,0x06fb,0x06fc,0x06fd, - 0x06fe,0x06ff,0x0700,0x0701,0x0702,0x0703,0x0704,0x0705,0x0706,0x0707, - 0x0708,0x0709,0x070a,0x070b,0x070c,0x070d,0x0710,0x0712,0x0713,0x0714, - 0x0715,0x0716,0x0717,0x0718,0x0719,0x071a,0x071b,0x071c,0x071d,0x071e, - 0x071f,0x0720,0x0721,0x0722,0x0723,0x0724,0x0725,0x0726,0x0727,0x0728, - 0x0729,0x072a,0x072b,0x072c,0x072d,0x072e,0x072f,0x074d,0x074e,0x074f, - 0x0750,0x0751,0x0752,0x0753,0x0754,0x0755,0x0756,0x0757,0x0758,0x0759, - 0x075a,0x075b,0x075c,0x075d,0x075e,0x075f,0x0760,0x0761,0x0762,0x0763, - 0x0764,0x0765,0x0766,0x0767,0x0768,0x0769,0x076a,0x076b,0x076c,0x076d, - 0x0780,0x0781,0x0782,0x0783,0x0784,0x0785,0x0786,0x0787,0x0788,0x0789, - 0x078a,0x078b,0x078c,0x078d,0x078e,0x078f,0x0790,0x0791,0x0792,0x0793, - 0x0794,0x0795,0x0796,0x0797,0x0798,0x0799,0x079a,0x079b,0x079c,0x079d, - 0x079e,0x079f,0x07a0,0x07a1,0x07a2,0x07a3,0x07a4,0x07a5,0x07b1,0x07ca, - 0x07cb,0x07cc,0x07cd,0x07ce,0x07cf,0x07d0,0x07d1,0x07d2,0x07d3,0x07d4, - 0x07d5,0x07d6,0x07d7,0x07d8,0x07d9,0x07da,0x07db,0x07dc,0x07dd,0x07de, - 0x07df,0x07e0,0x07e1,0x07e2,0x07e3,0x07e4,0x07e5,0x07e6,0x07e7,0x07e8, - 0x07e9,0x07ea,0x07f4,0x07f5,0x07f6,0x07f7,0x07fa,0x0904,0x0905,0x0906, - 0x0907,0x0908,0x0909,0x090a,0x090b,0x090c,0x090d,0x090e,0x090f,0x0910, - 0x0911,0x0912,0x0913,0x0914,0x0915,0x0916,0x0917,0x0918,0x0919,0x091a, - 0x091b,0x091c,0x091d,0x091e,0x091f,0x0920,0x0921,0x0922,0x0923,0x0924, - 0x0925,0x0926,0x0927,0x0928,0x0929,0x092a,0x092b,0x092c,0x092d,0x092e, - 0x092f,0x0930,0x0931,0x0932,0x0933,0x0934,0x0935,0x0936,0x0937,0x0938, - 0x0939,0x093d,0x0950,0x0958,0x0959,0x095a,0x095b,0x095c,0x095d,0x095e, - 0x095f,0x0960,0x0961,0x0964,0x0965,0x0970,0x097b,0x097c,0x097d,0x097e, - 0x097f,0x0985,0x0986,0x0987,0x0988,0x0989,0x098a,0x098b,0x098c,0x098f, - 0x0990,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998,0x0999,0x099a,0x099b, - 0x099c,0x099d,0x099e,0x099f,0x09a0,0x09a1,0x09a2,0x09a3,0x09a4,0x09a5, - 0x09a6,0x09a7,0x09a8,0x09aa,0x09ab,0x09ac,0x09ad,0x09ae,0x09af,0x09b0, - 0x09b2,0x09b6,0x09b7,0x09b8,0x09b9,0x09bd,0x09ce,0x09dc,0x09dd,0x09df, - 0x09e0,0x09e1,0x09f0,0x09f1,0x09f4,0x09f5,0x09f6,0x09f7,0x09f8,0x09f9, - 0x09fa,0x0a05,0x0a06,0x0a07,0x0a08,0x0a09,0x0a0a,0x0a0f,0x0a10,0x0a13, - 0x0a14,0x0a15,0x0a16,0x0a17,0x0a18,0x0a19,0x0a1a,0x0a1b,0x0a1c,0x0a1d, - 0x0a1e,0x0a1f,0x0a20,0x0a21,0x0a22,0x0a23,0x0a24,0x0a25,0x0a26,0x0a27, - 0x0a28,0x0a2a,0x0a2b,0x0a2c,0x0a2d,0x0a2e,0x0a2f,0x0a30,0x0a32,0x0a33, - 0x0a35,0x0a36,0x0a38,0x0a39,0x0a59,0x0a5a,0x0a5b,0x0a5c,0x0a5e,0x0a72, - 0x0a73,0x0a74,0x0a85,0x0a86,0x0a87,0x0a88,0x0a89,0x0a8a,0x0a8b,0x0a8c, - 0x0a8d,0x0a8f,0x0a90,0x0a91,0x0a93,0x0a94,0x0a95,0x0a96,0x0a97,0x0a98, - 0x0a99,0x0a9a,0x0a9b,0x0a9c,0x0a9d,0x0a9e,0x0a9f,0x0aa0,0x0aa1,0x0aa2, - 0x0aa3,0x0aa4,0x0aa5,0x0aa6,0x0aa7,0x0aa8,0x0aaa,0x0aab,0x0aac,0x0aad, - 0x0aae,0x0aaf,0x0ab0,0x0ab2,0x0ab3,0x0ab5,0x0ab6,0x0ab7,0x0ab8,0x0ab9, - 0x0abd,0x0ad0,0x0ae0,0x0ae1,0x0b05,0x0b06,0x0b07,0x0b08,0x0b09,0x0b0a, - 0x0b0b,0x0b0c,0x0b0f,0x0b10,0x0b13,0x0b14,0x0b15,0x0b16,0x0b17,0x0b18, - 0x0b19,0x0b1a,0x0b1b,0x0b1c,0x0b1d,0x0b1e,0x0b1f,0x0b20,0x0b21,0x0b22, - 0x0b23,0x0b24,0x0b25,0x0b26,0x0b27,0x0b28,0x0b2a,0x0b2b,0x0b2c,0x0b2d, - 0x0b2e,0x0b2f,0x0b30,0x0b32,0x0b33,0x0b35,0x0b36,0x0b37,0x0b38,0x0b39, - 0x0b3d,0x0b5c,0x0b5d,0x0b5f,0x0b60,0x0b61,0x0b70,0x0b71,0x0b85,0x0b86, - 0x0b87,0x0b88,0x0b89,0x0b8a,0x0b8e,0x0b8f,0x0b90,0x0b92,0x0b93,0x0b94, - 0x0b95,0x0b99,0x0b9a,0x0b9c,0x0b9e,0x0b9f,0x0ba3,0x0ba4,0x0ba8,0x0ba9, - 0x0baa,0x0bae,0x0baf,0x0bb0,0x0bb1,0x0bb2,0x0bb3,0x0bb4,0x0bb5,0x0bb6, - 0x0bb7,0x0bb8,0x0bb9,0x0bf0,0x0bf1,0x0bf2,0x0bf3,0x0bf4,0x0bf5,0x0bf6, - 0x0bf7,0x0bf8,0x0bfa,0x0c05,0x0c06,0x0c07,0x0c08,0x0c09,0x0c0a,0x0c0b, - 0x0c0c,0x0c0e,0x0c0f,0x0c10,0x0c12,0x0c13,0x0c14,0x0c15,0x0c16,0x0c17, - 0x0c18,0x0c19,0x0c1a,0x0c1b,0x0c1c,0x0c1d,0x0c1e,0x0c1f,0x0c20,0x0c21, - 0x0c22,0x0c23,0x0c24,0x0c25,0x0c26,0x0c27,0x0c28,0x0c2a,0x0c2b,0x0c2c, - 0x0c2d,0x0c2e,0x0c2f,0x0c30,0x0c31,0x0c32,0x0c33,0x0c35,0x0c36,0x0c37, - 0x0c38,0x0c39,0x0c60,0x0c61,0x0c85,0x0c86,0x0c87,0x0c88,0x0c89,0x0c8a, - 0x0c8b,0x0c8c,0x0c8e,0x0c8f,0x0c90,0x0c92,0x0c93,0x0c94,0x0c95,0x0c96, - 0x0c97,0x0c98,0x0c99,0x0c9a,0x0c9b,0x0c9c,0x0c9d,0x0c9e,0x0c9f,0x0ca0, - 0x0ca1,0x0ca2,0x0ca3,0x0ca4,0x0ca5,0x0ca6,0x0ca7,0x0ca8,0x0caa,0x0cab, - 0x0cac,0x0cad,0x0cae,0x0caf,0x0cb0,0x0cb1,0x0cb2,0x0cb3,0x0cb5,0x0cb6, - 0x0cb7,0x0cb8,0x0cb9,0x0cbd,0x0cde,0x0ce0,0x0ce1,0x0cf1,0x0cf2,0x0d05, - 0x0d06,0x0d07,0x0d08,0x0d09,0x0d0a,0x0d0b,0x0d0c,0x0d0e,0x0d0f,0x0d10, - 0x0d12,0x0d13,0x0d14,0x0d15,0x0d16,0x0d17,0x0d18,0x0d19,0x0d1a,0x0d1b, - 0x0d1c,0x0d1d,0x0d1e,0x0d1f,0x0d20,0x0d21,0x0d22,0x0d23,0x0d24,0x0d25, - 0x0d26,0x0d27,0x0d28,0x0d2a,0x0d2b,0x0d2c,0x0d2d,0x0d2e,0x0d2f,0x0d30, - 0x0d31,0x0d32,0x0d33,0x0d34,0x0d35,0x0d36,0x0d37,0x0d38,0x0d39,0x0d60, - 0x0d61,0x0d85,0x0d86,0x0d87,0x0d88,0x0d89,0x0d8a,0x0d8b,0x0d8c,0x0d8d, - 0x0d8e,0x0d8f,0x0d90,0x0d91,0x0d92,0x0d93,0x0d94,0x0d95,0x0d96,0x0d9a, - 0x0d9b,0x0d9c,0x0d9d,0x0d9e,0x0d9f,0x0da0,0x0da1,0x0da2,0x0da3,0x0da4, - 0x0da5,0x0da6,0x0da7,0x0da8,0x0da9,0x0daa,0x0dab,0x0dac,0x0dad,0x0dae, - 0x0daf,0x0db0,0x0db1,0x0db3,0x0db4,0x0db5,0x0db6,0x0db7,0x0db8,0x0db9, - 0x0dba,0x0dbb,0x0dbd,0x0dc0,0x0dc1,0x0dc2,0x0dc3,0x0dc4,0x0dc5,0x0dc6, - 0x0df4,0x0e4f,0x0f00,0x0f01,0x0f02,0x0f03,0x0f04,0x0f05,0x0f06,0x0f07, - 0x0f08,0x0f09,0x0f0a,0x0f0d,0x0f0e,0x0f0f,0x0f10,0x0f11,0x0f12,0x0f13, - 0x0f14,0x0f15,0x0f16,0x0f17,0x0f1a,0x0f1b,0x0f1c,0x0f1d,0x0f1e,0x0f1f, - 0x0f2a,0x0f2b,0x0f2c,0x0f2d,0x0f2e,0x0f2f,0x0f30,0x0f31,0x0f32,0x0f33, - 0x0f34,0x0f36,0x0f38,0x0f40,0x0f41,0x0f42,0x0f43,0x0f44,0x0f45,0x0f46, - 0x0f47,0x0f49,0x0f4a,0x0f4b,0x0f4c,0x0f4d,0x0f4e,0x0f4f,0x0f50,0x0f51, - 0x0f52,0x0f53,0x0f54,0x0f55,0x0f56,0x0f57,0x0f58,0x0f59,0x0f5a,0x0f5b, - 0x0f5c,0x0f5d,0x0f5e,0x0f5f,0x0f60,0x0f61,0x0f62,0x0f63,0x0f64,0x0f65, - 0x0f66,0x0f67,0x0f68,0x0f69,0x0f6a,0x0f85,0x0f88,0x0f89,0x0f8a,0x0f8b, - 0x0fbe,0x0fbf,0x0fc0,0x0fc1,0x0fc2,0x0fc3,0x0fc4,0x0fc5,0x0fc7,0x0fc8, - 0x0fc9,0x0fca,0x0fcb,0x0fcc,0x0fcf,0x104a,0x104b,0x104c,0x104d,0x104e, - 0x104f,0x10a0,0x10a1,0x10a2,0x10a3,0x10a4,0x10a5,0x10a6,0x10a7,0x10a8, - 0x10a9,0x10aa,0x10ab,0x10ac,0x10ad,0x10ae,0x10af,0x10b0,0x10b1,0x10b2, - 0x10b3,0x10b4,0x10b5,0x10b6,0x10b7,0x10b8,0x10b9,0x10ba,0x10bb,0x10bc, - 0x10bd,0x10be,0x10bf,0x10c0,0x10c1,0x10c2,0x10c3,0x10c4,0x10c5,0x10d0, - 0x10d1,0x10d2,0x10d3,0x10d4,0x10d5,0x10d6,0x10d7,0x10d8,0x10d9,0x10da, - 0x10db,0x10dc,0x10dd,0x10de,0x10df,0x10e0,0x10e1,0x10e2,0x10e3,0x10e4, - 0x10e5,0x10e6,0x10e7,0x10e8,0x10e9,0x10ea,0x10eb,0x10ec,0x10ed,0x10ee, - 0x10ef,0x10f0,0x10f1,0x10f2,0x10f3,0x10f4,0x10f5,0x10f6,0x10f7,0x10f8, - 0x10f9,0x10fa,0x10fb,0x10fc,0x1200,0x1201,0x1202,0x1203,0x1204,0x1205, - 0x1206,0x1207,0x1208,0x1209,0x120a,0x120b,0x120c,0x120d,0x120e,0x120f, - 0x1210,0x1211,0x1212,0x1213,0x1214,0x1215,0x1216,0x1217,0x1218,0x1219, - 0x121a,0x121b,0x121c,0x121d,0x121e,0x121f,0x1220,0x1221,0x1222,0x1223, - 0x1224,0x1225,0x1226,0x1227,0x1228,0x1229,0x122a,0x122b,0x122c,0x122d, - 0x122e,0x122f,0x1230,0x1231,0x1232,0x1233,0x1234,0x1235,0x1236,0x1237, - 0x1238,0x1239,0x123a,0x123b,0x123c,0x123d,0x123e,0x123f,0x1240,0x1241, - 0x1242,0x1243,0x1244,0x1245,0x1246,0x1247,0x1248,0x124a,0x124b,0x124c, - 0x124d,0x1250,0x1251,0x1252,0x1253,0x1254,0x1255,0x1256,0x1258,0x125a, - 0x125b,0x125c,0x125d,0x1260,0x1261,0x1262,0x1263,0x1264,0x1265,0x1266, - 0x1267,0x1268,0x1269,0x126a,0x126b,0x126c,0x126d,0x126e,0x126f,0x1270, - 0x1271,0x1272,0x1273,0x1274,0x1275,0x1276,0x1277,0x1278,0x1279,0x127a, - 0x127b,0x127c,0x127d,0x127e,0x127f,0x1280,0x1281,0x1282,0x1283,0x1284, - 0x1285,0x1286,0x1287,0x1288,0x128a,0x128b,0x128c,0x128d,0x1290,0x1291, - 0x1292,0x1293,0x1294,0x1295,0x1296,0x1297,0x1298,0x1299,0x129a,0x129b, - 0x129c,0x129d,0x129e,0x129f,0x12a0,0x12a1,0x12a2,0x12a3,0x12a4,0x12a5, - 0x12a6,0x12a7,0x12a8,0x12a9,0x12aa,0x12ab,0x12ac,0x12ad,0x12ae,0x12af, - 0x12b0,0x12b2,0x12b3,0x12b4,0x12b5,0x12b8,0x12b9,0x12ba,0x12bb,0x12bc, - 0x12bd,0x12be,0x12c0,0x12c2,0x12c3,0x12c4,0x12c5,0x12c8,0x12c9,0x12ca, - 0x12cb,0x12cc,0x12cd,0x12ce,0x12cf,0x12d0,0x12d1,0x12d2,0x12d3,0x12d4, - 0x12d5,0x12d6,0x12d8,0x12d9,0x12da,0x12db,0x12dc,0x12dd,0x12de,0x12df, - 0x12e0,0x12e1,0x12e2,0x12e3,0x12e4,0x12e5,0x12e6,0x12e7,0x12e8,0x12e9, - 0x12ea,0x12eb,0x12ec,0x12ed,0x12ee,0x12ef,0x12f0,0x12f1,0x12f2,0x12f3, - 0x12f4,0x12f5,0x12f6,0x12f7,0x12f8,0x12f9,0x12fa,0x12fb,0x12fc,0x12fd, - 0x12fe,0x12ff,0x1300,0x1301,0x1302,0x1303,0x1304,0x1305,0x1306,0x1307, - 0x1308,0x1309,0x130a,0x130b,0x130c,0x130d,0x130e,0x130f,0x1310,0x1312, - 0x1313,0x1314,0x1315,0x1318,0x1319,0x131a,0x131b,0x131c,0x131d,0x131e, - 0x131f,0x1320,0x1321,0x1322,0x1323,0x1324,0x1325,0x1326,0x1327,0x1328, - 0x1329,0x132a,0x132b,0x132c,0x132d,0x132e,0x132f,0x1330,0x1331,0x1332, - 0x1333,0x1334,0x1335,0x1336,0x1337,0x1338,0x1339,0x133a,0x133b,0x133c, - 0x133d,0x133e,0x133f,0x1340,0x1341,0x1342,0x1343,0x1344,0x1345,0x1346, - 0x1347,0x1348,0x1349,0x134a,0x134b,0x134c,0x134d,0x134e,0x134f,0x1350, - 0x1351,0x1352,0x1353,0x1354,0x1355,0x1356,0x1357,0x1358,0x1359,0x135a, - 0x1360,0x1362,0x1363,0x1364,0x1365,0x1366,0x1367,0x1368,0x1372,0x1373, - 0x1374,0x1375,0x1376,0x1377,0x1378,0x1379,0x137a,0x137b,0x137c,0x1380, - 0x1381,0x1382,0x1383,0x1384,0x1385,0x1386,0x1387,0x1388,0x1389,0x138a, - 0x138b,0x138c,0x138d,0x138e,0x138f,0x1390,0x1391,0x1392,0x1393,0x1394, - 0x1395,0x1396,0x1397,0x1398,0x1399,0x13a0,0x13a1,0x13a2,0x13a3,0x13a4, - 0x13a5,0x13a6,0x13a7,0x13a8,0x13a9,0x13aa,0x13ab,0x13ac,0x13ad,0x13ae, - 0x13af,0x13b0,0x13b1,0x13b2,0x13b3,0x13b4,0x13b5,0x13b6,0x13b7,0x13b8, - 0x13b9,0x13ba,0x13bb,0x13bc,0x13bd,0x13be,0x13bf,0x13c0,0x13c1,0x13c2, - 0x13c3,0x13c4,0x13c5,0x13c6,0x13c7,0x13c8,0x13c9,0x13ca,0x13cb,0x13cc, - 0x13cd,0x13ce,0x13cf,0x13d0,0x13d1,0x13d2,0x13d3,0x13d4,0x13d5,0x13d6, - 0x13d7,0x13d8,0x13d9,0x13da,0x13db,0x13dc,0x13dd,0x13de,0x13df,0x13e0, - 0x13e1,0x13e2,0x13e3,0x13e4,0x13e5,0x13e6,0x13e7,0x13e8,0x13e9,0x13ea, - 0x13eb,0x13ec,0x13ed,0x13ee,0x13ef,0x13f0,0x13f1,0x13f2,0x13f3,0x13f4, - 0x1401,0x1402,0x1403,0x1404,0x1405,0x1406,0x1407,0x1408,0x1409,0x140a, - 0x140b,0x140c,0x140d,0x140e,0x140f,0x1410,0x1411,0x1412,0x1413,0x1414, - 0x1415,0x1416,0x1417,0x1418,0x1419,0x141a,0x141b,0x141c,0x141d,0x141e, - 0x141f,0x1420,0x1421,0x1422,0x1423,0x1424,0x1425,0x1426,0x1427,0x1428, - 0x1429,0x142a,0x142b,0x142c,0x142d,0x142e,0x142f,0x1430,0x1431,0x1432, - 0x1433,0x1434,0x1435,0x1436,0x1437,0x1438,0x1439,0x143a,0x143b,0x143c, - 0x143d,0x143e,0x143f,0x1440,0x1441,0x1442,0x1443,0x1444,0x1445,0x1446, - 0x1447,0x1448,0x1449,0x144a,0x144b,0x144c,0x144d,0x144e,0x144f,0x1450, - 0x1451,0x1452,0x1453,0x1454,0x1455,0x1456,0x1457,0x1458,0x1459,0x145a, - 0x145b,0x145c,0x145d,0x145e,0x145f,0x1460,0x1461,0x1462,0x1463,0x1464, - 0x1465,0x1466,0x1467,0x1468,0x1469,0x146a,0x146b,0x146c,0x146d,0x146e, - 0x146f,0x1470,0x1471,0x1472,0x1473,0x1474,0x1475,0x1476,0x1477,0x1478, - 0x1479,0x147a,0x147b,0x147c,0x147d,0x147e,0x147f,0x1480,0x1481,0x1482, - 0x1483,0x1484,0x1485,0x1486,0x1487,0x1488,0x1489,0x148a,0x148b,0x148c, - 0x148d,0x148e,0x148f,0x1490,0x1491,0x1492,0x1493,0x1494,0x1495,0x1496, - 0x1497,0x1498,0x1499,0x149a,0x149b,0x149c,0x149d,0x149e,0x149f,0x14a0, - 0x14a1,0x14a2,0x14a3,0x14a4,0x14a5,0x14a6,0x14a7,0x14a8,0x14a9,0x14aa, - 0x14ab,0x14ac,0x14ad,0x14ae,0x14af,0x14b0,0x14b1,0x14b2,0x14b3,0x14b4, - 0x14b5,0x14b6,0x14b7,0x14b8,0x14b9,0x14ba,0x14bb,0x14bc,0x14bd,0x14be, - 0x14bf,0x14c0,0x14c1,0x14c2,0x14c3,0x14c4,0x14c5,0x14c6,0x14c7,0x14c8, - 0x14c9,0x14ca,0x14cb,0x14cc,0x14cd,0x14ce,0x14cf,0x14d0,0x14d1,0x14d2, - 0x14d3,0x14d4,0x14d5,0x14d6,0x14d7,0x14d8,0x14d9,0x14da,0x14db,0x14dc, - 0x14dd,0x14de,0x14df,0x14e0,0x14e1,0x14e2,0x14e3,0x14e4,0x14e5,0x14e6, - 0x14e7,0x14e8,0x14e9,0x14ea,0x14eb,0x14ec,0x14ed,0x14ee,0x14ef,0x14f0, - 0x14f1,0x14f2,0x14f3,0x14f4,0x14f5,0x14f6,0x14f7,0x14f8,0x14f9,0x14fa, - 0x14fb,0x14fc,0x14fd,0x14fe,0x14ff,0x1500,0x1501,0x1502,0x1503,0x1504, - 0x1505,0x1506,0x1507,0x1508,0x1509,0x150a,0x150b,0x150c,0x150d,0x150e, - 0x150f,0x1510,0x1511,0x1512,0x1513,0x1514,0x1515,0x1516,0x1517,0x1518, - 0x1519,0x151a,0x151b,0x151c,0x151d,0x151e,0x151f,0x1520,0x1521,0x1522, - 0x1523,0x1524,0x1525,0x1526,0x1527,0x1528,0x1529,0x152a,0x152b,0x152c, - 0x152d,0x152e,0x152f,0x1530,0x1531,0x1532,0x1533,0x1534,0x1535,0x1536, - 0x1537,0x1538,0x1539,0x153a,0x153b,0x153c,0x153d,0x153e,0x153f,0x1540, - 0x1541,0x1542,0x1543,0x1544,0x1545,0x1546,0x1547,0x1548,0x1549,0x154a, - 0x154b,0x154c,0x154d,0x154e,0x154f,0x1550,0x1551,0x1552,0x1553,0x1554, - 0x1555,0x1556,0x1557,0x1558,0x1559,0x155a,0x155b,0x155c,0x155d,0x155e, - 0x155f,0x1560,0x1561,0x1562,0x1563,0x1564,0x1565,0x1566,0x1567,0x1568, - 0x1569,0x156a,0x156b,0x156c,0x156d,0x156e,0x156f,0x1570,0x1571,0x1572, - 0x1573,0x1574,0x1575,0x1576,0x1577,0x1578,0x1579,0x157a,0x157b,0x157c, - 0x157d,0x157e,0x157f,0x1580,0x1581,0x1582,0x1583,0x1584,0x1585,0x1586, - 0x1587,0x1588,0x1589,0x158a,0x158b,0x158c,0x158d,0x158e,0x158f,0x1590, - 0x1591,0x1592,0x1593,0x1594,0x1595,0x1596,0x1597,0x1598,0x1599,0x159a, - 0x159b,0x159c,0x159d,0x159e,0x159f,0x15a0,0x15a1,0x15a2,0x15a3,0x15a4, - 0x15a5,0x15a6,0x15a7,0x15a8,0x15a9,0x15aa,0x15ab,0x15ac,0x15ad,0x15ae, - 0x15af,0x15b0,0x15b1,0x15b2,0x15b3,0x15b4,0x15b5,0x15b6,0x15b7,0x15b8, - 0x15b9,0x15ba,0x15bb,0x15bc,0x15bd,0x15be,0x15bf,0x15c0,0x15c1,0x15c2, - 0x15c3,0x15c4,0x15c5,0x15c6,0x15c7,0x15c8,0x15c9,0x15ca,0x15cb,0x15cc, - 0x15cd,0x15ce,0x15cf,0x15d0,0x15d1,0x15d2,0x15d3,0x15d4,0x15d5,0x15d6, - 0x15d7,0x15d8,0x15d9,0x15da,0x15db,0x15dc,0x15dd,0x15de,0x15df,0x15e0, - 0x15e1,0x15e2,0x15e3,0x15e4,0x15e5,0x15e6,0x15e7,0x15e8,0x15e9,0x15ea, - 0x15eb,0x15ec,0x15ed,0x15ee,0x15ef,0x15f0,0x15f1,0x15f2,0x15f3,0x15f4, - 0x15f5,0x15f6,0x15f7,0x15f8,0x15f9,0x15fa,0x15fb,0x15fc,0x15fd,0x15fe, - 0x15ff,0x1600,0x1601,0x1602,0x1603,0x1604,0x1605,0x1606,0x1607,0x1608, - 0x1609,0x160a,0x160b,0x160c,0x160d,0x160e,0x160f,0x1610,0x1611,0x1612, - 0x1613,0x1614,0x1615,0x1616,0x1617,0x1618,0x1619,0x161a,0x161b,0x161c, - 0x161d,0x161e,0x161f,0x1620,0x1621,0x1622,0x1623,0x1624,0x1625,0x1626, - 0x1627,0x1628,0x1629,0x162a,0x162b,0x162c,0x162d,0x162e,0x162f,0x1630, - 0x1631,0x1632,0x1633,0x1634,0x1635,0x1636,0x1637,0x1638,0x1639,0x163a, - 0x163b,0x163c,0x163d,0x163e,0x163f,0x1640,0x1641,0x1642,0x1643,0x1644, - 0x1645,0x1646,0x1647,0x1648,0x1649,0x164a,0x164b,0x164c,0x164d,0x164e, - 0x164f,0x1650,0x1651,0x1652,0x1653,0x1654,0x1655,0x1656,0x1657,0x1658, - 0x1659,0x165a,0x165b,0x165c,0x165d,0x165e,0x165f,0x1660,0x1661,0x1662, - 0x1663,0x1664,0x1665,0x1666,0x1667,0x1668,0x1669,0x166a,0x166b,0x166c, - 0x166d,0x166e,0x166f,0x1670,0x1671,0x1672,0x1673,0x1674,0x1675,0x1676, - 0x1681,0x1682,0x1683,0x1684,0x1685,0x1686,0x1687,0x1688,0x1689,0x168a, - 0x168b,0x168c,0x168d,0x168e,0x168f,0x1690,0x1691,0x1692,0x1693,0x1694, - 0x1695,0x1696,0x1697,0x1698,0x1699,0x169a,0x16a0,0x16a1,0x16a2,0x16a3, - 0x16a4,0x16a5,0x16a6,0x16a7,0x16a8,0x16a9,0x16aa,0x16ab,0x16ac,0x16ad, - 0x16ae,0x16af,0x16b0,0x16b1,0x16b2,0x16b3,0x16b4,0x16b5,0x16b6,0x16b7, - 0x16b8,0x16b9,0x16ba,0x16bb,0x16bc,0x16bd,0x16be,0x16bf,0x16c0,0x16c1, - 0x16c2,0x16c3,0x16c4,0x16c5,0x16c6,0x16c7,0x16c8,0x16c9,0x16ca,0x16cb, - 0x16cc,0x16cd,0x16ce,0x16cf,0x16d0,0x16d1,0x16d2,0x16d3,0x16d4,0x16d5, - 0x16d6,0x16d7,0x16d8,0x16d9,0x16da,0x16db,0x16dc,0x16dd,0x16de,0x16df, - 0x16e0,0x16e1,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e9, - 0x16ea,0x16eb,0x16ec,0x16ed,0x16ee,0x16ef,0x16f0,0x1700,0x1701,0x1702, - 0x1703,0x1704,0x1705,0x1706,0x1707,0x1708,0x1709,0x170a,0x170b,0x170c, - 0x170e,0x170f,0x1710,0x1711,0x1720,0x1721,0x1722,0x1723,0x1724,0x1725, - 0x1726,0x1727,0x1728,0x1729,0x172a,0x172b,0x172c,0x172d,0x172e,0x172f, - 0x1730,0x1731,0x1740,0x1741,0x1742,0x1743,0x1744,0x1745,0x1746,0x1747, - 0x1748,0x1749,0x174a,0x174b,0x174c,0x174d,0x174e,0x174f,0x1750,0x1751, - 0x1760,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1768,0x1769, - 0x176a,0x176b,0x176c,0x176e,0x176f,0x1770,0x17dc,0x17f0,0x17f1,0x17f2, - 0x17f3,0x17f4,0x17f5,0x17f6,0x17f7,0x17f8,0x17f9,0x1800,0x1801,0x1802, - 0x1803,0x1804,0x1805,0x1807,0x1808,0x1809,0x180a,0x1820,0x1821,0x1822, - 0x1823,0x1824,0x1825,0x1826,0x1827,0x1828,0x1829,0x182a,0x182b,0x182c, - 0x182d,0x182e,0x182f,0x1830,0x1831,0x1832,0x1833,0x1834,0x1835,0x1836, - 0x1837,0x1838,0x1839,0x183a,0x183b,0x183c,0x183d,0x183e,0x183f,0x1840, - 0x1841,0x1842,0x1843,0x1844,0x1845,0x1846,0x1847,0x1848,0x1849,0x184a, - 0x184b,0x184c,0x184d,0x184e,0x184f,0x1850,0x1851,0x1852,0x1853,0x1854, - 0x1855,0x1856,0x1857,0x1858,0x1859,0x185a,0x185b,0x185c,0x185d,0x185e, - 0x185f,0x1860,0x1861,0x1862,0x1863,0x1864,0x1865,0x1866,0x1867,0x1868, - 0x1869,0x186a,0x186b,0x186c,0x186d,0x186e,0x186f,0x1870,0x1871,0x1872, - 0x1873,0x1874,0x1875,0x1876,0x1877,0x1880,0x1881,0x1882,0x1883,0x1884, - 0x1885,0x1886,0x1887,0x1888,0x1889,0x188a,0x188b,0x188c,0x188d,0x188e, - 0x188f,0x1890,0x1891,0x1892,0x1893,0x1894,0x1895,0x1896,0x1897,0x1898, - 0x1899,0x189a,0x189b,0x189c,0x189d,0x189e,0x189f,0x18a0,0x18a1,0x18a2, - 0x18a3,0x18a4,0x18a5,0x18a6,0x18a7,0x18a8,0x1900,0x1901,0x1902,0x1903, - 0x1904,0x1905,0x1906,0x1907,0x1908,0x1909,0x190a,0x190b,0x190c,0x190d, - 0x190e,0x190f,0x1910,0x1911,0x1912,0x1913,0x1914,0x1915,0x1916,0x1917, - 0x1918,0x1919,0x191a,0x191b,0x191c,0x1940,0x19e0,0x19e1,0x19e2,0x19e3, - 0x19e4,0x19e5,0x19e6,0x19e7,0x19e8,0x19e9,0x19ea,0x19eb,0x19ec,0x19ed, - 0x19ee,0x19ef,0x19f0,0x19f1,0x19f2,0x19f3,0x19f4,0x19f5,0x19f6,0x19f7, - 0x19f8,0x19f9,0x19fa,0x19fb,0x19fc,0x19fd,0x19fe,0x19ff,0x1a00,0x1a01, - 0x1a02,0x1a03,0x1a04,0x1a05,0x1a06,0x1a07,0x1a08,0x1a09,0x1a0a,0x1a0b, - 0x1a0c,0x1a0d,0x1a0e,0x1a0f,0x1a10,0x1a11,0x1a12,0x1a13,0x1a14,0x1a15, - 0x1a16,0x1a1f,0x1b05,0x1b06,0x1b07,0x1b08,0x1b09,0x1b0a,0x1b0b,0x1b0c, - 0x1b0d,0x1b0e,0x1b0f,0x1b10,0x1b11,0x1b12,0x1b13,0x1b14,0x1b15,0x1b16, - 0x1b17,0x1b18,0x1b19,0x1b1a,0x1b1b,0x1b1c,0x1b1d,0x1b1e,0x1b1f,0x1b20, - 0x1b21,0x1b22,0x1b23,0x1b24,0x1b25,0x1b26,0x1b27,0x1b28,0x1b29,0x1b2a, - 0x1b2b,0x1b2c,0x1b2d,0x1b2e,0x1b2f,0x1b30,0x1b31,0x1b32,0x1b33,0x1b45, - 0x1b46,0x1b47,0x1b48,0x1b49,0x1b4a,0x1b4b,0x1b61,0x1b62,0x1b63,0x1b64, - 0x1b65,0x1b66,0x1b67,0x1b68,0x1b69,0x1b6a,0x1b74,0x1b75,0x1b76,0x1b77, - 0x1b78,0x1b79,0x1b7a,0x1b7b,0x1b7c,0x1d00,0x1d01,0x1d02,0x1d03,0x1d04, - 0x1d05,0x1d06,0x1d07,0x1d08,0x1d09,0x1d0a,0x1d0b,0x1d0c,0x1d0d,0x1d0e, - 0x1d0f,0x1d10,0x1d11,0x1d12,0x1d13,0x1d14,0x1d15,0x1d16,0x1d17,0x1d18, - 0x1d19,0x1d1a,0x1d1b,0x1d1c,0x1d1d,0x1d1e,0x1d1f,0x1d20,0x1d21,0x1d22, - 0x1d23,0x1d24,0x1d25,0x1d26,0x1d27,0x1d28,0x1d29,0x1d2a,0x1d2b,0x1d2c, - 0x1d2d,0x1d2e,0x1d2f,0x1d30,0x1d31,0x1d32,0x1d33,0x1d34,0x1d35,0x1d36, - 0x1d37,0x1d38,0x1d39,0x1d3a,0x1d3b,0x1d3c,0x1d3d,0x1d3e,0x1d3f,0x1d40, - 0x1d41,0x1d42,0x1d43,0x1d44,0x1d45,0x1d46,0x1d47,0x1d48,0x1d49,0x1d4a, - 0x1d4b,0x1d4c,0x1d4d,0x1d4e,0x1d4f,0x1d50,0x1d51,0x1d52,0x1d53,0x1d54, - 0x1d55,0x1d56,0x1d57,0x1d58,0x1d59,0x1d5a,0x1d5b,0x1d5c,0x1d5d,0x1d5e, - 0x1d5f,0x1d60,0x1d61,0x1d62,0x1d63,0x1d64,0x1d65,0x1d66,0x1d67,0x1d68, - 0x1d69,0x1d6a,0x1d6b,0x1d6c,0x1d6d,0x1d6e,0x1d6f,0x1d70,0x1d71,0x1d72, - 0x1d73,0x1d74,0x1d75,0x1d76,0x1d77,0x1d78,0x1d79,0x1d7a,0x1d7b,0x1d7c, - 0x1d7d,0x1d7e,0x1d7f,0x1d80,0x1d81,0x1d82,0x1d83,0x1d84,0x1d85,0x1d86, - 0x1d87,0x1d88,0x1d89,0x1d8a,0x1d8b,0x1d8c,0x1d8d,0x1d8e,0x1d8f,0x1d90, - 0x1d91,0x1d92,0x1d93,0x1d94,0x1d95,0x1d96,0x1d97,0x1d98,0x1d99,0x1d9a, - 0x1d9b,0x1d9c,0x1d9d,0x1d9e,0x1d9f,0x1da0,0x1da1,0x1da2,0x1da3,0x1da4, - 0x1da5,0x1da6,0x1da7,0x1da8,0x1da9,0x1daa,0x1dab,0x1dac,0x1dad,0x1dae, - 0x1daf,0x1db0,0x1db1,0x1db2,0x1db3,0x1db4,0x1db5,0x1db6,0x1db7,0x1db8, - 0x1db9,0x1dba,0x1dbb,0x1dbc,0x1dbd,0x1dbe,0x1dbf,0x1e00,0x1e01,0x1e02, - 0x1e03,0x1e04,0x1e05,0x1e06,0x1e07,0x1e08,0x1e09,0x1e0a,0x1e0b,0x1e0c, - 0x1e0d,0x1e0e,0x1e0f,0x1e10,0x1e11,0x1e12,0x1e13,0x1e14,0x1e15,0x1e16, - 0x1e17,0x1e18,0x1e19,0x1e1a,0x1e1b,0x1e1c,0x1e1d,0x1e1e,0x1e1f,0x1e20, - 0x1e21,0x1e22,0x1e23,0x1e24,0x1e25,0x1e26,0x1e27,0x1e28,0x1e29,0x1e2a, - 0x1e2b,0x1e2c,0x1e2d,0x1e2e,0x1e2f,0x1e30,0x1e31,0x1e32,0x1e33,0x1e34, - 0x1e35,0x1e36,0x1e37,0x1e38,0x1e39,0x1e3a,0x1e3b,0x1e3c,0x1e3d,0x1e3e, - 0x1e3f,0x1e40,0x1e41,0x1e42,0x1e43,0x1e44,0x1e45,0x1e46,0x1e47,0x1e48, - 0x1e49,0x1e4a,0x1e4b,0x1e4c,0x1e4d,0x1e4e,0x1e4f,0x1e50,0x1e51,0x1e52, - 0x1e53,0x1e54,0x1e55,0x1e56,0x1e57,0x1e58,0x1e59,0x1e5a,0x1e5b,0x1e5c, - 0x1e5d,0x1e5e,0x1e5f,0x1e60,0x1e61,0x1e62,0x1e63,0x1e64,0x1e65,0x1e66, - 0x1e67,0x1e68,0x1e69,0x1e6a,0x1e6b,0x1e6c,0x1e6d,0x1e6e,0x1e6f,0x1e70, - 0x1e71,0x1e72,0x1e73,0x1e74,0x1e75,0x1e76,0x1e77,0x1e78,0x1e79,0x1e7a, - 0x1e7b,0x1e7c,0x1e7d,0x1e7e,0x1e7f,0x1e80,0x1e81,0x1e82,0x1e83,0x1e84, - 0x1e85,0x1e86,0x1e87,0x1e88,0x1e89,0x1e8a,0x1e8b,0x1e8c,0x1e8d,0x1e8e, - 0x1e8f,0x1e90,0x1e91,0x1e92,0x1e93,0x1e94,0x1e95,0x1e96,0x1e97,0x1e98, - 0x1e99,0x1e9a,0x1e9b,0x1ea0,0x1ea1,0x1ea2,0x1ea3,0x1ea4,0x1ea5,0x1ea6, - 0x1ea7,0x1ea8,0x1ea9,0x1eaa,0x1eab,0x1eac,0x1ead,0x1eae,0x1eaf,0x1eb0, - 0x1eb1,0x1eb2,0x1eb3,0x1eb4,0x1eb5,0x1eb6,0x1eb7,0x1eb8,0x1eb9,0x1eba, - 0x1ebb,0x1ebc,0x1ebd,0x1ebe,0x1ebf,0x1ec0,0x1ec1,0x1ec2,0x1ec3,0x1ec4, - 0x1ec5,0x1ec6,0x1ec7,0x1ec8,0x1ec9,0x1eca,0x1ecb,0x1ecc,0x1ecd,0x1ece, - 0x1ecf,0x1ed0,0x1ed1,0x1ed2,0x1ed3,0x1ed4,0x1ed5,0x1ed6,0x1ed7,0x1ed8, - 0x1ed9,0x1eda,0x1edb,0x1edc,0x1edd,0x1ede,0x1edf,0x1ee0,0x1ee1,0x1ee2, - 0x1ee3,0x1ee4,0x1ee5,0x1ee6,0x1ee7,0x1ee8,0x1ee9,0x1eea,0x1eeb,0x1eec, - 0x1eed,0x1eee,0x1eef,0x1ef0,0x1ef1,0x1ef2,0x1ef3,0x1ef4,0x1ef5,0x1ef6, - 0x1ef7,0x1ef8,0x1ef9,0x1f00,0x1f01,0x1f02,0x1f03,0x1f04,0x1f05,0x1f06, - 0x1f07,0x1f08,0x1f09,0x1f0a,0x1f0b,0x1f0c,0x1f0d,0x1f0e,0x1f0f,0x1f10, - 0x1f11,0x1f12,0x1f13,0x1f14,0x1f15,0x1f18,0x1f19,0x1f1a,0x1f1b,0x1f1c, - 0x1f1d,0x1f20,0x1f21,0x1f22,0x1f23,0x1f24,0x1f25,0x1f26,0x1f27,0x1f28, - 0x1f29,0x1f2a,0x1f2b,0x1f2c,0x1f2d,0x1f2e,0x1f2f,0x1f30,0x1f31,0x1f32, - 0x1f33,0x1f34,0x1f35,0x1f36,0x1f37,0x1f38,0x1f39,0x1f3a,0x1f3b,0x1f3c, - 0x1f3d,0x1f3e,0x1f3f,0x1f40,0x1f41,0x1f42,0x1f43,0x1f44,0x1f45,0x1f48, - 0x1f49,0x1f4a,0x1f4b,0x1f4c,0x1f4d,0x1f50,0x1f51,0x1f52,0x1f53,0x1f54, - 0x1f55,0x1f56,0x1f57,0x1f59,0x1f5b,0x1f5d,0x1f5f,0x1f60,0x1f61,0x1f62, - 0x1f63,0x1f64,0x1f65,0x1f66,0x1f67,0x1f68,0x1f69,0x1f6a,0x1f6b,0x1f6c, - 0x1f6d,0x1f6e,0x1f6f,0x1f70,0x1f71,0x1f72,0x1f73,0x1f74,0x1f75,0x1f76, - 0x1f77,0x1f78,0x1f79,0x1f7a,0x1f7b,0x1f7c,0x1f7d,0x1f80,0x1f81,0x1f82, - 0x1f83,0x1f84,0x1f85,0x1f86,0x1f87,0x1f88,0x1f89,0x1f8a,0x1f8b,0x1f8c, - 0x1f8d,0x1f8e,0x1f8f,0x1f90,0x1f91,0x1f92,0x1f93,0x1f94,0x1f95,0x1f96, - 0x1f97,0x1f98,0x1f99,0x1f9a,0x1f9b,0x1f9c,0x1f9d,0x1f9e,0x1f9f,0x1fa0, - 0x1fa1,0x1fa2,0x1fa3,0x1fa4,0x1fa5,0x1fa6,0x1fa7,0x1fa8,0x1fa9,0x1faa, - 0x1fab,0x1fac,0x1fad,0x1fae,0x1faf,0x1fb0,0x1fb1,0x1fb2,0x1fb3,0x1fb4, - 0x1fb6,0x1fb7,0x1fb8,0x1fb9,0x1fba,0x1fbb,0x1fbc,0x1fbd,0x1fbe,0x1fbf, - 0x1fc0,0x1fc1,0x1fc2,0x1fc3,0x1fc4,0x1fc6,0x1fc7,0x1fc8,0x1fc9,0x1fca, - 0x1fcb,0x1fcc,0x1fcd,0x1fce,0x1fcf,0x1fd0,0x1fd1,0x1fd2,0x1fd3,0x1fd6, - 0x1fd7,0x1fd8,0x1fd9,0x1fda,0x1fdb,0x1fdd,0x1fde,0x1fdf,0x1fe0,0x1fe1, - 0x1fe2,0x1fe3,0x1fe4,0x1fe5,0x1fe6,0x1fe7,0x1fe8,0x1fe9,0x1fea,0x1feb, - 0x1fec,0x1fed,0x1fee,0x1fef,0x1ff2,0x1ff3,0x1ff4,0x1ff6,0x1ff7,0x1ff8, - 0x1ff9,0x1ffa,0x1ffb,0x1ffc,0x1ffd,0x1ffe,0x2015,0x2017,0x2022,0x2023, - 0x2038,0x203d,0x203e,0x203f,0x2040,0x2041,0x2042,0x2043,0x2048,0x2049, - 0x204a,0x204b,0x204c,0x204d,0x204e,0x204f,0x2050,0x2051,0x2052,0x2053, - 0x2054,0x2055,0x2057,0x205c,0x2061,0x2062,0x2063,0x2070,0x2071,0x2075, - 0x2076,0x2077,0x2078,0x2079,0x207a,0x207b,0x207c,0x2080,0x2085,0x2086, - 0x2087,0x2088,0x2089,0x208a,0x208b,0x208c,0x2090,0x2091,0x2092,0x2093, - 0x2094,0x2100,0x2101,0x2102,0x2104,0x2106,0x2107,0x2108,0x210a,0x210b, - 0x210c,0x210d,0x210e,0x210f,0x2110,0x2111,0x2112,0x2114,0x2115,0x2117, - 0x2118,0x2119,0x211a,0x211b,0x211c,0x211d,0x211e,0x211f,0x2120,0x2123, - 0x2124,0x2125,0x2127,0x2128,0x2129,0x212a,0x212c,0x212d,0x212e,0x212f, - 0x2130,0x2131,0x2132,0x2133,0x2134,0x2135,0x2136,0x2137,0x2138,0x2139, - 0x213a,0x213b,0x213c,0x213d,0x213e,0x213f,0x2140,0x2141,0x2142,0x2143, - 0x2144,0x2145,0x2146,0x2147,0x2148,0x2149,0x214a,0x214b,0x214c,0x214d, - 0x214e,0x2153,0x2156,0x2157,0x2158,0x2159,0x215a,0x215c,0x215d,0x215f, - 0x216c,0x216d,0x216e,0x216f,0x217a,0x217b,0x217c,0x217d,0x217e,0x217f, - 0x2180,0x2181,0x2182,0x2183,0x2184,0x219a,0x219b,0x219c,0x219d,0x219e, - 0x219f,0x21a0,0x21a1,0x21a2,0x21a3,0x21a4,0x21a5,0x21a6,0x21a7,0x21a8, - 0x21a9,0x21aa,0x21ab,0x21ac,0x21ad,0x21ae,0x21af,0x21b0,0x21b1,0x21b2, - 0x21b3,0x21b4,0x21b5,0x21b6,0x21b7,0x21b8,0x21b9,0x21ba,0x21bb,0x21bc, - 0x21bd,0x21be,0x21bf,0x21c0,0x21c1,0x21c2,0x21c3,0x21c4,0x21c5,0x21c6, - 0x21c7,0x21c8,0x21c9,0x21ca,0x21cb,0x21cc,0x21cd,0x21ce,0x21cf,0x21d0, - 0x21d1,0x21d3,0x21d5,0x21d6,0x21d7,0x21d8,0x21d9,0x21da,0x21db,0x21dc, - 0x21dd,0x21de,0x21df,0x21e0,0x21e1,0x21e2,0x21e3,0x21e4,0x21e5,0x21e6, - 0x21e7,0x21e8,0x21e9,0x21ea,0x21eb,0x21ec,0x21ed,0x21ee,0x21ef,0x21f0, - 0x21f1,0x21f2,0x21f3,0x21f4,0x21f5,0x21f6,0x21f7,0x21f8,0x21f9,0x21fa, - 0x21fb,0x21fc,0x21fd,0x21fe,0x21ff,0x2201,0x2204,0x2205,0x2206,0x2209, - 0x220a,0x220c,0x220d,0x220e,0x2210,0x2214,0x2216,0x2217,0x2218,0x2219, - 0x221b,0x221c,0x2221,0x2222,0x2224,0x2226,0x222d,0x222f,0x2230,0x2231, - 0x2232,0x2233,0x2238,0x2239,0x223a,0x223b,0x223e,0x223f,0x2240,0x2241, - 0x2242,0x2243,0x2244,0x2245,0x2246,0x2247,0x2249,0x224a,0x224b,0x224d, - 0x224e,0x224f,0x2250,0x2251,0x2253,0x2254,0x2255,0x2256,0x2257,0x2258, - 0x2259,0x225a,0x225b,0x225c,0x225d,0x225e,0x225f,0x2262,0x2263,0x2268, - 0x2269,0x226c,0x226d,0x2270,0x2271,0x2272,0x2273,0x2274,0x2275,0x2276, - 0x2277,0x2278,0x2279,0x227a,0x227b,0x227c,0x227d,0x227e,0x227f,0x2280, - 0x2281,0x2284,0x2285,0x2288,0x2289,0x228a,0x228b,0x228c,0x228d,0x228e, - 0x228f,0x2290,0x2291,0x2292,0x2293,0x2294,0x2296,0x2297,0x2298,0x229a, - 0x229b,0x229c,0x229d,0x229e,0x229f,0x22a0,0x22a1,0x22a2,0x22a3,0x22a4, - 0x22a6,0x22a7,0x22a8,0x22a9,0x22aa,0x22ab,0x22ac,0x22ad,0x22ae,0x22af, - 0x22b0,0x22b1,0x22b2,0x22b3,0x22b4,0x22b5,0x22b6,0x22b7,0x22b8,0x22b9, - 0x22ba,0x22bb,0x22bc,0x22bd,0x22be,0x22c0,0x22c1,0x22c2,0x22c3,0x22c4, - 0x22c5,0x22c6,0x22c7,0x22c8,0x22c9,0x22ca,0x22cb,0x22cc,0x22cd,0x22ce, - 0x22cf,0x22d0,0x22d1,0x22d2,0x22d3,0x22d4,0x22d5,0x22d6,0x22d7,0x22d8, - 0x22d9,0x22da,0x22db,0x22dc,0x22dd,0x22de,0x22df,0x22e0,0x22e1,0x22e2, - 0x22e3,0x22e4,0x22e5,0x22e6,0x22e7,0x22e8,0x22e9,0x22ea,0x22eb,0x22ec, - 0x22ed,0x22ee,0x22ef,0x22f0,0x22f1,0x22f2,0x22f3,0x22f4,0x22f5,0x22f6, - 0x22f7,0x22f8,0x22f9,0x22fa,0x22fb,0x22fc,0x22fd,0x22fe,0x22ff,0x2300, - 0x2301,0x2302,0x2303,0x2304,0x2305,0x2306,0x2307,0x2308,0x2309,0x230a, - 0x230b,0x230c,0x230d,0x230e,0x230f,0x2310,0x2311,0x2313,0x2314,0x2315, - 0x2316,0x2317,0x2318,0x2319,0x231a,0x231b,0x231c,0x231d,0x231e,0x231f, - 0x2320,0x2321,0x2322,0x2323,0x2324,0x2325,0x2326,0x2327,0x2328,0x232b, - 0x232c,0x232d,0x232e,0x232f,0x2330,0x2331,0x2332,0x2333,0x2334,0x2335, - 0x2336,0x2337,0x2338,0x2339,0x233a,0x233b,0x233c,0x233d,0x233e,0x233f, - 0x2340,0x2341,0x2342,0x2343,0x2344,0x2345,0x2346,0x2347,0x2348,0x2349, - 0x234a,0x234b,0x234c,0x234d,0x234e,0x234f,0x2350,0x2351,0x2352,0x2353, - 0x2354,0x2355,0x2356,0x2357,0x2358,0x2359,0x235a,0x235b,0x235c,0x235d, - 0x235e,0x235f,0x2360,0x2361,0x2362,0x2363,0x2364,0x2365,0x2366,0x2367, - 0x2368,0x2369,0x236a,0x236b,0x236c,0x236d,0x236e,0x236f,0x2370,0x2371, - 0x2372,0x2373,0x2374,0x2375,0x2376,0x2377,0x2378,0x2379,0x237a,0x237b, - 0x237c,0x237d,0x237e,0x237f,0x2380,0x2381,0x2382,0x2383,0x2384,0x2385, - 0x2386,0x2387,0x2388,0x2389,0x238a,0x238b,0x238c,0x238d,0x238e,0x238f, - 0x2390,0x2391,0x2392,0x2393,0x2394,0x2395,0x2396,0x2397,0x2398,0x2399, - 0x239a,0x239b,0x239c,0x239d,0x239e,0x239f,0x23a0,0x23a1,0x23a2,0x23a3, - 0x23a4,0x23a5,0x23a6,0x23a7,0x23a8,0x23a9,0x23aa,0x23ab,0x23ac,0x23ad, - 0x23ae,0x23af,0x23b0,0x23b1,0x23b2,0x23b3,0x23b4,0x23b5,0x23b6,0x23b7, - 0x23b8,0x23b9,0x23ba,0x23bb,0x23bc,0x23bd,0x23be,0x23bf,0x23c0,0x23c1, - 0x23c2,0x23c3,0x23c4,0x23c5,0x23c6,0x23c7,0x23c8,0x23c9,0x23ca,0x23cb, - 0x23cc,0x23cd,0x23ce,0x23cf,0x23d0,0x23d1,0x23d2,0x23d3,0x23d4,0x23d5, - 0x23d6,0x23d7,0x23d8,0x23d9,0x23da,0x23db,0x23dc,0x23dd,0x23de,0x23df, - 0x23e0,0x23e1,0x23e2,0x23e3,0x23e4,0x23e5,0x23e6,0x23e7,0x2400,0x2401, - 0x2402,0x2403,0x2404,0x2405,0x2406,0x2407,0x2408,0x2409,0x240a,0x240b, - 0x240c,0x240d,0x240e,0x240f,0x2410,0x2411,0x2412,0x2413,0x2414,0x2415, - 0x2416,0x2417,0x2418,0x2419,0x241a,0x241b,0x241c,0x241d,0x241e,0x241f, - 0x2420,0x2421,0x2422,0x2423,0x2424,0x2425,0x2426,0x2440,0x2441,0x2442, - 0x2443,0x2444,0x2445,0x2446,0x2447,0x2448,0x2449,0x244a,0x24c0,0x24c1, - 0x24c2,0x24c3,0x24c4,0x24c5,0x24c6,0x24c7,0x24c8,0x24c9,0x24ca,0x24cb, - 0x24cc,0x24cd,0x24ce,0x24cf,0x24ea,0x24ff,0x254c,0x254d,0x254e,0x254f, - 0x2575,0x2576,0x2577,0x2578,0x2579,0x257a,0x257b,0x257c,0x257d,0x257e, - 0x257f,0x2590,0x2591,0x2596,0x2597,0x2598,0x2599,0x259a,0x259b,0x259c, - 0x259d,0x259e,0x259f,0x25a2,0x25aa,0x25ab,0x25ac,0x25ad,0x25ae,0x25af, - 0x25b0,0x25b1,0x25b4,0x25b5,0x25b8,0x25b9,0x25ba,0x25bb,0x25be,0x25bf, - 0x25c2,0x25c3,0x25c4,0x25c5,0x25c8,0x25c9,0x25ca,0x25cc,0x25cd,0x25d2, - 0x25d3,0x25d4,0x25d5,0x25d6,0x25d7,0x25d8,0x25d9,0x25da,0x25db,0x25dc, - 0x25dd,0x25de,0x25df,0x25e0,0x25e1,0x25e6,0x25e7,0x25e8,0x25e9,0x25ea, - 0x25eb,0x25ec,0x25ed,0x25ee,0x25f0,0x25f1,0x25f2,0x25f3,0x25f4,0x25f5, - 0x25f6,0x25f7,0x25f8,0x25f9,0x25fa,0x25fb,0x25fc,0x25fd,0x25fe,0x25ff, - 0x2600,0x2601,0x2602,0x2603,0x2604,0x2607,0x2608,0x260a,0x260b,0x260c, - 0x260d,0x2610,0x2611,0x2612,0x2613,0x2618,0x2619,0x261a,0x261b,0x261d, - 0x261f,0x2620,0x2621,0x2622,0x2623,0x2624,0x2625,0x2626,0x2627,0x2628, - 0x2629,0x262a,0x262b,0x262c,0x262d,0x262e,0x262f,0x2630,0x2631,0x2632, - 0x2633,0x2634,0x2635,0x2636,0x2637,0x2638,0x2639,0x263a,0x263b,0x263c, - 0x263d,0x263e,0x263f,0x2641,0x2643,0x2644,0x2645,0x2646,0x2647,0x2648, - 0x2649,0x264a,0x264b,0x264c,0x264d,0x264e,0x264f,0x2650,0x2651,0x2652, - 0x2653,0x2654,0x2655,0x2656,0x2657,0x2658,0x2659,0x265a,0x265b,0x265c, - 0x265d,0x265e,0x265f,0x2662,0x2666,0x266b,0x266e,0x2670,0x2671,0x2672, - 0x2673,0x2674,0x2675,0x2676,0x2677,0x2678,0x2679,0x267a,0x267b,0x267c, - 0x267d,0x267e,0x267f,0x2680,0x2681,0x2682,0x2683,0x2684,0x2685,0x2686, - 0x2687,0x2688,0x2689,0x268a,0x268b,0x268c,0x268d,0x268e,0x268f,0x2690, - 0x2691,0x2692,0x2693,0x2694,0x2695,0x2696,0x2697,0x2698,0x2699,0x269a, - 0x269b,0x269c,0x26a0,0x26a1,0x26a2,0x26a3,0x26a4,0x26a5,0x26a6,0x26a7, - 0x26a8,0x26a9,0x26aa,0x26ab,0x26ac,0x26ad,0x26ae,0x26af,0x26b0,0x26b1, - 0x26b2,0x2701,0x2702,0x2703,0x2704,0x2706,0x2707,0x2708,0x2709,0x270c, - 0x270d,0x270e,0x270f,0x2710,0x2711,0x2712,0x2713,0x2714,0x2715,0x2716, - 0x2717,0x2718,0x2719,0x271a,0x271b,0x271c,0x271d,0x271e,0x271f,0x2720, - 0x2721,0x2722,0x2723,0x2724,0x2725,0x2726,0x2727,0x2729,0x272a,0x272b, - 0x272c,0x272d,0x272e,0x272f,0x2730,0x2731,0x2732,0x2733,0x2734,0x2735, - 0x2736,0x2737,0x2738,0x2739,0x273a,0x273b,0x273c,0x273d,0x273e,0x273f, - 0x2740,0x2741,0x2742,0x2743,0x2744,0x2745,0x2746,0x2747,0x2748,0x2749, - 0x274a,0x274b,0x274d,0x274f,0x2750,0x2751,0x2752,0x2756,0x2758,0x2759, - 0x275a,0x275b,0x275c,0x275d,0x275e,0x2761,0x2762,0x2763,0x2764,0x2765, - 0x2766,0x2767,0x2776,0x2777,0x2778,0x2779,0x277a,0x277b,0x277c,0x277d, - 0x277e,0x277f,0x2780,0x2781,0x2782,0x2783,0x2784,0x2785,0x2786,0x2787, - 0x2788,0x2789,0x278a,0x278b,0x278c,0x278d,0x278e,0x278f,0x2790,0x2791, - 0x2792,0x2793,0x2794,0x2798,0x2799,0x279a,0x279b,0x279c,0x279d,0x279e, - 0x279f,0x27a0,0x27a1,0x27a2,0x27a3,0x27a4,0x27a5,0x27a6,0x27a7,0x27a8, - 0x27a9,0x27aa,0x27ab,0x27ac,0x27ad,0x27ae,0x27af,0x27b1,0x27b2,0x27b3, - 0x27b4,0x27b5,0x27b6,0x27b7,0x27b8,0x27b9,0x27ba,0x27bb,0x27bc,0x27bd, - 0x27be,0x27c0,0x27c1,0x27c2,0x27c3,0x27c4,0x27c7,0x27c8,0x27c9,0x27ca, - 0x27d0,0x27d1,0x27d2,0x27d3,0x27d4,0x27d5,0x27d6,0x27d7,0x27d8,0x27d9, - 0x27da,0x27db,0x27dc,0x27dd,0x27de,0x27df,0x27e0,0x27e1,0x27e2,0x27e3, - 0x27e4,0x27e5,0x27f0,0x27f1,0x27f2,0x27f3,0x27f4,0x27f5,0x27f6,0x27f7, - 0x27f8,0x27f9,0x27fa,0x27fb,0x27fc,0x27fd,0x27fe,0x27ff,0x2800,0x2801, - 0x2802,0x2803,0x2804,0x2805,0x2806,0x2807,0x2808,0x2809,0x280a,0x280b, - 0x280c,0x280d,0x280e,0x280f,0x2810,0x2811,0x2812,0x2813,0x2814,0x2815, - 0x2816,0x2817,0x2818,0x2819,0x281a,0x281b,0x281c,0x281d,0x281e,0x281f, - 0x2820,0x2821,0x2822,0x2823,0x2824,0x2825,0x2826,0x2827,0x2828,0x2829, - 0x282a,0x282b,0x282c,0x282d,0x282e,0x282f,0x2830,0x2831,0x2832,0x2833, - 0x2834,0x2835,0x2836,0x2837,0x2838,0x2839,0x283a,0x283b,0x283c,0x283d, - 0x283e,0x283f,0x2840,0x2841,0x2842,0x2843,0x2844,0x2845,0x2846,0x2847, - 0x2848,0x2849,0x284a,0x284b,0x284c,0x284d,0x284e,0x284f,0x2850,0x2851, - 0x2852,0x2853,0x2854,0x2855,0x2856,0x2857,0x2858,0x2859,0x285a,0x285b, - 0x285c,0x285d,0x285e,0x285f,0x2860,0x2861,0x2862,0x2863,0x2864,0x2865, - 0x2866,0x2867,0x2868,0x2869,0x286a,0x286b,0x286c,0x286d,0x286e,0x286f, - 0x2870,0x2871,0x2872,0x2873,0x2874,0x2875,0x2876,0x2877,0x2878,0x2879, - 0x287a,0x287b,0x287c,0x287d,0x287e,0x287f,0x2880,0x2881,0x2882,0x2883, - 0x2884,0x2885,0x2886,0x2887,0x2888,0x2889,0x288a,0x288b,0x288c,0x288d, - 0x288e,0x288f,0x2890,0x2891,0x2892,0x2893,0x2894,0x2895,0x2896,0x2897, - 0x2898,0x2899,0x289a,0x289b,0x289c,0x289d,0x289e,0x289f,0x28a0,0x28a1, - 0x28a2,0x28a3,0x28a4,0x28a5,0x28a6,0x28a7,0x28a8,0x28a9,0x28aa,0x28ab, - 0x28ac,0x28ad,0x28ae,0x28af,0x28b0,0x28b1,0x28b2,0x28b3,0x28b4,0x28b5, - 0x28b6,0x28b7,0x28b8,0x28b9,0x28ba,0x28bb,0x28bc,0x28bd,0x28be,0x28bf, - 0x28c0,0x28c1,0x28c2,0x28c3,0x28c4,0x28c5,0x28c6,0x28c7,0x28c8,0x28c9, - 0x28ca,0x28cb,0x28cc,0x28cd,0x28ce,0x28cf,0x28d0,0x28d1,0x28d2,0x28d3, - 0x28d4,0x28d5,0x28d6,0x28d7,0x28d8,0x28d9,0x28da,0x28db,0x28dc,0x28dd, - 0x28de,0x28df,0x28e0,0x28e1,0x28e2,0x28e3,0x28e4,0x28e5,0x28e6,0x28e7, - 0x28e8,0x28e9,0x28ea,0x28eb,0x28ec,0x28ed,0x28ee,0x28ef,0x28f0,0x28f1, - 0x28f2,0x28f3,0x28f4,0x28f5,0x28f6,0x28f7,0x28f8,0x28f9,0x28fa,0x28fb, - 0x28fc,0x28fd,0x28fe,0x28ff,0x2900,0x2901,0x2902,0x2903,0x2904,0x2905, - 0x2906,0x2907,0x2908,0x2909,0x290a,0x290b,0x290c,0x290d,0x290e,0x290f, - 0x2910,0x2911,0x2912,0x2913,0x2914,0x2915,0x2916,0x2917,0x2918,0x2919, - 0x291a,0x291b,0x291c,0x291d,0x291e,0x291f,0x2920,0x2921,0x2922,0x2923, - 0x2924,0x2925,0x2926,0x2927,0x2928,0x2929,0x292a,0x292b,0x292c,0x292d, - 0x292e,0x292f,0x2930,0x2931,0x2932,0x2933,0x2934,0x2935,0x2936,0x2937, - 0x2938,0x2939,0x293a,0x293b,0x293c,0x293d,0x293e,0x293f,0x2940,0x2941, - 0x2942,0x2943,0x2944,0x2945,0x2946,0x2947,0x2948,0x2949,0x294a,0x294b, - 0x294c,0x294d,0x294e,0x294f,0x2950,0x2951,0x2952,0x2953,0x2954,0x2955, - 0x2956,0x2957,0x2958,0x2959,0x295a,0x295b,0x295c,0x295d,0x295e,0x295f, - 0x2960,0x2961,0x2962,0x2963,0x2964,0x2965,0x2966,0x2967,0x2968,0x2969, - 0x296a,0x296b,0x296c,0x296d,0x296e,0x296f,0x2970,0x2971,0x2972,0x2973, - 0x2974,0x2975,0x2976,0x2977,0x2978,0x2979,0x297a,0x297b,0x297c,0x297d, - 0x297e,0x297f,0x2980,0x2981,0x2982,0x2999,0x299a,0x299b,0x299c,0x299d, - 0x299e,0x299f,0x29a0,0x29a1,0x29a2,0x29a3,0x29a4,0x29a5,0x29a6,0x29a7, - 0x29a8,0x29a9,0x29aa,0x29ab,0x29ac,0x29ad,0x29ae,0x29af,0x29b0,0x29b1, - 0x29b2,0x29b3,0x29b4,0x29b5,0x29b6,0x29b7,0x29b8,0x29b9,0x29ba,0x29bb, - 0x29bc,0x29bd,0x29be,0x29bf,0x29c0,0x29c1,0x29c2,0x29c3,0x29c4,0x29c5, - 0x29c6,0x29c7,0x29c8,0x29c9,0x29ca,0x29cb,0x29cc,0x29cd,0x29ce,0x29cf, - 0x29d0,0x29d1,0x29d2,0x29d3,0x29d4,0x29d5,0x29d6,0x29d7,0x29dc,0x29dd, - 0x29de,0x29df,0x29e0,0x29e1,0x29e2,0x29e3,0x29e4,0x29e5,0x29e6,0x29e7, - 0x29e8,0x29e9,0x29ea,0x29eb,0x29ec,0x29ed,0x29ee,0x29ef,0x29f0,0x29f1, - 0x29f2,0x29f3,0x29f4,0x29f5,0x29f6,0x29f7,0x29f8,0x29f9,0x29fa,0x29fb, - 0x29fe,0x29ff,0x2a00,0x2a01,0x2a02,0x2a03,0x2a04,0x2a05,0x2a06,0x2a07, - 0x2a08,0x2a09,0x2a0a,0x2a0b,0x2a0c,0x2a0d,0x2a0e,0x2a0f,0x2a10,0x2a11, - 0x2a12,0x2a13,0x2a14,0x2a15,0x2a16,0x2a17,0x2a18,0x2a19,0x2a1a,0x2a1b, - 0x2a1c,0x2a1d,0x2a1e,0x2a1f,0x2a20,0x2a21,0x2a22,0x2a23,0x2a24,0x2a25, - 0x2a26,0x2a27,0x2a28,0x2a29,0x2a2a,0x2a2b,0x2a2c,0x2a2d,0x2a2e,0x2a2f, - 0x2a30,0x2a31,0x2a32,0x2a33,0x2a34,0x2a35,0x2a36,0x2a37,0x2a38,0x2a39, - 0x2a3a,0x2a3b,0x2a3c,0x2a3d,0x2a3e,0x2a3f,0x2a40,0x2a41,0x2a42,0x2a43, - 0x2a44,0x2a45,0x2a46,0x2a47,0x2a48,0x2a49,0x2a4a,0x2a4b,0x2a4c,0x2a4d, - 0x2a4e,0x2a4f,0x2a50,0x2a51,0x2a52,0x2a53,0x2a54,0x2a55,0x2a56,0x2a57, - 0x2a58,0x2a59,0x2a5a,0x2a5b,0x2a5c,0x2a5d,0x2a5e,0x2a5f,0x2a60,0x2a61, - 0x2a62,0x2a63,0x2a64,0x2a65,0x2a66,0x2a67,0x2a68,0x2a69,0x2a6a,0x2a6b, - 0x2a6c,0x2a6d,0x2a6e,0x2a6f,0x2a70,0x2a71,0x2a72,0x2a73,0x2a74,0x2a75, - 0x2a76,0x2a77,0x2a78,0x2a79,0x2a7a,0x2a7b,0x2a7c,0x2a7d,0x2a7e,0x2a7f, - 0x2a80,0x2a81,0x2a82,0x2a83,0x2a84,0x2a85,0x2a86,0x2a87,0x2a88,0x2a89, - 0x2a8a,0x2a8b,0x2a8c,0x2a8d,0x2a8e,0x2a8f,0x2a90,0x2a91,0x2a92,0x2a93, - 0x2a94,0x2a95,0x2a96,0x2a97,0x2a98,0x2a99,0x2a9a,0x2a9b,0x2a9c,0x2a9d, - 0x2a9e,0x2a9f,0x2aa0,0x2aa1,0x2aa2,0x2aa3,0x2aa4,0x2aa5,0x2aa6,0x2aa7, - 0x2aa8,0x2aa9,0x2aaa,0x2aab,0x2aac,0x2aad,0x2aae,0x2aaf,0x2ab0,0x2ab1, - 0x2ab2,0x2ab3,0x2ab4,0x2ab5,0x2ab6,0x2ab7,0x2ab8,0x2ab9,0x2aba,0x2abb, - 0x2abc,0x2abd,0x2abe,0x2abf,0x2ac0,0x2ac1,0x2ac2,0x2ac3,0x2ac4,0x2ac5, - 0x2ac6,0x2ac7,0x2ac8,0x2ac9,0x2aca,0x2acb,0x2acc,0x2acd,0x2ace,0x2acf, - 0x2ad0,0x2ad1,0x2ad2,0x2ad3,0x2ad4,0x2ad5,0x2ad6,0x2ad7,0x2ad8,0x2ad9, - 0x2ada,0x2adb,0x2adc,0x2add,0x2ade,0x2adf,0x2ae0,0x2ae1,0x2ae2,0x2ae3, - 0x2ae4,0x2ae5,0x2ae6,0x2ae7,0x2ae8,0x2ae9,0x2aea,0x2aeb,0x2aec,0x2aed, - 0x2aee,0x2aef,0x2af0,0x2af1,0x2af2,0x2af3,0x2af4,0x2af5,0x2af6,0x2af7, - 0x2af8,0x2af9,0x2afa,0x2afb,0x2afc,0x2afd,0x2afe,0x2aff,0x2b00,0x2b01, - 0x2b02,0x2b03,0x2b04,0x2b05,0x2b06,0x2b07,0x2b08,0x2b09,0x2b0a,0x2b0b, - 0x2b0c,0x2b0d,0x2b0e,0x2b0f,0x2b10,0x2b11,0x2b12,0x2b13,0x2b14,0x2b15, - 0x2b16,0x2b17,0x2b18,0x2b19,0x2b1a,0x2b20,0x2b21,0x2b22,0x2b23,0x2c00, - 0x2c01,0x2c02,0x2c03,0x2c04,0x2c05,0x2c06,0x2c07,0x2c08,0x2c09,0x2c0a, - 0x2c0b,0x2c0c,0x2c0d,0x2c0e,0x2c0f,0x2c10,0x2c11,0x2c12,0x2c13,0x2c14, - 0x2c15,0x2c16,0x2c17,0x2c18,0x2c19,0x2c1a,0x2c1b,0x2c1c,0x2c1d,0x2c1e, - 0x2c1f,0x2c20,0x2c21,0x2c22,0x2c23,0x2c24,0x2c25,0x2c26,0x2c27,0x2c28, - 0x2c29,0x2c2a,0x2c2b,0x2c2c,0x2c2d,0x2c2e,0x2c30,0x2c31,0x2c32,0x2c33, - 0x2c34,0x2c35,0x2c36,0x2c37,0x2c38,0x2c39,0x2c3a,0x2c3b,0x2c3c,0x2c3d, - 0x2c3e,0x2c3f,0x2c40,0x2c41,0x2c42,0x2c43,0x2c44,0x2c45,0x2c46,0x2c47, - 0x2c48,0x2c49,0x2c4a,0x2c4b,0x2c4c,0x2c4d,0x2c4e,0x2c4f,0x2c50,0x2c51, - 0x2c52,0x2c53,0x2c54,0x2c55,0x2c56,0x2c57,0x2c58,0x2c59,0x2c5a,0x2c5b, - 0x2c5c,0x2c5d,0x2c5e,0x2c60,0x2c61,0x2c62,0x2c63,0x2c64,0x2c65,0x2c66, - 0x2c67,0x2c68,0x2c69,0x2c6a,0x2c6b,0x2c6c,0x2c74,0x2c75,0x2c76,0x2c77, - 0x2c80,0x2c81,0x2c82,0x2c83,0x2c84,0x2c85,0x2c86,0x2c87,0x2c88,0x2c89, - 0x2c8a,0x2c8b,0x2c8c,0x2c8d,0x2c8e,0x2c8f,0x2c90,0x2c91,0x2c92,0x2c93, - 0x2c94,0x2c95,0x2c96,0x2c97,0x2c98,0x2c99,0x2c9a,0x2c9b,0x2c9c,0x2c9d, - 0x2c9e,0x2c9f,0x2ca0,0x2ca1,0x2ca2,0x2ca3,0x2ca4,0x2ca5,0x2ca6,0x2ca7, - 0x2ca8,0x2ca9,0x2caa,0x2cab,0x2cac,0x2cad,0x2cae,0x2caf,0x2cb0,0x2cb1, - 0x2cb2,0x2cb3,0x2cb4,0x2cb5,0x2cb6,0x2cb7,0x2cb8,0x2cb9,0x2cba,0x2cbb, - 0x2cbc,0x2cbd,0x2cbe,0x2cbf,0x2cc0,0x2cc1,0x2cc2,0x2cc3,0x2cc4,0x2cc5, - 0x2cc6,0x2cc7,0x2cc8,0x2cc9,0x2cca,0x2ccb,0x2ccc,0x2ccd,0x2cce,0x2ccf, - 0x2cd0,0x2cd1,0x2cd2,0x2cd3,0x2cd4,0x2cd5,0x2cd6,0x2cd7,0x2cd8,0x2cd9, - 0x2cda,0x2cdb,0x2cdc,0x2cdd,0x2cde,0x2cdf,0x2ce0,0x2ce1,0x2ce2,0x2ce3, - 0x2ce4,0x2ce5,0x2ce6,0x2ce7,0x2ce8,0x2ce9,0x2cea,0x2cfd,0x2d00,0x2d01, - 0x2d02,0x2d03,0x2d04,0x2d05,0x2d06,0x2d07,0x2d08,0x2d09,0x2d0a,0x2d0b, - 0x2d0c,0x2d0d,0x2d0e,0x2d0f,0x2d10,0x2d11,0x2d12,0x2d13,0x2d14,0x2d15, - 0x2d16,0x2d17,0x2d18,0x2d19,0x2d1a,0x2d1b,0x2d1c,0x2d1d,0x2d1e,0x2d1f, - 0x2d20,0x2d21,0x2d22,0x2d23,0x2d24,0x2d25,0x2d30,0x2d31,0x2d32,0x2d33, - 0x2d34,0x2d35,0x2d36,0x2d37,0x2d38,0x2d39,0x2d3a,0x2d3b,0x2d3c,0x2d3d, - 0x2d3e,0x2d3f,0x2d40,0x2d41,0x2d42,0x2d43,0x2d44,0x2d45,0x2d46,0x2d47, - 0x2d48,0x2d49,0x2d4a,0x2d4b,0x2d4c,0x2d4d,0x2d4e,0x2d4f,0x2d50,0x2d51, - 0x2d52,0x2d53,0x2d54,0x2d55,0x2d56,0x2d57,0x2d58,0x2d59,0x2d5a,0x2d5b, - 0x2d5c,0x2d5d,0x2d5e,0x2d5f,0x2d60,0x2d61,0x2d62,0x2d63,0x2d64,0x2d65, - 0x2d6f,0x2d80,0x2d81,0x2d82,0x2d83,0x2d84,0x2d85,0x2d86,0x2d87,0x2d88, - 0x2d89,0x2d8a,0x2d8b,0x2d8c,0x2d8d,0x2d8e,0x2d8f,0x2d90,0x2d91,0x2d92, - 0x2d93,0x2d94,0x2d95,0x2d96,0x2da0,0x2da1,0x2da2,0x2da3,0x2da4,0x2da5, - 0x2da6,0x2da8,0x2da9,0x2daa,0x2dab,0x2dac,0x2dad,0x2dae,0x2db0,0x2db1, - 0x2db2,0x2db3,0x2db4,0x2db5,0x2db6,0x2db8,0x2db9,0x2dba,0x2dbb,0x2dbc, - 0x2dbd,0x2dbe,0x2dc0,0x2dc1,0x2dc2,0x2dc3,0x2dc4,0x2dc5,0x2dc6,0x2dc8, - 0x2dc9,0x2dca,0x2dcb,0x2dcc,0x2dcd,0x2dce,0x2dd0,0x2dd1,0x2dd2,0x2dd3, - 0x2dd4,0x2dd5,0x2dd6,0x2dd8,0x2dd9,0x2dda,0x2ddb,0x2ddc,0x2ddd,0x2dde, - 0x2e16,0x4dc0,0x4dc1,0x4dc2,0x4dc3,0x4dc4,0x4dc5,0x4dc6,0x4dc7,0x4dc8, - 0x4dc9,0x4dca,0x4dcb,0x4dcc,0x4dcd,0x4dce,0x4dcf,0x4dd0,0x4dd1,0x4dd2, - 0x4dd3,0x4dd4,0x4dd5,0x4dd6,0x4dd7,0x4dd8,0x4dd9,0x4dda,0x4ddb,0x4ddc, - 0x4ddd,0x4dde,0x4ddf,0x4de0,0x4de1,0x4de2,0x4de3,0x4de4,0x4de5,0x4de6, - 0x4de7,0x4de8,0x4de9,0x4dea,0x4deb,0x4dec,0x4ded,0x4dee,0x4def,0x4df0, - 0x4df1,0x4df2,0x4df3,0x4df4,0x4df5,0x4df6,0x4df7,0x4df8,0x4df9,0x4dfa, - 0x4dfb,0x4dfc,0x4dfd,0x4dfe,0x4dff,0xa700,0xa701,0xa702,0xa703,0xa704, - 0xa705,0xa706,0xa707,0xa708,0xa709,0xa70a,0xa70b,0xa70c,0xa70d,0xa70e, - 0xa70f,0xa710,0xa711,0xa712,0xa713,0xa714,0xa715,0xa716,0xa717,0xa718, - 0xa719,0xa71a,0xa720,0xa721,0xa800,0xa801,0xa803,0xa804,0xa805,0xa807, - 0xa808,0xa809,0xa80a,0xa80c,0xa80d,0xa80e,0xa80f,0xa810,0xa811,0xa812, - 0xa813,0xa814,0xa815,0xa816,0xa817,0xa818,0xa819,0xa81a,0xa81b,0xa81c, - 0xa81d,0xa81e,0xa81f,0xa820,0xa821,0xa822,0xa828,0xa829,0xa82a,0xa82b, - 0xa840,0xa841,0xa842,0xa843,0xa844,0xa845,0xa846,0xa847,0xa848,0xa849, - 0xa84a,0xa84b,0xa84c,0xa84d,0xa84e,0xa84f,0xa850,0xa851,0xa852,0xa853, - 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,0xfb00,0xfb01,0xfb02,0xfb03,0xfb04,0xfb05,0xfb06,0xfb13, - 0xfb14,0xfb15,0xfb16,0xfb17,0xfb1d,0xfb1f,0xfb20,0xfb21,0xfb22,0xfb23, - 0xfb24,0xfb25,0xfb26,0xfb27,0xfb28,0xfb29,0xfb2a,0xfb2b,0xfb2c,0xfb2d, - 0xfb2e,0xfb2f,0xfb30,0xfb31,0xfb32,0xfb33,0xfb34,0xfb35,0xfb36,0xfb38, - 0xfb39,0xfb3a,0xfb3b,0xfb3c,0xfb3e,0xfb40,0xfb41,0xfb43,0xfb44,0xfb46, - 0xfb47,0xfb48,0xfb49,0xfb4a,0xfb4b,0xfb4c,0xfb4d,0xfb4e,0xfb4f,0xfb50, - 0xfb51,0xfb52,0xfb53,0xfb54,0xfb55,0xfb56,0xfb57,0xfb58,0xfb59,0xfb5a, - 0xfb5b,0xfb5c,0xfb5d,0xfb5e,0xfb5f,0xfb60,0xfb61,0xfb62,0xfb63,0xfb64, - 0xfb65,0xfb66,0xfb67,0xfb68,0xfb69,0xfb6a,0xfb6b,0xfb6c,0xfb6d,0xfb6e, - 0xfb6f,0xfb70,0xfb71,0xfb72,0xfb73,0xfb74,0xfb75,0xfb76,0xfb77,0xfb78, - 0xfb79,0xfb7a,0xfb7b,0xfb7c,0xfb7d,0xfb7e,0xfb7f,0xfb80,0xfb81,0xfb82, - 0xfb83,0xfb84,0xfb85,0xfb86,0xfb87,0xfb88,0xfb89,0xfb8a,0xfb8b,0xfb8c, - 0xfb8d,0xfb8e,0xfb8f,0xfb90,0xfb91,0xfb92,0xfb93,0xfb94,0xfb95,0xfb96, - 0xfb97,0xfb98,0xfb99,0xfb9a,0xfb9b,0xfb9c,0xfb9d,0xfb9e,0xfb9f,0xfba0, - 0xfba1,0xfba2,0xfba3,0xfba4,0xfba5,0xfba6,0xfba7,0xfba8,0xfba9,0xfbaa, - 0xfbab,0xfbac,0xfbad,0xfbae,0xfbaf,0xfbb0,0xfbb1,0xfbd3,0xfbd4,0xfbd5, - 0xfbd6,0xfbd7,0xfbd8,0xfbd9,0xfbda,0xfbdb,0xfbdc,0xfbdd,0xfbde,0xfbdf, - 0xfbe0,0xfbe1,0xfbe2,0xfbe3,0xfbe4,0xfbe5,0xfbe6,0xfbe7,0xfbe8,0xfbe9, - 0xfbea,0xfbeb,0xfbec,0xfbed,0xfbee,0xfbef,0xfbf0,0xfbf1,0xfbf2,0xfbf3, - 0xfbf4,0xfbf5,0xfbf6,0xfbf7,0xfbf8,0xfbf9,0xfbfa,0xfbfb,0xfbfc,0xfbfd, - 0xfbfe,0xfbff,0xfc00,0xfc01,0xfc02,0xfc03,0xfc04,0xfc05,0xfc06,0xfc07, - 0xfc08,0xfc09,0xfc0a,0xfc0b,0xfc0c,0xfc0d,0xfc0e,0xfc0f,0xfc10,0xfc11, - 0xfc12,0xfc13,0xfc14,0xfc15,0xfc16,0xfc17,0xfc18,0xfc19,0xfc1a,0xfc1b, - 0xfc1c,0xfc1d,0xfc1e,0xfc1f,0xfc20,0xfc21,0xfc22,0xfc23,0xfc24,0xfc25, - 0xfc26,0xfc27,0xfc28,0xfc29,0xfc2a,0xfc2b,0xfc2c,0xfc2d,0xfc2e,0xfc2f, - 0xfc30,0xfc31,0xfc32,0xfc33,0xfc34,0xfc35,0xfc36,0xfc37,0xfc38,0xfc39, - 0xfc3a,0xfc3b,0xfc3c,0xfc3d,0xfc3e,0xfc3f,0xfc40,0xfc41,0xfc42,0xfc43, - 0xfc44,0xfc45,0xfc46,0xfc47,0xfc48,0xfc49,0xfc4a,0xfc4b,0xfc4c,0xfc4d, - 0xfc4e,0xfc4f,0xfc50,0xfc51,0xfc52,0xfc53,0xfc54,0xfc55,0xfc56,0xfc57, - 0xfc58,0xfc59,0xfc5a,0xfc5b,0xfc5c,0xfc5d,0xfc5e,0xfc5f,0xfc60,0xfc61, - 0xfc62,0xfc63,0xfc64,0xfc65,0xfc66,0xfc67,0xfc68,0xfc69,0xfc6a,0xfc6b, - 0xfc6c,0xfc6d,0xfc6e,0xfc6f,0xfc70,0xfc71,0xfc72,0xfc73,0xfc74,0xfc75, - 0xfc76,0xfc77,0xfc78,0xfc79,0xfc7a,0xfc7b,0xfc7c,0xfc7d,0xfc7e,0xfc7f, - 0xfc80,0xfc81,0xfc82,0xfc83,0xfc84,0xfc85,0xfc86,0xfc87,0xfc88,0xfc89, - 0xfc8a,0xfc8b,0xfc8c,0xfc8d,0xfc8e,0xfc8f,0xfc90,0xfc91,0xfc92,0xfc93, - 0xfc94,0xfc95,0xfc96,0xfc97,0xfc98,0xfc99,0xfc9a,0xfc9b,0xfc9c,0xfc9d, - 0xfc9e,0xfc9f,0xfca0,0xfca1,0xfca2,0xfca3,0xfca4,0xfca5,0xfca6,0xfca7, - 0xfca8,0xfca9,0xfcaa,0xfcab,0xfcac,0xfcad,0xfcae,0xfcaf,0xfcb0,0xfcb1, - 0xfcb2,0xfcb3,0xfcb4,0xfcb5,0xfcb6,0xfcb7,0xfcb8,0xfcb9,0xfcba,0xfcbb, - 0xfcbc,0xfcbd,0xfcbe,0xfcbf,0xfcc0,0xfcc1,0xfcc2,0xfcc3,0xfcc4,0xfcc5, - 0xfcc6,0xfcc7,0xfcc8,0xfcc9,0xfcca,0xfccb,0xfccc,0xfccd,0xfcce,0xfccf, - 0xfcd0,0xfcd1,0xfcd2,0xfcd3,0xfcd4,0xfcd5,0xfcd6,0xfcd7,0xfcd8,0xfcd9, - 0xfcda,0xfcdb,0xfcdc,0xfcdd,0xfcde,0xfcdf,0xfce0,0xfce1,0xfce2,0xfce3, - 0xfce4,0xfce5,0xfce6,0xfce7,0xfce8,0xfce9,0xfcea,0xfceb,0xfcec,0xfced, - 0xfcee,0xfcef,0xfcf0,0xfcf1,0xfcf2,0xfcf3,0xfcf4,0xfcf5,0xfcf6,0xfcf7, - 0xfcf8,0xfcf9,0xfcfa,0xfcfb,0xfcfc,0xfcfd,0xfcfe,0xfcff,0xfd00,0xfd01, - 0xfd02,0xfd03,0xfd04,0xfd05,0xfd06,0xfd07,0xfd08,0xfd09,0xfd0a,0xfd0b, - 0xfd0c,0xfd0d,0xfd0e,0xfd0f,0xfd10,0xfd11,0xfd12,0xfd13,0xfd14,0xfd15, - 0xfd16,0xfd17,0xfd18,0xfd19,0xfd1a,0xfd1b,0xfd1c,0xfd1d,0xfd1e,0xfd1f, - 0xfd20,0xfd21,0xfd22,0xfd23,0xfd24,0xfd25,0xfd26,0xfd27,0xfd28,0xfd29, - 0xfd2a,0xfd2b,0xfd2c,0xfd2d,0xfd2e,0xfd2f,0xfd30,0xfd31,0xfd32,0xfd33, - 0xfd34,0xfd35,0xfd36,0xfd37,0xfd38,0xfd39,0xfd3a,0xfd3b,0xfd3c,0xfd3d, - 0xfd50,0xfd51,0xfd52,0xfd53,0xfd54,0xfd55,0xfd56,0xfd57,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,0xfd7f,0xfd80,0xfd81, - 0xfd82,0xfd83,0xfd84,0xfd85,0xfd86,0xfd87,0xfd88,0xfd89,0xfd8a,0xfd8b, - 0xfd8c,0xfd8d,0xfd8e,0xfd8f,0xfd92,0xfd93,0xfd94,0xfd95,0xfd96,0xfd97, - 0xfd98,0xfd99,0xfd9a,0xfd9b,0xfd9c,0xfd9d,0xfd9e,0xfd9f,0xfda0,0xfda1, - 0xfda2,0xfda3,0xfda4,0xfda5,0xfda6,0xfda7,0xfda8,0xfda9,0xfdaa,0xfdab, - 0xfdac,0xfdad,0xfdae,0xfdaf,0xfdb0,0xfdb1,0xfdb2,0xfdb3,0xfdb4,0xfdb5, - 0xfdb6,0xfdb7,0xfdb8,0xfdb9,0xfdba,0xfdbb,0xfdbc,0xfdbd,0xfdbe,0xfdbf, - 0xfdc0,0xfdc1,0xfdc2,0xfdc3,0xfdc4,0xfdc5,0xfdc6,0xfdc7,0xfdf0,0xfdf1, - 0xfdf2,0xfdf3,0xfdf4,0xfdf5,0xfdf6,0xfdf7,0xfdf8,0xfdf9,0xfdfa,0xfdfb, - 0xfdfd,0xfe6b,0xfe70,0xfe71,0xfe72,0xfe73,0xfe74,0xfe76,0xfe77,0xfe78, - 0xfe79,0xfe7a,0xfe7b,0xfe7c,0xfe7d,0xfe7e,0xfe7f,0xfe80,0xfe81,0xfe82, - 0xfe83,0xfe84,0xfe85,0xfe86,0xfe87,0xfe88,0xfe89,0xfe8a,0xfe8b,0xfe8c, - 0xfe8d,0xfe8e,0xfe8f,0xfe90,0xfe91,0xfe92,0xfe93,0xfe94,0xfe95,0xfe96, - 0xfe97,0xfe98,0xfe99,0xfe9a,0xfe9b,0xfe9c,0xfe9d,0xfe9e,0xfe9f,0xfea0, - 0xfea1,0xfea2,0xfea3,0xfea4,0xfea5,0xfea6,0xfea7,0xfea8,0xfea9,0xfeaa, - 0xfeab,0xfeac,0xfead,0xfeae,0xfeaf,0xfeb0,0xfeb1,0xfeb2,0xfeb3,0xfeb4, - 0xfeb5,0xfeb6,0xfeb7,0xfeb8,0xfeb9,0xfeba,0xfebb,0xfebc,0xfebd,0xfebe, - 0xfebf,0xfec0,0xfec1,0xfec2,0xfec3,0xfec4,0xfec5,0xfec6,0xfec7,0xfec8, - 0xfec9,0xfeca,0xfecb,0xfecc,0xfecd,0xfece,0xfecf,0xfed0,0xfed1,0xfed2, - 0xfed3,0xfed4,0xfed5,0xfed6,0xfed7,0xfed8,0xfed9,0xfeda,0xfedb,0xfedc, - 0xfedd,0xfede,0xfedf,0xfee0,0xfee1,0xfee2,0xfee3,0xfee4,0xfee5,0xfee6, - 0xfee7,0xfee8,0xfee9,0xfeea,0xfeeb,0xfeec,0xfeed,0xfeee,0xfeef,0xfef0, - 0xfef1,0xfef2,0xfef3,0xfef4,0xfef5,0xfef6,0xfef7,0xfef8,0xfef9,0xfefa, - 0xfefb,0xfefc,0xff66,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,0xffa0,0xffa1, - 0xffa2,0xffa3,0xffa4,0xffa5,0xffa6,0xffa7,0xffa8,0xffa9,0xffaa,0xffab, - 0xffac,0xffad,0xffae,0xffaf,0xffb0,0xffb1,0xffb2,0xffb3,0xffb4,0xffb5, - 0xffb6,0xffb7,0xffb8,0xffb9,0xffba,0xffbb,0xffbc,0xffbd,0xffbe,0xffc2, - 0xffc3,0xffc4,0xffc5,0xffc6,0xffc7,0xffca,0xffcb,0xffcc,0xffcd,0xffce, - 0xffcf,0xffd2,0xffd3,0xffd4,0xffd5,0xffd6,0xffd7,0xffda,0xffdb,0xffdc, - 0xffe8,0xffe9,0xffea,0xffeb,0xffec,0xffed,0xffee,0xd800,0xdc00, - 0xd800,0xdc01,0xd800,0xdc02,0xd800,0xdc03,0xd800,0xdc04,0xd800,0xdc05, - 0xd800,0xdc06,0xd800,0xdc07,0xd800,0xdc08,0xd800,0xdc09,0xd800,0xdc0a, - 0xd800,0xdc0b,0xd800,0xdc0d,0xd800,0xdc0e,0xd800,0xdc0f,0xd800,0xdc10, - 0xd800,0xdc11,0xd800,0xdc12,0xd800,0xdc13,0xd800,0xdc14,0xd800,0xdc15, - 0xd800,0xdc16,0xd800,0xdc17,0xd800,0xdc18,0xd800,0xdc19,0xd800,0xdc1a, - 0xd800,0xdc1b,0xd800,0xdc1c,0xd800,0xdc1d,0xd800,0xdc1e,0xd800,0xdc1f, - 0xd800,0xdc20,0xd800,0xdc21,0xd800,0xdc22,0xd800,0xdc23,0xd800,0xdc24, - 0xd800,0xdc25,0xd800,0xdc26,0xd800,0xdc28,0xd800,0xdc29,0xd800,0xdc2a, - 0xd800,0xdc2b,0xd800,0xdc2c,0xd800,0xdc2d,0xd800,0xdc2e,0xd800,0xdc2f, - 0xd800,0xdc30,0xd800,0xdc31,0xd800,0xdc32,0xd800,0xdc33,0xd800,0xdc34, - 0xd800,0xdc35,0xd800,0xdc36,0xd800,0xdc37,0xd800,0xdc38,0xd800,0xdc39, - 0xd800,0xdc3a,0xd800,0xdc3c,0xd800,0xdc3d,0xd800,0xdc3f,0xd800,0xdc40, - 0xd800,0xdc41,0xd800,0xdc42,0xd800,0xdc43,0xd800,0xdc44,0xd800,0xdc45, - 0xd800,0xdc46,0xd800,0xdc47,0xd800,0xdc48,0xd800,0xdc49,0xd800,0xdc4a, - 0xd800,0xdc4b,0xd800,0xdc4c,0xd800,0xdc4d,0xd800,0xdc50,0xd800,0xdc51, - 0xd800,0xdc52,0xd800,0xdc53,0xd800,0xdc54,0xd800,0xdc55,0xd800,0xdc56, - 0xd800,0xdc57,0xd800,0xdc58,0xd800,0xdc59,0xd800,0xdc5a,0xd800,0xdc5b, - 0xd800,0xdc5c,0xd800,0xdc5d,0xd800,0xdc80,0xd800,0xdc81,0xd800,0xdc82, - 0xd800,0xdc83,0xd800,0xdc84,0xd800,0xdc85,0xd800,0xdc86,0xd800,0xdc87, - 0xd800,0xdc88,0xd800,0xdc89,0xd800,0xdc8a,0xd800,0xdc8b,0xd800,0xdc8c, - 0xd800,0xdc8d,0xd800,0xdc8e,0xd800,0xdc8f,0xd800,0xdc90,0xd800,0xdc91, - 0xd800,0xdc92,0xd800,0xdc93,0xd800,0xdc94,0xd800,0xdc95,0xd800,0xdc96, - 0xd800,0xdc97,0xd800,0xdc98,0xd800,0xdc99,0xd800,0xdc9a,0xd800,0xdc9b, - 0xd800,0xdc9c,0xd800,0xdc9d,0xd800,0xdc9e,0xd800,0xdc9f,0xd800,0xdca0, - 0xd800,0xdca1,0xd800,0xdca2,0xd800,0xdca3,0xd800,0xdca4,0xd800,0xdca5, - 0xd800,0xdca6,0xd800,0xdca7,0xd800,0xdca8,0xd800,0xdca9,0xd800,0xdcaa, - 0xd800,0xdcab,0xd800,0xdcac,0xd800,0xdcad,0xd800,0xdcae,0xd800,0xdcaf, - 0xd800,0xdcb0,0xd800,0xdcb1,0xd800,0xdcb2,0xd800,0xdcb3,0xd800,0xdcb4, - 0xd800,0xdcb5,0xd800,0xdcb6,0xd800,0xdcb7,0xd800,0xdcb8,0xd800,0xdcb9, - 0xd800,0xdcba,0xd800,0xdcbb,0xd800,0xdcbc,0xd800,0xdcbd,0xd800,0xdcbe, - 0xd800,0xdcbf,0xd800,0xdcc0,0xd800,0xdcc1,0xd800,0xdcc2,0xd800,0xdcc3, - 0xd800,0xdcc4,0xd800,0xdcc5,0xd800,0xdcc6,0xd800,0xdcc7,0xd800,0xdcc8, - 0xd800,0xdcc9,0xd800,0xdcca,0xd800,0xdccb,0xd800,0xdccc,0xd800,0xdccd, - 0xd800,0xdcce,0xd800,0xdccf,0xd800,0xdcd0,0xd800,0xdcd1,0xd800,0xdcd2, - 0xd800,0xdcd3,0xd800,0xdcd4,0xd800,0xdcd5,0xd800,0xdcd6,0xd800,0xdcd7, - 0xd800,0xdcd8,0xd800,0xdcd9,0xd800,0xdcda,0xd800,0xdcdb,0xd800,0xdcdc, - 0xd800,0xdcdd,0xd800,0xdcde,0xd800,0xdcdf,0xd800,0xdce0,0xd800,0xdce1, - 0xd800,0xdce2,0xd800,0xdce3,0xd800,0xdce4,0xd800,0xdce5,0xd800,0xdce6, - 0xd800,0xdce7,0xd800,0xdce8,0xd800,0xdce9,0xd800,0xdcea,0xd800,0xdceb, - 0xd800,0xdcec,0xd800,0xdced,0xd800,0xdcee,0xd800,0xdcef,0xd800,0xdcf0, - 0xd800,0xdcf1,0xd800,0xdcf2,0xd800,0xdcf3,0xd800,0xdcf4,0xd800,0xdcf5, - 0xd800,0xdcf6,0xd800,0xdcf7,0xd800,0xdcf8,0xd800,0xdcf9,0xd800,0xdcfa, - 0xd800,0xdd07,0xd800,0xdd08,0xd800,0xdd09,0xd800,0xdd0a,0xd800,0xdd0b, - 0xd800,0xdd0c,0xd800,0xdd0d,0xd800,0xdd0e,0xd800,0xdd0f,0xd800,0xdd10, - 0xd800,0xdd11,0xd800,0xdd12,0xd800,0xdd13,0xd800,0xdd14,0xd800,0xdd15, - 0xd800,0xdd16,0xd800,0xdd17,0xd800,0xdd18,0xd800,0xdd19,0xd800,0xdd1a, - 0xd800,0xdd1b,0xd800,0xdd1c,0xd800,0xdd1d,0xd800,0xdd1e,0xd800,0xdd1f, - 0xd800,0xdd20,0xd800,0xdd21,0xd800,0xdd22,0xd800,0xdd23,0xd800,0xdd24, - 0xd800,0xdd25,0xd800,0xdd26,0xd800,0xdd27,0xd800,0xdd28,0xd800,0xdd29, - 0xd800,0xdd2a,0xd800,0xdd2b,0xd800,0xdd2c,0xd800,0xdd2d,0xd800,0xdd2e, - 0xd800,0xdd2f,0xd800,0xdd30,0xd800,0xdd31,0xd800,0xdd32,0xd800,0xdd33, - 0xd800,0xdd37,0xd800,0xdd38,0xd800,0xdd39,0xd800,0xdd3a,0xd800,0xdd3b, - 0xd800,0xdd3c,0xd800,0xdd3d,0xd800,0xdd3e,0xd800,0xdd3f,0xd800,0xdd40, - 0xd800,0xdd41,0xd800,0xdd42,0xd800,0xdd43,0xd800,0xdd44,0xd800,0xdd45, - 0xd800,0xdd46,0xd800,0xdd47,0xd800,0xdd48,0xd800,0xdd49,0xd800,0xdd4a, - 0xd800,0xdd4b,0xd800,0xdd4c,0xd800,0xdd4d,0xd800,0xdd4e,0xd800,0xdd4f, - 0xd800,0xdd50,0xd800,0xdd51,0xd800,0xdd52,0xd800,0xdd53,0xd800,0xdd54, - 0xd800,0xdd55,0xd800,0xdd56,0xd800,0xdd57,0xd800,0xdd58,0xd800,0xdd59, - 0xd800,0xdd5a,0xd800,0xdd5b,0xd800,0xdd5c,0xd800,0xdd5d,0xd800,0xdd5e, - 0xd800,0xdd5f,0xd800,0xdd60,0xd800,0xdd61,0xd800,0xdd62,0xd800,0xdd63, - 0xd800,0xdd64,0xd800,0xdd65,0xd800,0xdd66,0xd800,0xdd67,0xd800,0xdd68, - 0xd800,0xdd69,0xd800,0xdd6a,0xd800,0xdd6b,0xd800,0xdd6c,0xd800,0xdd6d, - 0xd800,0xdd6e,0xd800,0xdd6f,0xd800,0xdd70,0xd800,0xdd71,0xd800,0xdd72, - 0xd800,0xdd73,0xd800,0xdd74,0xd800,0xdd75,0xd800,0xdd76,0xd800,0xdd77, - 0xd800,0xdd78,0xd800,0xdd79,0xd800,0xdd7a,0xd800,0xdd7b,0xd800,0xdd7c, - 0xd800,0xdd7d,0xd800,0xdd7e,0xd800,0xdd7f,0xd800,0xdd80,0xd800,0xdd81, - 0xd800,0xdd82,0xd800,0xdd83,0xd800,0xdd84,0xd800,0xdd85,0xd800,0xdd86, - 0xd800,0xdd87,0xd800,0xdd88,0xd800,0xdd89,0xd800,0xdd8a,0xd800,0xdf00, - 0xd800,0xdf01,0xd800,0xdf02,0xd800,0xdf03,0xd800,0xdf04,0xd800,0xdf05, - 0xd800,0xdf06,0xd800,0xdf07,0xd800,0xdf08,0xd800,0xdf09,0xd800,0xdf0a, - 0xd800,0xdf0b,0xd800,0xdf0c,0xd800,0xdf0d,0xd800,0xdf0e,0xd800,0xdf0f, - 0xd800,0xdf10,0xd800,0xdf11,0xd800,0xdf12,0xd800,0xdf13,0xd800,0xdf14, - 0xd800,0xdf15,0xd800,0xdf16,0xd800,0xdf17,0xd800,0xdf18,0xd800,0xdf19, - 0xd800,0xdf1a,0xd800,0xdf1b,0xd800,0xdf1c,0xd800,0xdf1d,0xd800,0xdf1e, - 0xd800,0xdf20,0xd800,0xdf21,0xd800,0xdf22,0xd800,0xdf23,0xd800,0xdf30, - 0xd800,0xdf31,0xd800,0xdf32,0xd800,0xdf33,0xd800,0xdf34,0xd800,0xdf35, - 0xd800,0xdf36,0xd800,0xdf37,0xd800,0xdf38,0xd800,0xdf39,0xd800,0xdf3a, - 0xd800,0xdf3b,0xd800,0xdf3c,0xd800,0xdf3d,0xd800,0xdf3e,0xd800,0xdf3f, - 0xd800,0xdf40,0xd800,0xdf41,0xd800,0xdf42,0xd800,0xdf43,0xd800,0xdf44, - 0xd800,0xdf45,0xd800,0xdf46,0xd800,0xdf47,0xd800,0xdf48,0xd800,0xdf49, - 0xd800,0xdf4a,0xd800,0xdf80,0xd800,0xdf81,0xd800,0xdf82,0xd800,0xdf83, - 0xd800,0xdf84,0xd800,0xdf85,0xd800,0xdf86,0xd800,0xdf87,0xd800,0xdf88, - 0xd800,0xdf89,0xd800,0xdf8a,0xd800,0xdf8b,0xd800,0xdf8c,0xd800,0xdf8d, - 0xd800,0xdf8e,0xd800,0xdf8f,0xd800,0xdf90,0xd800,0xdf91,0xd800,0xdf92, - 0xd800,0xdf93,0xd800,0xdf94,0xd800,0xdf95,0xd800,0xdf96,0xd800,0xdf97, - 0xd800,0xdf98,0xd800,0xdf99,0xd800,0xdf9a,0xd800,0xdf9b,0xd800,0xdf9c, - 0xd800,0xdf9d,0xd800,0xdfa0,0xd800,0xdfa1,0xd800,0xdfa2,0xd800,0xdfa3, - 0xd800,0xdfa4,0xd800,0xdfa5,0xd800,0xdfa6,0xd800,0xdfa7,0xd800,0xdfa8, - 0xd800,0xdfa9,0xd800,0xdfaa,0xd800,0xdfab,0xd800,0xdfac,0xd800,0xdfad, - 0xd800,0xdfae,0xd800,0xdfaf,0xd800,0xdfb0,0xd800,0xdfb1,0xd800,0xdfb2, - 0xd800,0xdfb3,0xd800,0xdfb4,0xd800,0xdfb5,0xd800,0xdfb6,0xd800,0xdfb7, - 0xd800,0xdfb8,0xd800,0xdfb9,0xd800,0xdfba,0xd800,0xdfbb,0xd800,0xdfbc, - 0xd800,0xdfbd,0xd800,0xdfbe,0xd800,0xdfbf,0xd800,0xdfc0,0xd800,0xdfc1, - 0xd800,0xdfc2,0xd800,0xdfc3,0xd800,0xdfc8,0xd800,0xdfc9,0xd800,0xdfca, - 0xd800,0xdfcb,0xd800,0xdfcc,0xd800,0xdfcd,0xd800,0xdfce,0xd800,0xdfcf, - 0xd800,0xdfd1,0xd800,0xdfd2,0xd800,0xdfd3,0xd800,0xdfd4,0xd800,0xdfd5, - 0xd801,0xdc00,0xd801,0xdc01,0xd801,0xdc02,0xd801,0xdc03,0xd801,0xdc04, - 0xd801,0xdc05,0xd801,0xdc06,0xd801,0xdc07,0xd801,0xdc08,0xd801,0xdc09, - 0xd801,0xdc0a,0xd801,0xdc0b,0xd801,0xdc0c,0xd801,0xdc0d,0xd801,0xdc0e, - 0xd801,0xdc0f,0xd801,0xdc10,0xd801,0xdc11,0xd801,0xdc12,0xd801,0xdc13, - 0xd801,0xdc14,0xd801,0xdc15,0xd801,0xdc16,0xd801,0xdc17,0xd801,0xdc18, - 0xd801,0xdc19,0xd801,0xdc1a,0xd801,0xdc1b,0xd801,0xdc1c,0xd801,0xdc1d, - 0xd801,0xdc1e,0xd801,0xdc1f,0xd801,0xdc20,0xd801,0xdc21,0xd801,0xdc22, - 0xd801,0xdc23,0xd801,0xdc24,0xd801,0xdc25,0xd801,0xdc26,0xd801,0xdc27, - 0xd801,0xdc28,0xd801,0xdc29,0xd801,0xdc2a,0xd801,0xdc2b,0xd801,0xdc2c, - 0xd801,0xdc2d,0xd801,0xdc2e,0xd801,0xdc2f,0xd801,0xdc30,0xd801,0xdc31, - 0xd801,0xdc32,0xd801,0xdc33,0xd801,0xdc34,0xd801,0xdc35,0xd801,0xdc36, - 0xd801,0xdc37,0xd801,0xdc38,0xd801,0xdc39,0xd801,0xdc3a,0xd801,0xdc3b, - 0xd801,0xdc3c,0xd801,0xdc3d,0xd801,0xdc3e,0xd801,0xdc3f,0xd801,0xdc40, - 0xd801,0xdc41,0xd801,0xdc42,0xd801,0xdc43,0xd801,0xdc44,0xd801,0xdc45, - 0xd801,0xdc46,0xd801,0xdc47,0xd801,0xdc48,0xd801,0xdc49,0xd801,0xdc4a, - 0xd801,0xdc4b,0xd801,0xdc4c,0xd801,0xdc4d,0xd801,0xdc4e,0xd801,0xdc4f, - 0xd801,0xdc50,0xd801,0xdc51,0xd801,0xdc52,0xd801,0xdc53,0xd801,0xdc54, - 0xd801,0xdc55,0xd801,0xdc56,0xd801,0xdc57,0xd801,0xdc58,0xd801,0xdc59, - 0xd801,0xdc5a,0xd801,0xdc5b,0xd801,0xdc5c,0xd801,0xdc5d,0xd801,0xdc5e, - 0xd801,0xdc5f,0xd801,0xdc60,0xd801,0xdc61,0xd801,0xdc62,0xd801,0xdc63, - 0xd801,0xdc64,0xd801,0xdc65,0xd801,0xdc66,0xd801,0xdc67,0xd801,0xdc68, - 0xd801,0xdc69,0xd801,0xdc6a,0xd801,0xdc6b,0xd801,0xdc6c,0xd801,0xdc6d, - 0xd801,0xdc6e,0xd801,0xdc6f,0xd801,0xdc70,0xd801,0xdc71,0xd801,0xdc72, - 0xd801,0xdc73,0xd801,0xdc74,0xd801,0xdc75,0xd801,0xdc76,0xd801,0xdc77, - 0xd801,0xdc78,0xd801,0xdc79,0xd801,0xdc7a,0xd801,0xdc7b,0xd801,0xdc7c, - 0xd801,0xdc7d,0xd801,0xdc7e,0xd801,0xdc7f,0xd801,0xdc80,0xd801,0xdc81, - 0xd801,0xdc82,0xd801,0xdc83,0xd801,0xdc84,0xd801,0xdc85,0xd801,0xdc86, - 0xd801,0xdc87,0xd801,0xdc88,0xd801,0xdc89,0xd801,0xdc8a,0xd801,0xdc8b, - 0xd801,0xdc8c,0xd801,0xdc8d,0xd801,0xdc8e,0xd801,0xdc8f,0xd801,0xdc90, - 0xd801,0xdc91,0xd801,0xdc92,0xd801,0xdc93,0xd801,0xdc94,0xd801,0xdc95, - 0xd801,0xdc96,0xd801,0xdc97,0xd801,0xdc98,0xd801,0xdc99,0xd801,0xdc9a, - 0xd801,0xdc9b,0xd801,0xdc9c,0xd801,0xdc9d,0xd802,0xdc00,0xd802,0xdc01, - 0xd802,0xdc02,0xd802,0xdc03,0xd802,0xdc04,0xd802,0xdc05,0xd802,0xdc08, - 0xd802,0xdc0a,0xd802,0xdc0b,0xd802,0xdc0c,0xd802,0xdc0d,0xd802,0xdc0e, - 0xd802,0xdc0f,0xd802,0xdc10,0xd802,0xdc11,0xd802,0xdc12,0xd802,0xdc13, - 0xd802,0xdc14,0xd802,0xdc15,0xd802,0xdc16,0xd802,0xdc17,0xd802,0xdc18, - 0xd802,0xdc19,0xd802,0xdc1a,0xd802,0xdc1b,0xd802,0xdc1c,0xd802,0xdc1d, - 0xd802,0xdc1e,0xd802,0xdc1f,0xd802,0xdc20,0xd802,0xdc21,0xd802,0xdc22, - 0xd802,0xdc23,0xd802,0xdc24,0xd802,0xdc25,0xd802,0xdc26,0xd802,0xdc27, - 0xd802,0xdc28,0xd802,0xdc29,0xd802,0xdc2a,0xd802,0xdc2b,0xd802,0xdc2c, - 0xd802,0xdc2d,0xd802,0xdc2e,0xd802,0xdc2f,0xd802,0xdc30,0xd802,0xdc31, - 0xd802,0xdc32,0xd802,0xdc33,0xd802,0xdc34,0xd802,0xdc35,0xd802,0xdc37, - 0xd802,0xdc38,0xd802,0xdc3c,0xd802,0xdc3f,0xd802,0xdd00,0xd802,0xdd01, - 0xd802,0xdd02,0xd802,0xdd03,0xd802,0xdd04,0xd802,0xdd05,0xd802,0xdd06, - 0xd802,0xdd07,0xd802,0xdd08,0xd802,0xdd09,0xd802,0xdd0a,0xd802,0xdd0b, - 0xd802,0xdd0c,0xd802,0xdd0d,0xd802,0xdd0e,0xd802,0xdd0f,0xd802,0xdd10, - 0xd802,0xdd11,0xd802,0xdd12,0xd802,0xdd13,0xd802,0xdd14,0xd802,0xdd15, - 0xd802,0xdd16,0xd802,0xdd17,0xd802,0xdd18,0xd802,0xdd19,0xd802,0xde00, - 0xd802,0xde10,0xd802,0xde11,0xd802,0xde12,0xd802,0xde13,0xd802,0xde15, - 0xd802,0xde16,0xd802,0xde17,0xd802,0xde19,0xd802,0xde1a,0xd802,0xde1b, - 0xd802,0xde1c,0xd802,0xde1d,0xd802,0xde1e,0xd802,0xde1f,0xd802,0xde20, - 0xd802,0xde21,0xd802,0xde22,0xd802,0xde23,0xd802,0xde24,0xd802,0xde25, - 0xd802,0xde26,0xd802,0xde27,0xd802,0xde28,0xd802,0xde29,0xd802,0xde2a, - 0xd802,0xde2b,0xd802,0xde2c,0xd802,0xde2d,0xd802,0xde2e,0xd802,0xde2f, - 0xd802,0xde30,0xd802,0xde31,0xd802,0xde32,0xd802,0xde33,0xd802,0xde40, - 0xd802,0xde41,0xd802,0xde42,0xd802,0xde43,0xd802,0xde44,0xd802,0xde45, - 0xd802,0xde46,0xd802,0xde47,0xd802,0xde58,0xd808,0xdc00,0xd808,0xdc01, - 0xd808,0xdc02,0xd808,0xdc03,0xd808,0xdc04,0xd808,0xdc05,0xd808,0xdc06, - 0xd808,0xdc07,0xd808,0xdc08,0xd808,0xdc09,0xd808,0xdc0a,0xd808,0xdc0b, - 0xd808,0xdc0c,0xd808,0xdc0d,0xd808,0xdc0e,0xd808,0xdc0f,0xd808,0xdc10, - 0xd808,0xdc11,0xd808,0xdc12,0xd808,0xdc13,0xd808,0xdc14,0xd808,0xdc15, - 0xd808,0xdc16,0xd808,0xdc17,0xd808,0xdc18,0xd808,0xdc19,0xd808,0xdc1a, - 0xd808,0xdc1b,0xd808,0xdc1c,0xd808,0xdc1d,0xd808,0xdc1e,0xd808,0xdc1f, - 0xd808,0xdc20,0xd808,0xdc21,0xd808,0xdc22,0xd808,0xdc23,0xd808,0xdc24, - 0xd808,0xdc25,0xd808,0xdc26,0xd808,0xdc27,0xd808,0xdc28,0xd808,0xdc29, - 0xd808,0xdc2a,0xd808,0xdc2b,0xd808,0xdc2c,0xd808,0xdc2d,0xd808,0xdc2e, - 0xd808,0xdc2f,0xd808,0xdc30,0xd808,0xdc31,0xd808,0xdc32,0xd808,0xdc33, - 0xd808,0xdc34,0xd808,0xdc35,0xd808,0xdc36,0xd808,0xdc37,0xd808,0xdc38, - 0xd808,0xdc39,0xd808,0xdc3a,0xd808,0xdc3b,0xd808,0xdc3c,0xd808,0xdc3d, - 0xd808,0xdc3e,0xd808,0xdc3f,0xd808,0xdc40,0xd808,0xdc41,0xd808,0xdc42, - 0xd808,0xdc43,0xd808,0xdc44,0xd808,0xdc45,0xd808,0xdc46,0xd808,0xdc47, - 0xd808,0xdc48,0xd808,0xdc49,0xd808,0xdc4a,0xd808,0xdc4b,0xd808,0xdc4c, - 0xd808,0xdc4d,0xd808,0xdc4e,0xd808,0xdc4f,0xd808,0xdc50,0xd808,0xdc51, - 0xd808,0xdc52,0xd808,0xdc53,0xd808,0xdc54,0xd808,0xdc55,0xd808,0xdc56, - 0xd808,0xdc57,0xd808,0xdc58,0xd808,0xdc59,0xd808,0xdc5a,0xd808,0xdc5b, - 0xd808,0xdc5c,0xd808,0xdc5d,0xd808,0xdc5e,0xd808,0xdc5f,0xd808,0xdc60, - 0xd808,0xdc61,0xd808,0xdc62,0xd808,0xdc63,0xd808,0xdc64,0xd808,0xdc65, - 0xd808,0xdc66,0xd808,0xdc67,0xd808,0xdc68,0xd808,0xdc69,0xd808,0xdc6a, - 0xd808,0xdc6b,0xd808,0xdc6c,0xd808,0xdc6d,0xd808,0xdc6e,0xd808,0xdc6f, - 0xd808,0xdc70,0xd808,0xdc71,0xd808,0xdc72,0xd808,0xdc73,0xd808,0xdc74, - 0xd808,0xdc75,0xd808,0xdc76,0xd808,0xdc77,0xd808,0xdc78,0xd808,0xdc79, - 0xd808,0xdc7a,0xd808,0xdc7b,0xd808,0xdc7c,0xd808,0xdc7d,0xd808,0xdc7e, - 0xd808,0xdc7f,0xd808,0xdc80,0xd808,0xdc81,0xd808,0xdc82,0xd808,0xdc83, - 0xd808,0xdc84,0xd808,0xdc85,0xd808,0xdc86,0xd808,0xdc87,0xd808,0xdc88, - 0xd808,0xdc89,0xd808,0xdc8a,0xd808,0xdc8b,0xd808,0xdc8c,0xd808,0xdc8d, - 0xd808,0xdc8e,0xd808,0xdc8f,0xd808,0xdc90,0xd808,0xdc91,0xd808,0xdc92, - 0xd808,0xdc93,0xd808,0xdc94,0xd808,0xdc95,0xd808,0xdc96,0xd808,0xdc97, - 0xd808,0xdc98,0xd808,0xdc99,0xd808,0xdc9a,0xd808,0xdc9b,0xd808,0xdc9c, - 0xd808,0xdc9d,0xd808,0xdc9e,0xd808,0xdc9f,0xd808,0xdca0,0xd808,0xdca1, - 0xd808,0xdca2,0xd808,0xdca3,0xd808,0xdca4,0xd808,0xdca5,0xd808,0xdca6, - 0xd808,0xdca7,0xd808,0xdca8,0xd808,0xdca9,0xd808,0xdcaa,0xd808,0xdcab, - 0xd808,0xdcac,0xd808,0xdcad,0xd808,0xdcae,0xd808,0xdcaf,0xd808,0xdcb0, - 0xd808,0xdcb1,0xd808,0xdcb2,0xd808,0xdcb3,0xd808,0xdcb4,0xd808,0xdcb5, - 0xd808,0xdcb6,0xd808,0xdcb7,0xd808,0xdcb8,0xd808,0xdcb9,0xd808,0xdcba, - 0xd808,0xdcbb,0xd808,0xdcbc,0xd808,0xdcbd,0xd808,0xdcbe,0xd808,0xdcbf, - 0xd808,0xdcc0,0xd808,0xdcc1,0xd808,0xdcc2,0xd808,0xdcc3,0xd808,0xdcc4, - 0xd808,0xdcc5,0xd808,0xdcc6,0xd808,0xdcc7,0xd808,0xdcc8,0xd808,0xdcc9, - 0xd808,0xdcca,0xd808,0xdccb,0xd808,0xdccc,0xd808,0xdccd,0xd808,0xdcce, - 0xd808,0xdccf,0xd808,0xdcd0,0xd808,0xdcd1,0xd808,0xdcd2,0xd808,0xdcd3, - 0xd808,0xdcd4,0xd808,0xdcd5,0xd808,0xdcd6,0xd808,0xdcd7,0xd808,0xdcd8, - 0xd808,0xdcd9,0xd808,0xdcda,0xd808,0xdcdb,0xd808,0xdcdc,0xd808,0xdcdd, - 0xd808,0xdcde,0xd808,0xdcdf,0xd808,0xdce0,0xd808,0xdce1,0xd808,0xdce2, - 0xd808,0xdce3,0xd808,0xdce4,0xd808,0xdce5,0xd808,0xdce6,0xd808,0xdce7, - 0xd808,0xdce8,0xd808,0xdce9,0xd808,0xdcea,0xd808,0xdceb,0xd808,0xdcec, - 0xd808,0xdced,0xd808,0xdcee,0xd808,0xdcef,0xd808,0xdcf0,0xd808,0xdcf1, - 0xd808,0xdcf2,0xd808,0xdcf3,0xd808,0xdcf4,0xd808,0xdcf5,0xd808,0xdcf6, - 0xd808,0xdcf7,0xd808,0xdcf8,0xd808,0xdcf9,0xd808,0xdcfa,0xd808,0xdcfb, - 0xd808,0xdcfc,0xd808,0xdcfd,0xd808,0xdcfe,0xd808,0xdcff,0xd808,0xdd00, - 0xd808,0xdd01,0xd808,0xdd02,0xd808,0xdd03,0xd808,0xdd04,0xd808,0xdd05, - 0xd808,0xdd06,0xd808,0xdd07,0xd808,0xdd08,0xd808,0xdd09,0xd808,0xdd0a, - 0xd808,0xdd0b,0xd808,0xdd0c,0xd808,0xdd0d,0xd808,0xdd0e,0xd808,0xdd0f, - 0xd808,0xdd10,0xd808,0xdd11,0xd808,0xdd12,0xd808,0xdd13,0xd808,0xdd14, - 0xd808,0xdd15,0xd808,0xdd16,0xd808,0xdd17,0xd808,0xdd18,0xd808,0xdd19, - 0xd808,0xdd1a,0xd808,0xdd1b,0xd808,0xdd1c,0xd808,0xdd1d,0xd808,0xdd1e, - 0xd808,0xdd1f,0xd808,0xdd20,0xd808,0xdd21,0xd808,0xdd22,0xd808,0xdd23, - 0xd808,0xdd24,0xd808,0xdd25,0xd808,0xdd26,0xd808,0xdd27,0xd808,0xdd28, - 0xd808,0xdd29,0xd808,0xdd2a,0xd808,0xdd2b,0xd808,0xdd2c,0xd808,0xdd2d, - 0xd808,0xdd2e,0xd808,0xdd2f,0xd808,0xdd30,0xd808,0xdd31,0xd808,0xdd32, - 0xd808,0xdd33,0xd808,0xdd34,0xd808,0xdd35,0xd808,0xdd36,0xd808,0xdd37, - 0xd808,0xdd38,0xd808,0xdd39,0xd808,0xdd3a,0xd808,0xdd3b,0xd808,0xdd3c, - 0xd808,0xdd3d,0xd808,0xdd3e,0xd808,0xdd3f,0xd808,0xdd40,0xd808,0xdd41, - 0xd808,0xdd42,0xd808,0xdd43,0xd808,0xdd44,0xd808,0xdd45,0xd808,0xdd46, - 0xd808,0xdd47,0xd808,0xdd48,0xd808,0xdd49,0xd808,0xdd4a,0xd808,0xdd4b, - 0xd808,0xdd4c,0xd808,0xdd4d,0xd808,0xdd4e,0xd808,0xdd4f,0xd808,0xdd50, - 0xd808,0xdd51,0xd808,0xdd52,0xd808,0xdd53,0xd808,0xdd54,0xd808,0xdd55, - 0xd808,0xdd56,0xd808,0xdd57,0xd808,0xdd58,0xd808,0xdd59,0xd808,0xdd5a, - 0xd808,0xdd5b,0xd808,0xdd5c,0xd808,0xdd5d,0xd808,0xdd5e,0xd808,0xdd5f, - 0xd808,0xdd60,0xd808,0xdd61,0xd808,0xdd62,0xd808,0xdd63,0xd808,0xdd64, - 0xd808,0xdd65,0xd808,0xdd66,0xd808,0xdd67,0xd808,0xdd68,0xd808,0xdd69, - 0xd808,0xdd6a,0xd808,0xdd6b,0xd808,0xdd6c,0xd808,0xdd6d,0xd808,0xdd6e, - 0xd808,0xdd6f,0xd808,0xdd70,0xd808,0xdd71,0xd808,0xdd72,0xd808,0xdd73, - 0xd808,0xdd74,0xd808,0xdd75,0xd808,0xdd76,0xd808,0xdd77,0xd808,0xdd78, - 0xd808,0xdd79,0xd808,0xdd7a,0xd808,0xdd7b,0xd808,0xdd7c,0xd808,0xdd7d, - 0xd808,0xdd7e,0xd808,0xdd7f,0xd808,0xdd80,0xd808,0xdd81,0xd808,0xdd82, - 0xd808,0xdd83,0xd808,0xdd84,0xd808,0xdd85,0xd808,0xdd86,0xd808,0xdd87, - 0xd808,0xdd88,0xd808,0xdd89,0xd808,0xdd8a,0xd808,0xdd8b,0xd808,0xdd8c, - 0xd808,0xdd8d,0xd808,0xdd8e,0xd808,0xdd8f,0xd808,0xdd90,0xd808,0xdd91, - 0xd808,0xdd92,0xd808,0xdd93,0xd808,0xdd94,0xd808,0xdd95,0xd808,0xdd96, - 0xd808,0xdd97,0xd808,0xdd98,0xd808,0xdd99,0xd808,0xdd9a,0xd808,0xdd9b, - 0xd808,0xdd9c,0xd808,0xdd9d,0xd808,0xdd9e,0xd808,0xdd9f,0xd808,0xdda0, - 0xd808,0xdda1,0xd808,0xdda2,0xd808,0xdda3,0xd808,0xdda4,0xd808,0xdda5, - 0xd808,0xdda6,0xd808,0xdda7,0xd808,0xdda8,0xd808,0xdda9,0xd808,0xddaa, - 0xd808,0xddab,0xd808,0xddac,0xd808,0xddad,0xd808,0xddae,0xd808,0xddaf, - 0xd808,0xddb0,0xd808,0xddb1,0xd808,0xddb2,0xd808,0xddb3,0xd808,0xddb4, - 0xd808,0xddb5,0xd808,0xddb6,0xd808,0xddb7,0xd808,0xddb8,0xd808,0xddb9, - 0xd808,0xddba,0xd808,0xddbb,0xd808,0xddbc,0xd808,0xddbd,0xd808,0xddbe, - 0xd808,0xddbf,0xd808,0xddc0,0xd808,0xddc1,0xd808,0xddc2,0xd808,0xddc3, - 0xd808,0xddc4,0xd808,0xddc5,0xd808,0xddc6,0xd808,0xddc7,0xd808,0xddc8, - 0xd808,0xddc9,0xd808,0xddca,0xd808,0xddcb,0xd808,0xddcc,0xd808,0xddcd, - 0xd808,0xddce,0xd808,0xddcf,0xd808,0xddd0,0xd808,0xddd1,0xd808,0xddd2, - 0xd808,0xddd3,0xd808,0xddd4,0xd808,0xddd5,0xd808,0xddd6,0xd808,0xddd7, - 0xd808,0xddd8,0xd808,0xddd9,0xd808,0xddda,0xd808,0xdddb,0xd808,0xdddc, - 0xd808,0xdddd,0xd808,0xddde,0xd808,0xdddf,0xd808,0xdde0,0xd808,0xdde1, - 0xd808,0xdde2,0xd808,0xdde3,0xd808,0xdde4,0xd808,0xdde5,0xd808,0xdde6, - 0xd808,0xdde7,0xd808,0xdde8,0xd808,0xdde9,0xd808,0xddea,0xd808,0xddeb, - 0xd808,0xddec,0xd808,0xdded,0xd808,0xddee,0xd808,0xddef,0xd808,0xddf0, - 0xd808,0xddf1,0xd808,0xddf2,0xd808,0xddf3,0xd808,0xddf4,0xd808,0xddf5, - 0xd808,0xddf6,0xd808,0xddf7,0xd808,0xddf8,0xd808,0xddf9,0xd808,0xddfa, - 0xd808,0xddfb,0xd808,0xddfc,0xd808,0xddfd,0xd808,0xddfe,0xd808,0xddff, - 0xd808,0xde00,0xd808,0xde01,0xd808,0xde02,0xd808,0xde03,0xd808,0xde04, - 0xd808,0xde05,0xd808,0xde06,0xd808,0xde07,0xd808,0xde08,0xd808,0xde09, - 0xd808,0xde0a,0xd808,0xde0b,0xd808,0xde0c,0xd808,0xde0d,0xd808,0xde0e, - 0xd808,0xde0f,0xd808,0xde10,0xd808,0xde11,0xd808,0xde12,0xd808,0xde13, - 0xd808,0xde14,0xd808,0xde15,0xd808,0xde16,0xd808,0xde17,0xd808,0xde18, - 0xd808,0xde19,0xd808,0xde1a,0xd808,0xde1b,0xd808,0xde1c,0xd808,0xde1d, - 0xd808,0xde1e,0xd808,0xde1f,0xd808,0xde20,0xd808,0xde21,0xd808,0xde22, - 0xd808,0xde23,0xd808,0xde24,0xd808,0xde25,0xd808,0xde26,0xd808,0xde27, - 0xd808,0xde28,0xd808,0xde29,0xd808,0xde2a,0xd808,0xde2b,0xd808,0xde2c, - 0xd808,0xde2d,0xd808,0xde2e,0xd808,0xde2f,0xd808,0xde30,0xd808,0xde31, - 0xd808,0xde32,0xd808,0xde33,0xd808,0xde34,0xd808,0xde35,0xd808,0xde36, - 0xd808,0xde37,0xd808,0xde38,0xd808,0xde39,0xd808,0xde3a,0xd808,0xde3b, - 0xd808,0xde3c,0xd808,0xde3d,0xd808,0xde3e,0xd808,0xde3f,0xd808,0xde40, - 0xd808,0xde41,0xd808,0xde42,0xd808,0xde43,0xd808,0xde44,0xd808,0xde45, - 0xd808,0xde46,0xd808,0xde47,0xd808,0xde48,0xd808,0xde49,0xd808,0xde4a, - 0xd808,0xde4b,0xd808,0xde4c,0xd808,0xde4d,0xd808,0xde4e,0xd808,0xde4f, - 0xd808,0xde50,0xd808,0xde51,0xd808,0xde52,0xd808,0xde53,0xd808,0xde54, - 0xd808,0xde55,0xd808,0xde56,0xd808,0xde57,0xd808,0xde58,0xd808,0xde59, - 0xd808,0xde5a,0xd808,0xde5b,0xd808,0xde5c,0xd808,0xde5d,0xd808,0xde5e, - 0xd808,0xde5f,0xd808,0xde60,0xd808,0xde61,0xd808,0xde62,0xd808,0xde63, - 0xd808,0xde64,0xd808,0xde65,0xd808,0xde66,0xd808,0xde67,0xd808,0xde68, - 0xd808,0xde69,0xd808,0xde6a,0xd808,0xde6b,0xd808,0xde6c,0xd808,0xde6d, - 0xd808,0xde6e,0xd808,0xde6f,0xd808,0xde70,0xd808,0xde71,0xd808,0xde72, - 0xd808,0xde73,0xd808,0xde74,0xd808,0xde75,0xd808,0xde76,0xd808,0xde77, - 0xd808,0xde78,0xd808,0xde79,0xd808,0xde7a,0xd808,0xde7b,0xd808,0xde7c, - 0xd808,0xde7d,0xd808,0xde7e,0xd808,0xde7f,0xd808,0xde80,0xd808,0xde81, - 0xd808,0xde82,0xd808,0xde83,0xd808,0xde84,0xd808,0xde85,0xd808,0xde86, - 0xd808,0xde87,0xd808,0xde88,0xd808,0xde89,0xd808,0xde8a,0xd808,0xde8b, - 0xd808,0xde8c,0xd808,0xde8d,0xd808,0xde8e,0xd808,0xde8f,0xd808,0xde90, - 0xd808,0xde91,0xd808,0xde92,0xd808,0xde93,0xd808,0xde94,0xd808,0xde95, - 0xd808,0xde96,0xd808,0xde97,0xd808,0xde98,0xd808,0xde99,0xd808,0xde9a, - 0xd808,0xde9b,0xd808,0xde9c,0xd808,0xde9d,0xd808,0xde9e,0xd808,0xde9f, - 0xd808,0xdea0,0xd808,0xdea1,0xd808,0xdea2,0xd808,0xdea3,0xd808,0xdea4, - 0xd808,0xdea5,0xd808,0xdea6,0xd808,0xdea7,0xd808,0xdea8,0xd808,0xdea9, - 0xd808,0xdeaa,0xd808,0xdeab,0xd808,0xdeac,0xd808,0xdead,0xd808,0xdeae, - 0xd808,0xdeaf,0xd808,0xdeb0,0xd808,0xdeb1,0xd808,0xdeb2,0xd808,0xdeb3, - 0xd808,0xdeb4,0xd808,0xdeb5,0xd808,0xdeb6,0xd808,0xdeb7,0xd808,0xdeb8, - 0xd808,0xdeb9,0xd808,0xdeba,0xd808,0xdebb,0xd808,0xdebc,0xd808,0xdebd, - 0xd808,0xdebe,0xd808,0xdebf,0xd808,0xdec0,0xd808,0xdec1,0xd808,0xdec2, - 0xd808,0xdec3,0xd808,0xdec4,0xd808,0xdec5,0xd808,0xdec6,0xd808,0xdec7, - 0xd808,0xdec8,0xd808,0xdec9,0xd808,0xdeca,0xd808,0xdecb,0xd808,0xdecc, - 0xd808,0xdecd,0xd808,0xdece,0xd808,0xdecf,0xd808,0xded0,0xd808,0xded1, - 0xd808,0xded2,0xd808,0xded3,0xd808,0xded4,0xd808,0xded5,0xd808,0xded6, - 0xd808,0xded7,0xd808,0xded8,0xd808,0xded9,0xd808,0xdeda,0xd808,0xdedb, - 0xd808,0xdedc,0xd808,0xdedd,0xd808,0xdede,0xd808,0xdedf,0xd808,0xdee0, - 0xd808,0xdee1,0xd808,0xdee2,0xd808,0xdee3,0xd808,0xdee4,0xd808,0xdee5, - 0xd808,0xdee6,0xd808,0xdee7,0xd808,0xdee8,0xd808,0xdee9,0xd808,0xdeea, - 0xd808,0xdeeb,0xd808,0xdeec,0xd808,0xdeed,0xd808,0xdeee,0xd808,0xdeef, - 0xd808,0xdef0,0xd808,0xdef1,0xd808,0xdef2,0xd808,0xdef3,0xd808,0xdef4, - 0xd808,0xdef5,0xd808,0xdef6,0xd808,0xdef7,0xd808,0xdef8,0xd808,0xdef9, - 0xd808,0xdefa,0xd808,0xdefb,0xd808,0xdefc,0xd808,0xdefd,0xd808,0xdefe, - 0xd808,0xdeff,0xd808,0xdf00,0xd808,0xdf01,0xd808,0xdf02,0xd808,0xdf03, - 0xd808,0xdf04,0xd808,0xdf05,0xd808,0xdf06,0xd808,0xdf07,0xd808,0xdf08, - 0xd808,0xdf09,0xd808,0xdf0a,0xd808,0xdf0b,0xd808,0xdf0c,0xd808,0xdf0d, - 0xd808,0xdf0e,0xd808,0xdf0f,0xd808,0xdf10,0xd808,0xdf11,0xd808,0xdf12, - 0xd808,0xdf13,0xd808,0xdf14,0xd808,0xdf15,0xd808,0xdf16,0xd808,0xdf17, - 0xd808,0xdf18,0xd808,0xdf19,0xd808,0xdf1a,0xd808,0xdf1b,0xd808,0xdf1c, - 0xd808,0xdf1d,0xd808,0xdf1e,0xd808,0xdf1f,0xd808,0xdf20,0xd808,0xdf21, - 0xd808,0xdf22,0xd808,0xdf23,0xd808,0xdf24,0xd808,0xdf25,0xd808,0xdf26, - 0xd808,0xdf27,0xd808,0xdf28,0xd808,0xdf29,0xd808,0xdf2a,0xd808,0xdf2b, - 0xd808,0xdf2c,0xd808,0xdf2d,0xd808,0xdf2e,0xd808,0xdf2f,0xd808,0xdf30, - 0xd808,0xdf31,0xd808,0xdf32,0xd808,0xdf33,0xd808,0xdf34,0xd808,0xdf35, - 0xd808,0xdf36,0xd808,0xdf37,0xd808,0xdf38,0xd808,0xdf39,0xd808,0xdf3a, - 0xd808,0xdf3b,0xd808,0xdf3c,0xd808,0xdf3d,0xd808,0xdf3e,0xd808,0xdf3f, - 0xd808,0xdf40,0xd808,0xdf41,0xd808,0xdf42,0xd808,0xdf43,0xd808,0xdf44, - 0xd808,0xdf45,0xd808,0xdf46,0xd808,0xdf47,0xd808,0xdf48,0xd808,0xdf49, - 0xd808,0xdf4a,0xd808,0xdf4b,0xd808,0xdf4c,0xd808,0xdf4d,0xd808,0xdf4e, - 0xd808,0xdf4f,0xd808,0xdf50,0xd808,0xdf51,0xd808,0xdf52,0xd808,0xdf53, - 0xd808,0xdf54,0xd808,0xdf55,0xd808,0xdf56,0xd808,0xdf57,0xd808,0xdf58, - 0xd808,0xdf59,0xd808,0xdf5a,0xd808,0xdf5b,0xd808,0xdf5c,0xd808,0xdf5d, - 0xd808,0xdf5e,0xd808,0xdf5f,0xd808,0xdf60,0xd808,0xdf61,0xd808,0xdf62, - 0xd808,0xdf63,0xd808,0xdf64,0xd808,0xdf65,0xd808,0xdf66,0xd808,0xdf67, - 0xd808,0xdf68,0xd808,0xdf69,0xd808,0xdf6a,0xd808,0xdf6b,0xd808,0xdf6c, - 0xd808,0xdf6d,0xd808,0xdf6e,0xd809,0xdc00,0xd809,0xdc01,0xd809,0xdc02, - 0xd809,0xdc03,0xd809,0xdc04,0xd809,0xdc05,0xd809,0xdc06,0xd809,0xdc07, - 0xd809,0xdc08,0xd809,0xdc09,0xd809,0xdc0a,0xd809,0xdc0b,0xd809,0xdc0c, - 0xd809,0xdc0d,0xd809,0xdc0e,0xd809,0xdc0f,0xd809,0xdc10,0xd809,0xdc11, - 0xd809,0xdc12,0xd809,0xdc13,0xd809,0xdc14,0xd809,0xdc15,0xd809,0xdc16, - 0xd809,0xdc17,0xd809,0xdc18,0xd809,0xdc19,0xd809,0xdc1a,0xd809,0xdc1b, - 0xd809,0xdc1c,0xd809,0xdc1d,0xd809,0xdc1e,0xd809,0xdc1f,0xd809,0xdc20, - 0xd809,0xdc21,0xd809,0xdc22,0xd809,0xdc23,0xd809,0xdc24,0xd809,0xdc25, - 0xd809,0xdc26,0xd809,0xdc27,0xd809,0xdc28,0xd809,0xdc29,0xd809,0xdc2a, - 0xd809,0xdc2b,0xd809,0xdc2c,0xd809,0xdc2d,0xd809,0xdc2e,0xd809,0xdc2f, - 0xd809,0xdc30,0xd809,0xdc31,0xd809,0xdc32,0xd809,0xdc33,0xd809,0xdc34, - 0xd809,0xdc35,0xd809,0xdc36,0xd809,0xdc37,0xd809,0xdc38,0xd809,0xdc39, - 0xd809,0xdc3a,0xd809,0xdc3b,0xd809,0xdc3c,0xd809,0xdc3d,0xd809,0xdc3e, - 0xd809,0xdc3f,0xd809,0xdc40,0xd809,0xdc41,0xd809,0xdc42,0xd809,0xdc43, - 0xd809,0xdc44,0xd809,0xdc45,0xd809,0xdc46,0xd809,0xdc47,0xd809,0xdc48, - 0xd809,0xdc49,0xd809,0xdc4a,0xd809,0xdc4b,0xd809,0xdc4c,0xd809,0xdc4d, - 0xd809,0xdc4e,0xd809,0xdc4f,0xd809,0xdc50,0xd809,0xdc51,0xd809,0xdc52, - 0xd809,0xdc53,0xd809,0xdc54,0xd809,0xdc55,0xd809,0xdc56,0xd809,0xdc57, - 0xd809,0xdc58,0xd809,0xdc59,0xd809,0xdc5a,0xd809,0xdc5b,0xd809,0xdc5c, - 0xd809,0xdc5d,0xd809,0xdc5e,0xd809,0xdc5f,0xd809,0xdc60,0xd809,0xdc61, - 0xd809,0xdc62,0xd834,0xdc00,0xd834,0xdc01,0xd834,0xdc02,0xd834,0xdc03, - 0xd834,0xdc04,0xd834,0xdc05,0xd834,0xdc06,0xd834,0xdc07,0xd834,0xdc08, - 0xd834,0xdc09,0xd834,0xdc0a,0xd834,0xdc0b,0xd834,0xdc0c,0xd834,0xdc0d, - 0xd834,0xdc0e,0xd834,0xdc0f,0xd834,0xdc10,0xd834,0xdc11,0xd834,0xdc12, - 0xd834,0xdc13,0xd834,0xdc14,0xd834,0xdc15,0xd834,0xdc16,0xd834,0xdc17, - 0xd834,0xdc18,0xd834,0xdc19,0xd834,0xdc1a,0xd834,0xdc1b,0xd834,0xdc1c, - 0xd834,0xdc1d,0xd834,0xdc1e,0xd834,0xdc1f,0xd834,0xdc20,0xd834,0xdc21, - 0xd834,0xdc22,0xd834,0xdc23,0xd834,0xdc24,0xd834,0xdc25,0xd834,0xdc26, - 0xd834,0xdc27,0xd834,0xdc28,0xd834,0xdc29,0xd834,0xdc2a,0xd834,0xdc2b, - 0xd834,0xdc2c,0xd834,0xdc2d,0xd834,0xdc2e,0xd834,0xdc2f,0xd834,0xdc30, - 0xd834,0xdc31,0xd834,0xdc32,0xd834,0xdc33,0xd834,0xdc34,0xd834,0xdc35, - 0xd834,0xdc36,0xd834,0xdc37,0xd834,0xdc38,0xd834,0xdc39,0xd834,0xdc3a, - 0xd834,0xdc3b,0xd834,0xdc3c,0xd834,0xdc3d,0xd834,0xdc3e,0xd834,0xdc3f, - 0xd834,0xdc40,0xd834,0xdc41,0xd834,0xdc42,0xd834,0xdc43,0xd834,0xdc44, - 0xd834,0xdc45,0xd834,0xdc46,0xd834,0xdc47,0xd834,0xdc48,0xd834,0xdc49, - 0xd834,0xdc4a,0xd834,0xdc4b,0xd834,0xdc4c,0xd834,0xdc4d,0xd834,0xdc4e, - 0xd834,0xdc4f,0xd834,0xdc50,0xd834,0xdc51,0xd834,0xdc52,0xd834,0xdc53, - 0xd834,0xdc54,0xd834,0xdc55,0xd834,0xdc56,0xd834,0xdc57,0xd834,0xdc58, - 0xd834,0xdc59,0xd834,0xdc5a,0xd834,0xdc5b,0xd834,0xdc5c,0xd834,0xdc5d, - 0xd834,0xdc5e,0xd834,0xdc5f,0xd834,0xdc60,0xd834,0xdc61,0xd834,0xdc62, - 0xd834,0xdc63,0xd834,0xdc64,0xd834,0xdc65,0xd834,0xdc66,0xd834,0xdc67, - 0xd834,0xdc68,0xd834,0xdc69,0xd834,0xdc6a,0xd834,0xdc6b,0xd834,0xdc6c, - 0xd834,0xdc6d,0xd834,0xdc6e,0xd834,0xdc6f,0xd834,0xdc70,0xd834,0xdc71, - 0xd834,0xdc72,0xd834,0xdc73,0xd834,0xdc74,0xd834,0xdc75,0xd834,0xdc76, - 0xd834,0xdc77,0xd834,0xdc78,0xd834,0xdc79,0xd834,0xdc7a,0xd834,0xdc7b, - 0xd834,0xdc7c,0xd834,0xdc7d,0xd834,0xdc7e,0xd834,0xdc7f,0xd834,0xdc80, - 0xd834,0xdc81,0xd834,0xdc82,0xd834,0xdc83,0xd834,0xdc84,0xd834,0xdc85, - 0xd834,0xdc86,0xd834,0xdc87,0xd834,0xdc88,0xd834,0xdc89,0xd834,0xdc8a, - 0xd834,0xdc8b,0xd834,0xdc8c,0xd834,0xdc8d,0xd834,0xdc8e,0xd834,0xdc8f, - 0xd834,0xdc90,0xd834,0xdc91,0xd834,0xdc92,0xd834,0xdc93,0xd834,0xdc94, - 0xd834,0xdc95,0xd834,0xdc96,0xd834,0xdc97,0xd834,0xdc98,0xd834,0xdc99, - 0xd834,0xdc9a,0xd834,0xdc9b,0xd834,0xdc9c,0xd834,0xdc9d,0xd834,0xdc9e, - 0xd834,0xdc9f,0xd834,0xdca0,0xd834,0xdca1,0xd834,0xdca2,0xd834,0xdca3, - 0xd834,0xdca4,0xd834,0xdca5,0xd834,0xdca6,0xd834,0xdca7,0xd834,0xdca8, - 0xd834,0xdca9,0xd834,0xdcaa,0xd834,0xdcab,0xd834,0xdcac,0xd834,0xdcad, - 0xd834,0xdcae,0xd834,0xdcaf,0xd834,0xdcb0,0xd834,0xdcb1,0xd834,0xdcb2, - 0xd834,0xdcb3,0xd834,0xdcb4,0xd834,0xdcb5,0xd834,0xdcb6,0xd834,0xdcb7, - 0xd834,0xdcb8,0xd834,0xdcb9,0xd834,0xdcba,0xd834,0xdcbb,0xd834,0xdcbc, - 0xd834,0xdcbd,0xd834,0xdcbe,0xd834,0xdcbf,0xd834,0xdcc0,0xd834,0xdcc1, - 0xd834,0xdcc2,0xd834,0xdcc3,0xd834,0xdcc4,0xd834,0xdcc5,0xd834,0xdcc6, - 0xd834,0xdcc7,0xd834,0xdcc8,0xd834,0xdcc9,0xd834,0xdcca,0xd834,0xdccb, - 0xd834,0xdccc,0xd834,0xdccd,0xd834,0xdcce,0xd834,0xdccf,0xd834,0xdcd0, - 0xd834,0xdcd1,0xd834,0xdcd2,0xd834,0xdcd3,0xd834,0xdcd4,0xd834,0xdcd5, - 0xd834,0xdcd6,0xd834,0xdcd7,0xd834,0xdcd8,0xd834,0xdcd9,0xd834,0xdcda, - 0xd834,0xdcdb,0xd834,0xdcdc,0xd834,0xdcdd,0xd834,0xdcde,0xd834,0xdcdf, - 0xd834,0xdce0,0xd834,0xdce1,0xd834,0xdce2,0xd834,0xdce3,0xd834,0xdce4, - 0xd834,0xdce5,0xd834,0xdce6,0xd834,0xdce7,0xd834,0xdce8,0xd834,0xdce9, - 0xd834,0xdcea,0xd834,0xdceb,0xd834,0xdcec,0xd834,0xdced,0xd834,0xdcee, - 0xd834,0xdcef,0xd834,0xdcf0,0xd834,0xdcf1,0xd834,0xdcf2,0xd834,0xdcf3, - 0xd834,0xdcf4,0xd834,0xdcf5,0xd834,0xdd00,0xd834,0xdd01,0xd834,0xdd02, - 0xd834,0xdd03,0xd834,0xdd04,0xd834,0xdd05,0xd834,0xdd06,0xd834,0xdd07, - 0xd834,0xdd08,0xd834,0xdd09,0xd834,0xdd0a,0xd834,0xdd0b,0xd834,0xdd0c, - 0xd834,0xdd0d,0xd834,0xdd0e,0xd834,0xdd0f,0xd834,0xdd10,0xd834,0xdd11, - 0xd834,0xdd12,0xd834,0xdd13,0xd834,0xdd14,0xd834,0xdd15,0xd834,0xdd16, - 0xd834,0xdd17,0xd834,0xdd18,0xd834,0xdd19,0xd834,0xdd1a,0xd834,0xdd1b, - 0xd834,0xdd1c,0xd834,0xdd1d,0xd834,0xdd1e,0xd834,0xdd1f,0xd834,0xdd20, - 0xd834,0xdd21,0xd834,0xdd22,0xd834,0xdd23,0xd834,0xdd24,0xd834,0xdd25, - 0xd834,0xdd26,0xd834,0xdd2a,0xd834,0xdd2b,0xd834,0xdd2c,0xd834,0xdd2d, - 0xd834,0xdd2e,0xd834,0xdd2f,0xd834,0xdd30,0xd834,0xdd31,0xd834,0xdd32, - 0xd834,0xdd33,0xd834,0xdd34,0xd834,0xdd35,0xd834,0xdd36,0xd834,0xdd37, - 0xd834,0xdd38,0xd834,0xdd39,0xd834,0xdd3a,0xd834,0xdd3b,0xd834,0xdd3c, - 0xd834,0xdd3d,0xd834,0xdd3e,0xd834,0xdd3f,0xd834,0xdd40,0xd834,0xdd41, - 0xd834,0xdd42,0xd834,0xdd43,0xd834,0xdd44,0xd834,0xdd45,0xd834,0xdd46, - 0xd834,0xdd47,0xd834,0xdd48,0xd834,0xdd49,0xd834,0xdd4a,0xd834,0xdd4b, - 0xd834,0xdd4c,0xd834,0xdd4d,0xd834,0xdd4e,0xd834,0xdd4f,0xd834,0xdd50, - 0xd834,0xdd51,0xd834,0xdd52,0xd834,0xdd53,0xd834,0xdd54,0xd834,0xdd55, - 0xd834,0xdd56,0xd834,0xdd57,0xd834,0xdd58,0xd834,0xdd59,0xd834,0xdd5a, - 0xd834,0xdd5b,0xd834,0xdd5c,0xd834,0xdd5d,0xd834,0xdd5e,0xd834,0xdd5f, - 0xd834,0xdd60,0xd834,0xdd61,0xd834,0xdd62,0xd834,0xdd63,0xd834,0xdd64, - 0xd834,0xdd6a,0xd834,0xdd6b,0xd834,0xdd6c,0xd834,0xdd83,0xd834,0xdd84, - 0xd834,0xdd8c,0xd834,0xdd8d,0xd834,0xdd8e,0xd834,0xdd8f,0xd834,0xdd90, - 0xd834,0xdd91,0xd834,0xdd92,0xd834,0xdd93,0xd834,0xdd94,0xd834,0xdd95, - 0xd834,0xdd96,0xd834,0xdd97,0xd834,0xdd98,0xd834,0xdd99,0xd834,0xdd9a, - 0xd834,0xdd9b,0xd834,0xdd9c,0xd834,0xdd9d,0xd834,0xdd9e,0xd834,0xdd9f, - 0xd834,0xdda0,0xd834,0xdda1,0xd834,0xdda2,0xd834,0xdda3,0xd834,0xdda4, - 0xd834,0xdda5,0xd834,0xdda6,0xd834,0xdda7,0xd834,0xdda8,0xd834,0xdda9, - 0xd834,0xddae,0xd834,0xddaf,0xd834,0xddb0,0xd834,0xddb1,0xd834,0xddb2, - 0xd834,0xddb3,0xd834,0xddb4,0xd834,0xddb5,0xd834,0xddb6,0xd834,0xddb7, - 0xd834,0xddb8,0xd834,0xddb9,0xd834,0xddba,0xd834,0xddbb,0xd834,0xddbc, - 0xd834,0xddbd,0xd834,0xddbe,0xd834,0xddbf,0xd834,0xddc0,0xd834,0xddc1, - 0xd834,0xddc2,0xd834,0xddc3,0xd834,0xddc4,0xd834,0xddc5,0xd834,0xddc6, - 0xd834,0xddc7,0xd834,0xddc8,0xd834,0xddc9,0xd834,0xddca,0xd834,0xddcb, - 0xd834,0xddcc,0xd834,0xddcd,0xd834,0xddce,0xd834,0xddcf,0xd834,0xddd0, - 0xd834,0xddd1,0xd834,0xddd2,0xd834,0xddd3,0xd834,0xddd4,0xd834,0xddd5, - 0xd834,0xddd6,0xd834,0xddd7,0xd834,0xddd8,0xd834,0xddd9,0xd834,0xddda, - 0xd834,0xdddb,0xd834,0xdddc,0xd834,0xdddd,0xd834,0xde00,0xd834,0xde01, - 0xd834,0xde02,0xd834,0xde03,0xd834,0xde04,0xd834,0xde05,0xd834,0xde06, - 0xd834,0xde07,0xd834,0xde08,0xd834,0xde09,0xd834,0xde0a,0xd834,0xde0b, - 0xd834,0xde0c,0xd834,0xde0d,0xd834,0xde0e,0xd834,0xde0f,0xd834,0xde10, - 0xd834,0xde11,0xd834,0xde12,0xd834,0xde13,0xd834,0xde14,0xd834,0xde15, - 0xd834,0xde16,0xd834,0xde17,0xd834,0xde18,0xd834,0xde19,0xd834,0xde1a, - 0xd834,0xde1b,0xd834,0xde1c,0xd834,0xde1d,0xd834,0xde1e,0xd834,0xde1f, - 0xd834,0xde20,0xd834,0xde21,0xd834,0xde22,0xd834,0xde23,0xd834,0xde24, - 0xd834,0xde25,0xd834,0xde26,0xd834,0xde27,0xd834,0xde28,0xd834,0xde29, - 0xd834,0xde2a,0xd834,0xde2b,0xd834,0xde2c,0xd834,0xde2d,0xd834,0xde2e, - 0xd834,0xde2f,0xd834,0xde30,0xd834,0xde31,0xd834,0xde32,0xd834,0xde33, - 0xd834,0xde34,0xd834,0xde35,0xd834,0xde36,0xd834,0xde37,0xd834,0xde38, - 0xd834,0xde39,0xd834,0xde3a,0xd834,0xde3b,0xd834,0xde3c,0xd834,0xde3d, - 0xd834,0xde3e,0xd834,0xde3f,0xd834,0xde40,0xd834,0xde41,0xd834,0xde45, - 0xd834,0xdf00,0xd834,0xdf01,0xd834,0xdf02,0xd834,0xdf03,0xd834,0xdf04, - 0xd834,0xdf05,0xd834,0xdf06,0xd834,0xdf07,0xd834,0xdf08,0xd834,0xdf09, - 0xd834,0xdf0a,0xd834,0xdf0b,0xd834,0xdf0c,0xd834,0xdf0d,0xd834,0xdf0e, - 0xd834,0xdf0f,0xd834,0xdf10,0xd834,0xdf11,0xd834,0xdf12,0xd834,0xdf13, - 0xd834,0xdf14,0xd834,0xdf15,0xd834,0xdf16,0xd834,0xdf17,0xd834,0xdf18, - 0xd834,0xdf19,0xd834,0xdf1a,0xd834,0xdf1b,0xd834,0xdf1c,0xd834,0xdf1d, - 0xd834,0xdf1e,0xd834,0xdf1f,0xd834,0xdf20,0xd834,0xdf21,0xd834,0xdf22, - 0xd834,0xdf23,0xd834,0xdf24,0xd834,0xdf25,0xd834,0xdf26,0xd834,0xdf27, - 0xd834,0xdf28,0xd834,0xdf29,0xd834,0xdf2a,0xd834,0xdf2b,0xd834,0xdf2c, - 0xd834,0xdf2d,0xd834,0xdf2e,0xd834,0xdf2f,0xd834,0xdf30,0xd834,0xdf31, - 0xd834,0xdf32,0xd834,0xdf33,0xd834,0xdf34,0xd834,0xdf35,0xd834,0xdf36, - 0xd834,0xdf37,0xd834,0xdf38,0xd834,0xdf39,0xd834,0xdf3a,0xd834,0xdf3b, - 0xd834,0xdf3c,0xd834,0xdf3d,0xd834,0xdf3e,0xd834,0xdf3f,0xd834,0xdf40, - 0xd834,0xdf41,0xd834,0xdf42,0xd834,0xdf43,0xd834,0xdf44,0xd834,0xdf45, - 0xd834,0xdf46,0xd834,0xdf47,0xd834,0xdf48,0xd834,0xdf49,0xd834,0xdf4a, - 0xd834,0xdf4b,0xd834,0xdf4c,0xd834,0xdf4d,0xd834,0xdf4e,0xd834,0xdf4f, - 0xd834,0xdf50,0xd834,0xdf51,0xd834,0xdf52,0xd834,0xdf53,0xd834,0xdf54, - 0xd834,0xdf55,0xd834,0xdf56,0xd834,0xdf60,0xd834,0xdf61,0xd834,0xdf62, - 0xd834,0xdf63,0xd834,0xdf64,0xd834,0xdf65,0xd834,0xdf66,0xd834,0xdf67, - 0xd834,0xdf68,0xd834,0xdf69,0xd834,0xdf6a,0xd834,0xdf6b,0xd834,0xdf6c, - 0xd834,0xdf6d,0xd834,0xdf6e,0xd834,0xdf6f,0xd834,0xdf70,0xd834,0xdf71, - 0xd835,0xdc00,0xd835,0xdc01,0xd835,0xdc02,0xd835,0xdc03,0xd835,0xdc04, - 0xd835,0xdc05,0xd835,0xdc06,0xd835,0xdc07,0xd835,0xdc08,0xd835,0xdc09, - 0xd835,0xdc0a,0xd835,0xdc0b,0xd835,0xdc0c,0xd835,0xdc0d,0xd835,0xdc0e, - 0xd835,0xdc0f,0xd835,0xdc10,0xd835,0xdc11,0xd835,0xdc12,0xd835,0xdc13, - 0xd835,0xdc14,0xd835,0xdc15,0xd835,0xdc16,0xd835,0xdc17,0xd835,0xdc18, - 0xd835,0xdc19,0xd835,0xdc1a,0xd835,0xdc1b,0xd835,0xdc1c,0xd835,0xdc1d, - 0xd835,0xdc1e,0xd835,0xdc1f,0xd835,0xdc20,0xd835,0xdc21,0xd835,0xdc22, - 0xd835,0xdc23,0xd835,0xdc24,0xd835,0xdc25,0xd835,0xdc26,0xd835,0xdc27, - 0xd835,0xdc28,0xd835,0xdc29,0xd835,0xdc2a,0xd835,0xdc2b,0xd835,0xdc2c, - 0xd835,0xdc2d,0xd835,0xdc2e,0xd835,0xdc2f,0xd835,0xdc30,0xd835,0xdc31, - 0xd835,0xdc32,0xd835,0xdc33,0xd835,0xdc34,0xd835,0xdc35,0xd835,0xdc36, - 0xd835,0xdc37,0xd835,0xdc38,0xd835,0xdc39,0xd835,0xdc3a,0xd835,0xdc3b, - 0xd835,0xdc3c,0xd835,0xdc3d,0xd835,0xdc3e,0xd835,0xdc3f,0xd835,0xdc40, - 0xd835,0xdc41,0xd835,0xdc42,0xd835,0xdc43,0xd835,0xdc44,0xd835,0xdc45, - 0xd835,0xdc46,0xd835,0xdc47,0xd835,0xdc48,0xd835,0xdc49,0xd835,0xdc4a, - 0xd835,0xdc4b,0xd835,0xdc4c,0xd835,0xdc4d,0xd835,0xdc4e,0xd835,0xdc4f, - 0xd835,0xdc50,0xd835,0xdc51,0xd835,0xdc52,0xd835,0xdc53,0xd835,0xdc54, - 0xd835,0xdc56,0xd835,0xdc57,0xd835,0xdc58,0xd835,0xdc59,0xd835,0xdc5a, - 0xd835,0xdc5b,0xd835,0xdc5c,0xd835,0xdc5d,0xd835,0xdc5e,0xd835,0xdc5f, - 0xd835,0xdc60,0xd835,0xdc61,0xd835,0xdc62,0xd835,0xdc63,0xd835,0xdc64, - 0xd835,0xdc65,0xd835,0xdc66,0xd835,0xdc67,0xd835,0xdc68,0xd835,0xdc69, - 0xd835,0xdc6a,0xd835,0xdc6b,0xd835,0xdc6c,0xd835,0xdc6d,0xd835,0xdc6e, - 0xd835,0xdc6f,0xd835,0xdc70,0xd835,0xdc71,0xd835,0xdc72,0xd835,0xdc73, - 0xd835,0xdc74,0xd835,0xdc75,0xd835,0xdc76,0xd835,0xdc77,0xd835,0xdc78, - 0xd835,0xdc79,0xd835,0xdc7a,0xd835,0xdc7b,0xd835,0xdc7c,0xd835,0xdc7d, - 0xd835,0xdc7e,0xd835,0xdc7f,0xd835,0xdc80,0xd835,0xdc81,0xd835,0xdc82, - 0xd835,0xdc83,0xd835,0xdc84,0xd835,0xdc85,0xd835,0xdc86,0xd835,0xdc87, - 0xd835,0xdc88,0xd835,0xdc89,0xd835,0xdc8a,0xd835,0xdc8b,0xd835,0xdc8c, - 0xd835,0xdc8d,0xd835,0xdc8e,0xd835,0xdc8f,0xd835,0xdc90,0xd835,0xdc91, - 0xd835,0xdc92,0xd835,0xdc93,0xd835,0xdc94,0xd835,0xdc95,0xd835,0xdc96, - 0xd835,0xdc97,0xd835,0xdc98,0xd835,0xdc99,0xd835,0xdc9a,0xd835,0xdc9b, - 0xd835,0xdc9c,0xd835,0xdc9e,0xd835,0xdc9f,0xd835,0xdca2,0xd835,0xdca5, - 0xd835,0xdca6,0xd835,0xdca9,0xd835,0xdcaa,0xd835,0xdcab,0xd835,0xdcac, - 0xd835,0xdcae,0xd835,0xdcaf,0xd835,0xdcb0,0xd835,0xdcb1,0xd835,0xdcb2, - 0xd835,0xdcb3,0xd835,0xdcb4,0xd835,0xdcb5,0xd835,0xdcb6,0xd835,0xdcb7, - 0xd835,0xdcb8,0xd835,0xdcb9,0xd835,0xdcbb,0xd835,0xdcbd,0xd835,0xdcbe, - 0xd835,0xdcbf,0xd835,0xdcc0,0xd835,0xdcc1,0xd835,0xdcc2,0xd835,0xdcc3, - 0xd835,0xdcc5,0xd835,0xdcc6,0xd835,0xdcc7,0xd835,0xdcc8,0xd835,0xdcc9, - 0xd835,0xdcca,0xd835,0xdccb,0xd835,0xdccc,0xd835,0xdccd,0xd835,0xdcce, - 0xd835,0xdccf,0xd835,0xdcd0,0xd835,0xdcd1,0xd835,0xdcd2,0xd835,0xdcd3, - 0xd835,0xdcd4,0xd835,0xdcd5,0xd835,0xdcd6,0xd835,0xdcd7,0xd835,0xdcd8, - 0xd835,0xdcd9,0xd835,0xdcda,0xd835,0xdcdb,0xd835,0xdcdc,0xd835,0xdcdd, - 0xd835,0xdcde,0xd835,0xdcdf,0xd835,0xdce0,0xd835,0xdce1,0xd835,0xdce2, - 0xd835,0xdce3,0xd835,0xdce4,0xd835,0xdce5,0xd835,0xdce6,0xd835,0xdce7, - 0xd835,0xdce8,0xd835,0xdce9,0xd835,0xdcea,0xd835,0xdceb,0xd835,0xdcec, - 0xd835,0xdced,0xd835,0xdcee,0xd835,0xdcef,0xd835,0xdcf0,0xd835,0xdcf1, - 0xd835,0xdcf2,0xd835,0xdcf3,0xd835,0xdcf4,0xd835,0xdcf5,0xd835,0xdcf6, - 0xd835,0xdcf7,0xd835,0xdcf8,0xd835,0xdcf9,0xd835,0xdcfa,0xd835,0xdcfb, - 0xd835,0xdcfc,0xd835,0xdcfd,0xd835,0xdcfe,0xd835,0xdcff,0xd835,0xdd00, - 0xd835,0xdd01,0xd835,0xdd02,0xd835,0xdd03,0xd835,0xdd04,0xd835,0xdd05, - 0xd835,0xdd07,0xd835,0xdd08,0xd835,0xdd09,0xd835,0xdd0a,0xd835,0xdd0d, - 0xd835,0xdd0e,0xd835,0xdd0f,0xd835,0xdd10,0xd835,0xdd11,0xd835,0xdd12, - 0xd835,0xdd13,0xd835,0xdd14,0xd835,0xdd16,0xd835,0xdd17,0xd835,0xdd18, - 0xd835,0xdd19,0xd835,0xdd1a,0xd835,0xdd1b,0xd835,0xdd1c,0xd835,0xdd1e, - 0xd835,0xdd1f,0xd835,0xdd20,0xd835,0xdd21,0xd835,0xdd22,0xd835,0xdd23, - 0xd835,0xdd24,0xd835,0xdd25,0xd835,0xdd26,0xd835,0xdd27,0xd835,0xdd28, - 0xd835,0xdd29,0xd835,0xdd2a,0xd835,0xdd2b,0xd835,0xdd2c,0xd835,0xdd2d, - 0xd835,0xdd2e,0xd835,0xdd2f,0xd835,0xdd30,0xd835,0xdd31,0xd835,0xdd32, - 0xd835,0xdd33,0xd835,0xdd34,0xd835,0xdd35,0xd835,0xdd36,0xd835,0xdd37, - 0xd835,0xdd38,0xd835,0xdd39,0xd835,0xdd3b,0xd835,0xdd3c,0xd835,0xdd3d, - 0xd835,0xdd3e,0xd835,0xdd40,0xd835,0xdd41,0xd835,0xdd42,0xd835,0xdd43, - 0xd835,0xdd44,0xd835,0xdd46,0xd835,0xdd4a,0xd835,0xdd4b,0xd835,0xdd4c, - 0xd835,0xdd4d,0xd835,0xdd4e,0xd835,0xdd4f,0xd835,0xdd50,0xd835,0xdd52, - 0xd835,0xdd53,0xd835,0xdd54,0xd835,0xdd55,0xd835,0xdd56,0xd835,0xdd57, - 0xd835,0xdd58,0xd835,0xdd59,0xd835,0xdd5a,0xd835,0xdd5b,0xd835,0xdd5c, - 0xd835,0xdd5d,0xd835,0xdd5e,0xd835,0xdd5f,0xd835,0xdd60,0xd835,0xdd61, - 0xd835,0xdd62,0xd835,0xdd63,0xd835,0xdd64,0xd835,0xdd65,0xd835,0xdd66, - 0xd835,0xdd67,0xd835,0xdd68,0xd835,0xdd69,0xd835,0xdd6a,0xd835,0xdd6b, - 0xd835,0xdd6c,0xd835,0xdd6d,0xd835,0xdd6e,0xd835,0xdd6f,0xd835,0xdd70, - 0xd835,0xdd71,0xd835,0xdd72,0xd835,0xdd73,0xd835,0xdd74,0xd835,0xdd75, - 0xd835,0xdd76,0xd835,0xdd77,0xd835,0xdd78,0xd835,0xdd79,0xd835,0xdd7a, - 0xd835,0xdd7b,0xd835,0xdd7c,0xd835,0xdd7d,0xd835,0xdd7e,0xd835,0xdd7f, - 0xd835,0xdd80,0xd835,0xdd81,0xd835,0xdd82,0xd835,0xdd83,0xd835,0xdd84, - 0xd835,0xdd85,0xd835,0xdd86,0xd835,0xdd87,0xd835,0xdd88,0xd835,0xdd89, - 0xd835,0xdd8a,0xd835,0xdd8b,0xd835,0xdd8c,0xd835,0xdd8d,0xd835,0xdd8e, - 0xd835,0xdd8f,0xd835,0xdd90,0xd835,0xdd91,0xd835,0xdd92,0xd835,0xdd93, - 0xd835,0xdd94,0xd835,0xdd95,0xd835,0xdd96,0xd835,0xdd97,0xd835,0xdd98, - 0xd835,0xdd99,0xd835,0xdd9a,0xd835,0xdd9b,0xd835,0xdd9c,0xd835,0xdd9d, - 0xd835,0xdd9e,0xd835,0xdd9f,0xd835,0xdda0,0xd835,0xdda1,0xd835,0xdda2, - 0xd835,0xdda3,0xd835,0xdda4,0xd835,0xdda5,0xd835,0xdda6,0xd835,0xdda7, - 0xd835,0xdda8,0xd835,0xdda9,0xd835,0xddaa,0xd835,0xddab,0xd835,0xddac, - 0xd835,0xddad,0xd835,0xddae,0xd835,0xddaf,0xd835,0xddb0,0xd835,0xddb1, - 0xd835,0xddb2,0xd835,0xddb3,0xd835,0xddb4,0xd835,0xddb5,0xd835,0xddb6, - 0xd835,0xddb7,0xd835,0xddb8,0xd835,0xddb9,0xd835,0xddba,0xd835,0xddbb, - 0xd835,0xddbc,0xd835,0xddbd,0xd835,0xddbe,0xd835,0xddbf,0xd835,0xddc0, - 0xd835,0xddc1,0xd835,0xddc2,0xd835,0xddc3,0xd835,0xddc4,0xd835,0xddc5, - 0xd835,0xddc6,0xd835,0xddc7,0xd835,0xddc8,0xd835,0xddc9,0xd835,0xddca, - 0xd835,0xddcb,0xd835,0xddcc,0xd835,0xddcd,0xd835,0xddce,0xd835,0xddcf, - 0xd835,0xddd0,0xd835,0xddd1,0xd835,0xddd2,0xd835,0xddd3,0xd835,0xddd4, - 0xd835,0xddd5,0xd835,0xddd6,0xd835,0xddd7,0xd835,0xddd8,0xd835,0xddd9, - 0xd835,0xddda,0xd835,0xdddb,0xd835,0xdddc,0xd835,0xdddd,0xd835,0xddde, - 0xd835,0xdddf,0xd835,0xdde0,0xd835,0xdde1,0xd835,0xdde2,0xd835,0xdde3, - 0xd835,0xdde4,0xd835,0xdde5,0xd835,0xdde6,0xd835,0xdde7,0xd835,0xdde8, - 0xd835,0xdde9,0xd835,0xddea,0xd835,0xddeb,0xd835,0xddec,0xd835,0xdded, - 0xd835,0xddee,0xd835,0xddef,0xd835,0xddf0,0xd835,0xddf1,0xd835,0xddf2, - 0xd835,0xddf3,0xd835,0xddf4,0xd835,0xddf5,0xd835,0xddf6,0xd835,0xddf7, - 0xd835,0xddf8,0xd835,0xddf9,0xd835,0xddfa,0xd835,0xddfb,0xd835,0xddfc, - 0xd835,0xddfd,0xd835,0xddfe,0xd835,0xddff,0xd835,0xde00,0xd835,0xde01, - 0xd835,0xde02,0xd835,0xde03,0xd835,0xde04,0xd835,0xde05,0xd835,0xde06, - 0xd835,0xde07,0xd835,0xde08,0xd835,0xde09,0xd835,0xde0a,0xd835,0xde0b, - 0xd835,0xde0c,0xd835,0xde0d,0xd835,0xde0e,0xd835,0xde0f,0xd835,0xde10, - 0xd835,0xde11,0xd835,0xde12,0xd835,0xde13,0xd835,0xde14,0xd835,0xde15, - 0xd835,0xde16,0xd835,0xde17,0xd835,0xde18,0xd835,0xde19,0xd835,0xde1a, - 0xd835,0xde1b,0xd835,0xde1c,0xd835,0xde1d,0xd835,0xde1e,0xd835,0xde1f, - 0xd835,0xde20,0xd835,0xde21,0xd835,0xde22,0xd835,0xde23,0xd835,0xde24, - 0xd835,0xde25,0xd835,0xde26,0xd835,0xde27,0xd835,0xde28,0xd835,0xde29, - 0xd835,0xde2a,0xd835,0xde2b,0xd835,0xde2c,0xd835,0xde2d,0xd835,0xde2e, - 0xd835,0xde2f,0xd835,0xde30,0xd835,0xde31,0xd835,0xde32,0xd835,0xde33, - 0xd835,0xde34,0xd835,0xde35,0xd835,0xde36,0xd835,0xde37,0xd835,0xde38, - 0xd835,0xde39,0xd835,0xde3a,0xd835,0xde3b,0xd835,0xde3c,0xd835,0xde3d, - 0xd835,0xde3e,0xd835,0xde3f,0xd835,0xde40,0xd835,0xde41,0xd835,0xde42, - 0xd835,0xde43,0xd835,0xde44,0xd835,0xde45,0xd835,0xde46,0xd835,0xde47, - 0xd835,0xde48,0xd835,0xde49,0xd835,0xde4a,0xd835,0xde4b,0xd835,0xde4c, - 0xd835,0xde4d,0xd835,0xde4e,0xd835,0xde4f,0xd835,0xde50,0xd835,0xde51, - 0xd835,0xde52,0xd835,0xde53,0xd835,0xde54,0xd835,0xde55,0xd835,0xde56, - 0xd835,0xde57,0xd835,0xde58,0xd835,0xde59,0xd835,0xde5a,0xd835,0xde5b, - 0xd835,0xde5c,0xd835,0xde5d,0xd835,0xde5e,0xd835,0xde5f,0xd835,0xde60, - 0xd835,0xde61,0xd835,0xde62,0xd835,0xde63,0xd835,0xde64,0xd835,0xde65, - 0xd835,0xde66,0xd835,0xde67,0xd835,0xde68,0xd835,0xde69,0xd835,0xde6a, - 0xd835,0xde6b,0xd835,0xde6c,0xd835,0xde6d,0xd835,0xde6e,0xd835,0xde6f, - 0xd835,0xde70,0xd835,0xde71,0xd835,0xde72,0xd835,0xde73,0xd835,0xde74, - 0xd835,0xde75,0xd835,0xde76,0xd835,0xde77,0xd835,0xde78,0xd835,0xde79, - 0xd835,0xde7a,0xd835,0xde7b,0xd835,0xde7c,0xd835,0xde7d,0xd835,0xde7e, - 0xd835,0xde7f,0xd835,0xde80,0xd835,0xde81,0xd835,0xde82,0xd835,0xde83, - 0xd835,0xde84,0xd835,0xde85,0xd835,0xde86,0xd835,0xde87,0xd835,0xde88, - 0xd835,0xde89,0xd835,0xde8a,0xd835,0xde8b,0xd835,0xde8c,0xd835,0xde8d, - 0xd835,0xde8e,0xd835,0xde8f,0xd835,0xde90,0xd835,0xde91,0xd835,0xde92, - 0xd835,0xde93,0xd835,0xde94,0xd835,0xde95,0xd835,0xde96,0xd835,0xde97, - 0xd835,0xde98,0xd835,0xde99,0xd835,0xde9a,0xd835,0xde9b,0xd835,0xde9c, - 0xd835,0xde9d,0xd835,0xde9e,0xd835,0xde9f,0xd835,0xdea0,0xd835,0xdea1, - 0xd835,0xdea2,0xd835,0xdea3,0xd835,0xdea4,0xd835,0xdea5,0xd835,0xdea8, - 0xd835,0xdea9,0xd835,0xdeaa,0xd835,0xdeab,0xd835,0xdeac,0xd835,0xdead, - 0xd835,0xdeae,0xd835,0xdeaf,0xd835,0xdeb0,0xd835,0xdeb1,0xd835,0xdeb2, - 0xd835,0xdeb3,0xd835,0xdeb4,0xd835,0xdeb5,0xd835,0xdeb6,0xd835,0xdeb7, - 0xd835,0xdeb8,0xd835,0xdeb9,0xd835,0xdeba,0xd835,0xdebb,0xd835,0xdebc, - 0xd835,0xdebd,0xd835,0xdebe,0xd835,0xdebf,0xd835,0xdec0,0xd835,0xdec1, - 0xd835,0xdec2,0xd835,0xdec3,0xd835,0xdec4,0xd835,0xdec5,0xd835,0xdec6, - 0xd835,0xdec7,0xd835,0xdec8,0xd835,0xdec9,0xd835,0xdeca,0xd835,0xdecb, - 0xd835,0xdecc,0xd835,0xdecd,0xd835,0xdece,0xd835,0xdecf,0xd835,0xded0, - 0xd835,0xded1,0xd835,0xded2,0xd835,0xded3,0xd835,0xded4,0xd835,0xded5, - 0xd835,0xded6,0xd835,0xded7,0xd835,0xded8,0xd835,0xded9,0xd835,0xdeda, - 0xd835,0xdedb,0xd835,0xdedc,0xd835,0xdedd,0xd835,0xdede,0xd835,0xdedf, - 0xd835,0xdee0,0xd835,0xdee1,0xd835,0xdee2,0xd835,0xdee3,0xd835,0xdee4, - 0xd835,0xdee5,0xd835,0xdee6,0xd835,0xdee7,0xd835,0xdee8,0xd835,0xdee9, - 0xd835,0xdeea,0xd835,0xdeeb,0xd835,0xdeec,0xd835,0xdeed,0xd835,0xdeee, - 0xd835,0xdeef,0xd835,0xdef0,0xd835,0xdef1,0xd835,0xdef2,0xd835,0xdef3, - 0xd835,0xdef4,0xd835,0xdef5,0xd835,0xdef6,0xd835,0xdef7,0xd835,0xdef8, - 0xd835,0xdef9,0xd835,0xdefa,0xd835,0xdefb,0xd835,0xdefc,0xd835,0xdefd, - 0xd835,0xdefe,0xd835,0xdeff,0xd835,0xdf00,0xd835,0xdf01,0xd835,0xdf02, - 0xd835,0xdf03,0xd835,0xdf04,0xd835,0xdf05,0xd835,0xdf06,0xd835,0xdf07, - 0xd835,0xdf08,0xd835,0xdf09,0xd835,0xdf0a,0xd835,0xdf0b,0xd835,0xdf0c, - 0xd835,0xdf0d,0xd835,0xdf0e,0xd835,0xdf0f,0xd835,0xdf10,0xd835,0xdf11, - 0xd835,0xdf12,0xd835,0xdf13,0xd835,0xdf14,0xd835,0xdf15,0xd835,0xdf16, - 0xd835,0xdf17,0xd835,0xdf18,0xd835,0xdf19,0xd835,0xdf1a,0xd835,0xdf1b, - 0xd835,0xdf1c,0xd835,0xdf1d,0xd835,0xdf1e,0xd835,0xdf1f,0xd835,0xdf20, - 0xd835,0xdf21,0xd835,0xdf22,0xd835,0xdf23,0xd835,0xdf24,0xd835,0xdf25, - 0xd835,0xdf26,0xd835,0xdf27,0xd835,0xdf28,0xd835,0xdf29,0xd835,0xdf2a, - 0xd835,0xdf2b,0xd835,0xdf2c,0xd835,0xdf2d,0xd835,0xdf2e,0xd835,0xdf2f, - 0xd835,0xdf30,0xd835,0xdf31,0xd835,0xdf32,0xd835,0xdf33,0xd835,0xdf34, - 0xd835,0xdf35,0xd835,0xdf36,0xd835,0xdf37,0xd835,0xdf38,0xd835,0xdf39, - 0xd835,0xdf3a,0xd835,0xdf3b,0xd835,0xdf3c,0xd835,0xdf3d,0xd835,0xdf3e, - 0xd835,0xdf3f,0xd835,0xdf40,0xd835,0xdf41,0xd835,0xdf42,0xd835,0xdf43, - 0xd835,0xdf44,0xd835,0xdf45,0xd835,0xdf46,0xd835,0xdf47,0xd835,0xdf48, - 0xd835,0xdf49,0xd835,0xdf4a,0xd835,0xdf4b,0xd835,0xdf4c,0xd835,0xdf4d, - 0xd835,0xdf4e,0xd835,0xdf4f,0xd835,0xdf50,0xd835,0xdf51,0xd835,0xdf52, - 0xd835,0xdf53,0xd835,0xdf54,0xd835,0xdf55,0xd835,0xdf56,0xd835,0xdf57, - 0xd835,0xdf58,0xd835,0xdf59,0xd835,0xdf5a,0xd835,0xdf5b,0xd835,0xdf5c, - 0xd835,0xdf5d,0xd835,0xdf5e,0xd835,0xdf5f,0xd835,0xdf60,0xd835,0xdf61, - 0xd835,0xdf62,0xd835,0xdf63,0xd835,0xdf64,0xd835,0xdf65,0xd835,0xdf66, - 0xd835,0xdf67,0xd835,0xdf68,0xd835,0xdf69,0xd835,0xdf6a,0xd835,0xdf6b, - 0xd835,0xdf6c,0xd835,0xdf6d,0xd835,0xdf6e,0xd835,0xdf6f,0xd835,0xdf70, - 0xd835,0xdf71,0xd835,0xdf72,0xd835,0xdf73,0xd835,0xdf74,0xd835,0xdf75, - 0xd835,0xdf76,0xd835,0xdf77,0xd835,0xdf78,0xd835,0xdf79,0xd835,0xdf7a, - 0xd835,0xdf7b,0xd835,0xdf7c,0xd835,0xdf7d,0xd835,0xdf7e,0xd835,0xdf7f, - 0xd835,0xdf80,0xd835,0xdf81,0xd835,0xdf82,0xd835,0xdf83,0xd835,0xdf84, - 0xd835,0xdf85,0xd835,0xdf86,0xd835,0xdf87,0xd835,0xdf88,0xd835,0xdf89, - 0xd835,0xdf8a,0xd835,0xdf8b,0xd835,0xdf8c,0xd835,0xdf8d,0xd835,0xdf8e, - 0xd835,0xdf8f,0xd835,0xdf90,0xd835,0xdf91,0xd835,0xdf92,0xd835,0xdf93, - 0xd835,0xdf94,0xd835,0xdf95,0xd835,0xdf96,0xd835,0xdf97,0xd835,0xdf98, - 0xd835,0xdf99,0xd835,0xdf9a,0xd835,0xdf9b,0xd835,0xdf9c,0xd835,0xdf9d, - 0xd835,0xdf9e,0xd835,0xdf9f,0xd835,0xdfa0,0xd835,0xdfa1,0xd835,0xdfa2, - 0xd835,0xdfa3,0xd835,0xdfa4,0xd835,0xdfa5,0xd835,0xdfa6,0xd835,0xdfa7, - 0xd835,0xdfa8,0xd835,0xdfa9,0xd835,0xdfaa,0xd835,0xdfab,0xd835,0xdfac, - 0xd835,0xdfad,0xd835,0xdfae,0xd835,0xdfaf,0xd835,0xdfb0,0xd835,0xdfb1, - 0xd835,0xdfb2,0xd835,0xdfb3,0xd835,0xdfb4,0xd835,0xdfb5,0xd835,0xdfb6, - 0xd835,0xdfb7,0xd835,0xdfb8,0xd835,0xdfb9,0xd835,0xdfba,0xd835,0xdfbb, - 0xd835,0xdfbc,0xd835,0xdfbd,0xd835,0xdfbe,0xd835,0xdfbf,0xd835,0xdfc0, - 0xd835,0xdfc1,0xd835,0xdfc2,0xd835,0xdfc3,0xd835,0xdfc4,0xd835,0xdfc5, - 0xd835,0xdfc6,0xd835,0xdfc7,0xd835,0xdfc8,0xd835,0xdfc9,0xd835,0xdfca, - 0xd835,0xdfcb, - }; -static const TUint KAlphabeticLength = 7717 + 6574; -static const TUint KAlphabeticClass = MLineBreaker::EAlLineBreakClass; - - -// This constant defines the Unicode characters in the "Ideographic" (ID) category. -static const TUint16 KIdeographic[] = - { - 0x1100,0x1101,0x1102,0x1103,0x1104,0x1105,0x1106,0x1107,0x1108,0x1109, - 0x110a,0x110b,0x110c,0x110d,0x110e,0x110f,0x1110,0x1111,0x1112,0x1113, - 0x1114,0x1115,0x1116,0x1117,0x1118,0x1119,0x111a,0x111b,0x111c,0x111d, - 0x111e,0x111f,0x1120,0x1121,0x1122,0x1123,0x1124,0x1125,0x1126,0x1127, - 0x1128,0x1129,0x112a,0x112b,0x112c,0x112d,0x112e,0x112f,0x1130,0x1131, - 0x1132,0x1133,0x1134,0x1135,0x1136,0x1137,0x1138,0x1139,0x113a,0x113b, - 0x113c,0x113d,0x113e,0x113f,0x1140,0x1141,0x1142,0x1143,0x1144,0x1145, - 0x1146,0x1147,0x1148,0x1149,0x114a,0x114b,0x114c,0x114d,0x114e,0x114f, - 0x1150,0x1151,0x1152,0x1153,0x1154,0x1155,0x1156,0x1157,0x1158,0x1159, - 0x115f,0x2e80,0x2e81,0x2e82,0x2e83,0x2e84,0x2e85,0x2e86,0x2e87,0x2e88, - 0x2e89,0x2e8a,0x2e8b,0x2e8c,0x2e8d,0x2e8e,0x2e8f,0x2e90,0x2e91,0x2e92, - 0x2e93,0x2e94,0x2e95,0x2e96,0x2e97,0x2e98,0x2e99,0x2e9b,0x2e9c,0x2e9d, - 0x2e9e,0x2e9f,0x2ea0,0x2ea1,0x2ea2,0x2ea3,0x2ea4,0x2ea5,0x2ea6,0x2ea7, - 0x2ea8,0x2ea9,0x2eaa,0x2eab,0x2eac,0x2ead,0x2eae,0x2eaf,0x2eb0,0x2eb1, - 0x2eb2,0x2eb3,0x2eb4,0x2eb5,0x2eb6,0x2eb7,0x2eb8,0x2eb9,0x2eba,0x2ebb, - 0x2ebc,0x2ebd,0x2ebe,0x2ebf,0x2ec0,0x2ec1,0x2ec2,0x2ec3,0x2ec4,0x2ec5, - 0x2ec6,0x2ec7,0x2ec8,0x2ec9,0x2eca,0x2ecb,0x2ecc,0x2ecd,0x2ece,0x2ecf, - 0x2ed0,0x2ed1,0x2ed2,0x2ed3,0x2ed4,0x2ed5,0x2ed6,0x2ed7,0x2ed8,0x2ed9, - 0x2eda,0x2edb,0x2edc,0x2edd,0x2ede,0x2edf,0x2ee0,0x2ee1,0x2ee2,0x2ee3, - 0x2ee4,0x2ee5,0x2ee6,0x2ee7,0x2ee8,0x2ee9,0x2eea,0x2eeb,0x2eec,0x2eed, - 0x2eee,0x2eef,0x2ef0,0x2ef1,0x2ef2,0x2ef3,0x2f00,0x2f01,0x2f02,0x2f03, - 0x2f04,0x2f05,0x2f06,0x2f07,0x2f08,0x2f09,0x2f0a,0x2f0b,0x2f0c,0x2f0d, - 0x2f0e,0x2f0f,0x2f10,0x2f11,0x2f12,0x2f13,0x2f14,0x2f15,0x2f16,0x2f17, - 0x2f18,0x2f19,0x2f1a,0x2f1b,0x2f1c,0x2f1d,0x2f1e,0x2f1f,0x2f20,0x2f21, - 0x2f22,0x2f23,0x2f24,0x2f25,0x2f26,0x2f27,0x2f28,0x2f29,0x2f2a,0x2f2b, - 0x2f2c,0x2f2d,0x2f2e,0x2f2f,0x2f30,0x2f31,0x2f32,0x2f33,0x2f34,0x2f35, - 0x2f36,0x2f37,0x2f38,0x2f39,0x2f3a,0x2f3b,0x2f3c,0x2f3d,0x2f3e,0x2f3f, - 0x2f40,0x2f41,0x2f42,0x2f43,0x2f44,0x2f45,0x2f46,0x2f47,0x2f48,0x2f49, - 0x2f4a,0x2f4b,0x2f4c,0x2f4d,0x2f4e,0x2f4f,0x2f50,0x2f51,0x2f52,0x2f53, - 0x2f54,0x2f55,0x2f56,0x2f57,0x2f58,0x2f59,0x2f5a,0x2f5b,0x2f5c,0x2f5d, - 0x2f5e,0x2f5f,0x2f60,0x2f61,0x2f62,0x2f63,0x2f64,0x2f65,0x2f66,0x2f67, - 0x2f68,0x2f69,0x2f6a,0x2f6b,0x2f6c,0x2f6d,0x2f6e,0x2f6f,0x2f70,0x2f71, - 0x2f72,0x2f73,0x2f74,0x2f75,0x2f76,0x2f77,0x2f78,0x2f79,0x2f7a,0x2f7b, - 0x2f7c,0x2f7d,0x2f7e,0x2f7f,0x2f80,0x2f81,0x2f82,0x2f83,0x2f84,0x2f85, - 0x2f86,0x2f87,0x2f88,0x2f89,0x2f8a,0x2f8b,0x2f8c,0x2f8d,0x2f8e,0x2f8f, - 0x2f90,0x2f91,0x2f92,0x2f93,0x2f94,0x2f95,0x2f96,0x2f97,0x2f98,0x2f99, - 0x2f9a,0x2f9b,0x2f9c,0x2f9d,0x2f9e,0x2f9f,0x2fa0,0x2fa1,0x2fa2,0x2fa3, - 0x2fa4,0x2fa5,0x2fa6,0x2fa7,0x2fa8,0x2fa9,0x2faa,0x2fab,0x2fac,0x2fad, - 0x2fae,0x2faf,0x2fb0,0x2fb1,0x2fb2,0x2fb3,0x2fb4,0x2fb5,0x2fb6,0x2fb7, - 0x2fb8,0x2fb9,0x2fba,0x2fbb,0x2fbc,0x2fbd,0x2fbe,0x2fbf,0x2fc0,0x2fc1, - 0x2fc2,0x2fc3,0x2fc4,0x2fc5,0x2fc6,0x2fc7,0x2fc8,0x2fc9,0x2fca,0x2fcb, - 0x2fcc,0x2fcd,0x2fce,0x2fcf,0x2fd0,0x2fd1,0x2fd2,0x2fd3,0x2fd4,0x2fd5, - 0x2ff0,0x2ff1,0x2ff2,0x2ff3,0x2ff4,0x2ff5,0x2ff6,0x2ff7,0x2ff8,0x2ff9, - 0x2ffa,0x2ffb,0x3000,0x3003,0x3004,0x3006,0x3007,0x3012,0x3013,0x3020, - 0x3021,0x3022,0x3023,0x3024,0x3025,0x3026,0x3027,0x3028,0x3029,0x3030, - 0x3031,0x3032,0x3033,0x3034,0x3035,0x3036,0x3037,0x3038,0x3039,0x303a, - 0x303d,0x303e,0x303f,0x3042,0x3044,0x3046,0x3048,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,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,0x3084,0x3086,0x3088,0x3089,0x308a,0x308b,0x308c, - 0x308d,0x308f,0x3090,0x3091,0x3092,0x3093,0x3094,0x309f,0x30a2,0x30a4, - 0x30a6,0x30a8,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,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,0x30e4,0x30e6, - 0x30e8,0x30e9,0x30ea,0x30eb,0x30ec,0x30ed,0x30ef,0x30f0,0x30f1,0x30f2, - 0x30f3,0x30f4,0x30f7,0x30f8,0x30f9,0x30fa,0x30fc,0x30fe,0x30ff,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,0x312a,0x312b,0x312c,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,0x3190,0x3191,0x3192,0x3193,0x3194,0x3195,0x3196, - 0x3197,0x3198,0x3199,0x319a,0x319b,0x319c,0x319d,0x319e,0x319f,0x31a0, - 0x31a1,0x31a2,0x31a3,0x31a4,0x31a5,0x31a6,0x31a7,0x31a8,0x31a9,0x31aa, - 0x31ab,0x31ac,0x31ad,0x31ae,0x31af,0x31b0,0x31b1,0x31b2,0x31b3,0x31b4, - 0x31b5,0x31b6,0x31b7,0x31c0,0x31c1,0x31c2,0x31c3,0x31c4,0x31c5,0x31c6, - 0x31c7,0x31c8,0x31c9,0x31ca,0x31cb,0x31cc,0x31cd,0x31ce,0x31cf,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,0x321c,0x321d,0x321e, - 0x3220,0x3221,0x3222,0x3223,0x3224,0x3225,0x3226,0x3227,0x3228,0x3229, - 0x322a,0x322b,0x322c,0x322d,0x322e,0x322f,0x3230,0x3231,0x3232,0x3233, - 0x3234,0x3235,0x3236,0x3237,0x3238,0x3239,0x323a,0x323b,0x323c,0x323d, - 0x323e,0x323f,0x3240,0x3241,0x3242,0x3243,0x3250,0x3251,0x3252,0x3253, - 0x3254,0x3255,0x3256,0x3257,0x3258,0x3259,0x325a,0x325b,0x325c,0x325d, - 0x325e,0x325f,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, - 0x327c,0x327d,0x327e,0x327f,0x3280,0x3281,0x3282,0x3283,0x3284,0x3285, - 0x3286,0x3287,0x3288,0x3289,0x328a,0x328b,0x328c,0x328d,0x328e,0x328f, - 0x3290,0x3291,0x3292,0x3293,0x3294,0x3295,0x3296,0x3297,0x3298,0x3299, - 0x329a,0x329b,0x329c,0x329d,0x329e,0x329f,0x32a0,0x32a1,0x32a2,0x32a3, - 0x32a4,0x32a5,0x32a6,0x32a7,0x32a8,0x32a9,0x32aa,0x32ab,0x32ac,0x32ad, - 0x32ae,0x32af,0x32b0,0x32b1,0x32b2,0x32b3,0x32b4,0x32b5,0x32b6,0x32b7, - 0x32b8,0x32b9,0x32ba,0x32bb,0x32bc,0x32bd,0x32be,0x32bf,0x32c0,0x32c1, - 0x32c2,0x32c3,0x32c4,0x32c5,0x32c6,0x32c7,0x32c8,0x32c9,0x32ca,0x32cb, - 0x32cc,0x32cd,0x32ce,0x32cf,0x32d0,0x32d1,0x32d2,0x32d3,0x32d4,0x32d5, - 0x32d6,0x32d7,0x32d8,0x32d9,0x32da,0x32db,0x32dc,0x32dd,0x32de,0x32df, - 0x32e0,0x32e1,0x32e2,0x32e3,0x32e4,0x32e5,0x32e6,0x32e7,0x32e8,0x32e9, - 0x32ea,0x32eb,0x32ec,0x32ed,0x32ee,0x32ef,0x32f0,0x32f1,0x32f2,0x32f3, - 0x32f4,0x32f5,0x32f6,0x32f7,0x32f8,0x32f9,0x32fa,0x32fb,0x32fc,0x32fd, - 0x32fe,0x3300,0x3301,0x3302,0x3303,0x3304,0x3305,0x3306,0x3307,0x3308, - 0x3309,0x330a,0x330b,0x330c,0x330d,0x330e,0x330f,0x3310,0x3311,0x3312, - 0x3313,0x3314,0x3315,0x3316,0x3317,0x3318,0x3319,0x331a,0x331b,0x331c, - 0x331d,0x331e,0x331f,0x3320,0x3321,0x3322,0x3323,0x3324,0x3325,0x3326, - 0x3327,0x3328,0x3329,0x332a,0x332b,0x332c,0x332d,0x332e,0x332f,0x3330, - 0x3331,0x3332,0x3333,0x3334,0x3335,0x3336,0x3337,0x3338,0x3339,0x333a, - 0x333b,0x333c,0x333d,0x333e,0x333f,0x3340,0x3341,0x3342,0x3343,0x3344, - 0x3345,0x3346,0x3347,0x3348,0x3349,0x334a,0x334b,0x334c,0x334d,0x334e, - 0x334f,0x3350,0x3351,0x3352,0x3353,0x3354,0x3355,0x3356,0x3357,0x3358, - 0x3359,0x335a,0x335b,0x335c,0x335d,0x335e,0x335f,0x3360,0x3361,0x3362, - 0x3363,0x3364,0x3365,0x3366,0x3367,0x3368,0x3369,0x336a,0x336b,0x336c, - 0x336d,0x336e,0x336f,0x3370,0x3371,0x3372,0x3373,0x3374,0x3375,0x3376, - 0x3377,0x3378,0x3379,0x337a,0x337b,0x337c,0x337d,0x337e,0x337f,0x3380, - 0x3381,0x3382,0x3383,0x3384,0x3385,0x3386,0x3387,0x3388,0x3389,0x338a, - 0x338b,0x338c,0x338d,0x338e,0x338f,0x3390,0x3391,0x3392,0x3393,0x3394, - 0x3395,0x3396,0x3397,0x3398,0x3399,0x339a,0x339b,0x339c,0x339d,0x339e, - 0x339f,0x33a0,0x33a1,0x33a2,0x33a3,0x33a4,0x33a5,0x33a6,0x33a7,0x33a8, - 0x33a9,0x33aa,0x33ab,0x33ac,0x33ad,0x33ae,0x33af,0x33b0,0x33b1,0x33b2, - 0x33b3,0x33b4,0x33b5,0x33b6,0x33b7,0x33b8,0x33b9,0x33ba,0x33bb,0x33bc, - 0x33bd,0x33be,0x33bf,0x33c0,0x33c1,0x33c2,0x33c3,0x33c4,0x33c5,0x33c6, - 0x33c7,0x33c8,0x33c9,0x33ca,0x33cb,0x33cc,0x33cd,0x33ce,0x33cf,0x33d0, - 0x33d1,0x33d2,0x33d3,0x33d4,0x33d5,0x33d6,0x33d7,0x33d8,0x33d9,0x33da, - 0x33db,0x33dc,0x33dd,0x33de,0x33df,0x33e0,0x33e1,0x33e2,0x33e3,0x33e4, - 0x33e5,0x33e6,0x33e7,0x33e8,0x33e9,0x33ea,0x33eb,0x33ec,0x33ed,0x33ee, - 0x33ef,0x33f0,0x33f1,0x33f2,0x33f3,0x33f4,0x33f5,0x33f6,0x33f7,0x33f8, - 0x33f9,0x33fa,0x33fb,0x33fc,0x33fd,0x33fe,0x33ff,0x3400,0x3401,0x3402, - 0x3403,0x3404,0x3405,0x3406,0x3407,0x3408,0x3409,0x340a,0x340b,0x340c, - 0x340d,0x340e,0x340f,0x3410,0x3411,0x3412,0x3413,0x3414,0x3415,0x3416, - 0x3417,0x3418,0x3419,0x341a,0x341b,0x341c,0x341d,0x341e,0x341f,0x3420, - 0x3421,0x3422,0x3423,0x3424,0x3425,0x3426,0x3427,0x3428,0x3429,0x342a, - 0x342b,0x342c,0x342d,0x342e,0x342f,0x3430,0x3431,0x3432,0x3433,0x3434, - 0x3435,0x3436,0x3437,0x3438,0x3439,0x343a,0x343b,0x343c,0x343d,0x343e, - 0x343f,0x3440,0x3441,0x3442,0x3443,0x3444,0x3445,0x3446,0x3447,0x3448, - 0x3449,0x344a,0x344b,0x344c,0x344d,0x344e,0x344f,0x3450,0x3451,0x3452, - 0x3453,0x3454,0x3455,0x3456,0x3457,0x3458,0x3459,0x345a,0x345b,0x345c, - 0x345d,0x345e,0x345f,0x3460,0x3461,0x3462,0x3463,0x3464,0x3465,0x3466, - 0x3467,0x3468,0x3469,0x346a,0x346b,0x346c,0x346d,0x346e,0x346f,0x3470, - 0x3471,0x3472,0x3473,0x3474,0x3475,0x3476,0x3477,0x3478,0x3479,0x347a, - 0x347b,0x347c,0x347d,0x347e,0x347f,0x3480,0x3481,0x3482,0x3483,0x3484, - 0x3485,0x3486,0x3487,0x3488,0x3489,0x348a,0x348b,0x348c,0x348d,0x348e, - 0x348f,0x3490,0x3491,0x3492,0x3493,0x3494,0x3495,0x3496,0x3497,0x3498, - 0x3499,0x349a,0x349b,0x349c,0x349d,0x349e,0x349f,0x34a0,0x34a1,0x34a2, - 0x34a3,0x34a4,0x34a5,0x34a6,0x34a7,0x34a8,0x34a9,0x34aa,0x34ab,0x34ac, - 0x34ad,0x34ae,0x34af,0x34b0,0x34b1,0x34b2,0x34b3,0x34b4,0x34b5,0x34b6, - 0x34b7,0x34b8,0x34b9,0x34ba,0x34bb,0x34bc,0x34bd,0x34be,0x34bf,0x34c0, - 0x34c1,0x34c2,0x34c3,0x34c4,0x34c5,0x34c6,0x34c7,0x34c8,0x34c9,0x34ca, - 0x34cb,0x34cc,0x34cd,0x34ce,0x34cf,0x34d0,0x34d1,0x34d2,0x34d3,0x34d4, - 0x34d5,0x34d6,0x34d7,0x34d8,0x34d9,0x34da,0x34db,0x34dc,0x34dd,0x34de, - 0x34df,0x34e0,0x34e1,0x34e2,0x34e3,0x34e4,0x34e5,0x34e6,0x34e7,0x34e8, - 0x34e9,0x34ea,0x34eb,0x34ec,0x34ed,0x34ee,0x34ef,0x34f0,0x34f1,0x34f2, - 0x34f3,0x34f4,0x34f5,0x34f6,0x34f7,0x34f8,0x34f9,0x34fa,0x34fb,0x34fc, - 0x34fd,0x34fe,0x34ff,0x3500,0x3501,0x3502,0x3503,0x3504,0x3505,0x3506, - 0x3507,0x3508,0x3509,0x350a,0x350b,0x350c,0x350d,0x350e,0x350f,0x3510, - 0x3511,0x3512,0x3513,0x3514,0x3515,0x3516,0x3517,0x3518,0x3519,0x351a, - 0x351b,0x351c,0x351d,0x351e,0x351f,0x3520,0x3521,0x3522,0x3523,0x3524, - 0x3525,0x3526,0x3527,0x3528,0x3529,0x352a,0x352b,0x352c,0x352d,0x352e, - 0x352f,0x3530,0x3531,0x3532,0x3533,0x3534,0x3535,0x3536,0x3537,0x3538, - 0x3539,0x353a,0x353b,0x353c,0x353d,0x353e,0x353f,0x3540,0x3541,0x3542, - 0x3543,0x3544,0x3545,0x3546,0x3547,0x3548,0x3549,0x354a,0x354b,0x354c, - 0x354d,0x354e,0x354f,0x3550,0x3551,0x3552,0x3553,0x3554,0x3555,0x3556, - 0x3557,0x3558,0x3559,0x355a,0x355b,0x355c,0x355d,0x355e,0x355f,0x3560, - 0x3561,0x3562,0x3563,0x3564,0x3565,0x3566,0x3567,0x3568,0x3569,0x356a, - 0x356b,0x356c,0x356d,0x356e,0x356f,0x3570,0x3571,0x3572,0x3573,0x3574, - 0x3575,0x3576,0x3577,0x3578,0x3579,0x357a,0x357b,0x357c,0x357d,0x357e, - 0x357f,0x3580,0x3581,0x3582,0x3583,0x3584,0x3585,0x3586,0x3587,0x3588, - 0x3589,0x358a,0x358b,0x358c,0x358d,0x358e,0x358f,0x3590,0x3591,0x3592, - 0x3593,0x3594,0x3595,0x3596,0x3597,0x3598,0x3599,0x359a,0x359b,0x359c, - 0x359d,0x359e,0x359f,0x35a0,0x35a1,0x35a2,0x35a3,0x35a4,0x35a5,0x35a6, - 0x35a7,0x35a8,0x35a9,0x35aa,0x35ab,0x35ac,0x35ad,0x35ae,0x35af,0x35b0, - 0x35b1,0x35b2,0x35b3,0x35b4,0x35b5,0x35b6,0x35b7,0x35b8,0x35b9,0x35ba, - 0x35bb,0x35bc,0x35bd,0x35be,0x35bf,0x35c0,0x35c1,0x35c2,0x35c3,0x35c4, - 0x35c5,0x35c6,0x35c7,0x35c8,0x35c9,0x35ca,0x35cb,0x35cc,0x35cd,0x35ce, - 0x35cf,0x35d0,0x35d1,0x35d2,0x35d3,0x35d4,0x35d5,0x35d6,0x35d7,0x35d8, - 0x35d9,0x35da,0x35db,0x35dc,0x35dd,0x35de,0x35df,0x35e0,0x35e1,0x35e2, - 0x35e3,0x35e4,0x35e5,0x35e6,0x35e7,0x35e8,0x35e9,0x35ea,0x35eb,0x35ec, - 0x35ed,0x35ee,0x35ef,0x35f0,0x35f1,0x35f2,0x35f3,0x35f4,0x35f5,0x35f6, - 0x35f7,0x35f8,0x35f9,0x35fa,0x35fb,0x35fc,0x35fd,0x35fe,0x35ff,0x3600, - 0x3601,0x3602,0x3603,0x3604,0x3605,0x3606,0x3607,0x3608,0x3609,0x360a, - 0x360b,0x360c,0x360d,0x360e,0x360f,0x3610,0x3611,0x3612,0x3613,0x3614, - 0x3615,0x3616,0x3617,0x3618,0x3619,0x361a,0x361b,0x361c,0x361d,0x361e, - 0x361f,0x3620,0x3621,0x3622,0x3623,0x3624,0x3625,0x3626,0x3627,0x3628, - 0x3629,0x362a,0x362b,0x362c,0x362d,0x362e,0x362f,0x3630,0x3631,0x3632, - 0x3633,0x3634,0x3635,0x3636,0x3637,0x3638,0x3639,0x363a,0x363b,0x363c, - 0x363d,0x363e,0x363f,0x3640,0x3641,0x3642,0x3643,0x3644,0x3645,0x3646, - 0x3647,0x3648,0x3649,0x364a,0x364b,0x364c,0x364d,0x364e,0x364f,0x3650, - 0x3651,0x3652,0x3653,0x3654,0x3655,0x3656,0x3657,0x3658,0x3659,0x365a, - 0x365b,0x365c,0x365d,0x365e,0x365f,0x3660,0x3661,0x3662,0x3663,0x3664, - 0x3665,0x3666,0x3667,0x3668,0x3669,0x366a,0x366b,0x366c,0x366d,0x366e, - 0x366f,0x3670,0x3671,0x3672,0x3673,0x3674,0x3675,0x3676,0x3677,0x3678, - 0x3679,0x367a,0x367b,0x367c,0x367d,0x367e,0x367f,0x3680,0x3681,0x3682, - 0x3683,0x3684,0x3685,0x3686,0x3687,0x3688,0x3689,0x368a,0x368b,0x368c, - 0x368d,0x368e,0x368f,0x3690,0x3691,0x3692,0x3693,0x3694,0x3695,0x3696, - 0x3697,0x3698,0x3699,0x369a,0x369b,0x369c,0x369d,0x369e,0x369f,0x36a0, - 0x36a1,0x36a2,0x36a3,0x36a4,0x36a5,0x36a6,0x36a7,0x36a8,0x36a9,0x36aa, - 0x36ab,0x36ac,0x36ad,0x36ae,0x36af,0x36b0,0x36b1,0x36b2,0x36b3,0x36b4, - 0x36b5,0x36b6,0x36b7,0x36b8,0x36b9,0x36ba,0x36bb,0x36bc,0x36bd,0x36be, - 0x36bf,0x36c0,0x36c1,0x36c2,0x36c3,0x36c4,0x36c5,0x36c6,0x36c7,0x36c8, - 0x36c9,0x36ca,0x36cb,0x36cc,0x36cd,0x36ce,0x36cf,0x36d0,0x36d1,0x36d2, - 0x36d3,0x36d4,0x36d5,0x36d6,0x36d7,0x36d8,0x36d9,0x36da,0x36db,0x36dc, - 0x36dd,0x36de,0x36df,0x36e0,0x36e1,0x36e2,0x36e3,0x36e4,0x36e5,0x36e6, - 0x36e7,0x36e8,0x36e9,0x36ea,0x36eb,0x36ec,0x36ed,0x36ee,0x36ef,0x36f0, - 0x36f1,0x36f2,0x36f3,0x36f4,0x36f5,0x36f6,0x36f7,0x36f8,0x36f9,0x36fa, - 0x36fb,0x36fc,0x36fd,0x36fe,0x36ff,0x3700,0x3701,0x3702,0x3703,0x3704, - 0x3705,0x3706,0x3707,0x3708,0x3709,0x370a,0x370b,0x370c,0x370d,0x370e, - 0x370f,0x3710,0x3711,0x3712,0x3713,0x3714,0x3715,0x3716,0x3717,0x3718, - 0x3719,0x371a,0x371b,0x371c,0x371d,0x371e,0x371f,0x3720,0x3721,0x3722, - 0x3723,0x3724,0x3725,0x3726,0x3727,0x3728,0x3729,0x372a,0x372b,0x372c, - 0x372d,0x372e,0x372f,0x3730,0x3731,0x3732,0x3733,0x3734,0x3735,0x3736, - 0x3737,0x3738,0x3739,0x373a,0x373b,0x373c,0x373d,0x373e,0x373f,0x3740, - 0x3741,0x3742,0x3743,0x3744,0x3745,0x3746,0x3747,0x3748,0x3749,0x374a, - 0x374b,0x374c,0x374d,0x374e,0x374f,0x3750,0x3751,0x3752,0x3753,0x3754, - 0x3755,0x3756,0x3757,0x3758,0x3759,0x375a,0x375b,0x375c,0x375d,0x375e, - 0x375f,0x3760,0x3761,0x3762,0x3763,0x3764,0x3765,0x3766,0x3767,0x3768, - 0x3769,0x376a,0x376b,0x376c,0x376d,0x376e,0x376f,0x3770,0x3771,0x3772, - 0x3773,0x3774,0x3775,0x3776,0x3777,0x3778,0x3779,0x377a,0x377b,0x377c, - 0x377d,0x377e,0x377f,0x3780,0x3781,0x3782,0x3783,0x3784,0x3785,0x3786, - 0x3787,0x3788,0x3789,0x378a,0x378b,0x378c,0x378d,0x378e,0x378f,0x3790, - 0x3791,0x3792,0x3793,0x3794,0x3795,0x3796,0x3797,0x3798,0x3799,0x379a, - 0x379b,0x379c,0x379d,0x379e,0x379f,0x37a0,0x37a1,0x37a2,0x37a3,0x37a4, - 0x37a5,0x37a6,0x37a7,0x37a8,0x37a9,0x37aa,0x37ab,0x37ac,0x37ad,0x37ae, - 0x37af,0x37b0,0x37b1,0x37b2,0x37b3,0x37b4,0x37b5,0x37b6,0x37b7,0x37b8, - 0x37b9,0x37ba,0x37bb,0x37bc,0x37bd,0x37be,0x37bf,0x37c0,0x37c1,0x37c2, - 0x37c3,0x37c4,0x37c5,0x37c6,0x37c7,0x37c8,0x37c9,0x37ca,0x37cb,0x37cc, - 0x37cd,0x37ce,0x37cf,0x37d0,0x37d1,0x37d2,0x37d3,0x37d4,0x37d5,0x37d6, - 0x37d7,0x37d8,0x37d9,0x37da,0x37db,0x37dc,0x37dd,0x37de,0x37df,0x37e0, - 0x37e1,0x37e2,0x37e3,0x37e4,0x37e5,0x37e6,0x37e7,0x37e8,0x37e9,0x37ea, - 0x37eb,0x37ec,0x37ed,0x37ee,0x37ef,0x37f0,0x37f1,0x37f2,0x37f3,0x37f4, - 0x37f5,0x37f6,0x37f7,0x37f8,0x37f9,0x37fa,0x37fb,0x37fc,0x37fd,0x37fe, - 0x37ff,0x3800,0x3801,0x3802,0x3803,0x3804,0x3805,0x3806,0x3807,0x3808, - 0x3809,0x380a,0x380b,0x380c,0x380d,0x380e,0x380f,0x3810,0x3811,0x3812, - 0x3813,0x3814,0x3815,0x3816,0x3817,0x3818,0x3819,0x381a,0x381b,0x381c, - 0x381d,0x381e,0x381f,0x3820,0x3821,0x3822,0x3823,0x3824,0x3825,0x3826, - 0x3827,0x3828,0x3829,0x382a,0x382b,0x382c,0x382d,0x382e,0x382f,0x3830, - 0x3831,0x3832,0x3833,0x3834,0x3835,0x3836,0x3837,0x3838,0x3839,0x383a, - 0x383b,0x383c,0x383d,0x383e,0x383f,0x3840,0x3841,0x3842,0x3843,0x3844, - 0x3845,0x3846,0x3847,0x3848,0x3849,0x384a,0x384b,0x384c,0x384d,0x384e, - 0x384f,0x3850,0x3851,0x3852,0x3853,0x3854,0x3855,0x3856,0x3857,0x3858, - 0x3859,0x385a,0x385b,0x385c,0x385d,0x385e,0x385f,0x3860,0x3861,0x3862, - 0x3863,0x3864,0x3865,0x3866,0x3867,0x3868,0x3869,0x386a,0x386b,0x386c, - 0x386d,0x386e,0x386f,0x3870,0x3871,0x3872,0x3873,0x3874,0x3875,0x3876, - 0x3877,0x3878,0x3879,0x387a,0x387b,0x387c,0x387d,0x387e,0x387f,0x3880, - 0x3881,0x3882,0x3883,0x3884,0x3885,0x3886,0x3887,0x3888,0x3889,0x388a, - 0x388b,0x388c,0x388d,0x388e,0x388f,0x3890,0x3891,0x3892,0x3893,0x3894, - 0x3895,0x3896,0x3897,0x3898,0x3899,0x389a,0x389b,0x389c,0x389d,0x389e, - 0x389f,0x38a0,0x38a1,0x38a2,0x38a3,0x38a4,0x38a5,0x38a6,0x38a7,0x38a8, - 0x38a9,0x38aa,0x38ab,0x38ac,0x38ad,0x38ae,0x38af,0x38b0,0x38b1,0x38b2, - 0x38b3,0x38b4,0x38b5,0x38b6,0x38b7,0x38b8,0x38b9,0x38ba,0x38bb,0x38bc, - 0x38bd,0x38be,0x38bf,0x38c0,0x38c1,0x38c2,0x38c3,0x38c4,0x38c5,0x38c6, - 0x38c7,0x38c8,0x38c9,0x38ca,0x38cb,0x38cc,0x38cd,0x38ce,0x38cf,0x38d0, - 0x38d1,0x38d2,0x38d3,0x38d4,0x38d5,0x38d6,0x38d7,0x38d8,0x38d9,0x38da, - 0x38db,0x38dc,0x38dd,0x38de,0x38df,0x38e0,0x38e1,0x38e2,0x38e3,0x38e4, - 0x38e5,0x38e6,0x38e7,0x38e8,0x38e9,0x38ea,0x38eb,0x38ec,0x38ed,0x38ee, - 0x38ef,0x38f0,0x38f1,0x38f2,0x38f3,0x38f4,0x38f5,0x38f6,0x38f7,0x38f8, - 0x38f9,0x38fa,0x38fb,0x38fc,0x38fd,0x38fe,0x38ff,0x3900,0x3901,0x3902, - 0x3903,0x3904,0x3905,0x3906,0x3907,0x3908,0x3909,0x390a,0x390b,0x390c, - 0x390d,0x390e,0x390f,0x3910,0x3911,0x3912,0x3913,0x3914,0x3915,0x3916, - 0x3917,0x3918,0x3919,0x391a,0x391b,0x391c,0x391d,0x391e,0x391f,0x3920, - 0x3921,0x3922,0x3923,0x3924,0x3925,0x3926,0x3927,0x3928,0x3929,0x392a, - 0x392b,0x392c,0x392d,0x392e,0x392f,0x3930,0x3931,0x3932,0x3933,0x3934, - 0x3935,0x3936,0x3937,0x3938,0x3939,0x393a,0x393b,0x393c,0x393d,0x393e, - 0x393f,0x3940,0x3941,0x3942,0x3943,0x3944,0x3945,0x3946,0x3947,0x3948, - 0x3949,0x394a,0x394b,0x394c,0x394d,0x394e,0x394f,0x3950,0x3951,0x3952, - 0x3953,0x3954,0x3955,0x3956,0x3957,0x3958,0x3959,0x395a,0x395b,0x395c, - 0x395d,0x395e,0x395f,0x3960,0x3961,0x3962,0x3963,0x3964,0x3965,0x3966, - 0x3967,0x3968,0x3969,0x396a,0x396b,0x396c,0x396d,0x396e,0x396f,0x3970, - 0x3971,0x3972,0x3973,0x3974,0x3975,0x3976,0x3977,0x3978,0x3979,0x397a, - 0x397b,0x397c,0x397d,0x397e,0x397f,0x3980,0x3981,0x3982,0x3983,0x3984, - 0x3985,0x3986,0x3987,0x3988,0x3989,0x398a,0x398b,0x398c,0x398d,0x398e, - 0x398f,0x3990,0x3991,0x3992,0x3993,0x3994,0x3995,0x3996,0x3997,0x3998, - 0x3999,0x399a,0x399b,0x399c,0x399d,0x399e,0x399f,0x39a0,0x39a1,0x39a2, - 0x39a3,0x39a4,0x39a5,0x39a6,0x39a7,0x39a8,0x39a9,0x39aa,0x39ab,0x39ac, - 0x39ad,0x39ae,0x39af,0x39b0,0x39b1,0x39b2,0x39b3,0x39b4,0x39b5,0x39b6, - 0x39b7,0x39b8,0x39b9,0x39ba,0x39bb,0x39bc,0x39bd,0x39be,0x39bf,0x39c0, - 0x39c1,0x39c2,0x39c3,0x39c4,0x39c5,0x39c6,0x39c7,0x39c8,0x39c9,0x39ca, - 0x39cb,0x39cc,0x39cd,0x39ce,0x39cf,0x39d0,0x39d1,0x39d2,0x39d3,0x39d4, - 0x39d5,0x39d6,0x39d7,0x39d8,0x39d9,0x39da,0x39db,0x39dc,0x39dd,0x39de, - 0x39df,0x39e0,0x39e1,0x39e2,0x39e3,0x39e4,0x39e5,0x39e6,0x39e7,0x39e8, - 0x39e9,0x39ea,0x39eb,0x39ec,0x39ed,0x39ee,0x39ef,0x39f0,0x39f1,0x39f2, - 0x39f3,0x39f4,0x39f5,0x39f6,0x39f7,0x39f8,0x39f9,0x39fa,0x39fb,0x39fc, - 0x39fd,0x39fe,0x39ff,0x3a00,0x3a01,0x3a02,0x3a03,0x3a04,0x3a05,0x3a06, - 0x3a07,0x3a08,0x3a09,0x3a0a,0x3a0b,0x3a0c,0x3a0d,0x3a0e,0x3a0f,0x3a10, - 0x3a11,0x3a12,0x3a13,0x3a14,0x3a15,0x3a16,0x3a17,0x3a18,0x3a19,0x3a1a, - 0x3a1b,0x3a1c,0x3a1d,0x3a1e,0x3a1f,0x3a20,0x3a21,0x3a22,0x3a23,0x3a24, - 0x3a25,0x3a26,0x3a27,0x3a28,0x3a29,0x3a2a,0x3a2b,0x3a2c,0x3a2d,0x3a2e, - 0x3a2f,0x3a30,0x3a31,0x3a32,0x3a33,0x3a34,0x3a35,0x3a36,0x3a37,0x3a38, - 0x3a39,0x3a3a,0x3a3b,0x3a3c,0x3a3d,0x3a3e,0x3a3f,0x3a40,0x3a41,0x3a42, - 0x3a43,0x3a44,0x3a45,0x3a46,0x3a47,0x3a48,0x3a49,0x3a4a,0x3a4b,0x3a4c, - 0x3a4d,0x3a4e,0x3a4f,0x3a50,0x3a51,0x3a52,0x3a53,0x3a54,0x3a55,0x3a56, - 0x3a57,0x3a58,0x3a59,0x3a5a,0x3a5b,0x3a5c,0x3a5d,0x3a5e,0x3a5f,0x3a60, - 0x3a61,0x3a62,0x3a63,0x3a64,0x3a65,0x3a66,0x3a67,0x3a68,0x3a69,0x3a6a, - 0x3a6b,0x3a6c,0x3a6d,0x3a6e,0x3a6f,0x3a70,0x3a71,0x3a72,0x3a73,0x3a74, - 0x3a75,0x3a76,0x3a77,0x3a78,0x3a79,0x3a7a,0x3a7b,0x3a7c,0x3a7d,0x3a7e, - 0x3a7f,0x3a80,0x3a81,0x3a82,0x3a83,0x3a84,0x3a85,0x3a86,0x3a87,0x3a88, - 0x3a89,0x3a8a,0x3a8b,0x3a8c,0x3a8d,0x3a8e,0x3a8f,0x3a90,0x3a91,0x3a92, - 0x3a93,0x3a94,0x3a95,0x3a96,0x3a97,0x3a98,0x3a99,0x3a9a,0x3a9b,0x3a9c, - 0x3a9d,0x3a9e,0x3a9f,0x3aa0,0x3aa1,0x3aa2,0x3aa3,0x3aa4,0x3aa5,0x3aa6, - 0x3aa7,0x3aa8,0x3aa9,0x3aaa,0x3aab,0x3aac,0x3aad,0x3aae,0x3aaf,0x3ab0, - 0x3ab1,0x3ab2,0x3ab3,0x3ab4,0x3ab5,0x3ab6,0x3ab7,0x3ab8,0x3ab9,0x3aba, - 0x3abb,0x3abc,0x3abd,0x3abe,0x3abf,0x3ac0,0x3ac1,0x3ac2,0x3ac3,0x3ac4, - 0x3ac5,0x3ac6,0x3ac7,0x3ac8,0x3ac9,0x3aca,0x3acb,0x3acc,0x3acd,0x3ace, - 0x3acf,0x3ad0,0x3ad1,0x3ad2,0x3ad3,0x3ad4,0x3ad5,0x3ad6,0x3ad7,0x3ad8, - 0x3ad9,0x3ada,0x3adb,0x3adc,0x3add,0x3ade,0x3adf,0x3ae0,0x3ae1,0x3ae2, - 0x3ae3,0x3ae4,0x3ae5,0x3ae6,0x3ae7,0x3ae8,0x3ae9,0x3aea,0x3aeb,0x3aec, - 0x3aed,0x3aee,0x3aef,0x3af0,0x3af1,0x3af2,0x3af3,0x3af4,0x3af5,0x3af6, - 0x3af7,0x3af8,0x3af9,0x3afa,0x3afb,0x3afc,0x3afd,0x3afe,0x3aff,0x3b00, - 0x3b01,0x3b02,0x3b03,0x3b04,0x3b05,0x3b06,0x3b07,0x3b08,0x3b09,0x3b0a, - 0x3b0b,0x3b0c,0x3b0d,0x3b0e,0x3b0f,0x3b10,0x3b11,0x3b12,0x3b13,0x3b14, - 0x3b15,0x3b16,0x3b17,0x3b18,0x3b19,0x3b1a,0x3b1b,0x3b1c,0x3b1d,0x3b1e, - 0x3b1f,0x3b20,0x3b21,0x3b22,0x3b23,0x3b24,0x3b25,0x3b26,0x3b27,0x3b28, - 0x3b29,0x3b2a,0x3b2b,0x3b2c,0x3b2d,0x3b2e,0x3b2f,0x3b30,0x3b31,0x3b32, - 0x3b33,0x3b34,0x3b35,0x3b36,0x3b37,0x3b38,0x3b39,0x3b3a,0x3b3b,0x3b3c, - 0x3b3d,0x3b3e,0x3b3f,0x3b40,0x3b41,0x3b42,0x3b43,0x3b44,0x3b45,0x3b46, - 0x3b47,0x3b48,0x3b49,0x3b4a,0x3b4b,0x3b4c,0x3b4d,0x3b4e,0x3b4f,0x3b50, - 0x3b51,0x3b52,0x3b53,0x3b54,0x3b55,0x3b56,0x3b57,0x3b58,0x3b59,0x3b5a, - 0x3b5b,0x3b5c,0x3b5d,0x3b5e,0x3b5f,0x3b60,0x3b61,0x3b62,0x3b63,0x3b64, - 0x3b65,0x3b66,0x3b67,0x3b68,0x3b69,0x3b6a,0x3b6b,0x3b6c,0x3b6d,0x3b6e, - 0x3b6f,0x3b70,0x3b71,0x3b72,0x3b73,0x3b74,0x3b75,0x3b76,0x3b77,0x3b78, - 0x3b79,0x3b7a,0x3b7b,0x3b7c,0x3b7d,0x3b7e,0x3b7f,0x3b80,0x3b81,0x3b82, - 0x3b83,0x3b84,0x3b85,0x3b86,0x3b87,0x3b88,0x3b89,0x3b8a,0x3b8b,0x3b8c, - 0x3b8d,0x3b8e,0x3b8f,0x3b90,0x3b91,0x3b92,0x3b93,0x3b94,0x3b95,0x3b96, - 0x3b97,0x3b98,0x3b99,0x3b9a,0x3b9b,0x3b9c,0x3b9d,0x3b9e,0x3b9f,0x3ba0, - 0x3ba1,0x3ba2,0x3ba3,0x3ba4,0x3ba5,0x3ba6,0x3ba7,0x3ba8,0x3ba9,0x3baa, - 0x3bab,0x3bac,0x3bad,0x3bae,0x3baf,0x3bb0,0x3bb1,0x3bb2,0x3bb3,0x3bb4, - 0x3bb5,0x3bb6,0x3bb7,0x3bb8,0x3bb9,0x3bba,0x3bbb,0x3bbc,0x3bbd,0x3bbe, - 0x3bbf,0x3bc0,0x3bc1,0x3bc2,0x3bc3,0x3bc4,0x3bc5,0x3bc6,0x3bc7,0x3bc8, - 0x3bc9,0x3bca,0x3bcb,0x3bcc,0x3bcd,0x3bce,0x3bcf,0x3bd0,0x3bd1,0x3bd2, - 0x3bd3,0x3bd4,0x3bd5,0x3bd6,0x3bd7,0x3bd8,0x3bd9,0x3bda,0x3bdb,0x3bdc, - 0x3bdd,0x3bde,0x3bdf,0x3be0,0x3be1,0x3be2,0x3be3,0x3be4,0x3be5,0x3be6, - 0x3be7,0x3be8,0x3be9,0x3bea,0x3beb,0x3bec,0x3bed,0x3bee,0x3bef,0x3bf0, - 0x3bf1,0x3bf2,0x3bf3,0x3bf4,0x3bf5,0x3bf6,0x3bf7,0x3bf8,0x3bf9,0x3bfa, - 0x3bfb,0x3bfc,0x3bfd,0x3bfe,0x3bff,0x3c00,0x3c01,0x3c02,0x3c03,0x3c04, - 0x3c05,0x3c06,0x3c07,0x3c08,0x3c09,0x3c0a,0x3c0b,0x3c0c,0x3c0d,0x3c0e, - 0x3c0f,0x3c10,0x3c11,0x3c12,0x3c13,0x3c14,0x3c15,0x3c16,0x3c17,0x3c18, - 0x3c19,0x3c1a,0x3c1b,0x3c1c,0x3c1d,0x3c1e,0x3c1f,0x3c20,0x3c21,0x3c22, - 0x3c23,0x3c24,0x3c25,0x3c26,0x3c27,0x3c28,0x3c29,0x3c2a,0x3c2b,0x3c2c, - 0x3c2d,0x3c2e,0x3c2f,0x3c30,0x3c31,0x3c32,0x3c33,0x3c34,0x3c35,0x3c36, - 0x3c37,0x3c38,0x3c39,0x3c3a,0x3c3b,0x3c3c,0x3c3d,0x3c3e,0x3c3f,0x3c40, - 0x3c41,0x3c42,0x3c43,0x3c44,0x3c45,0x3c46,0x3c47,0x3c48,0x3c49,0x3c4a, - 0x3c4b,0x3c4c,0x3c4d,0x3c4e,0x3c4f,0x3c50,0x3c51,0x3c52,0x3c53,0x3c54, - 0x3c55,0x3c56,0x3c57,0x3c58,0x3c59,0x3c5a,0x3c5b,0x3c5c,0x3c5d,0x3c5e, - 0x3c5f,0x3c60,0x3c61,0x3c62,0x3c63,0x3c64,0x3c65,0x3c66,0x3c67,0x3c68, - 0x3c69,0x3c6a,0x3c6b,0x3c6c,0x3c6d,0x3c6e,0x3c6f,0x3c70,0x3c71,0x3c72, - 0x3c73,0x3c74,0x3c75,0x3c76,0x3c77,0x3c78,0x3c79,0x3c7a,0x3c7b,0x3c7c, - 0x3c7d,0x3c7e,0x3c7f,0x3c80,0x3c81,0x3c82,0x3c83,0x3c84,0x3c85,0x3c86, - 0x3c87,0x3c88,0x3c89,0x3c8a,0x3c8b,0x3c8c,0x3c8d,0x3c8e,0x3c8f,0x3c90, - 0x3c91,0x3c92,0x3c93,0x3c94,0x3c95,0x3c96,0x3c97,0x3c98,0x3c99,0x3c9a, - 0x3c9b,0x3c9c,0x3c9d,0x3c9e,0x3c9f,0x3ca0,0x3ca1,0x3ca2,0x3ca3,0x3ca4, - 0x3ca5,0x3ca6,0x3ca7,0x3ca8,0x3ca9,0x3caa,0x3cab,0x3cac,0x3cad,0x3cae, - 0x3caf,0x3cb0,0x3cb1,0x3cb2,0x3cb3,0x3cb4,0x3cb5,0x3cb6,0x3cb7,0x3cb8, - 0x3cb9,0x3cba,0x3cbb,0x3cbc,0x3cbd,0x3cbe,0x3cbf,0x3cc0,0x3cc1,0x3cc2, - 0x3cc3,0x3cc4,0x3cc5,0x3cc6,0x3cc7,0x3cc8,0x3cc9,0x3cca,0x3ccb,0x3ccc, - 0x3ccd,0x3cce,0x3ccf,0x3cd0,0x3cd1,0x3cd2,0x3cd3,0x3cd4,0x3cd5,0x3cd6, - 0x3cd7,0x3cd8,0x3cd9,0x3cda,0x3cdb,0x3cdc,0x3cdd,0x3cde,0x3cdf,0x3ce0, - 0x3ce1,0x3ce2,0x3ce3,0x3ce4,0x3ce5,0x3ce6,0x3ce7,0x3ce8,0x3ce9,0x3cea, - 0x3ceb,0x3cec,0x3ced,0x3cee,0x3cef,0x3cf0,0x3cf1,0x3cf2,0x3cf3,0x3cf4, - 0x3cf5,0x3cf6,0x3cf7,0x3cf8,0x3cf9,0x3cfa,0x3cfb,0x3cfc,0x3cfd,0x3cfe, - 0x3cff,0x3d00,0x3d01,0x3d02,0x3d03,0x3d04,0x3d05,0x3d06,0x3d07,0x3d08, - 0x3d09,0x3d0a,0x3d0b,0x3d0c,0x3d0d,0x3d0e,0x3d0f,0x3d10,0x3d11,0x3d12, - 0x3d13,0x3d14,0x3d15,0x3d16,0x3d17,0x3d18,0x3d19,0x3d1a,0x3d1b,0x3d1c, - 0x3d1d,0x3d1e,0x3d1f,0x3d20,0x3d21,0x3d22,0x3d23,0x3d24,0x3d25,0x3d26, - 0x3d27,0x3d28,0x3d29,0x3d2a,0x3d2b,0x3d2c,0x3d2d,0x3d2e,0x3d2f,0x3d30, - 0x3d31,0x3d32,0x3d33,0x3d34,0x3d35,0x3d36,0x3d37,0x3d38,0x3d39,0x3d3a, - 0x3d3b,0x3d3c,0x3d3d,0x3d3e,0x3d3f,0x3d40,0x3d41,0x3d42,0x3d43,0x3d44, - 0x3d45,0x3d46,0x3d47,0x3d48,0x3d49,0x3d4a,0x3d4b,0x3d4c,0x3d4d,0x3d4e, - 0x3d4f,0x3d50,0x3d51,0x3d52,0x3d53,0x3d54,0x3d55,0x3d56,0x3d57,0x3d58, - 0x3d59,0x3d5a,0x3d5b,0x3d5c,0x3d5d,0x3d5e,0x3d5f,0x3d60,0x3d61,0x3d62, - 0x3d63,0x3d64,0x3d65,0x3d66,0x3d67,0x3d68,0x3d69,0x3d6a,0x3d6b,0x3d6c, - 0x3d6d,0x3d6e,0x3d6f,0x3d70,0x3d71,0x3d72,0x3d73,0x3d74,0x3d75,0x3d76, - 0x3d77,0x3d78,0x3d79,0x3d7a,0x3d7b,0x3d7c,0x3d7d,0x3d7e,0x3d7f,0x3d80, - 0x3d81,0x3d82,0x3d83,0x3d84,0x3d85,0x3d86,0x3d87,0x3d88,0x3d89,0x3d8a, - 0x3d8b,0x3d8c,0x3d8d,0x3d8e,0x3d8f,0x3d90,0x3d91,0x3d92,0x3d93,0x3d94, - 0x3d95,0x3d96,0x3d97,0x3d98,0x3d99,0x3d9a,0x3d9b,0x3d9c,0x3d9d,0x3d9e, - 0x3d9f,0x3da0,0x3da1,0x3da2,0x3da3,0x3da4,0x3da5,0x3da6,0x3da7,0x3da8, - 0x3da9,0x3daa,0x3dab,0x3dac,0x3dad,0x3dae,0x3daf,0x3db0,0x3db1,0x3db2, - 0x3db3,0x3db4,0x3db5,0x3db6,0x3db7,0x3db8,0x3db9,0x3dba,0x3dbb,0x3dbc, - 0x3dbd,0x3dbe,0x3dbf,0x3dc0,0x3dc1,0x3dc2,0x3dc3,0x3dc4,0x3dc5,0x3dc6, - 0x3dc7,0x3dc8,0x3dc9,0x3dca,0x3dcb,0x3dcc,0x3dcd,0x3dce,0x3dcf,0x3dd0, - 0x3dd1,0x3dd2,0x3dd3,0x3dd4,0x3dd5,0x3dd6,0x3dd7,0x3dd8,0x3dd9,0x3dda, - 0x3ddb,0x3ddc,0x3ddd,0x3dde,0x3ddf,0x3de0,0x3de1,0x3de2,0x3de3,0x3de4, - 0x3de5,0x3de6,0x3de7,0x3de8,0x3de9,0x3dea,0x3deb,0x3dec,0x3ded,0x3dee, - 0x3def,0x3df0,0x3df1,0x3df2,0x3df3,0x3df4,0x3df5,0x3df6,0x3df7,0x3df8, - 0x3df9,0x3dfa,0x3dfb,0x3dfc,0x3dfd,0x3dfe,0x3dff,0x3e00,0x3e01,0x3e02, - 0x3e03,0x3e04,0x3e05,0x3e06,0x3e07,0x3e08,0x3e09,0x3e0a,0x3e0b,0x3e0c, - 0x3e0d,0x3e0e,0x3e0f,0x3e10,0x3e11,0x3e12,0x3e13,0x3e14,0x3e15,0x3e16, - 0x3e17,0x3e18,0x3e19,0x3e1a,0x3e1b,0x3e1c,0x3e1d,0x3e1e,0x3e1f,0x3e20, - 0x3e21,0x3e22,0x3e23,0x3e24,0x3e25,0x3e26,0x3e27,0x3e28,0x3e29,0x3e2a, - 0x3e2b,0x3e2c,0x3e2d,0x3e2e,0x3e2f,0x3e30,0x3e31,0x3e32,0x3e33,0x3e34, - 0x3e35,0x3e36,0x3e37,0x3e38,0x3e39,0x3e3a,0x3e3b,0x3e3c,0x3e3d,0x3e3e, - 0x3e3f,0x3e40,0x3e41,0x3e42,0x3e43,0x3e44,0x3e45,0x3e46,0x3e47,0x3e48, - 0x3e49,0x3e4a,0x3e4b,0x3e4c,0x3e4d,0x3e4e,0x3e4f,0x3e50,0x3e51,0x3e52, - 0x3e53,0x3e54,0x3e55,0x3e56,0x3e57,0x3e58,0x3e59,0x3e5a,0x3e5b,0x3e5c, - 0x3e5d,0x3e5e,0x3e5f,0x3e60,0x3e61,0x3e62,0x3e63,0x3e64,0x3e65,0x3e66, - 0x3e67,0x3e68,0x3e69,0x3e6a,0x3e6b,0x3e6c,0x3e6d,0x3e6e,0x3e6f,0x3e70, - 0x3e71,0x3e72,0x3e73,0x3e74,0x3e75,0x3e76,0x3e77,0x3e78,0x3e79,0x3e7a, - 0x3e7b,0x3e7c,0x3e7d,0x3e7e,0x3e7f,0x3e80,0x3e81,0x3e82,0x3e83,0x3e84, - 0x3e85,0x3e86,0x3e87,0x3e88,0x3e89,0x3e8a,0x3e8b,0x3e8c,0x3e8d,0x3e8e, - 0x3e8f,0x3e90,0x3e91,0x3e92,0x3e93,0x3e94,0x3e95,0x3e96,0x3e97,0x3e98, - 0x3e99,0x3e9a,0x3e9b,0x3e9c,0x3e9d,0x3e9e,0x3e9f,0x3ea0,0x3ea1,0x3ea2, - 0x3ea3,0x3ea4,0x3ea5,0x3ea6,0x3ea7,0x3ea8,0x3ea9,0x3eaa,0x3eab,0x3eac, - 0x3ead,0x3eae,0x3eaf,0x3eb0,0x3eb1,0x3eb2,0x3eb3,0x3eb4,0x3eb5,0x3eb6, - 0x3eb7,0x3eb8,0x3eb9,0x3eba,0x3ebb,0x3ebc,0x3ebd,0x3ebe,0x3ebf,0x3ec0, - 0x3ec1,0x3ec2,0x3ec3,0x3ec4,0x3ec5,0x3ec6,0x3ec7,0x3ec8,0x3ec9,0x3eca, - 0x3ecb,0x3ecc,0x3ecd,0x3ece,0x3ecf,0x3ed0,0x3ed1,0x3ed2,0x3ed3,0x3ed4, - 0x3ed5,0x3ed6,0x3ed7,0x3ed8,0x3ed9,0x3eda,0x3edb,0x3edc,0x3edd,0x3ede, - 0x3edf,0x3ee0,0x3ee1,0x3ee2,0x3ee3,0x3ee4,0x3ee5,0x3ee6,0x3ee7,0x3ee8, - 0x3ee9,0x3eea,0x3eeb,0x3eec,0x3eed,0x3eee,0x3eef,0x3ef0,0x3ef1,0x3ef2, - 0x3ef3,0x3ef4,0x3ef5,0x3ef6,0x3ef7,0x3ef8,0x3ef9,0x3efa,0x3efb,0x3efc, - 0x3efd,0x3efe,0x3eff,0x3f00,0x3f01,0x3f02,0x3f03,0x3f04,0x3f05,0x3f06, - 0x3f07,0x3f08,0x3f09,0x3f0a,0x3f0b,0x3f0c,0x3f0d,0x3f0e,0x3f0f,0x3f10, - 0x3f11,0x3f12,0x3f13,0x3f14,0x3f15,0x3f16,0x3f17,0x3f18,0x3f19,0x3f1a, - 0x3f1b,0x3f1c,0x3f1d,0x3f1e,0x3f1f,0x3f20,0x3f21,0x3f22,0x3f23,0x3f24, - 0x3f25,0x3f26,0x3f27,0x3f28,0x3f29,0x3f2a,0x3f2b,0x3f2c,0x3f2d,0x3f2e, - 0x3f2f,0x3f30,0x3f31,0x3f32,0x3f33,0x3f34,0x3f35,0x3f36,0x3f37,0x3f38, - 0x3f39,0x3f3a,0x3f3b,0x3f3c,0x3f3d,0x3f3e,0x3f3f,0x3f40,0x3f41,0x3f42, - 0x3f43,0x3f44,0x3f45,0x3f46,0x3f47,0x3f48,0x3f49,0x3f4a,0x3f4b,0x3f4c, - 0x3f4d,0x3f4e,0x3f4f,0x3f50,0x3f51,0x3f52,0x3f53,0x3f54,0x3f55,0x3f56, - 0x3f57,0x3f58,0x3f59,0x3f5a,0x3f5b,0x3f5c,0x3f5d,0x3f5e,0x3f5f,0x3f60, - 0x3f61,0x3f62,0x3f63,0x3f64,0x3f65,0x3f66,0x3f67,0x3f68,0x3f69,0x3f6a, - 0x3f6b,0x3f6c,0x3f6d,0x3f6e,0x3f6f,0x3f70,0x3f71,0x3f72,0x3f73,0x3f74, - 0x3f75,0x3f76,0x3f77,0x3f78,0x3f79,0x3f7a,0x3f7b,0x3f7c,0x3f7d,0x3f7e, - 0x3f7f,0x3f80,0x3f81,0x3f82,0x3f83,0x3f84,0x3f85,0x3f86,0x3f87,0x3f88, - 0x3f89,0x3f8a,0x3f8b,0x3f8c,0x3f8d,0x3f8e,0x3f8f,0x3f90,0x3f91,0x3f92, - 0x3f93,0x3f94,0x3f95,0x3f96,0x3f97,0x3f98,0x3f99,0x3f9a,0x3f9b,0x3f9c, - 0x3f9d,0x3f9e,0x3f9f,0x3fa0,0x3fa1,0x3fa2,0x3fa3,0x3fa4,0x3fa5,0x3fa6, - 0x3fa7,0x3fa8,0x3fa9,0x3faa,0x3fab,0x3fac,0x3fad,0x3fae,0x3faf,0x3fb0, - 0x3fb1,0x3fb2,0x3fb3,0x3fb4,0x3fb5,0x3fb6,0x3fb7,0x3fb8,0x3fb9,0x3fba, - 0x3fbb,0x3fbc,0x3fbd,0x3fbe,0x3fbf,0x3fc0,0x3fc1,0x3fc2,0x3fc3,0x3fc4, - 0x3fc5,0x3fc6,0x3fc7,0x3fc8,0x3fc9,0x3fca,0x3fcb,0x3fcc,0x3fcd,0x3fce, - 0x3fcf,0x3fd0,0x3fd1,0x3fd2,0x3fd3,0x3fd4,0x3fd5,0x3fd6,0x3fd7,0x3fd8, - 0x3fd9,0x3fda,0x3fdb,0x3fdc,0x3fdd,0x3fde,0x3fdf,0x3fe0,0x3fe1,0x3fe2, - 0x3fe3,0x3fe4,0x3fe5,0x3fe6,0x3fe7,0x3fe8,0x3fe9,0x3fea,0x3feb,0x3fec, - 0x3fed,0x3fee,0x3fef,0x3ff0,0x3ff1,0x3ff2,0x3ff3,0x3ff4,0x3ff5,0x3ff6, - 0x3ff7,0x3ff8,0x3ff9,0x3ffa,0x3ffb,0x3ffc,0x3ffd,0x3ffe,0x3fff,0x4000, - 0x4001,0x4002,0x4003,0x4004,0x4005,0x4006,0x4007,0x4008,0x4009,0x400a, - 0x400b,0x400c,0x400d,0x400e,0x400f,0x4010,0x4011,0x4012,0x4013,0x4014, - 0x4015,0x4016,0x4017,0x4018,0x4019,0x401a,0x401b,0x401c,0x401d,0x401e, - 0x401f,0x4020,0x4021,0x4022,0x4023,0x4024,0x4025,0x4026,0x4027,0x4028, - 0x4029,0x402a,0x402b,0x402c,0x402d,0x402e,0x402f,0x4030,0x4031,0x4032, - 0x4033,0x4034,0x4035,0x4036,0x4037,0x4038,0x4039,0x403a,0x403b,0x403c, - 0x403d,0x403e,0x403f,0x4040,0x4041,0x4042,0x4043,0x4044,0x4045,0x4046, - 0x4047,0x4048,0x4049,0x404a,0x404b,0x404c,0x404d,0x404e,0x404f,0x4050, - 0x4051,0x4052,0x4053,0x4054,0x4055,0x4056,0x4057,0x4058,0x4059,0x405a, - 0x405b,0x405c,0x405d,0x405e,0x405f,0x4060,0x4061,0x4062,0x4063,0x4064, - 0x4065,0x4066,0x4067,0x4068,0x4069,0x406a,0x406b,0x406c,0x406d,0x406e, - 0x406f,0x4070,0x4071,0x4072,0x4073,0x4074,0x4075,0x4076,0x4077,0x4078, - 0x4079,0x407a,0x407b,0x407c,0x407d,0x407e,0x407f,0x4080,0x4081,0x4082, - 0x4083,0x4084,0x4085,0x4086,0x4087,0x4088,0x4089,0x408a,0x408b,0x408c, - 0x408d,0x408e,0x408f,0x4090,0x4091,0x4092,0x4093,0x4094,0x4095,0x4096, - 0x4097,0x4098,0x4099,0x409a,0x409b,0x409c,0x409d,0x409e,0x409f,0x40a0, - 0x40a1,0x40a2,0x40a3,0x40a4,0x40a5,0x40a6,0x40a7,0x40a8,0x40a9,0x40aa, - 0x40ab,0x40ac,0x40ad,0x40ae,0x40af,0x40b0,0x40b1,0x40b2,0x40b3,0x40b4, - 0x40b5,0x40b6,0x40b7,0x40b8,0x40b9,0x40ba,0x40bb,0x40bc,0x40bd,0x40be, - 0x40bf,0x40c0,0x40c1,0x40c2,0x40c3,0x40c4,0x40c5,0x40c6,0x40c7,0x40c8, - 0x40c9,0x40ca,0x40cb,0x40cc,0x40cd,0x40ce,0x40cf,0x40d0,0x40d1,0x40d2, - 0x40d3,0x40d4,0x40d5,0x40d6,0x40d7,0x40d8,0x40d9,0x40da,0x40db,0x40dc, - 0x40dd,0x40de,0x40df,0x40e0,0x40e1,0x40e2,0x40e3,0x40e4,0x40e5,0x40e6, - 0x40e7,0x40e8,0x40e9,0x40ea,0x40eb,0x40ec,0x40ed,0x40ee,0x40ef,0x40f0, - 0x40f1,0x40f2,0x40f3,0x40f4,0x40f5,0x40f6,0x40f7,0x40f8,0x40f9,0x40fa, - 0x40fb,0x40fc,0x40fd,0x40fe,0x40ff,0x4100,0x4101,0x4102,0x4103,0x4104, - 0x4105,0x4106,0x4107,0x4108,0x4109,0x410a,0x410b,0x410c,0x410d,0x410e, - 0x410f,0x4110,0x4111,0x4112,0x4113,0x4114,0x4115,0x4116,0x4117,0x4118, - 0x4119,0x411a,0x411b,0x411c,0x411d,0x411e,0x411f,0x4120,0x4121,0x4122, - 0x4123,0x4124,0x4125,0x4126,0x4127,0x4128,0x4129,0x412a,0x412b,0x412c, - 0x412d,0x412e,0x412f,0x4130,0x4131,0x4132,0x4133,0x4134,0x4135,0x4136, - 0x4137,0x4138,0x4139,0x413a,0x413b,0x413c,0x413d,0x413e,0x413f,0x4140, - 0x4141,0x4142,0x4143,0x4144,0x4145,0x4146,0x4147,0x4148,0x4149,0x414a, - 0x414b,0x414c,0x414d,0x414e,0x414f,0x4150,0x4151,0x4152,0x4153,0x4154, - 0x4155,0x4156,0x4157,0x4158,0x4159,0x415a,0x415b,0x415c,0x415d,0x415e, - 0x415f,0x4160,0x4161,0x4162,0x4163,0x4164,0x4165,0x4166,0x4167,0x4168, - 0x4169,0x416a,0x416b,0x416c,0x416d,0x416e,0x416f,0x4170,0x4171,0x4172, - 0x4173,0x4174,0x4175,0x4176,0x4177,0x4178,0x4179,0x417a,0x417b,0x417c, - 0x417d,0x417e,0x417f,0x4180,0x4181,0x4182,0x4183,0x4184,0x4185,0x4186, - 0x4187,0x4188,0x4189,0x418a,0x418b,0x418c,0x418d,0x418e,0x418f,0x4190, - 0x4191,0x4192,0x4193,0x4194,0x4195,0x4196,0x4197,0x4198,0x4199,0x419a, - 0x419b,0x419c,0x419d,0x419e,0x419f,0x41a0,0x41a1,0x41a2,0x41a3,0x41a4, - 0x41a5,0x41a6,0x41a7,0x41a8,0x41a9,0x41aa,0x41ab,0x41ac,0x41ad,0x41ae, - 0x41af,0x41b0,0x41b1,0x41b2,0x41b3,0x41b4,0x41b5,0x41b6,0x41b7,0x41b8, - 0x41b9,0x41ba,0x41bb,0x41bc,0x41bd,0x41be,0x41bf,0x41c0,0x41c1,0x41c2, - 0x41c3,0x41c4,0x41c5,0x41c6,0x41c7,0x41c8,0x41c9,0x41ca,0x41cb,0x41cc, - 0x41cd,0x41ce,0x41cf,0x41d0,0x41d1,0x41d2,0x41d3,0x41d4,0x41d5,0x41d6, - 0x41d7,0x41d8,0x41d9,0x41da,0x41db,0x41dc,0x41dd,0x41de,0x41df,0x41e0, - 0x41e1,0x41e2,0x41e3,0x41e4,0x41e5,0x41e6,0x41e7,0x41e8,0x41e9,0x41ea, - 0x41eb,0x41ec,0x41ed,0x41ee,0x41ef,0x41f0,0x41f1,0x41f2,0x41f3,0x41f4, - 0x41f5,0x41f6,0x41f7,0x41f8,0x41f9,0x41fa,0x41fb,0x41fc,0x41fd,0x41fe, - 0x41ff,0x4200,0x4201,0x4202,0x4203,0x4204,0x4205,0x4206,0x4207,0x4208, - 0x4209,0x420a,0x420b,0x420c,0x420d,0x420e,0x420f,0x4210,0x4211,0x4212, - 0x4213,0x4214,0x4215,0x4216,0x4217,0x4218,0x4219,0x421a,0x421b,0x421c, - 0x421d,0x421e,0x421f,0x4220,0x4221,0x4222,0x4223,0x4224,0x4225,0x4226, - 0x4227,0x4228,0x4229,0x422a,0x422b,0x422c,0x422d,0x422e,0x422f,0x4230, - 0x4231,0x4232,0x4233,0x4234,0x4235,0x4236,0x4237,0x4238,0x4239,0x423a, - 0x423b,0x423c,0x423d,0x423e,0x423f,0x4240,0x4241,0x4242,0x4243,0x4244, - 0x4245,0x4246,0x4247,0x4248,0x4249,0x424a,0x424b,0x424c,0x424d,0x424e, - 0x424f,0x4250,0x4251,0x4252,0x4253,0x4254,0x4255,0x4256,0x4257,0x4258, - 0x4259,0x425a,0x425b,0x425c,0x425d,0x425e,0x425f,0x4260,0x4261,0x4262, - 0x4263,0x4264,0x4265,0x4266,0x4267,0x4268,0x4269,0x426a,0x426b,0x426c, - 0x426d,0x426e,0x426f,0x4270,0x4271,0x4272,0x4273,0x4274,0x4275,0x4276, - 0x4277,0x4278,0x4279,0x427a,0x427b,0x427c,0x427d,0x427e,0x427f,0x4280, - 0x4281,0x4282,0x4283,0x4284,0x4285,0x4286,0x4287,0x4288,0x4289,0x428a, - 0x428b,0x428c,0x428d,0x428e,0x428f,0x4290,0x4291,0x4292,0x4293,0x4294, - 0x4295,0x4296,0x4297,0x4298,0x4299,0x429a,0x429b,0x429c,0x429d,0x429e, - 0x429f,0x42a0,0x42a1,0x42a2,0x42a3,0x42a4,0x42a5,0x42a6,0x42a7,0x42a8, - 0x42a9,0x42aa,0x42ab,0x42ac,0x42ad,0x42ae,0x42af,0x42b0,0x42b1,0x42b2, - 0x42b3,0x42b4,0x42b5,0x42b6,0x42b7,0x42b8,0x42b9,0x42ba,0x42bb,0x42bc, - 0x42bd,0x42be,0x42bf,0x42c0,0x42c1,0x42c2,0x42c3,0x42c4,0x42c5,0x42c6, - 0x42c7,0x42c8,0x42c9,0x42ca,0x42cb,0x42cc,0x42cd,0x42ce,0x42cf,0x42d0, - 0x42d1,0x42d2,0x42d3,0x42d4,0x42d5,0x42d6,0x42d7,0x42d8,0x42d9,0x42da, - 0x42db,0x42dc,0x42dd,0x42de,0x42df,0x42e0,0x42e1,0x42e2,0x42e3,0x42e4, - 0x42e5,0x42e6,0x42e7,0x42e8,0x42e9,0x42ea,0x42eb,0x42ec,0x42ed,0x42ee, - 0x42ef,0x42f0,0x42f1,0x42f2,0x42f3,0x42f4,0x42f5,0x42f6,0x42f7,0x42f8, - 0x42f9,0x42fa,0x42fb,0x42fc,0x42fd,0x42fe,0x42ff,0x4300,0x4301,0x4302, - 0x4303,0x4304,0x4305,0x4306,0x4307,0x4308,0x4309,0x430a,0x430b,0x430c, - 0x430d,0x430e,0x430f,0x4310,0x4311,0x4312,0x4313,0x4314,0x4315,0x4316, - 0x4317,0x4318,0x4319,0x431a,0x431b,0x431c,0x431d,0x431e,0x431f,0x4320, - 0x4321,0x4322,0x4323,0x4324,0x4325,0x4326,0x4327,0x4328,0x4329,0x432a, - 0x432b,0x432c,0x432d,0x432e,0x432f,0x4330,0x4331,0x4332,0x4333,0x4334, - 0x4335,0x4336,0x4337,0x4338,0x4339,0x433a,0x433b,0x433c,0x433d,0x433e, - 0x433f,0x4340,0x4341,0x4342,0x4343,0x4344,0x4345,0x4346,0x4347,0x4348, - 0x4349,0x434a,0x434b,0x434c,0x434d,0x434e,0x434f,0x4350,0x4351,0x4352, - 0x4353,0x4354,0x4355,0x4356,0x4357,0x4358,0x4359,0x435a,0x435b,0x435c, - 0x435d,0x435e,0x435f,0x4360,0x4361,0x4362,0x4363,0x4364,0x4365,0x4366, - 0x4367,0x4368,0x4369,0x436a,0x436b,0x436c,0x436d,0x436e,0x436f,0x4370, - 0x4371,0x4372,0x4373,0x4374,0x4375,0x4376,0x4377,0x4378,0x4379,0x437a, - 0x437b,0x437c,0x437d,0x437e,0x437f,0x4380,0x4381,0x4382,0x4383,0x4384, - 0x4385,0x4386,0x4387,0x4388,0x4389,0x438a,0x438b,0x438c,0x438d,0x438e, - 0x438f,0x4390,0x4391,0x4392,0x4393,0x4394,0x4395,0x4396,0x4397,0x4398, - 0x4399,0x439a,0x439b,0x439c,0x439d,0x439e,0x439f,0x43a0,0x43a1,0x43a2, - 0x43a3,0x43a4,0x43a5,0x43a6,0x43a7,0x43a8,0x43a9,0x43aa,0x43ab,0x43ac, - 0x43ad,0x43ae,0x43af,0x43b0,0x43b1,0x43b2,0x43b3,0x43b4,0x43b5,0x43b6, - 0x43b7,0x43b8,0x43b9,0x43ba,0x43bb,0x43bc,0x43bd,0x43be,0x43bf,0x43c0, - 0x43c1,0x43c2,0x43c3,0x43c4,0x43c5,0x43c6,0x43c7,0x43c8,0x43c9,0x43ca, - 0x43cb,0x43cc,0x43cd,0x43ce,0x43cf,0x43d0,0x43d1,0x43d2,0x43d3,0x43d4, - 0x43d5,0x43d6,0x43d7,0x43d8,0x43d9,0x43da,0x43db,0x43dc,0x43dd,0x43de, - 0x43df,0x43e0,0x43e1,0x43e2,0x43e3,0x43e4,0x43e5,0x43e6,0x43e7,0x43e8, - 0x43e9,0x43ea,0x43eb,0x43ec,0x43ed,0x43ee,0x43ef,0x43f0,0x43f1,0x43f2, - 0x43f3,0x43f4,0x43f5,0x43f6,0x43f7,0x43f8,0x43f9,0x43fa,0x43fb,0x43fc, - 0x43fd,0x43fe,0x43ff,0x4400,0x4401,0x4402,0x4403,0x4404,0x4405,0x4406, - 0x4407,0x4408,0x4409,0x440a,0x440b,0x440c,0x440d,0x440e,0x440f,0x4410, - 0x4411,0x4412,0x4413,0x4414,0x4415,0x4416,0x4417,0x4418,0x4419,0x441a, - 0x441b,0x441c,0x441d,0x441e,0x441f,0x4420,0x4421,0x4422,0x4423,0x4424, - 0x4425,0x4426,0x4427,0x4428,0x4429,0x442a,0x442b,0x442c,0x442d,0x442e, - 0x442f,0x4430,0x4431,0x4432,0x4433,0x4434,0x4435,0x4436,0x4437,0x4438, - 0x4439,0x443a,0x443b,0x443c,0x443d,0x443e,0x443f,0x4440,0x4441,0x4442, - 0x4443,0x4444,0x4445,0x4446,0x4447,0x4448,0x4449,0x444a,0x444b,0x444c, - 0x444d,0x444e,0x444f,0x4450,0x4451,0x4452,0x4453,0x4454,0x4455,0x4456, - 0x4457,0x4458,0x4459,0x445a,0x445b,0x445c,0x445d,0x445e,0x445f,0x4460, - 0x4461,0x4462,0x4463,0x4464,0x4465,0x4466,0x4467,0x4468,0x4469,0x446a, - 0x446b,0x446c,0x446d,0x446e,0x446f,0x4470,0x4471,0x4472,0x4473,0x4474, - 0x4475,0x4476,0x4477,0x4478,0x4479,0x447a,0x447b,0x447c,0x447d,0x447e, - 0x447f,0x4480,0x4481,0x4482,0x4483,0x4484,0x4485,0x4486,0x4487,0x4488, - 0x4489,0x448a,0x448b,0x448c,0x448d,0x448e,0x448f,0x4490,0x4491,0x4492, - 0x4493,0x4494,0x4495,0x4496,0x4497,0x4498,0x4499,0x449a,0x449b,0x449c, - 0x449d,0x449e,0x449f,0x44a0,0x44a1,0x44a2,0x44a3,0x44a4,0x44a5,0x44a6, - 0x44a7,0x44a8,0x44a9,0x44aa,0x44ab,0x44ac,0x44ad,0x44ae,0x44af,0x44b0, - 0x44b1,0x44b2,0x44b3,0x44b4,0x44b5,0x44b6,0x44b7,0x44b8,0x44b9,0x44ba, - 0x44bb,0x44bc,0x44bd,0x44be,0x44bf,0x44c0,0x44c1,0x44c2,0x44c3,0x44c4, - 0x44c5,0x44c6,0x44c7,0x44c8,0x44c9,0x44ca,0x44cb,0x44cc,0x44cd,0x44ce, - 0x44cf,0x44d0,0x44d1,0x44d2,0x44d3,0x44d4,0x44d5,0x44d6,0x44d7,0x44d8, - 0x44d9,0x44da,0x44db,0x44dc,0x44dd,0x44de,0x44df,0x44e0,0x44e1,0x44e2, - 0x44e3,0x44e4,0x44e5,0x44e6,0x44e7,0x44e8,0x44e9,0x44ea,0x44eb,0x44ec, - 0x44ed,0x44ee,0x44ef,0x44f0,0x44f1,0x44f2,0x44f3,0x44f4,0x44f5,0x44f6, - 0x44f7,0x44f8,0x44f9,0x44fa,0x44fb,0x44fc,0x44fd,0x44fe,0x44ff,0x4500, - 0x4501,0x4502,0x4503,0x4504,0x4505,0x4506,0x4507,0x4508,0x4509,0x450a, - 0x450b,0x450c,0x450d,0x450e,0x450f,0x4510,0x4511,0x4512,0x4513,0x4514, - 0x4515,0x4516,0x4517,0x4518,0x4519,0x451a,0x451b,0x451c,0x451d,0x451e, - 0x451f,0x4520,0x4521,0x4522,0x4523,0x4524,0x4525,0x4526,0x4527,0x4528, - 0x4529,0x452a,0x452b,0x452c,0x452d,0x452e,0x452f,0x4530,0x4531,0x4532, - 0x4533,0x4534,0x4535,0x4536,0x4537,0x4538,0x4539,0x453a,0x453b,0x453c, - 0x453d,0x453e,0x453f,0x4540,0x4541,0x4542,0x4543,0x4544,0x4545,0x4546, - 0x4547,0x4548,0x4549,0x454a,0x454b,0x454c,0x454d,0x454e,0x454f,0x4550, - 0x4551,0x4552,0x4553,0x4554,0x4555,0x4556,0x4557,0x4558,0x4559,0x455a, - 0x455b,0x455c,0x455d,0x455e,0x455f,0x4560,0x4561,0x4562,0x4563,0x4564, - 0x4565,0x4566,0x4567,0x4568,0x4569,0x456a,0x456b,0x456c,0x456d,0x456e, - 0x456f,0x4570,0x4571,0x4572,0x4573,0x4574,0x4575,0x4576,0x4577,0x4578, - 0x4579,0x457a,0x457b,0x457c,0x457d,0x457e,0x457f,0x4580,0x4581,0x4582, - 0x4583,0x4584,0x4585,0x4586,0x4587,0x4588,0x4589,0x458a,0x458b,0x458c, - 0x458d,0x458e,0x458f,0x4590,0x4591,0x4592,0x4593,0x4594,0x4595,0x4596, - 0x4597,0x4598,0x4599,0x459a,0x459b,0x459c,0x459d,0x459e,0x459f,0x45a0, - 0x45a1,0x45a2,0x45a3,0x45a4,0x45a5,0x45a6,0x45a7,0x45a8,0x45a9,0x45aa, - 0x45ab,0x45ac,0x45ad,0x45ae,0x45af,0x45b0,0x45b1,0x45b2,0x45b3,0x45b4, - 0x45b5,0x45b6,0x45b7,0x45b8,0x45b9,0x45ba,0x45bb,0x45bc,0x45bd,0x45be, - 0x45bf,0x45c0,0x45c1,0x45c2,0x45c3,0x45c4,0x45c5,0x45c6,0x45c7,0x45c8, - 0x45c9,0x45ca,0x45cb,0x45cc,0x45cd,0x45ce,0x45cf,0x45d0,0x45d1,0x45d2, - 0x45d3,0x45d4,0x45d5,0x45d6,0x45d7,0x45d8,0x45d9,0x45da,0x45db,0x45dc, - 0x45dd,0x45de,0x45df,0x45e0,0x45e1,0x45e2,0x45e3,0x45e4,0x45e5,0x45e6, - 0x45e7,0x45e8,0x45e9,0x45ea,0x45eb,0x45ec,0x45ed,0x45ee,0x45ef,0x45f0, - 0x45f1,0x45f2,0x45f3,0x45f4,0x45f5,0x45f6,0x45f7,0x45f8,0x45f9,0x45fa, - 0x45fb,0x45fc,0x45fd,0x45fe,0x45ff,0x4600,0x4601,0x4602,0x4603,0x4604, - 0x4605,0x4606,0x4607,0x4608,0x4609,0x460a,0x460b,0x460c,0x460d,0x460e, - 0x460f,0x4610,0x4611,0x4612,0x4613,0x4614,0x4615,0x4616,0x4617,0x4618, - 0x4619,0x461a,0x461b,0x461c,0x461d,0x461e,0x461f,0x4620,0x4621,0x4622, - 0x4623,0x4624,0x4625,0x4626,0x4627,0x4628,0x4629,0x462a,0x462b,0x462c, - 0x462d,0x462e,0x462f,0x4630,0x4631,0x4632,0x4633,0x4634,0x4635,0x4636, - 0x4637,0x4638,0x4639,0x463a,0x463b,0x463c,0x463d,0x463e,0x463f,0x4640, - 0x4641,0x4642,0x4643,0x4644,0x4645,0x4646,0x4647,0x4648,0x4649,0x464a, - 0x464b,0x464c,0x464d,0x464e,0x464f,0x4650,0x4651,0x4652,0x4653,0x4654, - 0x4655,0x4656,0x4657,0x4658,0x4659,0x465a,0x465b,0x465c,0x465d,0x465e, - 0x465f,0x4660,0x4661,0x4662,0x4663,0x4664,0x4665,0x4666,0x4667,0x4668, - 0x4669,0x466a,0x466b,0x466c,0x466d,0x466e,0x466f,0x4670,0x4671,0x4672, - 0x4673,0x4674,0x4675,0x4676,0x4677,0x4678,0x4679,0x467a,0x467b,0x467c, - 0x467d,0x467e,0x467f,0x4680,0x4681,0x4682,0x4683,0x4684,0x4685,0x4686, - 0x4687,0x4688,0x4689,0x468a,0x468b,0x468c,0x468d,0x468e,0x468f,0x4690, - 0x4691,0x4692,0x4693,0x4694,0x4695,0x4696,0x4697,0x4698,0x4699,0x469a, - 0x469b,0x469c,0x469d,0x469e,0x469f,0x46a0,0x46a1,0x46a2,0x46a3,0x46a4, - 0x46a5,0x46a6,0x46a7,0x46a8,0x46a9,0x46aa,0x46ab,0x46ac,0x46ad,0x46ae, - 0x46af,0x46b0,0x46b1,0x46b2,0x46b3,0x46b4,0x46b5,0x46b6,0x46b7,0x46b8, - 0x46b9,0x46ba,0x46bb,0x46bc,0x46bd,0x46be,0x46bf,0x46c0,0x46c1,0x46c2, - 0x46c3,0x46c4,0x46c5,0x46c6,0x46c7,0x46c8,0x46c9,0x46ca,0x46cb,0x46cc, - 0x46cd,0x46ce,0x46cf,0x46d0,0x46d1,0x46d2,0x46d3,0x46d4,0x46d5,0x46d6, - 0x46d7,0x46d8,0x46d9,0x46da,0x46db,0x46dc,0x46dd,0x46de,0x46df,0x46e0, - 0x46e1,0x46e2,0x46e3,0x46e4,0x46e5,0x46e6,0x46e7,0x46e8,0x46e9,0x46ea, - 0x46eb,0x46ec,0x46ed,0x46ee,0x46ef,0x46f0,0x46f1,0x46f2,0x46f3,0x46f4, - 0x46f5,0x46f6,0x46f7,0x46f8,0x46f9,0x46fa,0x46fb,0x46fc,0x46fd,0x46fe, - 0x46ff,0x4700,0x4701,0x4702,0x4703,0x4704,0x4705,0x4706,0x4707,0x4708, - 0x4709,0x470a,0x470b,0x470c,0x470d,0x470e,0x470f,0x4710,0x4711,0x4712, - 0x4713,0x4714,0x4715,0x4716,0x4717,0x4718,0x4719,0x471a,0x471b,0x471c, - 0x471d,0x471e,0x471f,0x4720,0x4721,0x4722,0x4723,0x4724,0x4725,0x4726, - 0x4727,0x4728,0x4729,0x472a,0x472b,0x472c,0x472d,0x472e,0x472f,0x4730, - 0x4731,0x4732,0x4733,0x4734,0x4735,0x4736,0x4737,0x4738,0x4739,0x473a, - 0x473b,0x473c,0x473d,0x473e,0x473f,0x4740,0x4741,0x4742,0x4743,0x4744, - 0x4745,0x4746,0x4747,0x4748,0x4749,0x474a,0x474b,0x474c,0x474d,0x474e, - 0x474f,0x4750,0x4751,0x4752,0x4753,0x4754,0x4755,0x4756,0x4757,0x4758, - 0x4759,0x475a,0x475b,0x475c,0x475d,0x475e,0x475f,0x4760,0x4761,0x4762, - 0x4763,0x4764,0x4765,0x4766,0x4767,0x4768,0x4769,0x476a,0x476b,0x476c, - 0x476d,0x476e,0x476f,0x4770,0x4771,0x4772,0x4773,0x4774,0x4775,0x4776, - 0x4777,0x4778,0x4779,0x477a,0x477b,0x477c,0x477d,0x477e,0x477f,0x4780, - 0x4781,0x4782,0x4783,0x4784,0x4785,0x4786,0x4787,0x4788,0x4789,0x478a, - 0x478b,0x478c,0x478d,0x478e,0x478f,0x4790,0x4791,0x4792,0x4793,0x4794, - 0x4795,0x4796,0x4797,0x4798,0x4799,0x479a,0x479b,0x479c,0x479d,0x479e, - 0x479f,0x47a0,0x47a1,0x47a2,0x47a3,0x47a4,0x47a5,0x47a6,0x47a7,0x47a8, - 0x47a9,0x47aa,0x47ab,0x47ac,0x47ad,0x47ae,0x47af,0x47b0,0x47b1,0x47b2, - 0x47b3,0x47b4,0x47b5,0x47b6,0x47b7,0x47b8,0x47b9,0x47ba,0x47bb,0x47bc, - 0x47bd,0x47be,0x47bf,0x47c0,0x47c1,0x47c2,0x47c3,0x47c4,0x47c5,0x47c6, - 0x47c7,0x47c8,0x47c9,0x47ca,0x47cb,0x47cc,0x47cd,0x47ce,0x47cf,0x47d0, - 0x47d1,0x47d2,0x47d3,0x47d4,0x47d5,0x47d6,0x47d7,0x47d8,0x47d9,0x47da, - 0x47db,0x47dc,0x47dd,0x47de,0x47df,0x47e0,0x47e1,0x47e2,0x47e3,0x47e4, - 0x47e5,0x47e6,0x47e7,0x47e8,0x47e9,0x47ea,0x47eb,0x47ec,0x47ed,0x47ee, - 0x47ef,0x47f0,0x47f1,0x47f2,0x47f3,0x47f4,0x47f5,0x47f6,0x47f7,0x47f8, - 0x47f9,0x47fa,0x47fb,0x47fc,0x47fd,0x47fe,0x47ff,0x4800,0x4801,0x4802, - 0x4803,0x4804,0x4805,0x4806,0x4807,0x4808,0x4809,0x480a,0x480b,0x480c, - 0x480d,0x480e,0x480f,0x4810,0x4811,0x4812,0x4813,0x4814,0x4815,0x4816, - 0x4817,0x4818,0x4819,0x481a,0x481b,0x481c,0x481d,0x481e,0x481f,0x4820, - 0x4821,0x4822,0x4823,0x4824,0x4825,0x4826,0x4827,0x4828,0x4829,0x482a, - 0x482b,0x482c,0x482d,0x482e,0x482f,0x4830,0x4831,0x4832,0x4833,0x4834, - 0x4835,0x4836,0x4837,0x4838,0x4839,0x483a,0x483b,0x483c,0x483d,0x483e, - 0x483f,0x4840,0x4841,0x4842,0x4843,0x4844,0x4845,0x4846,0x4847,0x4848, - 0x4849,0x484a,0x484b,0x484c,0x484d,0x484e,0x484f,0x4850,0x4851,0x4852, - 0x4853,0x4854,0x4855,0x4856,0x4857,0x4858,0x4859,0x485a,0x485b,0x485c, - 0x485d,0x485e,0x485f,0x4860,0x4861,0x4862,0x4863,0x4864,0x4865,0x4866, - 0x4867,0x4868,0x4869,0x486a,0x486b,0x486c,0x486d,0x486e,0x486f,0x4870, - 0x4871,0x4872,0x4873,0x4874,0x4875,0x4876,0x4877,0x4878,0x4879,0x487a, - 0x487b,0x487c,0x487d,0x487e,0x487f,0x4880,0x4881,0x4882,0x4883,0x4884, - 0x4885,0x4886,0x4887,0x4888,0x4889,0x488a,0x488b,0x488c,0x488d,0x488e, - 0x488f,0x4890,0x4891,0x4892,0x4893,0x4894,0x4895,0x4896,0x4897,0x4898, - 0x4899,0x489a,0x489b,0x489c,0x489d,0x489e,0x489f,0x48a0,0x48a1,0x48a2, - 0x48a3,0x48a4,0x48a5,0x48a6,0x48a7,0x48a8,0x48a9,0x48aa,0x48ab,0x48ac, - 0x48ad,0x48ae,0x48af,0x48b0,0x48b1,0x48b2,0x48b3,0x48b4,0x48b5,0x48b6, - 0x48b7,0x48b8,0x48b9,0x48ba,0x48bb,0x48bc,0x48bd,0x48be,0x48bf,0x48c0, - 0x48c1,0x48c2,0x48c3,0x48c4,0x48c5,0x48c6,0x48c7,0x48c8,0x48c9,0x48ca, - 0x48cb,0x48cc,0x48cd,0x48ce,0x48cf,0x48d0,0x48d1,0x48d2,0x48d3,0x48d4, - 0x48d5,0x48d6,0x48d7,0x48d8,0x48d9,0x48da,0x48db,0x48dc,0x48dd,0x48de, - 0x48df,0x48e0,0x48e1,0x48e2,0x48e3,0x48e4,0x48e5,0x48e6,0x48e7,0x48e8, - 0x48e9,0x48ea,0x48eb,0x48ec,0x48ed,0x48ee,0x48ef,0x48f0,0x48f1,0x48f2, - 0x48f3,0x48f4,0x48f5,0x48f6,0x48f7,0x48f8,0x48f9,0x48fa,0x48fb,0x48fc, - 0x48fd,0x48fe,0x48ff,0x4900,0x4901,0x4902,0x4903,0x4904,0x4905,0x4906, - 0x4907,0x4908,0x4909,0x490a,0x490b,0x490c,0x490d,0x490e,0x490f,0x4910, - 0x4911,0x4912,0x4913,0x4914,0x4915,0x4916,0x4917,0x4918,0x4919,0x491a, - 0x491b,0x491c,0x491d,0x491e,0x491f,0x4920,0x4921,0x4922,0x4923,0x4924, - 0x4925,0x4926,0x4927,0x4928,0x4929,0x492a,0x492b,0x492c,0x492d,0x492e, - 0x492f,0x4930,0x4931,0x4932,0x4933,0x4934,0x4935,0x4936,0x4937,0x4938, - 0x4939,0x493a,0x493b,0x493c,0x493d,0x493e,0x493f,0x4940,0x4941,0x4942, - 0x4943,0x4944,0x4945,0x4946,0x4947,0x4948,0x4949,0x494a,0x494b,0x494c, - 0x494d,0x494e,0x494f,0x4950,0x4951,0x4952,0x4953,0x4954,0x4955,0x4956, - 0x4957,0x4958,0x4959,0x495a,0x495b,0x495c,0x495d,0x495e,0x495f,0x4960, - 0x4961,0x4962,0x4963,0x4964,0x4965,0x4966,0x4967,0x4968,0x4969,0x496a, - 0x496b,0x496c,0x496d,0x496e,0x496f,0x4970,0x4971,0x4972,0x4973,0x4974, - 0x4975,0x4976,0x4977,0x4978,0x4979,0x497a,0x497b,0x497c,0x497d,0x497e, - 0x497f,0x4980,0x4981,0x4982,0x4983,0x4984,0x4985,0x4986,0x4987,0x4988, - 0x4989,0x498a,0x498b,0x498c,0x498d,0x498e,0x498f,0x4990,0x4991,0x4992, - 0x4993,0x4994,0x4995,0x4996,0x4997,0x4998,0x4999,0x499a,0x499b,0x499c, - 0x499d,0x499e,0x499f,0x49a0,0x49a1,0x49a2,0x49a3,0x49a4,0x49a5,0x49a6, - 0x49a7,0x49a8,0x49a9,0x49aa,0x49ab,0x49ac,0x49ad,0x49ae,0x49af,0x49b0, - 0x49b1,0x49b2,0x49b3,0x49b4,0x49b5,0x49b6,0x49b7,0x49b8,0x49b9,0x49ba, - 0x49bb,0x49bc,0x49bd,0x49be,0x49bf,0x49c0,0x49c1,0x49c2,0x49c3,0x49c4, - 0x49c5,0x49c6,0x49c7,0x49c8,0x49c9,0x49ca,0x49cb,0x49cc,0x49cd,0x49ce, - 0x49cf,0x49d0,0x49d1,0x49d2,0x49d3,0x49d4,0x49d5,0x49d6,0x49d7,0x49d8, - 0x49d9,0x49da,0x49db,0x49dc,0x49dd,0x49de,0x49df,0x49e0,0x49e1,0x49e2, - 0x49e3,0x49e4,0x49e5,0x49e6,0x49e7,0x49e8,0x49e9,0x49ea,0x49eb,0x49ec, - 0x49ed,0x49ee,0x49ef,0x49f0,0x49f1,0x49f2,0x49f3,0x49f4,0x49f5,0x49f6, - 0x49f7,0x49f8,0x49f9,0x49fa,0x49fb,0x49fc,0x49fd,0x49fe,0x49ff,0x4a00, - 0x4a01,0x4a02,0x4a03,0x4a04,0x4a05,0x4a06,0x4a07,0x4a08,0x4a09,0x4a0a, - 0x4a0b,0x4a0c,0x4a0d,0x4a0e,0x4a0f,0x4a10,0x4a11,0x4a12,0x4a13,0x4a14, - 0x4a15,0x4a16,0x4a17,0x4a18,0x4a19,0x4a1a,0x4a1b,0x4a1c,0x4a1d,0x4a1e, - 0x4a1f,0x4a20,0x4a21,0x4a22,0x4a23,0x4a24,0x4a25,0x4a26,0x4a27,0x4a28, - 0x4a29,0x4a2a,0x4a2b,0x4a2c,0x4a2d,0x4a2e,0x4a2f,0x4a30,0x4a31,0x4a32, - 0x4a33,0x4a34,0x4a35,0x4a36,0x4a37,0x4a38,0x4a39,0x4a3a,0x4a3b,0x4a3c, - 0x4a3d,0x4a3e,0x4a3f,0x4a40,0x4a41,0x4a42,0x4a43,0x4a44,0x4a45,0x4a46, - 0x4a47,0x4a48,0x4a49,0x4a4a,0x4a4b,0x4a4c,0x4a4d,0x4a4e,0x4a4f,0x4a50, - 0x4a51,0x4a52,0x4a53,0x4a54,0x4a55,0x4a56,0x4a57,0x4a58,0x4a59,0x4a5a, - 0x4a5b,0x4a5c,0x4a5d,0x4a5e,0x4a5f,0x4a60,0x4a61,0x4a62,0x4a63,0x4a64, - 0x4a65,0x4a66,0x4a67,0x4a68,0x4a69,0x4a6a,0x4a6b,0x4a6c,0x4a6d,0x4a6e, - 0x4a6f,0x4a70,0x4a71,0x4a72,0x4a73,0x4a74,0x4a75,0x4a76,0x4a77,0x4a78, - 0x4a79,0x4a7a,0x4a7b,0x4a7c,0x4a7d,0x4a7e,0x4a7f,0x4a80,0x4a81,0x4a82, - 0x4a83,0x4a84,0x4a85,0x4a86,0x4a87,0x4a88,0x4a89,0x4a8a,0x4a8b,0x4a8c, - 0x4a8d,0x4a8e,0x4a8f,0x4a90,0x4a91,0x4a92,0x4a93,0x4a94,0x4a95,0x4a96, - 0x4a97,0x4a98,0x4a99,0x4a9a,0x4a9b,0x4a9c,0x4a9d,0x4a9e,0x4a9f,0x4aa0, - 0x4aa1,0x4aa2,0x4aa3,0x4aa4,0x4aa5,0x4aa6,0x4aa7,0x4aa8,0x4aa9,0x4aaa, - 0x4aab,0x4aac,0x4aad,0x4aae,0x4aaf,0x4ab0,0x4ab1,0x4ab2,0x4ab3,0x4ab4, - 0x4ab5,0x4ab6,0x4ab7,0x4ab8,0x4ab9,0x4aba,0x4abb,0x4abc,0x4abd,0x4abe, - 0x4abf,0x4ac0,0x4ac1,0x4ac2,0x4ac3,0x4ac4,0x4ac5,0x4ac6,0x4ac7,0x4ac8, - 0x4ac9,0x4aca,0x4acb,0x4acc,0x4acd,0x4ace,0x4acf,0x4ad0,0x4ad1,0x4ad2, - 0x4ad3,0x4ad4,0x4ad5,0x4ad6,0x4ad7,0x4ad8,0x4ad9,0x4ada,0x4adb,0x4adc, - 0x4add,0x4ade,0x4adf,0x4ae0,0x4ae1,0x4ae2,0x4ae3,0x4ae4,0x4ae5,0x4ae6, - 0x4ae7,0x4ae8,0x4ae9,0x4aea,0x4aeb,0x4aec,0x4aed,0x4aee,0x4aef,0x4af0, - 0x4af1,0x4af2,0x4af3,0x4af4,0x4af5,0x4af6,0x4af7,0x4af8,0x4af9,0x4afa, - 0x4afb,0x4afc,0x4afd,0x4afe,0x4aff,0x4b00,0x4b01,0x4b02,0x4b03,0x4b04, - 0x4b05,0x4b06,0x4b07,0x4b08,0x4b09,0x4b0a,0x4b0b,0x4b0c,0x4b0d,0x4b0e, - 0x4b0f,0x4b10,0x4b11,0x4b12,0x4b13,0x4b14,0x4b15,0x4b16,0x4b17,0x4b18, - 0x4b19,0x4b1a,0x4b1b,0x4b1c,0x4b1d,0x4b1e,0x4b1f,0x4b20,0x4b21,0x4b22, - 0x4b23,0x4b24,0x4b25,0x4b26,0x4b27,0x4b28,0x4b29,0x4b2a,0x4b2b,0x4b2c, - 0x4b2d,0x4b2e,0x4b2f,0x4b30,0x4b31,0x4b32,0x4b33,0x4b34,0x4b35,0x4b36, - 0x4b37,0x4b38,0x4b39,0x4b3a,0x4b3b,0x4b3c,0x4b3d,0x4b3e,0x4b3f,0x4b40, - 0x4b41,0x4b42,0x4b43,0x4b44,0x4b45,0x4b46,0x4b47,0x4b48,0x4b49,0x4b4a, - 0x4b4b,0x4b4c,0x4b4d,0x4b4e,0x4b4f,0x4b50,0x4b51,0x4b52,0x4b53,0x4b54, - 0x4b55,0x4b56,0x4b57,0x4b58,0x4b59,0x4b5a,0x4b5b,0x4b5c,0x4b5d,0x4b5e, - 0x4b5f,0x4b60,0x4b61,0x4b62,0x4b63,0x4b64,0x4b65,0x4b66,0x4b67,0x4b68, - 0x4b69,0x4b6a,0x4b6b,0x4b6c,0x4b6d,0x4b6e,0x4b6f,0x4b70,0x4b71,0x4b72, - 0x4b73,0x4b74,0x4b75,0x4b76,0x4b77,0x4b78,0x4b79,0x4b7a,0x4b7b,0x4b7c, - 0x4b7d,0x4b7e,0x4b7f,0x4b80,0x4b81,0x4b82,0x4b83,0x4b84,0x4b85,0x4b86, - 0x4b87,0x4b88,0x4b89,0x4b8a,0x4b8b,0x4b8c,0x4b8d,0x4b8e,0x4b8f,0x4b90, - 0x4b91,0x4b92,0x4b93,0x4b94,0x4b95,0x4b96,0x4b97,0x4b98,0x4b99,0x4b9a, - 0x4b9b,0x4b9c,0x4b9d,0x4b9e,0x4b9f,0x4ba0,0x4ba1,0x4ba2,0x4ba3,0x4ba4, - 0x4ba5,0x4ba6,0x4ba7,0x4ba8,0x4ba9,0x4baa,0x4bab,0x4bac,0x4bad,0x4bae, - 0x4baf,0x4bb0,0x4bb1,0x4bb2,0x4bb3,0x4bb4,0x4bb5,0x4bb6,0x4bb7,0x4bb8, - 0x4bb9,0x4bba,0x4bbb,0x4bbc,0x4bbd,0x4bbe,0x4bbf,0x4bc0,0x4bc1,0x4bc2, - 0x4bc3,0x4bc4,0x4bc5,0x4bc6,0x4bc7,0x4bc8,0x4bc9,0x4bca,0x4bcb,0x4bcc, - 0x4bcd,0x4bce,0x4bcf,0x4bd0,0x4bd1,0x4bd2,0x4bd3,0x4bd4,0x4bd5,0x4bd6, - 0x4bd7,0x4bd8,0x4bd9,0x4bda,0x4bdb,0x4bdc,0x4bdd,0x4bde,0x4bdf,0x4be0, - 0x4be1,0x4be2,0x4be3,0x4be4,0x4be5,0x4be6,0x4be7,0x4be8,0x4be9,0x4bea, - 0x4beb,0x4bec,0x4bed,0x4bee,0x4bef,0x4bf0,0x4bf1,0x4bf2,0x4bf3,0x4bf4, - 0x4bf5,0x4bf6,0x4bf7,0x4bf8,0x4bf9,0x4bfa,0x4bfb,0x4bfc,0x4bfd,0x4bfe, - 0x4bff,0x4c00,0x4c01,0x4c02,0x4c03,0x4c04,0x4c05,0x4c06,0x4c07,0x4c08, - 0x4c09,0x4c0a,0x4c0b,0x4c0c,0x4c0d,0x4c0e,0x4c0f,0x4c10,0x4c11,0x4c12, - 0x4c13,0x4c14,0x4c15,0x4c16,0x4c17,0x4c18,0x4c19,0x4c1a,0x4c1b,0x4c1c, - 0x4c1d,0x4c1e,0x4c1f,0x4c20,0x4c21,0x4c22,0x4c23,0x4c24,0x4c25,0x4c26, - 0x4c27,0x4c28,0x4c29,0x4c2a,0x4c2b,0x4c2c,0x4c2d,0x4c2e,0x4c2f,0x4c30, - 0x4c31,0x4c32,0x4c33,0x4c34,0x4c35,0x4c36,0x4c37,0x4c38,0x4c39,0x4c3a, - 0x4c3b,0x4c3c,0x4c3d,0x4c3e,0x4c3f,0x4c40,0x4c41,0x4c42,0x4c43,0x4c44, - 0x4c45,0x4c46,0x4c47,0x4c48,0x4c49,0x4c4a,0x4c4b,0x4c4c,0x4c4d,0x4c4e, - 0x4c4f,0x4c50,0x4c51,0x4c52,0x4c53,0x4c54,0x4c55,0x4c56,0x4c57,0x4c58, - 0x4c59,0x4c5a,0x4c5b,0x4c5c,0x4c5d,0x4c5e,0x4c5f,0x4c60,0x4c61,0x4c62, - 0x4c63,0x4c64,0x4c65,0x4c66,0x4c67,0x4c68,0x4c69,0x4c6a,0x4c6b,0x4c6c, - 0x4c6d,0x4c6e,0x4c6f,0x4c70,0x4c71,0x4c72,0x4c73,0x4c74,0x4c75,0x4c76, - 0x4c77,0x4c78,0x4c79,0x4c7a,0x4c7b,0x4c7c,0x4c7d,0x4c7e,0x4c7f,0x4c80, - 0x4c81,0x4c82,0x4c83,0x4c84,0x4c85,0x4c86,0x4c87,0x4c88,0x4c89,0x4c8a, - 0x4c8b,0x4c8c,0x4c8d,0x4c8e,0x4c8f,0x4c90,0x4c91,0x4c92,0x4c93,0x4c94, - 0x4c95,0x4c96,0x4c97,0x4c98,0x4c99,0x4c9a,0x4c9b,0x4c9c,0x4c9d,0x4c9e, - 0x4c9f,0x4ca0,0x4ca1,0x4ca2,0x4ca3,0x4ca4,0x4ca5,0x4ca6,0x4ca7,0x4ca8, - 0x4ca9,0x4caa,0x4cab,0x4cac,0x4cad,0x4cae,0x4caf,0x4cb0,0x4cb1,0x4cb2, - 0x4cb3,0x4cb4,0x4cb5,0x4cb6,0x4cb7,0x4cb8,0x4cb9,0x4cba,0x4cbb,0x4cbc, - 0x4cbd,0x4cbe,0x4cbf,0x4cc0,0x4cc1,0x4cc2,0x4cc3,0x4cc4,0x4cc5,0x4cc6, - 0x4cc7,0x4cc8,0x4cc9,0x4cca,0x4ccb,0x4ccc,0x4ccd,0x4cce,0x4ccf,0x4cd0, - 0x4cd1,0x4cd2,0x4cd3,0x4cd4,0x4cd5,0x4cd6,0x4cd7,0x4cd8,0x4cd9,0x4cda, - 0x4cdb,0x4cdc,0x4cdd,0x4cde,0x4cdf,0x4ce0,0x4ce1,0x4ce2,0x4ce3,0x4ce4, - 0x4ce5,0x4ce6,0x4ce7,0x4ce8,0x4ce9,0x4cea,0x4ceb,0x4cec,0x4ced,0x4cee, - 0x4cef,0x4cf0,0x4cf1,0x4cf2,0x4cf3,0x4cf4,0x4cf5,0x4cf6,0x4cf7,0x4cf8, - 0x4cf9,0x4cfa,0x4cfb,0x4cfc,0x4cfd,0x4cfe,0x4cff,0x4d00,0x4d01,0x4d02, - 0x4d03,0x4d04,0x4d05,0x4d06,0x4d07,0x4d08,0x4d09,0x4d0a,0x4d0b,0x4d0c, - 0x4d0d,0x4d0e,0x4d0f,0x4d10,0x4d11,0x4d12,0x4d13,0x4d14,0x4d15,0x4d16, - 0x4d17,0x4d18,0x4d19,0x4d1a,0x4d1b,0x4d1c,0x4d1d,0x4d1e,0x4d1f,0x4d20, - 0x4d21,0x4d22,0x4d23,0x4d24,0x4d25,0x4d26,0x4d27,0x4d28,0x4d29,0x4d2a, - 0x4d2b,0x4d2c,0x4d2d,0x4d2e,0x4d2f,0x4d30,0x4d31,0x4d32,0x4d33,0x4d34, - 0x4d35,0x4d36,0x4d37,0x4d38,0x4d39,0x4d3a,0x4d3b,0x4d3c,0x4d3d,0x4d3e, - 0x4d3f,0x4d40,0x4d41,0x4d42,0x4d43,0x4d44,0x4d45,0x4d46,0x4d47,0x4d48, - 0x4d49,0x4d4a,0x4d4b,0x4d4c,0x4d4d,0x4d4e,0x4d4f,0x4d50,0x4d51,0x4d52, - 0x4d53,0x4d54,0x4d55,0x4d56,0x4d57,0x4d58,0x4d59,0x4d5a,0x4d5b,0x4d5c, - 0x4d5d,0x4d5e,0x4d5f,0x4d60,0x4d61,0x4d62,0x4d63,0x4d64,0x4d65,0x4d66, - 0x4d67,0x4d68,0x4d69,0x4d6a,0x4d6b,0x4d6c,0x4d6d,0x4d6e,0x4d6f,0x4d70, - 0x4d71,0x4d72,0x4d73,0x4d74,0x4d75,0x4d76,0x4d77,0x4d78,0x4d79,0x4d7a, - 0x4d7b,0x4d7c,0x4d7d,0x4d7e,0x4d7f,0x4d80,0x4d81,0x4d82,0x4d83,0x4d84, - 0x4d85,0x4d86,0x4d87,0x4d88,0x4d89,0x4d8a,0x4d8b,0x4d8c,0x4d8d,0x4d8e, - 0x4d8f,0x4d90,0x4d91,0x4d92,0x4d93,0x4d94,0x4d95,0x4d96,0x4d97,0x4d98, - 0x4d99,0x4d9a,0x4d9b,0x4d9c,0x4d9d,0x4d9e,0x4d9f,0x4da0,0x4da1,0x4da2, - 0x4da3,0x4da4,0x4da5,0x4da6,0x4da7,0x4da8,0x4da9,0x4daa,0x4dab,0x4dac, - 0x4dad,0x4dae,0x4daf,0x4db0,0x4db1,0x4db2,0x4db3,0x4db4,0x4db5,0x4e00, - 0x4e01,0x4e02,0x4e03,0x4e04,0x4e05,0x4e06,0x4e07,0x4e08,0x4e09,0x4e0a, - 0x4e0b,0x4e0c,0x4e0d,0x4e0e,0x4e0f,0x4e10,0x4e11,0x4e12,0x4e13,0x4e14, - 0x4e15,0x4e16,0x4e17,0x4e18,0x4e19,0x4e1a,0x4e1b,0x4e1c,0x4e1d,0x4e1e, - 0x4e1f,0x4e20,0x4e21,0x4e22,0x4e23,0x4e24,0x4e25,0x4e26,0x4e27,0x4e28, - 0x4e29,0x4e2a,0x4e2b,0x4e2c,0x4e2d,0x4e2e,0x4e2f,0x4e30,0x4e31,0x4e32, - 0x4e33,0x4e34,0x4e35,0x4e36,0x4e37,0x4e38,0x4e39,0x4e3a,0x4e3b,0x4e3c, - 0x4e3d,0x4e3e,0x4e3f,0x4e40,0x4e41,0x4e42,0x4e43,0x4e44,0x4e45,0x4e46, - 0x4e47,0x4e48,0x4e49,0x4e4a,0x4e4b,0x4e4c,0x4e4d,0x4e4e,0x4e4f,0x4e50, - 0x4e51,0x4e52,0x4e53,0x4e54,0x4e55,0x4e56,0x4e57,0x4e58,0x4e59,0x4e5a, - 0x4e5b,0x4e5c,0x4e5d,0x4e5e,0x4e5f,0x4e60,0x4e61,0x4e62,0x4e63,0x4e64, - 0x4e65,0x4e66,0x4e67,0x4e68,0x4e69,0x4e6a,0x4e6b,0x4e6c,0x4e6d,0x4e6e, - 0x4e6f,0x4e70,0x4e71,0x4e72,0x4e73,0x4e74,0x4e75,0x4e76,0x4e77,0x4e78, - 0x4e79,0x4e7a,0x4e7b,0x4e7c,0x4e7d,0x4e7e,0x4e7f,0x4e80,0x4e81,0x4e82, - 0x4e83,0x4e84,0x4e85,0x4e86,0x4e87,0x4e88,0x4e89,0x4e8a,0x4e8b,0x4e8c, - 0x4e8d,0x4e8e,0x4e8f,0x4e90,0x4e91,0x4e92,0x4e93,0x4e94,0x4e95,0x4e96, - 0x4e97,0x4e98,0x4e99,0x4e9a,0x4e9b,0x4e9c,0x4e9d,0x4e9e,0x4e9f,0x4ea0, - 0x4ea1,0x4ea2,0x4ea3,0x4ea4,0x4ea5,0x4ea6,0x4ea7,0x4ea8,0x4ea9,0x4eaa, - 0x4eab,0x4eac,0x4ead,0x4eae,0x4eaf,0x4eb0,0x4eb1,0x4eb2,0x4eb3,0x4eb4, - 0x4eb5,0x4eb6,0x4eb7,0x4eb8,0x4eb9,0x4eba,0x4ebb,0x4ebc,0x4ebd,0x4ebe, - 0x4ebf,0x4ec0,0x4ec1,0x4ec2,0x4ec3,0x4ec4,0x4ec5,0x4ec6,0x4ec7,0x4ec8, - 0x4ec9,0x4eca,0x4ecb,0x4ecc,0x4ecd,0x4ece,0x4ecf,0x4ed0,0x4ed1,0x4ed2, - 0x4ed3,0x4ed4,0x4ed5,0x4ed6,0x4ed7,0x4ed8,0x4ed9,0x4eda,0x4edb,0x4edc, - 0x4edd,0x4ede,0x4edf,0x4ee0,0x4ee1,0x4ee2,0x4ee3,0x4ee4,0x4ee5,0x4ee6, - 0x4ee7,0x4ee8,0x4ee9,0x4eea,0x4eeb,0x4eec,0x4eed,0x4eee,0x4eef,0x4ef0, - 0x4ef1,0x4ef2,0x4ef3,0x4ef4,0x4ef5,0x4ef6,0x4ef7,0x4ef8,0x4ef9,0x4efa, - 0x4efb,0x4efc,0x4efd,0x4efe,0x4eff,0x4f00,0x4f01,0x4f02,0x4f03,0x4f04, - 0x4f05,0x4f06,0x4f07,0x4f08,0x4f09,0x4f0a,0x4f0b,0x4f0c,0x4f0d,0x4f0e, - 0x4f0f,0x4f10,0x4f11,0x4f12,0x4f13,0x4f14,0x4f15,0x4f16,0x4f17,0x4f18, - 0x4f19,0x4f1a,0x4f1b,0x4f1c,0x4f1d,0x4f1e,0x4f1f,0x4f20,0x4f21,0x4f22, - 0x4f23,0x4f24,0x4f25,0x4f26,0x4f27,0x4f28,0x4f29,0x4f2a,0x4f2b,0x4f2c, - 0x4f2d,0x4f2e,0x4f2f,0x4f30,0x4f31,0x4f32,0x4f33,0x4f34,0x4f35,0x4f36, - 0x4f37,0x4f38,0x4f39,0x4f3a,0x4f3b,0x4f3c,0x4f3d,0x4f3e,0x4f3f,0x4f40, - 0x4f41,0x4f42,0x4f43,0x4f44,0x4f45,0x4f46,0x4f47,0x4f48,0x4f49,0x4f4a, - 0x4f4b,0x4f4c,0x4f4d,0x4f4e,0x4f4f,0x4f50,0x4f51,0x4f52,0x4f53,0x4f54, - 0x4f55,0x4f56,0x4f57,0x4f58,0x4f59,0x4f5a,0x4f5b,0x4f5c,0x4f5d,0x4f5e, - 0x4f5f,0x4f60,0x4f61,0x4f62,0x4f63,0x4f64,0x4f65,0x4f66,0x4f67,0x4f68, - 0x4f69,0x4f6a,0x4f6b,0x4f6c,0x4f6d,0x4f6e,0x4f6f,0x4f70,0x4f71,0x4f72, - 0x4f73,0x4f74,0x4f75,0x4f76,0x4f77,0x4f78,0x4f79,0x4f7a,0x4f7b,0x4f7c, - 0x4f7d,0x4f7e,0x4f7f,0x4f80,0x4f81,0x4f82,0x4f83,0x4f84,0x4f85,0x4f86, - 0x4f87,0x4f88,0x4f89,0x4f8a,0x4f8b,0x4f8c,0x4f8d,0x4f8e,0x4f8f,0x4f90, - 0x4f91,0x4f92,0x4f93,0x4f94,0x4f95,0x4f96,0x4f97,0x4f98,0x4f99,0x4f9a, - 0x4f9b,0x4f9c,0x4f9d,0x4f9e,0x4f9f,0x4fa0,0x4fa1,0x4fa2,0x4fa3,0x4fa4, - 0x4fa5,0x4fa6,0x4fa7,0x4fa8,0x4fa9,0x4faa,0x4fab,0x4fac,0x4fad,0x4fae, - 0x4faf,0x4fb0,0x4fb1,0x4fb2,0x4fb3,0x4fb4,0x4fb5,0x4fb6,0x4fb7,0x4fb8, - 0x4fb9,0x4fba,0x4fbb,0x4fbc,0x4fbd,0x4fbe,0x4fbf,0x4fc0,0x4fc1,0x4fc2, - 0x4fc3,0x4fc4,0x4fc5,0x4fc6,0x4fc7,0x4fc8,0x4fc9,0x4fca,0x4fcb,0x4fcc, - 0x4fcd,0x4fce,0x4fcf,0x4fd0,0x4fd1,0x4fd2,0x4fd3,0x4fd4,0x4fd5,0x4fd6, - 0x4fd7,0x4fd8,0x4fd9,0x4fda,0x4fdb,0x4fdc,0x4fdd,0x4fde,0x4fdf,0x4fe0, - 0x4fe1,0x4fe2,0x4fe3,0x4fe4,0x4fe5,0x4fe6,0x4fe7,0x4fe8,0x4fe9,0x4fea, - 0x4feb,0x4fec,0x4fed,0x4fee,0x4fef,0x4ff0,0x4ff1,0x4ff2,0x4ff3,0x4ff4, - 0x4ff5,0x4ff6,0x4ff7,0x4ff8,0x4ff9,0x4ffa,0x4ffb,0x4ffc,0x4ffd,0x4ffe, - 0x4fff,0x5000,0x5001,0x5002,0x5003,0x5004,0x5005,0x5006,0x5007,0x5008, - 0x5009,0x500a,0x500b,0x500c,0x500d,0x500e,0x500f,0x5010,0x5011,0x5012, - 0x5013,0x5014,0x5015,0x5016,0x5017,0x5018,0x5019,0x501a,0x501b,0x501c, - 0x501d,0x501e,0x501f,0x5020,0x5021,0x5022,0x5023,0x5024,0x5025,0x5026, - 0x5027,0x5028,0x5029,0x502a,0x502b,0x502c,0x502d,0x502e,0x502f,0x5030, - 0x5031,0x5032,0x5033,0x5034,0x5035,0x5036,0x5037,0x5038,0x5039,0x503a, - 0x503b,0x503c,0x503d,0x503e,0x503f,0x5040,0x5041,0x5042,0x5043,0x5044, - 0x5045,0x5046,0x5047,0x5048,0x5049,0x504a,0x504b,0x504c,0x504d,0x504e, - 0x504f,0x5050,0x5051,0x5052,0x5053,0x5054,0x5055,0x5056,0x5057,0x5058, - 0x5059,0x505a,0x505b,0x505c,0x505d,0x505e,0x505f,0x5060,0x5061,0x5062, - 0x5063,0x5064,0x5065,0x5066,0x5067,0x5068,0x5069,0x506a,0x506b,0x506c, - 0x506d,0x506e,0x506f,0x5070,0x5071,0x5072,0x5073,0x5074,0x5075,0x5076, - 0x5077,0x5078,0x5079,0x507a,0x507b,0x507c,0x507d,0x507e,0x507f,0x5080, - 0x5081,0x5082,0x5083,0x5084,0x5085,0x5086,0x5087,0x5088,0x5089,0x508a, - 0x508b,0x508c,0x508d,0x508e,0x508f,0x5090,0x5091,0x5092,0x5093,0x5094, - 0x5095,0x5096,0x5097,0x5098,0x5099,0x509a,0x509b,0x509c,0x509d,0x509e, - 0x509f,0x50a0,0x50a1,0x50a2,0x50a3,0x50a4,0x50a5,0x50a6,0x50a7,0x50a8, - 0x50a9,0x50aa,0x50ab,0x50ac,0x50ad,0x50ae,0x50af,0x50b0,0x50b1,0x50b2, - 0x50b3,0x50b4,0x50b5,0x50b6,0x50b7,0x50b8,0x50b9,0x50ba,0x50bb,0x50bc, - 0x50bd,0x50be,0x50bf,0x50c0,0x50c1,0x50c2,0x50c3,0x50c4,0x50c5,0x50c6, - 0x50c7,0x50c8,0x50c9,0x50ca,0x50cb,0x50cc,0x50cd,0x50ce,0x50cf,0x50d0, - 0x50d1,0x50d2,0x50d3,0x50d4,0x50d5,0x50d6,0x50d7,0x50d8,0x50d9,0x50da, - 0x50db,0x50dc,0x50dd,0x50de,0x50df,0x50e0,0x50e1,0x50e2,0x50e3,0x50e4, - 0x50e5,0x50e6,0x50e7,0x50e8,0x50e9,0x50ea,0x50eb,0x50ec,0x50ed,0x50ee, - 0x50ef,0x50f0,0x50f1,0x50f2,0x50f3,0x50f4,0x50f5,0x50f6,0x50f7,0x50f8, - 0x50f9,0x50fa,0x50fb,0x50fc,0x50fd,0x50fe,0x50ff,0x5100,0x5101,0x5102, - 0x5103,0x5104,0x5105,0x5106,0x5107,0x5108,0x5109,0x510a,0x510b,0x510c, - 0x510d,0x510e,0x510f,0x5110,0x5111,0x5112,0x5113,0x5114,0x5115,0x5116, - 0x5117,0x5118,0x5119,0x511a,0x511b,0x511c,0x511d,0x511e,0x511f,0x5120, - 0x5121,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, - 0x513f,0x5140,0x5141,0x5142,0x5143,0x5144,0x5145,0x5146,0x5147,0x5148, - 0x5149,0x514a,0x514b,0x514c,0x514d,0x514e,0x514f,0x5150,0x5151,0x5152, - 0x5153,0x5154,0x5155,0x5156,0x5157,0x5158,0x5159,0x515a,0x515b,0x515c, - 0x515d,0x515e,0x515f,0x5160,0x5161,0x5162,0x5163,0x5164,0x5165,0x5166, - 0x5167,0x5168,0x5169,0x516a,0x516b,0x516c,0x516d,0x516e,0x516f,0x5170, - 0x5171,0x5172,0x5173,0x5174,0x5175,0x5176,0x5177,0x5178,0x5179,0x517a, - 0x517b,0x517c,0x517d,0x517e,0x517f,0x5180,0x5181,0x5182,0x5183,0x5184, - 0x5185,0x5186,0x5187,0x5188,0x5189,0x518a,0x518b,0x518c,0x518d,0x518e, - 0x518f,0x5190,0x5191,0x5192,0x5193,0x5194,0x5195,0x5196,0x5197,0x5198, - 0x5199,0x519a,0x519b,0x519c,0x519d,0x519e,0x519f,0x51a0,0x51a1,0x51a2, - 0x51a3,0x51a4,0x51a5,0x51a6,0x51a7,0x51a8,0x51a9,0x51aa,0x51ab,0x51ac, - 0x51ad,0x51ae,0x51af,0x51b0,0x51b1,0x51b2,0x51b3,0x51b4,0x51b5,0x51b6, - 0x51b7,0x51b8,0x51b9,0x51ba,0x51bb,0x51bc,0x51bd,0x51be,0x51bf,0x51c0, - 0x51c1,0x51c2,0x51c3,0x51c4,0x51c5,0x51c6,0x51c7,0x51c8,0x51c9,0x51ca, - 0x51cb,0x51cc,0x51cd,0x51ce,0x51cf,0x51d0,0x51d1,0x51d2,0x51d3,0x51d4, - 0x51d5,0x51d6,0x51d7,0x51d8,0x51d9,0x51da,0x51db,0x51dc,0x51dd,0x51de, - 0x51df,0x51e0,0x51e1,0x51e2,0x51e3,0x51e4,0x51e5,0x51e6,0x51e7,0x51e8, - 0x51e9,0x51ea,0x51eb,0x51ec,0x51ed,0x51ee,0x51ef,0x51f0,0x51f1,0x51f2, - 0x51f3,0x51f4,0x51f5,0x51f6,0x51f7,0x51f8,0x51f9,0x51fa,0x51fb,0x51fc, - 0x51fd,0x51fe,0x51ff,0x5200,0x5201,0x5202,0x5203,0x5204,0x5205,0x5206, - 0x5207,0x5208,0x5209,0x520a,0x520b,0x520c,0x520d,0x520e,0x520f,0x5210, - 0x5211,0x5212,0x5213,0x5214,0x5215,0x5216,0x5217,0x5218,0x5219,0x521a, - 0x521b,0x521c,0x521d,0x521e,0x521f,0x5220,0x5221,0x5222,0x5223,0x5224, - 0x5225,0x5226,0x5227,0x5228,0x5229,0x522a,0x522b,0x522c,0x522d,0x522e, - 0x522f,0x5230,0x5231,0x5232,0x5233,0x5234,0x5235,0x5236,0x5237,0x5238, - 0x5239,0x523a,0x523b,0x523c,0x523d,0x523e,0x523f,0x5240,0x5241,0x5242, - 0x5243,0x5244,0x5245,0x5246,0x5247,0x5248,0x5249,0x524a,0x524b,0x524c, - 0x524d,0x524e,0x524f,0x5250,0x5251,0x5252,0x5253,0x5254,0x5255,0x5256, - 0x5257,0x5258,0x5259,0x525a,0x525b,0x525c,0x525d,0x525e,0x525f,0x5260, - 0x5261,0x5262,0x5263,0x5264,0x5265,0x5266,0x5267,0x5268,0x5269,0x526a, - 0x526b,0x526c,0x526d,0x526e,0x526f,0x5270,0x5271,0x5272,0x5273,0x5274, - 0x5275,0x5276,0x5277,0x5278,0x5279,0x527a,0x527b,0x527c,0x527d,0x527e, - 0x527f,0x5280,0x5281,0x5282,0x5283,0x5284,0x5285,0x5286,0x5287,0x5288, - 0x5289,0x528a,0x528b,0x528c,0x528d,0x528e,0x528f,0x5290,0x5291,0x5292, - 0x5293,0x5294,0x5295,0x5296,0x5297,0x5298,0x5299,0x529a,0x529b,0x529c, - 0x529d,0x529e,0x529f,0x52a0,0x52a1,0x52a2,0x52a3,0x52a4,0x52a5,0x52a6, - 0x52a7,0x52a8,0x52a9,0x52aa,0x52ab,0x52ac,0x52ad,0x52ae,0x52af,0x52b0, - 0x52b1,0x52b2,0x52b3,0x52b4,0x52b5,0x52b6,0x52b7,0x52b8,0x52b9,0x52ba, - 0x52bb,0x52bc,0x52bd,0x52be,0x52bf,0x52c0,0x52c1,0x52c2,0x52c3,0x52c4, - 0x52c5,0x52c6,0x52c7,0x52c8,0x52c9,0x52ca,0x52cb,0x52cc,0x52cd,0x52ce, - 0x52cf,0x52d0,0x52d1,0x52d2,0x52d3,0x52d4,0x52d5,0x52d6,0x52d7,0x52d8, - 0x52d9,0x52da,0x52db,0x52dc,0x52dd,0x52de,0x52df,0x52e0,0x52e1,0x52e2, - 0x52e3,0x52e4,0x52e5,0x52e6,0x52e7,0x52e8,0x52e9,0x52ea,0x52eb,0x52ec, - 0x52ed,0x52ee,0x52ef,0x52f0,0x52f1,0x52f2,0x52f3,0x52f4,0x52f5,0x52f6, - 0x52f7,0x52f8,0x52f9,0x52fa,0x52fb,0x52fc,0x52fd,0x52fe,0x52ff,0x5300, - 0x5301,0x5302,0x5303,0x5304,0x5305,0x5306,0x5307,0x5308,0x5309,0x530a, - 0x530b,0x530c,0x530d,0x530e,0x530f,0x5310,0x5311,0x5312,0x5313,0x5314, - 0x5315,0x5316,0x5317,0x5318,0x5319,0x531a,0x531b,0x531c,0x531d,0x531e, - 0x531f,0x5320,0x5321,0x5322,0x5323,0x5324,0x5325,0x5326,0x5327,0x5328, - 0x5329,0x532a,0x532b,0x532c,0x532d,0x532e,0x532f,0x5330,0x5331,0x5332, - 0x5333,0x5334,0x5335,0x5336,0x5337,0x5338,0x5339,0x533a,0x533b,0x533c, - 0x533d,0x533e,0x533f,0x5340,0x5341,0x5342,0x5343,0x5344,0x5345,0x5346, - 0x5347,0x5348,0x5349,0x534a,0x534b,0x534c,0x534d,0x534e,0x534f,0x5350, - 0x5351,0x5352,0x5353,0x5354,0x5355,0x5356,0x5357,0x5358,0x5359,0x535a, - 0x535b,0x535c,0x535d,0x535e,0x535f,0x5360,0x5361,0x5362,0x5363,0x5364, - 0x5365,0x5366,0x5367,0x5368,0x5369,0x536a,0x536b,0x536c,0x536d,0x536e, - 0x536f,0x5370,0x5371,0x5372,0x5373,0x5374,0x5375,0x5376,0x5377,0x5378, - 0x5379,0x537a,0x537b,0x537c,0x537d,0x537e,0x537f,0x5380,0x5381,0x5382, - 0x5383,0x5384,0x5385,0x5386,0x5387,0x5388,0x5389,0x538a,0x538b,0x538c, - 0x538d,0x538e,0x538f,0x5390,0x5391,0x5392,0x5393,0x5394,0x5395,0x5396, - 0x5397,0x5398,0x5399,0x539a,0x539b,0x539c,0x539d,0x539e,0x539f,0x53a0, - 0x53a1,0x53a2,0x53a3,0x53a4,0x53a5,0x53a6,0x53a7,0x53a8,0x53a9,0x53aa, - 0x53ab,0x53ac,0x53ad,0x53ae,0x53af,0x53b0,0x53b1,0x53b2,0x53b3,0x53b4, - 0x53b5,0x53b6,0x53b7,0x53b8,0x53b9,0x53ba,0x53bb,0x53bc,0x53bd,0x53be, - 0x53bf,0x53c0,0x53c1,0x53c2,0x53c3,0x53c4,0x53c5,0x53c6,0x53c7,0x53c8, - 0x53c9,0x53ca,0x53cb,0x53cc,0x53cd,0x53ce,0x53cf,0x53d0,0x53d1,0x53d2, - 0x53d3,0x53d4,0x53d5,0x53d6,0x53d7,0x53d8,0x53d9,0x53da,0x53db,0x53dc, - 0x53dd,0x53de,0x53df,0x53e0,0x53e1,0x53e2,0x53e3,0x53e4,0x53e5,0x53e6, - 0x53e7,0x53e8,0x53e9,0x53ea,0x53eb,0x53ec,0x53ed,0x53ee,0x53ef,0x53f0, - 0x53f1,0x53f2,0x53f3,0x53f4,0x53f5,0x53f6,0x53f7,0x53f8,0x53f9,0x53fa, - 0x53fb,0x53fc,0x53fd,0x53fe,0x53ff,0x5400,0x5401,0x5402,0x5403,0x5404, - 0x5405,0x5406,0x5407,0x5408,0x5409,0x540a,0x540b,0x540c,0x540d,0x540e, - 0x540f,0x5410,0x5411,0x5412,0x5413,0x5414,0x5415,0x5416,0x5417,0x5418, - 0x5419,0x541a,0x541b,0x541c,0x541d,0x541e,0x541f,0x5420,0x5421,0x5422, - 0x5423,0x5424,0x5425,0x5426,0x5427,0x5428,0x5429,0x542a,0x542b,0x542c, - 0x542d,0x542e,0x542f,0x5430,0x5431,0x5432,0x5433,0x5434,0x5435,0x5436, - 0x5437,0x5438,0x5439,0x543a,0x543b,0x543c,0x543d,0x543e,0x543f,0x5440, - 0x5441,0x5442,0x5443,0x5444,0x5445,0x5446,0x5447,0x5448,0x5449,0x544a, - 0x544b,0x544c,0x544d,0x544e,0x544f,0x5450,0x5451,0x5452,0x5453,0x5454, - 0x5455,0x5456,0x5457,0x5458,0x5459,0x545a,0x545b,0x545c,0x545d,0x545e, - 0x545f,0x5460,0x5461,0x5462,0x5463,0x5464,0x5465,0x5466,0x5467,0x5468, - 0x5469,0x546a,0x546b,0x546c,0x546d,0x546e,0x546f,0x5470,0x5471,0x5472, - 0x5473,0x5474,0x5475,0x5476,0x5477,0x5478,0x5479,0x547a,0x547b,0x547c, - 0x547d,0x547e,0x547f,0x5480,0x5481,0x5482,0x5483,0x5484,0x5485,0x5486, - 0x5487,0x5488,0x5489,0x548a,0x548b,0x548c,0x548d,0x548e,0x548f,0x5490, - 0x5491,0x5492,0x5493,0x5494,0x5495,0x5496,0x5497,0x5498,0x5499,0x549a, - 0x549b,0x549c,0x549d,0x549e,0x549f,0x54a0,0x54a1,0x54a2,0x54a3,0x54a4, - 0x54a5,0x54a6,0x54a7,0x54a8,0x54a9,0x54aa,0x54ab,0x54ac,0x54ad,0x54ae, - 0x54af,0x54b0,0x54b1,0x54b2,0x54b3,0x54b4,0x54b5,0x54b6,0x54b7,0x54b8, - 0x54b9,0x54ba,0x54bb,0x54bc,0x54bd,0x54be,0x54bf,0x54c0,0x54c1,0x54c2, - 0x54c3,0x54c4,0x54c5,0x54c6,0x54c7,0x54c8,0x54c9,0x54ca,0x54cb,0x54cc, - 0x54cd,0x54ce,0x54cf,0x54d0,0x54d1,0x54d2,0x54d3,0x54d4,0x54d5,0x54d6, - 0x54d7,0x54d8,0x54d9,0x54da,0x54db,0x54dc,0x54dd,0x54de,0x54df,0x54e0, - 0x54e1,0x54e2,0x54e3,0x54e4,0x54e5,0x54e6,0x54e7,0x54e8,0x54e9,0x54ea, - 0x54eb,0x54ec,0x54ed,0x54ee,0x54ef,0x54f0,0x54f1,0x54f2,0x54f3,0x54f4, - 0x54f5,0x54f6,0x54f7,0x54f8,0x54f9,0x54fa,0x54fb,0x54fc,0x54fd,0x54fe, - 0x54ff,0x5500,0x5501,0x5502,0x5503,0x5504,0x5505,0x5506,0x5507,0x5508, - 0x5509,0x550a,0x550b,0x550c,0x550d,0x550e,0x550f,0x5510,0x5511,0x5512, - 0x5513,0x5514,0x5515,0x5516,0x5517,0x5518,0x5519,0x551a,0x551b,0x551c, - 0x551d,0x551e,0x551f,0x5520,0x5521,0x5522,0x5523,0x5524,0x5525,0x5526, - 0x5527,0x5528,0x5529,0x552a,0x552b,0x552c,0x552d,0x552e,0x552f,0x5530, - 0x5531,0x5532,0x5533,0x5534,0x5535,0x5536,0x5537,0x5538,0x5539,0x553a, - 0x553b,0x553c,0x553d,0x553e,0x553f,0x5540,0x5541,0x5542,0x5543,0x5544, - 0x5545,0x5546,0x5547,0x5548,0x5549,0x554a,0x554b,0x554c,0x554d,0x554e, - 0x554f,0x5550,0x5551,0x5552,0x5553,0x5554,0x5555,0x5556,0x5557,0x5558, - 0x5559,0x555a,0x555b,0x555c,0x555d,0x555e,0x555f,0x5560,0x5561,0x5562, - 0x5563,0x5564,0x5565,0x5566,0x5567,0x5568,0x5569,0x556a,0x556b,0x556c, - 0x556d,0x556e,0x556f,0x5570,0x5571,0x5572,0x5573,0x5574,0x5575,0x5576, - 0x5577,0x5578,0x5579,0x557a,0x557b,0x557c,0x557d,0x557e,0x557f,0x5580, - 0x5581,0x5582,0x5583,0x5584,0x5585,0x5586,0x5587,0x5588,0x5589,0x558a, - 0x558b,0x558c,0x558d,0x558e,0x558f,0x5590,0x5591,0x5592,0x5593,0x5594, - 0x5595,0x5596,0x5597,0x5598,0x5599,0x559a,0x559b,0x559c,0x559d,0x559e, - 0x559f,0x55a0,0x55a1,0x55a2,0x55a3,0x55a4,0x55a5,0x55a6,0x55a7,0x55a8, - 0x55a9,0x55aa,0x55ab,0x55ac,0x55ad,0x55ae,0x55af,0x55b0,0x55b1,0x55b2, - 0x55b3,0x55b4,0x55b5,0x55b6,0x55b7,0x55b8,0x55b9,0x55ba,0x55bb,0x55bc, - 0x55bd,0x55be,0x55bf,0x55c0,0x55c1,0x55c2,0x55c3,0x55c4,0x55c5,0x55c6, - 0x55c7,0x55c8,0x55c9,0x55ca,0x55cb,0x55cc,0x55cd,0x55ce,0x55cf,0x55d0, - 0x55d1,0x55d2,0x55d3,0x55d4,0x55d5,0x55d6,0x55d7,0x55d8,0x55d9,0x55da, - 0x55db,0x55dc,0x55dd,0x55de,0x55df,0x55e0,0x55e1,0x55e2,0x55e3,0x55e4, - 0x55e5,0x55e6,0x55e7,0x55e8,0x55e9,0x55ea,0x55eb,0x55ec,0x55ed,0x55ee, - 0x55ef,0x55f0,0x55f1,0x55f2,0x55f3,0x55f4,0x55f5,0x55f6,0x55f7,0x55f8, - 0x55f9,0x55fa,0x55fb,0x55fc,0x55fd,0x55fe,0x55ff,0x5600,0x5601,0x5602, - 0x5603,0x5604,0x5605,0x5606,0x5607,0x5608,0x5609,0x560a,0x560b,0x560c, - 0x560d,0x560e,0x560f,0x5610,0x5611,0x5612,0x5613,0x5614,0x5615,0x5616, - 0x5617,0x5618,0x5619,0x561a,0x561b,0x561c,0x561d,0x561e,0x561f,0x5620, - 0x5621,0x5622,0x5623,0x5624,0x5625,0x5626,0x5627,0x5628,0x5629,0x562a, - 0x562b,0x562c,0x562d,0x562e,0x562f,0x5630,0x5631,0x5632,0x5633,0x5634, - 0x5635,0x5636,0x5637,0x5638,0x5639,0x563a,0x563b,0x563c,0x563d,0x563e, - 0x563f,0x5640,0x5641,0x5642,0x5643,0x5644,0x5645,0x5646,0x5647,0x5648, - 0x5649,0x564a,0x564b,0x564c,0x564d,0x564e,0x564f,0x5650,0x5651,0x5652, - 0x5653,0x5654,0x5655,0x5656,0x5657,0x5658,0x5659,0x565a,0x565b,0x565c, - 0x565d,0x565e,0x565f,0x5660,0x5661,0x5662,0x5663,0x5664,0x5665,0x5666, - 0x5667,0x5668,0x5669,0x566a,0x566b,0x566c,0x566d,0x566e,0x566f,0x5670, - 0x5671,0x5672,0x5673,0x5674,0x5675,0x5676,0x5677,0x5678,0x5679,0x567a, - 0x567b,0x567c,0x567d,0x567e,0x567f,0x5680,0x5681,0x5682,0x5683,0x5684, - 0x5685,0x5686,0x5687,0x5688,0x5689,0x568a,0x568b,0x568c,0x568d,0x568e, - 0x568f,0x5690,0x5691,0x5692,0x5693,0x5694,0x5695,0x5696,0x5697,0x5698, - 0x5699,0x569a,0x569b,0x569c,0x569d,0x569e,0x569f,0x56a0,0x56a1,0x56a2, - 0x56a3,0x56a4,0x56a5,0x56a6,0x56a7,0x56a8,0x56a9,0x56aa,0x56ab,0x56ac, - 0x56ad,0x56ae,0x56af,0x56b0,0x56b1,0x56b2,0x56b3,0x56b4,0x56b5,0x56b6, - 0x56b7,0x56b8,0x56b9,0x56ba,0x56bb,0x56bc,0x56bd,0x56be,0x56bf,0x56c0, - 0x56c1,0x56c2,0x56c3,0x56c4,0x56c5,0x56c6,0x56c7,0x56c8,0x56c9,0x56ca, - 0x56cb,0x56cc,0x56cd,0x56ce,0x56cf,0x56d0,0x56d1,0x56d2,0x56d3,0x56d4, - 0x56d5,0x56d6,0x56d7,0x56d8,0x56d9,0x56da,0x56db,0x56dc,0x56dd,0x56de, - 0x56df,0x56e0,0x56e1,0x56e2,0x56e3,0x56e4,0x56e5,0x56e6,0x56e7,0x56e8, - 0x56e9,0x56ea,0x56eb,0x56ec,0x56ed,0x56ee,0x56ef,0x56f0,0x56f1,0x56f2, - 0x56f3,0x56f4,0x56f5,0x56f6,0x56f7,0x56f8,0x56f9,0x56fa,0x56fb,0x56fc, - 0x56fd,0x56fe,0x56ff,0x5700,0x5701,0x5702,0x5703,0x5704,0x5705,0x5706, - 0x5707,0x5708,0x5709,0x570a,0x570b,0x570c,0x570d,0x570e,0x570f,0x5710, - 0x5711,0x5712,0x5713,0x5714,0x5715,0x5716,0x5717,0x5718,0x5719,0x571a, - 0x571b,0x571c,0x571d,0x571e,0x571f,0x5720,0x5721,0x5722,0x5723,0x5724, - 0x5725,0x5726,0x5727,0x5728,0x5729,0x572a,0x572b,0x572c,0x572d,0x572e, - 0x572f,0x5730,0x5731,0x5732,0x5733,0x5734,0x5735,0x5736,0x5737,0x5738, - 0x5739,0x573a,0x573b,0x573c,0x573d,0x573e,0x573f,0x5740,0x5741,0x5742, - 0x5743,0x5744,0x5745,0x5746,0x5747,0x5748,0x5749,0x574a,0x574b,0x574c, - 0x574d,0x574e,0x574f,0x5750,0x5751,0x5752,0x5753,0x5754,0x5755,0x5756, - 0x5757,0x5758,0x5759,0x575a,0x575b,0x575c,0x575d,0x575e,0x575f,0x5760, - 0x5761,0x5762,0x5763,0x5764,0x5765,0x5766,0x5767,0x5768,0x5769,0x576a, - 0x576b,0x576c,0x576d,0x576e,0x576f,0x5770,0x5771,0x5772,0x5773,0x5774, - 0x5775,0x5776,0x5777,0x5778,0x5779,0x577a,0x577b,0x577c,0x577d,0x577e, - 0x577f,0x5780,0x5781,0x5782,0x5783,0x5784,0x5785,0x5786,0x5787,0x5788, - 0x5789,0x578a,0x578b,0x578c,0x578d,0x578e,0x578f,0x5790,0x5791,0x5792, - 0x5793,0x5794,0x5795,0x5796,0x5797,0x5798,0x5799,0x579a,0x579b,0x579c, - 0x579d,0x579e,0x579f,0x57a0,0x57a1,0x57a2,0x57a3,0x57a4,0x57a5,0x57a6, - 0x57a7,0x57a8,0x57a9,0x57aa,0x57ab,0x57ac,0x57ad,0x57ae,0x57af,0x57b0, - 0x57b1,0x57b2,0x57b3,0x57b4,0x57b5,0x57b6,0x57b7,0x57b8,0x57b9,0x57ba, - 0x57bb,0x57bc,0x57bd,0x57be,0x57bf,0x57c0,0x57c1,0x57c2,0x57c3,0x57c4, - 0x57c5,0x57c6,0x57c7,0x57c8,0x57c9,0x57ca,0x57cb,0x57cc,0x57cd,0x57ce, - 0x57cf,0x57d0,0x57d1,0x57d2,0x57d3,0x57d4,0x57d5,0x57d6,0x57d7,0x57d8, - 0x57d9,0x57da,0x57db,0x57dc,0x57dd,0x57de,0x57df,0x57e0,0x57e1,0x57e2, - 0x57e3,0x57e4,0x57e5,0x57e6,0x57e7,0x57e8,0x57e9,0x57ea,0x57eb,0x57ec, - 0x57ed,0x57ee,0x57ef,0x57f0,0x57f1,0x57f2,0x57f3,0x57f4,0x57f5,0x57f6, - 0x57f7,0x57f8,0x57f9,0x57fa,0x57fb,0x57fc,0x57fd,0x57fe,0x57ff,0x5800, - 0x5801,0x5802,0x5803,0x5804,0x5805,0x5806,0x5807,0x5808,0x5809,0x580a, - 0x580b,0x580c,0x580d,0x580e,0x580f,0x5810,0x5811,0x5812,0x5813,0x5814, - 0x5815,0x5816,0x5817,0x5818,0x5819,0x581a,0x581b,0x581c,0x581d,0x581e, - 0x581f,0x5820,0x5821,0x5822,0x5823,0x5824,0x5825,0x5826,0x5827,0x5828, - 0x5829,0x582a,0x582b,0x582c,0x582d,0x582e,0x582f,0x5830,0x5831,0x5832, - 0x5833,0x5834,0x5835,0x5836,0x5837,0x5838,0x5839,0x583a,0x583b,0x583c, - 0x583d,0x583e,0x583f,0x5840,0x5841,0x5842,0x5843,0x5844,0x5845,0x5846, - 0x5847,0x5848,0x5849,0x584a,0x584b,0x584c,0x584d,0x584e,0x584f,0x5850, - 0x5851,0x5852,0x5853,0x5854,0x5855,0x5856,0x5857,0x5858,0x5859,0x585a, - 0x585b,0x585c,0x585d,0x585e,0x585f,0x5860,0x5861,0x5862,0x5863,0x5864, - 0x5865,0x5866,0x5867,0x5868,0x5869,0x586a,0x586b,0x586c,0x586d,0x586e, - 0x586f,0x5870,0x5871,0x5872,0x5873,0x5874,0x5875,0x5876,0x5877,0x5878, - 0x5879,0x587a,0x587b,0x587c,0x587d,0x587e,0x587f,0x5880,0x5881,0x5882, - 0x5883,0x5884,0x5885,0x5886,0x5887,0x5888,0x5889,0x588a,0x588b,0x588c, - 0x588d,0x588e,0x588f,0x5890,0x5891,0x5892,0x5893,0x5894,0x5895,0x5896, - 0x5897,0x5898,0x5899,0x589a,0x589b,0x589c,0x589d,0x589e,0x589f,0x58a0, - 0x58a1,0x58a2,0x58a3,0x58a4,0x58a5,0x58a6,0x58a7,0x58a8,0x58a9,0x58aa, - 0x58ab,0x58ac,0x58ad,0x58ae,0x58af,0x58b0,0x58b1,0x58b2,0x58b3,0x58b4, - 0x58b5,0x58b6,0x58b7,0x58b8,0x58b9,0x58ba,0x58bb,0x58bc,0x58bd,0x58be, - 0x58bf,0x58c0,0x58c1,0x58c2,0x58c3,0x58c4,0x58c5,0x58c6,0x58c7,0x58c8, - 0x58c9,0x58ca,0x58cb,0x58cc,0x58cd,0x58ce,0x58cf,0x58d0,0x58d1,0x58d2, - 0x58d3,0x58d4,0x58d5,0x58d6,0x58d7,0x58d8,0x58d9,0x58da,0x58db,0x58dc, - 0x58dd,0x58de,0x58df,0x58e0,0x58e1,0x58e2,0x58e3,0x58e4,0x58e5,0x58e6, - 0x58e7,0x58e8,0x58e9,0x58ea,0x58eb,0x58ec,0x58ed,0x58ee,0x58ef,0x58f0, - 0x58f1,0x58f2,0x58f3,0x58f4,0x58f5,0x58f6,0x58f7,0x58f8,0x58f9,0x58fa, - 0x58fb,0x58fc,0x58fd,0x58fe,0x58ff,0x5900,0x5901,0x5902,0x5903,0x5904, - 0x5905,0x5906,0x5907,0x5908,0x5909,0x590a,0x590b,0x590c,0x590d,0x590e, - 0x590f,0x5910,0x5911,0x5912,0x5913,0x5914,0x5915,0x5916,0x5917,0x5918, - 0x5919,0x591a,0x591b,0x591c,0x591d,0x591e,0x591f,0x5920,0x5921,0x5922, - 0x5923,0x5924,0x5925,0x5926,0x5927,0x5928,0x5929,0x592a,0x592b,0x592c, - 0x592d,0x592e,0x592f,0x5930,0x5931,0x5932,0x5933,0x5934,0x5935,0x5936, - 0x5937,0x5938,0x5939,0x593a,0x593b,0x593c,0x593d,0x593e,0x593f,0x5940, - 0x5941,0x5942,0x5943,0x5944,0x5945,0x5946,0x5947,0x5948,0x5949,0x594a, - 0x594b,0x594c,0x594d,0x594e,0x594f,0x5950,0x5951,0x5952,0x5953,0x5954, - 0x5955,0x5956,0x5957,0x5958,0x5959,0x595a,0x595b,0x595c,0x595d,0x595e, - 0x595f,0x5960,0x5961,0x5962,0x5963,0x5964,0x5965,0x5966,0x5967,0x5968, - 0x5969,0x596a,0x596b,0x596c,0x596d,0x596e,0x596f,0x5970,0x5971,0x5972, - 0x5973,0x5974,0x5975,0x5976,0x5977,0x5978,0x5979,0x597a,0x597b,0x597c, - 0x597d,0x597e,0x597f,0x5980,0x5981,0x5982,0x5983,0x5984,0x5985,0x5986, - 0x5987,0x5988,0x5989,0x598a,0x598b,0x598c,0x598d,0x598e,0x598f,0x5990, - 0x5991,0x5992,0x5993,0x5994,0x5995,0x5996,0x5997,0x5998,0x5999,0x599a, - 0x599b,0x599c,0x599d,0x599e,0x599f,0x59a0,0x59a1,0x59a2,0x59a3,0x59a4, - 0x59a5,0x59a6,0x59a7,0x59a8,0x59a9,0x59aa,0x59ab,0x59ac,0x59ad,0x59ae, - 0x59af,0x59b0,0x59b1,0x59b2,0x59b3,0x59b4,0x59b5,0x59b6,0x59b7,0x59b8, - 0x59b9,0x59ba,0x59bb,0x59bc,0x59bd,0x59be,0x59bf,0x59c0,0x59c1,0x59c2, - 0x59c3,0x59c4,0x59c5,0x59c6,0x59c7,0x59c8,0x59c9,0x59ca,0x59cb,0x59cc, - 0x59cd,0x59ce,0x59cf,0x59d0,0x59d1,0x59d2,0x59d3,0x59d4,0x59d5,0x59d6, - 0x59d7,0x59d8,0x59d9,0x59da,0x59db,0x59dc,0x59dd,0x59de,0x59df,0x59e0, - 0x59e1,0x59e2,0x59e3,0x59e4,0x59e5,0x59e6,0x59e7,0x59e8,0x59e9,0x59ea, - 0x59eb,0x59ec,0x59ed,0x59ee,0x59ef,0x59f0,0x59f1,0x59f2,0x59f3,0x59f4, - 0x59f5,0x59f6,0x59f7,0x59f8,0x59f9,0x59fa,0x59fb,0x59fc,0x59fd,0x59fe, - 0x59ff,0x5a00,0x5a01,0x5a02,0x5a03,0x5a04,0x5a05,0x5a06,0x5a07,0x5a08, - 0x5a09,0x5a0a,0x5a0b,0x5a0c,0x5a0d,0x5a0e,0x5a0f,0x5a10,0x5a11,0x5a12, - 0x5a13,0x5a14,0x5a15,0x5a16,0x5a17,0x5a18,0x5a19,0x5a1a,0x5a1b,0x5a1c, - 0x5a1d,0x5a1e,0x5a1f,0x5a20,0x5a21,0x5a22,0x5a23,0x5a24,0x5a25,0x5a26, - 0x5a27,0x5a28,0x5a29,0x5a2a,0x5a2b,0x5a2c,0x5a2d,0x5a2e,0x5a2f,0x5a30, - 0x5a31,0x5a32,0x5a33,0x5a34,0x5a35,0x5a36,0x5a37,0x5a38,0x5a39,0x5a3a, - 0x5a3b,0x5a3c,0x5a3d,0x5a3e,0x5a3f,0x5a40,0x5a41,0x5a42,0x5a43,0x5a44, - 0x5a45,0x5a46,0x5a47,0x5a48,0x5a49,0x5a4a,0x5a4b,0x5a4c,0x5a4d,0x5a4e, - 0x5a4f,0x5a50,0x5a51,0x5a52,0x5a53,0x5a54,0x5a55,0x5a56,0x5a57,0x5a58, - 0x5a59,0x5a5a,0x5a5b,0x5a5c,0x5a5d,0x5a5e,0x5a5f,0x5a60,0x5a61,0x5a62, - 0x5a63,0x5a64,0x5a65,0x5a66,0x5a67,0x5a68,0x5a69,0x5a6a,0x5a6b,0x5a6c, - 0x5a6d,0x5a6e,0x5a6f,0x5a70,0x5a71,0x5a72,0x5a73,0x5a74,0x5a75,0x5a76, - 0x5a77,0x5a78,0x5a79,0x5a7a,0x5a7b,0x5a7c,0x5a7d,0x5a7e,0x5a7f,0x5a80, - 0x5a81,0x5a82,0x5a83,0x5a84,0x5a85,0x5a86,0x5a87,0x5a88,0x5a89,0x5a8a, - 0x5a8b,0x5a8c,0x5a8d,0x5a8e,0x5a8f,0x5a90,0x5a91,0x5a92,0x5a93,0x5a94, - 0x5a95,0x5a96,0x5a97,0x5a98,0x5a99,0x5a9a,0x5a9b,0x5a9c,0x5a9d,0x5a9e, - 0x5a9f,0x5aa0,0x5aa1,0x5aa2,0x5aa3,0x5aa4,0x5aa5,0x5aa6,0x5aa7,0x5aa8, - 0x5aa9,0x5aaa,0x5aab,0x5aac,0x5aad,0x5aae,0x5aaf,0x5ab0,0x5ab1,0x5ab2, - 0x5ab3,0x5ab4,0x5ab5,0x5ab6,0x5ab7,0x5ab8,0x5ab9,0x5aba,0x5abb,0x5abc, - 0x5abd,0x5abe,0x5abf,0x5ac0,0x5ac1,0x5ac2,0x5ac3,0x5ac4,0x5ac5,0x5ac6, - 0x5ac7,0x5ac8,0x5ac9,0x5aca,0x5acb,0x5acc,0x5acd,0x5ace,0x5acf,0x5ad0, - 0x5ad1,0x5ad2,0x5ad3,0x5ad4,0x5ad5,0x5ad6,0x5ad7,0x5ad8,0x5ad9,0x5ada, - 0x5adb,0x5adc,0x5add,0x5ade,0x5adf,0x5ae0,0x5ae1,0x5ae2,0x5ae3,0x5ae4, - 0x5ae5,0x5ae6,0x5ae7,0x5ae8,0x5ae9,0x5aea,0x5aeb,0x5aec,0x5aed,0x5aee, - 0x5aef,0x5af0,0x5af1,0x5af2,0x5af3,0x5af4,0x5af5,0x5af6,0x5af7,0x5af8, - 0x5af9,0x5afa,0x5afb,0x5afc,0x5afd,0x5afe,0x5aff,0x5b00,0x5b01,0x5b02, - 0x5b03,0x5b04,0x5b05,0x5b06,0x5b07,0x5b08,0x5b09,0x5b0a,0x5b0b,0x5b0c, - 0x5b0d,0x5b0e,0x5b0f,0x5b10,0x5b11,0x5b12,0x5b13,0x5b14,0x5b15,0x5b16, - 0x5b17,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,0x5b32,0x5b33,0x5b34, - 0x5b35,0x5b36,0x5b37,0x5b38,0x5b39,0x5b3a,0x5b3b,0x5b3c,0x5b3d,0x5b3e, - 0x5b3f,0x5b40,0x5b41,0x5b42,0x5b43,0x5b44,0x5b45,0x5b46,0x5b47,0x5b48, - 0x5b49,0x5b4a,0x5b4b,0x5b4c,0x5b4d,0x5b4e,0x5b4f,0x5b50,0x5b51,0x5b52, - 0x5b53,0x5b54,0x5b55,0x5b56,0x5b57,0x5b58,0x5b59,0x5b5a,0x5b5b,0x5b5c, - 0x5b5d,0x5b5e,0x5b5f,0x5b60,0x5b61,0x5b62,0x5b63,0x5b64,0x5b65,0x5b66, - 0x5b67,0x5b68,0x5b69,0x5b6a,0x5b6b,0x5b6c,0x5b6d,0x5b6e,0x5b6f,0x5b70, - 0x5b71,0x5b72,0x5b73,0x5b74,0x5b75,0x5b76,0x5b77,0x5b78,0x5b79,0x5b7a, - 0x5b7b,0x5b7c,0x5b7d,0x5b7e,0x5b7f,0x5b80,0x5b81,0x5b82,0x5b83,0x5b84, - 0x5b85,0x5b86,0x5b87,0x5b88,0x5b89,0x5b8a,0x5b8b,0x5b8c,0x5b8d,0x5b8e, - 0x5b8f,0x5b90,0x5b91,0x5b92,0x5b93,0x5b94,0x5b95,0x5b96,0x5b97,0x5b98, - 0x5b99,0x5b9a,0x5b9b,0x5b9c,0x5b9d,0x5b9e,0x5b9f,0x5ba0,0x5ba1,0x5ba2, - 0x5ba3,0x5ba4,0x5ba5,0x5ba6,0x5ba7,0x5ba8,0x5ba9,0x5baa,0x5bab,0x5bac, - 0x5bad,0x5bae,0x5baf,0x5bb0,0x5bb1,0x5bb2,0x5bb3,0x5bb4,0x5bb5,0x5bb6, - 0x5bb7,0x5bb8,0x5bb9,0x5bba,0x5bbb,0x5bbc,0x5bbd,0x5bbe,0x5bbf,0x5bc0, - 0x5bc1,0x5bc2,0x5bc3,0x5bc4,0x5bc5,0x5bc6,0x5bc7,0x5bc8,0x5bc9,0x5bca, - 0x5bcb,0x5bcc,0x5bcd,0x5bce,0x5bcf,0x5bd0,0x5bd1,0x5bd2,0x5bd3,0x5bd4, - 0x5bd5,0x5bd6,0x5bd7,0x5bd8,0x5bd9,0x5bda,0x5bdb,0x5bdc,0x5bdd,0x5bde, - 0x5bdf,0x5be0,0x5be1,0x5be2,0x5be3,0x5be4,0x5be5,0x5be6,0x5be7,0x5be8, - 0x5be9,0x5bea,0x5beb,0x5bec,0x5bed,0x5bee,0x5bef,0x5bf0,0x5bf1,0x5bf2, - 0x5bf3,0x5bf4,0x5bf5,0x5bf6,0x5bf7,0x5bf8,0x5bf9,0x5bfa,0x5bfb,0x5bfc, - 0x5bfd,0x5bfe,0x5bff,0x5c00,0x5c01,0x5c02,0x5c03,0x5c04,0x5c05,0x5c06, - 0x5c07,0x5c08,0x5c09,0x5c0a,0x5c0b,0x5c0c,0x5c0d,0x5c0e,0x5c0f,0x5c10, - 0x5c11,0x5c12,0x5c13,0x5c14,0x5c15,0x5c16,0x5c17,0x5c18,0x5c19,0x5c1a, - 0x5c1b,0x5c1c,0x5c1d,0x5c1e,0x5c1f,0x5c20,0x5c21,0x5c22,0x5c23,0x5c24, - 0x5c25,0x5c26,0x5c27,0x5c28,0x5c29,0x5c2a,0x5c2b,0x5c2c,0x5c2d,0x5c2e, - 0x5c2f,0x5c30,0x5c31,0x5c32,0x5c33,0x5c34,0x5c35,0x5c36,0x5c37,0x5c38, - 0x5c39,0x5c3a,0x5c3b,0x5c3c,0x5c3d,0x5c3e,0x5c3f,0x5c40,0x5c41,0x5c42, - 0x5c43,0x5c44,0x5c45,0x5c46,0x5c47,0x5c48,0x5c49,0x5c4a,0x5c4b,0x5c4c, - 0x5c4d,0x5c4e,0x5c4f,0x5c50,0x5c51,0x5c52,0x5c53,0x5c54,0x5c55,0x5c56, - 0x5c57,0x5c58,0x5c59,0x5c5a,0x5c5b,0x5c5c,0x5c5d,0x5c5e,0x5c5f,0x5c60, - 0x5c61,0x5c62,0x5c63,0x5c64,0x5c65,0x5c66,0x5c67,0x5c68,0x5c69,0x5c6a, - 0x5c6b,0x5c6c,0x5c6d,0x5c6e,0x5c6f,0x5c70,0x5c71,0x5c72,0x5c73,0x5c74, - 0x5c75,0x5c76,0x5c77,0x5c78,0x5c79,0x5c7a,0x5c7b,0x5c7c,0x5c7d,0x5c7e, - 0x5c7f,0x5c80,0x5c81,0x5c82,0x5c83,0x5c84,0x5c85,0x5c86,0x5c87,0x5c88, - 0x5c89,0x5c8a,0x5c8b,0x5c8c,0x5c8d,0x5c8e,0x5c8f,0x5c90,0x5c91,0x5c92, - 0x5c93,0x5c94,0x5c95,0x5c96,0x5c97,0x5c98,0x5c99,0x5c9a,0x5c9b,0x5c9c, - 0x5c9d,0x5c9e,0x5c9f,0x5ca0,0x5ca1,0x5ca2,0x5ca3,0x5ca4,0x5ca5,0x5ca6, - 0x5ca7,0x5ca8,0x5ca9,0x5caa,0x5cab,0x5cac,0x5cad,0x5cae,0x5caf,0x5cb0, - 0x5cb1,0x5cb2,0x5cb3,0x5cb4,0x5cb5,0x5cb6,0x5cb7,0x5cb8,0x5cb9,0x5cba, - 0x5cbb,0x5cbc,0x5cbd,0x5cbe,0x5cbf,0x5cc0,0x5cc1,0x5cc2,0x5cc3,0x5cc4, - 0x5cc5,0x5cc6,0x5cc7,0x5cc8,0x5cc9,0x5cca,0x5ccb,0x5ccc,0x5ccd,0x5cce, - 0x5ccf,0x5cd0,0x5cd1,0x5cd2,0x5cd3,0x5cd4,0x5cd5,0x5cd6,0x5cd7,0x5cd8, - 0x5cd9,0x5cda,0x5cdb,0x5cdc,0x5cdd,0x5cde,0x5cdf,0x5ce0,0x5ce1,0x5ce2, - 0x5ce3,0x5ce4,0x5ce5,0x5ce6,0x5ce7,0x5ce8,0x5ce9,0x5cea,0x5ceb,0x5cec, - 0x5ced,0x5cee,0x5cef,0x5cf0,0x5cf1,0x5cf2,0x5cf3,0x5cf4,0x5cf5,0x5cf6, - 0x5cf7,0x5cf8,0x5cf9,0x5cfa,0x5cfb,0x5cfc,0x5cfd,0x5cfe,0x5cff,0x5d00, - 0x5d01,0x5d02,0x5d03,0x5d04,0x5d05,0x5d06,0x5d07,0x5d08,0x5d09,0x5d0a, - 0x5d0b,0x5d0c,0x5d0d,0x5d0e,0x5d0f,0x5d10,0x5d11,0x5d12,0x5d13,0x5d14, - 0x5d15,0x5d16,0x5d17,0x5d18,0x5d19,0x5d1a,0x5d1b,0x5d1c,0x5d1d,0x5d1e, - 0x5d1f,0x5d20,0x5d21,0x5d22,0x5d23,0x5d24,0x5d25,0x5d26,0x5d27,0x5d28, - 0x5d29,0x5d2a,0x5d2b,0x5d2c,0x5d2d,0x5d2e,0x5d2f,0x5d30,0x5d31,0x5d32, - 0x5d33,0x5d34,0x5d35,0x5d36,0x5d37,0x5d38,0x5d39,0x5d3a,0x5d3b,0x5d3c, - 0x5d3d,0x5d3e,0x5d3f,0x5d40,0x5d41,0x5d42,0x5d43,0x5d44,0x5d45,0x5d46, - 0x5d47,0x5d48,0x5d49,0x5d4a,0x5d4b,0x5d4c,0x5d4d,0x5d4e,0x5d4f,0x5d50, - 0x5d51,0x5d52,0x5d53,0x5d54,0x5d55,0x5d56,0x5d57,0x5d58,0x5d59,0x5d5a, - 0x5d5b,0x5d5c,0x5d5d,0x5d5e,0x5d5f,0x5d60,0x5d61,0x5d62,0x5d63,0x5d64, - 0x5d65,0x5d66,0x5d67,0x5d68,0x5d69,0x5d6a,0x5d6b,0x5d6c,0x5d6d,0x5d6e, - 0x5d6f,0x5d70,0x5d71,0x5d72,0x5d73,0x5d74,0x5d75,0x5d76,0x5d77,0x5d78, - 0x5d79,0x5d7a,0x5d7b,0x5d7c,0x5d7d,0x5d7e,0x5d7f,0x5d80,0x5d81,0x5d82, - 0x5d83,0x5d84,0x5d85,0x5d86,0x5d87,0x5d88,0x5d89,0x5d8a,0x5d8b,0x5d8c, - 0x5d8d,0x5d8e,0x5d8f,0x5d90,0x5d91,0x5d92,0x5d93,0x5d94,0x5d95,0x5d96, - 0x5d97,0x5d98,0x5d99,0x5d9a,0x5d9b,0x5d9c,0x5d9d,0x5d9e,0x5d9f,0x5da0, - 0x5da1,0x5da2,0x5da3,0x5da4,0x5da5,0x5da6,0x5da7,0x5da8,0x5da9,0x5daa, - 0x5dab,0x5dac,0x5dad,0x5dae,0x5daf,0x5db0,0x5db1,0x5db2,0x5db3,0x5db4, - 0x5db5,0x5db6,0x5db7,0x5db8,0x5db9,0x5dba,0x5dbb,0x5dbc,0x5dbd,0x5dbe, - 0x5dbf,0x5dc0,0x5dc1,0x5dc2,0x5dc3,0x5dc4,0x5dc5,0x5dc6,0x5dc7,0x5dc8, - 0x5dc9,0x5dca,0x5dcb,0x5dcc,0x5dcd,0x5dce,0x5dcf,0x5dd0,0x5dd1,0x5dd2, - 0x5dd3,0x5dd4,0x5dd5,0x5dd6,0x5dd7,0x5dd8,0x5dd9,0x5dda,0x5ddb,0x5ddc, - 0x5ddd,0x5dde,0x5ddf,0x5de0,0x5de1,0x5de2,0x5de3,0x5de4,0x5de5,0x5de6, - 0x5de7,0x5de8,0x5de9,0x5dea,0x5deb,0x5dec,0x5ded,0x5dee,0x5def,0x5df0, - 0x5df1,0x5df2,0x5df3,0x5df4,0x5df5,0x5df6,0x5df7,0x5df8,0x5df9,0x5dfa, - 0x5dfb,0x5dfc,0x5dfd,0x5dfe,0x5dff,0x5e00,0x5e01,0x5e02,0x5e03,0x5e04, - 0x5e05,0x5e06,0x5e07,0x5e08,0x5e09,0x5e0a,0x5e0b,0x5e0c,0x5e0d,0x5e0e, - 0x5e0f,0x5e10,0x5e11,0x5e12,0x5e13,0x5e14,0x5e15,0x5e16,0x5e17,0x5e18, - 0x5e19,0x5e1a,0x5e1b,0x5e1c,0x5e1d,0x5e1e,0x5e1f,0x5e20,0x5e21,0x5e22, - 0x5e23,0x5e24,0x5e25,0x5e26,0x5e27,0x5e28,0x5e29,0x5e2a,0x5e2b,0x5e2c, - 0x5e2d,0x5e2e,0x5e2f,0x5e30,0x5e31,0x5e32,0x5e33,0x5e34,0x5e35,0x5e36, - 0x5e37,0x5e38,0x5e39,0x5e3a,0x5e3b,0x5e3c,0x5e3d,0x5e3e,0x5e3f,0x5e40, - 0x5e41,0x5e42,0x5e43,0x5e44,0x5e45,0x5e46,0x5e47,0x5e48,0x5e49,0x5e4a, - 0x5e4b,0x5e4c,0x5e4d,0x5e4e,0x5e4f,0x5e50,0x5e51,0x5e52,0x5e53,0x5e54, - 0x5e55,0x5e56,0x5e57,0x5e58,0x5e59,0x5e5a,0x5e5b,0x5e5c,0x5e5d,0x5e5e, - 0x5e5f,0x5e60,0x5e61,0x5e62,0x5e63,0x5e64,0x5e65,0x5e66,0x5e67,0x5e68, - 0x5e69,0x5e6a,0x5e6b,0x5e6c,0x5e6d,0x5e6e,0x5e6f,0x5e70,0x5e71,0x5e72, - 0x5e73,0x5e74,0x5e75,0x5e76,0x5e77,0x5e78,0x5e79,0x5e7a,0x5e7b,0x5e7c, - 0x5e7d,0x5e7e,0x5e7f,0x5e80,0x5e81,0x5e82,0x5e83,0x5e84,0x5e85,0x5e86, - 0x5e87,0x5e88,0x5e89,0x5e8a,0x5e8b,0x5e8c,0x5e8d,0x5e8e,0x5e8f,0x5e90, - 0x5e91,0x5e92,0x5e93,0x5e94,0x5e95,0x5e96,0x5e97,0x5e98,0x5e99,0x5e9a, - 0x5e9b,0x5e9c,0x5e9d,0x5e9e,0x5e9f,0x5ea0,0x5ea1,0x5ea2,0x5ea3,0x5ea4, - 0x5ea5,0x5ea6,0x5ea7,0x5ea8,0x5ea9,0x5eaa,0x5eab,0x5eac,0x5ead,0x5eae, - 0x5eaf,0x5eb0,0x5eb1,0x5eb2,0x5eb3,0x5eb4,0x5eb5,0x5eb6,0x5eb7,0x5eb8, - 0x5eb9,0x5eba,0x5ebb,0x5ebc,0x5ebd,0x5ebe,0x5ebf,0x5ec0,0x5ec1,0x5ec2, - 0x5ec3,0x5ec4,0x5ec5,0x5ec6,0x5ec7,0x5ec8,0x5ec9,0x5eca,0x5ecb,0x5ecc, - 0x5ecd,0x5ece,0x5ecf,0x5ed0,0x5ed1,0x5ed2,0x5ed3,0x5ed4,0x5ed5,0x5ed6, - 0x5ed7,0x5ed8,0x5ed9,0x5eda,0x5edb,0x5edc,0x5edd,0x5ede,0x5edf,0x5ee0, - 0x5ee1,0x5ee2,0x5ee3,0x5ee4,0x5ee5,0x5ee6,0x5ee7,0x5ee8,0x5ee9,0x5eea, - 0x5eeb,0x5eec,0x5eed,0x5eee,0x5eef,0x5ef0,0x5ef1,0x5ef2,0x5ef3,0x5ef4, - 0x5ef5,0x5ef6,0x5ef7,0x5ef8,0x5ef9,0x5efa,0x5efb,0x5efc,0x5efd,0x5efe, - 0x5eff,0x5f00,0x5f01,0x5f02,0x5f03,0x5f04,0x5f05,0x5f06,0x5f07,0x5f08, - 0x5f09,0x5f0a,0x5f0b,0x5f0c,0x5f0d,0x5f0e,0x5f0f,0x5f10,0x5f11,0x5f12, - 0x5f13,0x5f14,0x5f15,0x5f16,0x5f17,0x5f18,0x5f19,0x5f1a,0x5f1b,0x5f1c, - 0x5f1d,0x5f1e,0x5f1f,0x5f20,0x5f21,0x5f22,0x5f23,0x5f24,0x5f25,0x5f26, - 0x5f27,0x5f28,0x5f29,0x5f2a,0x5f2b,0x5f2c,0x5f2d,0x5f2e,0x5f2f,0x5f30, - 0x5f31,0x5f32,0x5f33,0x5f34,0x5f35,0x5f36,0x5f37,0x5f38,0x5f39,0x5f3a, - 0x5f3b,0x5f3c,0x5f3d,0x5f3e,0x5f3f,0x5f40,0x5f41,0x5f42,0x5f43,0x5f44, - 0x5f45,0x5f46,0x5f47,0x5f48,0x5f49,0x5f4a,0x5f4b,0x5f4c,0x5f4d,0x5f4e, - 0x5f4f,0x5f50,0x5f51,0x5f52,0x5f53,0x5f54,0x5f55,0x5f56,0x5f57,0x5f58, - 0x5f59,0x5f5a,0x5f5b,0x5f5c,0x5f5d,0x5f5e,0x5f5f,0x5f60,0x5f61,0x5f62, - 0x5f63,0x5f64,0x5f65,0x5f66,0x5f67,0x5f68,0x5f69,0x5f6a,0x5f6b,0x5f6c, - 0x5f6d,0x5f6e,0x5f6f,0x5f70,0x5f71,0x5f72,0x5f73,0x5f74,0x5f75,0x5f76, - 0x5f77,0x5f78,0x5f79,0x5f7a,0x5f7b,0x5f7c,0x5f7d,0x5f7e,0x5f7f,0x5f80, - 0x5f81,0x5f82,0x5f83,0x5f84,0x5f85,0x5f86,0x5f87,0x5f88,0x5f89,0x5f8a, - 0x5f8b,0x5f8c,0x5f8d,0x5f8e,0x5f8f,0x5f90,0x5f91,0x5f92,0x5f93,0x5f94, - 0x5f95,0x5f96,0x5f97,0x5f98,0x5f99,0x5f9a,0x5f9b,0x5f9c,0x5f9d,0x5f9e, - 0x5f9f,0x5fa0,0x5fa1,0x5fa2,0x5fa3,0x5fa4,0x5fa5,0x5fa6,0x5fa7,0x5fa8, - 0x5fa9,0x5faa,0x5fab,0x5fac,0x5fad,0x5fae,0x5faf,0x5fb0,0x5fb1,0x5fb2, - 0x5fb3,0x5fb4,0x5fb5,0x5fb6,0x5fb7,0x5fb8,0x5fb9,0x5fba,0x5fbb,0x5fbc, - 0x5fbd,0x5fbe,0x5fbf,0x5fc0,0x5fc1,0x5fc2,0x5fc3,0x5fc4,0x5fc5,0x5fc6, - 0x5fc7,0x5fc8,0x5fc9,0x5fca,0x5fcb,0x5fcc,0x5fcd,0x5fce,0x5fcf,0x5fd0, - 0x5fd1,0x5fd2,0x5fd3,0x5fd4,0x5fd5,0x5fd6,0x5fd7,0x5fd8,0x5fd9,0x5fda, - 0x5fdb,0x5fdc,0x5fdd,0x5fde,0x5fdf,0x5fe0,0x5fe1,0x5fe2,0x5fe3,0x5fe4, - 0x5fe5,0x5fe6,0x5fe7,0x5fe8,0x5fe9,0x5fea,0x5feb,0x5fec,0x5fed,0x5fee, - 0x5fef,0x5ff0,0x5ff1,0x5ff2,0x5ff3,0x5ff4,0x5ff5,0x5ff6,0x5ff7,0x5ff8, - 0x5ff9,0x5ffa,0x5ffb,0x5ffc,0x5ffd,0x5ffe,0x5fff,0x6000,0x6001,0x6002, - 0x6003,0x6004,0x6005,0x6006,0x6007,0x6008,0x6009,0x600a,0x600b,0x600c, - 0x600d,0x600e,0x600f,0x6010,0x6011,0x6012,0x6013,0x6014,0x6015,0x6016, - 0x6017,0x6018,0x6019,0x601a,0x601b,0x601c,0x601d,0x601e,0x601f,0x6020, - 0x6021,0x6022,0x6023,0x6024,0x6025,0x6026,0x6027,0x6028,0x6029,0x602a, - 0x602b,0x602c,0x602d,0x602e,0x602f,0x6030,0x6031,0x6032,0x6033,0x6034, - 0x6035,0x6036,0x6037,0x6038,0x6039,0x603a,0x603b,0x603c,0x603d,0x603e, - 0x603f,0x6040,0x6041,0x6042,0x6043,0x6044,0x6045,0x6046,0x6047,0x6048, - 0x6049,0x604a,0x604b,0x604c,0x604d,0x604e,0x604f,0x6050,0x6051,0x6052, - 0x6053,0x6054,0x6055,0x6056,0x6057,0x6058,0x6059,0x605a,0x605b,0x605c, - 0x605d,0x605e,0x605f,0x6060,0x6061,0x6062,0x6063,0x6064,0x6065,0x6066, - 0x6067,0x6068,0x6069,0x606a,0x606b,0x606c,0x606d,0x606e,0x606f,0x6070, - 0x6071,0x6072,0x6073,0x6074,0x6075,0x6076,0x6077,0x6078,0x6079,0x607a, - 0x607b,0x607c,0x607d,0x607e,0x607f,0x6080,0x6081,0x6082,0x6083,0x6084, - 0x6085,0x6086,0x6087,0x6088,0x6089,0x608a,0x608b,0x608c,0x608d,0x608e, - 0x608f,0x6090,0x6091,0x6092,0x6093,0x6094,0x6095,0x6096,0x6097,0x6098, - 0x6099,0x609a,0x609b,0x609c,0x609d,0x609e,0x609f,0x60a0,0x60a1,0x60a2, - 0x60a3,0x60a4,0x60a5,0x60a6,0x60a7,0x60a8,0x60a9,0x60aa,0x60ab,0x60ac, - 0x60ad,0x60ae,0x60af,0x60b0,0x60b1,0x60b2,0x60b3,0x60b4,0x60b5,0x60b6, - 0x60b7,0x60b8,0x60b9,0x60ba,0x60bb,0x60bc,0x60bd,0x60be,0x60bf,0x60c0, - 0x60c1,0x60c2,0x60c3,0x60c4,0x60c5,0x60c6,0x60c7,0x60c8,0x60c9,0x60ca, - 0x60cb,0x60cc,0x60cd,0x60ce,0x60cf,0x60d0,0x60d1,0x60d2,0x60d3,0x60d4, - 0x60d5,0x60d6,0x60d7,0x60d8,0x60d9,0x60da,0x60db,0x60dc,0x60dd,0x60de, - 0x60df,0x60e0,0x60e1,0x60e2,0x60e3,0x60e4,0x60e5,0x60e6,0x60e7,0x60e8, - 0x60e9,0x60ea,0x60eb,0x60ec,0x60ed,0x60ee,0x60ef,0x60f0,0x60f1,0x60f2, - 0x60f3,0x60f4,0x60f5,0x60f6,0x60f7,0x60f8,0x60f9,0x60fa,0x60fb,0x60fc, - 0x60fd,0x60fe,0x60ff,0x6100,0x6101,0x6102,0x6103,0x6104,0x6105,0x6106, - 0x6107,0x6108,0x6109,0x610a,0x610b,0x610c,0x610d,0x610e,0x610f,0x6110, - 0x6111,0x6112,0x6113,0x6114,0x6115,0x6116,0x6117,0x6118,0x6119,0x611a, - 0x611b,0x611c,0x611d,0x611e,0x611f,0x6120,0x6121,0x6122,0x6123,0x6124, - 0x6125,0x6126,0x6127,0x6128,0x6129,0x612a,0x612b,0x612c,0x612d,0x612e, - 0x612f,0x6130,0x6131,0x6132,0x6133,0x6134,0x6135,0x6136,0x6137,0x6138, - 0x6139,0x613a,0x613b,0x613c,0x613d,0x613e,0x613f,0x6140,0x6141,0x6142, - 0x6143,0x6144,0x6145,0x6146,0x6147,0x6148,0x6149,0x614a,0x614b,0x614c, - 0x614d,0x614e,0x614f,0x6150,0x6151,0x6152,0x6153,0x6154,0x6155,0x6156, - 0x6157,0x6158,0x6159,0x615a,0x615b,0x615c,0x615d,0x615e,0x615f,0x6160, - 0x6161,0x6162,0x6163,0x6164,0x6165,0x6166,0x6167,0x6168,0x6169,0x616a, - 0x616b,0x616c,0x616d,0x616e,0x616f,0x6170,0x6171,0x6172,0x6173,0x6174, - 0x6175,0x6176,0x6177,0x6178,0x6179,0x617a,0x617b,0x617c,0x617d,0x617e, - 0x617f,0x6180,0x6181,0x6182,0x6183,0x6184,0x6185,0x6186,0x6187,0x6188, - 0x6189,0x618a,0x618b,0x618c,0x618d,0x618e,0x618f,0x6190,0x6191,0x6192, - 0x6193,0x6194,0x6195,0x6196,0x6197,0x6198,0x6199,0x619a,0x619b,0x619c, - 0x619d,0x619e,0x619f,0x61a0,0x61a1,0x61a2,0x61a3,0x61a4,0x61a5,0x61a6, - 0x61a7,0x61a8,0x61a9,0x61aa,0x61ab,0x61ac,0x61ad,0x61ae,0x61af,0x61b0, - 0x61b1,0x61b2,0x61b3,0x61b4,0x61b5,0x61b6,0x61b7,0x61b8,0x61b9,0x61ba, - 0x61bb,0x61bc,0x61bd,0x61be,0x61bf,0x61c0,0x61c1,0x61c2,0x61c3,0x61c4, - 0x61c5,0x61c6,0x61c7,0x61c8,0x61c9,0x61ca,0x61cb,0x61cc,0x61cd,0x61ce, - 0x61cf,0x61d0,0x61d1,0x61d2,0x61d3,0x61d4,0x61d5,0x61d6,0x61d7,0x61d8, - 0x61d9,0x61da,0x61db,0x61dc,0x61dd,0x61de,0x61df,0x61e0,0x61e1,0x61e2, - 0x61e3,0x61e4,0x61e5,0x61e6,0x61e7,0x61e8,0x61e9,0x61ea,0x61eb,0x61ec, - 0x61ed,0x61ee,0x61ef,0x61f0,0x61f1,0x61f2,0x61f3,0x61f4,0x61f5,0x61f6, - 0x61f7,0x61f8,0x61f9,0x61fa,0x61fb,0x61fc,0x61fd,0x61fe,0x61ff,0x6200, - 0x6201,0x6202,0x6203,0x6204,0x6205,0x6206,0x6207,0x6208,0x6209,0x620a, - 0x620b,0x620c,0x620d,0x620e,0x620f,0x6210,0x6211,0x6212,0x6213,0x6214, - 0x6215,0x6216,0x6217,0x6218,0x6219,0x621a,0x621b,0x621c,0x621d,0x621e, - 0x621f,0x6220,0x6221,0x6222,0x6223,0x6224,0x6225,0x6226,0x6227,0x6228, - 0x6229,0x622a,0x622b,0x622c,0x622d,0x622e,0x622f,0x6230,0x6231,0x6232, - 0x6233,0x6234,0x6235,0x6236,0x6237,0x6238,0x6239,0x623a,0x623b,0x623c, - 0x623d,0x623e,0x623f,0x6240,0x6241,0x6242,0x6243,0x6244,0x6245,0x6246, - 0x6247,0x6248,0x6249,0x624a,0x624b,0x624c,0x624d,0x624e,0x624f,0x6250, - 0x6251,0x6252,0x6253,0x6254,0x6255,0x6256,0x6257,0x6258,0x6259,0x625a, - 0x625b,0x625c,0x625d,0x625e,0x625f,0x6260,0x6261,0x6262,0x6263,0x6264, - 0x6265,0x6266,0x6267,0x6268,0x6269,0x626a,0x626b,0x626c,0x626d,0x626e, - 0x626f,0x6270,0x6271,0x6272,0x6273,0x6274,0x6275,0x6276,0x6277,0x6278, - 0x6279,0x627a,0x627b,0x627c,0x627d,0x627e,0x627f,0x6280,0x6281,0x6282, - 0x6283,0x6284,0x6285,0x6286,0x6287,0x6288,0x6289,0x628a,0x628b,0x628c, - 0x628d,0x628e,0x628f,0x6290,0x6291,0x6292,0x6293,0x6294,0x6295,0x6296, - 0x6297,0x6298,0x6299,0x629a,0x629b,0x629c,0x629d,0x629e,0x629f,0x62a0, - 0x62a1,0x62a2,0x62a3,0x62a4,0x62a5,0x62a6,0x62a7,0x62a8,0x62a9,0x62aa, - 0x62ab,0x62ac,0x62ad,0x62ae,0x62af,0x62b0,0x62b1,0x62b2,0x62b3,0x62b4, - 0x62b5,0x62b6,0x62b7,0x62b8,0x62b9,0x62ba,0x62bb,0x62bc,0x62bd,0x62be, - 0x62bf,0x62c0,0x62c1,0x62c2,0x62c3,0x62c4,0x62c5,0x62c6,0x62c7,0x62c8, - 0x62c9,0x62ca,0x62cb,0x62cc,0x62cd,0x62ce,0x62cf,0x62d0,0x62d1,0x62d2, - 0x62d3,0x62d4,0x62d5,0x62d6,0x62d7,0x62d8,0x62d9,0x62da,0x62db,0x62dc, - 0x62dd,0x62de,0x62df,0x62e0,0x62e1,0x62e2,0x62e3,0x62e4,0x62e5,0x62e6, - 0x62e7,0x62e8,0x62e9,0x62ea,0x62eb,0x62ec,0x62ed,0x62ee,0x62ef,0x62f0, - 0x62f1,0x62f2,0x62f3,0x62f4,0x62f5,0x62f6,0x62f7,0x62f8,0x62f9,0x62fa, - 0x62fb,0x62fc,0x62fd,0x62fe,0x62ff,0x6300,0x6301,0x6302,0x6303,0x6304, - 0x6305,0x6306,0x6307,0x6308,0x6309,0x630a,0x630b,0x630c,0x630d,0x630e, - 0x630f,0x6310,0x6311,0x6312,0x6313,0x6314,0x6315,0x6316,0x6317,0x6318, - 0x6319,0x631a,0x631b,0x631c,0x631d,0x631e,0x631f,0x6320,0x6321,0x6322, - 0x6323,0x6324,0x6325,0x6326,0x6327,0x6328,0x6329,0x632a,0x632b,0x632c, - 0x632d,0x632e,0x632f,0x6330,0x6331,0x6332,0x6333,0x6334,0x6335,0x6336, - 0x6337,0x6338,0x6339,0x633a,0x633b,0x633c,0x633d,0x633e,0x633f,0x6340, - 0x6341,0x6342,0x6343,0x6344,0x6345,0x6346,0x6347,0x6348,0x6349,0x634a, - 0x634b,0x634c,0x634d,0x634e,0x634f,0x6350,0x6351,0x6352,0x6353,0x6354, - 0x6355,0x6356,0x6357,0x6358,0x6359,0x635a,0x635b,0x635c,0x635d,0x635e, - 0x635f,0x6360,0x6361,0x6362,0x6363,0x6364,0x6365,0x6366,0x6367,0x6368, - 0x6369,0x636a,0x636b,0x636c,0x636d,0x636e,0x636f,0x6370,0x6371,0x6372, - 0x6373,0x6374,0x6375,0x6376,0x6377,0x6378,0x6379,0x637a,0x637b,0x637c, - 0x637d,0x637e,0x637f,0x6380,0x6381,0x6382,0x6383,0x6384,0x6385,0x6386, - 0x6387,0x6388,0x6389,0x638a,0x638b,0x638c,0x638d,0x638e,0x638f,0x6390, - 0x6391,0x6392,0x6393,0x6394,0x6395,0x6396,0x6397,0x6398,0x6399,0x639a, - 0x639b,0x639c,0x639d,0x639e,0x639f,0x63a0,0x63a1,0x63a2,0x63a3,0x63a4, - 0x63a5,0x63a6,0x63a7,0x63a8,0x63a9,0x63aa,0x63ab,0x63ac,0x63ad,0x63ae, - 0x63af,0x63b0,0x63b1,0x63b2,0x63b3,0x63b4,0x63b5,0x63b6,0x63b7,0x63b8, - 0x63b9,0x63ba,0x63bb,0x63bc,0x63bd,0x63be,0x63bf,0x63c0,0x63c1,0x63c2, - 0x63c3,0x63c4,0x63c5,0x63c6,0x63c7,0x63c8,0x63c9,0x63ca,0x63cb,0x63cc, - 0x63cd,0x63ce,0x63cf,0x63d0,0x63d1,0x63d2,0x63d3,0x63d4,0x63d5,0x63d6, - 0x63d7,0x63d8,0x63d9,0x63da,0x63db,0x63dc,0x63dd,0x63de,0x63df,0x63e0, - 0x63e1,0x63e2,0x63e3,0x63e4,0x63e5,0x63e6,0x63e7,0x63e8,0x63e9,0x63ea, - 0x63eb,0x63ec,0x63ed,0x63ee,0x63ef,0x63f0,0x63f1,0x63f2,0x63f3,0x63f4, - 0x63f5,0x63f6,0x63f7,0x63f8,0x63f9,0x63fa,0x63fb,0x63fc,0x63fd,0x63fe, - 0x63ff,0x6400,0x6401,0x6402,0x6403,0x6404,0x6405,0x6406,0x6407,0x6408, - 0x6409,0x640a,0x640b,0x640c,0x640d,0x640e,0x640f,0x6410,0x6411,0x6412, - 0x6413,0x6414,0x6415,0x6416,0x6417,0x6418,0x6419,0x641a,0x641b,0x641c, - 0x641d,0x641e,0x641f,0x6420,0x6421,0x6422,0x6423,0x6424,0x6425,0x6426, - 0x6427,0x6428,0x6429,0x642a,0x642b,0x642c,0x642d,0x642e,0x642f,0x6430, - 0x6431,0x6432,0x6433,0x6434,0x6435,0x6436,0x6437,0x6438,0x6439,0x643a, - 0x643b,0x643c,0x643d,0x643e,0x643f,0x6440,0x6441,0x6442,0x6443,0x6444, - 0x6445,0x6446,0x6447,0x6448,0x6449,0x644a,0x644b,0x644c,0x644d,0x644e, - 0x644f,0x6450,0x6451,0x6452,0x6453,0x6454,0x6455,0x6456,0x6457,0x6458, - 0x6459,0x645a,0x645b,0x645c,0x645d,0x645e,0x645f,0x6460,0x6461,0x6462, - 0x6463,0x6464,0x6465,0x6466,0x6467,0x6468,0x6469,0x646a,0x646b,0x646c, - 0x646d,0x646e,0x646f,0x6470,0x6471,0x6472,0x6473,0x6474,0x6475,0x6476, - 0x6477,0x6478,0x6479,0x647a,0x647b,0x647c,0x647d,0x647e,0x647f,0x6480, - 0x6481,0x6482,0x6483,0x6484,0x6485,0x6486,0x6487,0x6488,0x6489,0x648a, - 0x648b,0x648c,0x648d,0x648e,0x648f,0x6490,0x6491,0x6492,0x6493,0x6494, - 0x6495,0x6496,0x6497,0x6498,0x6499,0x649a,0x649b,0x649c,0x649d,0x649e, - 0x649f,0x64a0,0x64a1,0x64a2,0x64a3,0x64a4,0x64a5,0x64a6,0x64a7,0x64a8, - 0x64a9,0x64aa,0x64ab,0x64ac,0x64ad,0x64ae,0x64af,0x64b0,0x64b1,0x64b2, - 0x64b3,0x64b4,0x64b5,0x64b6,0x64b7,0x64b8,0x64b9,0x64ba,0x64bb,0x64bc, - 0x64bd,0x64be,0x64bf,0x64c0,0x64c1,0x64c2,0x64c3,0x64c4,0x64c5,0x64c6, - 0x64c7,0x64c8,0x64c9,0x64ca,0x64cb,0x64cc,0x64cd,0x64ce,0x64cf,0x64d0, - 0x64d1,0x64d2,0x64d3,0x64d4,0x64d5,0x64d6,0x64d7,0x64d8,0x64d9,0x64da, - 0x64db,0x64dc,0x64dd,0x64de,0x64df,0x64e0,0x64e1,0x64e2,0x64e3,0x64e4, - 0x64e5,0x64e6,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,0x6500,0x6501,0x6502, - 0x6503,0x6504,0x6505,0x6506,0x6507,0x6508,0x6509,0x650a,0x650b,0x650c, - 0x650d,0x650e,0x650f,0x6510,0x6511,0x6512,0x6513,0x6514,0x6515,0x6516, - 0x6517,0x6518,0x6519,0x651a,0x651b,0x651c,0x651d,0x651e,0x651f,0x6520, - 0x6521,0x6522,0x6523,0x6524,0x6525,0x6526,0x6527,0x6528,0x6529,0x652a, - 0x652b,0x652c,0x652d,0x652e,0x652f,0x6530,0x6531,0x6532,0x6533,0x6534, - 0x6535,0x6536,0x6537,0x6538,0x6539,0x653a,0x653b,0x653c,0x653d,0x653e, - 0x653f,0x6540,0x6541,0x6542,0x6543,0x6544,0x6545,0x6546,0x6547,0x6548, - 0x6549,0x654a,0x654b,0x654c,0x654d,0x654e,0x654f,0x6550,0x6551,0x6552, - 0x6553,0x6554,0x6555,0x6556,0x6557,0x6558,0x6559,0x655a,0x655b,0x655c, - 0x655d,0x655e,0x655f,0x6560,0x6561,0x6562,0x6563,0x6564,0x6565,0x6566, - 0x6567,0x6568,0x6569,0x656a,0x656b,0x656c,0x656d,0x656e,0x656f,0x6570, - 0x6571,0x6572,0x6573,0x6574,0x6575,0x6576,0x6577,0x6578,0x6579,0x657a, - 0x657b,0x657c,0x657d,0x657e,0x657f,0x6580,0x6581,0x6582,0x6583,0x6584, - 0x6585,0x6586,0x6587,0x6588,0x6589,0x658a,0x658b,0x658c,0x658d,0x658e, - 0x658f,0x6590,0x6591,0x6592,0x6593,0x6594,0x6595,0x6596,0x6597,0x6598, - 0x6599,0x659a,0x659b,0x659c,0x659d,0x659e,0x659f,0x65a0,0x65a1,0x65a2, - 0x65a3,0x65a4,0x65a5,0x65a6,0x65a7,0x65a8,0x65a9,0x65aa,0x65ab,0x65ac, - 0x65ad,0x65ae,0x65af,0x65b0,0x65b1,0x65b2,0x65b3,0x65b4,0x65b5,0x65b6, - 0x65b7,0x65b8,0x65b9,0x65ba,0x65bb,0x65bc,0x65bd,0x65be,0x65bf,0x65c0, - 0x65c1,0x65c2,0x65c3,0x65c4,0x65c5,0x65c6,0x65c7,0x65c8,0x65c9,0x65ca, - 0x65cb,0x65cc,0x65cd,0x65ce,0x65cf,0x65d0,0x65d1,0x65d2,0x65d3,0x65d4, - 0x65d5,0x65d6,0x65d7,0x65d8,0x65d9,0x65da,0x65db,0x65dc,0x65dd,0x65de, - 0x65df,0x65e0,0x65e1,0x65e2,0x65e3,0x65e4,0x65e5,0x65e6,0x65e7,0x65e8, - 0x65e9,0x65ea,0x65eb,0x65ec,0x65ed,0x65ee,0x65ef,0x65f0,0x65f1,0x65f2, - 0x65f3,0x65f4,0x65f5,0x65f6,0x65f7,0x65f8,0x65f9,0x65fa,0x65fb,0x65fc, - 0x65fd,0x65fe,0x65ff,0x6600,0x6601,0x6602,0x6603,0x6604,0x6605,0x6606, - 0x6607,0x6608,0x6609,0x660a,0x660b,0x660c,0x660d,0x660e,0x660f,0x6610, - 0x6611,0x6612,0x6613,0x6614,0x6615,0x6616,0x6617,0x6618,0x6619,0x661a, - 0x661b,0x661c,0x661d,0x661e,0x661f,0x6620,0x6621,0x6622,0x6623,0x6624, - 0x6625,0x6626,0x6627,0x6628,0x6629,0x662a,0x662b,0x662c,0x662d,0x662e, - 0x662f,0x6630,0x6631,0x6632,0x6633,0x6634,0x6635,0x6636,0x6637,0x6638, - 0x6639,0x663a,0x663b,0x663c,0x663d,0x663e,0x663f,0x6640,0x6641,0x6642, - 0x6643,0x6644,0x6645,0x6646,0x6647,0x6648,0x6649,0x664a,0x664b,0x664c, - 0x664d,0x664e,0x664f,0x6650,0x6651,0x6652,0x6653,0x6654,0x6655,0x6656, - 0x6657,0x6658,0x6659,0x665a,0x665b,0x665c,0x665d,0x665e,0x665f,0x6660, - 0x6661,0x6662,0x6663,0x6664,0x6665,0x6666,0x6667,0x6668,0x6669,0x666a, - 0x666b,0x666c,0x666d,0x666e,0x666f,0x6670,0x6671,0x6672,0x6673,0x6674, - 0x6675,0x6676,0x6677,0x6678,0x6679,0x667a,0x667b,0x667c,0x667d,0x667e, - 0x667f,0x6680,0x6681,0x6682,0x6683,0x6684,0x6685,0x6686,0x6687,0x6688, - 0x6689,0x668a,0x668b,0x668c,0x668d,0x668e,0x668f,0x6690,0x6691,0x6692, - 0x6693,0x6694,0x6695,0x6696,0x6697,0x6698,0x6699,0x669a,0x669b,0x669c, - 0x669d,0x669e,0x669f,0x66a0,0x66a1,0x66a2,0x66a3,0x66a4,0x66a5,0x66a6, - 0x66a7,0x66a8,0x66a9,0x66aa,0x66ab,0x66ac,0x66ad,0x66ae,0x66af,0x66b0, - 0x66b1,0x66b2,0x66b3,0x66b4,0x66b5,0x66b6,0x66b7,0x66b8,0x66b9,0x66ba, - 0x66bb,0x66bc,0x66bd,0x66be,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, - 0x66d9,0x66da,0x66db,0x66dc,0x66dd,0x66de,0x66df,0x66e0,0x66e1,0x66e2, - 0x66e3,0x66e4,0x66e5,0x66e6,0x66e7,0x66e8,0x66e9,0x66ea,0x66eb,0x66ec, - 0x66ed,0x66ee,0x66ef,0x66f0,0x66f1,0x66f2,0x66f3,0x66f4,0x66f5,0x66f6, - 0x66f7,0x66f8,0x66f9,0x66fa,0x66fb,0x66fc,0x66fd,0x66fe,0x66ff,0x6700, - 0x6701,0x6702,0x6703,0x6704,0x6705,0x6706,0x6707,0x6708,0x6709,0x670a, - 0x670b,0x670c,0x670d,0x670e,0x670f,0x6710,0x6711,0x6712,0x6713,0x6714, - 0x6715,0x6716,0x6717,0x6718,0x6719,0x671a,0x671b,0x671c,0x671d,0x671e, - 0x671f,0x6720,0x6721,0x6722,0x6723,0x6724,0x6725,0x6726,0x6727,0x6728, - 0x6729,0x672a,0x672b,0x672c,0x672d,0x672e,0x672f,0x6730,0x6731,0x6732, - 0x6733,0x6734,0x6735,0x6736,0x6737,0x6738,0x6739,0x673a,0x673b,0x673c, - 0x673d,0x673e,0x673f,0x6740,0x6741,0x6742,0x6743,0x6744,0x6745,0x6746, - 0x6747,0x6748,0x6749,0x674a,0x674b,0x674c,0x674d,0x674e,0x674f,0x6750, - 0x6751,0x6752,0x6753,0x6754,0x6755,0x6756,0x6757,0x6758,0x6759,0x675a, - 0x675b,0x675c,0x675d,0x675e,0x675f,0x6760,0x6761,0x6762,0x6763,0x6764, - 0x6765,0x6766,0x6767,0x6768,0x6769,0x676a,0x676b,0x676c,0x676d,0x676e, - 0x676f,0x6770,0x6771,0x6772,0x6773,0x6774,0x6775,0x6776,0x6777,0x6778, - 0x6779,0x677a,0x677b,0x677c,0x677d,0x677e,0x677f,0x6780,0x6781,0x6782, - 0x6783,0x6784,0x6785,0x6786,0x6787,0x6788,0x6789,0x678a,0x678b,0x678c, - 0x678d,0x678e,0x678f,0x6790,0x6791,0x6792,0x6793,0x6794,0x6795,0x6796, - 0x6797,0x6798,0x6799,0x679a,0x679b,0x679c,0x679d,0x679e,0x679f,0x67a0, - 0x67a1,0x67a2,0x67a3,0x67a4,0x67a5,0x67a6,0x67a7,0x67a8,0x67a9,0x67aa, - 0x67ab,0x67ac,0x67ad,0x67ae,0x67af,0x67b0,0x67b1,0x67b2,0x67b3,0x67b4, - 0x67b5,0x67b6,0x67b7,0x67b8,0x67b9,0x67ba,0x67bb,0x67bc,0x67bd,0x67be, - 0x67bf,0x67c0,0x67c1,0x67c2,0x67c3,0x67c4,0x67c5,0x67c6,0x67c7,0x67c8, - 0x67c9,0x67ca,0x67cb,0x67cc,0x67cd,0x67ce,0x67cf,0x67d0,0x67d1,0x67d2, - 0x67d3,0x67d4,0x67d5,0x67d6,0x67d7,0x67d8,0x67d9,0x67da,0x67db,0x67dc, - 0x67dd,0x67de,0x67df,0x67e0,0x67e1,0x67e2,0x67e3,0x67e4,0x67e5,0x67e6, - 0x67e7,0x67e8,0x67e9,0x67ea,0x67eb,0x67ec,0x67ed,0x67ee,0x67ef,0x67f0, - 0x67f1,0x67f2,0x67f3,0x67f4,0x67f5,0x67f6,0x67f7,0x67f8,0x67f9,0x67fa, - 0x67fb,0x67fc,0x67fd,0x67fe,0x67ff,0x6800,0x6801,0x6802,0x6803,0x6804, - 0x6805,0x6806,0x6807,0x6808,0x6809,0x680a,0x680b,0x680c,0x680d,0x680e, - 0x680f,0x6810,0x6811,0x6812,0x6813,0x6814,0x6815,0x6816,0x6817,0x6818, - 0x6819,0x681a,0x681b,0x681c,0x681d,0x681e,0x681f,0x6820,0x6821,0x6822, - 0x6823,0x6824,0x6825,0x6826,0x6827,0x6828,0x6829,0x682a,0x682b,0x682c, - 0x682d,0x682e,0x682f,0x6830,0x6831,0x6832,0x6833,0x6834,0x6835,0x6836, - 0x6837,0x6838,0x6839,0x683a,0x683b,0x683c,0x683d,0x683e,0x683f,0x6840, - 0x6841,0x6842,0x6843,0x6844,0x6845,0x6846,0x6847,0x6848,0x6849,0x684a, - 0x684b,0x684c,0x684d,0x684e,0x684f,0x6850,0x6851,0x6852,0x6853,0x6854, - 0x6855,0x6856,0x6857,0x6858,0x6859,0x685a,0x685b,0x685c,0x685d,0x685e, - 0x685f,0x6860,0x6861,0x6862,0x6863,0x6864,0x6865,0x6866,0x6867,0x6868, - 0x6869,0x686a,0x686b,0x686c,0x686d,0x686e,0x686f,0x6870,0x6871,0x6872, - 0x6873,0x6874,0x6875,0x6876,0x6877,0x6878,0x6879,0x687a,0x687b,0x687c, - 0x687d,0x687e,0x687f,0x6880,0x6881,0x6882,0x6883,0x6884,0x6885,0x6886, - 0x6887,0x6888,0x6889,0x688a,0x688b,0x688c,0x688d,0x688e,0x688f,0x6890, - 0x6891,0x6892,0x6893,0x6894,0x6895,0x6896,0x6897,0x6898,0x6899,0x689a, - 0x689b,0x689c,0x689d,0x689e,0x689f,0x68a0,0x68a1,0x68a2,0x68a3,0x68a4, - 0x68a5,0x68a6,0x68a7,0x68a8,0x68a9,0x68aa,0x68ab,0x68ac,0x68ad,0x68ae, - 0x68af,0x68b0,0x68b1,0x68b2,0x68b3,0x68b4,0x68b5,0x68b6,0x68b7,0x68b8, - 0x68b9,0x68ba,0x68bb,0x68bc,0x68bd,0x68be,0x68bf,0x68c0,0x68c1,0x68c2, - 0x68c3,0x68c4,0x68c5,0x68c6,0x68c7,0x68c8,0x68c9,0x68ca,0x68cb,0x68cc, - 0x68cd,0x68ce,0x68cf,0x68d0,0x68d1,0x68d2,0x68d3,0x68d4,0x68d5,0x68d6, - 0x68d7,0x68d8,0x68d9,0x68da,0x68db,0x68dc,0x68dd,0x68de,0x68df,0x68e0, - 0x68e1,0x68e2,0x68e3,0x68e4,0x68e5,0x68e6,0x68e7,0x68e8,0x68e9,0x68ea, - 0x68eb,0x68ec,0x68ed,0x68ee,0x68ef,0x68f0,0x68f1,0x68f2,0x68f3,0x68f4, - 0x68f5,0x68f6,0x68f7,0x68f8,0x68f9,0x68fa,0x68fb,0x68fc,0x68fd,0x68fe, - 0x68ff,0x6900,0x6901,0x6902,0x6903,0x6904,0x6905,0x6906,0x6907,0x6908, - 0x6909,0x690a,0x690b,0x690c,0x690d,0x690e,0x690f,0x6910,0x6911,0x6912, - 0x6913,0x6914,0x6915,0x6916,0x6917,0x6918,0x6919,0x691a,0x691b,0x691c, - 0x691d,0x691e,0x691f,0x6920,0x6921,0x6922,0x6923,0x6924,0x6925,0x6926, - 0x6927,0x6928,0x6929,0x692a,0x692b,0x692c,0x692d,0x692e,0x692f,0x6930, - 0x6931,0x6932,0x6933,0x6934,0x6935,0x6936,0x6937,0x6938,0x6939,0x693a, - 0x693b,0x693c,0x693d,0x693e,0x693f,0x6940,0x6941,0x6942,0x6943,0x6944, - 0x6945,0x6946,0x6947,0x6948,0x6949,0x694a,0x694b,0x694c,0x694d,0x694e, - 0x694f,0x6950,0x6951,0x6952,0x6953,0x6954,0x6955,0x6956,0x6957,0x6958, - 0x6959,0x695a,0x695b,0x695c,0x695d,0x695e,0x695f,0x6960,0x6961,0x6962, - 0x6963,0x6964,0x6965,0x6966,0x6967,0x6968,0x6969,0x696a,0x696b,0x696c, - 0x696d,0x696e,0x696f,0x6970,0x6971,0x6972,0x6973,0x6974,0x6975,0x6976, - 0x6977,0x6978,0x6979,0x697a,0x697b,0x697c,0x697d,0x697e,0x697f,0x6980, - 0x6981,0x6982,0x6983,0x6984,0x6985,0x6986,0x6987,0x6988,0x6989,0x698a, - 0x698b,0x698c,0x698d,0x698e,0x698f,0x6990,0x6991,0x6992,0x6993,0x6994, - 0x6995,0x6996,0x6997,0x6998,0x6999,0x699a,0x699b,0x699c,0x699d,0x699e, - 0x699f,0x69a0,0x69a1,0x69a2,0x69a3,0x69a4,0x69a5,0x69a6,0x69a7,0x69a8, - 0x69a9,0x69aa,0x69ab,0x69ac,0x69ad,0x69ae,0x69af,0x69b0,0x69b1,0x69b2, - 0x69b3,0x69b4,0x69b5,0x69b6,0x69b7,0x69b8,0x69b9,0x69ba,0x69bb,0x69bc, - 0x69bd,0x69be,0x69bf,0x69c0,0x69c1,0x69c2,0x69c3,0x69c4,0x69c5,0x69c6, - 0x69c7,0x69c8,0x69c9,0x69ca,0x69cb,0x69cc,0x69cd,0x69ce,0x69cf,0x69d0, - 0x69d1,0x69d2,0x69d3,0x69d4,0x69d5,0x69d6,0x69d7,0x69d8,0x69d9,0x69da, - 0x69db,0x69dc,0x69dd,0x69de,0x69df,0x69e0,0x69e1,0x69e2,0x69e3,0x69e4, - 0x69e5,0x69e6,0x69e7,0x69e8,0x69e9,0x69ea,0x69eb,0x69ec,0x69ed,0x69ee, - 0x69ef,0x69f0,0x69f1,0x69f2,0x69f3,0x69f4,0x69f5,0x69f6,0x69f7,0x69f8, - 0x69f9,0x69fa,0x69fb,0x69fc,0x69fd,0x69fe,0x69ff,0x6a00,0x6a01,0x6a02, - 0x6a03,0x6a04,0x6a05,0x6a06,0x6a07,0x6a08,0x6a09,0x6a0a,0x6a0b,0x6a0c, - 0x6a0d,0x6a0e,0x6a0f,0x6a10,0x6a11,0x6a12,0x6a13,0x6a14,0x6a15,0x6a16, - 0x6a17,0x6a18,0x6a19,0x6a1a,0x6a1b,0x6a1c,0x6a1d,0x6a1e,0x6a1f,0x6a20, - 0x6a21,0x6a22,0x6a23,0x6a24,0x6a25,0x6a26,0x6a27,0x6a28,0x6a29,0x6a2a, - 0x6a2b,0x6a2c,0x6a2d,0x6a2e,0x6a2f,0x6a30,0x6a31,0x6a32,0x6a33,0x6a34, - 0x6a35,0x6a36,0x6a37,0x6a38,0x6a39,0x6a3a,0x6a3b,0x6a3c,0x6a3d,0x6a3e, - 0x6a3f,0x6a40,0x6a41,0x6a42,0x6a43,0x6a44,0x6a45,0x6a46,0x6a47,0x6a48, - 0x6a49,0x6a4a,0x6a4b,0x6a4c,0x6a4d,0x6a4e,0x6a4f,0x6a50,0x6a51,0x6a52, - 0x6a53,0x6a54,0x6a55,0x6a56,0x6a57,0x6a58,0x6a59,0x6a5a,0x6a5b,0x6a5c, - 0x6a5d,0x6a5e,0x6a5f,0x6a60,0x6a61,0x6a62,0x6a63,0x6a64,0x6a65,0x6a66, - 0x6a67,0x6a68,0x6a69,0x6a6a,0x6a6b,0x6a6c,0x6a6d,0x6a6e,0x6a6f,0x6a70, - 0x6a71,0x6a72,0x6a73,0x6a74,0x6a75,0x6a76,0x6a77,0x6a78,0x6a79,0x6a7a, - 0x6a7b,0x6a7c,0x6a7d,0x6a7e,0x6a7f,0x6a80,0x6a81,0x6a82,0x6a83,0x6a84, - 0x6a85,0x6a86,0x6a87,0x6a88,0x6a89,0x6a8a,0x6a8b,0x6a8c,0x6a8d,0x6a8e, - 0x6a8f,0x6a90,0x6a91,0x6a92,0x6a93,0x6a94,0x6a95,0x6a96,0x6a97,0x6a98, - 0x6a99,0x6a9a,0x6a9b,0x6a9c,0x6a9d,0x6a9e,0x6a9f,0x6aa0,0x6aa1,0x6aa2, - 0x6aa3,0x6aa4,0x6aa5,0x6aa6,0x6aa7,0x6aa8,0x6aa9,0x6aaa,0x6aab,0x6aac, - 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,0x6b20,0x6b21,0x6b22,0x6b23,0x6b24, - 0x6b25,0x6b26,0x6b27,0x6b28,0x6b29,0x6b2a,0x6b2b,0x6b2c,0x6b2d,0x6b2e, - 0x6b2f,0x6b30,0x6b31,0x6b32,0x6b33,0x6b34,0x6b35,0x6b36,0x6b37,0x6b38, - 0x6b39,0x6b3a,0x6b3b,0x6b3c,0x6b3d,0x6b3e,0x6b3f,0x6b40,0x6b41,0x6b42, - 0x6b43,0x6b44,0x6b45,0x6b46,0x6b47,0x6b48,0x6b49,0x6b4a,0x6b4b,0x6b4c, - 0x6b4d,0x6b4e,0x6b4f,0x6b50,0x6b51,0x6b52,0x6b53,0x6b54,0x6b55,0x6b56, - 0x6b57,0x6b58,0x6b59,0x6b5a,0x6b5b,0x6b5c,0x6b5d,0x6b5e,0x6b5f,0x6b60, - 0x6b61,0x6b62,0x6b63,0x6b64,0x6b65,0x6b66,0x6b67,0x6b68,0x6b69,0x6b6a, - 0x6b6b,0x6b6c,0x6b6d,0x6b6e,0x6b6f,0x6b70,0x6b71,0x6b72,0x6b73,0x6b74, - 0x6b75,0x6b76,0x6b77,0x6b78,0x6b79,0x6b7a,0x6b7b,0x6b7c,0x6b7d,0x6b7e, - 0x6b7f,0x6b80,0x6b81,0x6b82,0x6b83,0x6b84,0x6b85,0x6b86,0x6b87,0x6b88, - 0x6b89,0x6b8a,0x6b8b,0x6b8c,0x6b8d,0x6b8e,0x6b8f,0x6b90,0x6b91,0x6b92, - 0x6b93,0x6b94,0x6b95,0x6b96,0x6b97,0x6b98,0x6b99,0x6b9a,0x6b9b,0x6b9c, - 0x6b9d,0x6b9e,0x6b9f,0x6ba0,0x6ba1,0x6ba2,0x6ba3,0x6ba4,0x6ba5,0x6ba6, - 0x6ba7,0x6ba8,0x6ba9,0x6baa,0x6bab,0x6bac,0x6bad,0x6bae,0x6baf,0x6bb0, - 0x6bb1,0x6bb2,0x6bb3,0x6bb4,0x6bb5,0x6bb6,0x6bb7,0x6bb8,0x6bb9,0x6bba, - 0x6bbb,0x6bbc,0x6bbd,0x6bbe,0x6bbf,0x6bc0,0x6bc1,0x6bc2,0x6bc3,0x6bc4, - 0x6bc5,0x6bc6,0x6bc7,0x6bc8,0x6bc9,0x6bca,0x6bcb,0x6bcc,0x6bcd,0x6bce, - 0x6bcf,0x6bd0,0x6bd1,0x6bd2,0x6bd3,0x6bd4,0x6bd5,0x6bd6,0x6bd7,0x6bd8, - 0x6bd9,0x6bda,0x6bdb,0x6bdc,0x6bdd,0x6bde,0x6bdf,0x6be0,0x6be1,0x6be2, - 0x6be3,0x6be4,0x6be5,0x6be6,0x6be7,0x6be8,0x6be9,0x6bea,0x6beb,0x6bec, - 0x6bed,0x6bee,0x6bef,0x6bf0,0x6bf1,0x6bf2,0x6bf3,0x6bf4,0x6bf5,0x6bf6, - 0x6bf7,0x6bf8,0x6bf9,0x6bfa,0x6bfb,0x6bfc,0x6bfd,0x6bfe,0x6bff,0x6c00, - 0x6c01,0x6c02,0x6c03,0x6c04,0x6c05,0x6c06,0x6c07,0x6c08,0x6c09,0x6c0a, - 0x6c0b,0x6c0c,0x6c0d,0x6c0e,0x6c0f,0x6c10,0x6c11,0x6c12,0x6c13,0x6c14, - 0x6c15,0x6c16,0x6c17,0x6c18,0x6c19,0x6c1a,0x6c1b,0x6c1c,0x6c1d,0x6c1e, - 0x6c1f,0x6c20,0x6c21,0x6c22,0x6c23,0x6c24,0x6c25,0x6c26,0x6c27,0x6c28, - 0x6c29,0x6c2a,0x6c2b,0x6c2c,0x6c2d,0x6c2e,0x6c2f,0x6c30,0x6c31,0x6c32, - 0x6c33,0x6c34,0x6c35,0x6c36,0x6c37,0x6c38,0x6c39,0x6c3a,0x6c3b,0x6c3c, - 0x6c3d,0x6c3e,0x6c3f,0x6c40,0x6c41,0x6c42,0x6c43,0x6c44,0x6c45,0x6c46, - 0x6c47,0x6c48,0x6c49,0x6c4a,0x6c4b,0x6c4c,0x6c4d,0x6c4e,0x6c4f,0x6c50, - 0x6c51,0x6c52,0x6c53,0x6c54,0x6c55,0x6c56,0x6c57,0x6c58,0x6c59,0x6c5a, - 0x6c5b,0x6c5c,0x6c5d,0x6c5e,0x6c5f,0x6c60,0x6c61,0x6c62,0x6c63,0x6c64, - 0x6c65,0x6c66,0x6c67,0x6c68,0x6c69,0x6c6a,0x6c6b,0x6c6c,0x6c6d,0x6c6e, - 0x6c6f,0x6c70,0x6c71,0x6c72,0x6c73,0x6c74,0x6c75,0x6c76,0x6c77,0x6c78, - 0x6c79,0x6c7a,0x6c7b,0x6c7c,0x6c7d,0x6c7e,0x6c7f,0x6c80,0x6c81,0x6c82, - 0x6c83,0x6c84,0x6c85,0x6c86,0x6c87,0x6c88,0x6c89,0x6c8a,0x6c8b,0x6c8c, - 0x6c8d,0x6c8e,0x6c8f,0x6c90,0x6c91,0x6c92,0x6c93,0x6c94,0x6c95,0x6c96, - 0x6c97,0x6c98,0x6c99,0x6c9a,0x6c9b,0x6c9c,0x6c9d,0x6c9e,0x6c9f,0x6ca0, - 0x6ca1,0x6ca2,0x6ca3,0x6ca4,0x6ca5,0x6ca6,0x6ca7,0x6ca8,0x6ca9,0x6caa, - 0x6cab,0x6cac,0x6cad,0x6cae,0x6caf,0x6cb0,0x6cb1,0x6cb2,0x6cb3,0x6cb4, - 0x6cb5,0x6cb6,0x6cb7,0x6cb8,0x6cb9,0x6cba,0x6cbb,0x6cbc,0x6cbd,0x6cbe, - 0x6cbf,0x6cc0,0x6cc1,0x6cc2,0x6cc3,0x6cc4,0x6cc5,0x6cc6,0x6cc7,0x6cc8, - 0x6cc9,0x6cca,0x6ccb,0x6ccc,0x6ccd,0x6cce,0x6ccf,0x6cd0,0x6cd1,0x6cd2, - 0x6cd3,0x6cd4,0x6cd5,0x6cd6,0x6cd7,0x6cd8,0x6cd9,0x6cda,0x6cdb,0x6cdc, - 0x6cdd,0x6cde,0x6cdf,0x6ce0,0x6ce1,0x6ce2,0x6ce3,0x6ce4,0x6ce5,0x6ce6, - 0x6ce7,0x6ce8,0x6ce9,0x6cea,0x6ceb,0x6cec,0x6ced,0x6cee,0x6cef,0x6cf0, - 0x6cf1,0x6cf2,0x6cf3,0x6cf4,0x6cf5,0x6cf6,0x6cf7,0x6cf8,0x6cf9,0x6cfa, - 0x6cfb,0x6cfc,0x6cfd,0x6cfe,0x6cff,0x6d00,0x6d01,0x6d02,0x6d03,0x6d04, - 0x6d05,0x6d06,0x6d07,0x6d08,0x6d09,0x6d0a,0x6d0b,0x6d0c,0x6d0d,0x6d0e, - 0x6d0f,0x6d10,0x6d11,0x6d12,0x6d13,0x6d14,0x6d15,0x6d16,0x6d17,0x6d18, - 0x6d19,0x6d1a,0x6d1b,0x6d1c,0x6d1d,0x6d1e,0x6d1f,0x6d20,0x6d21,0x6d22, - 0x6d23,0x6d24,0x6d25,0x6d26,0x6d27,0x6d28,0x6d29,0x6d2a,0x6d2b,0x6d2c, - 0x6d2d,0x6d2e,0x6d2f,0x6d30,0x6d31,0x6d32,0x6d33,0x6d34,0x6d35,0x6d36, - 0x6d37,0x6d38,0x6d39,0x6d3a,0x6d3b,0x6d3c,0x6d3d,0x6d3e,0x6d3f,0x6d40, - 0x6d41,0x6d42,0x6d43,0x6d44,0x6d45,0x6d46,0x6d47,0x6d48,0x6d49,0x6d4a, - 0x6d4b,0x6d4c,0x6d4d,0x6d4e,0x6d4f,0x6d50,0x6d51,0x6d52,0x6d53,0x6d54, - 0x6d55,0x6d56,0x6d57,0x6d58,0x6d59,0x6d5a,0x6d5b,0x6d5c,0x6d5d,0x6d5e, - 0x6d5f,0x6d60,0x6d61,0x6d62,0x6d63,0x6d64,0x6d65,0x6d66,0x6d67,0x6d68, - 0x6d69,0x6d6a,0x6d6b,0x6d6c,0x6d6d,0x6d6e,0x6d6f,0x6d70,0x6d71,0x6d72, - 0x6d73,0x6d74,0x6d75,0x6d76,0x6d77,0x6d78,0x6d79,0x6d7a,0x6d7b,0x6d7c, - 0x6d7d,0x6d7e,0x6d7f,0x6d80,0x6d81,0x6d82,0x6d83,0x6d84,0x6d85,0x6d86, - 0x6d87,0x6d88,0x6d89,0x6d8a,0x6d8b,0x6d8c,0x6d8d,0x6d8e,0x6d8f,0x6d90, - 0x6d91,0x6d92,0x6d93,0x6d94,0x6d95,0x6d96,0x6d97,0x6d98,0x6d99,0x6d9a, - 0x6d9b,0x6d9c,0x6d9d,0x6d9e,0x6d9f,0x6da0,0x6da1,0x6da2,0x6da3,0x6da4, - 0x6da5,0x6da6,0x6da7,0x6da8,0x6da9,0x6daa,0x6dab,0x6dac,0x6dad,0x6dae, - 0x6daf,0x6db0,0x6db1,0x6db2,0x6db3,0x6db4,0x6db5,0x6db6,0x6db7,0x6db8, - 0x6db9,0x6dba,0x6dbb,0x6dbc,0x6dbd,0x6dbe,0x6dbf,0x6dc0,0x6dc1,0x6dc2, - 0x6dc3,0x6dc4,0x6dc5,0x6dc6,0x6dc7,0x6dc8,0x6dc9,0x6dca,0x6dcb,0x6dcc, - 0x6dcd,0x6dce,0x6dcf,0x6dd0,0x6dd1,0x6dd2,0x6dd3,0x6dd4,0x6dd5,0x6dd6, - 0x6dd7,0x6dd8,0x6dd9,0x6dda,0x6ddb,0x6ddc,0x6ddd,0x6dde,0x6ddf,0x6de0, - 0x6de1,0x6de2,0x6de3,0x6de4,0x6de5,0x6de6,0x6de7,0x6de8,0x6de9,0x6dea, - 0x6deb,0x6dec,0x6ded,0x6dee,0x6def,0x6df0,0x6df1,0x6df2,0x6df3,0x6df4, - 0x6df5,0x6df6,0x6df7,0x6df8,0x6df9,0x6dfa,0x6dfb,0x6dfc,0x6dfd,0x6dfe, - 0x6dff,0x6e00,0x6e01,0x6e02,0x6e03,0x6e04,0x6e05,0x6e06,0x6e07,0x6e08, - 0x6e09,0x6e0a,0x6e0b,0x6e0c,0x6e0d,0x6e0e,0x6e0f,0x6e10,0x6e11,0x6e12, - 0x6e13,0x6e14,0x6e15,0x6e16,0x6e17,0x6e18,0x6e19,0x6e1a,0x6e1b,0x6e1c, - 0x6e1d,0x6e1e,0x6e1f,0x6e20,0x6e21,0x6e22,0x6e23,0x6e24,0x6e25,0x6e26, - 0x6e27,0x6e28,0x6e29,0x6e2a,0x6e2b,0x6e2c,0x6e2d,0x6e2e,0x6e2f,0x6e30, - 0x6e31,0x6e32,0x6e33,0x6e34,0x6e35,0x6e36,0x6e37,0x6e38,0x6e39,0x6e3a, - 0x6e3b,0x6e3c,0x6e3d,0x6e3e,0x6e3f,0x6e40,0x6e41,0x6e42,0x6e43,0x6e44, - 0x6e45,0x6e46,0x6e47,0x6e48,0x6e49,0x6e4a,0x6e4b,0x6e4c,0x6e4d,0x6e4e, - 0x6e4f,0x6e50,0x6e51,0x6e52,0x6e53,0x6e54,0x6e55,0x6e56,0x6e57,0x6e58, - 0x6e59,0x6e5a,0x6e5b,0x6e5c,0x6e5d,0x6e5e,0x6e5f,0x6e60,0x6e61,0x6e62, - 0x6e63,0x6e64,0x6e65,0x6e66,0x6e67,0x6e68,0x6e69,0x6e6a,0x6e6b,0x6e6c, - 0x6e6d,0x6e6e,0x6e6f,0x6e70,0x6e71,0x6e72,0x6e73,0x6e74,0x6e75,0x6e76, - 0x6e77,0x6e78,0x6e79,0x6e7a,0x6e7b,0x6e7c,0x6e7d,0x6e7e,0x6e7f,0x6e80, - 0x6e81,0x6e82,0x6e83,0x6e84,0x6e85,0x6e86,0x6e87,0x6e88,0x6e89,0x6e8a, - 0x6e8b,0x6e8c,0x6e8d,0x6e8e,0x6e8f,0x6e90,0x6e91,0x6e92,0x6e93,0x6e94, - 0x6e95,0x6e96,0x6e97,0x6e98,0x6e99,0x6e9a,0x6e9b,0x6e9c,0x6e9d,0x6e9e, - 0x6e9f,0x6ea0,0x6ea1,0x6ea2,0x6ea3,0x6ea4,0x6ea5,0x6ea6,0x6ea7,0x6ea8, - 0x6ea9,0x6eaa,0x6eab,0x6eac,0x6ead,0x6eae,0x6eaf,0x6eb0,0x6eb1,0x6eb2, - 0x6eb3,0x6eb4,0x6eb5,0x6eb6,0x6eb7,0x6eb8,0x6eb9,0x6eba,0x6ebb,0x6ebc, - 0x6ebd,0x6ebe,0x6ebf,0x6ec0,0x6ec1,0x6ec2,0x6ec3,0x6ec4,0x6ec5,0x6ec6, - 0x6ec7,0x6ec8,0x6ec9,0x6eca,0x6ecb,0x6ecc,0x6ecd,0x6ece,0x6ecf,0x6ed0, - 0x6ed1,0x6ed2,0x6ed3,0x6ed4,0x6ed5,0x6ed6,0x6ed7,0x6ed8,0x6ed9,0x6eda, - 0x6edb,0x6edc,0x6edd,0x6ede,0x6edf,0x6ee0,0x6ee1,0x6ee2,0x6ee3,0x6ee4, - 0x6ee5,0x6ee6,0x6ee7,0x6ee8,0x6ee9,0x6eea,0x6eeb,0x6eec,0x6eed,0x6eee, - 0x6eef,0x6ef0,0x6ef1,0x6ef2,0x6ef3,0x6ef4,0x6ef5,0x6ef6,0x6ef7,0x6ef8, - 0x6ef9,0x6efa,0x6efb,0x6efc,0x6efd,0x6efe,0x6eff,0x6f00,0x6f01,0x6f02, - 0x6f03,0x6f04,0x6f05,0x6f06,0x6f07,0x6f08,0x6f09,0x6f0a,0x6f0b,0x6f0c, - 0x6f0d,0x6f0e,0x6f0f,0x6f10,0x6f11,0x6f12,0x6f13,0x6f14,0x6f15,0x6f16, - 0x6f17,0x6f18,0x6f19,0x6f1a,0x6f1b,0x6f1c,0x6f1d,0x6f1e,0x6f1f,0x6f20, - 0x6f21,0x6f22,0x6f23,0x6f24,0x6f25,0x6f26,0x6f27,0x6f28,0x6f29,0x6f2a, - 0x6f2b,0x6f2c,0x6f2d,0x6f2e,0x6f2f,0x6f30,0x6f31,0x6f32,0x6f33,0x6f34, - 0x6f35,0x6f36,0x6f37,0x6f38,0x6f39,0x6f3a,0x6f3b,0x6f3c,0x6f3d,0x6f3e, - 0x6f3f,0x6f40,0x6f41,0x6f42,0x6f43,0x6f44,0x6f45,0x6f46,0x6f47,0x6f48, - 0x6f49,0x6f4a,0x6f4b,0x6f4c,0x6f4d,0x6f4e,0x6f4f,0x6f50,0x6f51,0x6f52, - 0x6f53,0x6f54,0x6f55,0x6f56,0x6f57,0x6f58,0x6f59,0x6f5a,0x6f5b,0x6f5c, - 0x6f5d,0x6f5e,0x6f5f,0x6f60,0x6f61,0x6f62,0x6f63,0x6f64,0x6f65,0x6f66, - 0x6f67,0x6f68,0x6f69,0x6f6a,0x6f6b,0x6f6c,0x6f6d,0x6f6e,0x6f6f,0x6f70, - 0x6f71,0x6f72,0x6f73,0x6f74,0x6f75,0x6f76,0x6f77,0x6f78,0x6f79,0x6f7a, - 0x6f7b,0x6f7c,0x6f7d,0x6f7e,0x6f7f,0x6f80,0x6f81,0x6f82,0x6f83,0x6f84, - 0x6f85,0x6f86,0x6f87,0x6f88,0x6f89,0x6f8a,0x6f8b,0x6f8c,0x6f8d,0x6f8e, - 0x6f8f,0x6f90,0x6f91,0x6f92,0x6f93,0x6f94,0x6f95,0x6f96,0x6f97,0x6f98, - 0x6f99,0x6f9a,0x6f9b,0x6f9c,0x6f9d,0x6f9e,0x6f9f,0x6fa0,0x6fa1,0x6fa2, - 0x6fa3,0x6fa4,0x6fa5,0x6fa6,0x6fa7,0x6fa8,0x6fa9,0x6faa,0x6fab,0x6fac, - 0x6fad,0x6fae,0x6faf,0x6fb0,0x6fb1,0x6fb2,0x6fb3,0x6fb4,0x6fb5,0x6fb6, - 0x6fb7,0x6fb8,0x6fb9,0x6fba,0x6fbb,0x6fbc,0x6fbd,0x6fbe,0x6fbf,0x6fc0, - 0x6fc1,0x6fc2,0x6fc3,0x6fc4,0x6fc5,0x6fc6,0x6fc7,0x6fc8,0x6fc9,0x6fca, - 0x6fcb,0x6fcc,0x6fcd,0x6fce,0x6fcf,0x6fd0,0x6fd1,0x6fd2,0x6fd3,0x6fd4, - 0x6fd5,0x6fd6,0x6fd7,0x6fd8,0x6fd9,0x6fda,0x6fdb,0x6fdc,0x6fdd,0x6fde, - 0x6fdf,0x6fe0,0x6fe1,0x6fe2,0x6fe3,0x6fe4,0x6fe5,0x6fe6,0x6fe7,0x6fe8, - 0x6fe9,0x6fea,0x6feb,0x6fec,0x6fed,0x6fee,0x6fef,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, - 0x7011,0x7012,0x7013,0x7014,0x7015,0x7016,0x7017,0x7018,0x7019,0x701a, - 0x701b,0x701c,0x701d,0x701e,0x701f,0x7020,0x7021,0x7022,0x7023,0x7024, - 0x7025,0x7026,0x7027,0x7028,0x7029,0x702a,0x702b,0x702c,0x702d,0x702e, - 0x702f,0x7030,0x7031,0x7032,0x7033,0x7034,0x7035,0x7036,0x7037,0x7038, - 0x7039,0x703a,0x703b,0x703c,0x703d,0x703e,0x703f,0x7040,0x7041,0x7042, - 0x7043,0x7044,0x7045,0x7046,0x7047,0x7048,0x7049,0x704a,0x704b,0x704c, - 0x704d,0x704e,0x704f,0x7050,0x7051,0x7052,0x7053,0x7054,0x7055,0x7056, - 0x7057,0x7058,0x7059,0x705a,0x705b,0x705c,0x705d,0x705e,0x705f,0x7060, - 0x7061,0x7062,0x7063,0x7064,0x7065,0x7066,0x7067,0x7068,0x7069,0x706a, - 0x706b,0x706c,0x706d,0x706e,0x706f,0x7070,0x7071,0x7072,0x7073,0x7074, - 0x7075,0x7076,0x7077,0x7078,0x7079,0x707a,0x707b,0x707c,0x707d,0x707e, - 0x707f,0x7080,0x7081,0x7082,0x7083,0x7084,0x7085,0x7086,0x7087,0x7088, - 0x7089,0x708a,0x708b,0x708c,0x708d,0x708e,0x708f,0x7090,0x7091,0x7092, - 0x7093,0x7094,0x7095,0x7096,0x7097,0x7098,0x7099,0x709a,0x709b,0x709c, - 0x709d,0x709e,0x709f,0x70a0,0x70a1,0x70a2,0x70a3,0x70a4,0x70a5,0x70a6, - 0x70a7,0x70a8,0x70a9,0x70aa,0x70ab,0x70ac,0x70ad,0x70ae,0x70af,0x70b0, - 0x70b1,0x70b2,0x70b3,0x70b4,0x70b5,0x70b6,0x70b7,0x70b8,0x70b9,0x70ba, - 0x70bb,0x70bc,0x70bd,0x70be,0x70bf,0x70c0,0x70c1,0x70c2,0x70c3,0x70c4, - 0x70c5,0x70c6,0x70c7,0x70c8,0x70c9,0x70ca,0x70cb,0x70cc,0x70cd,0x70ce, - 0x70cf,0x70d0,0x70d1,0x70d2,0x70d3,0x70d4,0x70d5,0x70d6,0x70d7,0x70d8, - 0x70d9,0x70da,0x70db,0x70dc,0x70dd,0x70de,0x70df,0x70e0,0x70e1,0x70e2, - 0x70e3,0x70e4,0x70e5,0x70e6,0x70e7,0x70e8,0x70e9,0x70ea,0x70eb,0x70ec, - 0x70ed,0x70ee,0x70ef,0x70f0,0x70f1,0x70f2,0x70f3,0x70f4,0x70f5,0x70f6, - 0x70f7,0x70f8,0x70f9,0x70fa,0x70fb,0x70fc,0x70fd,0x70fe,0x70ff,0x7100, - 0x7101,0x7102,0x7103,0x7104,0x7105,0x7106,0x7107,0x7108,0x7109,0x710a, - 0x710b,0x710c,0x710d,0x710e,0x710f,0x7110,0x7111,0x7112,0x7113,0x7114, - 0x7115,0x7116,0x7117,0x7118,0x7119,0x711a,0x711b,0x711c,0x711d,0x711e, - 0x711f,0x7120,0x7121,0x7122,0x7123,0x7124,0x7125,0x7126,0x7127,0x7128, - 0x7129,0x712a,0x712b,0x712c,0x712d,0x712e,0x712f,0x7130,0x7131,0x7132, - 0x7133,0x7134,0x7135,0x7136,0x7137,0x7138,0x7139,0x713a,0x713b,0x713c, - 0x713d,0x713e,0x713f,0x7140,0x7141,0x7142,0x7143,0x7144,0x7145,0x7146, - 0x7147,0x7148,0x7149,0x714a,0x714b,0x714c,0x714d,0x714e,0x714f,0x7150, - 0x7151,0x7152,0x7153,0x7154,0x7155,0x7156,0x7157,0x7158,0x7159,0x715a, - 0x715b,0x715c,0x715d,0x715e,0x715f,0x7160,0x7161,0x7162,0x7163,0x7164, - 0x7165,0x7166,0x7167,0x7168,0x7169,0x716a,0x716b,0x716c,0x716d,0x716e, - 0x716f,0x7170,0x7171,0x7172,0x7173,0x7174,0x7175,0x7176,0x7177,0x7178, - 0x7179,0x717a,0x717b,0x717c,0x717d,0x717e,0x717f,0x7180,0x7181,0x7182, - 0x7183,0x7184,0x7185,0x7186,0x7187,0x7188,0x7189,0x718a,0x718b,0x718c, - 0x718d,0x718e,0x718f,0x7190,0x7191,0x7192,0x7193,0x7194,0x7195,0x7196, - 0x7197,0x7198,0x7199,0x719a,0x719b,0x719c,0x719d,0x719e,0x719f,0x71a0, - 0x71a1,0x71a2,0x71a3,0x71a4,0x71a5,0x71a6,0x71a7,0x71a8,0x71a9,0x71aa, - 0x71ab,0x71ac,0x71ad,0x71ae,0x71af,0x71b0,0x71b1,0x71b2,0x71b3,0x71b4, - 0x71b5,0x71b6,0x71b7,0x71b8,0x71b9,0x71ba,0x71bb,0x71bc,0x71bd,0x71be, - 0x71bf,0x71c0,0x71c1,0x71c2,0x71c3,0x71c4,0x71c5,0x71c6,0x71c7,0x71c8, - 0x71c9,0x71ca,0x71cb,0x71cc,0x71cd,0x71ce,0x71cf,0x71d0,0x71d1,0x71d2, - 0x71d3,0x71d4,0x71d5,0x71d6,0x71d7,0x71d8,0x71d9,0x71da,0x71db,0x71dc, - 0x71dd,0x71de,0x71df,0x71e0,0x71e1,0x71e2,0x71e3,0x71e4,0x71e5,0x71e6, - 0x71e7,0x71e8,0x71e9,0x71ea,0x71eb,0x71ec,0x71ed,0x71ee,0x71ef,0x71f0, - 0x71f1,0x71f2,0x71f3,0x71f4,0x71f5,0x71f6,0x71f7,0x71f8,0x71f9,0x71fa, - 0x71fb,0x71fc,0x71fd,0x71fe,0x71ff,0x7200,0x7201,0x7202,0x7203,0x7204, - 0x7205,0x7206,0x7207,0x7208,0x7209,0x720a,0x720b,0x720c,0x720d,0x720e, - 0x720f,0x7210,0x7211,0x7212,0x7213,0x7214,0x7215,0x7216,0x7217,0x7218, - 0x7219,0x721a,0x721b,0x721c,0x721d,0x721e,0x721f,0x7220,0x7221,0x7222, - 0x7223,0x7224,0x7225,0x7226,0x7227,0x7228,0x7229,0x722a,0x722b,0x722c, - 0x722d,0x722e,0x722f,0x7230,0x7231,0x7232,0x7233,0x7234,0x7235,0x7236, - 0x7237,0x7238,0x7239,0x723a,0x723b,0x723c,0x723d,0x723e,0x723f,0x7240, - 0x7241,0x7242,0x7243,0x7244,0x7245,0x7246,0x7247,0x7248,0x7249,0x724a, - 0x724b,0x724c,0x724d,0x724e,0x724f,0x7250,0x7251,0x7252,0x7253,0x7254, - 0x7255,0x7256,0x7257,0x7258,0x7259,0x725a,0x725b,0x725c,0x725d,0x725e, - 0x725f,0x7260,0x7261,0x7262,0x7263,0x7264,0x7265,0x7266,0x7267,0x7268, - 0x7269,0x726a,0x726b,0x726c,0x726d,0x726e,0x726f,0x7270,0x7271,0x7272, - 0x7273,0x7274,0x7275,0x7276,0x7277,0x7278,0x7279,0x727a,0x727b,0x727c, - 0x727d,0x727e,0x727f,0x7280,0x7281,0x7282,0x7283,0x7284,0x7285,0x7286, - 0x7287,0x7288,0x7289,0x728a,0x728b,0x728c,0x728d,0x728e,0x728f,0x7290, - 0x7291,0x7292,0x7293,0x7294,0x7295,0x7296,0x7297,0x7298,0x7299,0x729a, - 0x729b,0x729c,0x729d,0x729e,0x729f,0x72a0,0x72a1,0x72a2,0x72a3,0x72a4, - 0x72a5,0x72a6,0x72a7,0x72a8,0x72a9,0x72aa,0x72ab,0x72ac,0x72ad,0x72ae, - 0x72af,0x72b0,0x72b1,0x72b2,0x72b3,0x72b4,0x72b5,0x72b6,0x72b7,0x72b8, - 0x72b9,0x72ba,0x72bb,0x72bc,0x72bd,0x72be,0x72bf,0x72c0,0x72c1,0x72c2, - 0x72c3,0x72c4,0x72c5,0x72c6,0x72c7,0x72c8,0x72c9,0x72ca,0x72cb,0x72cc, - 0x72cd,0x72ce,0x72cf,0x72d0,0x72d1,0x72d2,0x72d3,0x72d4,0x72d5,0x72d6, - 0x72d7,0x72d8,0x72d9,0x72da,0x72db,0x72dc,0x72dd,0x72de,0x72df,0x72e0, - 0x72e1,0x72e2,0x72e3,0x72e4,0x72e5,0x72e6,0x72e7,0x72e8,0x72e9,0x72ea, - 0x72eb,0x72ec,0x72ed,0x72ee,0x72ef,0x72f0,0x72f1,0x72f2,0x72f3,0x72f4, - 0x72f5,0x72f6,0x72f7,0x72f8,0x72f9,0x72fa,0x72fb,0x72fc,0x72fd,0x72fe, - 0x72ff,0x7300,0x7301,0x7302,0x7303,0x7304,0x7305,0x7306,0x7307,0x7308, - 0x7309,0x730a,0x730b,0x730c,0x730d,0x730e,0x730f,0x7310,0x7311,0x7312, - 0x7313,0x7314,0x7315,0x7316,0x7317,0x7318,0x7319,0x731a,0x731b,0x731c, - 0x731d,0x731e,0x731f,0x7320,0x7321,0x7322,0x7323,0x7324,0x7325,0x7326, - 0x7327,0x7328,0x7329,0x732a,0x732b,0x732c,0x732d,0x732e,0x732f,0x7330, - 0x7331,0x7332,0x7333,0x7334,0x7335,0x7336,0x7337,0x7338,0x7339,0x733a, - 0x733b,0x733c,0x733d,0x733e,0x733f,0x7340,0x7341,0x7342,0x7343,0x7344, - 0x7345,0x7346,0x7347,0x7348,0x7349,0x734a,0x734b,0x734c,0x734d,0x734e, - 0x734f,0x7350,0x7351,0x7352,0x7353,0x7354,0x7355,0x7356,0x7357,0x7358, - 0x7359,0x735a,0x735b,0x735c,0x735d,0x735e,0x735f,0x7360,0x7361,0x7362, - 0x7363,0x7364,0x7365,0x7366,0x7367,0x7368,0x7369,0x736a,0x736b,0x736c, - 0x736d,0x736e,0x736f,0x7370,0x7371,0x7372,0x7373,0x7374,0x7375,0x7376, - 0x7377,0x7378,0x7379,0x737a,0x737b,0x737c,0x737d,0x737e,0x737f,0x7380, - 0x7381,0x7382,0x7383,0x7384,0x7385,0x7386,0x7387,0x7388,0x7389,0x738a, - 0x738b,0x738c,0x738d,0x738e,0x738f,0x7390,0x7391,0x7392,0x7393,0x7394, - 0x7395,0x7396,0x7397,0x7398,0x7399,0x739a,0x739b,0x739c,0x739d,0x739e, - 0x739f,0x73a0,0x73a1,0x73a2,0x73a3,0x73a4,0x73a5,0x73a6,0x73a7,0x73a8, - 0x73a9,0x73aa,0x73ab,0x73ac,0x73ad,0x73ae,0x73af,0x73b0,0x73b1,0x73b2, - 0x73b3,0x73b4,0x73b5,0x73b6,0x73b7,0x73b8,0x73b9,0x73ba,0x73bb,0x73bc, - 0x73bd,0x73be,0x73bf,0x73c0,0x73c1,0x73c2,0x73c3,0x73c4,0x73c5,0x73c6, - 0x73c7,0x73c8,0x73c9,0x73ca,0x73cb,0x73cc,0x73cd,0x73ce,0x73cf,0x73d0, - 0x73d1,0x73d2,0x73d3,0x73d4,0x73d5,0x73d6,0x73d7,0x73d8,0x73d9,0x73da, - 0x73db,0x73dc,0x73dd,0x73de,0x73df,0x73e0,0x73e1,0x73e2,0x73e3,0x73e4, - 0x73e5,0x73e6,0x73e7,0x73e8,0x73e9,0x73ea,0x73eb,0x73ec,0x73ed,0x73ee, - 0x73ef,0x73f0,0x73f1,0x73f2,0x73f3,0x73f4,0x73f5,0x73f6,0x73f7,0x73f8, - 0x73f9,0x73fa,0x73fb,0x73fc,0x73fd,0x73fe,0x73ff,0x7400,0x7401,0x7402, - 0x7403,0x7404,0x7405,0x7406,0x7407,0x7408,0x7409,0x740a,0x740b,0x740c, - 0x740d,0x740e,0x740f,0x7410,0x7411,0x7412,0x7413,0x7414,0x7415,0x7416, - 0x7417,0x7418,0x7419,0x741a,0x741b,0x741c,0x741d,0x741e,0x741f,0x7420, - 0x7421,0x7422,0x7423,0x7424,0x7425,0x7426,0x7427,0x7428,0x7429,0x742a, - 0x742b,0x742c,0x742d,0x742e,0x742f,0x7430,0x7431,0x7432,0x7433,0x7434, - 0x7435,0x7436,0x7437,0x7438,0x7439,0x743a,0x743b,0x743c,0x743d,0x743e, - 0x743f,0x7440,0x7441,0x7442,0x7443,0x7444,0x7445,0x7446,0x7447,0x7448, - 0x7449,0x744a,0x744b,0x744c,0x744d,0x744e,0x744f,0x7450,0x7451,0x7452, - 0x7453,0x7454,0x7455,0x7456,0x7457,0x7458,0x7459,0x745a,0x745b,0x745c, - 0x745d,0x745e,0x745f,0x7460,0x7461,0x7462,0x7463,0x7464,0x7465,0x7466, - 0x7467,0x7468,0x7469,0x746a,0x746b,0x746c,0x746d,0x746e,0x746f,0x7470, - 0x7471,0x7472,0x7473,0x7474,0x7475,0x7476,0x7477,0x7478,0x7479,0x747a, - 0x747b,0x747c,0x747d,0x747e,0x747f,0x7480,0x7481,0x7482,0x7483,0x7484, - 0x7485,0x7486,0x7487,0x7488,0x7489,0x748a,0x748b,0x748c,0x748d,0x748e, - 0x748f,0x7490,0x7491,0x7492,0x7493,0x7494,0x7495,0x7496,0x7497,0x7498, - 0x7499,0x749a,0x749b,0x749c,0x749d,0x749e,0x749f,0x74a0,0x74a1,0x74a2, - 0x74a3,0x74a4,0x74a5,0x74a6,0x74a7,0x74a8,0x74a9,0x74aa,0x74ab,0x74ac, - 0x74ad,0x74ae,0x74af,0x74b0,0x74b1,0x74b2,0x74b3,0x74b4,0x74b5,0x74b6, - 0x74b7,0x74b8,0x74b9,0x74ba,0x74bb,0x74bc,0x74bd,0x74be,0x74bf,0x74c0, - 0x74c1,0x74c2,0x74c3,0x74c4,0x74c5,0x74c6,0x74c7,0x74c8,0x74c9,0x74ca, - 0x74cb,0x74cc,0x74cd,0x74ce,0x74cf,0x74d0,0x74d1,0x74d2,0x74d3,0x74d4, - 0x74d5,0x74d6,0x74d7,0x74d8,0x74d9,0x74da,0x74db,0x74dc,0x74dd,0x74de, - 0x74df,0x74e0,0x74e1,0x74e2,0x74e3,0x74e4,0x74e5,0x74e6,0x74e7,0x74e8, - 0x74e9,0x74ea,0x74eb,0x74ec,0x74ed,0x74ee,0x74ef,0x74f0,0x74f1,0x74f2, - 0x74f3,0x74f4,0x74f5,0x74f6,0x74f7,0x74f8,0x74f9,0x74fa,0x74fb,0x74fc, - 0x74fd,0x74fe,0x74ff,0x7500,0x7501,0x7502,0x7503,0x7504,0x7505,0x7506, - 0x7507,0x7508,0x7509,0x750a,0x750b,0x750c,0x750d,0x750e,0x750f,0x7510, - 0x7511,0x7512,0x7513,0x7514,0x7515,0x7516,0x7517,0x7518,0x7519,0x751a, - 0x751b,0x751c,0x751d,0x751e,0x751f,0x7520,0x7521,0x7522,0x7523,0x7524, - 0x7525,0x7526,0x7527,0x7528,0x7529,0x752a,0x752b,0x752c,0x752d,0x752e, - 0x752f,0x7530,0x7531,0x7532,0x7533,0x7534,0x7535,0x7536,0x7537,0x7538, - 0x7539,0x753a,0x753b,0x753c,0x753d,0x753e,0x753f,0x7540,0x7541,0x7542, - 0x7543,0x7544,0x7545,0x7546,0x7547,0x7548,0x7549,0x754a,0x754b,0x754c, - 0x754d,0x754e,0x754f,0x7550,0x7551,0x7552,0x7553,0x7554,0x7555,0x7556, - 0x7557,0x7558,0x7559,0x755a,0x755b,0x755c,0x755d,0x755e,0x755f,0x7560, - 0x7561,0x7562,0x7563,0x7564,0x7565,0x7566,0x7567,0x7568,0x7569,0x756a, - 0x756b,0x756c,0x756d,0x756e,0x756f,0x7570,0x7571,0x7572,0x7573,0x7574, - 0x7575,0x7576,0x7577,0x7578,0x7579,0x757a,0x757b,0x757c,0x757d,0x757e, - 0x757f,0x7580,0x7581,0x7582,0x7583,0x7584,0x7585,0x7586,0x7587,0x7588, - 0x7589,0x758a,0x758b,0x758c,0x758d,0x758e,0x758f,0x7590,0x7591,0x7592, - 0x7593,0x7594,0x7595,0x7596,0x7597,0x7598,0x7599,0x759a,0x759b,0x759c, - 0x759d,0x759e,0x759f,0x75a0,0x75a1,0x75a2,0x75a3,0x75a4,0x75a5,0x75a6, - 0x75a7,0x75a8,0x75a9,0x75aa,0x75ab,0x75ac,0x75ad,0x75ae,0x75af,0x75b0, - 0x75b1,0x75b2,0x75b3,0x75b4,0x75b5,0x75b6,0x75b7,0x75b8,0x75b9,0x75ba, - 0x75bb,0x75bc,0x75bd,0x75be,0x75bf,0x75c0,0x75c1,0x75c2,0x75c3,0x75c4, - 0x75c5,0x75c6,0x75c7,0x75c8,0x75c9,0x75ca,0x75cb,0x75cc,0x75cd,0x75ce, - 0x75cf,0x75d0,0x75d1,0x75d2,0x75d3,0x75d4,0x75d5,0x75d6,0x75d7,0x75d8, - 0x75d9,0x75da,0x75db,0x75dc,0x75dd,0x75de,0x75df,0x75e0,0x75e1,0x75e2, - 0x75e3,0x75e4,0x75e5,0x75e6,0x75e7,0x75e8,0x75e9,0x75ea,0x75eb,0x75ec, - 0x75ed,0x75ee,0x75ef,0x75f0,0x75f1,0x75f2,0x75f3,0x75f4,0x75f5,0x75f6, - 0x75f7,0x75f8,0x75f9,0x75fa,0x75fb,0x75fc,0x75fd,0x75fe,0x75ff,0x7600, - 0x7601,0x7602,0x7603,0x7604,0x7605,0x7606,0x7607,0x7608,0x7609,0x760a, - 0x760b,0x760c,0x760d,0x760e,0x760f,0x7610,0x7611,0x7612,0x7613,0x7614, - 0x7615,0x7616,0x7617,0x7618,0x7619,0x761a,0x761b,0x761c,0x761d,0x761e, - 0x761f,0x7620,0x7621,0x7622,0x7623,0x7624,0x7625,0x7626,0x7627,0x7628, - 0x7629,0x762a,0x762b,0x762c,0x762d,0x762e,0x762f,0x7630,0x7631,0x7632, - 0x7633,0x7634,0x7635,0x7636,0x7637,0x7638,0x7639,0x763a,0x763b,0x763c, - 0x763d,0x763e,0x763f,0x7640,0x7641,0x7642,0x7643,0x7644,0x7645,0x7646, - 0x7647,0x7648,0x7649,0x764a,0x764b,0x764c,0x764d,0x764e,0x764f,0x7650, - 0x7651,0x7652,0x7653,0x7654,0x7655,0x7656,0x7657,0x7658,0x7659,0x765a, - 0x765b,0x765c,0x765d,0x765e,0x765f,0x7660,0x7661,0x7662,0x7663,0x7664, - 0x7665,0x7666,0x7667,0x7668,0x7669,0x766a,0x766b,0x766c,0x766d,0x766e, - 0x766f,0x7670,0x7671,0x7672,0x7673,0x7674,0x7675,0x7676,0x7677,0x7678, - 0x7679,0x767a,0x767b,0x767c,0x767d,0x767e,0x767f,0x7680,0x7681,0x7682, - 0x7683,0x7684,0x7685,0x7686,0x7687,0x7688,0x7689,0x768a,0x768b,0x768c, - 0x768d,0x768e,0x768f,0x7690,0x7691,0x7692,0x7693,0x7694,0x7695,0x7696, - 0x7697,0x7698,0x7699,0x769a,0x769b,0x769c,0x769d,0x769e,0x769f,0x76a0, - 0x76a1,0x76a2,0x76a3,0x76a4,0x76a5,0x76a6,0x76a7,0x76a8,0x76a9,0x76aa, - 0x76ab,0x76ac,0x76ad,0x76ae,0x76af,0x76b0,0x76b1,0x76b2,0x76b3,0x76b4, - 0x76b5,0x76b6,0x76b7,0x76b8,0x76b9,0x76ba,0x76bb,0x76bc,0x76bd,0x76be, - 0x76bf,0x76c0,0x76c1,0x76c2,0x76c3,0x76c4,0x76c5,0x76c6,0x76c7,0x76c8, - 0x76c9,0x76ca,0x76cb,0x76cc,0x76cd,0x76ce,0x76cf,0x76d0,0x76d1,0x76d2, - 0x76d3,0x76d4,0x76d5,0x76d6,0x76d7,0x76d8,0x76d9,0x76da,0x76db,0x76dc, - 0x76dd,0x76de,0x76df,0x76e0,0x76e1,0x76e2,0x76e3,0x76e4,0x76e5,0x76e6, - 0x76e7,0x76e8,0x76e9,0x76ea,0x76eb,0x76ec,0x76ed,0x76ee,0x76ef,0x76f0, - 0x76f1,0x76f2,0x76f3,0x76f4,0x76f5,0x76f6,0x76f7,0x76f8,0x76f9,0x76fa, - 0x76fb,0x76fc,0x76fd,0x76fe,0x76ff,0x7700,0x7701,0x7702,0x7703,0x7704, - 0x7705,0x7706,0x7707,0x7708,0x7709,0x770a,0x770b,0x770c,0x770d,0x770e, - 0x770f,0x7710,0x7711,0x7712,0x7713,0x7714,0x7715,0x7716,0x7717,0x7718, - 0x7719,0x771a,0x771b,0x771c,0x771d,0x771e,0x771f,0x7720,0x7721,0x7722, - 0x7723,0x7724,0x7725,0x7726,0x7727,0x7728,0x7729,0x772a,0x772b,0x772c, - 0x772d,0x772e,0x772f,0x7730,0x7731,0x7732,0x7733,0x7734,0x7735,0x7736, - 0x7737,0x7738,0x7739,0x773a,0x773b,0x773c,0x773d,0x773e,0x773f,0x7740, - 0x7741,0x7742,0x7743,0x7744,0x7745,0x7746,0x7747,0x7748,0x7749,0x774a, - 0x774b,0x774c,0x774d,0x774e,0x774f,0x7750,0x7751,0x7752,0x7753,0x7754, - 0x7755,0x7756,0x7757,0x7758,0x7759,0x775a,0x775b,0x775c,0x775d,0x775e, - 0x775f,0x7760,0x7761,0x7762,0x7763,0x7764,0x7765,0x7766,0x7767,0x7768, - 0x7769,0x776a,0x776b,0x776c,0x776d,0x776e,0x776f,0x7770,0x7771,0x7772, - 0x7773,0x7774,0x7775,0x7776,0x7777,0x7778,0x7779,0x777a,0x777b,0x777c, - 0x777d,0x777e,0x777f,0x7780,0x7781,0x7782,0x7783,0x7784,0x7785,0x7786, - 0x7787,0x7788,0x7789,0x778a,0x778b,0x778c,0x778d,0x778e,0x778f,0x7790, - 0x7791,0x7792,0x7793,0x7794,0x7795,0x7796,0x7797,0x7798,0x7799,0x779a, - 0x779b,0x779c,0x779d,0x779e,0x779f,0x77a0,0x77a1,0x77a2,0x77a3,0x77a4, - 0x77a5,0x77a6,0x77a7,0x77a8,0x77a9,0x77aa,0x77ab,0x77ac,0x77ad,0x77ae, - 0x77af,0x77b0,0x77b1,0x77b2,0x77b3,0x77b4,0x77b5,0x77b6,0x77b7,0x77b8, - 0x77b9,0x77ba,0x77bb,0x77bc,0x77bd,0x77be,0x77bf,0x77c0,0x77c1,0x77c2, - 0x77c3,0x77c4,0x77c5,0x77c6,0x77c7,0x77c8,0x77c9,0x77ca,0x77cb,0x77cc, - 0x77cd,0x77ce,0x77cf,0x77d0,0x77d1,0x77d2,0x77d3,0x77d4,0x77d5,0x77d6, - 0x77d7,0x77d8,0x77d9,0x77da,0x77db,0x77dc,0x77dd,0x77de,0x77df,0x77e0, - 0x77e1,0x77e2,0x77e3,0x77e4,0x77e5,0x77e6,0x77e7,0x77e8,0x77e9,0x77ea, - 0x77eb,0x77ec,0x77ed,0x77ee,0x77ef,0x77f0,0x77f1,0x77f2,0x77f3,0x77f4, - 0x77f5,0x77f6,0x77f7,0x77f8,0x77f9,0x77fa,0x77fb,0x77fc,0x77fd,0x77fe, - 0x77ff,0x7800,0x7801,0x7802,0x7803,0x7804,0x7805,0x7806,0x7807,0x7808, - 0x7809,0x780a,0x780b,0x780c,0x780d,0x780e,0x780f,0x7810,0x7811,0x7812, - 0x7813,0x7814,0x7815,0x7816,0x7817,0x7818,0x7819,0x781a,0x781b,0x781c, - 0x781d,0x781e,0x781f,0x7820,0x7821,0x7822,0x7823,0x7824,0x7825,0x7826, - 0x7827,0x7828,0x7829,0x782a,0x782b,0x782c,0x782d,0x782e,0x782f,0x7830, - 0x7831,0x7832,0x7833,0x7834,0x7835,0x7836,0x7837,0x7838,0x7839,0x783a, - 0x783b,0x783c,0x783d,0x783e,0x783f,0x7840,0x7841,0x7842,0x7843,0x7844, - 0x7845,0x7846,0x7847,0x7848,0x7849,0x784a,0x784b,0x784c,0x784d,0x784e, - 0x784f,0x7850,0x7851,0x7852,0x7853,0x7854,0x7855,0x7856,0x7857,0x7858, - 0x7859,0x785a,0x785b,0x785c,0x785d,0x785e,0x785f,0x7860,0x7861,0x7862, - 0x7863,0x7864,0x7865,0x7866,0x7867,0x7868,0x7869,0x786a,0x786b,0x786c, - 0x786d,0x786e,0x786f,0x7870,0x7871,0x7872,0x7873,0x7874,0x7875,0x7876, - 0x7877,0x7878,0x7879,0x787a,0x787b,0x787c,0x787d,0x787e,0x787f,0x7880, - 0x7881,0x7882,0x7883,0x7884,0x7885,0x7886,0x7887,0x7888,0x7889,0x788a, - 0x788b,0x788c,0x788d,0x788e,0x788f,0x7890,0x7891,0x7892,0x7893,0x7894, - 0x7895,0x7896,0x7897,0x7898,0x7899,0x789a,0x789b,0x789c,0x789d,0x789e, - 0x789f,0x78a0,0x78a1,0x78a2,0x78a3,0x78a4,0x78a5,0x78a6,0x78a7,0x78a8, - 0x78a9,0x78aa,0x78ab,0x78ac,0x78ad,0x78ae,0x78af,0x78b0,0x78b1,0x78b2, - 0x78b3,0x78b4,0x78b5,0x78b6,0x78b7,0x78b8,0x78b9,0x78ba,0x78bb,0x78bc, - 0x78bd,0x78be,0x78bf,0x78c0,0x78c1,0x78c2,0x78c3,0x78c4,0x78c5,0x78c6, - 0x78c7,0x78c8,0x78c9,0x78ca,0x78cb,0x78cc,0x78cd,0x78ce,0x78cf,0x78d0, - 0x78d1,0x78d2,0x78d3,0x78d4,0x78d5,0x78d6,0x78d7,0x78d8,0x78d9,0x78da, - 0x78db,0x78dc,0x78dd,0x78de,0x78df,0x78e0,0x78e1,0x78e2,0x78e3,0x78e4, - 0x78e5,0x78e6,0x78e7,0x78e8,0x78e9,0x78ea,0x78eb,0x78ec,0x78ed,0x78ee, - 0x78ef,0x78f0,0x78f1,0x78f2,0x78f3,0x78f4,0x78f5,0x78f6,0x78f7,0x78f8, - 0x78f9,0x78fa,0x78fb,0x78fc,0x78fd,0x78fe,0x78ff,0x7900,0x7901,0x7902, - 0x7903,0x7904,0x7905,0x7906,0x7907,0x7908,0x7909,0x790a,0x790b,0x790c, - 0x790d,0x790e,0x790f,0x7910,0x7911,0x7912,0x7913,0x7914,0x7915,0x7916, - 0x7917,0x7918,0x7919,0x791a,0x791b,0x791c,0x791d,0x791e,0x791f,0x7920, - 0x7921,0x7922,0x7923,0x7924,0x7925,0x7926,0x7927,0x7928,0x7929,0x792a, - 0x792b,0x792c,0x792d,0x792e,0x792f,0x7930,0x7931,0x7932,0x7933,0x7934, - 0x7935,0x7936,0x7937,0x7938,0x7939,0x793a,0x793b,0x793c,0x793d,0x793e, - 0x793f,0x7940,0x7941,0x7942,0x7943,0x7944,0x7945,0x7946,0x7947,0x7948, - 0x7949,0x794a,0x794b,0x794c,0x794d,0x794e,0x794f,0x7950,0x7951,0x7952, - 0x7953,0x7954,0x7955,0x7956,0x7957,0x7958,0x7959,0x795a,0x795b,0x795c, - 0x795d,0x795e,0x795f,0x7960,0x7961,0x7962,0x7963,0x7964,0x7965,0x7966, - 0x7967,0x7968,0x7969,0x796a,0x796b,0x796c,0x796d,0x796e,0x796f,0x7970, - 0x7971,0x7972,0x7973,0x7974,0x7975,0x7976,0x7977,0x7978,0x7979,0x797a, - 0x797b,0x797c,0x797d,0x797e,0x797f,0x7980,0x7981,0x7982,0x7983,0x7984, - 0x7985,0x7986,0x7987,0x7988,0x7989,0x798a,0x798b,0x798c,0x798d,0x798e, - 0x798f,0x7990,0x7991,0x7992,0x7993,0x7994,0x7995,0x7996,0x7997,0x7998, - 0x7999,0x799a,0x799b,0x799c,0x799d,0x799e,0x799f,0x79a0,0x79a1,0x79a2, - 0x79a3,0x79a4,0x79a5,0x79a6,0x79a7,0x79a8,0x79a9,0x79aa,0x79ab,0x79ac, - 0x79ad,0x79ae,0x79af,0x79b0,0x79b1,0x79b2,0x79b3,0x79b4,0x79b5,0x79b6, - 0x79b7,0x79b8,0x79b9,0x79ba,0x79bb,0x79bc,0x79bd,0x79be,0x79bf,0x79c0, - 0x79c1,0x79c2,0x79c3,0x79c4,0x79c5,0x79c6,0x79c7,0x79c8,0x79c9,0x79ca, - 0x79cb,0x79cc,0x79cd,0x79ce,0x79cf,0x79d0,0x79d1,0x79d2,0x79d3,0x79d4, - 0x79d5,0x79d6,0x79d7,0x79d8,0x79d9,0x79da,0x79db,0x79dc,0x79dd,0x79de, - 0x79df,0x79e0,0x79e1,0x79e2,0x79e3,0x79e4,0x79e5,0x79e6,0x79e7,0x79e8, - 0x79e9,0x79ea,0x79eb,0x79ec,0x79ed,0x79ee,0x79ef,0x79f0,0x79f1,0x79f2, - 0x79f3,0x79f4,0x79f5,0x79f6,0x79f7,0x79f8,0x79f9,0x79fa,0x79fb,0x79fc, - 0x79fd,0x79fe,0x79ff,0x7a00,0x7a01,0x7a02,0x7a03,0x7a04,0x7a05,0x7a06, - 0x7a07,0x7a08,0x7a09,0x7a0a,0x7a0b,0x7a0c,0x7a0d,0x7a0e,0x7a0f,0x7a10, - 0x7a11,0x7a12,0x7a13,0x7a14,0x7a15,0x7a16,0x7a17,0x7a18,0x7a19,0x7a1a, - 0x7a1b,0x7a1c,0x7a1d,0x7a1e,0x7a1f,0x7a20,0x7a21,0x7a22,0x7a23,0x7a24, - 0x7a25,0x7a26,0x7a27,0x7a28,0x7a29,0x7a2a,0x7a2b,0x7a2c,0x7a2d,0x7a2e, - 0x7a2f,0x7a30,0x7a31,0x7a32,0x7a33,0x7a34,0x7a35,0x7a36,0x7a37,0x7a38, - 0x7a39,0x7a3a,0x7a3b,0x7a3c,0x7a3d,0x7a3e,0x7a3f,0x7a40,0x7a41,0x7a42, - 0x7a43,0x7a44,0x7a45,0x7a46,0x7a47,0x7a48,0x7a49,0x7a4a,0x7a4b,0x7a4c, - 0x7a4d,0x7a4e,0x7a4f,0x7a50,0x7a51,0x7a52,0x7a53,0x7a54,0x7a55,0x7a56, - 0x7a57,0x7a58,0x7a59,0x7a5a,0x7a5b,0x7a5c,0x7a5d,0x7a5e,0x7a5f,0x7a60, - 0x7a61,0x7a62,0x7a63,0x7a64,0x7a65,0x7a66,0x7a67,0x7a68,0x7a69,0x7a6a, - 0x7a6b,0x7a6c,0x7a6d,0x7a6e,0x7a6f,0x7a70,0x7a71,0x7a72,0x7a73,0x7a74, - 0x7a75,0x7a76,0x7a77,0x7a78,0x7a79,0x7a7a,0x7a7b,0x7a7c,0x7a7d,0x7a7e, - 0x7a7f,0x7a80,0x7a81,0x7a82,0x7a83,0x7a84,0x7a85,0x7a86,0x7a87,0x7a88, - 0x7a89,0x7a8a,0x7a8b,0x7a8c,0x7a8d,0x7a8e,0x7a8f,0x7a90,0x7a91,0x7a92, - 0x7a93,0x7a94,0x7a95,0x7a96,0x7a97,0x7a98,0x7a99,0x7a9a,0x7a9b,0x7a9c, - 0x7a9d,0x7a9e,0x7a9f,0x7aa0,0x7aa1,0x7aa2,0x7aa3,0x7aa4,0x7aa5,0x7aa6, - 0x7aa7,0x7aa8,0x7aa9,0x7aaa,0x7aab,0x7aac,0x7aad,0x7aae,0x7aaf,0x7ab0, - 0x7ab1,0x7ab2,0x7ab3,0x7ab4,0x7ab5,0x7ab6,0x7ab7,0x7ab8,0x7ab9,0x7aba, - 0x7abb,0x7abc,0x7abd,0x7abe,0x7abf,0x7ac0,0x7ac1,0x7ac2,0x7ac3,0x7ac4, - 0x7ac5,0x7ac6,0x7ac7,0x7ac8,0x7ac9,0x7aca,0x7acb,0x7acc,0x7acd,0x7ace, - 0x7acf,0x7ad0,0x7ad1,0x7ad2,0x7ad3,0x7ad4,0x7ad5,0x7ad6,0x7ad7,0x7ad8, - 0x7ad9,0x7ada,0x7adb,0x7adc,0x7add,0x7ade,0x7adf,0x7ae0,0x7ae1,0x7ae2, - 0x7ae3,0x7ae4,0x7ae5,0x7ae6,0x7ae7,0x7ae8,0x7ae9,0x7aea,0x7aeb,0x7aec, - 0x7aed,0x7aee,0x7aef,0x7af0,0x7af1,0x7af2,0x7af3,0x7af4,0x7af5,0x7af6, - 0x7af7,0x7af8,0x7af9,0x7afa,0x7afb,0x7afc,0x7afd,0x7afe,0x7aff,0x7b00, - 0x7b01,0x7b02,0x7b03,0x7b04,0x7b05,0x7b06,0x7b07,0x7b08,0x7b09,0x7b0a, - 0x7b0b,0x7b0c,0x7b0d,0x7b0e,0x7b0f,0x7b10,0x7b11,0x7b12,0x7b13,0x7b14, - 0x7b15,0x7b16,0x7b17,0x7b18,0x7b19,0x7b1a,0x7b1b,0x7b1c,0x7b1d,0x7b1e, - 0x7b1f,0x7b20,0x7b21,0x7b22,0x7b23,0x7b24,0x7b25,0x7b26,0x7b27,0x7b28, - 0x7b29,0x7b2a,0x7b2b,0x7b2c,0x7b2d,0x7b2e,0x7b2f,0x7b30,0x7b31,0x7b32, - 0x7b33,0x7b34,0x7b35,0x7b36,0x7b37,0x7b38,0x7b39,0x7b3a,0x7b3b,0x7b3c, - 0x7b3d,0x7b3e,0x7b3f,0x7b40,0x7b41,0x7b42,0x7b43,0x7b44,0x7b45,0x7b46, - 0x7b47,0x7b48,0x7b49,0x7b4a,0x7b4b,0x7b4c,0x7b4d,0x7b4e,0x7b4f,0x7b50, - 0x7b51,0x7b52,0x7b53,0x7b54,0x7b55,0x7b56,0x7b57,0x7b58,0x7b59,0x7b5a, - 0x7b5b,0x7b5c,0x7b5d,0x7b5e,0x7b5f,0x7b60,0x7b61,0x7b62,0x7b63,0x7b64, - 0x7b65,0x7b66,0x7b67,0x7b68,0x7b69,0x7b6a,0x7b6b,0x7b6c,0x7b6d,0x7b6e, - 0x7b6f,0x7b70,0x7b71,0x7b72,0x7b73,0x7b74,0x7b75,0x7b76,0x7b77,0x7b78, - 0x7b79,0x7b7a,0x7b7b,0x7b7c,0x7b7d,0x7b7e,0x7b7f,0x7b80,0x7b81,0x7b82, - 0x7b83,0x7b84,0x7b85,0x7b86,0x7b87,0x7b88,0x7b89,0x7b8a,0x7b8b,0x7b8c, - 0x7b8d,0x7b8e,0x7b8f,0x7b90,0x7b91,0x7b92,0x7b93,0x7b94,0x7b95,0x7b96, - 0x7b97,0x7b98,0x7b99,0x7b9a,0x7b9b,0x7b9c,0x7b9d,0x7b9e,0x7b9f,0x7ba0, - 0x7ba1,0x7ba2,0x7ba3,0x7ba4,0x7ba5,0x7ba6,0x7ba7,0x7ba8,0x7ba9,0x7baa, - 0x7bab,0x7bac,0x7bad,0x7bae,0x7baf,0x7bb0,0x7bb1,0x7bb2,0x7bb3,0x7bb4, - 0x7bb5,0x7bb6,0x7bb7,0x7bb8,0x7bb9,0x7bba,0x7bbb,0x7bbc,0x7bbd,0x7bbe, - 0x7bbf,0x7bc0,0x7bc1,0x7bc2,0x7bc3,0x7bc4,0x7bc5,0x7bc6,0x7bc7,0x7bc8, - 0x7bc9,0x7bca,0x7bcb,0x7bcc,0x7bcd,0x7bce,0x7bcf,0x7bd0,0x7bd1,0x7bd2, - 0x7bd3,0x7bd4,0x7bd5,0x7bd6,0x7bd7,0x7bd8,0x7bd9,0x7bda,0x7bdb,0x7bdc, - 0x7bdd,0x7bde,0x7bdf,0x7be0,0x7be1,0x7be2,0x7be3,0x7be4,0x7be5,0x7be6, - 0x7be7,0x7be8,0x7be9,0x7bea,0x7beb,0x7bec,0x7bed,0x7bee,0x7bef,0x7bf0, - 0x7bf1,0x7bf2,0x7bf3,0x7bf4,0x7bf5,0x7bf6,0x7bf7,0x7bf8,0x7bf9,0x7bfa, - 0x7bfb,0x7bfc,0x7bfd,0x7bfe,0x7bff,0x7c00,0x7c01,0x7c02,0x7c03,0x7c04, - 0x7c05,0x7c06,0x7c07,0x7c08,0x7c09,0x7c0a,0x7c0b,0x7c0c,0x7c0d,0x7c0e, - 0x7c0f,0x7c10,0x7c11,0x7c12,0x7c13,0x7c14,0x7c15,0x7c16,0x7c17,0x7c18, - 0x7c19,0x7c1a,0x7c1b,0x7c1c,0x7c1d,0x7c1e,0x7c1f,0x7c20,0x7c21,0x7c22, - 0x7c23,0x7c24,0x7c25,0x7c26,0x7c27,0x7c28,0x7c29,0x7c2a,0x7c2b,0x7c2c, - 0x7c2d,0x7c2e,0x7c2f,0x7c30,0x7c31,0x7c32,0x7c33,0x7c34,0x7c35,0x7c36, - 0x7c37,0x7c38,0x7c39,0x7c3a,0x7c3b,0x7c3c,0x7c3d,0x7c3e,0x7c3f,0x7c40, - 0x7c41,0x7c42,0x7c43,0x7c44,0x7c45,0x7c46,0x7c47,0x7c48,0x7c49,0x7c4a, - 0x7c4b,0x7c4c,0x7c4d,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, - 0x7c73,0x7c74,0x7c75,0x7c76,0x7c77,0x7c78,0x7c79,0x7c7a,0x7c7b,0x7c7c, - 0x7c7d,0x7c7e,0x7c7f,0x7c80,0x7c81,0x7c82,0x7c83,0x7c84,0x7c85,0x7c86, - 0x7c87,0x7c88,0x7c89,0x7c8a,0x7c8b,0x7c8c,0x7c8d,0x7c8e,0x7c8f,0x7c90, - 0x7c91,0x7c92,0x7c93,0x7c94,0x7c95,0x7c96,0x7c97,0x7c98,0x7c99,0x7c9a, - 0x7c9b,0x7c9c,0x7c9d,0x7c9e,0x7c9f,0x7ca0,0x7ca1,0x7ca2,0x7ca3,0x7ca4, - 0x7ca5,0x7ca6,0x7ca7,0x7ca8,0x7ca9,0x7caa,0x7cab,0x7cac,0x7cad,0x7cae, - 0x7caf,0x7cb0,0x7cb1,0x7cb2,0x7cb3,0x7cb4,0x7cb5,0x7cb6,0x7cb7,0x7cb8, - 0x7cb9,0x7cba,0x7cbb,0x7cbc,0x7cbd,0x7cbe,0x7cbf,0x7cc0,0x7cc1,0x7cc2, - 0x7cc3,0x7cc4,0x7cc5,0x7cc6,0x7cc7,0x7cc8,0x7cc9,0x7cca,0x7ccb,0x7ccc, - 0x7ccd,0x7cce,0x7ccf,0x7cd0,0x7cd1,0x7cd2,0x7cd3,0x7cd4,0x7cd5,0x7cd6, - 0x7cd7,0x7cd8,0x7cd9,0x7cda,0x7cdb,0x7cdc,0x7cdd,0x7cde,0x7cdf,0x7ce0, - 0x7ce1,0x7ce2,0x7ce3,0x7ce4,0x7ce5,0x7ce6,0x7ce7,0x7ce8,0x7ce9,0x7cea, - 0x7ceb,0x7cec,0x7ced,0x7cee,0x7cef,0x7cf0,0x7cf1,0x7cf2,0x7cf3,0x7cf4, - 0x7cf5,0x7cf6,0x7cf7,0x7cf8,0x7cf9,0x7cfa,0x7cfb,0x7cfc,0x7cfd,0x7cfe, - 0x7cff,0x7d00,0x7d01,0x7d02,0x7d03,0x7d04,0x7d05,0x7d06,0x7d07,0x7d08, - 0x7d09,0x7d0a,0x7d0b,0x7d0c,0x7d0d,0x7d0e,0x7d0f,0x7d10,0x7d11,0x7d12, - 0x7d13,0x7d14,0x7d15,0x7d16,0x7d17,0x7d18,0x7d19,0x7d1a,0x7d1b,0x7d1c, - 0x7d1d,0x7d1e,0x7d1f,0x7d20,0x7d21,0x7d22,0x7d23,0x7d24,0x7d25,0x7d26, - 0x7d27,0x7d28,0x7d29,0x7d2a,0x7d2b,0x7d2c,0x7d2d,0x7d2e,0x7d2f,0x7d30, - 0x7d31,0x7d32,0x7d33,0x7d34,0x7d35,0x7d36,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,0x7d6e,0x7d6f,0x7d70,0x7d71,0x7d72,0x7d73,0x7d74,0x7d75,0x7d76, - 0x7d77,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,0x7d99,0x7d9a,0x7d9b,0x7d9c,0x7d9d,0x7d9e, - 0x7d9f,0x7da0,0x7da1,0x7da2,0x7da3,0x7da4,0x7da5,0x7da6,0x7da7,0x7da8, - 0x7da9,0x7daa,0x7dab,0x7dac,0x7dad,0x7dae,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,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,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,0x7e3a,0x7e3b,0x7e3c,0x7e3d,0x7e3e, - 0x7e3f,0x7e40,0x7e41,0x7e42,0x7e43,0x7e44,0x7e45,0x7e46,0x7e47,0x7e48, - 0x7e49,0x7e4a,0x7e4b,0x7e4c,0x7e4d,0x7e4e,0x7e4f,0x7e50,0x7e51,0x7e52, - 0x7e53,0x7e54,0x7e55,0x7e56,0x7e57,0x7e58,0x7e59,0x7e5a,0x7e5b,0x7e5c, - 0x7e5d,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,0x7e82,0x7e83,0x7e84, - 0x7e85,0x7e86,0x7e87,0x7e88,0x7e89,0x7e8a,0x7e8b,0x7e8c,0x7e8d,0x7e8e, - 0x7e8f,0x7e90,0x7e91,0x7e92,0x7e93,0x7e94,0x7e95,0x7e96,0x7e97,0x7e98, - 0x7e99,0x7e9a,0x7e9b,0x7e9c,0x7e9d,0x7e9e,0x7e9f,0x7ea0,0x7ea1,0x7ea2, - 0x7ea3,0x7ea4,0x7ea5,0x7ea6,0x7ea7,0x7ea8,0x7ea9,0x7eaa,0x7eab,0x7eac, - 0x7ead,0x7eae,0x7eaf,0x7eb0,0x7eb1,0x7eb2,0x7eb3,0x7eb4,0x7eb5,0x7eb6, - 0x7eb7,0x7eb8,0x7eb9,0x7eba,0x7ebb,0x7ebc,0x7ebd,0x7ebe,0x7ebf,0x7ec0, - 0x7ec1,0x7ec2,0x7ec3,0x7ec4,0x7ec5,0x7ec6,0x7ec7,0x7ec8,0x7ec9,0x7eca, - 0x7ecb,0x7ecc,0x7ecd,0x7ece,0x7ecf,0x7ed0,0x7ed1,0x7ed2,0x7ed3,0x7ed4, - 0x7ed5,0x7ed6,0x7ed7,0x7ed8,0x7ed9,0x7eda,0x7edb,0x7edc,0x7edd,0x7ede, - 0x7edf,0x7ee0,0x7ee1,0x7ee2,0x7ee3,0x7ee4,0x7ee5,0x7ee6,0x7ee7,0x7ee8, - 0x7ee9,0x7eea,0x7eeb,0x7eec,0x7eed,0x7eee,0x7eef,0x7ef0,0x7ef1,0x7ef2, - 0x7ef3,0x7ef4,0x7ef5,0x7ef6,0x7ef7,0x7ef8,0x7ef9,0x7efa,0x7efb,0x7efc, - 0x7efd,0x7efe,0x7eff,0x7f00,0x7f01,0x7f02,0x7f03,0x7f04,0x7f05,0x7f06, - 0x7f07,0x7f08,0x7f09,0x7f0a,0x7f0b,0x7f0c,0x7f0d,0x7f0e,0x7f0f,0x7f10, - 0x7f11,0x7f12,0x7f13,0x7f14,0x7f15,0x7f16,0x7f17,0x7f18,0x7f19,0x7f1a, - 0x7f1b,0x7f1c,0x7f1d,0x7f1e,0x7f1f,0x7f20,0x7f21,0x7f22,0x7f23,0x7f24, - 0x7f25,0x7f26,0x7f27,0x7f28,0x7f29,0x7f2a,0x7f2b,0x7f2c,0x7f2d,0x7f2e, - 0x7f2f,0x7f30,0x7f31,0x7f32,0x7f33,0x7f34,0x7f35,0x7f36,0x7f37,0x7f38, - 0x7f39,0x7f3a,0x7f3b,0x7f3c,0x7f3d,0x7f3e,0x7f3f,0x7f40,0x7f41,0x7f42, - 0x7f43,0x7f44,0x7f45,0x7f46,0x7f47,0x7f48,0x7f49,0x7f4a,0x7f4b,0x7f4c, - 0x7f4d,0x7f4e,0x7f4f,0x7f50,0x7f51,0x7f52,0x7f53,0x7f54,0x7f55,0x7f56, - 0x7f57,0x7f58,0x7f59,0x7f5a,0x7f5b,0x7f5c,0x7f5d,0x7f5e,0x7f5f,0x7f60, - 0x7f61,0x7f62,0x7f63,0x7f64,0x7f65,0x7f66,0x7f67,0x7f68,0x7f69,0x7f6a, - 0x7f6b,0x7f6c,0x7f6d,0x7f6e,0x7f6f,0x7f70,0x7f71,0x7f72,0x7f73,0x7f74, - 0x7f75,0x7f76,0x7f77,0x7f78,0x7f79,0x7f7a,0x7f7b,0x7f7c,0x7f7d,0x7f7e, - 0x7f7f,0x7f80,0x7f81,0x7f82,0x7f83,0x7f84,0x7f85,0x7f86,0x7f87,0x7f88, - 0x7f89,0x7f8a,0x7f8b,0x7f8c,0x7f8d,0x7f8e,0x7f8f,0x7f90,0x7f91,0x7f92, - 0x7f93,0x7f94,0x7f95,0x7f96,0x7f97,0x7f98,0x7f99,0x7f9a,0x7f9b,0x7f9c, - 0x7f9d,0x7f9e,0x7f9f,0x7fa0,0x7fa1,0x7fa2,0x7fa3,0x7fa4,0x7fa5,0x7fa6, - 0x7fa7,0x7fa8,0x7fa9,0x7faa,0x7fab,0x7fac,0x7fad,0x7fae,0x7faf,0x7fb0, - 0x7fb1,0x7fb2,0x7fb3,0x7fb4,0x7fb5,0x7fb6,0x7fb7,0x7fb8,0x7fb9,0x7fba, - 0x7fbb,0x7fbc,0x7fbd,0x7fbe,0x7fbf,0x7fc0,0x7fc1,0x7fc2,0x7fc3,0x7fc4, - 0x7fc5,0x7fc6,0x7fc7,0x7fc8,0x7fc9,0x7fca,0x7fcb,0x7fcc,0x7fcd,0x7fce, - 0x7fcf,0x7fd0,0x7fd1,0x7fd2,0x7fd3,0x7fd4,0x7fd5,0x7fd6,0x7fd7,0x7fd8, - 0x7fd9,0x7fda,0x7fdb,0x7fdc,0x7fdd,0x7fde,0x7fdf,0x7fe0,0x7fe1,0x7fe2, - 0x7fe3,0x7fe4,0x7fe5,0x7fe6,0x7fe7,0x7fe8,0x7fe9,0x7fea,0x7feb,0x7fec, - 0x7fed,0x7fee,0x7fef,0x7ff0,0x7ff1,0x7ff2,0x7ff3,0x7ff4,0x7ff5,0x7ff6, - 0x7ff7,0x7ff8,0x7ff9,0x7ffa,0x7ffb,0x7ffc,0x7ffd,0x7ffe,0x7fff,0x8000, - 0x8001,0x8002,0x8003,0x8004,0x8005,0x8006,0x8007,0x8008,0x8009,0x800a, - 0x800b,0x800c,0x800d,0x800e,0x800f,0x8010,0x8011,0x8012,0x8013,0x8014, - 0x8015,0x8016,0x8017,0x8018,0x8019,0x801a,0x801b,0x801c,0x801d,0x801e, - 0x801f,0x8020,0x8021,0x8022,0x8023,0x8024,0x8025,0x8026,0x8027,0x8028, - 0x8029,0x802a,0x802b,0x802c,0x802d,0x802e,0x802f,0x8030,0x8031,0x8032, - 0x8033,0x8034,0x8035,0x8036,0x8037,0x8038,0x8039,0x803a,0x803b,0x803c, - 0x803d,0x803e,0x803f,0x8040,0x8041,0x8042,0x8043,0x8044,0x8045,0x8046, - 0x8047,0x8048,0x8049,0x804a,0x804b,0x804c,0x804d,0x804e,0x804f,0x8050, - 0x8051,0x8052,0x8053,0x8054,0x8055,0x8056,0x8057,0x8058,0x8059,0x805a, - 0x805b,0x805c,0x805d,0x805e,0x805f,0x8060,0x8061,0x8062,0x8063,0x8064, - 0x8065,0x8066,0x8067,0x8068,0x8069,0x806a,0x806b,0x806c,0x806d,0x806e, - 0x806f,0x8070,0x8071,0x8072,0x8073,0x8074,0x8075,0x8076,0x8077,0x8078, - 0x8079,0x807a,0x807b,0x807c,0x807d,0x807e,0x807f,0x8080,0x8081,0x8082, - 0x8083,0x8084,0x8085,0x8086,0x8087,0x8088,0x8089,0x808a,0x808b,0x808c, - 0x808d,0x808e,0x808f,0x8090,0x8091,0x8092,0x8093,0x8094,0x8095,0x8096, - 0x8097,0x8098,0x8099,0x809a,0x809b,0x809c,0x809d,0x809e,0x809f,0x80a0, - 0x80a1,0x80a2,0x80a3,0x80a4,0x80a5,0x80a6,0x80a7,0x80a8,0x80a9,0x80aa, - 0x80ab,0x80ac,0x80ad,0x80ae,0x80af,0x80b0,0x80b1,0x80b2,0x80b3,0x80b4, - 0x80b5,0x80b6,0x80b7,0x80b8,0x80b9,0x80ba,0x80bb,0x80bc,0x80bd,0x80be, - 0x80bf,0x80c0,0x80c1,0x80c2,0x80c3,0x80c4,0x80c5,0x80c6,0x80c7,0x80c8, - 0x80c9,0x80ca,0x80cb,0x80cc,0x80cd,0x80ce,0x80cf,0x80d0,0x80d1,0x80d2, - 0x80d3,0x80d4,0x80d5,0x80d6,0x80d7,0x80d8,0x80d9,0x80da,0x80db,0x80dc, - 0x80dd,0x80de,0x80df,0x80e0,0x80e1,0x80e2,0x80e3,0x80e4,0x80e5,0x80e6, - 0x80e7,0x80e8,0x80e9,0x80ea,0x80eb,0x80ec,0x80ed,0x80ee,0x80ef,0x80f0, - 0x80f1,0x80f2,0x80f3,0x80f4,0x80f5,0x80f6,0x80f7,0x80f8,0x80f9,0x80fa, - 0x80fb,0x80fc,0x80fd,0x80fe,0x80ff,0x8100,0x8101,0x8102,0x8103,0x8104, - 0x8105,0x8106,0x8107,0x8108,0x8109,0x810a,0x810b,0x810c,0x810d,0x810e, - 0x810f,0x8110,0x8111,0x8112,0x8113,0x8114,0x8115,0x8116,0x8117,0x8118, - 0x8119,0x811a,0x811b,0x811c,0x811d,0x811e,0x811f,0x8120,0x8121,0x8122, - 0x8123,0x8124,0x8125,0x8126,0x8127,0x8128,0x8129,0x812a,0x812b,0x812c, - 0x812d,0x812e,0x812f,0x8130,0x8131,0x8132,0x8133,0x8134,0x8135,0x8136, - 0x8137,0x8138,0x8139,0x813a,0x813b,0x813c,0x813d,0x813e,0x813f,0x8140, - 0x8141,0x8142,0x8143,0x8144,0x8145,0x8146,0x8147,0x8148,0x8149,0x814a, - 0x814b,0x814c,0x814d,0x814e,0x814f,0x8150,0x8151,0x8152,0x8153,0x8154, - 0x8155,0x8156,0x8157,0x8158,0x8159,0x815a,0x815b,0x815c,0x815d,0x815e, - 0x815f,0x8160,0x8161,0x8162,0x8163,0x8164,0x8165,0x8166,0x8167,0x8168, - 0x8169,0x816a,0x816b,0x816c,0x816d,0x816e,0x816f,0x8170,0x8171,0x8172, - 0x8173,0x8174,0x8175,0x8176,0x8177,0x8178,0x8179,0x817a,0x817b,0x817c, - 0x817d,0x817e,0x817f,0x8180,0x8181,0x8182,0x8183,0x8184,0x8185,0x8186, - 0x8187,0x8188,0x8189,0x818a,0x818b,0x818c,0x818d,0x818e,0x818f,0x8190, - 0x8191,0x8192,0x8193,0x8194,0x8195,0x8196,0x8197,0x8198,0x8199,0x819a, - 0x819b,0x819c,0x819d,0x819e,0x819f,0x81a0,0x81a1,0x81a2,0x81a3,0x81a4, - 0x81a5,0x81a6,0x81a7,0x81a8,0x81a9,0x81aa,0x81ab,0x81ac,0x81ad,0x81ae, - 0x81af,0x81b0,0x81b1,0x81b2,0x81b3,0x81b4,0x81b5,0x81b6,0x81b7,0x81b8, - 0x81b9,0x81ba,0x81bb,0x81bc,0x81bd,0x81be,0x81bf,0x81c0,0x81c1,0x81c2, - 0x81c3,0x81c4,0x81c5,0x81c6,0x81c7,0x81c8,0x81c9,0x81ca,0x81cb,0x81cc, - 0x81cd,0x81ce,0x81cf,0x81d0,0x81d1,0x81d2,0x81d3,0x81d4,0x81d5,0x81d6, - 0x81d7,0x81d8,0x81d9,0x81da,0x81db,0x81dc,0x81dd,0x81de,0x81df,0x81e0, - 0x81e1,0x81e2,0x81e3,0x81e4,0x81e5,0x81e6,0x81e7,0x81e8,0x81e9,0x81ea, - 0x81eb,0x81ec,0x81ed,0x81ee,0x81ef,0x81f0,0x81f1,0x81f2,0x81f3,0x81f4, - 0x81f5,0x81f6,0x81f7,0x81f8,0x81f9,0x81fa,0x81fb,0x81fc,0x81fd,0x81fe, - 0x81ff,0x8200,0x8201,0x8202,0x8203,0x8204,0x8205,0x8206,0x8207,0x8208, - 0x8209,0x820a,0x820b,0x820c,0x820d,0x820e,0x820f,0x8210,0x8211,0x8212, - 0x8213,0x8214,0x8215,0x8216,0x8217,0x8218,0x8219,0x821a,0x821b,0x821c, - 0x821d,0x821e,0x821f,0x8220,0x8221,0x8222,0x8223,0x8224,0x8225,0x8226, - 0x8227,0x8228,0x8229,0x822a,0x822b,0x822c,0x822d,0x822e,0x822f,0x8230, - 0x8231,0x8232,0x8233,0x8234,0x8235,0x8236,0x8237,0x8238,0x8239,0x823a, - 0x823b,0x823c,0x823d,0x823e,0x823f,0x8240,0x8241,0x8242,0x8243,0x8244, - 0x8245,0x8246,0x8247,0x8248,0x8249,0x824a,0x824b,0x824c,0x824d,0x824e, - 0x824f,0x8250,0x8251,0x8252,0x8253,0x8254,0x8255,0x8256,0x8257,0x8258, - 0x8259,0x825a,0x825b,0x825c,0x825d,0x825e,0x825f,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,0x827a,0x827b,0x827c,0x827d,0x827e,0x827f,0x8280, - 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,0x829b,0x829c,0x829d,0x829e, - 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,0x82f2,0x82f3,0x82f4,0x82f5,0x82f6,0x82f7,0x82f8, - 0x82f9,0x82fa,0x82fb,0x82fc,0x82fd,0x82fe,0x82ff,0x8300,0x8301,0x8302, - 0x8303,0x8304,0x8305,0x8306,0x8307,0x8308,0x8309,0x830a,0x830b,0x830c, - 0x830d,0x830e,0x830f,0x8310,0x8311,0x8312,0x8313,0x8314,0x8315,0x8316, - 0x8317,0x8318,0x8319,0x831a,0x831b,0x831c,0x831d,0x831e,0x831f,0x8320, - 0x8321,0x8322,0x8323,0x8324,0x8325,0x8326,0x8327,0x8328,0x8329,0x832a, - 0x832b,0x832c,0x832d,0x832e,0x832f,0x8330,0x8331,0x8332,0x8333,0x8334, - 0x8335,0x8336,0x8337,0x8338,0x8339,0x833a,0x833b,0x833c,0x833d,0x833e, - 0x833f,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,0x837f,0x8380,0x8381,0x8382,0x8383,0x8384, - 0x8385,0x8386,0x8387,0x8388,0x8389,0x838a,0x838b,0x838c,0x838d,0x838e, - 0x838f,0x8390,0x8391,0x8392,0x8393,0x8394,0x8395,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,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,0x83e2,0x83e3,0x83e4,0x83e5,0x83e6,0x83e7,0x83e8, - 0x83e9,0x83ea,0x83eb,0x83ec,0x83ed,0x83ee,0x83ef,0x83f0,0x83f1,0x83f2, - 0x83f3,0x83f4,0x83f5,0x83f6,0x83f7,0x83f8,0x83f9,0x83fa,0x83fb,0x83fc, - 0x83fd,0x83fe,0x83ff,0x8400,0x8401,0x8402,0x8403,0x8404,0x8405,0x8406, - 0x8407,0x8408,0x8409,0x840a,0x840b,0x840c,0x840d,0x840e,0x840f,0x8410, - 0x8411,0x8412,0x8413,0x8414,0x8415,0x8416,0x8417,0x8418,0x8419,0x841a, - 0x841b,0x841c,0x841d,0x841e,0x841f,0x8420,0x8421,0x8422,0x8423,0x8424, - 0x8425,0x8426,0x8427,0x8428,0x8429,0x842a,0x842b,0x842c,0x842d,0x842e, - 0x842f,0x8430,0x8431,0x8432,0x8433,0x8434,0x8435,0x8436,0x8437,0x8438, - 0x8439,0x843a,0x843b,0x843c,0x843d,0x843e,0x843f,0x8440,0x8441,0x8442, - 0x8443,0x8444,0x8445,0x8446,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, - 0x8461,0x8462,0x8463,0x8464,0x8465,0x8466,0x8467,0x8468,0x8469,0x846a, - 0x846b,0x846c,0x846d,0x846e,0x846f,0x8470,0x8471,0x8472,0x8473,0x8474, - 0x8475,0x8476,0x8477,0x8478,0x8479,0x847a,0x847b,0x847c,0x847d,0x847e, - 0x847f,0x8480,0x8481,0x8482,0x8483,0x8484,0x8485,0x8486,0x8487,0x8488, - 0x8489,0x848a,0x848b,0x848c,0x848d,0x848e,0x848f,0x8490,0x8491,0x8492, - 0x8493,0x8494,0x8495,0x8496,0x8497,0x8498,0x8499,0x849a,0x849b,0x849c, - 0x849d,0x849e,0x849f,0x84a0,0x84a1,0x84a2,0x84a3,0x84a4,0x84a5,0x84a6, - 0x84a7,0x84a8,0x84a9,0x84aa,0x84ab,0x84ac,0x84ad,0x84ae,0x84af,0x84b0, - 0x84b1,0x84b2,0x84b3,0x84b4,0x84b5,0x84b6,0x84b7,0x84b8,0x84b9,0x84ba, - 0x84bb,0x84bc,0x84bd,0x84be,0x84bf,0x84c0,0x84c1,0x84c2,0x84c3,0x84c4, - 0x84c5,0x84c6,0x84c7,0x84c8,0x84c9,0x84ca,0x84cb,0x84cc,0x84cd,0x84ce, - 0x84cf,0x84d0,0x84d1,0x84d2,0x84d3,0x84d4,0x84d5,0x84d6,0x84d7,0x84d8, - 0x84d9,0x84da,0x84db,0x84dc,0x84dd,0x84de,0x84df,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,0x84fb,0x84fc,0x84fd,0x84fe,0x84ff,0x8500, - 0x8501,0x8502,0x8503,0x8504,0x8505,0x8506,0x8507,0x8508,0x8509,0x850a, - 0x850b,0x850c,0x850d,0x850e,0x850f,0x8510,0x8511,0x8512,0x8513,0x8514, - 0x8515,0x8516,0x8517,0x8518,0x8519,0x851a,0x851b,0x851c,0x851d,0x851e, - 0x851f,0x8520,0x8521,0x8522,0x8523,0x8524,0x8525,0x8526,0x8527,0x8528, - 0x8529,0x852a,0x852b,0x852c,0x852d,0x852e,0x852f,0x8530,0x8531,0x8532, - 0x8533,0x8534,0x8535,0x8536,0x8537,0x8538,0x8539,0x853a,0x853b,0x853c, - 0x853d,0x853e,0x853f,0x8540,0x8541,0x8542,0x8543,0x8544,0x8545,0x8546, - 0x8547,0x8548,0x8549,0x854a,0x854b,0x854c,0x854d,0x854e,0x854f,0x8550, - 0x8551,0x8552,0x8553,0x8554,0x8555,0x8556,0x8557,0x8558,0x8559,0x855a, - 0x855b,0x855c,0x855d,0x855e,0x855f,0x8560,0x8561,0x8562,0x8563,0x8564, - 0x8565,0x8566,0x8567,0x8568,0x8569,0x856a,0x856b,0x856c,0x856d,0x856e, - 0x856f,0x8570,0x8571,0x8572,0x8573,0x8574,0x8575,0x8576,0x8577,0x8578, - 0x8579,0x857a,0x857b,0x857c,0x857d,0x857e,0x857f,0x8580,0x8581,0x8582, - 0x8583,0x8584,0x8585,0x8586,0x8587,0x8588,0x8589,0x858a,0x858b,0x858c, - 0x858d,0x858e,0x858f,0x8590,0x8591,0x8592,0x8593,0x8594,0x8595,0x8596, - 0x8597,0x8598,0x8599,0x859a,0x859b,0x859c,0x859d,0x859e,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,0x85ba,0x85bb,0x85bc,0x85bd,0x85be, - 0x85bf,0x85c0,0x85c1,0x85c2,0x85c3,0x85c4,0x85c5,0x85c6,0x85c7,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,0x85e6, - 0x85e7,0x85e8,0x85e9,0x85ea,0x85eb,0x85ec,0x85ed,0x85ee,0x85ef,0x85f0, - 0x85f1,0x85f2,0x85f3,0x85f4,0x85f5,0x85f6,0x85f7,0x85f8,0x85f9,0x85fa, - 0x85fb,0x85fc,0x85fd,0x85fe,0x85ff,0x8600,0x8601,0x8602,0x8603,0x8604, - 0x8605,0x8606,0x8607,0x8608,0x8609,0x860a,0x860b,0x860c,0x860d,0x860e, - 0x860f,0x8610,0x8611,0x8612,0x8613,0x8614,0x8615,0x8616,0x8617,0x8618, - 0x8619,0x861a,0x861b,0x861c,0x861d,0x861e,0x861f,0x8620,0x8621,0x8622, - 0x8623,0x8624,0x8625,0x8626,0x8627,0x8628,0x8629,0x862a,0x862b,0x862c, - 0x862d,0x862e,0x862f,0x8630,0x8631,0x8632,0x8633,0x8634,0x8635,0x8636, - 0x8637,0x8638,0x8639,0x863a,0x863b,0x863c,0x863d,0x863e,0x863f,0x8640, - 0x8641,0x8642,0x8643,0x8644,0x8645,0x8646,0x8647,0x8648,0x8649,0x864a, - 0x864b,0x864c,0x864d,0x864e,0x864f,0x8650,0x8651,0x8652,0x8653,0x8654, - 0x8655,0x8656,0x8657,0x8658,0x8659,0x865a,0x865b,0x865c,0x865d,0x865e, - 0x865f,0x8660,0x8661,0x8662,0x8663,0x8664,0x8665,0x8666,0x8667,0x8668, - 0x8669,0x866a,0x866b,0x866c,0x866d,0x866e,0x866f,0x8670,0x8671,0x8672, - 0x8673,0x8674,0x8675,0x8676,0x8677,0x8678,0x8679,0x867a,0x867b,0x867c, - 0x867d,0x867e,0x867f,0x8680,0x8681,0x8682,0x8683,0x8684,0x8685,0x8686, - 0x8687,0x8688,0x8689,0x868a,0x868b,0x868c,0x868d,0x868e,0x868f,0x8690, - 0x8691,0x8692,0x8693,0x8694,0x8695,0x8696,0x8697,0x8698,0x8699,0x869a, - 0x869b,0x869c,0x869d,0x869e,0x869f,0x86a0,0x86a1,0x86a2,0x86a3,0x86a4, - 0x86a5,0x86a6,0x86a7,0x86a8,0x86a9,0x86aa,0x86ab,0x86ac,0x86ad,0x86ae, - 0x86af,0x86b0,0x86b1,0x86b2,0x86b3,0x86b4,0x86b5,0x86b6,0x86b7,0x86b8, - 0x86b9,0x86ba,0x86bb,0x86bc,0x86bd,0x86be,0x86bf,0x86c0,0x86c1,0x86c2, - 0x86c3,0x86c4,0x86c5,0x86c6,0x86c7,0x86c8,0x86c9,0x86ca,0x86cb,0x86cc, - 0x86cd,0x86ce,0x86cf,0x86d0,0x86d1,0x86d2,0x86d3,0x86d4,0x86d5,0x86d6, - 0x86d7,0x86d8,0x86d9,0x86da,0x86db,0x86dc,0x86dd,0x86de,0x86df,0x86e0, - 0x86e1,0x86e2,0x86e3,0x86e4,0x86e5,0x86e6,0x86e7,0x86e8,0x86e9,0x86ea, - 0x86eb,0x86ec,0x86ed,0x86ee,0x86ef,0x86f0,0x86f1,0x86f2,0x86f3,0x86f4, - 0x86f5,0x86f6,0x86f7,0x86f8,0x86f9,0x86fa,0x86fb,0x86fc,0x86fd,0x86fe, - 0x86ff,0x8700,0x8701,0x8702,0x8703,0x8704,0x8705,0x8706,0x8707,0x8708, - 0x8709,0x870a,0x870b,0x870c,0x870d,0x870e,0x870f,0x8710,0x8711,0x8712, - 0x8713,0x8714,0x8715,0x8716,0x8717,0x8718,0x8719,0x871a,0x871b,0x871c, - 0x871d,0x871e,0x871f,0x8720,0x8721,0x8722,0x8723,0x8724,0x8725,0x8726, - 0x8727,0x8728,0x8729,0x872a,0x872b,0x872c,0x872d,0x872e,0x872f,0x8730, - 0x8731,0x8732,0x8733,0x8734,0x8735,0x8736,0x8737,0x8738,0x8739,0x873a, - 0x873b,0x873c,0x873d,0x873e,0x873f,0x8740,0x8741,0x8742,0x8743,0x8744, - 0x8745,0x8746,0x8747,0x8748,0x8749,0x874a,0x874b,0x874c,0x874d,0x874e, - 0x874f,0x8750,0x8751,0x8752,0x8753,0x8754,0x8755,0x8756,0x8757,0x8758, - 0x8759,0x875a,0x875b,0x875c,0x875d,0x875e,0x875f,0x8760,0x8761,0x8762, - 0x8763,0x8764,0x8765,0x8766,0x8767,0x8768,0x8769,0x876a,0x876b,0x876c, - 0x876d,0x876e,0x876f,0x8770,0x8771,0x8772,0x8773,0x8774,0x8775,0x8776, - 0x8777,0x8778,0x8779,0x877a,0x877b,0x877c,0x877d,0x877e,0x877f,0x8780, - 0x8781,0x8782,0x8783,0x8784,0x8785,0x8786,0x8787,0x8788,0x8789,0x878a, - 0x878b,0x878c,0x878d,0x878e,0x878f,0x8790,0x8791,0x8792,0x8793,0x8794, - 0x8795,0x8796,0x8797,0x8798,0x8799,0x879a,0x879b,0x879c,0x879d,0x879e, - 0x879f,0x87a0,0x87a1,0x87a2,0x87a3,0x87a4,0x87a5,0x87a6,0x87a7,0x87a8, - 0x87a9,0x87aa,0x87ab,0x87ac,0x87ad,0x87ae,0x87af,0x87b0,0x87b1,0x87b2, - 0x87b3,0x87b4,0x87b5,0x87b6,0x87b7,0x87b8,0x87b9,0x87ba,0x87bb,0x87bc, - 0x87bd,0x87be,0x87bf,0x87c0,0x87c1,0x87c2,0x87c3,0x87c4,0x87c5,0x87c6, - 0x87c7,0x87c8,0x87c9,0x87ca,0x87cb,0x87cc,0x87cd,0x87ce,0x87cf,0x87d0, - 0x87d1,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,0x87ed,0x87ee, - 0x87ef,0x87f0,0x87f1,0x87f2,0x87f3,0x87f4,0x87f5,0x87f6,0x87f7,0x87f8, - 0x87f9,0x87fa,0x87fb,0x87fc,0x87fd,0x87fe,0x87ff,0x8800,0x8801,0x8802, - 0x8803,0x8804,0x8805,0x8806,0x8807,0x8808,0x8809,0x880a,0x880b,0x880c, - 0x880d,0x880e,0x880f,0x8810,0x8811,0x8812,0x8813,0x8814,0x8815,0x8816, - 0x8817,0x8818,0x8819,0x881a,0x881b,0x881c,0x881d,0x881e,0x881f,0x8820, - 0x8821,0x8822,0x8823,0x8824,0x8825,0x8826,0x8827,0x8828,0x8829,0x882a, - 0x882b,0x882c,0x882d,0x882e,0x882f,0x8830,0x8831,0x8832,0x8833,0x8834, - 0x8835,0x8836,0x8837,0x8838,0x8839,0x883a,0x883b,0x883c,0x883d,0x883e, - 0x883f,0x8840,0x8841,0x8842,0x8843,0x8844,0x8845,0x8846,0x8847,0x8848, - 0x8849,0x884a,0x884b,0x884c,0x884d,0x884e,0x884f,0x8850,0x8851,0x8852, - 0x8853,0x8854,0x8855,0x8856,0x8857,0x8858,0x8859,0x885a,0x885b,0x885c, - 0x885d,0x885e,0x885f,0x8860,0x8861,0x8862,0x8863,0x8864,0x8865,0x8866, - 0x8867,0x8868,0x8869,0x886a,0x886b,0x886c,0x886d,0x886e,0x886f,0x8870, - 0x8871,0x8872,0x8873,0x8874,0x8875,0x8876,0x8877,0x8878,0x8879,0x887a, - 0x887b,0x887c,0x887d,0x887e,0x887f,0x8880,0x8881,0x8882,0x8883,0x8884, - 0x8885,0x8886,0x8887,0x8888,0x8889,0x888a,0x888b,0x888c,0x888d,0x888e, - 0x888f,0x8890,0x8891,0x8892,0x8893,0x8894,0x8895,0x8896,0x8897,0x8898, - 0x8899,0x889a,0x889b,0x889c,0x889d,0x889e,0x889f,0x88a0,0x88a1,0x88a2, - 0x88a3,0x88a4,0x88a5,0x88a6,0x88a7,0x88a8,0x88a9,0x88aa,0x88ab,0x88ac, - 0x88ad,0x88ae,0x88af,0x88b0,0x88b1,0x88b2,0x88b3,0x88b4,0x88b5,0x88b6, - 0x88b7,0x88b8,0x88b9,0x88ba,0x88bb,0x88bc,0x88bd,0x88be,0x88bf,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,0x88f7,0x88f8,0x88f9,0x88fa,0x88fb,0x88fc, - 0x88fd,0x88fe,0x88ff,0x8900,0x8901,0x8902,0x8903,0x8904,0x8905,0x8906, - 0x8907,0x8908,0x8909,0x890a,0x890b,0x890c,0x890d,0x890e,0x890f,0x8910, - 0x8911,0x8912,0x8913,0x8914,0x8915,0x8916,0x8917,0x8918,0x8919,0x891a, - 0x891b,0x891c,0x891d,0x891e,0x891f,0x8920,0x8921,0x8922,0x8923,0x8924, - 0x8925,0x8926,0x8927,0x8928,0x8929,0x892a,0x892b,0x892c,0x892d,0x892e, - 0x892f,0x8930,0x8931,0x8932,0x8933,0x8934,0x8935,0x8936,0x8937,0x8938, - 0x8939,0x893a,0x893b,0x893c,0x893d,0x893e,0x893f,0x8940,0x8941,0x8942, - 0x8943,0x8944,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,0x895e,0x895f,0x8960, - 0x8961,0x8962,0x8963,0x8964,0x8965,0x8966,0x8967,0x8968,0x8969,0x896a, - 0x896b,0x896c,0x896d,0x896e,0x896f,0x8970,0x8971,0x8972,0x8973,0x8974, - 0x8975,0x8976,0x8977,0x8978,0x8979,0x897a,0x897b,0x897c,0x897d,0x897e, - 0x897f,0x8980,0x8981,0x8982,0x8983,0x8984,0x8985,0x8986,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,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,0x89c1,0x89c2,0x89c3,0x89c4, - 0x89c5,0x89c6,0x89c7,0x89c8,0x89c9,0x89ca,0x89cb,0x89cc,0x89cd,0x89ce, - 0x89cf,0x89d0,0x89d1,0x89d2,0x89d3,0x89d4,0x89d5,0x89d6,0x89d7,0x89d8, - 0x89d9,0x89da,0x89db,0x89dc,0x89dd,0x89de,0x89df,0x89e0,0x89e1,0x89e2, - 0x89e3,0x89e4,0x89e5,0x89e6,0x89e7,0x89e8,0x89e9,0x89ea,0x89eb,0x89ec, - 0x89ed,0x89ee,0x89ef,0x89f0,0x89f1,0x89f2,0x89f3,0x89f4,0x89f5,0x89f6, - 0x89f7,0x89f8,0x89f9,0x89fa,0x89fb,0x89fc,0x89fd,0x89fe,0x89ff,0x8a00, - 0x8a01,0x8a02,0x8a03,0x8a04,0x8a05,0x8a06,0x8a07,0x8a08,0x8a09,0x8a0a, - 0x8a0b,0x8a0c,0x8a0d,0x8a0e,0x8a0f,0x8a10,0x8a11,0x8a12,0x8a13,0x8a14, - 0x8a15,0x8a16,0x8a17,0x8a18,0x8a19,0x8a1a,0x8a1b,0x8a1c,0x8a1d,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,0x8a3e,0x8a3f,0x8a40,0x8a41,0x8a42,0x8a43,0x8a44,0x8a45,0x8a46, - 0x8a47,0x8a48,0x8a49,0x8a4a,0x8a4b,0x8a4c,0x8a4d,0x8a4e,0x8a4f,0x8a50, - 0x8a51,0x8a52,0x8a53,0x8a54,0x8a55,0x8a56,0x8a57,0x8a58,0x8a59,0x8a5a, - 0x8a5b,0x8a5c,0x8a5d,0x8a5e,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, - 0x8a79,0x8a7a,0x8a7b,0x8a7c,0x8a7d,0x8a7e,0x8a7f,0x8a80,0x8a81,0x8a82, - 0x8a83,0x8a84,0x8a85,0x8a86,0x8a87,0x8a88,0x8a89,0x8a8a,0x8a8b,0x8a8c, - 0x8a8d,0x8a8e,0x8a8f,0x8a90,0x8a91,0x8a92,0x8a93,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,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,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,0x8b07,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,0x8b24,0x8b25,0x8b26,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,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,0x8b66,0x8b67,0x8b68, - 0x8b69,0x8b6a,0x8b6b,0x8b6c,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, - 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,0x8bb6,0x8bb7,0x8bb8, - 0x8bb9,0x8bba,0x8bbb,0x8bbc,0x8bbd,0x8bbe,0x8bbf,0x8bc0,0x8bc1,0x8bc2, - 0x8bc3,0x8bc4,0x8bc5,0x8bc6,0x8bc7,0x8bc8,0x8bc9,0x8bca,0x8bcb,0x8bcc, - 0x8bcd,0x8bce,0x8bcf,0x8bd0,0x8bd1,0x8bd2,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,0x8bed,0x8bee,0x8bef,0x8bf0,0x8bf1,0x8bf2,0x8bf3,0x8bf4, - 0x8bf5,0x8bf6,0x8bf7,0x8bf8,0x8bf9,0x8bfa,0x8bfb,0x8bfc,0x8bfd,0x8bfe, - 0x8bff,0x8c00,0x8c01,0x8c02,0x8c03,0x8c04,0x8c05,0x8c06,0x8c07,0x8c08, - 0x8c09,0x8c0a,0x8c0b,0x8c0c,0x8c0d,0x8c0e,0x8c0f,0x8c10,0x8c11,0x8c12, - 0x8c13,0x8c14,0x8c15,0x8c16,0x8c17,0x8c18,0x8c19,0x8c1a,0x8c1b,0x8c1c, - 0x8c1d,0x8c1e,0x8c1f,0x8c20,0x8c21,0x8c22,0x8c23,0x8c24,0x8c25,0x8c26, - 0x8c27,0x8c28,0x8c29,0x8c2a,0x8c2b,0x8c2c,0x8c2d,0x8c2e,0x8c2f,0x8c30, - 0x8c31,0x8c32,0x8c33,0x8c34,0x8c35,0x8c36,0x8c37,0x8c38,0x8c39,0x8c3a, - 0x8c3b,0x8c3c,0x8c3d,0x8c3e,0x8c3f,0x8c40,0x8c41,0x8c42,0x8c43,0x8c44, - 0x8c45,0x8c46,0x8c47,0x8c48,0x8c49,0x8c4a,0x8c4b,0x8c4c,0x8c4d,0x8c4e, - 0x8c4f,0x8c50,0x8c51,0x8c52,0x8c53,0x8c54,0x8c55,0x8c56,0x8c57,0x8c58, - 0x8c59,0x8c5a,0x8c5b,0x8c5c,0x8c5d,0x8c5e,0x8c5f,0x8c60,0x8c61,0x8c62, - 0x8c63,0x8c64,0x8c65,0x8c66,0x8c67,0x8c68,0x8c69,0x8c6a,0x8c6b,0x8c6c, - 0x8c6d,0x8c6e,0x8c6f,0x8c70,0x8c71,0x8c72,0x8c73,0x8c74,0x8c75,0x8c76, - 0x8c77,0x8c78,0x8c79,0x8c7a,0x8c7b,0x8c7c,0x8c7d,0x8c7e,0x8c7f,0x8c80, - 0x8c81,0x8c82,0x8c83,0x8c84,0x8c85,0x8c86,0x8c87,0x8c88,0x8c89,0x8c8a, - 0x8c8b,0x8c8c,0x8c8d,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, - 0x8ca9,0x8caa,0x8cab,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,0x8cdf,0x8ce0,0x8ce1,0x8ce2,0x8ce3,0x8ce4, - 0x8ce5,0x8ce6,0x8ce7,0x8ce8,0x8ce9,0x8cea,0x8ceb,0x8cec,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,0x8d0e,0x8d0f,0x8d10,0x8d11,0x8d12,0x8d13,0x8d14,0x8d15,0x8d16, - 0x8d17,0x8d18,0x8d19,0x8d1a,0x8d1b,0x8d1c,0x8d1d,0x8d1e,0x8d1f,0x8d20, - 0x8d21,0x8d22,0x8d23,0x8d24,0x8d25,0x8d26,0x8d27,0x8d28,0x8d29,0x8d2a, - 0x8d2b,0x8d2c,0x8d2d,0x8d2e,0x8d2f,0x8d30,0x8d31,0x8d32,0x8d33,0x8d34, - 0x8d35,0x8d36,0x8d37,0x8d38,0x8d39,0x8d3a,0x8d3b,0x8d3c,0x8d3d,0x8d3e, - 0x8d3f,0x8d40,0x8d41,0x8d42,0x8d43,0x8d44,0x8d45,0x8d46,0x8d47,0x8d48, - 0x8d49,0x8d4a,0x8d4b,0x8d4c,0x8d4d,0x8d4e,0x8d4f,0x8d50,0x8d51,0x8d52, - 0x8d53,0x8d54,0x8d55,0x8d56,0x8d57,0x8d58,0x8d59,0x8d5a,0x8d5b,0x8d5c, - 0x8d5d,0x8d5e,0x8d5f,0x8d60,0x8d61,0x8d62,0x8d63,0x8d64,0x8d65,0x8d66, - 0x8d67,0x8d68,0x8d69,0x8d6a,0x8d6b,0x8d6c,0x8d6d,0x8d6e,0x8d6f,0x8d70, - 0x8d71,0x8d72,0x8d73,0x8d74,0x8d75,0x8d76,0x8d77,0x8d78,0x8d79,0x8d7a, - 0x8d7b,0x8d7c,0x8d7d,0x8d7e,0x8d7f,0x8d80,0x8d81,0x8d82,0x8d83,0x8d84, - 0x8d85,0x8d86,0x8d87,0x8d88,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,0x8dab,0x8dac, - 0x8dad,0x8dae,0x8daf,0x8db0,0x8db1,0x8db2,0x8db3,0x8db4,0x8db5,0x8db6, - 0x8db7,0x8db8,0x8db9,0x8dba,0x8dbb,0x8dbc,0x8dbd,0x8dbe,0x8dbf,0x8dc0, - 0x8dc1,0x8dc2,0x8dc3,0x8dc4,0x8dc5,0x8dc6,0x8dc7,0x8dc8,0x8dc9,0x8dca, - 0x8dcb,0x8dcc,0x8dcd,0x8dce,0x8dcf,0x8dd0,0x8dd1,0x8dd2,0x8dd3,0x8dd4, - 0x8dd5,0x8dd6,0x8dd7,0x8dd8,0x8dd9,0x8dda,0x8ddb,0x8ddc,0x8ddd,0x8dde, - 0x8ddf,0x8de0,0x8de1,0x8de2,0x8de3,0x8de4,0x8de5,0x8de6,0x8de7,0x8de8, - 0x8de9,0x8dea,0x8deb,0x8dec,0x8ded,0x8dee,0x8def,0x8df0,0x8df1,0x8df2, - 0x8df3,0x8df4,0x8df5,0x8df6,0x8df7,0x8df8,0x8df9,0x8dfa,0x8dfb,0x8dfc, - 0x8dfd,0x8dfe,0x8dff,0x8e00,0x8e01,0x8e02,0x8e03,0x8e04,0x8e05,0x8e06, - 0x8e07,0x8e08,0x8e09,0x8e0a,0x8e0b,0x8e0c,0x8e0d,0x8e0e,0x8e0f,0x8e10, - 0x8e11,0x8e12,0x8e13,0x8e14,0x8e15,0x8e16,0x8e17,0x8e18,0x8e19,0x8e1a, - 0x8e1b,0x8e1c,0x8e1d,0x8e1e,0x8e1f,0x8e20,0x8e21,0x8e22,0x8e23,0x8e24, - 0x8e25,0x8e26,0x8e27,0x8e28,0x8e29,0x8e2a,0x8e2b,0x8e2c,0x8e2d,0x8e2e, - 0x8e2f,0x8e30,0x8e31,0x8e32,0x8e33,0x8e34,0x8e35,0x8e36,0x8e37,0x8e38, - 0x8e39,0x8e3a,0x8e3b,0x8e3c,0x8e3d,0x8e3e,0x8e3f,0x8e40,0x8e41,0x8e42, - 0x8e43,0x8e44,0x8e45,0x8e46,0x8e47,0x8e48,0x8e49,0x8e4a,0x8e4b,0x8e4c, - 0x8e4d,0x8e4e,0x8e4f,0x8e50,0x8e51,0x8e52,0x8e53,0x8e54,0x8e55,0x8e56, - 0x8e57,0x8e58,0x8e59,0x8e5a,0x8e5b,0x8e5c,0x8e5d,0x8e5e,0x8e5f,0x8e60, - 0x8e61,0x8e62,0x8e63,0x8e64,0x8e65,0x8e66,0x8e67,0x8e68,0x8e69,0x8e6a, - 0x8e6b,0x8e6c,0x8e6d,0x8e6e,0x8e6f,0x8e70,0x8e71,0x8e72,0x8e73,0x8e74, - 0x8e75,0x8e76,0x8e77,0x8e78,0x8e79,0x8e7a,0x8e7b,0x8e7c,0x8e7d,0x8e7e, - 0x8e7f,0x8e80,0x8e81,0x8e82,0x8e83,0x8e84,0x8e85,0x8e86,0x8e87,0x8e88, - 0x8e89,0x8e8a,0x8e8b,0x8e8c,0x8e8d,0x8e8e,0x8e8f,0x8e90,0x8e91,0x8e92, - 0x8e93,0x8e94,0x8e95,0x8e96,0x8e97,0x8e98,0x8e99,0x8e9a,0x8e9b,0x8e9c, - 0x8e9d,0x8e9e,0x8e9f,0x8ea0,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,0x8ee0,0x8ee1,0x8ee2, - 0x8ee3,0x8ee4,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,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,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,0x8f66,0x8f67,0x8f68,0x8f69,0x8f6a,0x8f6b,0x8f6c,0x8f6d,0x8f6e, - 0x8f6f,0x8f70,0x8f71,0x8f72,0x8f73,0x8f74,0x8f75,0x8f76,0x8f77,0x8f78, - 0x8f79,0x8f7a,0x8f7b,0x8f7c,0x8f7d,0x8f7e,0x8f7f,0x8f80,0x8f81,0x8f82, - 0x8f83,0x8f84,0x8f85,0x8f86,0x8f87,0x8f88,0x8f89,0x8f8a,0x8f8b,0x8f8c, - 0x8f8d,0x8f8e,0x8f8f,0x8f90,0x8f91,0x8f92,0x8f93,0x8f94,0x8f95,0x8f96, - 0x8f97,0x8f98,0x8f99,0x8f9a,0x8f9b,0x8f9c,0x8f9d,0x8f9e,0x8f9f,0x8fa0, - 0x8fa1,0x8fa2,0x8fa3,0x8fa4,0x8fa5,0x8fa6,0x8fa7,0x8fa8,0x8fa9,0x8faa, - 0x8fab,0x8fac,0x8fad,0x8fae,0x8faf,0x8fb0,0x8fb1,0x8fb2,0x8fb3,0x8fb4, - 0x8fb5,0x8fb6,0x8fb7,0x8fb8,0x8fb9,0x8fba,0x8fbb,0x8fbc,0x8fbd,0x8fbe, - 0x8fbf,0x8fc0,0x8fc1,0x8fc2,0x8fc3,0x8fc4,0x8fc5,0x8fc6,0x8fc7,0x8fc8, - 0x8fc9,0x8fca,0x8fcb,0x8fcc,0x8fcd,0x8fce,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,0x8fea,0x8feb,0x8fec,0x8fed,0x8fee,0x8fef,0x8ff0, - 0x8ff1,0x8ff2,0x8ff3,0x8ff4,0x8ff5,0x8ff6,0x8ff7,0x8ff8,0x8ff9,0x8ffa, - 0x8ffb,0x8ffc,0x8ffd,0x8ffe,0x8fff,0x9000,0x9001,0x9002,0x9003,0x9004, - 0x9005,0x9006,0x9007,0x9008,0x9009,0x900a,0x900b,0x900c,0x900d,0x900e, - 0x900f,0x9010,0x9011,0x9012,0x9013,0x9014,0x9015,0x9016,0x9017,0x9018, - 0x9019,0x901a,0x901b,0x901c,0x901d,0x901e,0x901f,0x9020,0x9021,0x9022, - 0x9023,0x9024,0x9025,0x9026,0x9027,0x9028,0x9029,0x902a,0x902b,0x902c, - 0x902d,0x902e,0x902f,0x9030,0x9031,0x9032,0x9033,0x9034,0x9035,0x9036, - 0x9037,0x9038,0x9039,0x903a,0x903b,0x903c,0x903d,0x903e,0x903f,0x9040, - 0x9041,0x9042,0x9043,0x9044,0x9045,0x9046,0x9047,0x9048,0x9049,0x904a, - 0x904b,0x904c,0x904d,0x904e,0x904f,0x9050,0x9051,0x9052,0x9053,0x9054, - 0x9055,0x9056,0x9057,0x9058,0x9059,0x905a,0x905b,0x905c,0x905d,0x905e, - 0x905f,0x9060,0x9061,0x9062,0x9063,0x9064,0x9065,0x9066,0x9067,0x9068, - 0x9069,0x906a,0x906b,0x906c,0x906d,0x906e,0x906f,0x9070,0x9071,0x9072, - 0x9073,0x9074,0x9075,0x9076,0x9077,0x9078,0x9079,0x907a,0x907b,0x907c, - 0x907d,0x907e,0x907f,0x9080,0x9081,0x9082,0x9083,0x9084,0x9085,0x9086, - 0x9087,0x9088,0x9089,0x908a,0x908b,0x908c,0x908d,0x908e,0x908f,0x9090, - 0x9091,0x9092,0x9093,0x9094,0x9095,0x9096,0x9097,0x9098,0x9099,0x909a, - 0x909b,0x909c,0x909d,0x909e,0x909f,0x90a0,0x90a1,0x90a2,0x90a3,0x90a4, - 0x90a5,0x90a6,0x90a7,0x90a8,0x90a9,0x90aa,0x90ab,0x90ac,0x90ad,0x90ae, - 0x90af,0x90b0,0x90b1,0x90b2,0x90b3,0x90b4,0x90b5,0x90b6,0x90b7,0x90b8, - 0x90b9,0x90ba,0x90bb,0x90bc,0x90bd,0x90be,0x90bf,0x90c0,0x90c1,0x90c2, - 0x90c3,0x90c4,0x90c5,0x90c6,0x90c7,0x90c8,0x90c9,0x90ca,0x90cb,0x90cc, - 0x90cd,0x90ce,0x90cf,0x90d0,0x90d1,0x90d2,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, - 0x90f5,0x90f6,0x90f7,0x90f8,0x90f9,0x90fa,0x90fb,0x90fc,0x90fd,0x90fe, - 0x90ff,0x9100,0x9101,0x9102,0x9103,0x9104,0x9105,0x9106,0x9107,0x9108, - 0x9109,0x910a,0x910b,0x910c,0x910d,0x910e,0x910f,0x9110,0x9111,0x9112, - 0x9113,0x9114,0x9115,0x9116,0x9117,0x9118,0x9119,0x911a,0x911b,0x911c, - 0x911d,0x911e,0x911f,0x9120,0x9121,0x9122,0x9123,0x9124,0x9125,0x9126, - 0x9127,0x9128,0x9129,0x912a,0x912b,0x912c,0x912d,0x912e,0x912f,0x9130, - 0x9131,0x9132,0x9133,0x9134,0x9135,0x9136,0x9137,0x9138,0x9139,0x913a, - 0x913b,0x913c,0x913d,0x913e,0x913f,0x9140,0x9141,0x9142,0x9143,0x9144, - 0x9145,0x9146,0x9147,0x9148,0x9149,0x914a,0x914b,0x914c,0x914d,0x914e, - 0x914f,0x9150,0x9151,0x9152,0x9153,0x9154,0x9155,0x9156,0x9157,0x9158, - 0x9159,0x915a,0x915b,0x915c,0x915d,0x915e,0x915f,0x9160,0x9161,0x9162, - 0x9163,0x9164,0x9165,0x9166,0x9167,0x9168,0x9169,0x916a,0x916b,0x916c, - 0x916d,0x916e,0x916f,0x9170,0x9171,0x9172,0x9173,0x9174,0x9175,0x9176, - 0x9177,0x9178,0x9179,0x917a,0x917b,0x917c,0x917d,0x917e,0x917f,0x9180, - 0x9181,0x9182,0x9183,0x9184,0x9185,0x9186,0x9187,0x9188,0x9189,0x918a, - 0x918b,0x918c,0x918d,0x918e,0x918f,0x9190,0x9191,0x9192,0x9193,0x9194, - 0x9195,0x9196,0x9197,0x9198,0x9199,0x919a,0x919b,0x919c,0x919d,0x919e, - 0x919f,0x91a0,0x91a1,0x91a2,0x91a3,0x91a4,0x91a5,0x91a6,0x91a7,0x91a8, - 0x91a9,0x91aa,0x91ab,0x91ac,0x91ad,0x91ae,0x91af,0x91b0,0x91b1,0x91b2, - 0x91b3,0x91b4,0x91b5,0x91b6,0x91b7,0x91b8,0x91b9,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,0x91dc,0x91dd,0x91de,0x91df,0x91e0,0x91e1,0x91e2,0x91e3,0x91e4, - 0x91e5,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,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,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,0x9274,0x9275,0x9276,0x9277,0x9278,0x9279,0x927a, - 0x927b,0x927c,0x927d,0x927e,0x927f,0x9280,0x9281,0x9282,0x9283,0x9284, - 0x9285,0x9286,0x9287,0x9288,0x9289,0x928a,0x928b,0x928c,0x928d,0x928e, - 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,0x92a8,0x92a9,0x92aa,0x92ab,0x92ac, - 0x92ad,0x92ae,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,0x92c8,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, - 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,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,0x933e,0x933f,0x9340,0x9341,0x9342, - 0x9343,0x9344,0x9345,0x9346,0x9347,0x9348,0x9349,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,0x936a, - 0x936b,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,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,0x93aa,0x93ab,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,0x93ca,0x93cb,0x93cc,0x93cd,0x93ce, - 0x93cf,0x93d0,0x93d1,0x93d2,0x93d3,0x93d4,0x93d5,0x93d6,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,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,0x942f,0x9430,0x9431,0x9432, - 0x9433,0x9434,0x9435,0x9436,0x9437,0x9438,0x9439,0x943a,0x943b,0x943c, - 0x943d,0x943e,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,0x946b,0x946c,0x946d,0x946e, - 0x946f,0x9470,0x9471,0x9472,0x9473,0x9474,0x9475,0x9476,0x9477,0x9478, - 0x9479,0x947a,0x947b,0x947c,0x947d,0x947e,0x947f,0x9480,0x9481,0x9482, - 0x9483,0x9484,0x9485,0x9486,0x9487,0x9488,0x9489,0x948a,0x948b,0x948c, - 0x948d,0x948e,0x948f,0x9490,0x9491,0x9492,0x9493,0x9494,0x9495,0x9496, - 0x9497,0x9498,0x9499,0x949a,0x949b,0x949c,0x949d,0x949e,0x949f,0x94a0, - 0x94a1,0x94a2,0x94a3,0x94a4,0x94a5,0x94a6,0x94a7,0x94a8,0x94a9,0x94aa, - 0x94ab,0x94ac,0x94ad,0x94ae,0x94af,0x94b0,0x94b1,0x94b2,0x94b3,0x94b4, - 0x94b5,0x94b6,0x94b7,0x94b8,0x94b9,0x94ba,0x94bb,0x94bc,0x94bd,0x94be, - 0x94bf,0x94c0,0x94c1,0x94c2,0x94c3,0x94c4,0x94c5,0x94c6,0x94c7,0x94c8, - 0x94c9,0x94ca,0x94cb,0x94cc,0x94cd,0x94ce,0x94cf,0x94d0,0x94d1,0x94d2, - 0x94d3,0x94d4,0x94d5,0x94d6,0x94d7,0x94d8,0x94d9,0x94da,0x94db,0x94dc, - 0x94dd,0x94de,0x94df,0x94e0,0x94e1,0x94e2,0x94e3,0x94e4,0x94e5,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,0x94ff,0x9500,0x9501,0x9502,0x9503,0x9504, - 0x9505,0x9506,0x9507,0x9508,0x9509,0x950a,0x950b,0x950c,0x950d,0x950e, - 0x950f,0x9510,0x9511,0x9512,0x9513,0x9514,0x9515,0x9516,0x9517,0x9518, - 0x9519,0x951a,0x951b,0x951c,0x951d,0x951e,0x951f,0x9520,0x9521,0x9522, - 0x9523,0x9524,0x9525,0x9526,0x9527,0x9528,0x9529,0x952a,0x952b,0x952c, - 0x952d,0x952e,0x952f,0x9530,0x9531,0x9532,0x9533,0x9534,0x9535,0x9536, - 0x9537,0x9538,0x9539,0x953a,0x953b,0x953c,0x953d,0x953e,0x953f,0x9540, - 0x9541,0x9542,0x9543,0x9544,0x9545,0x9546,0x9547,0x9548,0x9549,0x954a, - 0x954b,0x954c,0x954d,0x954e,0x954f,0x9550,0x9551,0x9552,0x9553,0x9554, - 0x9555,0x9556,0x9557,0x9558,0x9559,0x955a,0x955b,0x955c,0x955d,0x955e, - 0x955f,0x9560,0x9561,0x9562,0x9563,0x9564,0x9565,0x9566,0x9567,0x9568, - 0x9569,0x956a,0x956b,0x956c,0x956d,0x956e,0x956f,0x9570,0x9571,0x9572, - 0x9573,0x9574,0x9575,0x9576,0x9577,0x9578,0x9579,0x957a,0x957b,0x957c, - 0x957d,0x957e,0x957f,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,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,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,0x95e8,0x95e9,0x95ea, - 0x95eb,0x95ec,0x95ed,0x95ee,0x95ef,0x95f0,0x95f1,0x95f2,0x95f3,0x95f4, - 0x95f5,0x95f6,0x95f7,0x95f8,0x95f9,0x95fa,0x95fb,0x95fc,0x95fd,0x95fe, - 0x95ff,0x9600,0x9601,0x9602,0x9603,0x9604,0x9605,0x9606,0x9607,0x9608, - 0x9609,0x960a,0x960b,0x960c,0x960d,0x960e,0x960f,0x9610,0x9611,0x9612, - 0x9613,0x9614,0x9615,0x9616,0x9617,0x9618,0x9619,0x961a,0x961b,0x961c, - 0x961d,0x961e,0x961f,0x9620,0x9621,0x9622,0x9623,0x9624,0x9625,0x9626, - 0x9627,0x9628,0x9629,0x962a,0x962b,0x962c,0x962d,0x962e,0x962f,0x9630, - 0x9631,0x9632,0x9633,0x9634,0x9635,0x9636,0x9637,0x9638,0x9639,0x963a, - 0x963b,0x963c,0x963d,0x963e,0x963f,0x9640,0x9641,0x9642,0x9643,0x9644, - 0x9645,0x9646,0x9647,0x9648,0x9649,0x964a,0x964b,0x964c,0x964d,0x964e, - 0x964f,0x9650,0x9651,0x9652,0x9653,0x9654,0x9655,0x9656,0x9657,0x9658, - 0x9659,0x965a,0x965b,0x965c,0x965d,0x965e,0x965f,0x9660,0x9661,0x9662, - 0x9663,0x9664,0x9665,0x9666,0x9667,0x9668,0x9669,0x966a,0x966b,0x966c, - 0x966d,0x966e,0x966f,0x9670,0x9671,0x9672,0x9673,0x9674,0x9675,0x9676, - 0x9677,0x9678,0x9679,0x967a,0x967b,0x967c,0x967d,0x967e,0x967f,0x9680, - 0x9681,0x9682,0x9683,0x9684,0x9685,0x9686,0x9687,0x9688,0x9689,0x968a, - 0x968b,0x968c,0x968d,0x968e,0x968f,0x9690,0x9691,0x9692,0x9693,0x9694, - 0x9695,0x9696,0x9697,0x9698,0x9699,0x969a,0x969b,0x969c,0x969d,0x969e, - 0x969f,0x96a0,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,0x96c3,0x96c4,0x96c5,0x96c6, - 0x96c7,0x96c8,0x96c9,0x96ca,0x96cb,0x96cc,0x96cd,0x96ce,0x96cf,0x96d0, - 0x96d1,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,0x96ff,0x9700,0x9701,0x9702, - 0x9703,0x9704,0x9705,0x9706,0x9707,0x9708,0x9709,0x970a,0x970b,0x970c, - 0x970d,0x970e,0x970f,0x9710,0x9711,0x9712,0x9713,0x9714,0x9715,0x9716, - 0x9717,0x9718,0x9719,0x971a,0x971b,0x971c,0x971d,0x971e,0x971f,0x9720, - 0x9721,0x9722,0x9723,0x9724,0x9725,0x9726,0x9727,0x9728,0x9729,0x972a, - 0x972b,0x972c,0x972d,0x972e,0x972f,0x9730,0x9731,0x9732,0x9733,0x9734, - 0x9735,0x9736,0x9737,0x9738,0x9739,0x973a,0x973b,0x973c,0x973d,0x973e, - 0x973f,0x9740,0x9741,0x9742,0x9743,0x9744,0x9745,0x9746,0x9747,0x9748, - 0x9749,0x974a,0x974b,0x974c,0x974d,0x974e,0x974f,0x9750,0x9751,0x9752, - 0x9753,0x9754,0x9755,0x9756,0x9757,0x9758,0x9759,0x975a,0x975b,0x975c, - 0x975d,0x975e,0x975f,0x9760,0x9761,0x9762,0x9763,0x9764,0x9765,0x9766, - 0x9767,0x9768,0x9769,0x976a,0x976b,0x976c,0x976d,0x976e,0x976f,0x9770, - 0x9771,0x9772,0x9773,0x9774,0x9775,0x9776,0x9777,0x9778,0x9779,0x977a, - 0x977b,0x977c,0x977d,0x977e,0x977f,0x9780,0x9781,0x9782,0x9783,0x9784, - 0x9785,0x9786,0x9787,0x9788,0x9789,0x978a,0x978b,0x978c,0x978d,0x978e, - 0x978f,0x9790,0x9791,0x9792,0x9793,0x9794,0x9795,0x9796,0x9797,0x9798, - 0x9799,0x979a,0x979b,0x979c,0x979d,0x979e,0x979f,0x97a0,0x97a1,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,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,0x97fc, - 0x97fd,0x97fe,0x97ff,0x9800,0x9801,0x9802,0x9803,0x9804,0x9805,0x9806, - 0x9807,0x9808,0x9809,0x980a,0x980b,0x980c,0x980d,0x980e,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,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,0x986f,0x9870,0x9871,0x9872,0x9873,0x9874, - 0x9875,0x9876,0x9877,0x9878,0x9879,0x987a,0x987b,0x987c,0x987d,0x987e, - 0x987f,0x9880,0x9881,0x9882,0x9883,0x9884,0x9885,0x9886,0x9887,0x9888, - 0x9889,0x988a,0x988b,0x988c,0x988d,0x988e,0x988f,0x9890,0x9891,0x9892, - 0x9893,0x9894,0x9895,0x9896,0x9897,0x9898,0x9899,0x989a,0x989b,0x989c, - 0x989d,0x989e,0x989f,0x98a0,0x98a1,0x98a2,0x98a3,0x98a4,0x98a5,0x98a6, - 0x98a7,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,0x98ce, - 0x98cf,0x98d0,0x98d1,0x98d2,0x98d3,0x98d4,0x98d5,0x98d6,0x98d7,0x98d8, - 0x98d9,0x98da,0x98db,0x98dc,0x98dd,0x98de,0x98df,0x98e0,0x98e1,0x98e2, - 0x98e3,0x98e4,0x98e5,0x98e6,0x98e7,0x98e8,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,0x9908,0x9909,0x990a, - 0x990b,0x990c,0x990d,0x990e,0x990f,0x9910,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,0x992e,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,0x994a,0x994b,0x994c,0x994d,0x994e,0x994f,0x9950, - 0x9951,0x9952,0x9953,0x9954,0x9955,0x9956,0x9957,0x9958,0x9959,0x995a, - 0x995b,0x995c,0x995d,0x995e,0x995f,0x9960,0x9961,0x9962,0x9963,0x9964, - 0x9965,0x9966,0x9967,0x9968,0x9969,0x996a,0x996b,0x996c,0x996d,0x996e, - 0x996f,0x9970,0x9971,0x9972,0x9973,0x9974,0x9975,0x9976,0x9977,0x9978, - 0x9979,0x997a,0x997b,0x997c,0x997d,0x997e,0x997f,0x9980,0x9981,0x9982, - 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,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,0x99f6,0x99f7,0x99f8,0x99f9,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,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,0x9a5a,0x9a5b,0x9a5c,0x9a5d,0x9a5e, - 0x9a5f,0x9a60,0x9a61,0x9a62,0x9a63,0x9a64,0x9a65,0x9a66,0x9a67,0x9a68, - 0x9a69,0x9a6a,0x9a6b,0x9a6c,0x9a6d,0x9a6e,0x9a6f,0x9a70,0x9a71,0x9a72, - 0x9a73,0x9a74,0x9a75,0x9a76,0x9a77,0x9a78,0x9a79,0x9a7a,0x9a7b,0x9a7c, - 0x9a7d,0x9a7e,0x9a7f,0x9a80,0x9a81,0x9a82,0x9a83,0x9a84,0x9a85,0x9a86, - 0x9a87,0x9a88,0x9a89,0x9a8a,0x9a8b,0x9a8c,0x9a8d,0x9a8e,0x9a8f,0x9a90, - 0x9a91,0x9a92,0x9a93,0x9a94,0x9a95,0x9a96,0x9a97,0x9a98,0x9a99,0x9a9a, - 0x9a9b,0x9a9c,0x9a9d,0x9a9e,0x9a9f,0x9aa0,0x9aa1,0x9aa2,0x9aa3,0x9aa4, - 0x9aa5,0x9aa6,0x9aa7,0x9aa8,0x9aa9,0x9aaa,0x9aab,0x9aac,0x9aad,0x9aae, - 0x9aaf,0x9ab0,0x9ab1,0x9ab2,0x9ab3,0x9ab4,0x9ab5,0x9ab6,0x9ab7,0x9ab8, - 0x9ab9,0x9aba,0x9abb,0x9abc,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,0x9adf,0x9ae0, - 0x9ae1,0x9ae2,0x9ae3,0x9ae4,0x9ae5,0x9ae6,0x9ae7,0x9ae8,0x9ae9,0x9aea, - 0x9aeb,0x9aec,0x9aed,0x9aee,0x9aef,0x9af0,0x9af1,0x9af2,0x9af3,0x9af4, - 0x9af5,0x9af6,0x9af7,0x9af8,0x9af9,0x9afa,0x9afb,0x9afc,0x9afd,0x9afe, - 0x9aff,0x9b00,0x9b01,0x9b02,0x9b03,0x9b04,0x9b05,0x9b06,0x9b07,0x9b08, - 0x9b09,0x9b0a,0x9b0b,0x9b0c,0x9b0d,0x9b0e,0x9b0f,0x9b10,0x9b11,0x9b12, - 0x9b13,0x9b14,0x9b15,0x9b16,0x9b17,0x9b18,0x9b19,0x9b1a,0x9b1b,0x9b1c, - 0x9b1d,0x9b1e,0x9b1f,0x9b20,0x9b21,0x9b22,0x9b23,0x9b24,0x9b25,0x9b26, - 0x9b27,0x9b28,0x9b29,0x9b2a,0x9b2b,0x9b2c,0x9b2d,0x9b2e,0x9b2f,0x9b30, - 0x9b31,0x9b32,0x9b33,0x9b34,0x9b35,0x9b36,0x9b37,0x9b38,0x9b39,0x9b3a, - 0x9b3b,0x9b3c,0x9b3d,0x9b3e,0x9b3f,0x9b40,0x9b41,0x9b42,0x9b43,0x9b44, - 0x9b45,0x9b46,0x9b47,0x9b48,0x9b49,0x9b4a,0x9b4b,0x9b4c,0x9b4d,0x9b4e, - 0x9b4f,0x9b50,0x9b51,0x9b52,0x9b53,0x9b54,0x9b55,0x9b56,0x9b57,0x9b58, - 0x9b59,0x9b5a,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,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,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,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,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,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, - 0x9c7b,0x9c7c,0x9c7d,0x9c7e,0x9c7f,0x9c80,0x9c81,0x9c82,0x9c83,0x9c84, - 0x9c85,0x9c86,0x9c87,0x9c88,0x9c89,0x9c8a,0x9c8b,0x9c8c,0x9c8d,0x9c8e, - 0x9c8f,0x9c90,0x9c91,0x9c92,0x9c93,0x9c94,0x9c95,0x9c96,0x9c97,0x9c98, - 0x9c99,0x9c9a,0x9c9b,0x9c9c,0x9c9d,0x9c9e,0x9c9f,0x9ca0,0x9ca1,0x9ca2, - 0x9ca3,0x9ca4,0x9ca5,0x9ca6,0x9ca7,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,0x9cc3,0x9cc4,0x9cc5,0x9cc6,0x9cc7,0x9cc8,0x9cc9,0x9cca, - 0x9ccb,0x9ccc,0x9ccd,0x9cce,0x9ccf,0x9cd0,0x9cd1,0x9cd2,0x9cd3,0x9cd4, - 0x9cd5,0x9cd6,0x9cd7,0x9cd8,0x9cd9,0x9cda,0x9cdb,0x9cdc,0x9cdd,0x9cde, - 0x9cdf,0x9ce0,0x9ce1,0x9ce2,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,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, - 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,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,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,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,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, - 0x9e1f,0x9e20,0x9e21,0x9e22,0x9e23,0x9e24,0x9e25,0x9e26,0x9e27,0x9e28, - 0x9e29,0x9e2a,0x9e2b,0x9e2c,0x9e2d,0x9e2e,0x9e2f,0x9e30,0x9e31,0x9e32, - 0x9e33,0x9e34,0x9e35,0x9e36,0x9e37,0x9e38,0x9e39,0x9e3a,0x9e3b,0x9e3c, - 0x9e3d,0x9e3e,0x9e3f,0x9e40,0x9e41,0x9e42,0x9e43,0x9e44,0x9e45,0x9e46, - 0x9e47,0x9e48,0x9e49,0x9e4a,0x9e4b,0x9e4c,0x9e4d,0x9e4e,0x9e4f,0x9e50, - 0x9e51,0x9e52,0x9e53,0x9e54,0x9e55,0x9e56,0x9e57,0x9e58,0x9e59,0x9e5a, - 0x9e5b,0x9e5c,0x9e5d,0x9e5e,0x9e5f,0x9e60,0x9e61,0x9e62,0x9e63,0x9e64, - 0x9e65,0x9e66,0x9e67,0x9e68,0x9e69,0x9e6a,0x9e6b,0x9e6c,0x9e6d,0x9e6e, - 0x9e6f,0x9e70,0x9e71,0x9e72,0x9e73,0x9e74,0x9e75,0x9e76,0x9e77,0x9e78, - 0x9e79,0x9e7a,0x9e7b,0x9e7c,0x9e7d,0x9e7e,0x9e7f,0x9e80,0x9e81,0x9e82, - 0x9e83,0x9e84,0x9e85,0x9e86,0x9e87,0x9e88,0x9e89,0x9e8a,0x9e8b,0x9e8c, - 0x9e8d,0x9e8e,0x9e8f,0x9e90,0x9e91,0x9e92,0x9e93,0x9e94,0x9e95,0x9e96, - 0x9e97,0x9e98,0x9e99,0x9e9a,0x9e9b,0x9e9c,0x9e9d,0x9e9e,0x9e9f,0x9ea0, - 0x9ea1,0x9ea2,0x9ea3,0x9ea4,0x9ea5,0x9ea6,0x9ea7,0x9ea8,0x9ea9,0x9eaa, - 0x9eab,0x9eac,0x9ead,0x9eae,0x9eaf,0x9eb0,0x9eb1,0x9eb2,0x9eb3,0x9eb4, - 0x9eb5,0x9eb6,0x9eb7,0x9eb8,0x9eb9,0x9eba,0x9ebb,0x9ebc,0x9ebd,0x9ebe, - 0x9ebf,0x9ec0,0x9ec1,0x9ec2,0x9ec3,0x9ec4,0x9ec5,0x9ec6,0x9ec7,0x9ec8, - 0x9ec9,0x9eca,0x9ecb,0x9ecc,0x9ecd,0x9ece,0x9ecf,0x9ed0,0x9ed1,0x9ed2, - 0x9ed3,0x9ed4,0x9ed5,0x9ed6,0x9ed7,0x9ed8,0x9ed9,0x9eda,0x9edb,0x9edc, - 0x9edd,0x9ede,0x9edf,0x9ee0,0x9ee1,0x9ee2,0x9ee3,0x9ee4,0x9ee5,0x9ee6, - 0x9ee7,0x9ee8,0x9ee9,0x9eea,0x9eeb,0x9eec,0x9eed,0x9eee,0x9eef,0x9ef0, - 0x9ef1,0x9ef2,0x9ef3,0x9ef4,0x9ef5,0x9ef6,0x9ef7,0x9ef8,0x9ef9,0x9efa, - 0x9efb,0x9efc,0x9efd,0x9efe,0x9eff,0x9f00,0x9f01,0x9f02,0x9f03,0x9f04, - 0x9f05,0x9f06,0x9f07,0x9f08,0x9f09,0x9f0a,0x9f0b,0x9f0c,0x9f0d,0x9f0e, - 0x9f0f,0x9f10,0x9f11,0x9f12,0x9f13,0x9f14,0x9f15,0x9f16,0x9f17,0x9f18, - 0x9f19,0x9f1a,0x9f1b,0x9f1c,0x9f1d,0x9f1e,0x9f1f,0x9f20,0x9f21,0x9f22, - 0x9f23,0x9f24,0x9f25,0x9f26,0x9f27,0x9f28,0x9f29,0x9f2a,0x9f2b,0x9f2c, - 0x9f2d,0x9f2e,0x9f2f,0x9f30,0x9f31,0x9f32,0x9f33,0x9f34,0x9f35,0x9f36, - 0x9f37,0x9f38,0x9f39,0x9f3a,0x9f3b,0x9f3c,0x9f3d,0x9f3e,0x9f3f,0x9f40, - 0x9f41,0x9f42,0x9f43,0x9f44,0x9f45,0x9f46,0x9f47,0x9f48,0x9f49,0x9f4a, - 0x9f4b,0x9f4c,0x9f4d,0x9f4e,0x9f4f,0x9f50,0x9f51,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,0x9f79,0x9f7a,0x9f7b,0x9f7c, - 0x9f7d,0x9f7e,0x9f7f,0x9f80,0x9f81,0x9f82,0x9f83,0x9f84,0x9f85,0x9f86, - 0x9f87,0x9f88,0x9f89,0x9f8a,0x9f8b,0x9f8c,0x9f8d,0x9f8e,0x9f8f,0x9f90, - 0x9f91,0x9f92,0x9f93,0x9f94,0x9f95,0x9f96,0x9f97,0x9f98,0x9f99,0x9f9a, - 0x9f9b,0x9f9c,0x9f9d,0x9f9e,0x9f9f,0x9fa0,0x9fa1,0x9fa2,0x9fa3,0x9fa4, - 0x9fa5,0x9fa6,0x9fa7,0x9fa8,0x9fa9,0x9faa,0x9fab,0x9fac,0x9fad,0x9fae, - 0x9faf,0x9fb0,0x9fb1,0x9fb2,0x9fb3,0x9fb4,0x9fb5,0x9fb6,0x9fb7,0x9fb8, - 0x9fb9,0x9fba,0xa000,0xa001,0xa002,0xa003,0xa004,0xa005,0xa006,0xa007, - 0xa008,0xa009,0xa00a,0xa00b,0xa00c,0xa00d,0xa00e,0xa00f,0xa010,0xa011, - 0xa012,0xa013,0xa014,0xa015,0xa016,0xa017,0xa018,0xa019,0xa01a,0xa01b, - 0xa01c,0xa01d,0xa01e,0xa01f,0xa020,0xa021,0xa022,0xa023,0xa024,0xa025, - 0xa026,0xa027,0xa028,0xa029,0xa02a,0xa02b,0xa02c,0xa02d,0xa02e,0xa02f, - 0xa030,0xa031,0xa032,0xa033,0xa034,0xa035,0xa036,0xa037,0xa038,0xa039, - 0xa03a,0xa03b,0xa03c,0xa03d,0xa03e,0xa03f,0xa040,0xa041,0xa042,0xa043, - 0xa044,0xa045,0xa046,0xa047,0xa048,0xa049,0xa04a,0xa04b,0xa04c,0xa04d, - 0xa04e,0xa04f,0xa050,0xa051,0xa052,0xa053,0xa054,0xa055,0xa056,0xa057, - 0xa058,0xa059,0xa05a,0xa05b,0xa05c,0xa05d,0xa05e,0xa05f,0xa060,0xa061, - 0xa062,0xa063,0xa064,0xa065,0xa066,0xa067,0xa068,0xa069,0xa06a,0xa06b, - 0xa06c,0xa06d,0xa06e,0xa06f,0xa070,0xa071,0xa072,0xa073,0xa074,0xa075, - 0xa076,0xa077,0xa078,0xa079,0xa07a,0xa07b,0xa07c,0xa07d,0xa07e,0xa07f, - 0xa080,0xa081,0xa082,0xa083,0xa084,0xa085,0xa086,0xa087,0xa088,0xa089, - 0xa08a,0xa08b,0xa08c,0xa08d,0xa08e,0xa08f,0xa090,0xa091,0xa092,0xa093, - 0xa094,0xa095,0xa096,0xa097,0xa098,0xa099,0xa09a,0xa09b,0xa09c,0xa09d, - 0xa09e,0xa09f,0xa0a0,0xa0a1,0xa0a2,0xa0a3,0xa0a4,0xa0a5,0xa0a6,0xa0a7, - 0xa0a8,0xa0a9,0xa0aa,0xa0ab,0xa0ac,0xa0ad,0xa0ae,0xa0af,0xa0b0,0xa0b1, - 0xa0b2,0xa0b3,0xa0b4,0xa0b5,0xa0b6,0xa0b7,0xa0b8,0xa0b9,0xa0ba,0xa0bb, - 0xa0bc,0xa0bd,0xa0be,0xa0bf,0xa0c0,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,0xa0dc,0xa0dd,0xa0de,0xa0df,0xa0e0,0xa0e1,0xa0e2,0xa0e3, - 0xa0e4,0xa0e5,0xa0e6,0xa0e7,0xa0e8,0xa0e9,0xa0ea,0xa0eb,0xa0ec,0xa0ed, - 0xa0ee,0xa0ef,0xa0f0,0xa0f1,0xa0f2,0xa0f3,0xa0f4,0xa0f5,0xa0f6,0xa0f7, - 0xa0f8,0xa0f9,0xa0fa,0xa0fb,0xa0fc,0xa0fd,0xa0fe,0xa0ff,0xa100,0xa101, - 0xa102,0xa103,0xa104,0xa105,0xa106,0xa107,0xa108,0xa109,0xa10a,0xa10b, - 0xa10c,0xa10d,0xa10e,0xa10f,0xa110,0xa111,0xa112,0xa113,0xa114,0xa115, - 0xa116,0xa117,0xa118,0xa119,0xa11a,0xa11b,0xa11c,0xa11d,0xa11e,0xa11f, - 0xa120,0xa121,0xa122,0xa123,0xa124,0xa125,0xa126,0xa127,0xa128,0xa129, - 0xa12a,0xa12b,0xa12c,0xa12d,0xa12e,0xa12f,0xa130,0xa131,0xa132,0xa133, - 0xa134,0xa135,0xa136,0xa137,0xa138,0xa139,0xa13a,0xa13b,0xa13c,0xa13d, - 0xa13e,0xa13f,0xa140,0xa141,0xa142,0xa143,0xa144,0xa145,0xa146,0xa147, - 0xa148,0xa149,0xa14a,0xa14b,0xa14c,0xa14d,0xa14e,0xa14f,0xa150,0xa151, - 0xa152,0xa153,0xa154,0xa155,0xa156,0xa157,0xa158,0xa159,0xa15a,0xa15b, - 0xa15c,0xa15d,0xa15e,0xa15f,0xa160,0xa161,0xa162,0xa163,0xa164,0xa165, - 0xa166,0xa167,0xa168,0xa169,0xa16a,0xa16b,0xa16c,0xa16d,0xa16e,0xa16f, - 0xa170,0xa171,0xa172,0xa173,0xa174,0xa175,0xa176,0xa177,0xa178,0xa179, - 0xa17a,0xa17b,0xa17c,0xa17d,0xa17e,0xa17f,0xa180,0xa181,0xa182,0xa183, - 0xa184,0xa185,0xa186,0xa187,0xa188,0xa189,0xa18a,0xa18b,0xa18c,0xa18d, - 0xa18e,0xa18f,0xa190,0xa191,0xa192,0xa193,0xa194,0xa195,0xa196,0xa197, - 0xa198,0xa199,0xa19a,0xa19b,0xa19c,0xa19d,0xa19e,0xa19f,0xa1a0,0xa1a1, - 0xa1a2,0xa1a3,0xa1a4,0xa1a5,0xa1a6,0xa1a7,0xa1a8,0xa1a9,0xa1aa,0xa1ab, - 0xa1ac,0xa1ad,0xa1ae,0xa1af,0xa1b0,0xa1b1,0xa1b2,0xa1b3,0xa1b4,0xa1b5, - 0xa1b6,0xa1b7,0xa1b8,0xa1b9,0xa1ba,0xa1bb,0xa1bc,0xa1bd,0xa1be,0xa1bf, - 0xa1c0,0xa1c1,0xa1c2,0xa1c3,0xa1c4,0xa1c5,0xa1c6,0xa1c7,0xa1c8,0xa1c9, - 0xa1ca,0xa1cb,0xa1cc,0xa1cd,0xa1ce,0xa1cf,0xa1d0,0xa1d1,0xa1d2,0xa1d3, - 0xa1d4,0xa1d5,0xa1d6,0xa1d7,0xa1d8,0xa1d9,0xa1da,0xa1db,0xa1dc,0xa1dd, - 0xa1de,0xa1df,0xa1e0,0xa1e1,0xa1e2,0xa1e3,0xa1e4,0xa1e5,0xa1e6,0xa1e7, - 0xa1e8,0xa1e9,0xa1ea,0xa1eb,0xa1ec,0xa1ed,0xa1ee,0xa1ef,0xa1f0,0xa1f1, - 0xa1f2,0xa1f3,0xa1f4,0xa1f5,0xa1f6,0xa1f7,0xa1f8,0xa1f9,0xa1fa,0xa1fb, - 0xa1fc,0xa1fd,0xa1fe,0xa1ff,0xa200,0xa201,0xa202,0xa203,0xa204,0xa205, - 0xa206,0xa207,0xa208,0xa209,0xa20a,0xa20b,0xa20c,0xa20d,0xa20e,0xa20f, - 0xa210,0xa211,0xa212,0xa213,0xa214,0xa215,0xa216,0xa217,0xa218,0xa219, - 0xa21a,0xa21b,0xa21c,0xa21d,0xa21e,0xa21f,0xa220,0xa221,0xa222,0xa223, - 0xa224,0xa225,0xa226,0xa227,0xa228,0xa229,0xa22a,0xa22b,0xa22c,0xa22d, - 0xa22e,0xa22f,0xa230,0xa231,0xa232,0xa233,0xa234,0xa235,0xa236,0xa237, - 0xa238,0xa239,0xa23a,0xa23b,0xa23c,0xa23d,0xa23e,0xa23f,0xa240,0xa241, - 0xa242,0xa243,0xa244,0xa245,0xa246,0xa247,0xa248,0xa249,0xa24a,0xa24b, - 0xa24c,0xa24d,0xa24e,0xa24f,0xa250,0xa251,0xa252,0xa253,0xa254,0xa255, - 0xa256,0xa257,0xa258,0xa259,0xa25a,0xa25b,0xa25c,0xa25d,0xa25e,0xa25f, - 0xa260,0xa261,0xa262,0xa263,0xa264,0xa265,0xa266,0xa267,0xa268,0xa269, - 0xa26a,0xa26b,0xa26c,0xa26d,0xa26e,0xa26f,0xa270,0xa271,0xa272,0xa273, - 0xa274,0xa275,0xa276,0xa277,0xa278,0xa279,0xa27a,0xa27b,0xa27c,0xa27d, - 0xa27e,0xa27f,0xa280,0xa281,0xa282,0xa283,0xa284,0xa285,0xa286,0xa287, - 0xa288,0xa289,0xa28a,0xa28b,0xa28c,0xa28d,0xa28e,0xa28f,0xa290,0xa291, - 0xa292,0xa293,0xa294,0xa295,0xa296,0xa297,0xa298,0xa299,0xa29a,0xa29b, - 0xa29c,0xa29d,0xa29e,0xa29f,0xa2a0,0xa2a1,0xa2a2,0xa2a3,0xa2a4,0xa2a5, - 0xa2a6,0xa2a7,0xa2a8,0xa2a9,0xa2aa,0xa2ab,0xa2ac,0xa2ad,0xa2ae,0xa2af, - 0xa2b0,0xa2b1,0xa2b2,0xa2b3,0xa2b4,0xa2b5,0xa2b6,0xa2b7,0xa2b8,0xa2b9, - 0xa2ba,0xa2bb,0xa2bc,0xa2bd,0xa2be,0xa2bf,0xa2c0,0xa2c1,0xa2c2,0xa2c3, - 0xa2c4,0xa2c5,0xa2c6,0xa2c7,0xa2c8,0xa2c9,0xa2ca,0xa2cb,0xa2cc,0xa2cd, - 0xa2ce,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,0xa2e9,0xa2ea,0xa2eb, - 0xa2ec,0xa2ed,0xa2ee,0xa2ef,0xa2f0,0xa2f1,0xa2f2,0xa2f3,0xa2f4,0xa2f5, - 0xa2f6,0xa2f7,0xa2f8,0xa2f9,0xa2fa,0xa2fb,0xa2fc,0xa2fd,0xa2fe,0xa2ff, - 0xa300,0xa301,0xa302,0xa303,0xa304,0xa305,0xa306,0xa307,0xa308,0xa309, - 0xa30a,0xa30b,0xa30c,0xa30d,0xa30e,0xa30f,0xa310,0xa311,0xa312,0xa313, - 0xa314,0xa315,0xa316,0xa317,0xa318,0xa319,0xa31a,0xa31b,0xa31c,0xa31d, - 0xa31e,0xa31f,0xa320,0xa321,0xa322,0xa323,0xa324,0xa325,0xa326,0xa327, - 0xa328,0xa329,0xa32a,0xa32b,0xa32c,0xa32d,0xa32e,0xa32f,0xa330,0xa331, - 0xa332,0xa333,0xa334,0xa335,0xa336,0xa337,0xa338,0xa339,0xa33a,0xa33b, - 0xa33c,0xa33d,0xa33e,0xa33f,0xa340,0xa341,0xa342,0xa343,0xa344,0xa345, - 0xa346,0xa347,0xa348,0xa349,0xa34a,0xa34b,0xa34c,0xa34d,0xa34e,0xa34f, - 0xa350,0xa351,0xa352,0xa353,0xa354,0xa355,0xa356,0xa357,0xa358,0xa359, - 0xa35a,0xa35b,0xa35c,0xa35d,0xa35e,0xa35f,0xa360,0xa361,0xa362,0xa363, - 0xa364,0xa365,0xa366,0xa367,0xa368,0xa369,0xa36a,0xa36b,0xa36c,0xa36d, - 0xa36e,0xa36f,0xa370,0xa371,0xa372,0xa373,0xa374,0xa375,0xa376,0xa377, - 0xa378,0xa379,0xa37a,0xa37b,0xa37c,0xa37d,0xa37e,0xa37f,0xa380,0xa381, - 0xa382,0xa383,0xa384,0xa385,0xa386,0xa387,0xa388,0xa389,0xa38a,0xa38b, - 0xa38c,0xa38d,0xa38e,0xa38f,0xa390,0xa391,0xa392,0xa393,0xa394,0xa395, - 0xa396,0xa397,0xa398,0xa399,0xa39a,0xa39b,0xa39c,0xa39d,0xa39e,0xa39f, - 0xa3a0,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, - 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,0xa3fe,0xa3ff,0xa400,0xa401,0xa402,0xa403, - 0xa404,0xa405,0xa406,0xa407,0xa408,0xa409,0xa40a,0xa40b,0xa40c,0xa40d, - 0xa40e,0xa40f,0xa410,0xa411,0xa412,0xa413,0xa414,0xa415,0xa416,0xa417, - 0xa418,0xa419,0xa41a,0xa41b,0xa41c,0xa41d,0xa41e,0xa41f,0xa420,0xa421, - 0xa422,0xa423,0xa424,0xa425,0xa426,0xa427,0xa428,0xa429,0xa42a,0xa42b, - 0xa42c,0xa42d,0xa42e,0xa42f,0xa430,0xa431,0xa432,0xa433,0xa434,0xa435, - 0xa436,0xa437,0xa438,0xa439,0xa43a,0xa43b,0xa43c,0xa43d,0xa43e,0xa43f, - 0xa440,0xa441,0xa442,0xa443,0xa444,0xa445,0xa446,0xa447,0xa448,0xa449, - 0xa44a,0xa44b,0xa44c,0xa44d,0xa44e,0xa44f,0xa450,0xa451,0xa452,0xa453, - 0xa454,0xa455,0xa456,0xa457,0xa458,0xa459,0xa45a,0xa45b,0xa45c,0xa45d, - 0xa45e,0xa45f,0xa460,0xa461,0xa462,0xa463,0xa464,0xa465,0xa466,0xa467, - 0xa468,0xa469,0xa46a,0xa46b,0xa46c,0xa46d,0xa46e,0xa46f,0xa470,0xa471, - 0xa472,0xa473,0xa474,0xa475,0xa476,0xa477,0xa478,0xa479,0xa47a,0xa47b, - 0xa47c,0xa47d,0xa47e,0xa47f,0xa480,0xa481,0xa482,0xa483,0xa484,0xa485, - 0xa486,0xa487,0xa488,0xa489,0xa48a,0xa48b,0xa48c,0xa490,0xa491,0xa492, - 0xa493,0xa494,0xa495,0xa496,0xa497,0xa498,0xa499,0xa49a,0xa49b,0xa49c, - 0xa49d,0xa49e,0xa49f,0xa4a0,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,0xac00,0xac01,0xac02,0xac03,0xac04,0xac05,0xac06,0xac07, - 0xac08,0xac09,0xac0a,0xac0b,0xac0c,0xac0d,0xac0e,0xac0f,0xac10,0xac11, - 0xac12,0xac13,0xac14,0xac15,0xac16,0xac17,0xac18,0xac19,0xac1a,0xac1b, - 0xac1c,0xac1d,0xac1e,0xac1f,0xac20,0xac21,0xac22,0xac23,0xac24,0xac25, - 0xac26,0xac27,0xac28,0xac29,0xac2a,0xac2b,0xac2c,0xac2d,0xac2e,0xac2f, - 0xac30,0xac31,0xac32,0xac33,0xac34,0xac35,0xac36,0xac37,0xac38,0xac39, - 0xac3a,0xac3b,0xac3c,0xac3d,0xac3e,0xac3f,0xac40,0xac41,0xac42,0xac43, - 0xac44,0xac45,0xac46,0xac47,0xac48,0xac49,0xac4a,0xac4b,0xac4c,0xac4d, - 0xac4e,0xac4f,0xac50,0xac51,0xac52,0xac53,0xac54,0xac55,0xac56,0xac57, - 0xac58,0xac59,0xac5a,0xac5b,0xac5c,0xac5d,0xac5e,0xac5f,0xac60,0xac61, - 0xac62,0xac63,0xac64,0xac65,0xac66,0xac67,0xac68,0xac69,0xac6a,0xac6b, - 0xac6c,0xac6d,0xac6e,0xac6f,0xac70,0xac71,0xac72,0xac73,0xac74,0xac75, - 0xac76,0xac77,0xac78,0xac79,0xac7a,0xac7b,0xac7c,0xac7d,0xac7e,0xac7f, - 0xac80,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, - 0xac9e,0xac9f,0xaca0,0xaca1,0xaca2,0xaca3,0xaca4,0xaca5,0xaca6,0xaca7, - 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,0xacc2,0xacc3,0xacc4,0xacc5, - 0xacc6,0xacc7,0xacc8,0xacc9,0xacca,0xaccb,0xaccc,0xaccd,0xacce,0xaccf, - 0xacd0,0xacd1,0xacd2,0xacd3,0xacd4,0xacd5,0xacd6,0xacd7,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,0xacf2,0xacf3,0xacf4,0xacf5,0xacf6,0xacf7, - 0xacf8,0xacf9,0xacfa,0xacfb,0xacfc,0xacfd,0xacfe,0xacff,0xad00,0xad01, - 0xad02,0xad03,0xad04,0xad05,0xad06,0xad07,0xad08,0xad09,0xad0a,0xad0b, - 0xad0c,0xad0d,0xad0e,0xad0f,0xad10,0xad11,0xad12,0xad13,0xad14,0xad15, - 0xad16,0xad17,0xad18,0xad19,0xad1a,0xad1b,0xad1c,0xad1d,0xad1e,0xad1f, - 0xad20,0xad21,0xad22,0xad23,0xad24,0xad25,0xad26,0xad27,0xad28,0xad29, - 0xad2a,0xad2b,0xad2c,0xad2d,0xad2e,0xad2f,0xad30,0xad31,0xad32,0xad33, - 0xad34,0xad35,0xad36,0xad37,0xad38,0xad39,0xad3a,0xad3b,0xad3c,0xad3d, - 0xad3e,0xad3f,0xad40,0xad41,0xad42,0xad43,0xad44,0xad45,0xad46,0xad47, - 0xad48,0xad49,0xad4a,0xad4b,0xad4c,0xad4d,0xad4e,0xad4f,0xad50,0xad51, - 0xad52,0xad53,0xad54,0xad55,0xad56,0xad57,0xad58,0xad59,0xad5a,0xad5b, - 0xad5c,0xad5d,0xad5e,0xad5f,0xad60,0xad61,0xad62,0xad63,0xad64,0xad65, - 0xad66,0xad67,0xad68,0xad69,0xad6a,0xad6b,0xad6c,0xad6d,0xad6e,0xad6f, - 0xad70,0xad71,0xad72,0xad73,0xad74,0xad75,0xad76,0xad77,0xad78,0xad79, - 0xad7a,0xad7b,0xad7c,0xad7d,0xad7e,0xad7f,0xad80,0xad81,0xad82,0xad83, - 0xad84,0xad85,0xad86,0xad87,0xad88,0xad89,0xad8a,0xad8b,0xad8c,0xad8d, - 0xad8e,0xad8f,0xad90,0xad91,0xad92,0xad93,0xad94,0xad95,0xad96,0xad97, - 0xad98,0xad99,0xad9a,0xad9b,0xad9c,0xad9d,0xad9e,0xad9f,0xada0,0xada1, - 0xada2,0xada3,0xada4,0xada5,0xada6,0xada7,0xada8,0xada9,0xadaa,0xadab, - 0xadac,0xadad,0xadae,0xadaf,0xadb0,0xadb1,0xadb2,0xadb3,0xadb4,0xadb5, - 0xadb6,0xadb7,0xadb8,0xadb9,0xadba,0xadbb,0xadbc,0xadbd,0xadbe,0xadbf, - 0xadc0,0xadc1,0xadc2,0xadc3,0xadc4,0xadc5,0xadc6,0xadc7,0xadc8,0xadc9, - 0xadca,0xadcb,0xadcc,0xadcd,0xadce,0xadcf,0xadd0,0xadd1,0xadd2,0xadd3, - 0xadd4,0xadd5,0xadd6,0xadd7,0xadd8,0xadd9,0xadda,0xaddb,0xaddc,0xaddd, - 0xadde,0xaddf,0xade0,0xade1,0xade2,0xade3,0xade4,0xade5,0xade6,0xade7, - 0xade8,0xade9,0xadea,0xadeb,0xadec,0xaded,0xadee,0xadef,0xadf0,0xadf1, - 0xadf2,0xadf3,0xadf4,0xadf5,0xadf6,0xadf7,0xadf8,0xadf9,0xadfa,0xadfb, - 0xadfc,0xadfd,0xadfe,0xadff,0xae00,0xae01,0xae02,0xae03,0xae04,0xae05, - 0xae06,0xae07,0xae08,0xae09,0xae0a,0xae0b,0xae0c,0xae0d,0xae0e,0xae0f, - 0xae10,0xae11,0xae12,0xae13,0xae14,0xae15,0xae16,0xae17,0xae18,0xae19, - 0xae1a,0xae1b,0xae1c,0xae1d,0xae1e,0xae1f,0xae20,0xae21,0xae22,0xae23, - 0xae24,0xae25,0xae26,0xae27,0xae28,0xae29,0xae2a,0xae2b,0xae2c,0xae2d, - 0xae2e,0xae2f,0xae30,0xae31,0xae32,0xae33,0xae34,0xae35,0xae36,0xae37, - 0xae38,0xae39,0xae3a,0xae3b,0xae3c,0xae3d,0xae3e,0xae3f,0xae40,0xae41, - 0xae42,0xae43,0xae44,0xae45,0xae46,0xae47,0xae48,0xae49,0xae4a,0xae4b, - 0xae4c,0xae4d,0xae4e,0xae4f,0xae50,0xae51,0xae52,0xae53,0xae54,0xae55, - 0xae56,0xae57,0xae58,0xae59,0xae5a,0xae5b,0xae5c,0xae5d,0xae5e,0xae5f, - 0xae60,0xae61,0xae62,0xae63,0xae64,0xae65,0xae66,0xae67,0xae68,0xae69, - 0xae6a,0xae6b,0xae6c,0xae6d,0xae6e,0xae6f,0xae70,0xae71,0xae72,0xae73, - 0xae74,0xae75,0xae76,0xae77,0xae78,0xae79,0xae7a,0xae7b,0xae7c,0xae7d, - 0xae7e,0xae7f,0xae80,0xae81,0xae82,0xae83,0xae84,0xae85,0xae86,0xae87, - 0xae88,0xae89,0xae8a,0xae8b,0xae8c,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,0xaebc,0xaebd,0xaebe,0xaebf,0xaec0,0xaec1,0xaec2,0xaec3, - 0xaec4,0xaec5,0xaec6,0xaec7,0xaec8,0xaec9,0xaeca,0xaecb,0xaecc,0xaecd, - 0xaece,0xaecf,0xaed0,0xaed1,0xaed2,0xaed3,0xaed4,0xaed5,0xaed6,0xaed7, - 0xaed8,0xaed9,0xaeda,0xaedb,0xaedc,0xaedd,0xaede,0xaedf,0xaee0,0xaee1, - 0xaee2,0xaee3,0xaee4,0xaee5,0xaee6,0xaee7,0xaee8,0xaee9,0xaeea,0xaeeb, - 0xaeec,0xaeed,0xaeee,0xaeef,0xaef0,0xaef1,0xaef2,0xaef3,0xaef4,0xaef5, - 0xaef6,0xaef7,0xaef8,0xaef9,0xaefa,0xaefb,0xaefc,0xaefd,0xaefe,0xaeff, - 0xaf00,0xaf01,0xaf02,0xaf03,0xaf04,0xaf05,0xaf06,0xaf07,0xaf08,0xaf09, - 0xaf0a,0xaf0b,0xaf0c,0xaf0d,0xaf0e,0xaf0f,0xaf10,0xaf11,0xaf12,0xaf13, - 0xaf14,0xaf15,0xaf16,0xaf17,0xaf18,0xaf19,0xaf1a,0xaf1b,0xaf1c,0xaf1d, - 0xaf1e,0xaf1f,0xaf20,0xaf21,0xaf22,0xaf23,0xaf24,0xaf25,0xaf26,0xaf27, - 0xaf28,0xaf29,0xaf2a,0xaf2b,0xaf2c,0xaf2d,0xaf2e,0xaf2f,0xaf30,0xaf31, - 0xaf32,0xaf33,0xaf34,0xaf35,0xaf36,0xaf37,0xaf38,0xaf39,0xaf3a,0xaf3b, - 0xaf3c,0xaf3d,0xaf3e,0xaf3f,0xaf40,0xaf41,0xaf42,0xaf43,0xaf44,0xaf45, - 0xaf46,0xaf47,0xaf48,0xaf49,0xaf4a,0xaf4b,0xaf4c,0xaf4d,0xaf4e,0xaf4f, - 0xaf50,0xaf51,0xaf52,0xaf53,0xaf54,0xaf55,0xaf56,0xaf57,0xaf58,0xaf59, - 0xaf5a,0xaf5b,0xaf5c,0xaf5d,0xaf5e,0xaf5f,0xaf60,0xaf61,0xaf62,0xaf63, - 0xaf64,0xaf65,0xaf66,0xaf67,0xaf68,0xaf69,0xaf6a,0xaf6b,0xaf6c,0xaf6d, - 0xaf6e,0xaf6f,0xaf70,0xaf71,0xaf72,0xaf73,0xaf74,0xaf75,0xaf76,0xaf77, - 0xaf78,0xaf79,0xaf7a,0xaf7b,0xaf7c,0xaf7d,0xaf7e,0xaf7f,0xaf80,0xaf81, - 0xaf82,0xaf83,0xaf84,0xaf85,0xaf86,0xaf87,0xaf88,0xaf89,0xaf8a,0xaf8b, - 0xaf8c,0xaf8d,0xaf8e,0xaf8f,0xaf90,0xaf91,0xaf92,0xaf93,0xaf94,0xaf95, - 0xaf96,0xaf97,0xaf98,0xaf99,0xaf9a,0xaf9b,0xaf9c,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,0xafb8,0xafb9,0xafba,0xafbb,0xafbc,0xafbd, - 0xafbe,0xafbf,0xafc0,0xafc1,0xafc2,0xafc3,0xafc4,0xafc5,0xafc6,0xafc7, - 0xafc8,0xafc9,0xafca,0xafcb,0xafcc,0xafcd,0xafce,0xafcf,0xafd0,0xafd1, - 0xafd2,0xafd3,0xafd4,0xafd5,0xafd6,0xafd7,0xafd8,0xafd9,0xafda,0xafdb, - 0xafdc,0xafdd,0xafde,0xafdf,0xafe0,0xafe1,0xafe2,0xafe3,0xafe4,0xafe5, - 0xafe6,0xafe7,0xafe8,0xafe9,0xafea,0xafeb,0xafec,0xafed,0xafee,0xafef, - 0xaff0,0xaff1,0xaff2,0xaff3,0xaff4,0xaff5,0xaff6,0xaff7,0xaff8,0xaff9, - 0xaffa,0xaffb,0xaffc,0xaffd,0xaffe,0xafff,0xb000,0xb001,0xb002,0xb003, - 0xb004,0xb005,0xb006,0xb007,0xb008,0xb009,0xb00a,0xb00b,0xb00c,0xb00d, - 0xb00e,0xb00f,0xb010,0xb011,0xb012,0xb013,0xb014,0xb015,0xb016,0xb017, - 0xb018,0xb019,0xb01a,0xb01b,0xb01c,0xb01d,0xb01e,0xb01f,0xb020,0xb021, - 0xb022,0xb023,0xb024,0xb025,0xb026,0xb027,0xb028,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,0xb044,0xb045,0xb046,0xb047,0xb048,0xb049, - 0xb04a,0xb04b,0xb04c,0xb04d,0xb04e,0xb04f,0xb050,0xb051,0xb052,0xb053, - 0xb054,0xb055,0xb056,0xb057,0xb058,0xb059,0xb05a,0xb05b,0xb05c,0xb05d, - 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, - 0xb07c,0xb07d,0xb07e,0xb07f,0xb080,0xb081,0xb082,0xb083,0xb084,0xb085, - 0xb086,0xb087,0xb088,0xb089,0xb08a,0xb08b,0xb08c,0xb08d,0xb08e,0xb08f, - 0xb090,0xb091,0xb092,0xb093,0xb094,0xb095,0xb096,0xb097,0xb098,0xb099, - 0xb09a,0xb09b,0xb09c,0xb09d,0xb09e,0xb09f,0xb0a0,0xb0a1,0xb0a2,0xb0a3, - 0xb0a4,0xb0a5,0xb0a6,0xb0a7,0xb0a8,0xb0a9,0xb0aa,0xb0ab,0xb0ac,0xb0ad, - 0xb0ae,0xb0af,0xb0b0,0xb0b1,0xb0b2,0xb0b3,0xb0b4,0xb0b5,0xb0b6,0xb0b7, - 0xb0b8,0xb0b9,0xb0ba,0xb0bb,0xb0bc,0xb0bd,0xb0be,0xb0bf,0xb0c0,0xb0c1, - 0xb0c2,0xb0c3,0xb0c4,0xb0c5,0xb0c6,0xb0c7,0xb0c8,0xb0c9,0xb0ca,0xb0cb, - 0xb0cc,0xb0cd,0xb0ce,0xb0cf,0xb0d0,0xb0d1,0xb0d2,0xb0d3,0xb0d4,0xb0d5, - 0xb0d6,0xb0d7,0xb0d8,0xb0d9,0xb0da,0xb0db,0xb0dc,0xb0dd,0xb0de,0xb0df, - 0xb0e0,0xb0e1,0xb0e2,0xb0e3,0xb0e4,0xb0e5,0xb0e6,0xb0e7,0xb0e8,0xb0e9, - 0xb0ea,0xb0eb,0xb0ec,0xb0ed,0xb0ee,0xb0ef,0xb0f0,0xb0f1,0xb0f2,0xb0f3, - 0xb0f4,0xb0f5,0xb0f6,0xb0f7,0xb0f8,0xb0f9,0xb0fa,0xb0fb,0xb0fc,0xb0fd, - 0xb0fe,0xb0ff,0xb100,0xb101,0xb102,0xb103,0xb104,0xb105,0xb106,0xb107, - 0xb108,0xb109,0xb10a,0xb10b,0xb10c,0xb10d,0xb10e,0xb10f,0xb110,0xb111, - 0xb112,0xb113,0xb114,0xb115,0xb116,0xb117,0xb118,0xb119,0xb11a,0xb11b, - 0xb11c,0xb11d,0xb11e,0xb11f,0xb120,0xb121,0xb122,0xb123,0xb124,0xb125, - 0xb126,0xb127,0xb128,0xb129,0xb12a,0xb12b,0xb12c,0xb12d,0xb12e,0xb12f, - 0xb130,0xb131,0xb132,0xb133,0xb134,0xb135,0xb136,0xb137,0xb138,0xb139, - 0xb13a,0xb13b,0xb13c,0xb13d,0xb13e,0xb13f,0xb140,0xb141,0xb142,0xb143, - 0xb144,0xb145,0xb146,0xb147,0xb148,0xb149,0xb14a,0xb14b,0xb14c,0xb14d, - 0xb14e,0xb14f,0xb150,0xb151,0xb152,0xb153,0xb154,0xb155,0xb156,0xb157, - 0xb158,0xb159,0xb15a,0xb15b,0xb15c,0xb15d,0xb15e,0xb15f,0xb160,0xb161, - 0xb162,0xb163,0xb164,0xb165,0xb166,0xb167,0xb168,0xb169,0xb16a,0xb16b, - 0xb16c,0xb16d,0xb16e,0xb16f,0xb170,0xb171,0xb172,0xb173,0xb174,0xb175, - 0xb176,0xb177,0xb178,0xb179,0xb17a,0xb17b,0xb17c,0xb17d,0xb17e,0xb17f, - 0xb180,0xb181,0xb182,0xb183,0xb184,0xb185,0xb186,0xb187,0xb188,0xb189, - 0xb18a,0xb18b,0xb18c,0xb18d,0xb18e,0xb18f,0xb190,0xb191,0xb192,0xb193, - 0xb194,0xb195,0xb196,0xb197,0xb198,0xb199,0xb19a,0xb19b,0xb19c,0xb19d, - 0xb19e,0xb19f,0xb1a0,0xb1a1,0xb1a2,0xb1a3,0xb1a4,0xb1a5,0xb1a6,0xb1a7, - 0xb1a8,0xb1a9,0xb1aa,0xb1ab,0xb1ac,0xb1ad,0xb1ae,0xb1af,0xb1b0,0xb1b1, - 0xb1b2,0xb1b3,0xb1b4,0xb1b5,0xb1b6,0xb1b7,0xb1b8,0xb1b9,0xb1ba,0xb1bb, - 0xb1bc,0xb1bd,0xb1be,0xb1bf,0xb1c0,0xb1c1,0xb1c2,0xb1c3,0xb1c4,0xb1c5, - 0xb1c6,0xb1c7,0xb1c8,0xb1c9,0xb1ca,0xb1cb,0xb1cc,0xb1cd,0xb1ce,0xb1cf, - 0xb1d0,0xb1d1,0xb1d2,0xb1d3,0xb1d4,0xb1d5,0xb1d6,0xb1d7,0xb1d8,0xb1d9, - 0xb1da,0xb1db,0xb1dc,0xb1dd,0xb1de,0xb1df,0xb1e0,0xb1e1,0xb1e2,0xb1e3, - 0xb1e4,0xb1e5,0xb1e6,0xb1e7,0xb1e8,0xb1e9,0xb1ea,0xb1eb,0xb1ec,0xb1ed, - 0xb1ee,0xb1ef,0xb1f0,0xb1f1,0xb1f2,0xb1f3,0xb1f4,0xb1f5,0xb1f6,0xb1f7, - 0xb1f8,0xb1f9,0xb1fa,0xb1fb,0xb1fc,0xb1fd,0xb1fe,0xb1ff,0xb200,0xb201, - 0xb202,0xb203,0xb204,0xb205,0xb206,0xb207,0xb208,0xb209,0xb20a,0xb20b, - 0xb20c,0xb20d,0xb20e,0xb20f,0xb210,0xb211,0xb212,0xb213,0xb214,0xb215, - 0xb216,0xb217,0xb218,0xb219,0xb21a,0xb21b,0xb21c,0xb21d,0xb21e,0xb21f, - 0xb220,0xb221,0xb222,0xb223,0xb224,0xb225,0xb226,0xb227,0xb228,0xb229, - 0xb22a,0xb22b,0xb22c,0xb22d,0xb22e,0xb22f,0xb230,0xb231,0xb232,0xb233, - 0xb234,0xb235,0xb236,0xb237,0xb238,0xb239,0xb23a,0xb23b,0xb23c,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,0xb258,0xb259,0xb25a,0xb25b, - 0xb25c,0xb25d,0xb25e,0xb25f,0xb260,0xb261,0xb262,0xb263,0xb264,0xb265, - 0xb266,0xb267,0xb268,0xb269,0xb26a,0xb26b,0xb26c,0xb26d,0xb26e,0xb26f, - 0xb270,0xb271,0xb272,0xb273,0xb274,0xb275,0xb276,0xb277,0xb278,0xb279, - 0xb27a,0xb27b,0xb27c,0xb27d,0xb27e,0xb27f,0xb280,0xb281,0xb282,0xb283, - 0xb284,0xb285,0xb286,0xb287,0xb288,0xb289,0xb28a,0xb28b,0xb28c,0xb28d, - 0xb28e,0xb28f,0xb290,0xb291,0xb292,0xb293,0xb294,0xb295,0xb296,0xb297, - 0xb298,0xb299,0xb29a,0xb29b,0xb29c,0xb29d,0xb29e,0xb29f,0xb2a0,0xb2a1, - 0xb2a2,0xb2a3,0xb2a4,0xb2a5,0xb2a6,0xb2a7,0xb2a8,0xb2a9,0xb2aa,0xb2ab, - 0xb2ac,0xb2ad,0xb2ae,0xb2af,0xb2b0,0xb2b1,0xb2b2,0xb2b3,0xb2b4,0xb2b5, - 0xb2b6,0xb2b7,0xb2b8,0xb2b9,0xb2ba,0xb2bb,0xb2bc,0xb2bd,0xb2be,0xb2bf, - 0xb2c0,0xb2c1,0xb2c2,0xb2c3,0xb2c4,0xb2c5,0xb2c6,0xb2c7,0xb2c8,0xb2c9, - 0xb2ca,0xb2cb,0xb2cc,0xb2cd,0xb2ce,0xb2cf,0xb2d0,0xb2d1,0xb2d2,0xb2d3, - 0xb2d4,0xb2d5,0xb2d6,0xb2d7,0xb2d8,0xb2d9,0xb2da,0xb2db,0xb2dc,0xb2dd, - 0xb2de,0xb2df,0xb2e0,0xb2e1,0xb2e2,0xb2e3,0xb2e4,0xb2e5,0xb2e6,0xb2e7, - 0xb2e8,0xb2e9,0xb2ea,0xb2eb,0xb2ec,0xb2ed,0xb2ee,0xb2ef,0xb2f0,0xb2f1, - 0xb2f2,0xb2f3,0xb2f4,0xb2f5,0xb2f6,0xb2f7,0xb2f8,0xb2f9,0xb2fa,0xb2fb, - 0xb2fc,0xb2fd,0xb2fe,0xb2ff,0xb300,0xb301,0xb302,0xb303,0xb304,0xb305, - 0xb306,0xb307,0xb308,0xb309,0xb30a,0xb30b,0xb30c,0xb30d,0xb30e,0xb30f, - 0xb310,0xb311,0xb312,0xb313,0xb314,0xb315,0xb316,0xb317,0xb318,0xb319, - 0xb31a,0xb31b,0xb31c,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,0xb354,0xb355, - 0xb356,0xb357,0xb358,0xb359,0xb35a,0xb35b,0xb35c,0xb35d,0xb35e,0xb35f, - 0xb360,0xb361,0xb362,0xb363,0xb364,0xb365,0xb366,0xb367,0xb368,0xb369, - 0xb36a,0xb36b,0xb36c,0xb36d,0xb36e,0xb36f,0xb370,0xb371,0xb372,0xb373, - 0xb374,0xb375,0xb376,0xb377,0xb378,0xb379,0xb37a,0xb37b,0xb37c,0xb37d, - 0xb37e,0xb37f,0xb380,0xb381,0xb382,0xb383,0xb384,0xb385,0xb386,0xb387, - 0xb388,0xb389,0xb38a,0xb38b,0xb38c,0xb38d,0xb38e,0xb38f,0xb390,0xb391, - 0xb392,0xb393,0xb394,0xb395,0xb396,0xb397,0xb398,0xb399,0xb39a,0xb39b, - 0xb39c,0xb39d,0xb39e,0xb39f,0xb3a0,0xb3a1,0xb3a2,0xb3a3,0xb3a4,0xb3a5, - 0xb3a6,0xb3a7,0xb3a8,0xb3a9,0xb3aa,0xb3ab,0xb3ac,0xb3ad,0xb3ae,0xb3af, - 0xb3b0,0xb3b1,0xb3b2,0xb3b3,0xb3b4,0xb3b5,0xb3b6,0xb3b7,0xb3b8,0xb3b9, - 0xb3ba,0xb3bb,0xb3bc,0xb3bd,0xb3be,0xb3bf,0xb3c0,0xb3c1,0xb3c2,0xb3c3, - 0xb3c4,0xb3c5,0xb3c6,0xb3c7,0xb3c8,0xb3c9,0xb3ca,0xb3cb,0xb3cc,0xb3cd, - 0xb3ce,0xb3cf,0xb3d0,0xb3d1,0xb3d2,0xb3d3,0xb3d4,0xb3d5,0xb3d6,0xb3d7, - 0xb3d8,0xb3d9,0xb3da,0xb3db,0xb3dc,0xb3dd,0xb3de,0xb3df,0xb3e0,0xb3e1, - 0xb3e2,0xb3e3,0xb3e4,0xb3e5,0xb3e6,0xb3e7,0xb3e8,0xb3e9,0xb3ea,0xb3eb, - 0xb3ec,0xb3ed,0xb3ee,0xb3ef,0xb3f0,0xb3f1,0xb3f2,0xb3f3,0xb3f4,0xb3f5, - 0xb3f6,0xb3f7,0xb3f8,0xb3f9,0xb3fa,0xb3fb,0xb3fc,0xb3fd,0xb3fe,0xb3ff, - 0xb400,0xb401,0xb402,0xb403,0xb404,0xb405,0xb406,0xb407,0xb408,0xb409, - 0xb40a,0xb40b,0xb40c,0xb40d,0xb40e,0xb40f,0xb410,0xb411,0xb412,0xb413, - 0xb414,0xb415,0xb416,0xb417,0xb418,0xb419,0xb41a,0xb41b,0xb41c,0xb41d, - 0xb41e,0xb41f,0xb420,0xb421,0xb422,0xb423,0xb424,0xb425,0xb426,0xb427, - 0xb428,0xb429,0xb42a,0xb42b,0xb42c,0xb42d,0xb42e,0xb42f,0xb430,0xb431, - 0xb432,0xb433,0xb434,0xb435,0xb436,0xb437,0xb438,0xb439,0xb43a,0xb43b, - 0xb43c,0xb43d,0xb43e,0xb43f,0xb440,0xb441,0xb442,0xb443,0xb444,0xb445, - 0xb446,0xb447,0xb448,0xb449,0xb44a,0xb44b,0xb44c,0xb44d,0xb44e,0xb44f, - 0xb450,0xb451,0xb452,0xb453,0xb454,0xb455,0xb456,0xb457,0xb458,0xb459, - 0xb45a,0xb45b,0xb45c,0xb45d,0xb45e,0xb45f,0xb460,0xb461,0xb462,0xb463, - 0xb464,0xb465,0xb466,0xb467,0xb468,0xb469,0xb46a,0xb46b,0xb46c,0xb46d, - 0xb46e,0xb46f,0xb470,0xb471,0xb472,0xb473,0xb474,0xb475,0xb476,0xb477, - 0xb478,0xb479,0xb47a,0xb47b,0xb47c,0xb47d,0xb47e,0xb47f,0xb480,0xb481, - 0xb482,0xb483,0xb484,0xb485,0xb486,0xb487,0xb488,0xb489,0xb48a,0xb48b, - 0xb48c,0xb48d,0xb48e,0xb48f,0xb490,0xb491,0xb492,0xb493,0xb494,0xb495, - 0xb496,0xb497,0xb498,0xb499,0xb49a,0xb49b,0xb49c,0xb49d,0xb49e,0xb49f, - 0xb4a0,0xb4a1,0xb4a2,0xb4a3,0xb4a4,0xb4a5,0xb4a6,0xb4a7,0xb4a8,0xb4a9, - 0xb4aa,0xb4ab,0xb4ac,0xb4ad,0xb4ae,0xb4af,0xb4b0,0xb4b1,0xb4b2,0xb4b3, - 0xb4b4,0xb4b5,0xb4b6,0xb4b7,0xb4b8,0xb4b9,0xb4ba,0xb4bb,0xb4bc,0xb4bd, - 0xb4be,0xb4bf,0xb4c0,0xb4c1,0xb4c2,0xb4c3,0xb4c4,0xb4c5,0xb4c6,0xb4c7, - 0xb4c8,0xb4c9,0xb4ca,0xb4cb,0xb4cc,0xb4cd,0xb4ce,0xb4cf,0xb4d0,0xb4d1, - 0xb4d2,0xb4d3,0xb4d4,0xb4d5,0xb4d6,0xb4d7,0xb4d8,0xb4d9,0xb4da,0xb4db, - 0xb4dc,0xb4dd,0xb4de,0xb4df,0xb4e0,0xb4e1,0xb4e2,0xb4e3,0xb4e4,0xb4e5, - 0xb4e6,0xb4e7,0xb4e8,0xb4e9,0xb4ea,0xb4eb,0xb4ec,0xb4ed,0xb4ee,0xb4ef, - 0xb4f0,0xb4f1,0xb4f2,0xb4f3,0xb4f4,0xb4f5,0xb4f6,0xb4f7,0xb4f8,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,0xb514,0xb515,0xb516,0xb517, - 0xb518,0xb519,0xb51a,0xb51b,0xb51c,0xb51d,0xb51e,0xb51f,0xb520,0xb521, - 0xb522,0xb523,0xb524,0xb525,0xb526,0xb527,0xb528,0xb529,0xb52a,0xb52b, - 0xb52c,0xb52d,0xb52e,0xb52f,0xb530,0xb531,0xb532,0xb533,0xb534,0xb535, - 0xb536,0xb537,0xb538,0xb539,0xb53a,0xb53b,0xb53c,0xb53d,0xb53e,0xb53f, - 0xb540,0xb541,0xb542,0xb543,0xb544,0xb545,0xb546,0xb547,0xb548,0xb549, - 0xb54a,0xb54b,0xb54c,0xb54d,0xb54e,0xb54f,0xb550,0xb551,0xb552,0xb553, - 0xb554,0xb555,0xb556,0xb557,0xb558,0xb559,0xb55a,0xb55b,0xb55c,0xb55d, - 0xb55e,0xb55f,0xb560,0xb561,0xb562,0xb563,0xb564,0xb565,0xb566,0xb567, - 0xb568,0xb569,0xb56a,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,0xb5a0,0xb5a1,0xb5a2,0xb5a3, - 0xb5a4,0xb5a5,0xb5a6,0xb5a7,0xb5a8,0xb5a9,0xb5aa,0xb5ab,0xb5ac,0xb5ad, - 0xb5ae,0xb5af,0xb5b0,0xb5b1,0xb5b2,0xb5b3,0xb5b4,0xb5b5,0xb5b6,0xb5b7, - 0xb5b8,0xb5b9,0xb5ba,0xb5bb,0xb5bc,0xb5bd,0xb5be,0xb5bf,0xb5c0,0xb5c1, - 0xb5c2,0xb5c3,0xb5c4,0xb5c5,0xb5c6,0xb5c7,0xb5c8,0xb5c9,0xb5ca,0xb5cb, - 0xb5cc,0xb5cd,0xb5ce,0xb5cf,0xb5d0,0xb5d1,0xb5d2,0xb5d3,0xb5d4,0xb5d5, - 0xb5d6,0xb5d7,0xb5d8,0xb5d9,0xb5da,0xb5db,0xb5dc,0xb5dd,0xb5de,0xb5df, - 0xb5e0,0xb5e1,0xb5e2,0xb5e3,0xb5e4,0xb5e5,0xb5e6,0xb5e7,0xb5e8,0xb5e9, - 0xb5ea,0xb5eb,0xb5ec,0xb5ed,0xb5ee,0xb5ef,0xb5f0,0xb5f1,0xb5f2,0xb5f3, - 0xb5f4,0xb5f5,0xb5f6,0xb5f7,0xb5f8,0xb5f9,0xb5fa,0xb5fb,0xb5fc,0xb5fd, - 0xb5fe,0xb5ff,0xb600,0xb601,0xb602,0xb603,0xb604,0xb605,0xb606,0xb607, - 0xb608,0xb609,0xb60a,0xb60b,0xb60c,0xb60d,0xb60e,0xb60f,0xb610,0xb611, - 0xb612,0xb613,0xb614,0xb615,0xb616,0xb617,0xb618,0xb619,0xb61a,0xb61b, - 0xb61c,0xb61d,0xb61e,0xb61f,0xb620,0xb621,0xb622,0xb623,0xb624,0xb625, - 0xb626,0xb627,0xb628,0xb629,0xb62a,0xb62b,0xb62c,0xb62d,0xb62e,0xb62f, - 0xb630,0xb631,0xb632,0xb633,0xb634,0xb635,0xb636,0xb637,0xb638,0xb639, - 0xb63a,0xb63b,0xb63c,0xb63d,0xb63e,0xb63f,0xb640,0xb641,0xb642,0xb643, - 0xb644,0xb645,0xb646,0xb647,0xb648,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,0xb664,0xb665,0xb666,0xb667,0xb668,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,0xb69c,0xb69d, - 0xb69e,0xb69f,0xb6a0,0xb6a1,0xb6a2,0xb6a3,0xb6a4,0xb6a5,0xb6a6,0xb6a7, - 0xb6a8,0xb6a9,0xb6aa,0xb6ab,0xb6ac,0xb6ad,0xb6ae,0xb6af,0xb6b0,0xb6b1, - 0xb6b2,0xb6b3,0xb6b4,0xb6b5,0xb6b6,0xb6b7,0xb6b8,0xb6b9,0xb6ba,0xb6bb, - 0xb6bc,0xb6bd,0xb6be,0xb6bf,0xb6c0,0xb6c1,0xb6c2,0xb6c3,0xb6c4,0xb6c5, - 0xb6c6,0xb6c7,0xb6c8,0xb6c9,0xb6ca,0xb6cb,0xb6cc,0xb6cd,0xb6ce,0xb6cf, - 0xb6d0,0xb6d1,0xb6d2,0xb6d3,0xb6d4,0xb6d5,0xb6d6,0xb6d7,0xb6d8,0xb6d9, - 0xb6da,0xb6db,0xb6dc,0xb6dd,0xb6de,0xb6df,0xb6e0,0xb6e1,0xb6e2,0xb6e3, - 0xb6e4,0xb6e5,0xb6e6,0xb6e7,0xb6e8,0xb6e9,0xb6ea,0xb6eb,0xb6ec,0xb6ed, - 0xb6ee,0xb6ef,0xb6f0,0xb6f1,0xb6f2,0xb6f3,0xb6f4,0xb6f5,0xb6f6,0xb6f7, - 0xb6f8,0xb6f9,0xb6fa,0xb6fb,0xb6fc,0xb6fd,0xb6fe,0xb6ff,0xb700,0xb701, - 0xb702,0xb703,0xb704,0xb705,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,0xb728,0xb729, - 0xb72a,0xb72b,0xb72c,0xb72d,0xb72e,0xb72f,0xb730,0xb731,0xb732,0xb733, - 0xb734,0xb735,0xb736,0xb737,0xb738,0xb739,0xb73a,0xb73b,0xb73c,0xb73d, - 0xb73e,0xb73f,0xb740,0xb741,0xb742,0xb743,0xb744,0xb745,0xb746,0xb747, - 0xb748,0xb749,0xb74a,0xb74b,0xb74c,0xb74d,0xb74e,0xb74f,0xb750,0xb751, - 0xb752,0xb753,0xb754,0xb755,0xb756,0xb757,0xb758,0xb759,0xb75a,0xb75b, - 0xb75c,0xb75d,0xb75e,0xb75f,0xb760,0xb761,0xb762,0xb763,0xb764,0xb765, - 0xb766,0xb767,0xb768,0xb769,0xb76a,0xb76b,0xb76c,0xb76d,0xb76e,0xb76f, - 0xb770,0xb771,0xb772,0xb773,0xb774,0xb775,0xb776,0xb777,0xb778,0xb779, - 0xb77a,0xb77b,0xb77c,0xb77d,0xb77e,0xb77f,0xb780,0xb781,0xb782,0xb783, - 0xb784,0xb785,0xb786,0xb787,0xb788,0xb789,0xb78a,0xb78b,0xb78c,0xb78d, - 0xb78e,0xb78f,0xb790,0xb791,0xb792,0xb793,0xb794,0xb795,0xb796,0xb797, - 0xb798,0xb799,0xb79a,0xb79b,0xb79c,0xb79d,0xb79e,0xb79f,0xb7a0,0xb7a1, - 0xb7a2,0xb7a3,0xb7a4,0xb7a5,0xb7a6,0xb7a7,0xb7a8,0xb7a9,0xb7aa,0xb7ab, - 0xb7ac,0xb7ad,0xb7ae,0xb7af,0xb7b0,0xb7b1,0xb7b2,0xb7b3,0xb7b4,0xb7b5, - 0xb7b6,0xb7b7,0xb7b8,0xb7b9,0xb7ba,0xb7bb,0xb7bc,0xb7bd,0xb7be,0xb7bf, - 0xb7c0,0xb7c1,0xb7c2,0xb7c3,0xb7c4,0xb7c5,0xb7c6,0xb7c7,0xb7c8,0xb7c9, - 0xb7ca,0xb7cb,0xb7cc,0xb7cd,0xb7ce,0xb7cf,0xb7d0,0xb7d1,0xb7d2,0xb7d3, - 0xb7d4,0xb7d5,0xb7d6,0xb7d7,0xb7d8,0xb7d9,0xb7da,0xb7db,0xb7dc,0xb7dd, - 0xb7de,0xb7df,0xb7e0,0xb7e1,0xb7e2,0xb7e3,0xb7e4,0xb7e5,0xb7e6,0xb7e7, - 0xb7e8,0xb7e9,0xb7ea,0xb7eb,0xb7ec,0xb7ed,0xb7ee,0xb7ef,0xb7f0,0xb7f1, - 0xb7f2,0xb7f3,0xb7f4,0xb7f5,0xb7f6,0xb7f7,0xb7f8,0xb7f9,0xb7fa,0xb7fb, - 0xb7fc,0xb7fd,0xb7fe,0xb7ff,0xb800,0xb801,0xb802,0xb803,0xb804,0xb805, - 0xb806,0xb807,0xb808,0xb809,0xb80a,0xb80b,0xb80c,0xb80d,0xb80e,0xb80f, - 0xb810,0xb811,0xb812,0xb813,0xb814,0xb815,0xb816,0xb817,0xb818,0xb819, - 0xb81a,0xb81b,0xb81c,0xb81d,0xb81e,0xb81f,0xb820,0xb821,0xb822,0xb823, - 0xb824,0xb825,0xb826,0xb827,0xb828,0xb829,0xb82a,0xb82b,0xb82c,0xb82d, - 0xb82e,0xb82f,0xb830,0xb831,0xb832,0xb833,0xb834,0xb835,0xb836,0xb837, - 0xb838,0xb839,0xb83a,0xb83b,0xb83c,0xb83d,0xb83e,0xb83f,0xb840,0xb841, - 0xb842,0xb843,0xb844,0xb845,0xb846,0xb847,0xb848,0xb849,0xb84a,0xb84b, - 0xb84c,0xb84d,0xb84e,0xb84f,0xb850,0xb851,0xb852,0xb853,0xb854,0xb855, - 0xb856,0xb857,0xb858,0xb859,0xb85a,0xb85b,0xb85c,0xb85d,0xb85e,0xb85f, - 0xb860,0xb861,0xb862,0xb863,0xb864,0xb865,0xb866,0xb867,0xb868,0xb869, - 0xb86a,0xb86b,0xb86c,0xb86d,0xb86e,0xb86f,0xb870,0xb871,0xb872,0xb873, - 0xb874,0xb875,0xb876,0xb877,0xb878,0xb879,0xb87a,0xb87b,0xb87c,0xb87d, - 0xb87e,0xb87f,0xb880,0xb881,0xb882,0xb883,0xb884,0xb885,0xb886,0xb887, - 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,0xb8a1,0xb8a2,0xb8a3,0xb8a4,0xb8a5, - 0xb8a6,0xb8a7,0xb8a8,0xb8a9,0xb8aa,0xb8ab,0xb8ac,0xb8ad,0xb8ae,0xb8af, - 0xb8b0,0xb8b1,0xb8b2,0xb8b3,0xb8b4,0xb8b5,0xb8b6,0xb8b7,0xb8b8,0xb8b9, - 0xb8ba,0xb8bb,0xb8bc,0xb8bd,0xb8be,0xb8bf,0xb8c0,0xb8c1,0xb8c2,0xb8c3, - 0xb8c4,0xb8c5,0xb8c6,0xb8c7,0xb8c8,0xb8c9,0xb8ca,0xb8cb,0xb8cc,0xb8cd, - 0xb8ce,0xb8cf,0xb8d0,0xb8d1,0xb8d2,0xb8d3,0xb8d4,0xb8d5,0xb8d6,0xb8d7, - 0xb8d8,0xb8d9,0xb8da,0xb8db,0xb8dc,0xb8dd,0xb8de,0xb8df,0xb8e0,0xb8e1, - 0xb8e2,0xb8e3,0xb8e4,0xb8e5,0xb8e6,0xb8e7,0xb8e8,0xb8e9,0xb8ea,0xb8eb, - 0xb8ec,0xb8ed,0xb8ee,0xb8ef,0xb8f0,0xb8f1,0xb8f2,0xb8f3,0xb8f4,0xb8f5, - 0xb8f6,0xb8f7,0xb8f8,0xb8f9,0xb8fa,0xb8fb,0xb8fc,0xb8fd,0xb8fe,0xb8ff, - 0xb900,0xb901,0xb902,0xb903,0xb904,0xb905,0xb906,0xb907,0xb908,0xb909, - 0xb90a,0xb90b,0xb90c,0xb90d,0xb90e,0xb90f,0xb910,0xb911,0xb912,0xb913, - 0xb914,0xb915,0xb916,0xb917,0xb918,0xb919,0xb91a,0xb91b,0xb91c,0xb91d, - 0xb91e,0xb91f,0xb920,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, - 0xb93c,0xb93d,0xb93e,0xb93f,0xb940,0xb941,0xb942,0xb943,0xb944,0xb945, - 0xb946,0xb947,0xb948,0xb949,0xb94a,0xb94b,0xb94c,0xb94d,0xb94e,0xb94f, - 0xb950,0xb951,0xb952,0xb953,0xb954,0xb955,0xb956,0xb957,0xb958,0xb959, - 0xb95a,0xb95b,0xb95c,0xb95d,0xb95e,0xb95f,0xb960,0xb961,0xb962,0xb963, - 0xb964,0xb965,0xb966,0xb967,0xb968,0xb969,0xb96a,0xb96b,0xb96c,0xb96d, - 0xb96e,0xb96f,0xb970,0xb971,0xb972,0xb973,0xb974,0xb975,0xb976,0xb977, - 0xb978,0xb979,0xb97a,0xb97b,0xb97c,0xb97d,0xb97e,0xb97f,0xb980,0xb981, - 0xb982,0xb983,0xb984,0xb985,0xb986,0xb987,0xb988,0xb989,0xb98a,0xb98b, - 0xb98c,0xb98d,0xb98e,0xb98f,0xb990,0xb991,0xb992,0xb993,0xb994,0xb995, - 0xb996,0xb997,0xb998,0xb999,0xb99a,0xb99b,0xb99c,0xb99d,0xb99e,0xb99f, - 0xb9a0,0xb9a1,0xb9a2,0xb9a3,0xb9a4,0xb9a5,0xb9a6,0xb9a7,0xb9a8,0xb9a9, - 0xb9aa,0xb9ab,0xb9ac,0xb9ad,0xb9ae,0xb9af,0xb9b0,0xb9b1,0xb9b2,0xb9b3, - 0xb9b4,0xb9b5,0xb9b6,0xb9b7,0xb9b8,0xb9b9,0xb9ba,0xb9bb,0xb9bc,0xb9bd, - 0xb9be,0xb9bf,0xb9c0,0xb9c1,0xb9c2,0xb9c3,0xb9c4,0xb9c5,0xb9c6,0xb9c7, - 0xb9c8,0xb9c9,0xb9ca,0xb9cb,0xb9cc,0xb9cd,0xb9ce,0xb9cf,0xb9d0,0xb9d1, - 0xb9d2,0xb9d3,0xb9d4,0xb9d5,0xb9d6,0xb9d7,0xb9d8,0xb9d9,0xb9da,0xb9db, - 0xb9dc,0xb9dd,0xb9de,0xb9df,0xb9e0,0xb9e1,0xb9e2,0xb9e3,0xb9e4,0xb9e5, - 0xb9e6,0xb9e7,0xb9e8,0xb9e9,0xb9ea,0xb9eb,0xb9ec,0xb9ed,0xb9ee,0xb9ef, - 0xb9f0,0xb9f1,0xb9f2,0xb9f3,0xb9f4,0xb9f5,0xb9f6,0xb9f7,0xb9f8,0xb9f9, - 0xb9fa,0xb9fb,0xb9fc,0xb9fd,0xb9fe,0xb9ff,0xba00,0xba01,0xba02,0xba03, - 0xba04,0xba05,0xba06,0xba07,0xba08,0xba09,0xba0a,0xba0b,0xba0c,0xba0d, - 0xba0e,0xba0f,0xba10,0xba11,0xba12,0xba13,0xba14,0xba15,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,0xba38,0xba39,0xba3a,0xba3b,0xba3c,0xba3d,0xba3e,0xba3f, - 0xba40,0xba41,0xba42,0xba43,0xba44,0xba45,0xba46,0xba47,0xba48,0xba49, - 0xba4a,0xba4b,0xba4c,0xba4d,0xba4e,0xba4f,0xba50,0xba51,0xba52,0xba53, - 0xba54,0xba55,0xba56,0xba57,0xba58,0xba59,0xba5a,0xba5b,0xba5c,0xba5d, - 0xba5e,0xba5f,0xba60,0xba61,0xba62,0xba63,0xba64,0xba65,0xba66,0xba67, - 0xba68,0xba69,0xba6a,0xba6b,0xba6c,0xba6d,0xba6e,0xba6f,0xba70,0xba71, - 0xba72,0xba73,0xba74,0xba75,0xba76,0xba77,0xba78,0xba79,0xba7a,0xba7b, - 0xba7c,0xba7d,0xba7e,0xba7f,0xba80,0xba81,0xba82,0xba83,0xba84,0xba85, - 0xba86,0xba87,0xba88,0xba89,0xba8a,0xba8b,0xba8c,0xba8d,0xba8e,0xba8f, - 0xba90,0xba91,0xba92,0xba93,0xba94,0xba95,0xba96,0xba97,0xba98,0xba99, - 0xba9a,0xba9b,0xba9c,0xba9d,0xba9e,0xba9f,0xbaa0,0xbaa1,0xbaa2,0xbaa3, - 0xbaa4,0xbaa5,0xbaa6,0xbaa7,0xbaa8,0xbaa9,0xbaaa,0xbaab,0xbaac,0xbaad, - 0xbaae,0xbaaf,0xbab0,0xbab1,0xbab2,0xbab3,0xbab4,0xbab5,0xbab6,0xbab7, - 0xbab8,0xbab9,0xbaba,0xbabb,0xbabc,0xbabd,0xbabe,0xbabf,0xbac0,0xbac1, - 0xbac2,0xbac3,0xbac4,0xbac5,0xbac6,0xbac7,0xbac8,0xbac9,0xbaca,0xbacb, - 0xbacc,0xbacd,0xbace,0xbacf,0xbad0,0xbad1,0xbad2,0xbad3,0xbad4,0xbad5, - 0xbad6,0xbad7,0xbad8,0xbad9,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,0xbafc,0xbafd, - 0xbafe,0xbaff,0xbb00,0xbb01,0xbb02,0xbb03,0xbb04,0xbb05,0xbb06,0xbb07, - 0xbb08,0xbb09,0xbb0a,0xbb0b,0xbb0c,0xbb0d,0xbb0e,0xbb0f,0xbb10,0xbb11, - 0xbb12,0xbb13,0xbb14,0xbb15,0xbb16,0xbb17,0xbb18,0xbb19,0xbb1a,0xbb1b, - 0xbb1c,0xbb1d,0xbb1e,0xbb1f,0xbb20,0xbb21,0xbb22,0xbb23,0xbb24,0xbb25, - 0xbb26,0xbb27,0xbb28,0xbb29,0xbb2a,0xbb2b,0xbb2c,0xbb2d,0xbb2e,0xbb2f, - 0xbb30,0xbb31,0xbb32,0xbb33,0xbb34,0xbb35,0xbb36,0xbb37,0xbb38,0xbb39, - 0xbb3a,0xbb3b,0xbb3c,0xbb3d,0xbb3e,0xbb3f,0xbb40,0xbb41,0xbb42,0xbb43, - 0xbb44,0xbb45,0xbb46,0xbb47,0xbb48,0xbb49,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,0xbb6f,0xbb70,0xbb71,0xbb72,0xbb73,0xbb74,0xbb75, - 0xbb76,0xbb77,0xbb78,0xbb79,0xbb7a,0xbb7b,0xbb7c,0xbb7d,0xbb7e,0xbb7f, - 0xbb80,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,0xbba1,0xbba2,0xbba3,0xbba4,0xbba5,0xbba6,0xbba7, - 0xbba8,0xbba9,0xbbaa,0xbbab,0xbbac,0xbbad,0xbbae,0xbbaf,0xbbb0,0xbbb1, - 0xbbb2,0xbbb3,0xbbb4,0xbbb5,0xbbb6,0xbbb7,0xbbb8,0xbbb9,0xbbba,0xbbbb, - 0xbbbc,0xbbbd,0xbbbe,0xbbbf,0xbbc0,0xbbc1,0xbbc2,0xbbc3,0xbbc4,0xbbc5, - 0xbbc6,0xbbc7,0xbbc8,0xbbc9,0xbbca,0xbbcb,0xbbcc,0xbbcd,0xbbce,0xbbcf, - 0xbbd0,0xbbd1,0xbbd2,0xbbd3,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, - 0xbbf8,0xbbf9,0xbbfa,0xbbfb,0xbbfc,0xbbfd,0xbbfe,0xbbff,0xbc00,0xbc01, - 0xbc02,0xbc03,0xbc04,0xbc05,0xbc06,0xbc07,0xbc08,0xbc09,0xbc0a,0xbc0b, - 0xbc0c,0xbc0d,0xbc0e,0xbc0f,0xbc10,0xbc11,0xbc12,0xbc13,0xbc14,0xbc15, - 0xbc16,0xbc17,0xbc18,0xbc19,0xbc1a,0xbc1b,0xbc1c,0xbc1d,0xbc1e,0xbc1f, - 0xbc20,0xbc21,0xbc22,0xbc23,0xbc24,0xbc25,0xbc26,0xbc27,0xbc28,0xbc29, - 0xbc2a,0xbc2b,0xbc2c,0xbc2d,0xbc2e,0xbc2f,0xbc30,0xbc31,0xbc32,0xbc33, - 0xbc34,0xbc35,0xbc36,0xbc37,0xbc38,0xbc39,0xbc3a,0xbc3b,0xbc3c,0xbc3d, - 0xbc3e,0xbc3f,0xbc40,0xbc41,0xbc42,0xbc43,0xbc44,0xbc45,0xbc46,0xbc47, - 0xbc48,0xbc49,0xbc4a,0xbc4b,0xbc4c,0xbc4d,0xbc4e,0xbc4f,0xbc50,0xbc51, - 0xbc52,0xbc53,0xbc54,0xbc55,0xbc56,0xbc57,0xbc58,0xbc59,0xbc5a,0xbc5b, - 0xbc5c,0xbc5d,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, - 0xbc84,0xbc85,0xbc86,0xbc87,0xbc88,0xbc89,0xbc8a,0xbc8b,0xbc8c,0xbc8d, - 0xbc8e,0xbc8f,0xbc90,0xbc91,0xbc92,0xbc93,0xbc94,0xbc95,0xbc96,0xbc97, - 0xbc98,0xbc99,0xbc9a,0xbc9b,0xbc9c,0xbc9d,0xbc9e,0xbc9f,0xbca0,0xbca1, - 0xbca2,0xbca3,0xbca4,0xbca5,0xbca6,0xbca7,0xbca8,0xbca9,0xbcaa,0xbcab, - 0xbcac,0xbcad,0xbcae,0xbcaf,0xbcb0,0xbcb1,0xbcb2,0xbcb3,0xbcb4,0xbcb5, - 0xbcb6,0xbcb7,0xbcb8,0xbcb9,0xbcba,0xbcbb,0xbcbc,0xbcbd,0xbcbe,0xbcbf, - 0xbcc0,0xbcc1,0xbcc2,0xbcc3,0xbcc4,0xbcc5,0xbcc6,0xbcc7,0xbcc8,0xbcc9, - 0xbcca,0xbccb,0xbccc,0xbccd,0xbcce,0xbccf,0xbcd0,0xbcd1,0xbcd2,0xbcd3, - 0xbcd4,0xbcd5,0xbcd6,0xbcd7,0xbcd8,0xbcd9,0xbcda,0xbcdb,0xbcdc,0xbcdd, - 0xbcde,0xbcdf,0xbce0,0xbce1,0xbce2,0xbce3,0xbce4,0xbce5,0xbce6,0xbce7, - 0xbce8,0xbce9,0xbcea,0xbceb,0xbcec,0xbced,0xbcee,0xbcef,0xbcf0,0xbcf1, - 0xbcf2,0xbcf3,0xbcf4,0xbcf5,0xbcf6,0xbcf7,0xbcf8,0xbcf9,0xbcfa,0xbcfb, - 0xbcfc,0xbcfd,0xbcfe,0xbcff,0xbd00,0xbd01,0xbd02,0xbd03,0xbd04,0xbd05, - 0xbd06,0xbd07,0xbd08,0xbd09,0xbd0a,0xbd0b,0xbd0c,0xbd0d,0xbd0e,0xbd0f, - 0xbd10,0xbd11,0xbd12,0xbd13,0xbd14,0xbd15,0xbd16,0xbd17,0xbd18,0xbd19, - 0xbd1a,0xbd1b,0xbd1c,0xbd1d,0xbd1e,0xbd1f,0xbd20,0xbd21,0xbd22,0xbd23, - 0xbd24,0xbd25,0xbd26,0xbd27,0xbd28,0xbd29,0xbd2a,0xbd2b,0xbd2c,0xbd2d, - 0xbd2e,0xbd2f,0xbd30,0xbd31,0xbd32,0xbd33,0xbd34,0xbd35,0xbd36,0xbd37, - 0xbd38,0xbd39,0xbd3a,0xbd3b,0xbd3c,0xbd3d,0xbd3e,0xbd3f,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,0xbd77,0xbd78,0xbd79,0xbd7a,0xbd7b,0xbd7c,0xbd7d, - 0xbd7e,0xbd7f,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,0xbda1,0xbda2,0xbda3,0xbda4,0xbda5, - 0xbda6,0xbda7,0xbda8,0xbda9,0xbdaa,0xbdab,0xbdac,0xbdad,0xbdae,0xbdaf, - 0xbdb0,0xbdb1,0xbdb2,0xbdb3,0xbdb4,0xbdb5,0xbdb6,0xbdb7,0xbdb8,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,0xbdd2,0xbdd3,0xbdd4,0xbdd5,0xbdd6,0xbdd7, - 0xbdd8,0xbdd9,0xbdda,0xbddb,0xbddc,0xbddd,0xbdde,0xbddf,0xbde0,0xbde1, - 0xbde2,0xbde3,0xbde4,0xbde5,0xbde6,0xbde7,0xbde8,0xbde9,0xbdea,0xbdeb, - 0xbdec,0xbded,0xbdee,0xbdef,0xbdf0,0xbdf1,0xbdf2,0xbdf3,0xbdf4,0xbdf5, - 0xbdf6,0xbdf7,0xbdf8,0xbdf9,0xbdfa,0xbdfb,0xbdfc,0xbdfd,0xbdfe,0xbdff, - 0xbe00,0xbe01,0xbe02,0xbe03,0xbe04,0xbe05,0xbe06,0xbe07,0xbe08,0xbe09, - 0xbe0a,0xbe0b,0xbe0c,0xbe0d,0xbe0e,0xbe0f,0xbe10,0xbe11,0xbe12,0xbe13, - 0xbe14,0xbe15,0xbe16,0xbe17,0xbe18,0xbe19,0xbe1a,0xbe1b,0xbe1c,0xbe1d, - 0xbe1e,0xbe1f,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,0xbe44,0xbe45, - 0xbe46,0xbe47,0xbe48,0xbe49,0xbe4a,0xbe4b,0xbe4c,0xbe4d,0xbe4e,0xbe4f, - 0xbe50,0xbe51,0xbe52,0xbe53,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,0xbe7f,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,0xbea1,0xbea2,0xbea3,0xbea4,0xbea5,0xbea6,0xbea7,0xbea8,0xbea9, - 0xbeaa,0xbeab,0xbeac,0xbead,0xbeae,0xbeaf,0xbeb0,0xbeb1,0xbeb2,0xbeb3, - 0xbeb4,0xbeb5,0xbeb6,0xbeb7,0xbeb8,0xbeb9,0xbeba,0xbebb,0xbebc,0xbebd, - 0xbebe,0xbebf,0xbec0,0xbec1,0xbec2,0xbec3,0xbec4,0xbec5,0xbec6,0xbec7, - 0xbec8,0xbec9,0xbeca,0xbecb,0xbecc,0xbecd,0xbece,0xbecf,0xbed0,0xbed1, - 0xbed2,0xbed3,0xbed4,0xbed5,0xbed6,0xbed7,0xbed8,0xbed9,0xbeda,0xbedb, - 0xbedc,0xbedd,0xbede,0xbedf,0xbee0,0xbee1,0xbee2,0xbee3,0xbee4,0xbee5, - 0xbee6,0xbee7,0xbee8,0xbee9,0xbeea,0xbeeb,0xbeec,0xbeed,0xbeee,0xbeef, - 0xbef0,0xbef1,0xbef2,0xbef3,0xbef4,0xbef5,0xbef6,0xbef7,0xbef8,0xbef9, - 0xbefa,0xbefb,0xbefc,0xbefd,0xbefe,0xbeff,0xbf00,0xbf01,0xbf02,0xbf03, - 0xbf04,0xbf05,0xbf06,0xbf07,0xbf08,0xbf09,0xbf0a,0xbf0b,0xbf0c,0xbf0d, - 0xbf0e,0xbf0f,0xbf10,0xbf11,0xbf12,0xbf13,0xbf14,0xbf15,0xbf16,0xbf17, - 0xbf18,0xbf19,0xbf1a,0xbf1b,0xbf1c,0xbf1d,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, - 0xbf40,0xbf41,0xbf42,0xbf43,0xbf44,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,0xbf7f,0xbf80,0xbf81,0xbf82,0xbf83,0xbf84,0xbf85, - 0xbf86,0xbf87,0xbf88,0xbf89,0xbf8a,0xbf8b,0xbf8c,0xbf8d,0xbf8e,0xbf8f, - 0xbf90,0xbf91,0xbf92,0xbf93,0xbf94,0xbf95,0xbf96,0xbf97,0xbf98,0xbf99, - 0xbf9a,0xbf9b,0xbf9c,0xbf9d,0xbf9e,0xbf9f,0xbfa0,0xbfa1,0xbfa2,0xbfa3, - 0xbfa4,0xbfa5,0xbfa6,0xbfa7,0xbfa8,0xbfa9,0xbfaa,0xbfab,0xbfac,0xbfad, - 0xbfae,0xbfaf,0xbfb0,0xbfb1,0xbfb2,0xbfb3,0xbfb4,0xbfb5,0xbfb6,0xbfb7, - 0xbfb8,0xbfb9,0xbfba,0xbfbb,0xbfbc,0xbfbd,0xbfbe,0xbfbf,0xbfc0,0xbfc1, - 0xbfc2,0xbfc3,0xbfc4,0xbfc5,0xbfc6,0xbfc7,0xbfc8,0xbfc9,0xbfca,0xbfcb, - 0xbfcc,0xbfcd,0xbfce,0xbfcf,0xbfd0,0xbfd1,0xbfd2,0xbfd3,0xbfd4,0xbfd5, - 0xbfd6,0xbfd7,0xbfd8,0xbfd9,0xbfda,0xbfdb,0xbfdc,0xbfdd,0xbfde,0xbfdf, - 0xbfe0,0xbfe1,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,0xc03c,0xc03d,0xc03e,0xc03f,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,0xc064,0xc065,0xc066,0xc067,0xc068,0xc069,0xc06a,0xc06b, - 0xc06c,0xc06d,0xc06e,0xc06f,0xc070,0xc071,0xc072,0xc073,0xc074,0xc075, - 0xc076,0xc077,0xc078,0xc079,0xc07a,0xc07b,0xc07c,0xc07d,0xc07e,0xc07f, - 0xc080,0xc081,0xc082,0xc083,0xc084,0xc085,0xc086,0xc087,0xc088,0xc089, - 0xc08a,0xc08b,0xc08c,0xc08d,0xc08e,0xc08f,0xc090,0xc091,0xc092,0xc093, - 0xc094,0xc095,0xc096,0xc097,0xc098,0xc099,0xc09a,0xc09b,0xc09c,0xc09d, - 0xc09e,0xc09f,0xc0a0,0xc0a1,0xc0a2,0xc0a3,0xc0a4,0xc0a5,0xc0a6,0xc0a7, - 0xc0a8,0xc0a9,0xc0aa,0xc0ab,0xc0ac,0xc0ad,0xc0ae,0xc0af,0xc0b0,0xc0b1, - 0xc0b2,0xc0b3,0xc0b4,0xc0b5,0xc0b6,0xc0b7,0xc0b8,0xc0b9,0xc0ba,0xc0bb, - 0xc0bc,0xc0bd,0xc0be,0xc0bf,0xc0c0,0xc0c1,0xc0c2,0xc0c3,0xc0c4,0xc0c5, - 0xc0c6,0xc0c7,0xc0c8,0xc0c9,0xc0ca,0xc0cb,0xc0cc,0xc0cd,0xc0ce,0xc0cf, - 0xc0d0,0xc0d1,0xc0d2,0xc0d3,0xc0d4,0xc0d5,0xc0d6,0xc0d7,0xc0d8,0xc0d9, - 0xc0da,0xc0db,0xc0dc,0xc0dd,0xc0de,0xc0df,0xc0e0,0xc0e1,0xc0e2,0xc0e3, - 0xc0e4,0xc0e5,0xc0e6,0xc0e7,0xc0e8,0xc0e9,0xc0ea,0xc0eb,0xc0ec,0xc0ed, - 0xc0ee,0xc0ef,0xc0f0,0xc0f1,0xc0f2,0xc0f3,0xc0f4,0xc0f5,0xc0f6,0xc0f7, - 0xc0f8,0xc0f9,0xc0fa,0xc0fb,0xc0fc,0xc0fd,0xc0fe,0xc0ff,0xc100,0xc101, - 0xc102,0xc103,0xc104,0xc105,0xc106,0xc107,0xc108,0xc109,0xc10a,0xc10b, - 0xc10c,0xc10d,0xc10e,0xc10f,0xc110,0xc111,0xc112,0xc113,0xc114,0xc115, - 0xc116,0xc117,0xc118,0xc119,0xc11a,0xc11b,0xc11c,0xc11d,0xc11e,0xc11f, - 0xc120,0xc121,0xc122,0xc123,0xc124,0xc125,0xc126,0xc127,0xc128,0xc129, - 0xc12a,0xc12b,0xc12c,0xc12d,0xc12e,0xc12f,0xc130,0xc131,0xc132,0xc133, - 0xc134,0xc135,0xc136,0xc137,0xc138,0xc139,0xc13a,0xc13b,0xc13c,0xc13d, - 0xc13e,0xc13f,0xc140,0xc141,0xc142,0xc143,0xc144,0xc145,0xc146,0xc147, - 0xc148,0xc149,0xc14a,0xc14b,0xc14c,0xc14d,0xc14e,0xc14f,0xc150,0xc151, - 0xc152,0xc153,0xc154,0xc155,0xc156,0xc157,0xc158,0xc159,0xc15a,0xc15b, - 0xc15c,0xc15d,0xc15e,0xc15f,0xc160,0xc161,0xc162,0xc163,0xc164,0xc165, - 0xc166,0xc167,0xc168,0xc169,0xc16a,0xc16b,0xc16c,0xc16d,0xc16e,0xc16f, - 0xc170,0xc171,0xc172,0xc173,0xc174,0xc175,0xc176,0xc177,0xc178,0xc179, - 0xc17a,0xc17b,0xc17c,0xc17d,0xc17e,0xc17f,0xc180,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,0xc1a1, - 0xc1a2,0xc1a3,0xc1a4,0xc1a5,0xc1a6,0xc1a7,0xc1a8,0xc1a9,0xc1aa,0xc1ab, - 0xc1ac,0xc1ad,0xc1ae,0xc1af,0xc1b0,0xc1b1,0xc1b2,0xc1b3,0xc1b4,0xc1b5, - 0xc1b6,0xc1b7,0xc1b8,0xc1b9,0xc1ba,0xc1bb,0xc1bc,0xc1bd,0xc1be,0xc1bf, - 0xc1c0,0xc1c1,0xc1c2,0xc1c3,0xc1c4,0xc1c5,0xc1c6,0xc1c7,0xc1c8,0xc1c9, - 0xc1ca,0xc1cb,0xc1cc,0xc1cd,0xc1ce,0xc1cf,0xc1d0,0xc1d1,0xc1d2,0xc1d3, - 0xc1d4,0xc1d5,0xc1d6,0xc1d7,0xc1d8,0xc1d9,0xc1da,0xc1db,0xc1dc,0xc1dd, - 0xc1de,0xc1df,0xc1e0,0xc1e1,0xc1e2,0xc1e3,0xc1e4,0xc1e5,0xc1e6,0xc1e7, - 0xc1e8,0xc1e9,0xc1ea,0xc1eb,0xc1ec,0xc1ed,0xc1ee,0xc1ef,0xc1f0,0xc1f1, - 0xc1f2,0xc1f3,0xc1f4,0xc1f5,0xc1f6,0xc1f7,0xc1f8,0xc1f9,0xc1fa,0xc1fb, - 0xc1fc,0xc1fd,0xc1fe,0xc1ff,0xc200,0xc201,0xc202,0xc203,0xc204,0xc205, - 0xc206,0xc207,0xc208,0xc209,0xc20a,0xc20b,0xc20c,0xc20d,0xc20e,0xc20f, - 0xc210,0xc211,0xc212,0xc213,0xc214,0xc215,0xc216,0xc217,0xc218,0xc219, - 0xc21a,0xc21b,0xc21c,0xc21d,0xc21e,0xc21f,0xc220,0xc221,0xc222,0xc223, - 0xc224,0xc225,0xc226,0xc227,0xc228,0xc229,0xc22a,0xc22b,0xc22c,0xc22d, - 0xc22e,0xc22f,0xc230,0xc231,0xc232,0xc233,0xc234,0xc235,0xc236,0xc237, - 0xc238,0xc239,0xc23a,0xc23b,0xc23c,0xc23d,0xc23e,0xc23f,0xc240,0xc241, - 0xc242,0xc243,0xc244,0xc245,0xc246,0xc247,0xc248,0xc249,0xc24a,0xc24b, - 0xc24c,0xc24d,0xc24e,0xc24f,0xc250,0xc251,0xc252,0xc253,0xc254,0xc255, - 0xc256,0xc257,0xc258,0xc259,0xc25a,0xc25b,0xc25c,0xc25d,0xc25e,0xc25f, - 0xc260,0xc261,0xc262,0xc263,0xc264,0xc265,0xc266,0xc267,0xc268,0xc269, - 0xc26a,0xc26b,0xc26c,0xc26d,0xc26e,0xc26f,0xc270,0xc271,0xc272,0xc273, - 0xc274,0xc275,0xc276,0xc277,0xc278,0xc279,0xc27a,0xc27b,0xc27c,0xc27d, - 0xc27e,0xc27f,0xc280,0xc281,0xc282,0xc283,0xc284,0xc285,0xc286,0xc287, - 0xc288,0xc289,0xc28a,0xc28b,0xc28c,0xc28d,0xc28e,0xc28f,0xc290,0xc291, - 0xc292,0xc293,0xc294,0xc295,0xc296,0xc297,0xc298,0xc299,0xc29a,0xc29b, - 0xc29c,0xc29d,0xc29e,0xc29f,0xc2a0,0xc2a1,0xc2a2,0xc2a3,0xc2a4,0xc2a5, - 0xc2a6,0xc2a7,0xc2a8,0xc2a9,0xc2aa,0xc2ab,0xc2ac,0xc2ad,0xc2ae,0xc2af, - 0xc2b0,0xc2b1,0xc2b2,0xc2b3,0xc2b4,0xc2b5,0xc2b6,0xc2b7,0xc2b8,0xc2b9, - 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,0xc2dc,0xc2dd,0xc2de,0xc2df,0xc2e0,0xc2e1, - 0xc2e2,0xc2e3,0xc2e4,0xc2e5,0xc2e6,0xc2e7,0xc2e8,0xc2e9,0xc2ea,0xc2eb, - 0xc2ec,0xc2ed,0xc2ee,0xc2ef,0xc2f0,0xc2f1,0xc2f2,0xc2f3,0xc2f4,0xc2f5, - 0xc2f6,0xc2f7,0xc2f8,0xc2f9,0xc2fa,0xc2fb,0xc2fc,0xc2fd,0xc2fe,0xc2ff, - 0xc300,0xc301,0xc302,0xc303,0xc304,0xc305,0xc306,0xc307,0xc308,0xc309, - 0xc30a,0xc30b,0xc30c,0xc30d,0xc30e,0xc30f,0xc310,0xc311,0xc312,0xc313, - 0xc314,0xc315,0xc316,0xc317,0xc318,0xc319,0xc31a,0xc31b,0xc31c,0xc31d, - 0xc31e,0xc31f,0xc320,0xc321,0xc322,0xc323,0xc324,0xc325,0xc326,0xc327, - 0xc328,0xc329,0xc32a,0xc32b,0xc32c,0xc32d,0xc32e,0xc32f,0xc330,0xc331, - 0xc332,0xc333,0xc334,0xc335,0xc336,0xc337,0xc338,0xc339,0xc33a,0xc33b, - 0xc33c,0xc33d,0xc33e,0xc33f,0xc340,0xc341,0xc342,0xc343,0xc344,0xc345, - 0xc346,0xc347,0xc348,0xc349,0xc34a,0xc34b,0xc34c,0xc34d,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,0xc368,0xc369,0xc36a,0xc36b,0xc36c,0xc36d, - 0xc36e,0xc36f,0xc370,0xc371,0xc372,0xc373,0xc374,0xc375,0xc376,0xc377, - 0xc378,0xc379,0xc37a,0xc37b,0xc37c,0xc37d,0xc37e,0xc37f,0xc380,0xc381, - 0xc382,0xc383,0xc384,0xc385,0xc386,0xc387,0xc388,0xc389,0xc38a,0xc38b, - 0xc38c,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,0xc3c0,0xc3c1,0xc3c2,0xc3c3,0xc3c4,0xc3c5,0xc3c6,0xc3c7, - 0xc3c8,0xc3c9,0xc3ca,0xc3cb,0xc3cc,0xc3cd,0xc3ce,0xc3cf,0xc3d0,0xc3d1, - 0xc3d2,0xc3d3,0xc3d4,0xc3d5,0xc3d6,0xc3d7,0xc3d8,0xc3d9,0xc3da,0xc3db, - 0xc3dc,0xc3dd,0xc3de,0xc3df,0xc3e0,0xc3e1,0xc3e2,0xc3e3,0xc3e4,0xc3e5, - 0xc3e6,0xc3e7,0xc3e8,0xc3e9,0xc3ea,0xc3eb,0xc3ec,0xc3ed,0xc3ee,0xc3ef, - 0xc3f0,0xc3f1,0xc3f2,0xc3f3,0xc3f4,0xc3f5,0xc3f6,0xc3f7,0xc3f8,0xc3f9, - 0xc3fa,0xc3fb,0xc3fc,0xc3fd,0xc3fe,0xc3ff,0xc400,0xc401,0xc402,0xc403, - 0xc404,0xc405,0xc406,0xc407,0xc408,0xc409,0xc40a,0xc40b,0xc40c,0xc40d, - 0xc40e,0xc40f,0xc410,0xc411,0xc412,0xc413,0xc414,0xc415,0xc416,0xc417, - 0xc418,0xc419,0xc41a,0xc41b,0xc41c,0xc41d,0xc41e,0xc41f,0xc420,0xc421, - 0xc422,0xc423,0xc424,0xc425,0xc426,0xc427,0xc428,0xc429,0xc42a,0xc42b, - 0xc42c,0xc42d,0xc42e,0xc42f,0xc430,0xc431,0xc432,0xc433,0xc434,0xc435, - 0xc436,0xc437,0xc438,0xc439,0xc43a,0xc43b,0xc43c,0xc43d,0xc43e,0xc43f, - 0xc440,0xc441,0xc442,0xc443,0xc444,0xc445,0xc446,0xc447,0xc448,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,0xc464,0xc465,0xc466,0xc467, - 0xc468,0xc469,0xc46a,0xc46b,0xc46c,0xc46d,0xc46e,0xc46f,0xc470,0xc471, - 0xc472,0xc473,0xc474,0xc475,0xc476,0xc477,0xc478,0xc479,0xc47a,0xc47b, - 0xc47c,0xc47d,0xc47e,0xc47f,0xc480,0xc481,0xc482,0xc483,0xc484,0xc485, - 0xc486,0xc487,0xc488,0xc489,0xc48a,0xc48b,0xc48c,0xc48d,0xc48e,0xc48f, - 0xc490,0xc491,0xc492,0xc493,0xc494,0xc495,0xc496,0xc497,0xc498,0xc499, - 0xc49a,0xc49b,0xc49c,0xc49d,0xc49e,0xc49f,0xc4a0,0xc4a1,0xc4a2,0xc4a3, - 0xc4a4,0xc4a5,0xc4a6,0xc4a7,0xc4a8,0xc4a9,0xc4aa,0xc4ab,0xc4ac,0xc4ad, - 0xc4ae,0xc4af,0xc4b0,0xc4b1,0xc4b2,0xc4b3,0xc4b4,0xc4b5,0xc4b6,0xc4b7, - 0xc4b8,0xc4b9,0xc4ba,0xc4bb,0xc4bc,0xc4bd,0xc4be,0xc4bf,0xc4c0,0xc4c1, - 0xc4c2,0xc4c3,0xc4c4,0xc4c5,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, - 0xc4e0,0xc4e1,0xc4e2,0xc4e3,0xc4e4,0xc4e5,0xc4e6,0xc4e7,0xc4e8,0xc4e9, - 0xc4ea,0xc4eb,0xc4ec,0xc4ed,0xc4ee,0xc4ef,0xc4f0,0xc4f1,0xc4f2,0xc4f3, - 0xc4f4,0xc4f5,0xc4f6,0xc4f7,0xc4f8,0xc4f9,0xc4fa,0xc4fb,0xc4fc,0xc4fd, - 0xc4fe,0xc4ff,0xc500,0xc501,0xc502,0xc503,0xc504,0xc505,0xc506,0xc507, - 0xc508,0xc509,0xc50a,0xc50b,0xc50c,0xc50d,0xc50e,0xc50f,0xc510,0xc511, - 0xc512,0xc513,0xc514,0xc515,0xc516,0xc517,0xc518,0xc519,0xc51a,0xc51b, - 0xc51c,0xc51d,0xc51e,0xc51f,0xc520,0xc521,0xc522,0xc523,0xc524,0xc525, - 0xc526,0xc527,0xc528,0xc529,0xc52a,0xc52b,0xc52c,0xc52d,0xc52e,0xc52f, - 0xc530,0xc531,0xc532,0xc533,0xc534,0xc535,0xc536,0xc537,0xc538,0xc539, - 0xc53a,0xc53b,0xc53c,0xc53d,0xc53e,0xc53f,0xc540,0xc541,0xc542,0xc543, - 0xc544,0xc545,0xc546,0xc547,0xc548,0xc549,0xc54a,0xc54b,0xc54c,0xc54d, - 0xc54e,0xc54f,0xc550,0xc551,0xc552,0xc553,0xc554,0xc555,0xc556,0xc557, - 0xc558,0xc559,0xc55a,0xc55b,0xc55c,0xc55d,0xc55e,0xc55f,0xc560,0xc561, - 0xc562,0xc563,0xc564,0xc565,0xc566,0xc567,0xc568,0xc569,0xc56a,0xc56b, - 0xc56c,0xc56d,0xc56e,0xc56f,0xc570,0xc571,0xc572,0xc573,0xc574,0xc575, - 0xc576,0xc577,0xc578,0xc579,0xc57a,0xc57b,0xc57c,0xc57d,0xc57e,0xc57f, - 0xc580,0xc581,0xc582,0xc583,0xc584,0xc585,0xc586,0xc587,0xc588,0xc589, - 0xc58a,0xc58b,0xc58c,0xc58d,0xc58e,0xc58f,0xc590,0xc591,0xc592,0xc593, - 0xc594,0xc595,0xc596,0xc597,0xc598,0xc599,0xc59a,0xc59b,0xc59c,0xc59d, - 0xc59e,0xc59f,0xc5a0,0xc5a1,0xc5a2,0xc5a3,0xc5a4,0xc5a5,0xc5a6,0xc5a7, - 0xc5a8,0xc5a9,0xc5aa,0xc5ab,0xc5ac,0xc5ad,0xc5ae,0xc5af,0xc5b0,0xc5b1, - 0xc5b2,0xc5b3,0xc5b4,0xc5b5,0xc5b6,0xc5b7,0xc5b8,0xc5b9,0xc5ba,0xc5bb, - 0xc5bc,0xc5bd,0xc5be,0xc5bf,0xc5c0,0xc5c1,0xc5c2,0xc5c3,0xc5c4,0xc5c5, - 0xc5c6,0xc5c7,0xc5c8,0xc5c9,0xc5ca,0xc5cb,0xc5cc,0xc5cd,0xc5ce,0xc5cf, - 0xc5d0,0xc5d1,0xc5d2,0xc5d3,0xc5d4,0xc5d5,0xc5d6,0xc5d7,0xc5d8,0xc5d9, - 0xc5da,0xc5db,0xc5dc,0xc5dd,0xc5de,0xc5df,0xc5e0,0xc5e1,0xc5e2,0xc5e3, - 0xc5e4,0xc5e5,0xc5e6,0xc5e7,0xc5e8,0xc5e9,0xc5ea,0xc5eb,0xc5ec,0xc5ed, - 0xc5ee,0xc5ef,0xc5f0,0xc5f1,0xc5f2,0xc5f3,0xc5f4,0xc5f5,0xc5f6,0xc5f7, - 0xc5f8,0xc5f9,0xc5fa,0xc5fb,0xc5fc,0xc5fd,0xc5fe,0xc5ff,0xc600,0xc601, - 0xc602,0xc603,0xc604,0xc605,0xc606,0xc607,0xc608,0xc609,0xc60a,0xc60b, - 0xc60c,0xc60d,0xc60e,0xc60f,0xc610,0xc611,0xc612,0xc613,0xc614,0xc615, - 0xc616,0xc617,0xc618,0xc619,0xc61a,0xc61b,0xc61c,0xc61d,0xc61e,0xc61f, - 0xc620,0xc621,0xc622,0xc623,0xc624,0xc625,0xc626,0xc627,0xc628,0xc629, - 0xc62a,0xc62b,0xc62c,0xc62d,0xc62e,0xc62f,0xc630,0xc631,0xc632,0xc633, - 0xc634,0xc635,0xc636,0xc637,0xc638,0xc639,0xc63a,0xc63b,0xc63c,0xc63d, - 0xc63e,0xc63f,0xc640,0xc641,0xc642,0xc643,0xc644,0xc645,0xc646,0xc647, - 0xc648,0xc649,0xc64a,0xc64b,0xc64c,0xc64d,0xc64e,0xc64f,0xc650,0xc651, - 0xc652,0xc653,0xc654,0xc655,0xc656,0xc657,0xc658,0xc659,0xc65a,0xc65b, - 0xc65c,0xc65d,0xc65e,0xc65f,0xc660,0xc661,0xc662,0xc663,0xc664,0xc665, - 0xc666,0xc667,0xc668,0xc669,0xc66a,0xc66b,0xc66c,0xc66d,0xc66e,0xc66f, - 0xc670,0xc671,0xc672,0xc673,0xc674,0xc675,0xc676,0xc677,0xc678,0xc679, - 0xc67a,0xc67b,0xc67c,0xc67d,0xc67e,0xc67f,0xc680,0xc681,0xc682,0xc683, - 0xc684,0xc685,0xc686,0xc687,0xc688,0xc689,0xc68a,0xc68b,0xc68c,0xc68d, - 0xc68e,0xc68f,0xc690,0xc691,0xc692,0xc693,0xc694,0xc695,0xc696,0xc697, - 0xc698,0xc699,0xc69a,0xc69b,0xc69c,0xc69d,0xc69e,0xc69f,0xc6a0,0xc6a1, - 0xc6a2,0xc6a3,0xc6a4,0xc6a5,0xc6a6,0xc6a7,0xc6a8,0xc6a9,0xc6aa,0xc6ab, - 0xc6ac,0xc6ad,0xc6ae,0xc6af,0xc6b0,0xc6b1,0xc6b2,0xc6b3,0xc6b4,0xc6b5, - 0xc6b6,0xc6b7,0xc6b8,0xc6b9,0xc6ba,0xc6bb,0xc6bc,0xc6bd,0xc6be,0xc6bf, - 0xc6c0,0xc6c1,0xc6c2,0xc6c3,0xc6c4,0xc6c5,0xc6c6,0xc6c7,0xc6c8,0xc6c9, - 0xc6ca,0xc6cb,0xc6cc,0xc6cd,0xc6ce,0xc6cf,0xc6d0,0xc6d1,0xc6d2,0xc6d3, - 0xc6d4,0xc6d5,0xc6d6,0xc6d7,0xc6d8,0xc6d9,0xc6da,0xc6db,0xc6dc,0xc6dd, - 0xc6de,0xc6df,0xc6e0,0xc6e1,0xc6e2,0xc6e3,0xc6e4,0xc6e5,0xc6e6,0xc6e7, - 0xc6e8,0xc6e9,0xc6ea,0xc6eb,0xc6ec,0xc6ed,0xc6ee,0xc6ef,0xc6f0,0xc6f1, - 0xc6f2,0xc6f3,0xc6f4,0xc6f5,0xc6f6,0xc6f7,0xc6f8,0xc6f9,0xc6fa,0xc6fb, - 0xc6fc,0xc6fd,0xc6fe,0xc6ff,0xc700,0xc701,0xc702,0xc703,0xc704,0xc705, - 0xc706,0xc707,0xc708,0xc709,0xc70a,0xc70b,0xc70c,0xc70d,0xc70e,0xc70f, - 0xc710,0xc711,0xc712,0xc713,0xc714,0xc715,0xc716,0xc717,0xc718,0xc719, - 0xc71a,0xc71b,0xc71c,0xc71d,0xc71e,0xc71f,0xc720,0xc721,0xc722,0xc723, - 0xc724,0xc725,0xc726,0xc727,0xc728,0xc729,0xc72a,0xc72b,0xc72c,0xc72d, - 0xc72e,0xc72f,0xc730,0xc731,0xc732,0xc733,0xc734,0xc735,0xc736,0xc737, - 0xc738,0xc739,0xc73a,0xc73b,0xc73c,0xc73d,0xc73e,0xc73f,0xc740,0xc741, - 0xc742,0xc743,0xc744,0xc745,0xc746,0xc747,0xc748,0xc749,0xc74a,0xc74b, - 0xc74c,0xc74d,0xc74e,0xc74f,0xc750,0xc751,0xc752,0xc753,0xc754,0xc755, - 0xc756,0xc757,0xc758,0xc759,0xc75a,0xc75b,0xc75c,0xc75d,0xc75e,0xc75f, - 0xc760,0xc761,0xc762,0xc763,0xc764,0xc765,0xc766,0xc767,0xc768,0xc769, - 0xc76a,0xc76b,0xc76c,0xc76d,0xc76e,0xc76f,0xc770,0xc771,0xc772,0xc773, - 0xc774,0xc775,0xc776,0xc777,0xc778,0xc779,0xc77a,0xc77b,0xc77c,0xc77d, - 0xc77e,0xc77f,0xc780,0xc781,0xc782,0xc783,0xc784,0xc785,0xc786,0xc787, - 0xc788,0xc789,0xc78a,0xc78b,0xc78c,0xc78d,0xc78e,0xc78f,0xc790,0xc791, - 0xc792,0xc793,0xc794,0xc795,0xc796,0xc797,0xc798,0xc799,0xc79a,0xc79b, - 0xc79c,0xc79d,0xc79e,0xc79f,0xc7a0,0xc7a1,0xc7a2,0xc7a3,0xc7a4,0xc7a5, - 0xc7a6,0xc7a7,0xc7a8,0xc7a9,0xc7aa,0xc7ab,0xc7ac,0xc7ad,0xc7ae,0xc7af, - 0xc7b0,0xc7b1,0xc7b2,0xc7b3,0xc7b4,0xc7b5,0xc7b6,0xc7b7,0xc7b8,0xc7b9, - 0xc7ba,0xc7bb,0xc7bc,0xc7bd,0xc7be,0xc7bf,0xc7c0,0xc7c1,0xc7c2,0xc7c3, - 0xc7c4,0xc7c5,0xc7c6,0xc7c7,0xc7c8,0xc7c9,0xc7ca,0xc7cb,0xc7cc,0xc7cd, - 0xc7ce,0xc7cf,0xc7d0,0xc7d1,0xc7d2,0xc7d3,0xc7d4,0xc7d5,0xc7d6,0xc7d7, - 0xc7d8,0xc7d9,0xc7da,0xc7db,0xc7dc,0xc7dd,0xc7de,0xc7df,0xc7e0,0xc7e1, - 0xc7e2,0xc7e3,0xc7e4,0xc7e5,0xc7e6,0xc7e7,0xc7e8,0xc7e9,0xc7ea,0xc7eb, - 0xc7ec,0xc7ed,0xc7ee,0xc7ef,0xc7f0,0xc7f1,0xc7f2,0xc7f3,0xc7f4,0xc7f5, - 0xc7f6,0xc7f7,0xc7f8,0xc7f9,0xc7fa,0xc7fb,0xc7fc,0xc7fd,0xc7fe,0xc7ff, - 0xc800,0xc801,0xc802,0xc803,0xc804,0xc805,0xc806,0xc807,0xc808,0xc809, - 0xc80a,0xc80b,0xc80c,0xc80d,0xc80e,0xc80f,0xc810,0xc811,0xc812,0xc813, - 0xc814,0xc815,0xc816,0xc817,0xc818,0xc819,0xc81a,0xc81b,0xc81c,0xc81d, - 0xc81e,0xc81f,0xc820,0xc821,0xc822,0xc823,0xc824,0xc825,0xc826,0xc827, - 0xc828,0xc829,0xc82a,0xc82b,0xc82c,0xc82d,0xc82e,0xc82f,0xc830,0xc831, - 0xc832,0xc833,0xc834,0xc835,0xc836,0xc837,0xc838,0xc839,0xc83a,0xc83b, - 0xc83c,0xc83d,0xc83e,0xc83f,0xc840,0xc841,0xc842,0xc843,0xc844,0xc845, - 0xc846,0xc847,0xc848,0xc849,0xc84a,0xc84b,0xc84c,0xc84d,0xc84e,0xc84f, - 0xc850,0xc851,0xc852,0xc853,0xc854,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,0xc870,0xc871,0xc872,0xc873,0xc874,0xc875,0xc876,0xc877, - 0xc878,0xc879,0xc87a,0xc87b,0xc87c,0xc87d,0xc87e,0xc87f,0xc880,0xc881, - 0xc882,0xc883,0xc884,0xc885,0xc886,0xc887,0xc888,0xc889,0xc88a,0xc88b, - 0xc88c,0xc88d,0xc88e,0xc88f,0xc890,0xc891,0xc892,0xc893,0xc894,0xc895, - 0xc896,0xc897,0xc898,0xc899,0xc89a,0xc89b,0xc89c,0xc89d,0xc89e,0xc89f, - 0xc8a0,0xc8a1,0xc8a2,0xc8a3,0xc8a4,0xc8a5,0xc8a6,0xc8a7,0xc8a8,0xc8a9, - 0xc8aa,0xc8ab,0xc8ac,0xc8ad,0xc8ae,0xc8af,0xc8b0,0xc8b1,0xc8b2,0xc8b3, - 0xc8b4,0xc8b5,0xc8b6,0xc8b7,0xc8b8,0xc8b9,0xc8ba,0xc8bb,0xc8bc,0xc8bd, - 0xc8be,0xc8bf,0xc8c0,0xc8c1,0xc8c2,0xc8c3,0xc8c4,0xc8c5,0xc8c6,0xc8c7, - 0xc8c8,0xc8c9,0xc8ca,0xc8cb,0xc8cc,0xc8cd,0xc8ce,0xc8cf,0xc8d0,0xc8d1, - 0xc8d2,0xc8d3,0xc8d4,0xc8d5,0xc8d6,0xc8d7,0xc8d8,0xc8d9,0xc8da,0xc8db, - 0xc8dc,0xc8dd,0xc8de,0xc8df,0xc8e0,0xc8e1,0xc8e2,0xc8e3,0xc8e4,0xc8e5, - 0xc8e6,0xc8e7,0xc8e8,0xc8e9,0xc8ea,0xc8eb,0xc8ec,0xc8ed,0xc8ee,0xc8ef, - 0xc8f0,0xc8f1,0xc8f2,0xc8f3,0xc8f4,0xc8f5,0xc8f6,0xc8f7,0xc8f8,0xc8f9, - 0xc8fa,0xc8fb,0xc8fc,0xc8fd,0xc8fe,0xc8ff,0xc900,0xc901,0xc902,0xc903, - 0xc904,0xc905,0xc906,0xc907,0xc908,0xc909,0xc90a,0xc90b,0xc90c,0xc90d, - 0xc90e,0xc90f,0xc910,0xc911,0xc912,0xc913,0xc914,0xc915,0xc916,0xc917, - 0xc918,0xc919,0xc91a,0xc91b,0xc91c,0xc91d,0xc91e,0xc91f,0xc920,0xc921, - 0xc922,0xc923,0xc924,0xc925,0xc926,0xc927,0xc928,0xc929,0xc92a,0xc92b, - 0xc92c,0xc92d,0xc92e,0xc92f,0xc930,0xc931,0xc932,0xc933,0xc934,0xc935, - 0xc936,0xc937,0xc938,0xc939,0xc93a,0xc93b,0xc93c,0xc93d,0xc93e,0xc93f, - 0xc940,0xc941,0xc942,0xc943,0xc944,0xc945,0xc946,0xc947,0xc948,0xc949, - 0xc94a,0xc94b,0xc94c,0xc94d,0xc94e,0xc94f,0xc950,0xc951,0xc952,0xc953, - 0xc954,0xc955,0xc956,0xc957,0xc958,0xc959,0xc95a,0xc95b,0xc95c,0xc95d, - 0xc95e,0xc95f,0xc960,0xc961,0xc962,0xc963,0xc964,0xc965,0xc966,0xc967, - 0xc968,0xc969,0xc96a,0xc96b,0xc96c,0xc96d,0xc96e,0xc96f,0xc970,0xc971, - 0xc972,0xc973,0xc974,0xc975,0xc976,0xc977,0xc978,0xc979,0xc97a,0xc97b, - 0xc97c,0xc97d,0xc97e,0xc97f,0xc980,0xc981,0xc982,0xc983,0xc984,0xc985, - 0xc986,0xc987,0xc988,0xc989,0xc98a,0xc98b,0xc98c,0xc98d,0xc98e,0xc98f, - 0xc990,0xc991,0xc992,0xc993,0xc994,0xc995,0xc996,0xc997,0xc998,0xc999, - 0xc99a,0xc99b,0xc99c,0xc99d,0xc99e,0xc99f,0xc9a0,0xc9a1,0xc9a2,0xc9a3, - 0xc9a4,0xc9a5,0xc9a6,0xc9a7,0xc9a8,0xc9a9,0xc9aa,0xc9ab,0xc9ac,0xc9ad, - 0xc9ae,0xc9af,0xc9b0,0xc9b1,0xc9b2,0xc9b3,0xc9b4,0xc9b5,0xc9b6,0xc9b7, - 0xc9b8,0xc9b9,0xc9ba,0xc9bb,0xc9bc,0xc9bd,0xc9be,0xc9bf,0xc9c0,0xc9c1, - 0xc9c2,0xc9c3,0xc9c4,0xc9c5,0xc9c6,0xc9c7,0xc9c8,0xc9c9,0xc9ca,0xc9cb, - 0xc9cc,0xc9cd,0xc9ce,0xc9cf,0xc9d0,0xc9d1,0xc9d2,0xc9d3,0xc9d4,0xc9d5, - 0xc9d6,0xc9d7,0xc9d8,0xc9d9,0xc9da,0xc9db,0xc9dc,0xc9dd,0xc9de,0xc9df, - 0xc9e0,0xc9e1,0xc9e2,0xc9e3,0xc9e4,0xc9e5,0xc9e6,0xc9e7,0xc9e8,0xc9e9, - 0xc9ea,0xc9eb,0xc9ec,0xc9ed,0xc9ee,0xc9ef,0xc9f0,0xc9f1,0xc9f2,0xc9f3, - 0xc9f4,0xc9f5,0xc9f6,0xc9f7,0xc9f8,0xc9f9,0xc9fa,0xc9fb,0xc9fc,0xc9fd, - 0xc9fe,0xc9ff,0xca00,0xca01,0xca02,0xca03,0xca04,0xca05,0xca06,0xca07, - 0xca08,0xca09,0xca0a,0xca0b,0xca0c,0xca0d,0xca0e,0xca0f,0xca10,0xca11, - 0xca12,0xca13,0xca14,0xca15,0xca16,0xca17,0xca18,0xca19,0xca1a,0xca1b, - 0xca1c,0xca1d,0xca1e,0xca1f,0xca20,0xca21,0xca22,0xca23,0xca24,0xca25, - 0xca26,0xca27,0xca28,0xca29,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,0xca47,0xca48,0xca49,0xca4a,0xca4b,0xca4c,0xca4d, - 0xca4e,0xca4f,0xca50,0xca51,0xca52,0xca53,0xca54,0xca55,0xca56,0xca57, - 0xca58,0xca59,0xca5a,0xca5b,0xca5c,0xca5d,0xca5e,0xca5f,0xca60,0xca61, - 0xca62,0xca63,0xca64,0xca65,0xca66,0xca67,0xca68,0xca69,0xca6a,0xca6b, - 0xca6c,0xca6d,0xca6e,0xca6f,0xca70,0xca71,0xca72,0xca73,0xca74,0xca75, - 0xca76,0xca77,0xca78,0xca79,0xca7a,0xca7b,0xca7c,0xca7d,0xca7e,0xca7f, - 0xca80,0xca81,0xca82,0xca83,0xca84,0xca85,0xca86,0xca87,0xca88,0xca89, - 0xca8a,0xca8b,0xca8c,0xca8d,0xca8e,0xca8f,0xca90,0xca91,0xca92,0xca93, - 0xca94,0xca95,0xca96,0xca97,0xca98,0xca99,0xca9a,0xca9b,0xca9c,0xca9d, - 0xca9e,0xca9f,0xcaa0,0xcaa1,0xcaa2,0xcaa3,0xcaa4,0xcaa5,0xcaa6,0xcaa7, - 0xcaa8,0xcaa9,0xcaaa,0xcaab,0xcaac,0xcaad,0xcaae,0xcaaf,0xcab0,0xcab1, - 0xcab2,0xcab3,0xcab4,0xcab5,0xcab6,0xcab7,0xcab8,0xcab9,0xcaba,0xcabb, - 0xcabc,0xcabd,0xcabe,0xcabf,0xcac0,0xcac1,0xcac2,0xcac3,0xcac4,0xcac5, - 0xcac6,0xcac7,0xcac8,0xcac9,0xcaca,0xcacb,0xcacc,0xcacd,0xcace,0xcacf, - 0xcad0,0xcad1,0xcad2,0xcad3,0xcad4,0xcad5,0xcad6,0xcad7,0xcad8,0xcad9, - 0xcada,0xcadb,0xcadc,0xcadd,0xcade,0xcadf,0xcae0,0xcae1,0xcae2,0xcae3, - 0xcae4,0xcae5,0xcae6,0xcae7,0xcae8,0xcae9,0xcaea,0xcaeb,0xcaec,0xcaed, - 0xcaee,0xcaef,0xcaf0,0xcaf1,0xcaf2,0xcaf3,0xcaf4,0xcaf5,0xcaf6,0xcaf7, - 0xcaf8,0xcaf9,0xcafa,0xcafb,0xcafc,0xcafd,0xcafe,0xcaff,0xcb00,0xcb01, - 0xcb02,0xcb03,0xcb04,0xcb05,0xcb06,0xcb07,0xcb08,0xcb09,0xcb0a,0xcb0b, - 0xcb0c,0xcb0d,0xcb0e,0xcb0f,0xcb10,0xcb11,0xcb12,0xcb13,0xcb14,0xcb15, - 0xcb16,0xcb17,0xcb18,0xcb19,0xcb1a,0xcb1b,0xcb1c,0xcb1d,0xcb1e,0xcb1f, - 0xcb20,0xcb21,0xcb22,0xcb23,0xcb24,0xcb25,0xcb26,0xcb27,0xcb28,0xcb29, - 0xcb2a,0xcb2b,0xcb2c,0xcb2d,0xcb2e,0xcb2f,0xcb30,0xcb31,0xcb32,0xcb33, - 0xcb34,0xcb35,0xcb36,0xcb37,0xcb38,0xcb39,0xcb3a,0xcb3b,0xcb3c,0xcb3d, - 0xcb3e,0xcb3f,0xcb40,0xcb41,0xcb42,0xcb43,0xcb44,0xcb45,0xcb46,0xcb47, - 0xcb48,0xcb49,0xcb4a,0xcb4b,0xcb4c,0xcb4d,0xcb4e,0xcb4f,0xcb50,0xcb51, - 0xcb52,0xcb53,0xcb54,0xcb55,0xcb56,0xcb57,0xcb58,0xcb59,0xcb5a,0xcb5b, - 0xcb5c,0xcb5d,0xcb5e,0xcb5f,0xcb60,0xcb61,0xcb62,0xcb63,0xcb64,0xcb65, - 0xcb66,0xcb67,0xcb68,0xcb69,0xcb6a,0xcb6b,0xcb6c,0xcb6d,0xcb6e,0xcb6f, - 0xcb70,0xcb71,0xcb72,0xcb73,0xcb74,0xcb75,0xcb76,0xcb77,0xcb78,0xcb79, - 0xcb7a,0xcb7b,0xcb7c,0xcb7d,0xcb7e,0xcb7f,0xcb80,0xcb81,0xcb82,0xcb83, - 0xcb84,0xcb85,0xcb86,0xcb87,0xcb88,0xcb89,0xcb8a,0xcb8b,0xcb8c,0xcb8d, - 0xcb8e,0xcb8f,0xcb90,0xcb91,0xcb92,0xcb93,0xcb94,0xcb95,0xcb96,0xcb97, - 0xcb98,0xcb99,0xcb9a,0xcb9b,0xcb9c,0xcb9d,0xcb9e,0xcb9f,0xcba0,0xcba1, - 0xcba2,0xcba3,0xcba4,0xcba5,0xcba6,0xcba7,0xcba8,0xcba9,0xcbaa,0xcbab, - 0xcbac,0xcbad,0xcbae,0xcbaf,0xcbb0,0xcbb1,0xcbb2,0xcbb3,0xcbb4,0xcbb5, - 0xcbb6,0xcbb7,0xcbb8,0xcbb9,0xcbba,0xcbbb,0xcbbc,0xcbbd,0xcbbe,0xcbbf, - 0xcbc0,0xcbc1,0xcbc2,0xcbc3,0xcbc4,0xcbc5,0xcbc6,0xcbc7,0xcbc8,0xcbc9, - 0xcbca,0xcbcb,0xcbcc,0xcbcd,0xcbce,0xcbcf,0xcbd0,0xcbd1,0xcbd2,0xcbd3, - 0xcbd4,0xcbd5,0xcbd6,0xcbd7,0xcbd8,0xcbd9,0xcbda,0xcbdb,0xcbdc,0xcbdd, - 0xcbde,0xcbdf,0xcbe0,0xcbe1,0xcbe2,0xcbe3,0xcbe4,0xcbe5,0xcbe6,0xcbe7, - 0xcbe8,0xcbe9,0xcbea,0xcbeb,0xcbec,0xcbed,0xcbee,0xcbef,0xcbf0,0xcbf1, - 0xcbf2,0xcbf3,0xcbf4,0xcbf5,0xcbf6,0xcbf7,0xcbf8,0xcbf9,0xcbfa,0xcbfb, - 0xcbfc,0xcbfd,0xcbfe,0xcbff,0xcc00,0xcc01,0xcc02,0xcc03,0xcc04,0xcc05, - 0xcc06,0xcc07,0xcc08,0xcc09,0xcc0a,0xcc0b,0xcc0c,0xcc0d,0xcc0e,0xcc0f, - 0xcc10,0xcc11,0xcc12,0xcc13,0xcc14,0xcc15,0xcc16,0xcc17,0xcc18,0xcc19, - 0xcc1a,0xcc1b,0xcc1c,0xcc1d,0xcc1e,0xcc1f,0xcc20,0xcc21,0xcc22,0xcc23, - 0xcc24,0xcc25,0xcc26,0xcc27,0xcc28,0xcc29,0xcc2a,0xcc2b,0xcc2c,0xcc2d, - 0xcc2e,0xcc2f,0xcc30,0xcc31,0xcc32,0xcc33,0xcc34,0xcc35,0xcc36,0xcc37, - 0xcc38,0xcc39,0xcc3a,0xcc3b,0xcc3c,0xcc3d,0xcc3e,0xcc3f,0xcc40,0xcc41, - 0xcc42,0xcc43,0xcc44,0xcc45,0xcc46,0xcc47,0xcc48,0xcc49,0xcc4a,0xcc4b, - 0xcc4c,0xcc4d,0xcc4e,0xcc4f,0xcc50,0xcc51,0xcc52,0xcc53,0xcc54,0xcc55, - 0xcc56,0xcc57,0xcc58,0xcc59,0xcc5a,0xcc5b,0xcc5c,0xcc5d,0xcc5e,0xcc5f, - 0xcc60,0xcc61,0xcc62,0xcc63,0xcc64,0xcc65,0xcc66,0xcc67,0xcc68,0xcc69, - 0xcc6a,0xcc6b,0xcc6c,0xcc6d,0xcc6e,0xcc6f,0xcc70,0xcc71,0xcc72,0xcc73, - 0xcc74,0xcc75,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,0xcc94,0xcc95,0xcc96,0xcc97,0xcc98,0xcc99,0xcc9a,0xcc9b, - 0xcc9c,0xcc9d,0xcc9e,0xcc9f,0xcca0,0xcca1,0xcca2,0xcca3,0xcca4,0xcca5, - 0xcca6,0xcca7,0xcca8,0xcca9,0xccaa,0xccab,0xccac,0xccad,0xccae,0xccaf, - 0xccb0,0xccb1,0xccb2,0xccb3,0xccb4,0xccb5,0xccb6,0xccb7,0xccb8,0xccb9, - 0xccba,0xccbb,0xccbc,0xccbd,0xccbe,0xccbf,0xccc0,0xccc1,0xccc2,0xccc3, - 0xccc4,0xccc5,0xccc6,0xccc7,0xccc8,0xccc9,0xccca,0xcccb,0xcccc,0xcccd, - 0xccce,0xcccf,0xccd0,0xccd1,0xccd2,0xccd3,0xccd4,0xccd5,0xccd6,0xccd7, - 0xccd8,0xccd9,0xccda,0xccdb,0xccdc,0xccdd,0xccde,0xccdf,0xcce0,0xcce1, - 0xcce2,0xcce3,0xcce4,0xcce5,0xcce6,0xcce7,0xcce8,0xcce9,0xccea,0xcceb, - 0xccec,0xcced,0xccee,0xccef,0xccf0,0xccf1,0xccf2,0xccf3,0xccf4,0xccf5, - 0xccf6,0xccf7,0xccf8,0xccf9,0xccfa,0xccfb,0xccfc,0xccfd,0xccfe,0xccff, - 0xcd00,0xcd01,0xcd02,0xcd03,0xcd04,0xcd05,0xcd06,0xcd07,0xcd08,0xcd09, - 0xcd0a,0xcd0b,0xcd0c,0xcd0d,0xcd0e,0xcd0f,0xcd10,0xcd11,0xcd12,0xcd13, - 0xcd14,0xcd15,0xcd16,0xcd17,0xcd18,0xcd19,0xcd1a,0xcd1b,0xcd1c,0xcd1d, - 0xcd1e,0xcd1f,0xcd20,0xcd21,0xcd22,0xcd23,0xcd24,0xcd25,0xcd26,0xcd27, - 0xcd28,0xcd29,0xcd2a,0xcd2b,0xcd2c,0xcd2d,0xcd2e,0xcd2f,0xcd30,0xcd31, - 0xcd32,0xcd33,0xcd34,0xcd35,0xcd36,0xcd37,0xcd38,0xcd39,0xcd3a,0xcd3b, - 0xcd3c,0xcd3d,0xcd3e,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,0xcd5c,0xcd5d,0xcd5e,0xcd5f,0xcd60,0xcd61,0xcd62,0xcd63, - 0xcd64,0xcd65,0xcd66,0xcd67,0xcd68,0xcd69,0xcd6a,0xcd6b,0xcd6c,0xcd6d, - 0xcd6e,0xcd6f,0xcd70,0xcd71,0xcd72,0xcd73,0xcd74,0xcd75,0xcd76,0xcd77, - 0xcd78,0xcd79,0xcd7a,0xcd7b,0xcd7c,0xcd7d,0xcd7e,0xcd7f,0xcd80,0xcd81, - 0xcd82,0xcd83,0xcd84,0xcd85,0xcd86,0xcd87,0xcd88,0xcd89,0xcd8a,0xcd8b, - 0xcd8c,0xcd8d,0xcd8e,0xcd8f,0xcd90,0xcd91,0xcd92,0xcd93,0xcd94,0xcd95, - 0xcd96,0xcd97,0xcd98,0xcd99,0xcd9a,0xcd9b,0xcd9c,0xcd9d,0xcd9e,0xcd9f, - 0xcda0,0xcda1,0xcda2,0xcda3,0xcda4,0xcda5,0xcda6,0xcda7,0xcda8,0xcda9, - 0xcdaa,0xcdab,0xcdac,0xcdad,0xcdae,0xcdaf,0xcdb0,0xcdb1,0xcdb2,0xcdb3, - 0xcdb4,0xcdb5,0xcdb6,0xcdb7,0xcdb8,0xcdb9,0xcdba,0xcdbb,0xcdbc,0xcdbd, - 0xcdbe,0xcdbf,0xcdc0,0xcdc1,0xcdc2,0xcdc3,0xcdc4,0xcdc5,0xcdc6,0xcdc7, - 0xcdc8,0xcdc9,0xcdca,0xcdcb,0xcdcc,0xcdcd,0xcdce,0xcdcf,0xcdd0,0xcdd1, - 0xcdd2,0xcdd3,0xcdd4,0xcdd5,0xcdd6,0xcdd7,0xcdd8,0xcdd9,0xcdda,0xcddb, - 0xcddc,0xcddd,0xcdde,0xcddf,0xcde0,0xcde1,0xcde2,0xcde3,0xcde4,0xcde5, - 0xcde6,0xcde7,0xcde8,0xcde9,0xcdea,0xcdeb,0xcdec,0xcded,0xcdee,0xcdef, - 0xcdf0,0xcdf1,0xcdf2,0xcdf3,0xcdf4,0xcdf5,0xcdf6,0xcdf7,0xcdf8,0xcdf9, - 0xcdfa,0xcdfb,0xcdfc,0xcdfd,0xcdfe,0xcdff,0xce00,0xce01,0xce02,0xce03, - 0xce04,0xce05,0xce06,0xce07,0xce08,0xce09,0xce0a,0xce0b,0xce0c,0xce0d, - 0xce0e,0xce0f,0xce10,0xce11,0xce12,0xce13,0xce14,0xce15,0xce16,0xce17, - 0xce18,0xce19,0xce1a,0xce1b,0xce1c,0xce1d,0xce1e,0xce1f,0xce20,0xce21, - 0xce22,0xce23,0xce24,0xce25,0xce26,0xce27,0xce28,0xce29,0xce2a,0xce2b, - 0xce2c,0xce2d,0xce2e,0xce2f,0xce30,0xce31,0xce32,0xce33,0xce34,0xce35, - 0xce36,0xce37,0xce38,0xce39,0xce3a,0xce3b,0xce3c,0xce3d,0xce3e,0xce3f, - 0xce40,0xce41,0xce42,0xce43,0xce44,0xce45,0xce46,0xce47,0xce48,0xce49, - 0xce4a,0xce4b,0xce4c,0xce4d,0xce4e,0xce4f,0xce50,0xce51,0xce52,0xce53, - 0xce54,0xce55,0xce56,0xce57,0xce58,0xce59,0xce5a,0xce5b,0xce5c,0xce5d, - 0xce5e,0xce5f,0xce60,0xce61,0xce62,0xce63,0xce64,0xce65,0xce66,0xce67, - 0xce68,0xce69,0xce6a,0xce6b,0xce6c,0xce6d,0xce6e,0xce6f,0xce70,0xce71, - 0xce72,0xce73,0xce74,0xce75,0xce76,0xce77,0xce78,0xce79,0xce7a,0xce7b, - 0xce7c,0xce7d,0xce7e,0xce7f,0xce80,0xce81,0xce82,0xce83,0xce84,0xce85, - 0xce86,0xce87,0xce88,0xce89,0xce8a,0xce8b,0xce8c,0xce8d,0xce8e,0xce8f, - 0xce90,0xce91,0xce92,0xce93,0xce94,0xce95,0xce96,0xce97,0xce98,0xce99, - 0xce9a,0xce9b,0xce9c,0xce9d,0xce9e,0xce9f,0xcea0,0xcea1,0xcea2,0xcea3, - 0xcea4,0xcea5,0xcea6,0xcea7,0xcea8,0xcea9,0xceaa,0xceab,0xceac,0xcead, - 0xceae,0xceaf,0xceb0,0xceb1,0xceb2,0xceb3,0xceb4,0xceb5,0xceb6,0xceb7, - 0xceb8,0xceb9,0xceba,0xcebb,0xcebc,0xcebd,0xcebe,0xcebf,0xcec0,0xcec1, - 0xcec2,0xcec3,0xcec4,0xcec5,0xcec6,0xcec7,0xcec8,0xcec9,0xceca,0xcecb, - 0xcecc,0xcecd,0xcece,0xcecf,0xced0,0xced1,0xced2,0xced3,0xced4,0xced5, - 0xced6,0xced7,0xced8,0xced9,0xceda,0xcedb,0xcedc,0xcedd,0xcede,0xcedf, - 0xcee0,0xcee1,0xcee2,0xcee3,0xcee4,0xcee5,0xcee6,0xcee7,0xcee8,0xcee9, - 0xceea,0xceeb,0xceec,0xceed,0xceee,0xceef,0xcef0,0xcef1,0xcef2,0xcef3, - 0xcef4,0xcef5,0xcef6,0xcef7,0xcef8,0xcef9,0xcefa,0xcefb,0xcefc,0xcefd, - 0xcefe,0xceff,0xcf00,0xcf01,0xcf02,0xcf03,0xcf04,0xcf05,0xcf06,0xcf07, - 0xcf08,0xcf09,0xcf0a,0xcf0b,0xcf0c,0xcf0d,0xcf0e,0xcf0f,0xcf10,0xcf11, - 0xcf12,0xcf13,0xcf14,0xcf15,0xcf16,0xcf17,0xcf18,0xcf19,0xcf1a,0xcf1b, - 0xcf1c,0xcf1d,0xcf1e,0xcf1f,0xcf20,0xcf21,0xcf22,0xcf23,0xcf24,0xcf25, - 0xcf26,0xcf27,0xcf28,0xcf29,0xcf2a,0xcf2b,0xcf2c,0xcf2d,0xcf2e,0xcf2f, - 0xcf30,0xcf31,0xcf32,0xcf33,0xcf34,0xcf35,0xcf36,0xcf37,0xcf38,0xcf39, - 0xcf3a,0xcf3b,0xcf3c,0xcf3d,0xcf3e,0xcf3f,0xcf40,0xcf41,0xcf42,0xcf43, - 0xcf44,0xcf45,0xcf46,0xcf47,0xcf48,0xcf49,0xcf4a,0xcf4b,0xcf4c,0xcf4d, - 0xcf4e,0xcf4f,0xcf50,0xcf51,0xcf52,0xcf53,0xcf54,0xcf55,0xcf56,0xcf57, - 0xcf58,0xcf59,0xcf5a,0xcf5b,0xcf5c,0xcf5d,0xcf5e,0xcf5f,0xcf60,0xcf61, - 0xcf62,0xcf63,0xcf64,0xcf65,0xcf66,0xcf67,0xcf68,0xcf69,0xcf6a,0xcf6b, - 0xcf6c,0xcf6d,0xcf6e,0xcf6f,0xcf70,0xcf71,0xcf72,0xcf73,0xcf74,0xcf75, - 0xcf76,0xcf77,0xcf78,0xcf79,0xcf7a,0xcf7b,0xcf7c,0xcf7d,0xcf7e,0xcf7f, - 0xcf80,0xcf81,0xcf82,0xcf83,0xcf84,0xcf85,0xcf86,0xcf87,0xcf88,0xcf89, - 0xcf8a,0xcf8b,0xcf8c,0xcf8d,0xcf8e,0xcf8f,0xcf90,0xcf91,0xcf92,0xcf93, - 0xcf94,0xcf95,0xcf96,0xcf97,0xcf98,0xcf99,0xcf9a,0xcf9b,0xcf9c,0xcf9d, - 0xcf9e,0xcf9f,0xcfa0,0xcfa1,0xcfa2,0xcfa3,0xcfa4,0xcfa5,0xcfa6,0xcfa7, - 0xcfa8,0xcfa9,0xcfaa,0xcfab,0xcfac,0xcfad,0xcfae,0xcfaf,0xcfb0,0xcfb1, - 0xcfb2,0xcfb3,0xcfb4,0xcfb5,0xcfb6,0xcfb7,0xcfb8,0xcfb9,0xcfba,0xcfbb, - 0xcfbc,0xcfbd,0xcfbe,0xcfbf,0xcfc0,0xcfc1,0xcfc2,0xcfc3,0xcfc4,0xcfc5, - 0xcfc6,0xcfc7,0xcfc8,0xcfc9,0xcfca,0xcfcb,0xcfcc,0xcfcd,0xcfce,0xcfcf, - 0xcfd0,0xcfd1,0xcfd2,0xcfd3,0xcfd4,0xcfd5,0xcfd6,0xcfd7,0xcfd8,0xcfd9, - 0xcfda,0xcfdb,0xcfdc,0xcfdd,0xcfde,0xcfdf,0xcfe0,0xcfe1,0xcfe2,0xcfe3, - 0xcfe4,0xcfe5,0xcfe6,0xcfe7,0xcfe8,0xcfe9,0xcfea,0xcfeb,0xcfec,0xcfed, - 0xcfee,0xcfef,0xcff0,0xcff1,0xcff2,0xcff3,0xcff4,0xcff5,0xcff6,0xcff7, - 0xcff8,0xcff9,0xcffa,0xcffb,0xcffc,0xcffd,0xcffe,0xcfff,0xd000,0xd001, - 0xd002,0xd003,0xd004,0xd005,0xd006,0xd007,0xd008,0xd009,0xd00a,0xd00b, - 0xd00c,0xd00d,0xd00e,0xd00f,0xd010,0xd011,0xd012,0xd013,0xd014,0xd015, - 0xd016,0xd017,0xd018,0xd019,0xd01a,0xd01b,0xd01c,0xd01d,0xd01e,0xd01f, - 0xd020,0xd021,0xd022,0xd023,0xd024,0xd025,0xd026,0xd027,0xd028,0xd029, - 0xd02a,0xd02b,0xd02c,0xd02d,0xd02e,0xd02f,0xd030,0xd031,0xd032,0xd033, - 0xd034,0xd035,0xd036,0xd037,0xd038,0xd039,0xd03a,0xd03b,0xd03c,0xd03d, - 0xd03e,0xd03f,0xd040,0xd041,0xd042,0xd043,0xd044,0xd045,0xd046,0xd047, - 0xd048,0xd049,0xd04a,0xd04b,0xd04c,0xd04d,0xd04e,0xd04f,0xd050,0xd051, - 0xd052,0xd053,0xd054,0xd055,0xd056,0xd057,0xd058,0xd059,0xd05a,0xd05b, - 0xd05c,0xd05d,0xd05e,0xd05f,0xd060,0xd061,0xd062,0xd063,0xd064,0xd065, - 0xd066,0xd067,0xd068,0xd069,0xd06a,0xd06b,0xd06c,0xd06d,0xd06e,0xd06f, - 0xd070,0xd071,0xd072,0xd073,0xd074,0xd075,0xd076,0xd077,0xd078,0xd079, - 0xd07a,0xd07b,0xd07c,0xd07d,0xd07e,0xd07f,0xd080,0xd081,0xd082,0xd083, - 0xd084,0xd085,0xd086,0xd087,0xd088,0xd089,0xd08a,0xd08b,0xd08c,0xd08d, - 0xd08e,0xd08f,0xd090,0xd091,0xd092,0xd093,0xd094,0xd095,0xd096,0xd097, - 0xd098,0xd099,0xd09a,0xd09b,0xd09c,0xd09d,0xd09e,0xd09f,0xd0a0,0xd0a1, - 0xd0a2,0xd0a3,0xd0a4,0xd0a5,0xd0a6,0xd0a7,0xd0a8,0xd0a9,0xd0aa,0xd0ab, - 0xd0ac,0xd0ad,0xd0ae,0xd0af,0xd0b0,0xd0b1,0xd0b2,0xd0b3,0xd0b4,0xd0b5, - 0xd0b6,0xd0b7,0xd0b8,0xd0b9,0xd0ba,0xd0bb,0xd0bc,0xd0bd,0xd0be,0xd0bf, - 0xd0c0,0xd0c1,0xd0c2,0xd0c3,0xd0c4,0xd0c5,0xd0c6,0xd0c7,0xd0c8,0xd0c9, - 0xd0ca,0xd0cb,0xd0cc,0xd0cd,0xd0ce,0xd0cf,0xd0d0,0xd0d1,0xd0d2,0xd0d3, - 0xd0d4,0xd0d5,0xd0d6,0xd0d7,0xd0d8,0xd0d9,0xd0da,0xd0db,0xd0dc,0xd0dd, - 0xd0de,0xd0df,0xd0e0,0xd0e1,0xd0e2,0xd0e3,0xd0e4,0xd0e5,0xd0e6,0xd0e7, - 0xd0e8,0xd0e9,0xd0ea,0xd0eb,0xd0ec,0xd0ed,0xd0ee,0xd0ef,0xd0f0,0xd0f1, - 0xd0f2,0xd0f3,0xd0f4,0xd0f5,0xd0f6,0xd0f7,0xd0f8,0xd0f9,0xd0fa,0xd0fb, - 0xd0fc,0xd0fd,0xd0fe,0xd0ff,0xd100,0xd101,0xd102,0xd103,0xd104,0xd105, - 0xd106,0xd107,0xd108,0xd109,0xd10a,0xd10b,0xd10c,0xd10d,0xd10e,0xd10f, - 0xd110,0xd111,0xd112,0xd113,0xd114,0xd115,0xd116,0xd117,0xd118,0xd119, - 0xd11a,0xd11b,0xd11c,0xd11d,0xd11e,0xd11f,0xd120,0xd121,0xd122,0xd123, - 0xd124,0xd125,0xd126,0xd127,0xd128,0xd129,0xd12a,0xd12b,0xd12c,0xd12d, - 0xd12e,0xd12f,0xd130,0xd131,0xd132,0xd133,0xd134,0xd135,0xd136,0xd137, - 0xd138,0xd139,0xd13a,0xd13b,0xd13c,0xd13d,0xd13e,0xd13f,0xd140,0xd141, - 0xd142,0xd143,0xd144,0xd145,0xd146,0xd147,0xd148,0xd149,0xd14a,0xd14b, - 0xd14c,0xd14d,0xd14e,0xd14f,0xd150,0xd151,0xd152,0xd153,0xd154,0xd155, - 0xd156,0xd157,0xd158,0xd159,0xd15a,0xd15b,0xd15c,0xd15d,0xd15e,0xd15f, - 0xd160,0xd161,0xd162,0xd163,0xd164,0xd165,0xd166,0xd167,0xd168,0xd169, - 0xd16a,0xd16b,0xd16c,0xd16d,0xd16e,0xd16f,0xd170,0xd171,0xd172,0xd173, - 0xd174,0xd175,0xd176,0xd177,0xd178,0xd179,0xd17a,0xd17b,0xd17c,0xd17d, - 0xd17e,0xd17f,0xd180,0xd181,0xd182,0xd183,0xd184,0xd185,0xd186,0xd187, - 0xd188,0xd189,0xd18a,0xd18b,0xd18c,0xd18d,0xd18e,0xd18f,0xd190,0xd191, - 0xd192,0xd193,0xd194,0xd195,0xd196,0xd197,0xd198,0xd199,0xd19a,0xd19b, - 0xd19c,0xd19d,0xd19e,0xd19f,0xd1a0,0xd1a1,0xd1a2,0xd1a3,0xd1a4,0xd1a5, - 0xd1a6,0xd1a7,0xd1a8,0xd1a9,0xd1aa,0xd1ab,0xd1ac,0xd1ad,0xd1ae,0xd1af, - 0xd1b0,0xd1b1,0xd1b2,0xd1b3,0xd1b4,0xd1b5,0xd1b6,0xd1b7,0xd1b8,0xd1b9, - 0xd1ba,0xd1bb,0xd1bc,0xd1bd,0xd1be,0xd1bf,0xd1c0,0xd1c1,0xd1c2,0xd1c3, - 0xd1c4,0xd1c5,0xd1c6,0xd1c7,0xd1c8,0xd1c9,0xd1ca,0xd1cb,0xd1cc,0xd1cd, - 0xd1ce,0xd1cf,0xd1d0,0xd1d1,0xd1d2,0xd1d3,0xd1d4,0xd1d5,0xd1d6,0xd1d7, - 0xd1d8,0xd1d9,0xd1da,0xd1db,0xd1dc,0xd1dd,0xd1de,0xd1df,0xd1e0,0xd1e1, - 0xd1e2,0xd1e3,0xd1e4,0xd1e5,0xd1e6,0xd1e7,0xd1e8,0xd1e9,0xd1ea,0xd1eb, - 0xd1ec,0xd1ed,0xd1ee,0xd1ef,0xd1f0,0xd1f1,0xd1f2,0xd1f3,0xd1f4,0xd1f5, - 0xd1f6,0xd1f7,0xd1f8,0xd1f9,0xd1fa,0xd1fb,0xd1fc,0xd1fd,0xd1fe,0xd1ff, - 0xd200,0xd201,0xd202,0xd203,0xd204,0xd205,0xd206,0xd207,0xd208,0xd209, - 0xd20a,0xd20b,0xd20c,0xd20d,0xd20e,0xd20f,0xd210,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,0xd22a,0xd22b,0xd22c,0xd22d,0xd22e,0xd22f,0xd230,0xd231, - 0xd232,0xd233,0xd234,0xd235,0xd236,0xd237,0xd238,0xd239,0xd23a,0xd23b, - 0xd23c,0xd23d,0xd23e,0xd23f,0xd240,0xd241,0xd242,0xd243,0xd244,0xd245, - 0xd246,0xd247,0xd248,0xd249,0xd24a,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, - 0xd264,0xd265,0xd266,0xd267,0xd268,0xd269,0xd26a,0xd26b,0xd26c,0xd26d, - 0xd26e,0xd26f,0xd270,0xd271,0xd272,0xd273,0xd274,0xd275,0xd276,0xd277, - 0xd278,0xd279,0xd27a,0xd27b,0xd27c,0xd27d,0xd27e,0xd27f,0xd280,0xd281, - 0xd282,0xd283,0xd284,0xd285,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,0xd2a1,0xd2a2,0xd2a3,0xd2a4,0xd2a5,0xd2a6,0xd2a7,0xd2a8,0xd2a9, - 0xd2aa,0xd2ab,0xd2ac,0xd2ad,0xd2ae,0xd2af,0xd2b0,0xd2b1,0xd2b2,0xd2b3, - 0xd2b4,0xd2b5,0xd2b6,0xd2b7,0xd2b8,0xd2b9,0xd2ba,0xd2bb,0xd2bc,0xd2bd, - 0xd2be,0xd2bf,0xd2c0,0xd2c1,0xd2c2,0xd2c3,0xd2c4,0xd2c5,0xd2c6,0xd2c7, - 0xd2c8,0xd2c9,0xd2ca,0xd2cb,0xd2cc,0xd2cd,0xd2ce,0xd2cf,0xd2d0,0xd2d1, - 0xd2d2,0xd2d3,0xd2d4,0xd2d5,0xd2d6,0xd2d7,0xd2d8,0xd2d9,0xd2da,0xd2db, - 0xd2dc,0xd2dd,0xd2de,0xd2df,0xd2e0,0xd2e1,0xd2e2,0xd2e3,0xd2e4,0xd2e5, - 0xd2e6,0xd2e7,0xd2e8,0xd2e9,0xd2ea,0xd2eb,0xd2ec,0xd2ed,0xd2ee,0xd2ef, - 0xd2f0,0xd2f1,0xd2f2,0xd2f3,0xd2f4,0xd2f5,0xd2f6,0xd2f7,0xd2f8,0xd2f9, - 0xd2fa,0xd2fb,0xd2fc,0xd2fd,0xd2fe,0xd2ff,0xd300,0xd301,0xd302,0xd303, - 0xd304,0xd305,0xd306,0xd307,0xd308,0xd309,0xd30a,0xd30b,0xd30c,0xd30d, - 0xd30e,0xd30f,0xd310,0xd311,0xd312,0xd313,0xd314,0xd315,0xd316,0xd317, - 0xd318,0xd319,0xd31a,0xd31b,0xd31c,0xd31d,0xd31e,0xd31f,0xd320,0xd321, - 0xd322,0xd323,0xd324,0xd325,0xd326,0xd327,0xd328,0xd329,0xd32a,0xd32b, - 0xd32c,0xd32d,0xd32e,0xd32f,0xd330,0xd331,0xd332,0xd333,0xd334,0xd335, - 0xd336,0xd337,0xd338,0xd339,0xd33a,0xd33b,0xd33c,0xd33d,0xd33e,0xd33f, - 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,0xd35f,0xd360,0xd361,0xd362,0xd363,0xd364,0xd365,0xd366,0xd367, - 0xd368,0xd369,0xd36a,0xd36b,0xd36c,0xd36d,0xd36e,0xd36f,0xd370,0xd371, - 0xd372,0xd373,0xd374,0xd375,0xd376,0xd377,0xd378,0xd379,0xd37a,0xd37b, - 0xd37c,0xd37d,0xd37e,0xd37f,0xd380,0xd381,0xd382,0xd383,0xd384,0xd385, - 0xd386,0xd387,0xd388,0xd389,0xd38a,0xd38b,0xd38c,0xd38d,0xd38e,0xd38f, - 0xd390,0xd391,0xd392,0xd393,0xd394,0xd395,0xd396,0xd397,0xd398,0xd399, - 0xd39a,0xd39b,0xd39c,0xd39d,0xd39e,0xd39f,0xd3a0,0xd3a1,0xd3a2,0xd3a3, - 0xd3a4,0xd3a5,0xd3a6,0xd3a7,0xd3a8,0xd3a9,0xd3aa,0xd3ab,0xd3ac,0xd3ad, - 0xd3ae,0xd3af,0xd3b0,0xd3b1,0xd3b2,0xd3b3,0xd3b4,0xd3b5,0xd3b6,0xd3b7, - 0xd3b8,0xd3b9,0xd3ba,0xd3bb,0xd3bc,0xd3bd,0xd3be,0xd3bf,0xd3c0,0xd3c1, - 0xd3c2,0xd3c3,0xd3c4,0xd3c5,0xd3c6,0xd3c7,0xd3c8,0xd3c9,0xd3ca,0xd3cb, - 0xd3cc,0xd3cd,0xd3ce,0xd3cf,0xd3d0,0xd3d1,0xd3d2,0xd3d3,0xd3d4,0xd3d5, - 0xd3d6,0xd3d7,0xd3d8,0xd3d9,0xd3da,0xd3db,0xd3dc,0xd3dd,0xd3de,0xd3df, - 0xd3e0,0xd3e1,0xd3e2,0xd3e3,0xd3e4,0xd3e5,0xd3e6,0xd3e7,0xd3e8,0xd3e9, - 0xd3ea,0xd3eb,0xd3ec,0xd3ed,0xd3ee,0xd3ef,0xd3f0,0xd3f1,0xd3f2,0xd3f3, - 0xd3f4,0xd3f5,0xd3f6,0xd3f7,0xd3f8,0xd3f9,0xd3fa,0xd3fb,0xd3fc,0xd3fd, - 0xd3fe,0xd3ff,0xd400,0xd401,0xd402,0xd403,0xd404,0xd405,0xd406,0xd407, - 0xd408,0xd409,0xd40a,0xd40b,0xd40c,0xd40d,0xd40e,0xd40f,0xd410,0xd411, - 0xd412,0xd413,0xd414,0xd415,0xd416,0xd417,0xd418,0xd419,0xd41a,0xd41b, - 0xd41c,0xd41d,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,0xd438,0xd439, - 0xd43a,0xd43b,0xd43c,0xd43d,0xd43e,0xd43f,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,0xd460,0xd461, - 0xd462,0xd463,0xd464,0xd465,0xd466,0xd467,0xd468,0xd469,0xd46a,0xd46b, - 0xd46c,0xd46d,0xd46e,0xd46f,0xd470,0xd471,0xd472,0xd473,0xd474,0xd475, - 0xd476,0xd477,0xd478,0xd479,0xd47a,0xd47b,0xd47c,0xd47d,0xd47e,0xd47f, - 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,0xd49a,0xd49b,0xd49c,0xd49d, - 0xd49e,0xd49f,0xd4a0,0xd4a1,0xd4a2,0xd4a3,0xd4a4,0xd4a5,0xd4a6,0xd4a7, - 0xd4a8,0xd4a9,0xd4aa,0xd4ab,0xd4ac,0xd4ad,0xd4ae,0xd4af,0xd4b0,0xd4b1, - 0xd4b2,0xd4b3,0xd4b4,0xd4b5,0xd4b6,0xd4b7,0xd4b8,0xd4b9,0xd4ba,0xd4bb, - 0xd4bc,0xd4bd,0xd4be,0xd4bf,0xd4c0,0xd4c1,0xd4c2,0xd4c3,0xd4c4,0xd4c5, - 0xd4c6,0xd4c7,0xd4c8,0xd4c9,0xd4ca,0xd4cb,0xd4cc,0xd4cd,0xd4ce,0xd4cf, - 0xd4d0,0xd4d1,0xd4d2,0xd4d3,0xd4d4,0xd4d5,0xd4d6,0xd4d7,0xd4d8,0xd4d9, - 0xd4da,0xd4db,0xd4dc,0xd4dd,0xd4de,0xd4df,0xd4e0,0xd4e1,0xd4e2,0xd4e3, - 0xd4e4,0xd4e5,0xd4e6,0xd4e7,0xd4e8,0xd4e9,0xd4ea,0xd4eb,0xd4ec,0xd4ed, - 0xd4ee,0xd4ef,0xd4f0,0xd4f1,0xd4f2,0xd4f3,0xd4f4,0xd4f5,0xd4f6,0xd4f7, - 0xd4f8,0xd4f9,0xd4fa,0xd4fb,0xd4fc,0xd4fd,0xd4fe,0xd4ff,0xd500,0xd501, - 0xd502,0xd503,0xd504,0xd505,0xd506,0xd507,0xd508,0xd509,0xd50a,0xd50b, - 0xd50c,0xd50d,0xd50e,0xd50f,0xd510,0xd511,0xd512,0xd513,0xd514,0xd515, - 0xd516,0xd517,0xd518,0xd519,0xd51a,0xd51b,0xd51c,0xd51d,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,0xd538,0xd539,0xd53a,0xd53b,0xd53c,0xd53d, - 0xd53e,0xd53f,0xd540,0xd541,0xd542,0xd543,0xd544,0xd545,0xd546,0xd547, - 0xd548,0xd549,0xd54a,0xd54b,0xd54c,0xd54d,0xd54e,0xd54f,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,0xd57f,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,0xd5a1, - 0xd5a2,0xd5a3,0xd5a4,0xd5a5,0xd5a6,0xd5a7,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,0xd5c8,0xd5c9, - 0xd5ca,0xd5cb,0xd5cc,0xd5cd,0xd5ce,0xd5cf,0xd5d0,0xd5d1,0xd5d2,0xd5d3, - 0xd5d4,0xd5d5,0xd5d6,0xd5d7,0xd5d8,0xd5d9,0xd5da,0xd5db,0xd5dc,0xd5dd, - 0xd5de,0xd5df,0xd5e0,0xd5e1,0xd5e2,0xd5e3,0xd5e4,0xd5e5,0xd5e6,0xd5e7, - 0xd5e8,0xd5e9,0xd5ea,0xd5eb,0xd5ec,0xd5ed,0xd5ee,0xd5ef,0xd5f0,0xd5f1, - 0xd5f2,0xd5f3,0xd5f4,0xd5f5,0xd5f6,0xd5f7,0xd5f8,0xd5f9,0xd5fa,0xd5fb, - 0xd5fc,0xd5fd,0xd5fe,0xd5ff,0xd600,0xd601,0xd602,0xd603,0xd604,0xd605, - 0xd606,0xd607,0xd608,0xd609,0xd60a,0xd60b,0xd60c,0xd60d,0xd60e,0xd60f, - 0xd610,0xd611,0xd612,0xd613,0xd614,0xd615,0xd616,0xd617,0xd618,0xd619, - 0xd61a,0xd61b,0xd61c,0xd61d,0xd61e,0xd61f,0xd620,0xd621,0xd622,0xd623, - 0xd624,0xd625,0xd626,0xd627,0xd628,0xd629,0xd62a,0xd62b,0xd62c,0xd62d, - 0xd62e,0xd62f,0xd630,0xd631,0xd632,0xd633,0xd634,0xd635,0xd636,0xd637, - 0xd638,0xd639,0xd63a,0xd63b,0xd63c,0xd63d,0xd63e,0xd63f,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,0xd65c,0xd65d,0xd65e,0xd65f, - 0xd660,0xd661,0xd662,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,0xd67f,0xd680,0xd681,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,0xd6a1,0xd6a2,0xd6a3,0xd6a4,0xd6a5, - 0xd6a6,0xd6a7,0xd6a8,0xd6a9,0xd6aa,0xd6ab,0xd6ac,0xd6ad,0xd6ae,0xd6af, - 0xd6b0,0xd6b1,0xd6b2,0xd6b3,0xd6b4,0xd6b5,0xd6b6,0xd6b7,0xd6b8,0xd6b9, - 0xd6ba,0xd6bb,0xd6bc,0xd6bd,0xd6be,0xd6bf,0xd6c0,0xd6c1,0xd6c2,0xd6c3, - 0xd6c4,0xd6c5,0xd6c6,0xd6c7,0xd6c8,0xd6c9,0xd6ca,0xd6cb,0xd6cc,0xd6cd, - 0xd6ce,0xd6cf,0xd6d0,0xd6d1,0xd6d2,0xd6d3,0xd6d4,0xd6d5,0xd6d6,0xd6d7, - 0xd6d8,0xd6d9,0xd6da,0xd6db,0xd6dc,0xd6dd,0xd6de,0xd6df,0xd6e0,0xd6e1, - 0xd6e2,0xd6e3,0xd6e4,0xd6e5,0xd6e6,0xd6e7,0xd6e8,0xd6e9,0xd6ea,0xd6eb, - 0xd6ec,0xd6ed,0xd6ee,0xd6ef,0xd6f0,0xd6f1,0xd6f2,0xd6f3,0xd6f4,0xd6f5, - 0xd6f6,0xd6f7,0xd6f8,0xd6f9,0xd6fa,0xd6fb,0xd6fc,0xd6fd,0xd6fe,0xd6ff, - 0xd700,0xd701,0xd702,0xd703,0xd704,0xd705,0xd706,0xd707,0xd708,0xd709, - 0xd70a,0xd70b,0xd70c,0xd70d,0xd70e,0xd70f,0xd710,0xd711,0xd712,0xd713, - 0xd714,0xd715,0xd716,0xd717,0xd718,0xd719,0xd71a,0xd71b,0xd71c,0xd71d, - 0xd71e,0xd71f,0xd720,0xd721,0xd722,0xd723,0xd724,0xd725,0xd726,0xd727, - 0xd728,0xd729,0xd72a,0xd72b,0xd72c,0xd72d,0xd72e,0xd72f,0xd730,0xd731, - 0xd732,0xd733,0xd734,0xd735,0xd736,0xd737,0xd738,0xd739,0xd73a,0xd73b, - 0xd73c,0xd73d,0xd73e,0xd73f,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,0xd760,0xd761,0xd762,0xd763, - 0xd764,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,0xd77f,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,0xd799,0xd79a,0xd79b,0xd79c,0xd79d,0xd79e,0xd79f, - 0xd7a0,0xd7a1,0xd7a2,0xd7a3,0xf900,0xf901,0xf902,0xf903,0xf904,0xf905, - 0xf906,0xf907,0xf908,0xf909,0xf90a,0xf90b,0xf90c,0xf90d,0xf90e,0xf90f, - 0xf910,0xf911,0xf912,0xf913,0xf914,0xf915,0xf916,0xf917,0xf918,0xf919, - 0xf91a,0xf91b,0xf91c,0xf91d,0xf91e,0xf91f,0xf920,0xf921,0xf922,0xf923, - 0xf924,0xf925,0xf926,0xf927,0xf928,0xf929,0xf92a,0xf92b,0xf92c,0xf92d, - 0xf92e,0xf92f,0xf930,0xf931,0xf932,0xf933,0xf934,0xf935,0xf936,0xf937, - 0xf938,0xf939,0xf93a,0xf93b,0xf93c,0xf93d,0xf93e,0xf93f,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,0xf97f,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,0xf9a1,0xf9a2,0xf9a3,0xf9a4,0xf9a5, - 0xf9a6,0xf9a7,0xf9a8,0xf9a9,0xf9aa,0xf9ab,0xf9ac,0xf9ad,0xf9ae,0xf9af, - 0xf9b0,0xf9b1,0xf9b2,0xf9b3,0xf9b4,0xf9b5,0xf9b6,0xf9b7,0xf9b8,0xf9b9, - 0xf9ba,0xf9bb,0xf9bc,0xf9bd,0xf9be,0xf9bf,0xf9c0,0xf9c1,0xf9c2,0xf9c3, - 0xf9c4,0xf9c5,0xf9c6,0xf9c7,0xf9c8,0xf9c9,0xf9ca,0xf9cb,0xf9cc,0xf9cd, - 0xf9ce,0xf9cf,0xf9d0,0xf9d1,0xf9d2,0xf9d3,0xf9d4,0xf9d5,0xf9d6,0xf9d7, - 0xf9d8,0xf9d9,0xf9da,0xf9db,0xf9dc,0xf9dd,0xf9de,0xf9df,0xf9e0,0xf9e1, - 0xf9e2,0xf9e3,0xf9e4,0xf9e5,0xf9e6,0xf9e7,0xf9e8,0xf9e9,0xf9ea,0xf9eb, - 0xf9ec,0xf9ed,0xf9ee,0xf9ef,0xf9f0,0xf9f1,0xf9f2,0xf9f3,0xf9f4,0xf9f5, - 0xf9f6,0xf9f7,0xf9f8,0xf9f9,0xf9fa,0xf9fb,0xf9fc,0xf9fd,0xf9fe,0xf9ff, - 0xfa00,0xfa01,0xfa02,0xfa03,0xfa04,0xfa05,0xfa06,0xfa07,0xfa08,0xfa09, - 0xfa0a,0xfa0b,0xfa0c,0xfa0d,0xfa0e,0xfa0f,0xfa10,0xfa11,0xfa12,0xfa13, - 0xfa14,0xfa15,0xfa16,0xfa17,0xfa18,0xfa19,0xfa1a,0xfa1b,0xfa1c,0xfa1d, - 0xfa1e,0xfa1f,0xfa20,0xfa21,0xfa22,0xfa23,0xfa24,0xfa25,0xfa26,0xfa27, - 0xfa28,0xfa29,0xfa2a,0xfa2b,0xfa2c,0xfa2d,0xfa30,0xfa31,0xfa32,0xfa33, - 0xfa34,0xfa35,0xfa36,0xfa37,0xfa38,0xfa39,0xfa3a,0xfa3b,0xfa3c,0xfa3d, - 0xfa3e,0xfa3f,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,0xfa70,0xfa71,0xfa72,0xfa73,0xfa74, - 0xfa75,0xfa76,0xfa77,0xfa78,0xfa79,0xfa7a,0xfa7b,0xfa7c,0xfa7d,0xfa7e, - 0xfa7f,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,0xfa9e,0xfa9f,0xfaa0,0xfaa1,0xfaa2,0xfaa3,0xfaa4,0xfaa5,0xfaa6, - 0xfaa7,0xfaa8,0xfaa9,0xfaaa,0xfaab,0xfaac,0xfaad,0xfaae,0xfaaf,0xfab0, - 0xfab1,0xfab2,0xfab3,0xfab4,0xfab5,0xfab6,0xfab7,0xfab8,0xfab9,0xfaba, - 0xfabb,0xfabc,0xfabd,0xfabe,0xfabf,0xfac0,0xfac1,0xfac2,0xfac3,0xfac4, - 0xfac5,0xfac6,0xfac7,0xfac8,0xfac9,0xfaca,0xfacb,0xfacc,0xfacd,0xface, - 0xfacf,0xfad0,0xfad1,0xfad2,0xfad3,0xfad4,0xfad5,0xfad6,0xfad7,0xfad8, - 0xfad9,0xfe30,0xfe31,0xfe32,0xfe33,0xfe34,0xfe45,0xfe46,0xfe49,0xfe4a, - 0xfe4b,0xfe4c,0xfe4d,0xfe4e,0xfe4f,0xfe51,0xfe58,0xfe5f,0xfe60,0xfe61, - 0xfe62,0xfe63,0xfe64,0xfe65,0xfe66,0xfe68,0xff02,0xff03,0xff06,0xff07, - 0xff0a,0xff0b,0xff0d,0xff0f,0xff10,0xff11,0xff12,0xff13,0xff14,0xff15, - 0xff16,0xff17,0xff18,0xff19,0xff1c,0xff1d,0xff1e,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,0xff3c,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,0xff5c,0xff5e,0xffe2,0xffe3,0xffe4, - 0xd840,0xdc00,0xd840,0xdc01,0xd840,0xdc02,0xd840,0xdc03,0xd840,0xdc04, - 0xd840,0xdc05,0xd840,0xdc06,0xd840,0xdc07,0xd840,0xdc08,0xd840,0xdc09, - 0xd840,0xdc0a,0xd840,0xdc0b,0xd840,0xdc0c,0xd840,0xdc0d,0xd840,0xdc0e, - 0xd840,0xdc0f,0xd840,0xdc10,0xd840,0xdc11,0xd840,0xdc12,0xd840,0xdc13, - 0xd840,0xdc14,0xd840,0xdc15,0xd840,0xdc16,0xd840,0xdc17,0xd840,0xdc18, - 0xd840,0xdc19,0xd840,0xdc1a,0xd840,0xdc1b,0xd840,0xdc1c,0xd840,0xdc1d, - 0xd840,0xdc1e,0xd840,0xdc1f,0xd840,0xdc20,0xd840,0xdc21,0xd840,0xdc22, - 0xd840,0xdc23,0xd840,0xdc24,0xd840,0xdc25,0xd840,0xdc26,0xd840,0xdc27, - 0xd840,0xdc28,0xd840,0xdc29,0xd840,0xdc2a,0xd840,0xdc2b,0xd840,0xdc2c, - 0xd840,0xdc2d,0xd840,0xdc2e,0xd840,0xdc2f,0xd840,0xdc30,0xd840,0xdc31, - 0xd840,0xdc32,0xd840,0xdc33,0xd840,0xdc34,0xd840,0xdc35,0xd840,0xdc36, - 0xd840,0xdc37,0xd840,0xdc38,0xd840,0xdc39,0xd840,0xdc3a,0xd840,0xdc3b, - 0xd840,0xdc3c,0xd840,0xdc3d,0xd840,0xdc3e,0xd840,0xdc3f,0xd840,0xdc40, - 0xd840,0xdc41,0xd840,0xdc42,0xd840,0xdc43,0xd840,0xdc44,0xd840,0xdc45, - 0xd840,0xdc46,0xd840,0xdc47,0xd840,0xdc48,0xd840,0xdc49,0xd840,0xdc4a, - 0xd840,0xdc4b,0xd840,0xdc4c,0xd840,0xdc4d,0xd840,0xdc4e,0xd840,0xdc4f, - 0xd840,0xdc50,0xd840,0xdc51,0xd840,0xdc52,0xd840,0xdc53,0xd840,0xdc54, - 0xd840,0xdc55,0xd840,0xdc56,0xd840,0xdc57,0xd840,0xdc58,0xd840,0xdc59, - 0xd840,0xdc5a,0xd840,0xdc5b,0xd840,0xdc5c,0xd840,0xdc5d,0xd840,0xdc5e, - 0xd840,0xdc5f,0xd840,0xdc60,0xd840,0xdc61,0xd840,0xdc62,0xd840,0xdc63, - 0xd840,0xdc64,0xd840,0xdc65,0xd840,0xdc66,0xd840,0xdc67,0xd840,0xdc68, - 0xd840,0xdc69,0xd840,0xdc6a,0xd840,0xdc6b,0xd840,0xdc6c,0xd840,0xdc6d, - 0xd840,0xdc6e,0xd840,0xdc6f,0xd840,0xdc70,0xd840,0xdc71,0xd840,0xdc72, - 0xd840,0xdc73,0xd840,0xdc74,0xd840,0xdc75,0xd840,0xdc76,0xd840,0xdc77, - 0xd840,0xdc78,0xd840,0xdc79,0xd840,0xdc7a,0xd840,0xdc7b,0xd840,0xdc7c, - 0xd840,0xdc7d,0xd840,0xdc7e,0xd840,0xdc7f,0xd840,0xdc80,0xd840,0xdc81, - 0xd840,0xdc82,0xd840,0xdc83,0xd840,0xdc84,0xd840,0xdc85,0xd840,0xdc86, - 0xd840,0xdc87,0xd840,0xdc88,0xd840,0xdc89,0xd840,0xdc8a,0xd840,0xdc8b, - 0xd840,0xdc8c,0xd840,0xdc8d,0xd840,0xdc8e,0xd840,0xdc8f,0xd840,0xdc90, - 0xd840,0xdc91,0xd840,0xdc92,0xd840,0xdc93,0xd840,0xdc94,0xd840,0xdc95, - 0xd840,0xdc96,0xd840,0xdc97,0xd840,0xdc98,0xd840,0xdc99,0xd840,0xdc9a, - 0xd840,0xdc9b,0xd840,0xdc9c,0xd840,0xdc9d,0xd840,0xdc9e,0xd840,0xdc9f, - 0xd840,0xdca0,0xd840,0xdca1,0xd840,0xdca2,0xd840,0xdca3,0xd840,0xdca4, - 0xd840,0xdca5,0xd840,0xdca6,0xd840,0xdca7,0xd840,0xdca8,0xd840,0xdca9, - 0xd840,0xdcaa,0xd840,0xdcab,0xd840,0xdcac,0xd840,0xdcad,0xd840,0xdcae, - 0xd840,0xdcaf,0xd840,0xdcb0,0xd840,0xdcb1,0xd840,0xdcb2,0xd840,0xdcb3, - 0xd840,0xdcb4,0xd840,0xdcb5,0xd840,0xdcb6,0xd840,0xdcb7,0xd840,0xdcb8, - 0xd840,0xdcb9,0xd840,0xdcba,0xd840,0xdcbb,0xd840,0xdcbc,0xd840,0xdcbd, - 0xd840,0xdcbe,0xd840,0xdcbf,0xd840,0xdcc0,0xd840,0xdcc1,0xd840,0xdcc2, - 0xd840,0xdcc3,0xd840,0xdcc4,0xd840,0xdcc5,0xd840,0xdcc6,0xd840,0xdcc7, - 0xd840,0xdcc8,0xd840,0xdcc9,0xd840,0xdcca,0xd840,0xdccb,0xd840,0xdccc, - 0xd840,0xdccd,0xd840,0xdcce,0xd840,0xdccf,0xd840,0xdcd0,0xd840,0xdcd1, - 0xd840,0xdcd2,0xd840,0xdcd3,0xd840,0xdcd4,0xd840,0xdcd5,0xd840,0xdcd6, - 0xd840,0xdcd7,0xd840,0xdcd8,0xd840,0xdcd9,0xd840,0xdcda,0xd840,0xdcdb, - 0xd840,0xdcdc,0xd840,0xdcdd,0xd840,0xdcde,0xd840,0xdcdf,0xd840,0xdce0, - 0xd840,0xdce1,0xd840,0xdce2,0xd840,0xdce3,0xd840,0xdce4,0xd840,0xdce5, - 0xd840,0xdce6,0xd840,0xdce7,0xd840,0xdce8,0xd840,0xdce9,0xd840,0xdcea, - 0xd840,0xdceb,0xd840,0xdcec,0xd840,0xdced,0xd840,0xdcee,0xd840,0xdcef, - 0xd840,0xdcf0,0xd840,0xdcf1,0xd840,0xdcf2,0xd840,0xdcf3,0xd840,0xdcf4, - 0xd840,0xdcf5,0xd840,0xdcf6,0xd840,0xdcf7,0xd840,0xdcf8,0xd840,0xdcf9, - 0xd840,0xdcfa,0xd840,0xdcfb,0xd840,0xdcfc,0xd840,0xdcfd,0xd840,0xdcfe, - 0xd840,0xdcff,0xd840,0xdd00,0xd840,0xdd01,0xd840,0xdd02,0xd840,0xdd03, - 0xd840,0xdd04,0xd840,0xdd05,0xd840,0xdd06,0xd840,0xdd07,0xd840,0xdd08, - 0xd840,0xdd09,0xd840,0xdd0a,0xd840,0xdd0b,0xd840,0xdd0c,0xd840,0xdd0d, - 0xd840,0xdd0e,0xd840,0xdd0f,0xd840,0xdd10,0xd840,0xdd11,0xd840,0xdd12, - 0xd840,0xdd13,0xd840,0xdd14,0xd840,0xdd15,0xd840,0xdd16,0xd840,0xdd17, - 0xd840,0xdd18,0xd840,0xdd19,0xd840,0xdd1a,0xd840,0xdd1b,0xd840,0xdd1c, - 0xd840,0xdd1d,0xd840,0xdd1e,0xd840,0xdd1f,0xd840,0xdd20,0xd840,0xdd21, - 0xd840,0xdd22,0xd840,0xdd23,0xd840,0xdd24,0xd840,0xdd25,0xd840,0xdd26, - 0xd840,0xdd27,0xd840,0xdd28,0xd840,0xdd29,0xd840,0xdd2a,0xd840,0xdd2b, - 0xd840,0xdd2c,0xd840,0xdd2d,0xd840,0xdd2e,0xd840,0xdd2f,0xd840,0xdd30, - 0xd840,0xdd31,0xd840,0xdd32,0xd840,0xdd33,0xd840,0xdd34,0xd840,0xdd35, - 0xd840,0xdd36,0xd840,0xdd37,0xd840,0xdd38,0xd840,0xdd39,0xd840,0xdd3a, - 0xd840,0xdd3b,0xd840,0xdd3c,0xd840,0xdd3d,0xd840,0xdd3e,0xd840,0xdd3f, - 0xd840,0xdd40,0xd840,0xdd41,0xd840,0xdd42,0xd840,0xdd43,0xd840,0xdd44, - 0xd840,0xdd45,0xd840,0xdd46,0xd840,0xdd47,0xd840,0xdd48,0xd840,0xdd49, - 0xd840,0xdd4a,0xd840,0xdd4b,0xd840,0xdd4c,0xd840,0xdd4d,0xd840,0xdd4e, - 0xd840,0xdd4f,0xd840,0xdd50,0xd840,0xdd51,0xd840,0xdd52,0xd840,0xdd53, - 0xd840,0xdd54,0xd840,0xdd55,0xd840,0xdd56,0xd840,0xdd57,0xd840,0xdd58, - 0xd840,0xdd59,0xd840,0xdd5a,0xd840,0xdd5b,0xd840,0xdd5c,0xd840,0xdd5d, - 0xd840,0xdd5e,0xd840,0xdd5f,0xd840,0xdd60,0xd840,0xdd61,0xd840,0xdd62, - 0xd840,0xdd63,0xd840,0xdd64,0xd840,0xdd65,0xd840,0xdd66,0xd840,0xdd67, - 0xd840,0xdd68,0xd840,0xdd69,0xd840,0xdd6a,0xd840,0xdd6b,0xd840,0xdd6c, - 0xd840,0xdd6d,0xd840,0xdd6e,0xd840,0xdd6f,0xd840,0xdd70,0xd840,0xdd71, - 0xd840,0xdd72,0xd840,0xdd73,0xd840,0xdd74,0xd840,0xdd75,0xd840,0xdd76, - 0xd840,0xdd77,0xd840,0xdd78,0xd840,0xdd79,0xd840,0xdd7a,0xd840,0xdd7b, - 0xd840,0xdd7c,0xd840,0xdd7d,0xd840,0xdd7e,0xd840,0xdd7f,0xd840,0xdd80, - 0xd840,0xdd81,0xd840,0xdd82,0xd840,0xdd83,0xd840,0xdd84,0xd840,0xdd85, - 0xd840,0xdd86,0xd840,0xdd87,0xd840,0xdd88,0xd840,0xdd89,0xd840,0xdd8a, - 0xd840,0xdd8b,0xd840,0xdd8c,0xd840,0xdd8d,0xd840,0xdd8e,0xd840,0xdd8f, - 0xd840,0xdd90,0xd840,0xdd91,0xd840,0xdd92,0xd840,0xdd93,0xd840,0xdd94, - 0xd840,0xdd95,0xd840,0xdd96,0xd840,0xdd97,0xd840,0xdd98,0xd840,0xdd99, - 0xd840,0xdd9a,0xd840,0xdd9b,0xd840,0xdd9c,0xd840,0xdd9d,0xd840,0xdd9e, - 0xd840,0xdd9f,0xd840,0xdda0,0xd840,0xdda1,0xd840,0xdda2,0xd840,0xdda3, - 0xd840,0xdda4,0xd840,0xdda5,0xd840,0xdda6,0xd840,0xdda7,0xd840,0xdda8, - 0xd840,0xdda9,0xd840,0xddaa,0xd840,0xddab,0xd840,0xddac,0xd840,0xddad, - 0xd840,0xddae,0xd840,0xddaf,0xd840,0xddb0,0xd840,0xddb1,0xd840,0xddb2, - 0xd840,0xddb3,0xd840,0xddb4,0xd840,0xddb5,0xd840,0xddb6,0xd840,0xddb7, - 0xd840,0xddb8,0xd840,0xddb9,0xd840,0xddba,0xd840,0xddbb,0xd840,0xddbc, - 0xd840,0xddbd,0xd840,0xddbe,0xd840,0xddbf,0xd840,0xddc0,0xd840,0xddc1, - 0xd840,0xddc2,0xd840,0xddc3,0xd840,0xddc4,0xd840,0xddc5,0xd840,0xddc6, - 0xd840,0xddc7,0xd840,0xddc8,0xd840,0xddc9,0xd840,0xddca,0xd840,0xddcb, - 0xd840,0xddcc,0xd840,0xddcd,0xd840,0xddce,0xd840,0xddcf,0xd840,0xddd0, - 0xd840,0xddd1,0xd840,0xddd2,0xd840,0xddd3,0xd840,0xddd4,0xd840,0xddd5, - 0xd840,0xddd6,0xd840,0xddd7,0xd840,0xddd8,0xd840,0xddd9,0xd840,0xddda, - 0xd840,0xdddb,0xd840,0xdddc,0xd840,0xdddd,0xd840,0xddde,0xd840,0xdddf, - 0xd840,0xdde0,0xd840,0xdde1,0xd840,0xdde2,0xd840,0xdde3,0xd840,0xdde4, - 0xd840,0xdde5,0xd840,0xdde6,0xd840,0xdde7,0xd840,0xdde8,0xd840,0xdde9, - 0xd840,0xddea,0xd840,0xddeb,0xd840,0xddec,0xd840,0xdded,0xd840,0xddee, - 0xd840,0xddef,0xd840,0xddf0,0xd840,0xddf1,0xd840,0xddf2,0xd840,0xddf3, - 0xd840,0xddf4,0xd840,0xddf5,0xd840,0xddf6,0xd840,0xddf7,0xd840,0xddf8, - 0xd840,0xddf9,0xd840,0xddfa,0xd840,0xddfb,0xd840,0xddfc,0xd840,0xddfd, - 0xd840,0xddfe,0xd840,0xddff,0xd840,0xde00,0xd840,0xde01,0xd840,0xde02, - 0xd840,0xde03,0xd840,0xde04,0xd840,0xde05,0xd840,0xde06,0xd840,0xde07, - 0xd840,0xde08,0xd840,0xde09,0xd840,0xde0a,0xd840,0xde0b,0xd840,0xde0c, - 0xd840,0xde0d,0xd840,0xde0e,0xd840,0xde0f,0xd840,0xde10,0xd840,0xde11, - 0xd840,0xde12,0xd840,0xde13,0xd840,0xde14,0xd840,0xde15,0xd840,0xde16, - 0xd840,0xde17,0xd840,0xde18,0xd840,0xde19,0xd840,0xde1a,0xd840,0xde1b, - 0xd840,0xde1c,0xd840,0xde1d,0xd840,0xde1e,0xd840,0xde1f,0xd840,0xde20, - 0xd840,0xde21,0xd840,0xde22,0xd840,0xde23,0xd840,0xde24,0xd840,0xde25, - 0xd840,0xde26,0xd840,0xde27,0xd840,0xde28,0xd840,0xde29,0xd840,0xde2a, - 0xd840,0xde2b,0xd840,0xde2c,0xd840,0xde2d,0xd840,0xde2e,0xd840,0xde2f, - 0xd840,0xde30,0xd840,0xde31,0xd840,0xde32,0xd840,0xde33,0xd840,0xde34, - 0xd840,0xde35,0xd840,0xde36,0xd840,0xde37,0xd840,0xde38,0xd840,0xde39, - 0xd840,0xde3a,0xd840,0xde3b,0xd840,0xde3c,0xd840,0xde3d,0xd840,0xde3e, - 0xd840,0xde3f,0xd840,0xde40,0xd840,0xde41,0xd840,0xde42,0xd840,0xde43, - 0xd840,0xde44,0xd840,0xde45,0xd840,0xde46,0xd840,0xde47,0xd840,0xde48, - 0xd840,0xde49,0xd840,0xde4a,0xd840,0xde4b,0xd840,0xde4c,0xd840,0xde4d, - 0xd840,0xde4e,0xd840,0xde4f,0xd840,0xde50,0xd840,0xde51,0xd840,0xde52, - 0xd840,0xde53,0xd840,0xde54,0xd840,0xde55,0xd840,0xde56,0xd840,0xde57, - 0xd840,0xde58,0xd840,0xde59,0xd840,0xde5a,0xd840,0xde5b,0xd840,0xde5c, - 0xd840,0xde5d,0xd840,0xde5e,0xd840,0xde5f,0xd840,0xde60,0xd840,0xde61, - 0xd840,0xde62,0xd840,0xde63,0xd840,0xde64,0xd840,0xde65,0xd840,0xde66, - 0xd840,0xde67,0xd840,0xde68,0xd840,0xde69,0xd840,0xde6a,0xd840,0xde6b, - 0xd840,0xde6c,0xd840,0xde6d,0xd840,0xde6e,0xd840,0xde6f,0xd840,0xde70, - 0xd840,0xde71,0xd840,0xde72,0xd840,0xde73,0xd840,0xde74,0xd840,0xde75, - 0xd840,0xde76,0xd840,0xde77,0xd840,0xde78,0xd840,0xde79,0xd840,0xde7a, - 0xd840,0xde7b,0xd840,0xde7c,0xd840,0xde7d,0xd840,0xde7e,0xd840,0xde7f, - 0xd840,0xde80,0xd840,0xde81,0xd840,0xde82,0xd840,0xde83,0xd840,0xde84, - 0xd840,0xde85,0xd840,0xde86,0xd840,0xde87,0xd840,0xde88,0xd840,0xde89, - 0xd840,0xde8a,0xd840,0xde8b,0xd840,0xde8c,0xd840,0xde8d,0xd840,0xde8e, - 0xd840,0xde8f,0xd840,0xde90,0xd840,0xde91,0xd840,0xde92,0xd840,0xde93, - 0xd840,0xde94,0xd840,0xde95,0xd840,0xde96,0xd840,0xde97,0xd840,0xde98, - 0xd840,0xde99,0xd840,0xde9a,0xd840,0xde9b,0xd840,0xde9c,0xd840,0xde9d, - 0xd840,0xde9e,0xd840,0xde9f,0xd840,0xdea0,0xd840,0xdea1,0xd840,0xdea2, - 0xd840,0xdea3,0xd840,0xdea4,0xd840,0xdea5,0xd840,0xdea6,0xd840,0xdea7, - 0xd840,0xdea8,0xd840,0xdea9,0xd840,0xdeaa,0xd840,0xdeab,0xd840,0xdeac, - 0xd840,0xdead,0xd840,0xdeae,0xd840,0xdeaf,0xd840,0xdeb0,0xd840,0xdeb1, - 0xd840,0xdeb2,0xd840,0xdeb3,0xd840,0xdeb4,0xd840,0xdeb5,0xd840,0xdeb6, - 0xd840,0xdeb7,0xd840,0xdeb8,0xd840,0xdeb9,0xd840,0xdeba,0xd840,0xdebb, - 0xd840,0xdebc,0xd840,0xdebd,0xd840,0xdebe,0xd840,0xdebf,0xd840,0xdec0, - 0xd840,0xdec1,0xd840,0xdec2,0xd840,0xdec3,0xd840,0xdec4,0xd840,0xdec5, - 0xd840,0xdec6,0xd840,0xdec7,0xd840,0xdec8,0xd840,0xdec9,0xd840,0xdeca, - 0xd840,0xdecb,0xd840,0xdecc,0xd840,0xdecd,0xd840,0xdece,0xd840,0xdecf, - 0xd840,0xded0,0xd840,0xded1,0xd840,0xded2,0xd840,0xded3,0xd840,0xded4, - 0xd840,0xded5,0xd840,0xded6,0xd840,0xded7,0xd840,0xded8,0xd840,0xded9, - 0xd840,0xdeda,0xd840,0xdedb,0xd840,0xdedc,0xd840,0xdedd,0xd840,0xdede, - 0xd840,0xdedf,0xd840,0xdee0,0xd840,0xdee1,0xd840,0xdee2,0xd840,0xdee3, - 0xd840,0xdee4,0xd840,0xdee5,0xd840,0xdee6,0xd840,0xdee7,0xd840,0xdee8, - 0xd840,0xdee9,0xd840,0xdeea,0xd840,0xdeeb,0xd840,0xdeec,0xd840,0xdeed, - 0xd840,0xdeee,0xd840,0xdeef,0xd840,0xdef0,0xd840,0xdef1,0xd840,0xdef2, - 0xd840,0xdef3,0xd840,0xdef4,0xd840,0xdef5,0xd840,0xdef6,0xd840,0xdef7, - 0xd840,0xdef8,0xd840,0xdef9,0xd840,0xdefa,0xd840,0xdefb,0xd840,0xdefc, - 0xd840,0xdefd,0xd840,0xdefe,0xd840,0xdeff,0xd840,0xdf00,0xd840,0xdf01, - 0xd840,0xdf02,0xd840,0xdf03,0xd840,0xdf04,0xd840,0xdf05,0xd840,0xdf06, - 0xd840,0xdf07,0xd840,0xdf08,0xd840,0xdf09,0xd840,0xdf0a,0xd840,0xdf0b, - 0xd840,0xdf0c,0xd840,0xdf0d,0xd840,0xdf0e,0xd840,0xdf0f,0xd840,0xdf10, - 0xd840,0xdf11,0xd840,0xdf12,0xd840,0xdf13,0xd840,0xdf14,0xd840,0xdf15, - 0xd840,0xdf16,0xd840,0xdf17,0xd840,0xdf18,0xd840,0xdf19,0xd840,0xdf1a, - 0xd840,0xdf1b,0xd840,0xdf1c,0xd840,0xdf1d,0xd840,0xdf1e,0xd840,0xdf1f, - 0xd840,0xdf20,0xd840,0xdf21,0xd840,0xdf22,0xd840,0xdf23,0xd840,0xdf24, - 0xd840,0xdf25,0xd840,0xdf26,0xd840,0xdf27,0xd840,0xdf28,0xd840,0xdf29, - 0xd840,0xdf2a,0xd840,0xdf2b,0xd840,0xdf2c,0xd840,0xdf2d,0xd840,0xdf2e, - 0xd840,0xdf2f,0xd840,0xdf30,0xd840,0xdf31,0xd840,0xdf32,0xd840,0xdf33, - 0xd840,0xdf34,0xd840,0xdf35,0xd840,0xdf36,0xd840,0xdf37,0xd840,0xdf38, - 0xd840,0xdf39,0xd840,0xdf3a,0xd840,0xdf3b,0xd840,0xdf3c,0xd840,0xdf3d, - 0xd840,0xdf3e,0xd840,0xdf3f,0xd840,0xdf40,0xd840,0xdf41,0xd840,0xdf42, - 0xd840,0xdf43,0xd840,0xdf44,0xd840,0xdf45,0xd840,0xdf46,0xd840,0xdf47, - 0xd840,0xdf48,0xd840,0xdf49,0xd840,0xdf4a,0xd840,0xdf4b,0xd840,0xdf4c, - 0xd840,0xdf4d,0xd840,0xdf4e,0xd840,0xdf4f,0xd840,0xdf50,0xd840,0xdf51, - 0xd840,0xdf52,0xd840,0xdf53,0xd840,0xdf54,0xd840,0xdf55,0xd840,0xdf56, - 0xd840,0xdf57,0xd840,0xdf58,0xd840,0xdf59,0xd840,0xdf5a,0xd840,0xdf5b, - 0xd840,0xdf5c,0xd840,0xdf5d,0xd840,0xdf5e,0xd840,0xdf5f,0xd840,0xdf60, - 0xd840,0xdf61,0xd840,0xdf62,0xd840,0xdf63,0xd840,0xdf64,0xd840,0xdf65, - 0xd840,0xdf66,0xd840,0xdf67,0xd840,0xdf68,0xd840,0xdf69,0xd840,0xdf6a, - 0xd840,0xdf6b,0xd840,0xdf6c,0xd840,0xdf6d,0xd840,0xdf6e,0xd840,0xdf6f, - 0xd840,0xdf70,0xd840,0xdf71,0xd840,0xdf72,0xd840,0xdf73,0xd840,0xdf74, - 0xd840,0xdf75,0xd840,0xdf76,0xd840,0xdf77,0xd840,0xdf78,0xd840,0xdf79, - 0xd840,0xdf7a,0xd840,0xdf7b,0xd840,0xdf7c,0xd840,0xdf7d,0xd840,0xdf7e, - 0xd840,0xdf7f,0xd840,0xdf80,0xd840,0xdf81,0xd840,0xdf82,0xd840,0xdf83, - 0xd840,0xdf84,0xd840,0xdf85,0xd840,0xdf86,0xd840,0xdf87,0xd840,0xdf88, - 0xd840,0xdf89,0xd840,0xdf8a,0xd840,0xdf8b,0xd840,0xdf8c,0xd840,0xdf8d, - 0xd840,0xdf8e,0xd840,0xdf8f,0xd840,0xdf90,0xd840,0xdf91,0xd840,0xdf92, - 0xd840,0xdf93,0xd840,0xdf94,0xd840,0xdf95,0xd840,0xdf96,0xd840,0xdf97, - 0xd840,0xdf98,0xd840,0xdf99,0xd840,0xdf9a,0xd840,0xdf9b,0xd840,0xdf9c, - 0xd840,0xdf9d,0xd840,0xdf9e,0xd840,0xdf9f,0xd840,0xdfa0,0xd840,0xdfa1, - 0xd840,0xdfa2,0xd840,0xdfa3,0xd840,0xdfa4,0xd840,0xdfa5,0xd840,0xdfa6, - 0xd840,0xdfa7,0xd840,0xdfa8,0xd840,0xdfa9,0xd840,0xdfaa,0xd840,0xdfab, - 0xd840,0xdfac,0xd840,0xdfad,0xd840,0xdfae,0xd840,0xdfaf,0xd840,0xdfb0, - 0xd840,0xdfb1,0xd840,0xdfb2,0xd840,0xdfb3,0xd840,0xdfb4,0xd840,0xdfb5, - 0xd840,0xdfb6,0xd840,0xdfb7,0xd840,0xdfb8,0xd840,0xdfb9,0xd840,0xdfba, - 0xd840,0xdfbb,0xd840,0xdfbc,0xd840,0xdfbd,0xd840,0xdfbe,0xd840,0xdfbf, - 0xd840,0xdfc0,0xd840,0xdfc1,0xd840,0xdfc2,0xd840,0xdfc3,0xd840,0xdfc4, - 0xd840,0xdfc5,0xd840,0xdfc6,0xd840,0xdfc7,0xd840,0xdfc8,0xd840,0xdfc9, - 0xd840,0xdfca,0xd840,0xdfcb,0xd840,0xdfcc,0xd840,0xdfcd,0xd840,0xdfce, - 0xd840,0xdfcf,0xd840,0xdfd0,0xd840,0xdfd1,0xd840,0xdfd2,0xd840,0xdfd3, - 0xd840,0xdfd4,0xd840,0xdfd5,0xd840,0xdfd6,0xd840,0xdfd7,0xd840,0xdfd8, - 0xd840,0xdfd9,0xd840,0xdfda,0xd840,0xdfdb,0xd840,0xdfdc,0xd840,0xdfdd, - 0xd840,0xdfde,0xd840,0xdfdf,0xd840,0xdfe0,0xd840,0xdfe1,0xd840,0xdfe2, - 0xd840,0xdfe3,0xd840,0xdfe4,0xd840,0xdfe5,0xd840,0xdfe6,0xd840,0xdfe7, - 0xd840,0xdfe8,0xd840,0xdfe9,0xd840,0xdfea,0xd840,0xdfeb,0xd840,0xdfec, - 0xd840,0xdfed,0xd840,0xdfee,0xd840,0xdfef,0xd840,0xdff0,0xd840,0xdff1, - 0xd840,0xdff2,0xd840,0xdff3,0xd840,0xdff4,0xd840,0xdff5,0xd840,0xdff6, - 0xd840,0xdff7,0xd840,0xdff8,0xd840,0xdff9,0xd840,0xdffa,0xd840,0xdffb, - 0xd840,0xdffc,0xd840,0xdffd,0xd840,0xdffe,0xd840,0xdfff,0xd841,0xdc00, - 0xd841,0xdc01,0xd841,0xdc02,0xd841,0xdc03,0xd841,0xdc04,0xd841,0xdc05, - 0xd841,0xdc06,0xd841,0xdc07,0xd841,0xdc08,0xd841,0xdc09,0xd841,0xdc0a, - 0xd841,0xdc0b,0xd841,0xdc0c,0xd841,0xdc0d,0xd841,0xdc0e,0xd841,0xdc0f, - 0xd841,0xdc10,0xd841,0xdc11,0xd841,0xdc12,0xd841,0xdc13,0xd841,0xdc14, - 0xd841,0xdc15,0xd841,0xdc16,0xd841,0xdc17,0xd841,0xdc18,0xd841,0xdc19, - 0xd841,0xdc1a,0xd841,0xdc1b,0xd841,0xdc1c,0xd841,0xdc1d,0xd841,0xdc1e, - 0xd841,0xdc1f,0xd841,0xdc20,0xd841,0xdc21,0xd841,0xdc22,0xd841,0xdc23, - 0xd841,0xdc24,0xd841,0xdc25,0xd841,0xdc26,0xd841,0xdc27,0xd841,0xdc28, - 0xd841,0xdc29,0xd841,0xdc2a,0xd841,0xdc2b,0xd841,0xdc2c,0xd841,0xdc2d, - 0xd841,0xdc2e,0xd841,0xdc2f,0xd841,0xdc30,0xd841,0xdc31,0xd841,0xdc32, - 0xd841,0xdc33,0xd841,0xdc34,0xd841,0xdc35,0xd841,0xdc36,0xd841,0xdc37, - 0xd841,0xdc38,0xd841,0xdc39,0xd841,0xdc3a,0xd841,0xdc3b,0xd841,0xdc3c, - 0xd841,0xdc3d,0xd841,0xdc3e,0xd841,0xdc3f,0xd841,0xdc40,0xd841,0xdc41, - 0xd841,0xdc42,0xd841,0xdc43,0xd841,0xdc44,0xd841,0xdc45,0xd841,0xdc46, - 0xd841,0xdc47,0xd841,0xdc48,0xd841,0xdc49,0xd841,0xdc4a,0xd841,0xdc4b, - 0xd841,0xdc4c,0xd841,0xdc4d,0xd841,0xdc4e,0xd841,0xdc4f,0xd841,0xdc50, - 0xd841,0xdc51,0xd841,0xdc52,0xd841,0xdc53,0xd841,0xdc54,0xd841,0xdc55, - 0xd841,0xdc56,0xd841,0xdc57,0xd841,0xdc58,0xd841,0xdc59,0xd841,0xdc5a, - 0xd841,0xdc5b,0xd841,0xdc5c,0xd841,0xdc5d,0xd841,0xdc5e,0xd841,0xdc5f, - 0xd841,0xdc60,0xd841,0xdc61,0xd841,0xdc62,0xd841,0xdc63,0xd841,0xdc64, - 0xd841,0xdc65,0xd841,0xdc66,0xd841,0xdc67,0xd841,0xdc68,0xd841,0xdc69, - 0xd841,0xdc6a,0xd841,0xdc6b,0xd841,0xdc6c,0xd841,0xdc6d,0xd841,0xdc6e, - 0xd841,0xdc6f,0xd841,0xdc70,0xd841,0xdc71,0xd841,0xdc72,0xd841,0xdc73, - 0xd841,0xdc74,0xd841,0xdc75,0xd841,0xdc76,0xd841,0xdc77,0xd841,0xdc78, - 0xd841,0xdc79,0xd841,0xdc7a,0xd841,0xdc7b,0xd841,0xdc7c,0xd841,0xdc7d, - 0xd841,0xdc7e,0xd841,0xdc7f,0xd841,0xdc80,0xd841,0xdc81,0xd841,0xdc82, - 0xd841,0xdc83,0xd841,0xdc84,0xd841,0xdc85,0xd841,0xdc86,0xd841,0xdc87, - 0xd841,0xdc88,0xd841,0xdc89,0xd841,0xdc8a,0xd841,0xdc8b,0xd841,0xdc8c, - 0xd841,0xdc8d,0xd841,0xdc8e,0xd841,0xdc8f,0xd841,0xdc90,0xd841,0xdc91, - 0xd841,0xdc92,0xd841,0xdc93,0xd841,0xdc94,0xd841,0xdc95,0xd841,0xdc96, - 0xd841,0xdc97,0xd841,0xdc98,0xd841,0xdc99,0xd841,0xdc9a,0xd841,0xdc9b, - 0xd841,0xdc9c,0xd841,0xdc9d,0xd841,0xdc9e,0xd841,0xdc9f,0xd841,0xdca0, - 0xd841,0xdca1,0xd841,0xdca2,0xd841,0xdca3,0xd841,0xdca4,0xd841,0xdca5, - 0xd841,0xdca6,0xd841,0xdca7,0xd841,0xdca8,0xd841,0xdca9,0xd841,0xdcaa, - 0xd841,0xdcab,0xd841,0xdcac,0xd841,0xdcad,0xd841,0xdcae,0xd841,0xdcaf, - 0xd841,0xdcb0,0xd841,0xdcb1,0xd841,0xdcb2,0xd841,0xdcb3,0xd841,0xdcb4, - 0xd841,0xdcb5,0xd841,0xdcb6,0xd841,0xdcb7,0xd841,0xdcb8,0xd841,0xdcb9, - 0xd841,0xdcba,0xd841,0xdcbb,0xd841,0xdcbc,0xd841,0xdcbd,0xd841,0xdcbe, - 0xd841,0xdcbf,0xd841,0xdcc0,0xd841,0xdcc1,0xd841,0xdcc2,0xd841,0xdcc3, - 0xd841,0xdcc4,0xd841,0xdcc5,0xd841,0xdcc6,0xd841,0xdcc7,0xd841,0xdcc8, - 0xd841,0xdcc9,0xd841,0xdcca,0xd841,0xdccb,0xd841,0xdccc,0xd841,0xdccd, - 0xd841,0xdcce,0xd841,0xdccf,0xd841,0xdcd0,0xd841,0xdcd1,0xd841,0xdcd2, - 0xd841,0xdcd3,0xd841,0xdcd4,0xd841,0xdcd5,0xd841,0xdcd6,0xd841,0xdcd7, - 0xd841,0xdcd8,0xd841,0xdcd9,0xd841,0xdcda,0xd841,0xdcdb,0xd841,0xdcdc, - 0xd841,0xdcdd,0xd841,0xdcde,0xd841,0xdcdf,0xd841,0xdce0,0xd841,0xdce1, - 0xd841,0xdce2,0xd841,0xdce3,0xd841,0xdce4,0xd841,0xdce5,0xd841,0xdce6, - 0xd841,0xdce7,0xd841,0xdce8,0xd841,0xdce9,0xd841,0xdcea,0xd841,0xdceb, - 0xd841,0xdcec,0xd841,0xdced,0xd841,0xdcee,0xd841,0xdcef,0xd841,0xdcf0, - 0xd841,0xdcf1,0xd841,0xdcf2,0xd841,0xdcf3,0xd841,0xdcf4,0xd841,0xdcf5, - 0xd841,0xdcf6,0xd841,0xdcf7,0xd841,0xdcf8,0xd841,0xdcf9,0xd841,0xdcfa, - 0xd841,0xdcfb,0xd841,0xdcfc,0xd841,0xdcfd,0xd841,0xdcfe,0xd841,0xdcff, - 0xd841,0xdd00,0xd841,0xdd01,0xd841,0xdd02,0xd841,0xdd03,0xd841,0xdd04, - 0xd841,0xdd05,0xd841,0xdd06,0xd841,0xdd07,0xd841,0xdd08,0xd841,0xdd09, - 0xd841,0xdd0a,0xd841,0xdd0b,0xd841,0xdd0c,0xd841,0xdd0d,0xd841,0xdd0e, - 0xd841,0xdd0f,0xd841,0xdd10,0xd841,0xdd11,0xd841,0xdd12,0xd841,0xdd13, - 0xd841,0xdd14,0xd841,0xdd15,0xd841,0xdd16,0xd841,0xdd17,0xd841,0xdd18, - 0xd841,0xdd19,0xd841,0xdd1a,0xd841,0xdd1b,0xd841,0xdd1c,0xd841,0xdd1d, - 0xd841,0xdd1e,0xd841,0xdd1f,0xd841,0xdd20,0xd841,0xdd21,0xd841,0xdd22, - 0xd841,0xdd23,0xd841,0xdd24,0xd841,0xdd25,0xd841,0xdd26,0xd841,0xdd27, - 0xd841,0xdd28,0xd841,0xdd29,0xd841,0xdd2a,0xd841,0xdd2b,0xd841,0xdd2c, - 0xd841,0xdd2d,0xd841,0xdd2e,0xd841,0xdd2f,0xd841,0xdd30,0xd841,0xdd31, - 0xd841,0xdd32,0xd841,0xdd33,0xd841,0xdd34,0xd841,0xdd35,0xd841,0xdd36, - 0xd841,0xdd37,0xd841,0xdd38,0xd841,0xdd39,0xd841,0xdd3a,0xd841,0xdd3b, - 0xd841,0xdd3c,0xd841,0xdd3d,0xd841,0xdd3e,0xd841,0xdd3f,0xd841,0xdd40, - 0xd841,0xdd41,0xd841,0xdd42,0xd841,0xdd43,0xd841,0xdd44,0xd841,0xdd45, - 0xd841,0xdd46,0xd841,0xdd47,0xd841,0xdd48,0xd841,0xdd49,0xd841,0xdd4a, - 0xd841,0xdd4b,0xd841,0xdd4c,0xd841,0xdd4d,0xd841,0xdd4e,0xd841,0xdd4f, - 0xd841,0xdd50,0xd841,0xdd51,0xd841,0xdd52,0xd841,0xdd53,0xd841,0xdd54, - 0xd841,0xdd55,0xd841,0xdd56,0xd841,0xdd57,0xd841,0xdd58,0xd841,0xdd59, - 0xd841,0xdd5a,0xd841,0xdd5b,0xd841,0xdd5c,0xd841,0xdd5d,0xd841,0xdd5e, - 0xd841,0xdd5f,0xd841,0xdd60,0xd841,0xdd61,0xd841,0xdd62,0xd841,0xdd63, - 0xd841,0xdd64,0xd841,0xdd65,0xd841,0xdd66,0xd841,0xdd67,0xd841,0xdd68, - 0xd841,0xdd69,0xd841,0xdd6a,0xd841,0xdd6b,0xd841,0xdd6c,0xd841,0xdd6d, - 0xd841,0xdd6e,0xd841,0xdd6f,0xd841,0xdd70,0xd841,0xdd71,0xd841,0xdd72, - 0xd841,0xdd73,0xd841,0xdd74,0xd841,0xdd75,0xd841,0xdd76,0xd841,0xdd77, - 0xd841,0xdd78,0xd841,0xdd79,0xd841,0xdd7a,0xd841,0xdd7b,0xd841,0xdd7c, - 0xd841,0xdd7d,0xd841,0xdd7e,0xd841,0xdd7f,0xd841,0xdd80,0xd841,0xdd81, - 0xd841,0xdd82,0xd841,0xdd83,0xd841,0xdd84,0xd841,0xdd85,0xd841,0xdd86, - 0xd841,0xdd87,0xd841,0xdd88,0xd841,0xdd89,0xd841,0xdd8a,0xd841,0xdd8b, - 0xd841,0xdd8c,0xd841,0xdd8d,0xd841,0xdd8e,0xd841,0xdd8f,0xd841,0xdd90, - 0xd841,0xdd91,0xd841,0xdd92,0xd841,0xdd93,0xd841,0xdd94,0xd841,0xdd95, - 0xd841,0xdd96,0xd841,0xdd97,0xd841,0xdd98,0xd841,0xdd99,0xd841,0xdd9a, - 0xd841,0xdd9b,0xd841,0xdd9c,0xd841,0xdd9d,0xd841,0xdd9e,0xd841,0xdd9f, - 0xd841,0xdda0,0xd841,0xdda1,0xd841,0xdda2,0xd841,0xdda3,0xd841,0xdda4, - 0xd841,0xdda5,0xd841,0xdda6,0xd841,0xdda7,0xd841,0xdda8,0xd841,0xdda9, - 0xd841,0xddaa,0xd841,0xddab,0xd841,0xddac,0xd841,0xddad,0xd841,0xddae, - 0xd841,0xddaf,0xd841,0xddb0,0xd841,0xddb1,0xd841,0xddb2,0xd841,0xddb3, - 0xd841,0xddb4,0xd841,0xddb5,0xd841,0xddb6,0xd841,0xddb7,0xd841,0xddb8, - 0xd841,0xddb9,0xd841,0xddba,0xd841,0xddbb,0xd841,0xddbc,0xd841,0xddbd, - 0xd841,0xddbe,0xd841,0xddbf,0xd841,0xddc0,0xd841,0xddc1,0xd841,0xddc2, - 0xd841,0xddc3,0xd841,0xddc4,0xd841,0xddc5,0xd841,0xddc6,0xd841,0xddc7, - 0xd841,0xddc8,0xd841,0xddc9,0xd841,0xddca,0xd841,0xddcb,0xd841,0xddcc, - 0xd841,0xddcd,0xd841,0xddce,0xd841,0xddcf,0xd841,0xddd0,0xd841,0xddd1, - 0xd841,0xddd2,0xd841,0xddd3,0xd841,0xddd4,0xd841,0xddd5,0xd841,0xddd6, - 0xd841,0xddd7,0xd841,0xddd8,0xd841,0xddd9,0xd841,0xddda,0xd841,0xdddb, - 0xd841,0xdddc,0xd841,0xdddd,0xd841,0xddde,0xd841,0xdddf,0xd841,0xdde0, - 0xd841,0xdde1,0xd841,0xdde2,0xd841,0xdde3,0xd841,0xdde4,0xd841,0xdde5, - 0xd841,0xdde6,0xd841,0xdde7,0xd841,0xdde8,0xd841,0xdde9,0xd841,0xddea, - 0xd841,0xddeb,0xd841,0xddec,0xd841,0xdded,0xd841,0xddee,0xd841,0xddef, - 0xd841,0xddf0,0xd841,0xddf1,0xd841,0xddf2,0xd841,0xddf3,0xd841,0xddf4, - 0xd841,0xddf5,0xd841,0xddf6,0xd841,0xddf7,0xd841,0xddf8,0xd841,0xddf9, - 0xd841,0xddfa,0xd841,0xddfb,0xd841,0xddfc,0xd841,0xddfd,0xd841,0xddfe, - 0xd841,0xddff,0xd841,0xde00,0xd841,0xde01,0xd841,0xde02,0xd841,0xde03, - 0xd841,0xde04,0xd841,0xde05,0xd841,0xde06,0xd841,0xde07,0xd841,0xde08, - 0xd841,0xde09,0xd841,0xde0a,0xd841,0xde0b,0xd841,0xde0c,0xd841,0xde0d, - 0xd841,0xde0e,0xd841,0xde0f,0xd841,0xde10,0xd841,0xde11,0xd841,0xde12, - 0xd841,0xde13,0xd841,0xde14,0xd841,0xde15,0xd841,0xde16,0xd841,0xde17, - 0xd841,0xde18,0xd841,0xde19,0xd841,0xde1a,0xd841,0xde1b,0xd841,0xde1c, - 0xd841,0xde1d,0xd841,0xde1e,0xd841,0xde1f,0xd841,0xde20,0xd841,0xde21, - 0xd841,0xde22,0xd841,0xde23,0xd841,0xde24,0xd841,0xde25,0xd841,0xde26, - 0xd841,0xde27,0xd841,0xde28,0xd841,0xde29,0xd841,0xde2a,0xd841,0xde2b, - 0xd841,0xde2c,0xd841,0xde2d,0xd841,0xde2e,0xd841,0xde2f,0xd841,0xde30, - 0xd841,0xde31,0xd841,0xde32,0xd841,0xde33,0xd841,0xde34,0xd841,0xde35, - 0xd841,0xde36,0xd841,0xde37,0xd841,0xde38,0xd841,0xde39,0xd841,0xde3a, - 0xd841,0xde3b,0xd841,0xde3c,0xd841,0xde3d,0xd841,0xde3e,0xd841,0xde3f, - 0xd841,0xde40,0xd841,0xde41,0xd841,0xde42,0xd841,0xde43,0xd841,0xde44, - 0xd841,0xde45,0xd841,0xde46,0xd841,0xde47,0xd841,0xde48,0xd841,0xde49, - 0xd841,0xde4a,0xd841,0xde4b,0xd841,0xde4c,0xd841,0xde4d,0xd841,0xde4e, - 0xd841,0xde4f,0xd841,0xde50,0xd841,0xde51,0xd841,0xde52,0xd841,0xde53, - 0xd841,0xde54,0xd841,0xde55,0xd841,0xde56,0xd841,0xde57,0xd841,0xde58, - 0xd841,0xde59,0xd841,0xde5a,0xd841,0xde5b,0xd841,0xde5c,0xd841,0xde5d, - 0xd841,0xde5e,0xd841,0xde5f,0xd841,0xde60,0xd841,0xde61,0xd841,0xde62, - 0xd841,0xde63,0xd841,0xde64,0xd841,0xde65,0xd841,0xde66,0xd841,0xde67, - 0xd841,0xde68,0xd841,0xde69,0xd841,0xde6a,0xd841,0xde6b,0xd841,0xde6c, - 0xd841,0xde6d,0xd841,0xde6e,0xd841,0xde6f,0xd841,0xde70,0xd841,0xde71, - 0xd841,0xde72,0xd841,0xde73,0xd841,0xde74,0xd841,0xde75,0xd841,0xde76, - 0xd841,0xde77,0xd841,0xde78,0xd841,0xde79,0xd841,0xde7a,0xd841,0xde7b, - 0xd841,0xde7c,0xd841,0xde7d,0xd841,0xde7e,0xd841,0xde7f,0xd841,0xde80, - 0xd841,0xde81,0xd841,0xde82,0xd841,0xde83,0xd841,0xde84,0xd841,0xde85, - 0xd841,0xde86,0xd841,0xde87,0xd841,0xde88,0xd841,0xde89,0xd841,0xde8a, - 0xd841,0xde8b,0xd841,0xde8c,0xd841,0xde8d,0xd841,0xde8e,0xd841,0xde8f, - 0xd841,0xde90,0xd841,0xde91,0xd841,0xde92,0xd841,0xde93,0xd841,0xde94, - 0xd841,0xde95,0xd841,0xde96,0xd841,0xde97,0xd841,0xde98,0xd841,0xde99, - 0xd841,0xde9a,0xd841,0xde9b,0xd841,0xde9c,0xd841,0xde9d,0xd841,0xde9e, - 0xd841,0xde9f,0xd841,0xdea0,0xd841,0xdea1,0xd841,0xdea2,0xd841,0xdea3, - 0xd841,0xdea4,0xd841,0xdea5,0xd841,0xdea6,0xd841,0xdea7,0xd841,0xdea8, - 0xd841,0xdea9,0xd841,0xdeaa,0xd841,0xdeab,0xd841,0xdeac,0xd841,0xdead, - 0xd841,0xdeae,0xd841,0xdeaf,0xd841,0xdeb0,0xd841,0xdeb1,0xd841,0xdeb2, - 0xd841,0xdeb3,0xd841,0xdeb4,0xd841,0xdeb5,0xd841,0xdeb6,0xd841,0xdeb7, - 0xd841,0xdeb8,0xd841,0xdeb9,0xd841,0xdeba,0xd841,0xdebb,0xd841,0xdebc, - 0xd841,0xdebd,0xd841,0xdebe,0xd841,0xdebf,0xd841,0xdec0,0xd841,0xdec1, - 0xd841,0xdec2,0xd841,0xdec3,0xd841,0xdec4,0xd841,0xdec5,0xd841,0xdec6, - 0xd841,0xdec7,0xd841,0xdec8,0xd841,0xdec9,0xd841,0xdeca,0xd841,0xdecb, - 0xd841,0xdecc,0xd841,0xdecd,0xd841,0xdece,0xd841,0xdecf,0xd841,0xded0, - 0xd841,0xded1,0xd841,0xded2,0xd841,0xded3,0xd841,0xded4,0xd841,0xded5, - 0xd841,0xded6,0xd841,0xded7,0xd841,0xded8,0xd841,0xded9,0xd841,0xdeda, - 0xd841,0xdedb,0xd841,0xdedc,0xd841,0xdedd,0xd841,0xdede,0xd841,0xdedf, - 0xd841,0xdee0,0xd841,0xdee1,0xd841,0xdee2,0xd841,0xdee3,0xd841,0xdee4, - 0xd841,0xdee5,0xd841,0xdee6,0xd841,0xdee7,0xd841,0xdee8,0xd841,0xdee9, - 0xd841,0xdeea,0xd841,0xdeeb,0xd841,0xdeec,0xd841,0xdeed,0xd841,0xdeee, - 0xd841,0xdeef,0xd841,0xdef0,0xd841,0xdef1,0xd841,0xdef2,0xd841,0xdef3, - 0xd841,0xdef4,0xd841,0xdef5,0xd841,0xdef6,0xd841,0xdef7,0xd841,0xdef8, - 0xd841,0xdef9,0xd841,0xdefa,0xd841,0xdefb,0xd841,0xdefc,0xd841,0xdefd, - 0xd841,0xdefe,0xd841,0xdeff,0xd841,0xdf00,0xd841,0xdf01,0xd841,0xdf02, - 0xd841,0xdf03,0xd841,0xdf04,0xd841,0xdf05,0xd841,0xdf06,0xd841,0xdf07, - 0xd841,0xdf08,0xd841,0xdf09,0xd841,0xdf0a,0xd841,0xdf0b,0xd841,0xdf0c, - 0xd841,0xdf0d,0xd841,0xdf0e,0xd841,0xdf0f,0xd841,0xdf10,0xd841,0xdf11, - 0xd841,0xdf12,0xd841,0xdf13,0xd841,0xdf14,0xd841,0xdf15,0xd841,0xdf16, - 0xd841,0xdf17,0xd841,0xdf18,0xd841,0xdf19,0xd841,0xdf1a,0xd841,0xdf1b, - 0xd841,0xdf1c,0xd841,0xdf1d,0xd841,0xdf1e,0xd841,0xdf1f,0xd841,0xdf20, - 0xd841,0xdf21,0xd841,0xdf22,0xd841,0xdf23,0xd841,0xdf24,0xd841,0xdf25, - 0xd841,0xdf26,0xd841,0xdf27,0xd841,0xdf28,0xd841,0xdf29,0xd841,0xdf2a, - 0xd841,0xdf2b,0xd841,0xdf2c,0xd841,0xdf2d,0xd841,0xdf2e,0xd841,0xdf2f, - 0xd841,0xdf30,0xd841,0xdf31,0xd841,0xdf32,0xd841,0xdf33,0xd841,0xdf34, - 0xd841,0xdf35,0xd841,0xdf36,0xd841,0xdf37,0xd841,0xdf38,0xd841,0xdf39, - 0xd841,0xdf3a,0xd841,0xdf3b,0xd841,0xdf3c,0xd841,0xdf3d,0xd841,0xdf3e, - 0xd841,0xdf3f,0xd841,0xdf40,0xd841,0xdf41,0xd841,0xdf42,0xd841,0xdf43, - 0xd841,0xdf44,0xd841,0xdf45,0xd841,0xdf46,0xd841,0xdf47,0xd841,0xdf48, - 0xd841,0xdf49,0xd841,0xdf4a,0xd841,0xdf4b,0xd841,0xdf4c,0xd841,0xdf4d, - 0xd841,0xdf4e,0xd841,0xdf4f,0xd841,0xdf50,0xd841,0xdf51,0xd841,0xdf52, - 0xd841,0xdf53,0xd841,0xdf54,0xd841,0xdf55,0xd841,0xdf56,0xd841,0xdf57, - 0xd841,0xdf58,0xd841,0xdf59,0xd841,0xdf5a,0xd841,0xdf5b,0xd841,0xdf5c, - 0xd841,0xdf5d,0xd841,0xdf5e,0xd841,0xdf5f,0xd841,0xdf60,0xd841,0xdf61, - 0xd841,0xdf62,0xd841,0xdf63,0xd841,0xdf64,0xd841,0xdf65,0xd841,0xdf66, - 0xd841,0xdf67,0xd841,0xdf68,0xd841,0xdf69,0xd841,0xdf6a,0xd841,0xdf6b, - 0xd841,0xdf6c,0xd841,0xdf6d,0xd841,0xdf6e,0xd841,0xdf6f,0xd841,0xdf70, - 0xd841,0xdf71,0xd841,0xdf72,0xd841,0xdf73,0xd841,0xdf74,0xd841,0xdf75, - 0xd841,0xdf76,0xd841,0xdf77,0xd841,0xdf78,0xd841,0xdf79,0xd841,0xdf7a, - 0xd841,0xdf7b,0xd841,0xdf7c,0xd841,0xdf7d,0xd841,0xdf7e,0xd841,0xdf7f, - 0xd841,0xdf80,0xd841,0xdf81,0xd841,0xdf82,0xd841,0xdf83,0xd841,0xdf84, - 0xd841,0xdf85,0xd841,0xdf86,0xd841,0xdf87,0xd841,0xdf88,0xd841,0xdf89, - 0xd841,0xdf8a,0xd841,0xdf8b,0xd841,0xdf8c,0xd841,0xdf8d,0xd841,0xdf8e, - 0xd841,0xdf8f,0xd841,0xdf90,0xd841,0xdf91,0xd841,0xdf92,0xd841,0xdf93, - 0xd841,0xdf94,0xd841,0xdf95,0xd841,0xdf96,0xd841,0xdf97,0xd841,0xdf98, - 0xd841,0xdf99,0xd841,0xdf9a,0xd841,0xdf9b,0xd841,0xdf9c,0xd841,0xdf9d, - 0xd841,0xdf9e,0xd841,0xdf9f,0xd841,0xdfa0,0xd841,0xdfa1,0xd841,0xdfa2, - 0xd841,0xdfa3,0xd841,0xdfa4,0xd841,0xdfa5,0xd841,0xdfa6,0xd841,0xdfa7, - 0xd841,0xdfa8,0xd841,0xdfa9,0xd841,0xdfaa,0xd841,0xdfab,0xd841,0xdfac, - 0xd841,0xdfad,0xd841,0xdfae,0xd841,0xdfaf,0xd841,0xdfb0,0xd841,0xdfb1, - 0xd841,0xdfb2,0xd841,0xdfb3,0xd841,0xdfb4,0xd841,0xdfb5,0xd841,0xdfb6, - 0xd841,0xdfb7,0xd841,0xdfb8,0xd841,0xdfb9,0xd841,0xdfba,0xd841,0xdfbb, - 0xd841,0xdfbc,0xd841,0xdfbd,0xd841,0xdfbe,0xd841,0xdfbf,0xd841,0xdfc0, - 0xd841,0xdfc1,0xd841,0xdfc2,0xd841,0xdfc3,0xd841,0xdfc4,0xd841,0xdfc5, - 0xd841,0xdfc6,0xd841,0xdfc7,0xd841,0xdfc8,0xd841,0xdfc9,0xd841,0xdfca, - 0xd841,0xdfcb,0xd841,0xdfcc,0xd841,0xdfcd,0xd841,0xdfce,0xd841,0xdfcf, - 0xd841,0xdfd0,0xd841,0xdfd1,0xd841,0xdfd2,0xd841,0xdfd3,0xd841,0xdfd4, - 0xd841,0xdfd5,0xd841,0xdfd6,0xd841,0xdfd7,0xd841,0xdfd8,0xd841,0xdfd9, - 0xd841,0xdfda,0xd841,0xdfdb,0xd841,0xdfdc,0xd841,0xdfdd,0xd841,0xdfde, - 0xd841,0xdfdf,0xd841,0xdfe0,0xd841,0xdfe1,0xd841,0xdfe2,0xd841,0xdfe3, - 0xd841,0xdfe4,0xd841,0xdfe5,0xd841,0xdfe6,0xd841,0xdfe7,0xd841,0xdfe8, - 0xd841,0xdfe9,0xd841,0xdfea,0xd841,0xdfeb,0xd841,0xdfec,0xd841,0xdfed, - 0xd841,0xdfee,0xd841,0xdfef,0xd841,0xdff0,0xd841,0xdff1,0xd841,0xdff2, - 0xd841,0xdff3,0xd841,0xdff4,0xd841,0xdff5,0xd841,0xdff6,0xd841,0xdff7, - 0xd841,0xdff8,0xd841,0xdff9,0xd841,0xdffa,0xd841,0xdffb,0xd841,0xdffc, - 0xd841,0xdffd,0xd841,0xdffe,0xd841,0xdfff,0xd842,0xdc00,0xd842,0xdc01, - 0xd842,0xdc02,0xd842,0xdc03,0xd842,0xdc04,0xd842,0xdc05,0xd842,0xdc06, - 0xd842,0xdc07,0xd842,0xdc08,0xd842,0xdc09,0xd842,0xdc0a,0xd842,0xdc0b, - 0xd842,0xdc0c,0xd842,0xdc0d,0xd842,0xdc0e,0xd842,0xdc0f,0xd842,0xdc10, - 0xd842,0xdc11,0xd842,0xdc12,0xd842,0xdc13,0xd842,0xdc14,0xd842,0xdc15, - 0xd842,0xdc16,0xd842,0xdc17,0xd842,0xdc18,0xd842,0xdc19,0xd842,0xdc1a, - 0xd842,0xdc1b,0xd842,0xdc1c,0xd842,0xdc1d,0xd842,0xdc1e,0xd842,0xdc1f, - 0xd842,0xdc20,0xd842,0xdc21,0xd842,0xdc22,0xd842,0xdc23,0xd842,0xdc24, - 0xd842,0xdc25,0xd842,0xdc26,0xd842,0xdc27,0xd842,0xdc28,0xd842,0xdc29, - 0xd842,0xdc2a,0xd842,0xdc2b,0xd842,0xdc2c,0xd842,0xdc2d,0xd842,0xdc2e, - 0xd842,0xdc2f,0xd842,0xdc30,0xd842,0xdc31,0xd842,0xdc32,0xd842,0xdc33, - 0xd842,0xdc34,0xd842,0xdc35,0xd842,0xdc36,0xd842,0xdc37,0xd842,0xdc38, - 0xd842,0xdc39,0xd842,0xdc3a,0xd842,0xdc3b,0xd842,0xdc3c,0xd842,0xdc3d, - 0xd842,0xdc3e,0xd842,0xdc3f,0xd842,0xdc40,0xd842,0xdc41,0xd842,0xdc42, - 0xd842,0xdc43,0xd842,0xdc44,0xd842,0xdc45,0xd842,0xdc46,0xd842,0xdc47, - 0xd842,0xdc48,0xd842,0xdc49,0xd842,0xdc4a,0xd842,0xdc4b,0xd842,0xdc4c, - 0xd842,0xdc4d,0xd842,0xdc4e,0xd842,0xdc4f,0xd842,0xdc50,0xd842,0xdc51, - 0xd842,0xdc52,0xd842,0xdc53,0xd842,0xdc54,0xd842,0xdc55,0xd842,0xdc56, - 0xd842,0xdc57,0xd842,0xdc58,0xd842,0xdc59,0xd842,0xdc5a,0xd842,0xdc5b, - 0xd842,0xdc5c,0xd842,0xdc5d,0xd842,0xdc5e,0xd842,0xdc5f,0xd842,0xdc60, - 0xd842,0xdc61,0xd842,0xdc62,0xd842,0xdc63,0xd842,0xdc64,0xd842,0xdc65, - 0xd842,0xdc66,0xd842,0xdc67,0xd842,0xdc68,0xd842,0xdc69,0xd842,0xdc6a, - 0xd842,0xdc6b,0xd842,0xdc6c,0xd842,0xdc6d,0xd842,0xdc6e,0xd842,0xdc6f, - 0xd842,0xdc70,0xd842,0xdc71,0xd842,0xdc72,0xd842,0xdc73,0xd842,0xdc74, - 0xd842,0xdc75,0xd842,0xdc76,0xd842,0xdc77,0xd842,0xdc78,0xd842,0xdc79, - 0xd842,0xdc7a,0xd842,0xdc7b,0xd842,0xdc7c,0xd842,0xdc7d,0xd842,0xdc7e, - 0xd842,0xdc7f,0xd842,0xdc80,0xd842,0xdc81,0xd842,0xdc82,0xd842,0xdc83, - 0xd842,0xdc84,0xd842,0xdc85,0xd842,0xdc86,0xd842,0xdc87,0xd842,0xdc88, - 0xd842,0xdc89,0xd842,0xdc8a,0xd842,0xdc8b,0xd842,0xdc8c,0xd842,0xdc8d, - 0xd842,0xdc8e,0xd842,0xdc8f,0xd842,0xdc90,0xd842,0xdc91,0xd842,0xdc92, - 0xd842,0xdc93,0xd842,0xdc94,0xd842,0xdc95,0xd842,0xdc96,0xd842,0xdc97, - 0xd842,0xdc98,0xd842,0xdc99,0xd842,0xdc9a,0xd842,0xdc9b,0xd842,0xdc9c, - 0xd842,0xdc9d,0xd842,0xdc9e,0xd842,0xdc9f,0xd842,0xdca0,0xd842,0xdca1, - 0xd842,0xdca2,0xd842,0xdca3,0xd842,0xdca4,0xd842,0xdca5,0xd842,0xdca6, - 0xd842,0xdca7,0xd842,0xdca8,0xd842,0xdca9,0xd842,0xdcaa,0xd842,0xdcab, - 0xd842,0xdcac,0xd842,0xdcad,0xd842,0xdcae,0xd842,0xdcaf,0xd842,0xdcb0, - 0xd842,0xdcb1,0xd842,0xdcb2,0xd842,0xdcb3,0xd842,0xdcb4,0xd842,0xdcb5, - 0xd842,0xdcb6,0xd842,0xdcb7,0xd842,0xdcb8,0xd842,0xdcb9,0xd842,0xdcba, - 0xd842,0xdcbb,0xd842,0xdcbc,0xd842,0xdcbd,0xd842,0xdcbe,0xd842,0xdcbf, - 0xd842,0xdcc0,0xd842,0xdcc1,0xd842,0xdcc2,0xd842,0xdcc3,0xd842,0xdcc4, - 0xd842,0xdcc5,0xd842,0xdcc6,0xd842,0xdcc7,0xd842,0xdcc8,0xd842,0xdcc9, - 0xd842,0xdcca,0xd842,0xdccb,0xd842,0xdccc,0xd842,0xdccd,0xd842,0xdcce, - 0xd842,0xdccf,0xd842,0xdcd0,0xd842,0xdcd1,0xd842,0xdcd2,0xd842,0xdcd3, - 0xd842,0xdcd4,0xd842,0xdcd5,0xd842,0xdcd6,0xd842,0xdcd7,0xd842,0xdcd8, - 0xd842,0xdcd9,0xd842,0xdcda,0xd842,0xdcdb,0xd842,0xdcdc,0xd842,0xdcdd, - 0xd842,0xdcde,0xd842,0xdcdf,0xd842,0xdce0,0xd842,0xdce1,0xd842,0xdce2, - 0xd842,0xdce3,0xd842,0xdce4,0xd842,0xdce5,0xd842,0xdce6,0xd842,0xdce7, - 0xd842,0xdce8,0xd842,0xdce9,0xd842,0xdcea,0xd842,0xdceb,0xd842,0xdcec, - 0xd842,0xdced,0xd842,0xdcee,0xd842,0xdcef,0xd842,0xdcf0,0xd842,0xdcf1, - 0xd842,0xdcf2,0xd842,0xdcf3,0xd842,0xdcf4,0xd842,0xdcf5,0xd842,0xdcf6, - 0xd842,0xdcf7,0xd842,0xdcf8,0xd842,0xdcf9,0xd842,0xdcfa,0xd842,0xdcfb, - 0xd842,0xdcfc,0xd842,0xdcfd,0xd842,0xdcfe,0xd842,0xdcff,0xd842,0xdd00, - 0xd842,0xdd01,0xd842,0xdd02,0xd842,0xdd03,0xd842,0xdd04,0xd842,0xdd05, - 0xd842,0xdd06,0xd842,0xdd07,0xd842,0xdd08,0xd842,0xdd09,0xd842,0xdd0a, - 0xd842,0xdd0b,0xd842,0xdd0c,0xd842,0xdd0d,0xd842,0xdd0e,0xd842,0xdd0f, - 0xd842,0xdd10,0xd842,0xdd11,0xd842,0xdd12,0xd842,0xdd13,0xd842,0xdd14, - 0xd842,0xdd15,0xd842,0xdd16,0xd842,0xdd17,0xd842,0xdd18,0xd842,0xdd19, - 0xd842,0xdd1a,0xd842,0xdd1b,0xd842,0xdd1c,0xd842,0xdd1d,0xd842,0xdd1e, - 0xd842,0xdd1f,0xd842,0xdd20,0xd842,0xdd21,0xd842,0xdd22,0xd842,0xdd23, - 0xd842,0xdd24,0xd842,0xdd25,0xd842,0xdd26,0xd842,0xdd27,0xd842,0xdd28, - 0xd842,0xdd29,0xd842,0xdd2a,0xd842,0xdd2b,0xd842,0xdd2c,0xd842,0xdd2d, - 0xd842,0xdd2e,0xd842,0xdd2f,0xd842,0xdd30,0xd842,0xdd31,0xd842,0xdd32, - 0xd842,0xdd33,0xd842,0xdd34,0xd842,0xdd35,0xd842,0xdd36,0xd842,0xdd37, - 0xd842,0xdd38,0xd842,0xdd39,0xd842,0xdd3a,0xd842,0xdd3b,0xd842,0xdd3c, - 0xd842,0xdd3d,0xd842,0xdd3e,0xd842,0xdd3f,0xd842,0xdd40,0xd842,0xdd41, - 0xd842,0xdd42,0xd842,0xdd43,0xd842,0xdd44,0xd842,0xdd45,0xd842,0xdd46, - 0xd842,0xdd47,0xd842,0xdd48,0xd842,0xdd49,0xd842,0xdd4a,0xd842,0xdd4b, - 0xd842,0xdd4c,0xd842,0xdd4d,0xd842,0xdd4e,0xd842,0xdd4f,0xd842,0xdd50, - 0xd842,0xdd51,0xd842,0xdd52,0xd842,0xdd53,0xd842,0xdd54,0xd842,0xdd55, - 0xd842,0xdd56,0xd842,0xdd57,0xd842,0xdd58,0xd842,0xdd59,0xd842,0xdd5a, - 0xd842,0xdd5b,0xd842,0xdd5c,0xd842,0xdd5d,0xd842,0xdd5e,0xd842,0xdd5f, - 0xd842,0xdd60,0xd842,0xdd61,0xd842,0xdd62,0xd842,0xdd63,0xd842,0xdd64, - 0xd842,0xdd65,0xd842,0xdd66,0xd842,0xdd67,0xd842,0xdd68,0xd842,0xdd69, - 0xd842,0xdd6a,0xd842,0xdd6b,0xd842,0xdd6c,0xd842,0xdd6d,0xd842,0xdd6e, - 0xd842,0xdd6f,0xd842,0xdd70,0xd842,0xdd71,0xd842,0xdd72,0xd842,0xdd73, - 0xd842,0xdd74,0xd842,0xdd75,0xd842,0xdd76,0xd842,0xdd77,0xd842,0xdd78, - 0xd842,0xdd79,0xd842,0xdd7a,0xd842,0xdd7b,0xd842,0xdd7c,0xd842,0xdd7d, - 0xd842,0xdd7e,0xd842,0xdd7f,0xd842,0xdd80,0xd842,0xdd81,0xd842,0xdd82, - 0xd842,0xdd83,0xd842,0xdd84,0xd842,0xdd85,0xd842,0xdd86,0xd842,0xdd87, - 0xd842,0xdd88,0xd842,0xdd89,0xd842,0xdd8a,0xd842,0xdd8b,0xd842,0xdd8c, - 0xd842,0xdd8d,0xd842,0xdd8e,0xd842,0xdd8f,0xd842,0xdd90,0xd842,0xdd91, - 0xd842,0xdd92,0xd842,0xdd93,0xd842,0xdd94,0xd842,0xdd95,0xd842,0xdd96, - 0xd842,0xdd97,0xd842,0xdd98,0xd842,0xdd99,0xd842,0xdd9a,0xd842,0xdd9b, - 0xd842,0xdd9c,0xd842,0xdd9d,0xd842,0xdd9e,0xd842,0xdd9f,0xd842,0xdda0, - 0xd842,0xdda1,0xd842,0xdda2,0xd842,0xdda3,0xd842,0xdda4,0xd842,0xdda5, - 0xd842,0xdda6,0xd842,0xdda7,0xd842,0xdda8,0xd842,0xdda9,0xd842,0xddaa, - 0xd842,0xddab,0xd842,0xddac,0xd842,0xddad,0xd842,0xddae,0xd842,0xddaf, - 0xd842,0xddb0,0xd842,0xddb1,0xd842,0xddb2,0xd842,0xddb3,0xd842,0xddb4, - 0xd842,0xddb5,0xd842,0xddb6,0xd842,0xddb7,0xd842,0xddb8,0xd842,0xddb9, - 0xd842,0xddba,0xd842,0xddbb,0xd842,0xddbc,0xd842,0xddbd,0xd842,0xddbe, - 0xd842,0xddbf,0xd842,0xddc0,0xd842,0xddc1,0xd842,0xddc2,0xd842,0xddc3, - 0xd842,0xddc4,0xd842,0xddc5,0xd842,0xddc6,0xd842,0xddc7,0xd842,0xddc8, - 0xd842,0xddc9,0xd842,0xddca,0xd842,0xddcb,0xd842,0xddcc,0xd842,0xddcd, - 0xd842,0xddce,0xd842,0xddcf,0xd842,0xddd0,0xd842,0xddd1,0xd842,0xddd2, - 0xd842,0xddd3,0xd842,0xddd4,0xd842,0xddd5,0xd842,0xddd6,0xd842,0xddd7, - 0xd842,0xddd8,0xd842,0xddd9,0xd842,0xddda,0xd842,0xdddb,0xd842,0xdddc, - 0xd842,0xdddd,0xd842,0xddde,0xd842,0xdddf,0xd842,0xdde0,0xd842,0xdde1, - 0xd842,0xdde2,0xd842,0xdde3,0xd842,0xdde4,0xd842,0xdde5,0xd842,0xdde6, - 0xd842,0xdde7,0xd842,0xdde8,0xd842,0xdde9,0xd842,0xddea,0xd842,0xddeb, - 0xd842,0xddec,0xd842,0xdded,0xd842,0xddee,0xd842,0xddef,0xd842,0xddf0, - 0xd842,0xddf1,0xd842,0xddf2,0xd842,0xddf3,0xd842,0xddf4,0xd842,0xddf5, - 0xd842,0xddf6,0xd842,0xddf7,0xd842,0xddf8,0xd842,0xddf9,0xd842,0xddfa, - 0xd842,0xddfb,0xd842,0xddfc,0xd842,0xddfd,0xd842,0xddfe,0xd842,0xddff, - 0xd842,0xde00,0xd842,0xde01,0xd842,0xde02,0xd842,0xde03,0xd842,0xde04, - 0xd842,0xde05,0xd842,0xde06,0xd842,0xde07,0xd842,0xde08,0xd842,0xde09, - 0xd842,0xde0a,0xd842,0xde0b,0xd842,0xde0c,0xd842,0xde0d,0xd842,0xde0e, - 0xd842,0xde0f,0xd842,0xde10,0xd842,0xde11,0xd842,0xde12,0xd842,0xde13, - 0xd842,0xde14,0xd842,0xde15,0xd842,0xde16,0xd842,0xde17,0xd842,0xde18, - 0xd842,0xde19,0xd842,0xde1a,0xd842,0xde1b,0xd842,0xde1c,0xd842,0xde1d, - 0xd842,0xde1e,0xd842,0xde1f,0xd842,0xde20,0xd842,0xde21,0xd842,0xde22, - 0xd842,0xde23,0xd842,0xde24,0xd842,0xde25,0xd842,0xde26,0xd842,0xde27, - 0xd842,0xde28,0xd842,0xde29,0xd842,0xde2a,0xd842,0xde2b,0xd842,0xde2c, - 0xd842,0xde2d,0xd842,0xde2e,0xd842,0xde2f,0xd842,0xde30,0xd842,0xde31, - 0xd842,0xde32,0xd842,0xde33,0xd842,0xde34,0xd842,0xde35,0xd842,0xde36, - 0xd842,0xde37,0xd842,0xde38,0xd842,0xde39,0xd842,0xde3a,0xd842,0xde3b, - 0xd842,0xde3c,0xd842,0xde3d,0xd842,0xde3e,0xd842,0xde3f,0xd842,0xde40, - 0xd842,0xde41,0xd842,0xde42,0xd842,0xde43,0xd842,0xde44,0xd842,0xde45, - 0xd842,0xde46,0xd842,0xde47,0xd842,0xde48,0xd842,0xde49,0xd842,0xde4a, - 0xd842,0xde4b,0xd842,0xde4c,0xd842,0xde4d,0xd842,0xde4e,0xd842,0xde4f, - 0xd842,0xde50,0xd842,0xde51,0xd842,0xde52,0xd842,0xde53,0xd842,0xde54, - 0xd842,0xde55,0xd842,0xde56,0xd842,0xde57,0xd842,0xde58,0xd842,0xde59, - 0xd842,0xde5a,0xd842,0xde5b,0xd842,0xde5c,0xd842,0xde5d,0xd842,0xde5e, - 0xd842,0xde5f,0xd842,0xde60,0xd842,0xde61,0xd842,0xde62,0xd842,0xde63, - 0xd842,0xde64,0xd842,0xde65,0xd842,0xde66,0xd842,0xde67,0xd842,0xde68, - 0xd842,0xde69,0xd842,0xde6a,0xd842,0xde6b,0xd842,0xde6c,0xd842,0xde6d, - 0xd842,0xde6e,0xd842,0xde6f,0xd842,0xde70,0xd842,0xde71,0xd842,0xde72, - 0xd842,0xde73,0xd842,0xde74,0xd842,0xde75,0xd842,0xde76,0xd842,0xde77, - 0xd842,0xde78,0xd842,0xde79,0xd842,0xde7a,0xd842,0xde7b,0xd842,0xde7c, - 0xd842,0xde7d,0xd842,0xde7e,0xd842,0xde7f,0xd842,0xde80,0xd842,0xde81, - 0xd842,0xde82,0xd842,0xde83,0xd842,0xde84,0xd842,0xde85,0xd842,0xde86, - 0xd842,0xde87,0xd842,0xde88,0xd842,0xde89,0xd842,0xde8a,0xd842,0xde8b, - 0xd842,0xde8c,0xd842,0xde8d,0xd842,0xde8e,0xd842,0xde8f,0xd842,0xde90, - 0xd842,0xde91,0xd842,0xde92,0xd842,0xde93,0xd842,0xde94,0xd842,0xde95, - 0xd842,0xde96,0xd842,0xde97,0xd842,0xde98,0xd842,0xde99,0xd842,0xde9a, - 0xd842,0xde9b,0xd842,0xde9c,0xd842,0xde9d,0xd842,0xde9e,0xd842,0xde9f, - 0xd842,0xdea0,0xd842,0xdea1,0xd842,0xdea2,0xd842,0xdea3,0xd842,0xdea4, - 0xd842,0xdea5,0xd842,0xdea6,0xd842,0xdea7,0xd842,0xdea8,0xd842,0xdea9, - 0xd842,0xdeaa,0xd842,0xdeab,0xd842,0xdeac,0xd842,0xdead,0xd842,0xdeae, - 0xd842,0xdeaf,0xd842,0xdeb0,0xd842,0xdeb1,0xd842,0xdeb2,0xd842,0xdeb3, - 0xd842,0xdeb4,0xd842,0xdeb5,0xd842,0xdeb6,0xd842,0xdeb7,0xd842,0xdeb8, - 0xd842,0xdeb9,0xd842,0xdeba,0xd842,0xdebb,0xd842,0xdebc,0xd842,0xdebd, - 0xd842,0xdebe,0xd842,0xdebf,0xd842,0xdec0,0xd842,0xdec1,0xd842,0xdec2, - 0xd842,0xdec3,0xd842,0xdec4,0xd842,0xdec5,0xd842,0xdec6,0xd842,0xdec7, - 0xd842,0xdec8,0xd842,0xdec9,0xd842,0xdeca,0xd842,0xdecb,0xd842,0xdecc, - 0xd842,0xdecd,0xd842,0xdece,0xd842,0xdecf,0xd842,0xded0,0xd842,0xded1, - 0xd842,0xded2,0xd842,0xded3,0xd842,0xded4,0xd842,0xded5,0xd842,0xded6, - 0xd842,0xded7,0xd842,0xded8,0xd842,0xded9,0xd842,0xdeda,0xd842,0xdedb, - 0xd842,0xdedc,0xd842,0xdedd,0xd842,0xdede,0xd842,0xdedf,0xd842,0xdee0, - 0xd842,0xdee1,0xd842,0xdee2,0xd842,0xdee3,0xd842,0xdee4,0xd842,0xdee5, - 0xd842,0xdee6,0xd842,0xdee7,0xd842,0xdee8,0xd842,0xdee9,0xd842,0xdeea, - 0xd842,0xdeeb,0xd842,0xdeec,0xd842,0xdeed,0xd842,0xdeee,0xd842,0xdeef, - 0xd842,0xdef0,0xd842,0xdef1,0xd842,0xdef2,0xd842,0xdef3,0xd842,0xdef4, - 0xd842,0xdef5,0xd842,0xdef6,0xd842,0xdef7,0xd842,0xdef8,0xd842,0xdef9, - 0xd842,0xdefa,0xd842,0xdefb,0xd842,0xdefc,0xd842,0xdefd,0xd842,0xdefe, - 0xd842,0xdeff,0xd842,0xdf00,0xd842,0xdf01,0xd842,0xdf02,0xd842,0xdf03, - 0xd842,0xdf04,0xd842,0xdf05,0xd842,0xdf06,0xd842,0xdf07,0xd842,0xdf08, - 0xd842,0xdf09,0xd842,0xdf0a,0xd842,0xdf0b,0xd842,0xdf0c,0xd842,0xdf0d, - 0xd842,0xdf0e,0xd842,0xdf0f,0xd842,0xdf10,0xd842,0xdf11,0xd842,0xdf12, - 0xd842,0xdf13,0xd842,0xdf14,0xd842,0xdf15,0xd842,0xdf16,0xd842,0xdf17, - 0xd842,0xdf18,0xd842,0xdf19,0xd842,0xdf1a,0xd842,0xdf1b,0xd842,0xdf1c, - 0xd842,0xdf1d,0xd842,0xdf1e,0xd842,0xdf1f,0xd842,0xdf20,0xd842,0xdf21, - 0xd842,0xdf22,0xd842,0xdf23,0xd842,0xdf24,0xd842,0xdf25,0xd842,0xdf26, - 0xd842,0xdf27,0xd842,0xdf28,0xd842,0xdf29,0xd842,0xdf2a,0xd842,0xdf2b, - 0xd842,0xdf2c,0xd842,0xdf2d,0xd842,0xdf2e,0xd842,0xdf2f,0xd842,0xdf30, - 0xd842,0xdf31,0xd842,0xdf32,0xd842,0xdf33,0xd842,0xdf34,0xd842,0xdf35, - 0xd842,0xdf36,0xd842,0xdf37,0xd842,0xdf38,0xd842,0xdf39,0xd842,0xdf3a, - 0xd842,0xdf3b,0xd842,0xdf3c,0xd842,0xdf3d,0xd842,0xdf3e,0xd842,0xdf3f, - 0xd842,0xdf40,0xd842,0xdf41,0xd842,0xdf42,0xd842,0xdf43,0xd842,0xdf44, - 0xd842,0xdf45,0xd842,0xdf46,0xd842,0xdf47,0xd842,0xdf48,0xd842,0xdf49, - 0xd842,0xdf4a,0xd842,0xdf4b,0xd842,0xdf4c,0xd842,0xdf4d,0xd842,0xdf4e, - 0xd842,0xdf4f,0xd842,0xdf50,0xd842,0xdf51,0xd842,0xdf52,0xd842,0xdf53, - 0xd842,0xdf54,0xd842,0xdf55,0xd842,0xdf56,0xd842,0xdf57,0xd842,0xdf58, - 0xd842,0xdf59,0xd842,0xdf5a,0xd842,0xdf5b,0xd842,0xdf5c,0xd842,0xdf5d, - 0xd842,0xdf5e,0xd842,0xdf5f,0xd842,0xdf60,0xd842,0xdf61,0xd842,0xdf62, - 0xd842,0xdf63,0xd842,0xdf64,0xd842,0xdf65,0xd842,0xdf66,0xd842,0xdf67, - 0xd842,0xdf68,0xd842,0xdf69,0xd842,0xdf6a,0xd842,0xdf6b,0xd842,0xdf6c, - 0xd842,0xdf6d,0xd842,0xdf6e,0xd842,0xdf6f,0xd842,0xdf70,0xd842,0xdf71, - 0xd842,0xdf72,0xd842,0xdf73,0xd842,0xdf74,0xd842,0xdf75,0xd842,0xdf76, - 0xd842,0xdf77,0xd842,0xdf78,0xd842,0xdf79,0xd842,0xdf7a,0xd842,0xdf7b, - 0xd842,0xdf7c,0xd842,0xdf7d,0xd842,0xdf7e,0xd842,0xdf7f,0xd842,0xdf80, - 0xd842,0xdf81,0xd842,0xdf82,0xd842,0xdf83,0xd842,0xdf84,0xd842,0xdf85, - 0xd842,0xdf86,0xd842,0xdf87,0xd842,0xdf88,0xd842,0xdf89,0xd842,0xdf8a, - 0xd842,0xdf8b,0xd842,0xdf8c,0xd842,0xdf8d,0xd842,0xdf8e,0xd842,0xdf8f, - 0xd842,0xdf90,0xd842,0xdf91,0xd842,0xdf92,0xd842,0xdf93,0xd842,0xdf94, - 0xd842,0xdf95,0xd842,0xdf96,0xd842,0xdf97,0xd842,0xdf98,0xd842,0xdf99, - 0xd842,0xdf9a,0xd842,0xdf9b,0xd842,0xdf9c,0xd842,0xdf9d,0xd842,0xdf9e, - 0xd842,0xdf9f,0xd842,0xdfa0,0xd842,0xdfa1,0xd842,0xdfa2,0xd842,0xdfa3, - 0xd842,0xdfa4,0xd842,0xdfa5,0xd842,0xdfa6,0xd842,0xdfa7,0xd842,0xdfa8, - 0xd842,0xdfa9,0xd842,0xdfaa,0xd842,0xdfab,0xd842,0xdfac,0xd842,0xdfad, - 0xd842,0xdfae,0xd842,0xdfaf,0xd842,0xdfb0,0xd842,0xdfb1,0xd842,0xdfb2, - 0xd842,0xdfb3,0xd842,0xdfb4,0xd842,0xdfb5,0xd842,0xdfb6,0xd842,0xdfb7, - 0xd842,0xdfb8,0xd842,0xdfb9,0xd842,0xdfba,0xd842,0xdfbb,0xd842,0xdfbc, - 0xd842,0xdfbd,0xd842,0xdfbe,0xd842,0xdfbf,0xd842,0xdfc0,0xd842,0xdfc1, - 0xd842,0xdfc2,0xd842,0xdfc3,0xd842,0xdfc4,0xd842,0xdfc5,0xd842,0xdfc6, - 0xd842,0xdfc7,0xd842,0xdfc8,0xd842,0xdfc9,0xd842,0xdfca,0xd842,0xdfcb, - 0xd842,0xdfcc,0xd842,0xdfcd,0xd842,0xdfce,0xd842,0xdfcf,0xd842,0xdfd0, - 0xd842,0xdfd1,0xd842,0xdfd2,0xd842,0xdfd3,0xd842,0xdfd4,0xd842,0xdfd5, - 0xd842,0xdfd6,0xd842,0xdfd7,0xd842,0xdfd8,0xd842,0xdfd9,0xd842,0xdfda, - 0xd842,0xdfdb,0xd842,0xdfdc,0xd842,0xdfdd,0xd842,0xdfde,0xd842,0xdfdf, - 0xd842,0xdfe0,0xd842,0xdfe1,0xd842,0xdfe2,0xd842,0xdfe3,0xd842,0xdfe4, - 0xd842,0xdfe5,0xd842,0xdfe6,0xd842,0xdfe7,0xd842,0xdfe8,0xd842,0xdfe9, - 0xd842,0xdfea,0xd842,0xdfeb,0xd842,0xdfec,0xd842,0xdfed,0xd842,0xdfee, - 0xd842,0xdfef,0xd842,0xdff0,0xd842,0xdff1,0xd842,0xdff2,0xd842,0xdff3, - 0xd842,0xdff4,0xd842,0xdff5,0xd842,0xdff6,0xd842,0xdff7,0xd842,0xdff8, - 0xd842,0xdff9,0xd842,0xdffa,0xd842,0xdffb,0xd842,0xdffc,0xd842,0xdffd, - 0xd842,0xdffe,0xd842,0xdfff,0xd843,0xdc00,0xd843,0xdc01,0xd843,0xdc02, - 0xd843,0xdc03,0xd843,0xdc04,0xd843,0xdc05,0xd843,0xdc06,0xd843,0xdc07, - 0xd843,0xdc08,0xd843,0xdc09,0xd843,0xdc0a,0xd843,0xdc0b,0xd843,0xdc0c, - 0xd843,0xdc0d,0xd843,0xdc0e,0xd843,0xdc0f,0xd843,0xdc10,0xd843,0xdc11, - 0xd843,0xdc12,0xd843,0xdc13,0xd843,0xdc14,0xd843,0xdc15,0xd843,0xdc16, - 0xd843,0xdc17,0xd843,0xdc18,0xd843,0xdc19,0xd843,0xdc1a,0xd843,0xdc1b, - 0xd843,0xdc1c,0xd843,0xdc1d,0xd843,0xdc1e,0xd843,0xdc1f,0xd843,0xdc20, - 0xd843,0xdc21,0xd843,0xdc22,0xd843,0xdc23,0xd843,0xdc24,0xd843,0xdc25, - 0xd843,0xdc26,0xd843,0xdc27,0xd843,0xdc28,0xd843,0xdc29,0xd843,0xdc2a, - 0xd843,0xdc2b,0xd843,0xdc2c,0xd843,0xdc2d,0xd843,0xdc2e,0xd843,0xdc2f, - 0xd843,0xdc30,0xd843,0xdc31,0xd843,0xdc32,0xd843,0xdc33,0xd843,0xdc34, - 0xd843,0xdc35,0xd843,0xdc36,0xd843,0xdc37,0xd843,0xdc38,0xd843,0xdc39, - 0xd843,0xdc3a,0xd843,0xdc3b,0xd843,0xdc3c,0xd843,0xdc3d,0xd843,0xdc3e, - 0xd843,0xdc3f,0xd843,0xdc40,0xd843,0xdc41,0xd843,0xdc42,0xd843,0xdc43, - 0xd843,0xdc44,0xd843,0xdc45,0xd843,0xdc46,0xd843,0xdc47,0xd843,0xdc48, - 0xd843,0xdc49,0xd843,0xdc4a,0xd843,0xdc4b,0xd843,0xdc4c,0xd843,0xdc4d, - 0xd843,0xdc4e,0xd843,0xdc4f,0xd843,0xdc50,0xd843,0xdc51,0xd843,0xdc52, - 0xd843,0xdc53,0xd843,0xdc54,0xd843,0xdc55,0xd843,0xdc56,0xd843,0xdc57, - 0xd843,0xdc58,0xd843,0xdc59,0xd843,0xdc5a,0xd843,0xdc5b,0xd843,0xdc5c, - 0xd843,0xdc5d,0xd843,0xdc5e,0xd843,0xdc5f,0xd843,0xdc60,0xd843,0xdc61, - 0xd843,0xdc62,0xd843,0xdc63,0xd843,0xdc64,0xd843,0xdc65,0xd843,0xdc66, - 0xd843,0xdc67,0xd843,0xdc68,0xd843,0xdc69,0xd843,0xdc6a,0xd843,0xdc6b, - 0xd843,0xdc6c,0xd843,0xdc6d,0xd843,0xdc6e,0xd843,0xdc6f,0xd843,0xdc70, - 0xd843,0xdc71,0xd843,0xdc72,0xd843,0xdc73,0xd843,0xdc74,0xd843,0xdc75, - 0xd843,0xdc76,0xd843,0xdc77,0xd843,0xdc78,0xd843,0xdc79,0xd843,0xdc7a, - 0xd843,0xdc7b,0xd843,0xdc7c,0xd843,0xdc7d,0xd843,0xdc7e,0xd843,0xdc7f, - 0xd843,0xdc80,0xd843,0xdc81,0xd843,0xdc82,0xd843,0xdc83,0xd843,0xdc84, - 0xd843,0xdc85,0xd843,0xdc86,0xd843,0xdc87,0xd843,0xdc88,0xd843,0xdc89, - 0xd843,0xdc8a,0xd843,0xdc8b,0xd843,0xdc8c,0xd843,0xdc8d,0xd843,0xdc8e, - 0xd843,0xdc8f,0xd843,0xdc90,0xd843,0xdc91,0xd843,0xdc92,0xd843,0xdc93, - 0xd843,0xdc94,0xd843,0xdc95,0xd843,0xdc96,0xd843,0xdc97,0xd843,0xdc98, - 0xd843,0xdc99,0xd843,0xdc9a,0xd843,0xdc9b,0xd843,0xdc9c,0xd843,0xdc9d, - 0xd843,0xdc9e,0xd843,0xdc9f,0xd843,0xdca0,0xd843,0xdca1,0xd843,0xdca2, - 0xd843,0xdca3,0xd843,0xdca4,0xd843,0xdca5,0xd843,0xdca6,0xd843,0xdca7, - 0xd843,0xdca8,0xd843,0xdca9,0xd843,0xdcaa,0xd843,0xdcab,0xd843,0xdcac, - 0xd843,0xdcad,0xd843,0xdcae,0xd843,0xdcaf,0xd843,0xdcb0,0xd843,0xdcb1, - 0xd843,0xdcb2,0xd843,0xdcb3,0xd843,0xdcb4,0xd843,0xdcb5,0xd843,0xdcb6, - 0xd843,0xdcb7,0xd843,0xdcb8,0xd843,0xdcb9,0xd843,0xdcba,0xd843,0xdcbb, - 0xd843,0xdcbc,0xd843,0xdcbd,0xd843,0xdcbe,0xd843,0xdcbf,0xd843,0xdcc0, - 0xd843,0xdcc1,0xd843,0xdcc2,0xd843,0xdcc3,0xd843,0xdcc4,0xd843,0xdcc5, - 0xd843,0xdcc6,0xd843,0xdcc7,0xd843,0xdcc8,0xd843,0xdcc9,0xd843,0xdcca, - 0xd843,0xdccb,0xd843,0xdccc,0xd843,0xdccd,0xd843,0xdcce,0xd843,0xdccf, - 0xd843,0xdcd0,0xd843,0xdcd1,0xd843,0xdcd2,0xd843,0xdcd3,0xd843,0xdcd4, - 0xd843,0xdcd5,0xd843,0xdcd6,0xd843,0xdcd7,0xd843,0xdcd8,0xd843,0xdcd9, - 0xd843,0xdcda,0xd843,0xdcdb,0xd843,0xdcdc,0xd843,0xdcdd,0xd843,0xdcde, - 0xd843,0xdcdf,0xd843,0xdce0,0xd843,0xdce1,0xd843,0xdce2,0xd843,0xdce3, - 0xd843,0xdce4,0xd843,0xdce5,0xd843,0xdce6,0xd843,0xdce7,0xd843,0xdce8, - 0xd843,0xdce9,0xd843,0xdcea,0xd843,0xdceb,0xd843,0xdcec,0xd843,0xdced, - 0xd843,0xdcee,0xd843,0xdcef,0xd843,0xdcf0,0xd843,0xdcf1,0xd843,0xdcf2, - 0xd843,0xdcf3,0xd843,0xdcf4,0xd843,0xdcf5,0xd843,0xdcf6,0xd843,0xdcf7, - 0xd843,0xdcf8,0xd843,0xdcf9,0xd843,0xdcfa,0xd843,0xdcfb,0xd843,0xdcfc, - 0xd843,0xdcfd,0xd843,0xdcfe,0xd843,0xdcff,0xd843,0xdd00,0xd843,0xdd01, - 0xd843,0xdd02,0xd843,0xdd03,0xd843,0xdd04,0xd843,0xdd05,0xd843,0xdd06, - 0xd843,0xdd07,0xd843,0xdd08,0xd843,0xdd09,0xd843,0xdd0a,0xd843,0xdd0b, - 0xd843,0xdd0c,0xd843,0xdd0d,0xd843,0xdd0e,0xd843,0xdd0f,0xd843,0xdd10, - 0xd843,0xdd11,0xd843,0xdd12,0xd843,0xdd13,0xd843,0xdd14,0xd843,0xdd15, - 0xd843,0xdd16,0xd843,0xdd17,0xd843,0xdd18,0xd843,0xdd19,0xd843,0xdd1a, - 0xd843,0xdd1b,0xd843,0xdd1c,0xd843,0xdd1d,0xd843,0xdd1e,0xd843,0xdd1f, - 0xd843,0xdd20,0xd843,0xdd21,0xd843,0xdd22,0xd843,0xdd23,0xd843,0xdd24, - 0xd843,0xdd25,0xd843,0xdd26,0xd843,0xdd27,0xd843,0xdd28,0xd843,0xdd29, - 0xd843,0xdd2a,0xd843,0xdd2b,0xd843,0xdd2c,0xd843,0xdd2d,0xd843,0xdd2e, - 0xd843,0xdd2f,0xd843,0xdd30,0xd843,0xdd31,0xd843,0xdd32,0xd843,0xdd33, - 0xd843,0xdd34,0xd843,0xdd35,0xd843,0xdd36,0xd843,0xdd37,0xd843,0xdd38, - 0xd843,0xdd39,0xd843,0xdd3a,0xd843,0xdd3b,0xd843,0xdd3c,0xd843,0xdd3d, - 0xd843,0xdd3e,0xd843,0xdd3f,0xd843,0xdd40,0xd843,0xdd41,0xd843,0xdd42, - 0xd843,0xdd43,0xd843,0xdd44,0xd843,0xdd45,0xd843,0xdd46,0xd843,0xdd47, - 0xd843,0xdd48,0xd843,0xdd49,0xd843,0xdd4a,0xd843,0xdd4b,0xd843,0xdd4c, - 0xd843,0xdd4d,0xd843,0xdd4e,0xd843,0xdd4f,0xd843,0xdd50,0xd843,0xdd51, - 0xd843,0xdd52,0xd843,0xdd53,0xd843,0xdd54,0xd843,0xdd55,0xd843,0xdd56, - 0xd843,0xdd57,0xd843,0xdd58,0xd843,0xdd59,0xd843,0xdd5a,0xd843,0xdd5b, - 0xd843,0xdd5c,0xd843,0xdd5d,0xd843,0xdd5e,0xd843,0xdd5f,0xd843,0xdd60, - 0xd843,0xdd61,0xd843,0xdd62,0xd843,0xdd63,0xd843,0xdd64,0xd843,0xdd65, - 0xd843,0xdd66,0xd843,0xdd67,0xd843,0xdd68,0xd843,0xdd69,0xd843,0xdd6a, - 0xd843,0xdd6b,0xd843,0xdd6c,0xd843,0xdd6d,0xd843,0xdd6e,0xd843,0xdd6f, - 0xd843,0xdd70,0xd843,0xdd71,0xd843,0xdd72,0xd843,0xdd73,0xd843,0xdd74, - 0xd843,0xdd75,0xd843,0xdd76,0xd843,0xdd77,0xd843,0xdd78,0xd843,0xdd79, - 0xd843,0xdd7a,0xd843,0xdd7b,0xd843,0xdd7c,0xd843,0xdd7d,0xd843,0xdd7e, - 0xd843,0xdd7f,0xd843,0xdd80,0xd843,0xdd81,0xd843,0xdd82,0xd843,0xdd83, - 0xd843,0xdd84,0xd843,0xdd85,0xd843,0xdd86,0xd843,0xdd87,0xd843,0xdd88, - 0xd843,0xdd89,0xd843,0xdd8a,0xd843,0xdd8b,0xd843,0xdd8c,0xd843,0xdd8d, - 0xd843,0xdd8e,0xd843,0xdd8f,0xd843,0xdd90,0xd843,0xdd91,0xd843,0xdd92, - 0xd843,0xdd93,0xd843,0xdd94,0xd843,0xdd95,0xd843,0xdd96,0xd843,0xdd97, - 0xd843,0xdd98,0xd843,0xdd99,0xd843,0xdd9a,0xd843,0xdd9b,0xd843,0xdd9c, - 0xd843,0xdd9d,0xd843,0xdd9e,0xd843,0xdd9f,0xd843,0xdda0,0xd843,0xdda1, - 0xd843,0xdda2,0xd843,0xdda3,0xd843,0xdda4,0xd843,0xdda5,0xd843,0xdda6, - 0xd843,0xdda7,0xd843,0xdda8,0xd843,0xdda9,0xd843,0xddaa,0xd843,0xddab, - 0xd843,0xddac,0xd843,0xddad,0xd843,0xddae,0xd843,0xddaf,0xd843,0xddb0, - 0xd843,0xddb1,0xd843,0xddb2,0xd843,0xddb3,0xd843,0xddb4,0xd843,0xddb5, - 0xd843,0xddb6,0xd843,0xddb7,0xd843,0xddb8,0xd843,0xddb9,0xd843,0xddba, - 0xd843,0xddbb,0xd843,0xddbc,0xd843,0xddbd,0xd843,0xddbe,0xd843,0xddbf, - 0xd843,0xddc0,0xd843,0xddc1,0xd843,0xddc2,0xd843,0xddc3,0xd843,0xddc4, - 0xd843,0xddc5,0xd843,0xddc6,0xd843,0xddc7,0xd843,0xddc8,0xd843,0xddc9, - 0xd843,0xddca,0xd843,0xddcb,0xd843,0xddcc,0xd843,0xddcd,0xd843,0xddce, - 0xd843,0xddcf,0xd843,0xddd0,0xd843,0xddd1,0xd843,0xddd2,0xd843,0xddd3, - 0xd843,0xddd4,0xd843,0xddd5,0xd843,0xddd6,0xd843,0xddd7,0xd843,0xddd8, - 0xd843,0xddd9,0xd843,0xddda,0xd843,0xdddb,0xd843,0xdddc,0xd843,0xdddd, - 0xd843,0xddde,0xd843,0xdddf,0xd843,0xdde0,0xd843,0xdde1,0xd843,0xdde2, - 0xd843,0xdde3,0xd843,0xdde4,0xd843,0xdde5,0xd843,0xdde6,0xd843,0xdde7, - 0xd843,0xdde8,0xd843,0xdde9,0xd843,0xddea,0xd843,0xddeb,0xd843,0xddec, - 0xd843,0xdded,0xd843,0xddee,0xd843,0xddef,0xd843,0xddf0,0xd843,0xddf1, - 0xd843,0xddf2,0xd843,0xddf3,0xd843,0xddf4,0xd843,0xddf5,0xd843,0xddf6, - 0xd843,0xddf7,0xd843,0xddf8,0xd843,0xddf9,0xd843,0xddfa,0xd843,0xddfb, - 0xd843,0xddfc,0xd843,0xddfd,0xd843,0xddfe,0xd843,0xddff,0xd843,0xde00, - 0xd843,0xde01,0xd843,0xde02,0xd843,0xde03,0xd843,0xde04,0xd843,0xde05, - 0xd843,0xde06,0xd843,0xde07,0xd843,0xde08,0xd843,0xde09,0xd843,0xde0a, - 0xd843,0xde0b,0xd843,0xde0c,0xd843,0xde0d,0xd843,0xde0e,0xd843,0xde0f, - 0xd843,0xde10,0xd843,0xde11,0xd843,0xde12,0xd843,0xde13,0xd843,0xde14, - 0xd843,0xde15,0xd843,0xde16,0xd843,0xde17,0xd843,0xde18,0xd843,0xde19, - 0xd843,0xde1a,0xd843,0xde1b,0xd843,0xde1c,0xd843,0xde1d,0xd843,0xde1e, - 0xd843,0xde1f,0xd843,0xde20,0xd843,0xde21,0xd843,0xde22,0xd843,0xde23, - 0xd843,0xde24,0xd843,0xde25,0xd843,0xde26,0xd843,0xde27,0xd843,0xde28, - 0xd843,0xde29,0xd843,0xde2a,0xd843,0xde2b,0xd843,0xde2c,0xd843,0xde2d, - 0xd843,0xde2e,0xd843,0xde2f,0xd843,0xde30,0xd843,0xde31,0xd843,0xde32, - 0xd843,0xde33,0xd843,0xde34,0xd843,0xde35,0xd843,0xde36,0xd843,0xde37, - 0xd843,0xde38,0xd843,0xde39,0xd843,0xde3a,0xd843,0xde3b,0xd843,0xde3c, - 0xd843,0xde3d,0xd843,0xde3e,0xd843,0xde3f,0xd843,0xde40,0xd843,0xde41, - 0xd843,0xde42,0xd843,0xde43,0xd843,0xde44,0xd843,0xde45,0xd843,0xde46, - 0xd843,0xde47,0xd843,0xde48,0xd843,0xde49,0xd843,0xde4a,0xd843,0xde4b, - 0xd843,0xde4c,0xd843,0xde4d,0xd843,0xde4e,0xd843,0xde4f,0xd843,0xde50, - 0xd843,0xde51,0xd843,0xde52,0xd843,0xde53,0xd843,0xde54,0xd843,0xde55, - 0xd843,0xde56,0xd843,0xde57,0xd843,0xde58,0xd843,0xde59,0xd843,0xde5a, - 0xd843,0xde5b,0xd843,0xde5c,0xd843,0xde5d,0xd843,0xde5e,0xd843,0xde5f, - 0xd843,0xde60,0xd843,0xde61,0xd843,0xde62,0xd843,0xde63,0xd843,0xde64, - 0xd843,0xde65,0xd843,0xde66,0xd843,0xde67,0xd843,0xde68,0xd843,0xde69, - 0xd843,0xde6a,0xd843,0xde6b,0xd843,0xde6c,0xd843,0xde6d,0xd843,0xde6e, - 0xd843,0xde6f,0xd843,0xde70,0xd843,0xde71,0xd843,0xde72,0xd843,0xde73, - 0xd843,0xde74,0xd843,0xde75,0xd843,0xde76,0xd843,0xde77,0xd843,0xde78, - 0xd843,0xde79,0xd843,0xde7a,0xd843,0xde7b,0xd843,0xde7c,0xd843,0xde7d, - 0xd843,0xde7e,0xd843,0xde7f,0xd843,0xde80,0xd843,0xde81,0xd843,0xde82, - 0xd843,0xde83,0xd843,0xde84,0xd843,0xde85,0xd843,0xde86,0xd843,0xde87, - 0xd843,0xde88,0xd843,0xde89,0xd843,0xde8a,0xd843,0xde8b,0xd843,0xde8c, - 0xd843,0xde8d,0xd843,0xde8e,0xd843,0xde8f,0xd843,0xde90,0xd843,0xde91, - 0xd843,0xde92,0xd843,0xde93,0xd843,0xde94,0xd843,0xde95,0xd843,0xde96, - 0xd843,0xde97,0xd843,0xde98,0xd843,0xde99,0xd843,0xde9a,0xd843,0xde9b, - 0xd843,0xde9c,0xd843,0xde9d,0xd843,0xde9e,0xd843,0xde9f,0xd843,0xdea0, - 0xd843,0xdea1,0xd843,0xdea2,0xd843,0xdea3,0xd843,0xdea4,0xd843,0xdea5, - 0xd843,0xdea6,0xd843,0xdea7,0xd843,0xdea8,0xd843,0xdea9,0xd843,0xdeaa, - 0xd843,0xdeab,0xd843,0xdeac,0xd843,0xdead,0xd843,0xdeae,0xd843,0xdeaf, - 0xd843,0xdeb0,0xd843,0xdeb1,0xd843,0xdeb2,0xd843,0xdeb3,0xd843,0xdeb4, - 0xd843,0xdeb5,0xd843,0xdeb6,0xd843,0xdeb7,0xd843,0xdeb8,0xd843,0xdeb9, - 0xd843,0xdeba,0xd843,0xdebb,0xd843,0xdebc,0xd843,0xdebd,0xd843,0xdebe, - 0xd843,0xdebf,0xd843,0xdec0,0xd843,0xdec1,0xd843,0xdec2,0xd843,0xdec3, - 0xd843,0xdec4,0xd843,0xdec5,0xd843,0xdec6,0xd843,0xdec7,0xd843,0xdec8, - 0xd843,0xdec9,0xd843,0xdeca,0xd843,0xdecb,0xd843,0xdecc,0xd843,0xdecd, - 0xd843,0xdece,0xd843,0xdecf,0xd843,0xded0,0xd843,0xded1,0xd843,0xded2, - 0xd843,0xded3,0xd843,0xded4,0xd843,0xded5,0xd843,0xded6,0xd843,0xded7, - 0xd843,0xded8,0xd843,0xded9,0xd843,0xdeda,0xd843,0xdedb,0xd843,0xdedc, - 0xd843,0xdedd,0xd843,0xdede,0xd843,0xdedf,0xd843,0xdee0,0xd843,0xdee1, - 0xd843,0xdee2,0xd843,0xdee3,0xd843,0xdee4,0xd843,0xdee5,0xd843,0xdee6, - 0xd843,0xdee7,0xd843,0xdee8,0xd843,0xdee9,0xd843,0xdeea,0xd843,0xdeeb, - 0xd843,0xdeec,0xd843,0xdeed,0xd843,0xdeee,0xd843,0xdeef,0xd843,0xdef0, - 0xd843,0xdef1,0xd843,0xdef2,0xd843,0xdef3,0xd843,0xdef4,0xd843,0xdef5, - 0xd843,0xdef6,0xd843,0xdef7,0xd843,0xdef8,0xd843,0xdef9,0xd843,0xdefa, - 0xd843,0xdefb,0xd843,0xdefc,0xd843,0xdefd,0xd843,0xdefe,0xd843,0xdeff, - 0xd843,0xdf00,0xd843,0xdf01,0xd843,0xdf02,0xd843,0xdf03,0xd843,0xdf04, - 0xd843,0xdf05,0xd843,0xdf06,0xd843,0xdf07,0xd843,0xdf08,0xd843,0xdf09, - 0xd843,0xdf0a,0xd843,0xdf0b,0xd843,0xdf0c,0xd843,0xdf0d,0xd843,0xdf0e, - 0xd843,0xdf0f,0xd843,0xdf10,0xd843,0xdf11,0xd843,0xdf12,0xd843,0xdf13, - 0xd843,0xdf14,0xd843,0xdf15,0xd843,0xdf16,0xd843,0xdf17,0xd843,0xdf18, - 0xd843,0xdf19,0xd843,0xdf1a,0xd843,0xdf1b,0xd843,0xdf1c,0xd843,0xdf1d, - 0xd843,0xdf1e,0xd843,0xdf1f,0xd843,0xdf20,0xd843,0xdf21,0xd843,0xdf22, - 0xd843,0xdf23,0xd843,0xdf24,0xd843,0xdf25,0xd843,0xdf26,0xd843,0xdf27, - 0xd843,0xdf28,0xd843,0xdf29,0xd843,0xdf2a,0xd843,0xdf2b,0xd843,0xdf2c, - 0xd843,0xdf2d,0xd843,0xdf2e,0xd843,0xdf2f,0xd843,0xdf30,0xd843,0xdf31, - 0xd843,0xdf32,0xd843,0xdf33,0xd843,0xdf34,0xd843,0xdf35,0xd843,0xdf36, - 0xd843,0xdf37,0xd843,0xdf38,0xd843,0xdf39,0xd843,0xdf3a,0xd843,0xdf3b, - 0xd843,0xdf3c,0xd843,0xdf3d,0xd843,0xdf3e,0xd843,0xdf3f,0xd843,0xdf40, - 0xd843,0xdf41,0xd843,0xdf42,0xd843,0xdf43,0xd843,0xdf44,0xd843,0xdf45, - 0xd843,0xdf46,0xd843,0xdf47,0xd843,0xdf48,0xd843,0xdf49,0xd843,0xdf4a, - 0xd843,0xdf4b,0xd843,0xdf4c,0xd843,0xdf4d,0xd843,0xdf4e,0xd843,0xdf4f, - 0xd843,0xdf50,0xd843,0xdf51,0xd843,0xdf52,0xd843,0xdf53,0xd843,0xdf54, - 0xd843,0xdf55,0xd843,0xdf56,0xd843,0xdf57,0xd843,0xdf58,0xd843,0xdf59, - 0xd843,0xdf5a,0xd843,0xdf5b,0xd843,0xdf5c,0xd843,0xdf5d,0xd843,0xdf5e, - 0xd843,0xdf5f,0xd843,0xdf60,0xd843,0xdf61,0xd843,0xdf62,0xd843,0xdf63, - 0xd843,0xdf64,0xd843,0xdf65,0xd843,0xdf66,0xd843,0xdf67,0xd843,0xdf68, - 0xd843,0xdf69,0xd843,0xdf6a,0xd843,0xdf6b,0xd843,0xdf6c,0xd843,0xdf6d, - 0xd843,0xdf6e,0xd843,0xdf6f,0xd843,0xdf70,0xd843,0xdf71,0xd843,0xdf72, - 0xd843,0xdf73,0xd843,0xdf74,0xd843,0xdf75,0xd843,0xdf76,0xd843,0xdf77, - 0xd843,0xdf78,0xd843,0xdf79,0xd843,0xdf7a,0xd843,0xdf7b,0xd843,0xdf7c, - 0xd843,0xdf7d,0xd843,0xdf7e,0xd843,0xdf7f,0xd843,0xdf80,0xd843,0xdf81, - 0xd843,0xdf82,0xd843,0xdf83,0xd843,0xdf84,0xd843,0xdf85,0xd843,0xdf86, - 0xd843,0xdf87,0xd843,0xdf88,0xd843,0xdf89,0xd843,0xdf8a,0xd843,0xdf8b, - 0xd843,0xdf8c,0xd843,0xdf8d,0xd843,0xdf8e,0xd843,0xdf8f,0xd843,0xdf90, - 0xd843,0xdf91,0xd843,0xdf92,0xd843,0xdf93,0xd843,0xdf94,0xd843,0xdf95, - 0xd843,0xdf96,0xd843,0xdf97,0xd843,0xdf98,0xd843,0xdf99,0xd843,0xdf9a, - 0xd843,0xdf9b,0xd843,0xdf9c,0xd843,0xdf9d,0xd843,0xdf9e,0xd843,0xdf9f, - 0xd843,0xdfa0,0xd843,0xdfa1,0xd843,0xdfa2,0xd843,0xdfa3,0xd843,0xdfa4, - 0xd843,0xdfa5,0xd843,0xdfa6,0xd843,0xdfa7,0xd843,0xdfa8,0xd843,0xdfa9, - 0xd843,0xdfaa,0xd843,0xdfab,0xd843,0xdfac,0xd843,0xdfad,0xd843,0xdfae, - 0xd843,0xdfaf,0xd843,0xdfb0,0xd843,0xdfb1,0xd843,0xdfb2,0xd843,0xdfb3, - 0xd843,0xdfb4,0xd843,0xdfb5,0xd843,0xdfb6,0xd843,0xdfb7,0xd843,0xdfb8, - 0xd843,0xdfb9,0xd843,0xdfba,0xd843,0xdfbb,0xd843,0xdfbc,0xd843,0xdfbd, - 0xd843,0xdfbe,0xd843,0xdfbf,0xd843,0xdfc0,0xd843,0xdfc1,0xd843,0xdfc2, - 0xd843,0xdfc3,0xd843,0xdfc4,0xd843,0xdfc5,0xd843,0xdfc6,0xd843,0xdfc7, - 0xd843,0xdfc8,0xd843,0xdfc9,0xd843,0xdfca,0xd843,0xdfcb,0xd843,0xdfcc, - 0xd843,0xdfcd,0xd843,0xdfce,0xd843,0xdfcf,0xd843,0xdfd0,0xd843,0xdfd1, - 0xd843,0xdfd2,0xd843,0xdfd3,0xd843,0xdfd4,0xd843,0xdfd5,0xd843,0xdfd6, - 0xd843,0xdfd7,0xd843,0xdfd8,0xd843,0xdfd9,0xd843,0xdfda,0xd843,0xdfdb, - 0xd843,0xdfdc,0xd843,0xdfdd,0xd843,0xdfde,0xd843,0xdfdf,0xd843,0xdfe0, - 0xd843,0xdfe1,0xd843,0xdfe2,0xd843,0xdfe3,0xd843,0xdfe4,0xd843,0xdfe5, - 0xd843,0xdfe6,0xd843,0xdfe7,0xd843,0xdfe8,0xd843,0xdfe9,0xd843,0xdfea, - 0xd843,0xdfeb,0xd843,0xdfec,0xd843,0xdfed,0xd843,0xdfee,0xd843,0xdfef, - 0xd843,0xdff0,0xd843,0xdff1,0xd843,0xdff2,0xd843,0xdff3,0xd843,0xdff4, - 0xd843,0xdff5,0xd843,0xdff6,0xd843,0xdff7,0xd843,0xdff8,0xd843,0xdff9, - 0xd843,0xdffa,0xd843,0xdffb,0xd843,0xdffc,0xd843,0xdffd,0xd843,0xdffe, - 0xd843,0xdfff,0xd844,0xdc00,0xd844,0xdc01,0xd844,0xdc02,0xd844,0xdc03, - 0xd844,0xdc04,0xd844,0xdc05,0xd844,0xdc06,0xd844,0xdc07,0xd844,0xdc08, - 0xd844,0xdc09,0xd844,0xdc0a,0xd844,0xdc0b,0xd844,0xdc0c,0xd844,0xdc0d, - 0xd844,0xdc0e,0xd844,0xdc0f,0xd844,0xdc10,0xd844,0xdc11,0xd844,0xdc12, - 0xd844,0xdc13,0xd844,0xdc14,0xd844,0xdc15,0xd844,0xdc16,0xd844,0xdc17, - 0xd844,0xdc18,0xd844,0xdc19,0xd844,0xdc1a,0xd844,0xdc1b,0xd844,0xdc1c, - 0xd844,0xdc1d,0xd844,0xdc1e,0xd844,0xdc1f,0xd844,0xdc20,0xd844,0xdc21, - 0xd844,0xdc22,0xd844,0xdc23,0xd844,0xdc24,0xd844,0xdc25,0xd844,0xdc26, - 0xd844,0xdc27,0xd844,0xdc28,0xd844,0xdc29,0xd844,0xdc2a,0xd844,0xdc2b, - 0xd844,0xdc2c,0xd844,0xdc2d,0xd844,0xdc2e,0xd844,0xdc2f,0xd844,0xdc30, - 0xd844,0xdc31,0xd844,0xdc32,0xd844,0xdc33,0xd844,0xdc34,0xd844,0xdc35, - 0xd844,0xdc36,0xd844,0xdc37,0xd844,0xdc38,0xd844,0xdc39,0xd844,0xdc3a, - 0xd844,0xdc3b,0xd844,0xdc3c,0xd844,0xdc3d,0xd844,0xdc3e,0xd844,0xdc3f, - 0xd844,0xdc40,0xd844,0xdc41,0xd844,0xdc42,0xd844,0xdc43,0xd844,0xdc44, - 0xd844,0xdc45,0xd844,0xdc46,0xd844,0xdc47,0xd844,0xdc48,0xd844,0xdc49, - 0xd844,0xdc4a,0xd844,0xdc4b,0xd844,0xdc4c,0xd844,0xdc4d,0xd844,0xdc4e, - 0xd844,0xdc4f,0xd844,0xdc50,0xd844,0xdc51,0xd844,0xdc52,0xd844,0xdc53, - 0xd844,0xdc54,0xd844,0xdc55,0xd844,0xdc56,0xd844,0xdc57,0xd844,0xdc58, - 0xd844,0xdc59,0xd844,0xdc5a,0xd844,0xdc5b,0xd844,0xdc5c,0xd844,0xdc5d, - 0xd844,0xdc5e,0xd844,0xdc5f,0xd844,0xdc60,0xd844,0xdc61,0xd844,0xdc62, - 0xd844,0xdc63,0xd844,0xdc64,0xd844,0xdc65,0xd844,0xdc66,0xd844,0xdc67, - 0xd844,0xdc68,0xd844,0xdc69,0xd844,0xdc6a,0xd844,0xdc6b,0xd844,0xdc6c, - 0xd844,0xdc6d,0xd844,0xdc6e,0xd844,0xdc6f,0xd844,0xdc70,0xd844,0xdc71, - 0xd844,0xdc72,0xd844,0xdc73,0xd844,0xdc74,0xd844,0xdc75,0xd844,0xdc76, - 0xd844,0xdc77,0xd844,0xdc78,0xd844,0xdc79,0xd844,0xdc7a,0xd844,0xdc7b, - 0xd844,0xdc7c,0xd844,0xdc7d,0xd844,0xdc7e,0xd844,0xdc7f,0xd844,0xdc80, - 0xd844,0xdc81,0xd844,0xdc82,0xd844,0xdc83,0xd844,0xdc84,0xd844,0xdc85, - 0xd844,0xdc86,0xd844,0xdc87,0xd844,0xdc88,0xd844,0xdc89,0xd844,0xdc8a, - 0xd844,0xdc8b,0xd844,0xdc8c,0xd844,0xdc8d,0xd844,0xdc8e,0xd844,0xdc8f, - 0xd844,0xdc90,0xd844,0xdc91,0xd844,0xdc92,0xd844,0xdc93,0xd844,0xdc94, - 0xd844,0xdc95,0xd844,0xdc96,0xd844,0xdc97,0xd844,0xdc98,0xd844,0xdc99, - 0xd844,0xdc9a,0xd844,0xdc9b,0xd844,0xdc9c,0xd844,0xdc9d,0xd844,0xdc9e, - 0xd844,0xdc9f,0xd844,0xdca0,0xd844,0xdca1,0xd844,0xdca2,0xd844,0xdca3, - 0xd844,0xdca4,0xd844,0xdca5,0xd844,0xdca6,0xd844,0xdca7,0xd844,0xdca8, - 0xd844,0xdca9,0xd844,0xdcaa,0xd844,0xdcab,0xd844,0xdcac,0xd844,0xdcad, - 0xd844,0xdcae,0xd844,0xdcaf,0xd844,0xdcb0,0xd844,0xdcb1,0xd844,0xdcb2, - 0xd844,0xdcb3,0xd844,0xdcb4,0xd844,0xdcb5,0xd844,0xdcb6,0xd844,0xdcb7, - 0xd844,0xdcb8,0xd844,0xdcb9,0xd844,0xdcba,0xd844,0xdcbb,0xd844,0xdcbc, - 0xd844,0xdcbd,0xd844,0xdcbe,0xd844,0xdcbf,0xd844,0xdcc0,0xd844,0xdcc1, - 0xd844,0xdcc2,0xd844,0xdcc3,0xd844,0xdcc4,0xd844,0xdcc5,0xd844,0xdcc6, - 0xd844,0xdcc7,0xd844,0xdcc8,0xd844,0xdcc9,0xd844,0xdcca,0xd844,0xdccb, - 0xd844,0xdccc,0xd844,0xdccd,0xd844,0xdcce,0xd844,0xdccf,0xd844,0xdcd0, - 0xd844,0xdcd1,0xd844,0xdcd2,0xd844,0xdcd3,0xd844,0xdcd4,0xd844,0xdcd5, - 0xd844,0xdcd6,0xd844,0xdcd7,0xd844,0xdcd8,0xd844,0xdcd9,0xd844,0xdcda, - 0xd844,0xdcdb,0xd844,0xdcdc,0xd844,0xdcdd,0xd844,0xdcde,0xd844,0xdcdf, - 0xd844,0xdce0,0xd844,0xdce1,0xd844,0xdce2,0xd844,0xdce3,0xd844,0xdce4, - 0xd844,0xdce5,0xd844,0xdce6,0xd844,0xdce7,0xd844,0xdce8,0xd844,0xdce9, - 0xd844,0xdcea,0xd844,0xdceb,0xd844,0xdcec,0xd844,0xdced,0xd844,0xdcee, - 0xd844,0xdcef,0xd844,0xdcf0,0xd844,0xdcf1,0xd844,0xdcf2,0xd844,0xdcf3, - 0xd844,0xdcf4,0xd844,0xdcf5,0xd844,0xdcf6,0xd844,0xdcf7,0xd844,0xdcf8, - 0xd844,0xdcf9,0xd844,0xdcfa,0xd844,0xdcfb,0xd844,0xdcfc,0xd844,0xdcfd, - 0xd844,0xdcfe,0xd844,0xdcff,0xd844,0xdd00,0xd844,0xdd01,0xd844,0xdd02, - 0xd844,0xdd03,0xd844,0xdd04,0xd844,0xdd05,0xd844,0xdd06,0xd844,0xdd07, - 0xd844,0xdd08,0xd844,0xdd09,0xd844,0xdd0a,0xd844,0xdd0b,0xd844,0xdd0c, - 0xd844,0xdd0d,0xd844,0xdd0e,0xd844,0xdd0f,0xd844,0xdd10,0xd844,0xdd11, - 0xd844,0xdd12,0xd844,0xdd13,0xd844,0xdd14,0xd844,0xdd15,0xd844,0xdd16, - 0xd844,0xdd17,0xd844,0xdd18,0xd844,0xdd19,0xd844,0xdd1a,0xd844,0xdd1b, - 0xd844,0xdd1c,0xd844,0xdd1d,0xd844,0xdd1e,0xd844,0xdd1f,0xd844,0xdd20, - 0xd844,0xdd21,0xd844,0xdd22,0xd844,0xdd23,0xd844,0xdd24,0xd844,0xdd25, - 0xd844,0xdd26,0xd844,0xdd27,0xd844,0xdd28,0xd844,0xdd29,0xd844,0xdd2a, - 0xd844,0xdd2b,0xd844,0xdd2c,0xd844,0xdd2d,0xd844,0xdd2e,0xd844,0xdd2f, - 0xd844,0xdd30,0xd844,0xdd31,0xd844,0xdd32,0xd844,0xdd33,0xd844,0xdd34, - 0xd844,0xdd35,0xd844,0xdd36,0xd844,0xdd37,0xd844,0xdd38,0xd844,0xdd39, - 0xd844,0xdd3a,0xd844,0xdd3b,0xd844,0xdd3c,0xd844,0xdd3d,0xd844,0xdd3e, - 0xd844,0xdd3f,0xd844,0xdd40,0xd844,0xdd41,0xd844,0xdd42,0xd844,0xdd43, - 0xd844,0xdd44,0xd844,0xdd45,0xd844,0xdd46,0xd844,0xdd47,0xd844,0xdd48, - 0xd844,0xdd49,0xd844,0xdd4a,0xd844,0xdd4b,0xd844,0xdd4c,0xd844,0xdd4d, - 0xd844,0xdd4e,0xd844,0xdd4f,0xd844,0xdd50,0xd844,0xdd51,0xd844,0xdd52, - 0xd844,0xdd53,0xd844,0xdd54,0xd844,0xdd55,0xd844,0xdd56,0xd844,0xdd57, - 0xd844,0xdd58,0xd844,0xdd59,0xd844,0xdd5a,0xd844,0xdd5b,0xd844,0xdd5c, - 0xd844,0xdd5d,0xd844,0xdd5e,0xd844,0xdd5f,0xd844,0xdd60,0xd844,0xdd61, - 0xd844,0xdd62,0xd844,0xdd63,0xd844,0xdd64,0xd844,0xdd65,0xd844,0xdd66, - 0xd844,0xdd67,0xd844,0xdd68,0xd844,0xdd69,0xd844,0xdd6a,0xd844,0xdd6b, - 0xd844,0xdd6c,0xd844,0xdd6d,0xd844,0xdd6e,0xd844,0xdd6f,0xd844,0xdd70, - 0xd844,0xdd71,0xd844,0xdd72,0xd844,0xdd73,0xd844,0xdd74,0xd844,0xdd75, - 0xd844,0xdd76,0xd844,0xdd77,0xd844,0xdd78,0xd844,0xdd79,0xd844,0xdd7a, - 0xd844,0xdd7b,0xd844,0xdd7c,0xd844,0xdd7d,0xd844,0xdd7e,0xd844,0xdd7f, - 0xd844,0xdd80,0xd844,0xdd81,0xd844,0xdd82,0xd844,0xdd83,0xd844,0xdd84, - 0xd844,0xdd85,0xd844,0xdd86,0xd844,0xdd87,0xd844,0xdd88,0xd844,0xdd89, - 0xd844,0xdd8a,0xd844,0xdd8b,0xd844,0xdd8c,0xd844,0xdd8d,0xd844,0xdd8e, - 0xd844,0xdd8f,0xd844,0xdd90,0xd844,0xdd91,0xd844,0xdd92,0xd844,0xdd93, - 0xd844,0xdd94,0xd844,0xdd95,0xd844,0xdd96,0xd844,0xdd97,0xd844,0xdd98, - 0xd844,0xdd99,0xd844,0xdd9a,0xd844,0xdd9b,0xd844,0xdd9c,0xd844,0xdd9d, - 0xd844,0xdd9e,0xd844,0xdd9f,0xd844,0xdda0,0xd844,0xdda1,0xd844,0xdda2, - 0xd844,0xdda3,0xd844,0xdda4,0xd844,0xdda5,0xd844,0xdda6,0xd844,0xdda7, - 0xd844,0xdda8,0xd844,0xdda9,0xd844,0xddaa,0xd844,0xddab,0xd844,0xddac, - 0xd844,0xddad,0xd844,0xddae,0xd844,0xddaf,0xd844,0xddb0,0xd844,0xddb1, - 0xd844,0xddb2,0xd844,0xddb3,0xd844,0xddb4,0xd844,0xddb5,0xd844,0xddb6, - 0xd844,0xddb7,0xd844,0xddb8,0xd844,0xddb9,0xd844,0xddba,0xd844,0xddbb, - 0xd844,0xddbc,0xd844,0xddbd,0xd844,0xddbe,0xd844,0xddbf,0xd844,0xddc0, - 0xd844,0xddc1,0xd844,0xddc2,0xd844,0xddc3,0xd844,0xddc4,0xd844,0xddc5, - 0xd844,0xddc6,0xd844,0xddc7,0xd844,0xddc8,0xd844,0xddc9,0xd844,0xddca, - 0xd844,0xddcb,0xd844,0xddcc,0xd844,0xddcd,0xd844,0xddce,0xd844,0xddcf, - 0xd844,0xddd0,0xd844,0xddd1,0xd844,0xddd2,0xd844,0xddd3,0xd844,0xddd4, - 0xd844,0xddd5,0xd844,0xddd6,0xd844,0xddd7,0xd844,0xddd8,0xd844,0xddd9, - 0xd844,0xddda,0xd844,0xdddb,0xd844,0xdddc,0xd844,0xdddd,0xd844,0xddde, - 0xd844,0xdddf,0xd844,0xdde0,0xd844,0xdde1,0xd844,0xdde2,0xd844,0xdde3, - 0xd844,0xdde4,0xd844,0xdde5,0xd844,0xdde6,0xd844,0xdde7,0xd844,0xdde8, - 0xd844,0xdde9,0xd844,0xddea,0xd844,0xddeb,0xd844,0xddec,0xd844,0xdded, - 0xd844,0xddee,0xd844,0xddef,0xd844,0xddf0,0xd844,0xddf1,0xd844,0xddf2, - 0xd844,0xddf3,0xd844,0xddf4,0xd844,0xddf5,0xd844,0xddf6,0xd844,0xddf7, - 0xd844,0xddf8,0xd844,0xddf9,0xd844,0xddfa,0xd844,0xddfb,0xd844,0xddfc, - 0xd844,0xddfd,0xd844,0xddfe,0xd844,0xddff,0xd844,0xde00,0xd844,0xde01, - 0xd844,0xde02,0xd844,0xde03,0xd844,0xde04,0xd844,0xde05,0xd844,0xde06, - 0xd844,0xde07,0xd844,0xde08,0xd844,0xde09,0xd844,0xde0a,0xd844,0xde0b, - 0xd844,0xde0c,0xd844,0xde0d,0xd844,0xde0e,0xd844,0xde0f,0xd844,0xde10, - 0xd844,0xde11,0xd844,0xde12,0xd844,0xde13,0xd844,0xde14,0xd844,0xde15, - 0xd844,0xde16,0xd844,0xde17,0xd844,0xde18,0xd844,0xde19,0xd844,0xde1a, - 0xd844,0xde1b,0xd844,0xde1c,0xd844,0xde1d,0xd844,0xde1e,0xd844,0xde1f, - 0xd844,0xde20,0xd844,0xde21,0xd844,0xde22,0xd844,0xde23,0xd844,0xde24, - 0xd844,0xde25,0xd844,0xde26,0xd844,0xde27,0xd844,0xde28,0xd844,0xde29, - 0xd844,0xde2a,0xd844,0xde2b,0xd844,0xde2c,0xd844,0xde2d,0xd844,0xde2e, - 0xd844,0xde2f,0xd844,0xde30,0xd844,0xde31,0xd844,0xde32,0xd844,0xde33, - 0xd844,0xde34,0xd844,0xde35,0xd844,0xde36,0xd844,0xde37,0xd844,0xde38, - 0xd844,0xde39,0xd844,0xde3a,0xd844,0xde3b,0xd844,0xde3c,0xd844,0xde3d, - 0xd844,0xde3e,0xd844,0xde3f,0xd844,0xde40,0xd844,0xde41,0xd844,0xde42, - 0xd844,0xde43,0xd844,0xde44,0xd844,0xde45,0xd844,0xde46,0xd844,0xde47, - 0xd844,0xde48,0xd844,0xde49,0xd844,0xde4a,0xd844,0xde4b,0xd844,0xde4c, - 0xd844,0xde4d,0xd844,0xde4e,0xd844,0xde4f,0xd844,0xde50,0xd844,0xde51, - 0xd844,0xde52,0xd844,0xde53,0xd844,0xde54,0xd844,0xde55,0xd844,0xde56, - 0xd844,0xde57,0xd844,0xde58,0xd844,0xde59,0xd844,0xde5a,0xd844,0xde5b, - 0xd844,0xde5c,0xd844,0xde5d,0xd844,0xde5e,0xd844,0xde5f,0xd844,0xde60, - 0xd844,0xde61,0xd844,0xde62,0xd844,0xde63,0xd844,0xde64,0xd844,0xde65, - 0xd844,0xde66,0xd844,0xde67,0xd844,0xde68,0xd844,0xde69,0xd844,0xde6a, - 0xd844,0xde6b,0xd844,0xde6c,0xd844,0xde6d,0xd844,0xde6e,0xd844,0xde6f, - 0xd844,0xde70,0xd844,0xde71,0xd844,0xde72,0xd844,0xde73,0xd844,0xde74, - 0xd844,0xde75,0xd844,0xde76,0xd844,0xde77,0xd844,0xde78,0xd844,0xde79, - 0xd844,0xde7a,0xd844,0xde7b,0xd844,0xde7c,0xd844,0xde7d,0xd844,0xde7e, - 0xd844,0xde7f,0xd844,0xde80,0xd844,0xde81,0xd844,0xde82,0xd844,0xde83, - 0xd844,0xde84,0xd844,0xde85,0xd844,0xde86,0xd844,0xde87,0xd844,0xde88, - 0xd844,0xde89,0xd844,0xde8a,0xd844,0xde8b,0xd844,0xde8c,0xd844,0xde8d, - 0xd844,0xde8e,0xd844,0xde8f,0xd844,0xde90,0xd844,0xde91,0xd844,0xde92, - 0xd844,0xde93,0xd844,0xde94,0xd844,0xde95,0xd844,0xde96,0xd844,0xde97, - 0xd844,0xde98,0xd844,0xde99,0xd844,0xde9a,0xd844,0xde9b,0xd844,0xde9c, - 0xd844,0xde9d,0xd844,0xde9e,0xd844,0xde9f,0xd844,0xdea0,0xd844,0xdea1, - 0xd844,0xdea2,0xd844,0xdea3,0xd844,0xdea4,0xd844,0xdea5,0xd844,0xdea6, - 0xd844,0xdea7,0xd844,0xdea8,0xd844,0xdea9,0xd844,0xdeaa,0xd844,0xdeab, - 0xd844,0xdeac,0xd844,0xdead,0xd844,0xdeae,0xd844,0xdeaf,0xd844,0xdeb0, - 0xd844,0xdeb1,0xd844,0xdeb2,0xd844,0xdeb3,0xd844,0xdeb4,0xd844,0xdeb5, - 0xd844,0xdeb6,0xd844,0xdeb7,0xd844,0xdeb8,0xd844,0xdeb9,0xd844,0xdeba, - 0xd844,0xdebb,0xd844,0xdebc,0xd844,0xdebd,0xd844,0xdebe,0xd844,0xdebf, - 0xd844,0xdec0,0xd844,0xdec1,0xd844,0xdec2,0xd844,0xdec3,0xd844,0xdec4, - 0xd844,0xdec5,0xd844,0xdec6,0xd844,0xdec7,0xd844,0xdec8,0xd844,0xdec9, - 0xd844,0xdeca,0xd844,0xdecb,0xd844,0xdecc,0xd844,0xdecd,0xd844,0xdece, - 0xd844,0xdecf,0xd844,0xded0,0xd844,0xded1,0xd844,0xded2,0xd844,0xded3, - 0xd844,0xded4,0xd844,0xded5,0xd844,0xded6,0xd844,0xded7,0xd844,0xded8, - 0xd844,0xded9,0xd844,0xdeda,0xd844,0xdedb,0xd844,0xdedc,0xd844,0xdedd, - 0xd844,0xdede,0xd844,0xdedf,0xd844,0xdee0,0xd844,0xdee1,0xd844,0xdee2, - 0xd844,0xdee3,0xd844,0xdee4,0xd844,0xdee5,0xd844,0xdee6,0xd844,0xdee7, - 0xd844,0xdee8,0xd844,0xdee9,0xd844,0xdeea,0xd844,0xdeeb,0xd844,0xdeec, - 0xd844,0xdeed,0xd844,0xdeee,0xd844,0xdeef,0xd844,0xdef0,0xd844,0xdef1, - 0xd844,0xdef2,0xd844,0xdef3,0xd844,0xdef4,0xd844,0xdef5,0xd844,0xdef6, - 0xd844,0xdef7,0xd844,0xdef8,0xd844,0xdef9,0xd844,0xdefa,0xd844,0xdefb, - 0xd844,0xdefc,0xd844,0xdefd,0xd844,0xdefe,0xd844,0xdeff,0xd844,0xdf00, - 0xd844,0xdf01,0xd844,0xdf02,0xd844,0xdf03,0xd844,0xdf04,0xd844,0xdf05, - 0xd844,0xdf06,0xd844,0xdf07,0xd844,0xdf08,0xd844,0xdf09,0xd844,0xdf0a, - 0xd844,0xdf0b,0xd844,0xdf0c,0xd844,0xdf0d,0xd844,0xdf0e,0xd844,0xdf0f, - 0xd844,0xdf10,0xd844,0xdf11,0xd844,0xdf12,0xd844,0xdf13,0xd844,0xdf14, - 0xd844,0xdf15,0xd844,0xdf16,0xd844,0xdf17,0xd844,0xdf18,0xd844,0xdf19, - 0xd844,0xdf1a,0xd844,0xdf1b,0xd844,0xdf1c,0xd844,0xdf1d,0xd844,0xdf1e, - 0xd844,0xdf1f,0xd844,0xdf20,0xd844,0xdf21,0xd844,0xdf22,0xd844,0xdf23, - 0xd844,0xdf24,0xd844,0xdf25,0xd844,0xdf26,0xd844,0xdf27,0xd844,0xdf28, - 0xd844,0xdf29,0xd844,0xdf2a,0xd844,0xdf2b,0xd844,0xdf2c,0xd844,0xdf2d, - 0xd844,0xdf2e,0xd844,0xdf2f,0xd844,0xdf30,0xd844,0xdf31,0xd844,0xdf32, - 0xd844,0xdf33,0xd844,0xdf34,0xd844,0xdf35,0xd844,0xdf36,0xd844,0xdf37, - 0xd844,0xdf38,0xd844,0xdf39,0xd844,0xdf3a,0xd844,0xdf3b,0xd844,0xdf3c, - 0xd844,0xdf3d,0xd844,0xdf3e,0xd844,0xdf3f,0xd844,0xdf40,0xd844,0xdf41, - 0xd844,0xdf42,0xd844,0xdf43,0xd844,0xdf44,0xd844,0xdf45,0xd844,0xdf46, - 0xd844,0xdf47,0xd844,0xdf48,0xd844,0xdf49,0xd844,0xdf4a,0xd844,0xdf4b, - 0xd844,0xdf4c,0xd844,0xdf4d,0xd844,0xdf4e,0xd844,0xdf4f,0xd844,0xdf50, - 0xd844,0xdf51,0xd844,0xdf52,0xd844,0xdf53,0xd844,0xdf54,0xd844,0xdf55, - 0xd844,0xdf56,0xd844,0xdf57,0xd844,0xdf58,0xd844,0xdf59,0xd844,0xdf5a, - 0xd844,0xdf5b,0xd844,0xdf5c,0xd844,0xdf5d,0xd844,0xdf5e,0xd844,0xdf5f, - 0xd844,0xdf60,0xd844,0xdf61,0xd844,0xdf62,0xd844,0xdf63,0xd844,0xdf64, - 0xd844,0xdf65,0xd844,0xdf66,0xd844,0xdf67,0xd844,0xdf68,0xd844,0xdf69, - 0xd844,0xdf6a,0xd844,0xdf6b,0xd844,0xdf6c,0xd844,0xdf6d,0xd844,0xdf6e, - 0xd844,0xdf6f,0xd844,0xdf70,0xd844,0xdf71,0xd844,0xdf72,0xd844,0xdf73, - 0xd844,0xdf74,0xd844,0xdf75,0xd844,0xdf76,0xd844,0xdf77,0xd844,0xdf78, - 0xd844,0xdf79,0xd844,0xdf7a,0xd844,0xdf7b,0xd844,0xdf7c,0xd844,0xdf7d, - 0xd844,0xdf7e,0xd844,0xdf7f,0xd844,0xdf80,0xd844,0xdf81,0xd844,0xdf82, - 0xd844,0xdf83,0xd844,0xdf84,0xd844,0xdf85,0xd844,0xdf86,0xd844,0xdf87, - 0xd844,0xdf88,0xd844,0xdf89,0xd844,0xdf8a,0xd844,0xdf8b,0xd844,0xdf8c, - 0xd844,0xdf8d,0xd844,0xdf8e,0xd844,0xdf8f,0xd844,0xdf90,0xd844,0xdf91, - 0xd844,0xdf92,0xd844,0xdf93,0xd844,0xdf94,0xd844,0xdf95,0xd844,0xdf96, - 0xd844,0xdf97,0xd844,0xdf98,0xd844,0xdf99,0xd844,0xdf9a,0xd844,0xdf9b, - 0xd844,0xdf9c,0xd844,0xdf9d,0xd844,0xdf9e,0xd844,0xdf9f,0xd844,0xdfa0, - 0xd844,0xdfa1,0xd844,0xdfa2,0xd844,0xdfa3,0xd844,0xdfa4,0xd844,0xdfa5, - 0xd844,0xdfa6,0xd844,0xdfa7,0xd844,0xdfa8,0xd844,0xdfa9,0xd844,0xdfaa, - 0xd844,0xdfab,0xd844,0xdfac,0xd844,0xdfad,0xd844,0xdfae,0xd844,0xdfaf, - 0xd844,0xdfb0,0xd844,0xdfb1,0xd844,0xdfb2,0xd844,0xdfb3,0xd844,0xdfb4, - 0xd844,0xdfb5,0xd844,0xdfb6,0xd844,0xdfb7,0xd844,0xdfb8,0xd844,0xdfb9, - 0xd844,0xdfba,0xd844,0xdfbb,0xd844,0xdfbc,0xd844,0xdfbd,0xd844,0xdfbe, - 0xd844,0xdfbf,0xd844,0xdfc0,0xd844,0xdfc1,0xd844,0xdfc2,0xd844,0xdfc3, - 0xd844,0xdfc4,0xd844,0xdfc5,0xd844,0xdfc6,0xd844,0xdfc7,0xd844,0xdfc8, - 0xd844,0xdfc9,0xd844,0xdfca,0xd844,0xdfcb,0xd844,0xdfcc,0xd844,0xdfcd, - 0xd844,0xdfce,0xd844,0xdfcf,0xd844,0xdfd0,0xd844,0xdfd1,0xd844,0xdfd2, - 0xd844,0xdfd3,0xd844,0xdfd4,0xd844,0xdfd5,0xd844,0xdfd6,0xd844,0xdfd7, - 0xd844,0xdfd8,0xd844,0xdfd9,0xd844,0xdfda,0xd844,0xdfdb,0xd844,0xdfdc, - 0xd844,0xdfdd,0xd844,0xdfde,0xd844,0xdfdf,0xd844,0xdfe0,0xd844,0xdfe1, - 0xd844,0xdfe2,0xd844,0xdfe3,0xd844,0xdfe4,0xd844,0xdfe5,0xd844,0xdfe6, - 0xd844,0xdfe7,0xd844,0xdfe8,0xd844,0xdfe9,0xd844,0xdfea,0xd844,0xdfeb, - 0xd844,0xdfec,0xd844,0xdfed,0xd844,0xdfee,0xd844,0xdfef,0xd844,0xdff0, - 0xd844,0xdff1,0xd844,0xdff2,0xd844,0xdff3,0xd844,0xdff4,0xd844,0xdff5, - 0xd844,0xdff6,0xd844,0xdff7,0xd844,0xdff8,0xd844,0xdff9,0xd844,0xdffa, - 0xd844,0xdffb,0xd844,0xdffc,0xd844,0xdffd,0xd844,0xdffe,0xd844,0xdfff, - 0xd845,0xdc00,0xd845,0xdc01,0xd845,0xdc02,0xd845,0xdc03,0xd845,0xdc04, - 0xd845,0xdc05,0xd845,0xdc06,0xd845,0xdc07,0xd845,0xdc08,0xd845,0xdc09, - 0xd845,0xdc0a,0xd845,0xdc0b,0xd845,0xdc0c,0xd845,0xdc0d,0xd845,0xdc0e, - 0xd845,0xdc0f,0xd845,0xdc10,0xd845,0xdc11,0xd845,0xdc12,0xd845,0xdc13, - 0xd845,0xdc14,0xd845,0xdc15,0xd845,0xdc16,0xd845,0xdc17,0xd845,0xdc18, - 0xd845,0xdc19,0xd845,0xdc1a,0xd845,0xdc1b,0xd845,0xdc1c,0xd845,0xdc1d, - 0xd845,0xdc1e,0xd845,0xdc1f,0xd845,0xdc20,0xd845,0xdc21,0xd845,0xdc22, - 0xd845,0xdc23,0xd845,0xdc24,0xd845,0xdc25,0xd845,0xdc26,0xd845,0xdc27, - 0xd845,0xdc28,0xd845,0xdc29,0xd845,0xdc2a,0xd845,0xdc2b,0xd845,0xdc2c, - 0xd845,0xdc2d,0xd845,0xdc2e,0xd845,0xdc2f,0xd845,0xdc30,0xd845,0xdc31, - 0xd845,0xdc32,0xd845,0xdc33,0xd845,0xdc34,0xd845,0xdc35,0xd845,0xdc36, - 0xd845,0xdc37,0xd845,0xdc38,0xd845,0xdc39,0xd845,0xdc3a,0xd845,0xdc3b, - 0xd845,0xdc3c,0xd845,0xdc3d,0xd845,0xdc3e,0xd845,0xdc3f,0xd845,0xdc40, - 0xd845,0xdc41,0xd845,0xdc42,0xd845,0xdc43,0xd845,0xdc44,0xd845,0xdc45, - 0xd845,0xdc46,0xd845,0xdc47,0xd845,0xdc48,0xd845,0xdc49,0xd845,0xdc4a, - 0xd845,0xdc4b,0xd845,0xdc4c,0xd845,0xdc4d,0xd845,0xdc4e,0xd845,0xdc4f, - 0xd845,0xdc50,0xd845,0xdc51,0xd845,0xdc52,0xd845,0xdc53,0xd845,0xdc54, - 0xd845,0xdc55,0xd845,0xdc56,0xd845,0xdc57,0xd845,0xdc58,0xd845,0xdc59, - 0xd845,0xdc5a,0xd845,0xdc5b,0xd845,0xdc5c,0xd845,0xdc5d,0xd845,0xdc5e, - 0xd845,0xdc5f,0xd845,0xdc60,0xd845,0xdc61,0xd845,0xdc62,0xd845,0xdc63, - 0xd845,0xdc64,0xd845,0xdc65,0xd845,0xdc66,0xd845,0xdc67,0xd845,0xdc68, - 0xd845,0xdc69,0xd845,0xdc6a,0xd845,0xdc6b,0xd845,0xdc6c,0xd845,0xdc6d, - 0xd845,0xdc6e,0xd845,0xdc6f,0xd845,0xdc70,0xd845,0xdc71,0xd845,0xdc72, - 0xd845,0xdc73,0xd845,0xdc74,0xd845,0xdc75,0xd845,0xdc76,0xd845,0xdc77, - 0xd845,0xdc78,0xd845,0xdc79,0xd845,0xdc7a,0xd845,0xdc7b,0xd845,0xdc7c, - 0xd845,0xdc7d,0xd845,0xdc7e,0xd845,0xdc7f,0xd845,0xdc80,0xd845,0xdc81, - 0xd845,0xdc82,0xd845,0xdc83,0xd845,0xdc84,0xd845,0xdc85,0xd845,0xdc86, - 0xd845,0xdc87,0xd845,0xdc88,0xd845,0xdc89,0xd845,0xdc8a,0xd845,0xdc8b, - 0xd845,0xdc8c,0xd845,0xdc8d,0xd845,0xdc8e,0xd845,0xdc8f,0xd845,0xdc90, - 0xd845,0xdc91,0xd845,0xdc92,0xd845,0xdc93,0xd845,0xdc94,0xd845,0xdc95, - 0xd845,0xdc96,0xd845,0xdc97,0xd845,0xdc98,0xd845,0xdc99,0xd845,0xdc9a, - 0xd845,0xdc9b,0xd845,0xdc9c,0xd845,0xdc9d,0xd845,0xdc9e,0xd845,0xdc9f, - 0xd845,0xdca0,0xd845,0xdca1,0xd845,0xdca2,0xd845,0xdca3,0xd845,0xdca4, - 0xd845,0xdca5,0xd845,0xdca6,0xd845,0xdca7,0xd845,0xdca8,0xd845,0xdca9, - 0xd845,0xdcaa,0xd845,0xdcab,0xd845,0xdcac,0xd845,0xdcad,0xd845,0xdcae, - 0xd845,0xdcaf,0xd845,0xdcb0,0xd845,0xdcb1,0xd845,0xdcb2,0xd845,0xdcb3, - 0xd845,0xdcb4,0xd845,0xdcb5,0xd845,0xdcb6,0xd845,0xdcb7,0xd845,0xdcb8, - 0xd845,0xdcb9,0xd845,0xdcba,0xd845,0xdcbb,0xd845,0xdcbc,0xd845,0xdcbd, - 0xd845,0xdcbe,0xd845,0xdcbf,0xd845,0xdcc0,0xd845,0xdcc1,0xd845,0xdcc2, - 0xd845,0xdcc3,0xd845,0xdcc4,0xd845,0xdcc5,0xd845,0xdcc6,0xd845,0xdcc7, - 0xd845,0xdcc8,0xd845,0xdcc9,0xd845,0xdcca,0xd845,0xdccb,0xd845,0xdccc, - 0xd845,0xdccd,0xd845,0xdcce,0xd845,0xdccf,0xd845,0xdcd0,0xd845,0xdcd1, - 0xd845,0xdcd2,0xd845,0xdcd3,0xd845,0xdcd4,0xd845,0xdcd5,0xd845,0xdcd6, - 0xd845,0xdcd7,0xd845,0xdcd8,0xd845,0xdcd9,0xd845,0xdcda,0xd845,0xdcdb, - 0xd845,0xdcdc,0xd845,0xdcdd,0xd845,0xdcde,0xd845,0xdcdf,0xd845,0xdce0, - 0xd845,0xdce1,0xd845,0xdce2,0xd845,0xdce3,0xd845,0xdce4,0xd845,0xdce5, - 0xd845,0xdce6,0xd845,0xdce7,0xd845,0xdce8,0xd845,0xdce9,0xd845,0xdcea, - 0xd845,0xdceb,0xd845,0xdcec,0xd845,0xdced,0xd845,0xdcee,0xd845,0xdcef, - 0xd845,0xdcf0,0xd845,0xdcf1,0xd845,0xdcf2,0xd845,0xdcf3,0xd845,0xdcf4, - 0xd845,0xdcf5,0xd845,0xdcf6,0xd845,0xdcf7,0xd845,0xdcf8,0xd845,0xdcf9, - 0xd845,0xdcfa,0xd845,0xdcfb,0xd845,0xdcfc,0xd845,0xdcfd,0xd845,0xdcfe, - 0xd845,0xdcff,0xd845,0xdd00,0xd845,0xdd01,0xd845,0xdd02,0xd845,0xdd03, - 0xd845,0xdd04,0xd845,0xdd05,0xd845,0xdd06,0xd845,0xdd07,0xd845,0xdd08, - 0xd845,0xdd09,0xd845,0xdd0a,0xd845,0xdd0b,0xd845,0xdd0c,0xd845,0xdd0d, - 0xd845,0xdd0e,0xd845,0xdd0f,0xd845,0xdd10,0xd845,0xdd11,0xd845,0xdd12, - 0xd845,0xdd13,0xd845,0xdd14,0xd845,0xdd15,0xd845,0xdd16,0xd845,0xdd17, - 0xd845,0xdd18,0xd845,0xdd19,0xd845,0xdd1a,0xd845,0xdd1b,0xd845,0xdd1c, - 0xd845,0xdd1d,0xd845,0xdd1e,0xd845,0xdd1f,0xd845,0xdd20,0xd845,0xdd21, - 0xd845,0xdd22,0xd845,0xdd23,0xd845,0xdd24,0xd845,0xdd25,0xd845,0xdd26, - 0xd845,0xdd27,0xd845,0xdd28,0xd845,0xdd29,0xd845,0xdd2a,0xd845,0xdd2b, - 0xd845,0xdd2c,0xd845,0xdd2d,0xd845,0xdd2e,0xd845,0xdd2f,0xd845,0xdd30, - 0xd845,0xdd31,0xd845,0xdd32,0xd845,0xdd33,0xd845,0xdd34,0xd845,0xdd35, - 0xd845,0xdd36,0xd845,0xdd37,0xd845,0xdd38,0xd845,0xdd39,0xd845,0xdd3a, - 0xd845,0xdd3b,0xd845,0xdd3c,0xd845,0xdd3d,0xd845,0xdd3e,0xd845,0xdd3f, - 0xd845,0xdd40,0xd845,0xdd41,0xd845,0xdd42,0xd845,0xdd43,0xd845,0xdd44, - 0xd845,0xdd45,0xd845,0xdd46,0xd845,0xdd47,0xd845,0xdd48,0xd845,0xdd49, - 0xd845,0xdd4a,0xd845,0xdd4b,0xd845,0xdd4c,0xd845,0xdd4d,0xd845,0xdd4e, - 0xd845,0xdd4f,0xd845,0xdd50,0xd845,0xdd51,0xd845,0xdd52,0xd845,0xdd53, - 0xd845,0xdd54,0xd845,0xdd55,0xd845,0xdd56,0xd845,0xdd57,0xd845,0xdd58, - 0xd845,0xdd59,0xd845,0xdd5a,0xd845,0xdd5b,0xd845,0xdd5c,0xd845,0xdd5d, - 0xd845,0xdd5e,0xd845,0xdd5f,0xd845,0xdd60,0xd845,0xdd61,0xd845,0xdd62, - 0xd845,0xdd63,0xd845,0xdd64,0xd845,0xdd65,0xd845,0xdd66,0xd845,0xdd67, - 0xd845,0xdd68,0xd845,0xdd69,0xd845,0xdd6a,0xd845,0xdd6b,0xd845,0xdd6c, - 0xd845,0xdd6d,0xd845,0xdd6e,0xd845,0xdd6f,0xd845,0xdd70,0xd845,0xdd71, - 0xd845,0xdd72,0xd845,0xdd73,0xd845,0xdd74,0xd845,0xdd75,0xd845,0xdd76, - 0xd845,0xdd77,0xd845,0xdd78,0xd845,0xdd79,0xd845,0xdd7a,0xd845,0xdd7b, - 0xd845,0xdd7c,0xd845,0xdd7d,0xd845,0xdd7e,0xd845,0xdd7f,0xd845,0xdd80, - 0xd845,0xdd81,0xd845,0xdd82,0xd845,0xdd83,0xd845,0xdd84,0xd845,0xdd85, - 0xd845,0xdd86,0xd845,0xdd87,0xd845,0xdd88,0xd845,0xdd89,0xd845,0xdd8a, - 0xd845,0xdd8b,0xd845,0xdd8c,0xd845,0xdd8d,0xd845,0xdd8e,0xd845,0xdd8f, - 0xd845,0xdd90,0xd845,0xdd91,0xd845,0xdd92,0xd845,0xdd93,0xd845,0xdd94, - 0xd845,0xdd95,0xd845,0xdd96,0xd845,0xdd97,0xd845,0xdd98,0xd845,0xdd99, - 0xd845,0xdd9a,0xd845,0xdd9b,0xd845,0xdd9c,0xd845,0xdd9d,0xd845,0xdd9e, - 0xd845,0xdd9f,0xd845,0xdda0,0xd845,0xdda1,0xd845,0xdda2,0xd845,0xdda3, - 0xd845,0xdda4,0xd845,0xdda5,0xd845,0xdda6,0xd845,0xdda7,0xd845,0xdda8, - 0xd845,0xdda9,0xd845,0xddaa,0xd845,0xddab,0xd845,0xddac,0xd845,0xddad, - 0xd845,0xddae,0xd845,0xddaf,0xd845,0xddb0,0xd845,0xddb1,0xd845,0xddb2, - 0xd845,0xddb3,0xd845,0xddb4,0xd845,0xddb5,0xd845,0xddb6,0xd845,0xddb7, - 0xd845,0xddb8,0xd845,0xddb9,0xd845,0xddba,0xd845,0xddbb,0xd845,0xddbc, - 0xd845,0xddbd,0xd845,0xddbe,0xd845,0xddbf,0xd845,0xddc0,0xd845,0xddc1, - 0xd845,0xddc2,0xd845,0xddc3,0xd845,0xddc4,0xd845,0xddc5,0xd845,0xddc6, - 0xd845,0xddc7,0xd845,0xddc8,0xd845,0xddc9,0xd845,0xddca,0xd845,0xddcb, - 0xd845,0xddcc,0xd845,0xddcd,0xd845,0xddce,0xd845,0xddcf,0xd845,0xddd0, - 0xd845,0xddd1,0xd845,0xddd2,0xd845,0xddd3,0xd845,0xddd4,0xd845,0xddd5, - 0xd845,0xddd6,0xd845,0xddd7,0xd845,0xddd8,0xd845,0xddd9,0xd845,0xddda, - 0xd845,0xdddb,0xd845,0xdddc,0xd845,0xdddd,0xd845,0xddde,0xd845,0xdddf, - 0xd845,0xdde0,0xd845,0xdde1,0xd845,0xdde2,0xd845,0xdde3,0xd845,0xdde4, - 0xd845,0xdde5,0xd845,0xdde6,0xd845,0xdde7,0xd845,0xdde8,0xd845,0xdde9, - 0xd845,0xddea,0xd845,0xddeb,0xd845,0xddec,0xd845,0xdded,0xd845,0xddee, - 0xd845,0xddef,0xd845,0xddf0,0xd845,0xddf1,0xd845,0xddf2,0xd845,0xddf3, - 0xd845,0xddf4,0xd845,0xddf5,0xd845,0xddf6,0xd845,0xddf7,0xd845,0xddf8, - 0xd845,0xddf9,0xd845,0xddfa,0xd845,0xddfb,0xd845,0xddfc,0xd845,0xddfd, - 0xd845,0xddfe,0xd845,0xddff,0xd845,0xde00,0xd845,0xde01,0xd845,0xde02, - 0xd845,0xde03,0xd845,0xde04,0xd845,0xde05,0xd845,0xde06,0xd845,0xde07, - 0xd845,0xde08,0xd845,0xde09,0xd845,0xde0a,0xd845,0xde0b,0xd845,0xde0c, - 0xd845,0xde0d,0xd845,0xde0e,0xd845,0xde0f,0xd845,0xde10,0xd845,0xde11, - 0xd845,0xde12,0xd845,0xde13,0xd845,0xde14,0xd845,0xde15,0xd845,0xde16, - 0xd845,0xde17,0xd845,0xde18,0xd845,0xde19,0xd845,0xde1a,0xd845,0xde1b, - 0xd845,0xde1c,0xd845,0xde1d,0xd845,0xde1e,0xd845,0xde1f,0xd845,0xde20, - 0xd845,0xde21,0xd845,0xde22,0xd845,0xde23,0xd845,0xde24,0xd845,0xde25, - 0xd845,0xde26,0xd845,0xde27,0xd845,0xde28,0xd845,0xde29,0xd845,0xde2a, - 0xd845,0xde2b,0xd845,0xde2c,0xd845,0xde2d,0xd845,0xde2e,0xd845,0xde2f, - 0xd845,0xde30,0xd845,0xde31,0xd845,0xde32,0xd845,0xde33,0xd845,0xde34, - 0xd845,0xde35,0xd845,0xde36,0xd845,0xde37,0xd845,0xde38,0xd845,0xde39, - 0xd845,0xde3a,0xd845,0xde3b,0xd845,0xde3c,0xd845,0xde3d,0xd845,0xde3e, - 0xd845,0xde3f,0xd845,0xde40,0xd845,0xde41,0xd845,0xde42,0xd845,0xde43, - 0xd845,0xde44,0xd845,0xde45,0xd845,0xde46,0xd845,0xde47,0xd845,0xde48, - 0xd845,0xde49,0xd845,0xde4a,0xd845,0xde4b,0xd845,0xde4c,0xd845,0xde4d, - 0xd845,0xde4e,0xd845,0xde4f,0xd845,0xde50,0xd845,0xde51,0xd845,0xde52, - 0xd845,0xde53,0xd845,0xde54,0xd845,0xde55,0xd845,0xde56,0xd845,0xde57, - 0xd845,0xde58,0xd845,0xde59,0xd845,0xde5a,0xd845,0xde5b,0xd845,0xde5c, - 0xd845,0xde5d,0xd845,0xde5e,0xd845,0xde5f,0xd845,0xde60,0xd845,0xde61, - 0xd845,0xde62,0xd845,0xde63,0xd845,0xde64,0xd845,0xde65,0xd845,0xde66, - 0xd845,0xde67,0xd845,0xde68,0xd845,0xde69,0xd845,0xde6a,0xd845,0xde6b, - 0xd845,0xde6c,0xd845,0xde6d,0xd845,0xde6e,0xd845,0xde6f,0xd845,0xde70, - 0xd845,0xde71,0xd845,0xde72,0xd845,0xde73,0xd845,0xde74,0xd845,0xde75, - 0xd845,0xde76,0xd845,0xde77,0xd845,0xde78,0xd845,0xde79,0xd845,0xde7a, - 0xd845,0xde7b,0xd845,0xde7c,0xd845,0xde7d,0xd845,0xde7e,0xd845,0xde7f, - 0xd845,0xde80,0xd845,0xde81,0xd845,0xde82,0xd845,0xde83,0xd845,0xde84, - 0xd845,0xde85,0xd845,0xde86,0xd845,0xde87,0xd845,0xde88,0xd845,0xde89, - 0xd845,0xde8a,0xd845,0xde8b,0xd845,0xde8c,0xd845,0xde8d,0xd845,0xde8e, - 0xd845,0xde8f,0xd845,0xde90,0xd845,0xde91,0xd845,0xde92,0xd845,0xde93, - 0xd845,0xde94,0xd845,0xde95,0xd845,0xde96,0xd845,0xde97,0xd845,0xde98, - 0xd845,0xde99,0xd845,0xde9a,0xd845,0xde9b,0xd845,0xde9c,0xd845,0xde9d, - 0xd845,0xde9e,0xd845,0xde9f,0xd845,0xdea0,0xd845,0xdea1,0xd845,0xdea2, - 0xd845,0xdea3,0xd845,0xdea4,0xd845,0xdea5,0xd845,0xdea6,0xd845,0xdea7, - 0xd845,0xdea8,0xd845,0xdea9,0xd845,0xdeaa,0xd845,0xdeab,0xd845,0xdeac, - 0xd845,0xdead,0xd845,0xdeae,0xd845,0xdeaf,0xd845,0xdeb0,0xd845,0xdeb1, - 0xd845,0xdeb2,0xd845,0xdeb3,0xd845,0xdeb4,0xd845,0xdeb5,0xd845,0xdeb6, - 0xd845,0xdeb7,0xd845,0xdeb8,0xd845,0xdeb9,0xd845,0xdeba,0xd845,0xdebb, - 0xd845,0xdebc,0xd845,0xdebd,0xd845,0xdebe,0xd845,0xdebf,0xd845,0xdec0, - 0xd845,0xdec1,0xd845,0xdec2,0xd845,0xdec3,0xd845,0xdec4,0xd845,0xdec5, - 0xd845,0xdec6,0xd845,0xdec7,0xd845,0xdec8,0xd845,0xdec9,0xd845,0xdeca, - 0xd845,0xdecb,0xd845,0xdecc,0xd845,0xdecd,0xd845,0xdece,0xd845,0xdecf, - 0xd845,0xded0,0xd845,0xded1,0xd845,0xded2,0xd845,0xded3,0xd845,0xded4, - 0xd845,0xded5,0xd845,0xded6,0xd845,0xded7,0xd845,0xded8,0xd845,0xded9, - 0xd845,0xdeda,0xd845,0xdedb,0xd845,0xdedc,0xd845,0xdedd,0xd845,0xdede, - 0xd845,0xdedf,0xd845,0xdee0,0xd845,0xdee1,0xd845,0xdee2,0xd845,0xdee3, - 0xd845,0xdee4,0xd845,0xdee5,0xd845,0xdee6,0xd845,0xdee7,0xd845,0xdee8, - 0xd845,0xdee9,0xd845,0xdeea,0xd845,0xdeeb,0xd845,0xdeec,0xd845,0xdeed, - 0xd845,0xdeee,0xd845,0xdeef,0xd845,0xdef0,0xd845,0xdef1,0xd845,0xdef2, - 0xd845,0xdef3,0xd845,0xdef4,0xd845,0xdef5,0xd845,0xdef6,0xd845,0xdef7, - 0xd845,0xdef8,0xd845,0xdef9,0xd845,0xdefa,0xd845,0xdefb,0xd845,0xdefc, - 0xd845,0xdefd,0xd845,0xdefe,0xd845,0xdeff,0xd845,0xdf00,0xd845,0xdf01, - 0xd845,0xdf02,0xd845,0xdf03,0xd845,0xdf04,0xd845,0xdf05,0xd845,0xdf06, - 0xd845,0xdf07,0xd845,0xdf08,0xd845,0xdf09,0xd845,0xdf0a,0xd845,0xdf0b, - 0xd845,0xdf0c,0xd845,0xdf0d,0xd845,0xdf0e,0xd845,0xdf0f,0xd845,0xdf10, - 0xd845,0xdf11,0xd845,0xdf12,0xd845,0xdf13,0xd845,0xdf14,0xd845,0xdf15, - 0xd845,0xdf16,0xd845,0xdf17,0xd845,0xdf18,0xd845,0xdf19,0xd845,0xdf1a, - 0xd845,0xdf1b,0xd845,0xdf1c,0xd845,0xdf1d,0xd845,0xdf1e,0xd845,0xdf1f, - 0xd845,0xdf20,0xd845,0xdf21,0xd845,0xdf22,0xd845,0xdf23,0xd845,0xdf24, - 0xd845,0xdf25,0xd845,0xdf26,0xd845,0xdf27,0xd845,0xdf28,0xd845,0xdf29, - 0xd845,0xdf2a,0xd845,0xdf2b,0xd845,0xdf2c,0xd845,0xdf2d,0xd845,0xdf2e, - 0xd845,0xdf2f,0xd845,0xdf30,0xd845,0xdf31,0xd845,0xdf32,0xd845,0xdf33, - 0xd845,0xdf34,0xd845,0xdf35,0xd845,0xdf36,0xd845,0xdf37,0xd845,0xdf38, - 0xd845,0xdf39,0xd845,0xdf3a,0xd845,0xdf3b,0xd845,0xdf3c,0xd845,0xdf3d, - 0xd845,0xdf3e,0xd845,0xdf3f,0xd845,0xdf40,0xd845,0xdf41,0xd845,0xdf42, - 0xd845,0xdf43,0xd845,0xdf44,0xd845,0xdf45,0xd845,0xdf46,0xd845,0xdf47, - 0xd845,0xdf48,0xd845,0xdf49,0xd845,0xdf4a,0xd845,0xdf4b,0xd845,0xdf4c, - 0xd845,0xdf4d,0xd845,0xdf4e,0xd845,0xdf4f,0xd845,0xdf50,0xd845,0xdf51, - 0xd845,0xdf52,0xd845,0xdf53,0xd845,0xdf54,0xd845,0xdf55,0xd845,0xdf56, - 0xd845,0xdf57,0xd845,0xdf58,0xd845,0xdf59,0xd845,0xdf5a,0xd845,0xdf5b, - 0xd845,0xdf5c,0xd845,0xdf5d,0xd845,0xdf5e,0xd845,0xdf5f,0xd845,0xdf60, - 0xd845,0xdf61,0xd845,0xdf62,0xd845,0xdf63,0xd845,0xdf64,0xd845,0xdf65, - 0xd845,0xdf66,0xd845,0xdf67,0xd845,0xdf68,0xd845,0xdf69,0xd845,0xdf6a, - 0xd845,0xdf6b,0xd845,0xdf6c,0xd845,0xdf6d,0xd845,0xdf6e,0xd845,0xdf6f, - 0xd845,0xdf70,0xd845,0xdf71,0xd845,0xdf72,0xd845,0xdf73,0xd845,0xdf74, - 0xd845,0xdf75,0xd845,0xdf76,0xd845,0xdf77,0xd845,0xdf78,0xd845,0xdf79, - 0xd845,0xdf7a,0xd845,0xdf7b,0xd845,0xdf7c,0xd845,0xdf7d,0xd845,0xdf7e, - 0xd845,0xdf7f,0xd845,0xdf80,0xd845,0xdf81,0xd845,0xdf82,0xd845,0xdf83, - 0xd845,0xdf84,0xd845,0xdf85,0xd845,0xdf86,0xd845,0xdf87,0xd845,0xdf88, - 0xd845,0xdf89,0xd845,0xdf8a,0xd845,0xdf8b,0xd845,0xdf8c,0xd845,0xdf8d, - 0xd845,0xdf8e,0xd845,0xdf8f,0xd845,0xdf90,0xd845,0xdf91,0xd845,0xdf92, - 0xd845,0xdf93,0xd845,0xdf94,0xd845,0xdf95,0xd845,0xdf96,0xd845,0xdf97, - 0xd845,0xdf98,0xd845,0xdf99,0xd845,0xdf9a,0xd845,0xdf9b,0xd845,0xdf9c, - 0xd845,0xdf9d,0xd845,0xdf9e,0xd845,0xdf9f,0xd845,0xdfa0,0xd845,0xdfa1, - 0xd845,0xdfa2,0xd845,0xdfa3,0xd845,0xdfa4,0xd845,0xdfa5,0xd845,0xdfa6, - 0xd845,0xdfa7,0xd845,0xdfa8,0xd845,0xdfa9,0xd845,0xdfaa,0xd845,0xdfab, - 0xd845,0xdfac,0xd845,0xdfad,0xd845,0xdfae,0xd845,0xdfaf,0xd845,0xdfb0, - 0xd845,0xdfb1,0xd845,0xdfb2,0xd845,0xdfb3,0xd845,0xdfb4,0xd845,0xdfb5, - 0xd845,0xdfb6,0xd845,0xdfb7,0xd845,0xdfb8,0xd845,0xdfb9,0xd845,0xdfba, - 0xd845,0xdfbb,0xd845,0xdfbc,0xd845,0xdfbd,0xd845,0xdfbe,0xd845,0xdfbf, - 0xd845,0xdfc0,0xd845,0xdfc1,0xd845,0xdfc2,0xd845,0xdfc3,0xd845,0xdfc4, - 0xd845,0xdfc5,0xd845,0xdfc6,0xd845,0xdfc7,0xd845,0xdfc8,0xd845,0xdfc9, - 0xd845,0xdfca,0xd845,0xdfcb,0xd845,0xdfcc,0xd845,0xdfcd,0xd845,0xdfce, - 0xd845,0xdfcf,0xd845,0xdfd0,0xd845,0xdfd1,0xd845,0xdfd2,0xd845,0xdfd3, - 0xd845,0xdfd4,0xd845,0xdfd5,0xd845,0xdfd6,0xd845,0xdfd7,0xd845,0xdfd8, - 0xd845,0xdfd9,0xd845,0xdfda,0xd845,0xdfdb,0xd845,0xdfdc,0xd845,0xdfdd, - 0xd845,0xdfde,0xd845,0xdfdf,0xd845,0xdfe0,0xd845,0xdfe1,0xd845,0xdfe2, - 0xd845,0xdfe3,0xd845,0xdfe4,0xd845,0xdfe5,0xd845,0xdfe6,0xd845,0xdfe7, - 0xd845,0xdfe8,0xd845,0xdfe9,0xd845,0xdfea,0xd845,0xdfeb,0xd845,0xdfec, - 0xd845,0xdfed,0xd845,0xdfee,0xd845,0xdfef,0xd845,0xdff0,0xd845,0xdff1, - 0xd845,0xdff2,0xd845,0xdff3,0xd845,0xdff4,0xd845,0xdff5,0xd845,0xdff6, - 0xd845,0xdff7,0xd845,0xdff8,0xd845,0xdff9,0xd845,0xdffa,0xd845,0xdffb, - 0xd845,0xdffc,0xd845,0xdffd,0xd845,0xdffe,0xd845,0xdfff,0xd846,0xdc00, - 0xd846,0xdc01,0xd846,0xdc02,0xd846,0xdc03,0xd846,0xdc04,0xd846,0xdc05, - 0xd846,0xdc06,0xd846,0xdc07,0xd846,0xdc08,0xd846,0xdc09,0xd846,0xdc0a, - 0xd846,0xdc0b,0xd846,0xdc0c,0xd846,0xdc0d,0xd846,0xdc0e,0xd846,0xdc0f, - 0xd846,0xdc10,0xd846,0xdc11,0xd846,0xdc12,0xd846,0xdc13,0xd846,0xdc14, - 0xd846,0xdc15,0xd846,0xdc16,0xd846,0xdc17,0xd846,0xdc18,0xd846,0xdc19, - 0xd846,0xdc1a,0xd846,0xdc1b,0xd846,0xdc1c,0xd846,0xdc1d,0xd846,0xdc1e, - 0xd846,0xdc1f,0xd846,0xdc20,0xd846,0xdc21,0xd846,0xdc22,0xd846,0xdc23, - 0xd846,0xdc24,0xd846,0xdc25,0xd846,0xdc26,0xd846,0xdc27,0xd846,0xdc28, - 0xd846,0xdc29,0xd846,0xdc2a,0xd846,0xdc2b,0xd846,0xdc2c,0xd846,0xdc2d, - 0xd846,0xdc2e,0xd846,0xdc2f,0xd846,0xdc30,0xd846,0xdc31,0xd846,0xdc32, - 0xd846,0xdc33,0xd846,0xdc34,0xd846,0xdc35,0xd846,0xdc36,0xd846,0xdc37, - 0xd846,0xdc38,0xd846,0xdc39,0xd846,0xdc3a,0xd846,0xdc3b,0xd846,0xdc3c, - 0xd846,0xdc3d,0xd846,0xdc3e,0xd846,0xdc3f,0xd846,0xdc40,0xd846,0xdc41, - 0xd846,0xdc42,0xd846,0xdc43,0xd846,0xdc44,0xd846,0xdc45,0xd846,0xdc46, - 0xd846,0xdc47,0xd846,0xdc48,0xd846,0xdc49,0xd846,0xdc4a,0xd846,0xdc4b, - 0xd846,0xdc4c,0xd846,0xdc4d,0xd846,0xdc4e,0xd846,0xdc4f,0xd846,0xdc50, - 0xd846,0xdc51,0xd846,0xdc52,0xd846,0xdc53,0xd846,0xdc54,0xd846,0xdc55, - 0xd846,0xdc56,0xd846,0xdc57,0xd846,0xdc58,0xd846,0xdc59,0xd846,0xdc5a, - 0xd846,0xdc5b,0xd846,0xdc5c,0xd846,0xdc5d,0xd846,0xdc5e,0xd846,0xdc5f, - 0xd846,0xdc60,0xd846,0xdc61,0xd846,0xdc62,0xd846,0xdc63,0xd846,0xdc64, - 0xd846,0xdc65,0xd846,0xdc66,0xd846,0xdc67,0xd846,0xdc68,0xd846,0xdc69, - 0xd846,0xdc6a,0xd846,0xdc6b,0xd846,0xdc6c,0xd846,0xdc6d,0xd846,0xdc6e, - 0xd846,0xdc6f,0xd846,0xdc70,0xd846,0xdc71,0xd846,0xdc72,0xd846,0xdc73, - 0xd846,0xdc74,0xd846,0xdc75,0xd846,0xdc76,0xd846,0xdc77,0xd846,0xdc78, - 0xd846,0xdc79,0xd846,0xdc7a,0xd846,0xdc7b,0xd846,0xdc7c,0xd846,0xdc7d, - 0xd846,0xdc7e,0xd846,0xdc7f,0xd846,0xdc80,0xd846,0xdc81,0xd846,0xdc82, - 0xd846,0xdc83,0xd846,0xdc84,0xd846,0xdc85,0xd846,0xdc86,0xd846,0xdc87, - 0xd846,0xdc88,0xd846,0xdc89,0xd846,0xdc8a,0xd846,0xdc8b,0xd846,0xdc8c, - 0xd846,0xdc8d,0xd846,0xdc8e,0xd846,0xdc8f,0xd846,0xdc90,0xd846,0xdc91, - 0xd846,0xdc92,0xd846,0xdc93,0xd846,0xdc94,0xd846,0xdc95,0xd846,0xdc96, - 0xd846,0xdc97,0xd846,0xdc98,0xd846,0xdc99,0xd846,0xdc9a,0xd846,0xdc9b, - 0xd846,0xdc9c,0xd846,0xdc9d,0xd846,0xdc9e,0xd846,0xdc9f,0xd846,0xdca0, - 0xd846,0xdca1,0xd846,0xdca2,0xd846,0xdca3,0xd846,0xdca4,0xd846,0xdca5, - 0xd846,0xdca6,0xd846,0xdca7,0xd846,0xdca8,0xd846,0xdca9,0xd846,0xdcaa, - 0xd846,0xdcab,0xd846,0xdcac,0xd846,0xdcad,0xd846,0xdcae,0xd846,0xdcaf, - 0xd846,0xdcb0,0xd846,0xdcb1,0xd846,0xdcb2,0xd846,0xdcb3,0xd846,0xdcb4, - 0xd846,0xdcb5,0xd846,0xdcb6,0xd846,0xdcb7,0xd846,0xdcb8,0xd846,0xdcb9, - 0xd846,0xdcba,0xd846,0xdcbb,0xd846,0xdcbc,0xd846,0xdcbd,0xd846,0xdcbe, - 0xd846,0xdcbf,0xd846,0xdcc0,0xd846,0xdcc1,0xd846,0xdcc2,0xd846,0xdcc3, - 0xd846,0xdcc4,0xd846,0xdcc5,0xd846,0xdcc6,0xd846,0xdcc7,0xd846,0xdcc8, - 0xd846,0xdcc9,0xd846,0xdcca,0xd846,0xdccb,0xd846,0xdccc,0xd846,0xdccd, - 0xd846,0xdcce,0xd846,0xdccf,0xd846,0xdcd0,0xd846,0xdcd1,0xd846,0xdcd2, - 0xd846,0xdcd3,0xd846,0xdcd4,0xd846,0xdcd5,0xd846,0xdcd6,0xd846,0xdcd7, - 0xd846,0xdcd8,0xd846,0xdcd9,0xd846,0xdcda,0xd846,0xdcdb,0xd846,0xdcdc, - 0xd846,0xdcdd,0xd846,0xdcde,0xd846,0xdcdf,0xd846,0xdce0,0xd846,0xdce1, - 0xd846,0xdce2,0xd846,0xdce3,0xd846,0xdce4,0xd846,0xdce5,0xd846,0xdce6, - 0xd846,0xdce7,0xd846,0xdce8,0xd846,0xdce9,0xd846,0xdcea,0xd846,0xdceb, - 0xd846,0xdcec,0xd846,0xdced,0xd846,0xdcee,0xd846,0xdcef,0xd846,0xdcf0, - 0xd846,0xdcf1,0xd846,0xdcf2,0xd846,0xdcf3,0xd846,0xdcf4,0xd846,0xdcf5, - 0xd846,0xdcf6,0xd846,0xdcf7,0xd846,0xdcf8,0xd846,0xdcf9,0xd846,0xdcfa, - 0xd846,0xdcfb,0xd846,0xdcfc,0xd846,0xdcfd,0xd846,0xdcfe,0xd846,0xdcff, - 0xd846,0xdd00,0xd846,0xdd01,0xd846,0xdd02,0xd846,0xdd03,0xd846,0xdd04, - 0xd846,0xdd05,0xd846,0xdd06,0xd846,0xdd07,0xd846,0xdd08,0xd846,0xdd09, - 0xd846,0xdd0a,0xd846,0xdd0b,0xd846,0xdd0c,0xd846,0xdd0d,0xd846,0xdd0e, - 0xd846,0xdd0f,0xd846,0xdd10,0xd846,0xdd11,0xd846,0xdd12,0xd846,0xdd13, - 0xd846,0xdd14,0xd846,0xdd15,0xd846,0xdd16,0xd846,0xdd17,0xd846,0xdd18, - 0xd846,0xdd19,0xd846,0xdd1a,0xd846,0xdd1b,0xd846,0xdd1c,0xd846,0xdd1d, - 0xd846,0xdd1e,0xd846,0xdd1f,0xd846,0xdd20,0xd846,0xdd21,0xd846,0xdd22, - 0xd846,0xdd23,0xd846,0xdd24,0xd846,0xdd25,0xd846,0xdd26,0xd846,0xdd27, - 0xd846,0xdd28,0xd846,0xdd29,0xd846,0xdd2a,0xd846,0xdd2b,0xd846,0xdd2c, - 0xd846,0xdd2d,0xd846,0xdd2e,0xd846,0xdd2f,0xd846,0xdd30,0xd846,0xdd31, - 0xd846,0xdd32,0xd846,0xdd33,0xd846,0xdd34,0xd846,0xdd35,0xd846,0xdd36, - 0xd846,0xdd37,0xd846,0xdd38,0xd846,0xdd39,0xd846,0xdd3a,0xd846,0xdd3b, - 0xd846,0xdd3c,0xd846,0xdd3d,0xd846,0xdd3e,0xd846,0xdd3f,0xd846,0xdd40, - 0xd846,0xdd41,0xd846,0xdd42,0xd846,0xdd43,0xd846,0xdd44,0xd846,0xdd45, - 0xd846,0xdd46,0xd846,0xdd47,0xd846,0xdd48,0xd846,0xdd49,0xd846,0xdd4a, - 0xd846,0xdd4b,0xd846,0xdd4c,0xd846,0xdd4d,0xd846,0xdd4e,0xd846,0xdd4f, - 0xd846,0xdd50,0xd846,0xdd51,0xd846,0xdd52,0xd846,0xdd53,0xd846,0xdd54, - 0xd846,0xdd55,0xd846,0xdd56,0xd846,0xdd57,0xd846,0xdd58,0xd846,0xdd59, - 0xd846,0xdd5a,0xd846,0xdd5b,0xd846,0xdd5c,0xd846,0xdd5d,0xd846,0xdd5e, - 0xd846,0xdd5f,0xd846,0xdd60,0xd846,0xdd61,0xd846,0xdd62,0xd846,0xdd63, - 0xd846,0xdd64,0xd846,0xdd65,0xd846,0xdd66,0xd846,0xdd67,0xd846,0xdd68, - 0xd846,0xdd69,0xd846,0xdd6a,0xd846,0xdd6b,0xd846,0xdd6c,0xd846,0xdd6d, - 0xd846,0xdd6e,0xd846,0xdd6f,0xd846,0xdd70,0xd846,0xdd71,0xd846,0xdd72, - 0xd846,0xdd73,0xd846,0xdd74,0xd846,0xdd75,0xd846,0xdd76,0xd846,0xdd77, - 0xd846,0xdd78,0xd846,0xdd79,0xd846,0xdd7a,0xd846,0xdd7b,0xd846,0xdd7c, - 0xd846,0xdd7d,0xd846,0xdd7e,0xd846,0xdd7f,0xd846,0xdd80,0xd846,0xdd81, - 0xd846,0xdd82,0xd846,0xdd83,0xd846,0xdd84,0xd846,0xdd85,0xd846,0xdd86, - 0xd846,0xdd87,0xd846,0xdd88,0xd846,0xdd89,0xd846,0xdd8a,0xd846,0xdd8b, - 0xd846,0xdd8c,0xd846,0xdd8d,0xd846,0xdd8e,0xd846,0xdd8f,0xd846,0xdd90, - 0xd846,0xdd91,0xd846,0xdd92,0xd846,0xdd93,0xd846,0xdd94,0xd846,0xdd95, - 0xd846,0xdd96,0xd846,0xdd97,0xd846,0xdd98,0xd846,0xdd99,0xd846,0xdd9a, - 0xd846,0xdd9b,0xd846,0xdd9c,0xd846,0xdd9d,0xd846,0xdd9e,0xd846,0xdd9f, - 0xd846,0xdda0,0xd846,0xdda1,0xd846,0xdda2,0xd846,0xdda3,0xd846,0xdda4, - 0xd846,0xdda5,0xd846,0xdda6,0xd846,0xdda7,0xd846,0xdda8,0xd846,0xdda9, - 0xd846,0xddaa,0xd846,0xddab,0xd846,0xddac,0xd846,0xddad,0xd846,0xddae, - 0xd846,0xddaf,0xd846,0xddb0,0xd846,0xddb1,0xd846,0xddb2,0xd846,0xddb3, - 0xd846,0xddb4,0xd846,0xddb5,0xd846,0xddb6,0xd846,0xddb7,0xd846,0xddb8, - 0xd846,0xddb9,0xd846,0xddba,0xd846,0xddbb,0xd846,0xddbc,0xd846,0xddbd, - 0xd846,0xddbe,0xd846,0xddbf,0xd846,0xddc0,0xd846,0xddc1,0xd846,0xddc2, - 0xd846,0xddc3,0xd846,0xddc4,0xd846,0xddc5,0xd846,0xddc6,0xd846,0xddc7, - 0xd846,0xddc8,0xd846,0xddc9,0xd846,0xddca,0xd846,0xddcb,0xd846,0xddcc, - 0xd846,0xddcd,0xd846,0xddce,0xd846,0xddcf,0xd846,0xddd0,0xd846,0xddd1, - 0xd846,0xddd2,0xd846,0xddd3,0xd846,0xddd4,0xd846,0xddd5,0xd846,0xddd6, - 0xd846,0xddd7,0xd846,0xddd8,0xd846,0xddd9,0xd846,0xddda,0xd846,0xdddb, - 0xd846,0xdddc,0xd846,0xdddd,0xd846,0xddde,0xd846,0xdddf,0xd846,0xdde0, - 0xd846,0xdde1,0xd846,0xdde2,0xd846,0xdde3,0xd846,0xdde4,0xd846,0xdde5, - 0xd846,0xdde6,0xd846,0xdde7,0xd846,0xdde8,0xd846,0xdde9,0xd846,0xddea, - 0xd846,0xddeb,0xd846,0xddec,0xd846,0xdded,0xd846,0xddee,0xd846,0xddef, - 0xd846,0xddf0,0xd846,0xddf1,0xd846,0xddf2,0xd846,0xddf3,0xd846,0xddf4, - 0xd846,0xddf5,0xd846,0xddf6,0xd846,0xddf7,0xd846,0xddf8,0xd846,0xddf9, - 0xd846,0xddfa,0xd846,0xddfb,0xd846,0xddfc,0xd846,0xddfd,0xd846,0xddfe, - 0xd846,0xddff,0xd846,0xde00,0xd846,0xde01,0xd846,0xde02,0xd846,0xde03, - 0xd846,0xde04,0xd846,0xde05,0xd846,0xde06,0xd846,0xde07,0xd846,0xde08, - 0xd846,0xde09,0xd846,0xde0a,0xd846,0xde0b,0xd846,0xde0c,0xd846,0xde0d, - 0xd846,0xde0e,0xd846,0xde0f,0xd846,0xde10,0xd846,0xde11,0xd846,0xde12, - 0xd846,0xde13,0xd846,0xde14,0xd846,0xde15,0xd846,0xde16,0xd846,0xde17, - 0xd846,0xde18,0xd846,0xde19,0xd846,0xde1a,0xd846,0xde1b,0xd846,0xde1c, - 0xd846,0xde1d,0xd846,0xde1e,0xd846,0xde1f,0xd846,0xde20,0xd846,0xde21, - 0xd846,0xde22,0xd846,0xde23,0xd846,0xde24,0xd846,0xde25,0xd846,0xde26, - 0xd846,0xde27,0xd846,0xde28,0xd846,0xde29,0xd846,0xde2a,0xd846,0xde2b, - 0xd846,0xde2c,0xd846,0xde2d,0xd846,0xde2e,0xd846,0xde2f,0xd846,0xde30, - 0xd846,0xde31,0xd846,0xde32,0xd846,0xde33,0xd846,0xde34,0xd846,0xde35, - 0xd846,0xde36,0xd846,0xde37,0xd846,0xde38,0xd846,0xde39,0xd846,0xde3a, - 0xd846,0xde3b,0xd846,0xde3c,0xd846,0xde3d,0xd846,0xde3e,0xd846,0xde3f, - 0xd846,0xde40,0xd846,0xde41,0xd846,0xde42,0xd846,0xde43,0xd846,0xde44, - 0xd846,0xde45,0xd846,0xde46,0xd846,0xde47,0xd846,0xde48,0xd846,0xde49, - 0xd846,0xde4a,0xd846,0xde4b,0xd846,0xde4c,0xd846,0xde4d,0xd846,0xde4e, - 0xd846,0xde4f,0xd846,0xde50,0xd846,0xde51,0xd846,0xde52,0xd846,0xde53, - 0xd846,0xde54,0xd846,0xde55,0xd846,0xde56,0xd846,0xde57,0xd846,0xde58, - 0xd846,0xde59,0xd846,0xde5a,0xd846,0xde5b,0xd846,0xde5c,0xd846,0xde5d, - 0xd846,0xde5e,0xd846,0xde5f,0xd846,0xde60,0xd846,0xde61,0xd846,0xde62, - 0xd846,0xde63,0xd846,0xde64,0xd846,0xde65,0xd846,0xde66,0xd846,0xde67, - 0xd846,0xde68,0xd846,0xde69,0xd846,0xde6a,0xd846,0xde6b,0xd846,0xde6c, - 0xd846,0xde6d,0xd846,0xde6e,0xd846,0xde6f,0xd846,0xde70,0xd846,0xde71, - 0xd846,0xde72,0xd846,0xde73,0xd846,0xde74,0xd846,0xde75,0xd846,0xde76, - 0xd846,0xde77,0xd846,0xde78,0xd846,0xde79,0xd846,0xde7a,0xd846,0xde7b, - 0xd846,0xde7c,0xd846,0xde7d,0xd846,0xde7e,0xd846,0xde7f,0xd846,0xde80, - 0xd846,0xde81,0xd846,0xde82,0xd846,0xde83,0xd846,0xde84,0xd846,0xde85, - 0xd846,0xde86,0xd846,0xde87,0xd846,0xde88,0xd846,0xde89,0xd846,0xde8a, - 0xd846,0xde8b,0xd846,0xde8c,0xd846,0xde8d,0xd846,0xde8e,0xd846,0xde8f, - 0xd846,0xde90,0xd846,0xde91,0xd846,0xde92,0xd846,0xde93,0xd846,0xde94, - 0xd846,0xde95,0xd846,0xde96,0xd846,0xde97,0xd846,0xde98,0xd846,0xde99, - 0xd846,0xde9a,0xd846,0xde9b,0xd846,0xde9c,0xd846,0xde9d,0xd846,0xde9e, - 0xd846,0xde9f,0xd846,0xdea0,0xd846,0xdea1,0xd846,0xdea2,0xd846,0xdea3, - 0xd846,0xdea4,0xd846,0xdea5,0xd846,0xdea6,0xd846,0xdea7,0xd846,0xdea8, - 0xd846,0xdea9,0xd846,0xdeaa,0xd846,0xdeab,0xd846,0xdeac,0xd846,0xdead, - 0xd846,0xdeae,0xd846,0xdeaf,0xd846,0xdeb0,0xd846,0xdeb1,0xd846,0xdeb2, - 0xd846,0xdeb3,0xd846,0xdeb4,0xd846,0xdeb5,0xd846,0xdeb6,0xd846,0xdeb7, - 0xd846,0xdeb8,0xd846,0xdeb9,0xd846,0xdeba,0xd846,0xdebb,0xd846,0xdebc, - 0xd846,0xdebd,0xd846,0xdebe,0xd846,0xdebf,0xd846,0xdec0,0xd846,0xdec1, - 0xd846,0xdec2,0xd846,0xdec3,0xd846,0xdec4,0xd846,0xdec5,0xd846,0xdec6, - 0xd846,0xdec7,0xd846,0xdec8,0xd846,0xdec9,0xd846,0xdeca,0xd846,0xdecb, - 0xd846,0xdecc,0xd846,0xdecd,0xd846,0xdece,0xd846,0xdecf,0xd846,0xded0, - 0xd846,0xded1,0xd846,0xded2,0xd846,0xded3,0xd846,0xded4,0xd846,0xded5, - 0xd846,0xded6,0xd846,0xded7,0xd846,0xded8,0xd846,0xded9,0xd846,0xdeda, - 0xd846,0xdedb,0xd846,0xdedc,0xd846,0xdedd,0xd846,0xdede,0xd846,0xdedf, - 0xd846,0xdee0,0xd846,0xdee1,0xd846,0xdee2,0xd846,0xdee3,0xd846,0xdee4, - 0xd846,0xdee5,0xd846,0xdee6,0xd846,0xdee7,0xd846,0xdee8,0xd846,0xdee9, - 0xd846,0xdeea,0xd846,0xdeeb,0xd846,0xdeec,0xd846,0xdeed,0xd846,0xdeee, - 0xd846,0xdeef,0xd846,0xdef0,0xd846,0xdef1,0xd846,0xdef2,0xd846,0xdef3, - 0xd846,0xdef4,0xd846,0xdef5,0xd846,0xdef6,0xd846,0xdef7,0xd846,0xdef8, - 0xd846,0xdef9,0xd846,0xdefa,0xd846,0xdefb,0xd846,0xdefc,0xd846,0xdefd, - 0xd846,0xdefe,0xd846,0xdeff,0xd846,0xdf00,0xd846,0xdf01,0xd846,0xdf02, - 0xd846,0xdf03,0xd846,0xdf04,0xd846,0xdf05,0xd846,0xdf06,0xd846,0xdf07, - 0xd846,0xdf08,0xd846,0xdf09,0xd846,0xdf0a,0xd846,0xdf0b,0xd846,0xdf0c, - 0xd846,0xdf0d,0xd846,0xdf0e,0xd846,0xdf0f,0xd846,0xdf10,0xd846,0xdf11, - 0xd846,0xdf12,0xd846,0xdf13,0xd846,0xdf14,0xd846,0xdf15,0xd846,0xdf16, - 0xd846,0xdf17,0xd846,0xdf18,0xd846,0xdf19,0xd846,0xdf1a,0xd846,0xdf1b, - 0xd846,0xdf1c,0xd846,0xdf1d,0xd846,0xdf1e,0xd846,0xdf1f,0xd846,0xdf20, - 0xd846,0xdf21,0xd846,0xdf22,0xd846,0xdf23,0xd846,0xdf24,0xd846,0xdf25, - 0xd846,0xdf26,0xd846,0xdf27,0xd846,0xdf28,0xd846,0xdf29,0xd846,0xdf2a, - 0xd846,0xdf2b,0xd846,0xdf2c,0xd846,0xdf2d,0xd846,0xdf2e,0xd846,0xdf2f, - 0xd846,0xdf30,0xd846,0xdf31,0xd846,0xdf32,0xd846,0xdf33,0xd846,0xdf34, - 0xd846,0xdf35,0xd846,0xdf36,0xd846,0xdf37,0xd846,0xdf38,0xd846,0xdf39, - 0xd846,0xdf3a,0xd846,0xdf3b,0xd846,0xdf3c,0xd846,0xdf3d,0xd846,0xdf3e, - 0xd846,0xdf3f,0xd846,0xdf40,0xd846,0xdf41,0xd846,0xdf42,0xd846,0xdf43, - 0xd846,0xdf44,0xd846,0xdf45,0xd846,0xdf46,0xd846,0xdf47,0xd846,0xdf48, - 0xd846,0xdf49,0xd846,0xdf4a,0xd846,0xdf4b,0xd846,0xdf4c,0xd846,0xdf4d, - 0xd846,0xdf4e,0xd846,0xdf4f,0xd846,0xdf50,0xd846,0xdf51,0xd846,0xdf52, - 0xd846,0xdf53,0xd846,0xdf54,0xd846,0xdf55,0xd846,0xdf56,0xd846,0xdf57, - 0xd846,0xdf58,0xd846,0xdf59,0xd846,0xdf5a,0xd846,0xdf5b,0xd846,0xdf5c, - 0xd846,0xdf5d,0xd846,0xdf5e,0xd846,0xdf5f,0xd846,0xdf60,0xd846,0xdf61, - 0xd846,0xdf62,0xd846,0xdf63,0xd846,0xdf64,0xd846,0xdf65,0xd846,0xdf66, - 0xd846,0xdf67,0xd846,0xdf68,0xd846,0xdf69,0xd846,0xdf6a,0xd846,0xdf6b, - 0xd846,0xdf6c,0xd846,0xdf6d,0xd846,0xdf6e,0xd846,0xdf6f,0xd846,0xdf70, - 0xd846,0xdf71,0xd846,0xdf72,0xd846,0xdf73,0xd846,0xdf74,0xd846,0xdf75, - 0xd846,0xdf76,0xd846,0xdf77,0xd846,0xdf78,0xd846,0xdf79,0xd846,0xdf7a, - 0xd846,0xdf7b,0xd846,0xdf7c,0xd846,0xdf7d,0xd846,0xdf7e,0xd846,0xdf7f, - 0xd846,0xdf80,0xd846,0xdf81,0xd846,0xdf82,0xd846,0xdf83,0xd846,0xdf84, - 0xd846,0xdf85,0xd846,0xdf86,0xd846,0xdf87,0xd846,0xdf88,0xd846,0xdf89, - 0xd846,0xdf8a,0xd846,0xdf8b,0xd846,0xdf8c,0xd846,0xdf8d,0xd846,0xdf8e, - 0xd846,0xdf8f,0xd846,0xdf90,0xd846,0xdf91,0xd846,0xdf92,0xd846,0xdf93, - 0xd846,0xdf94,0xd846,0xdf95,0xd846,0xdf96,0xd846,0xdf97,0xd846,0xdf98, - 0xd846,0xdf99,0xd846,0xdf9a,0xd846,0xdf9b,0xd846,0xdf9c,0xd846,0xdf9d, - 0xd846,0xdf9e,0xd846,0xdf9f,0xd846,0xdfa0,0xd846,0xdfa1,0xd846,0xdfa2, - 0xd846,0xdfa3,0xd846,0xdfa4,0xd846,0xdfa5,0xd846,0xdfa6,0xd846,0xdfa7, - 0xd846,0xdfa8,0xd846,0xdfa9,0xd846,0xdfaa,0xd846,0xdfab,0xd846,0xdfac, - 0xd846,0xdfad,0xd846,0xdfae,0xd846,0xdfaf,0xd846,0xdfb0,0xd846,0xdfb1, - 0xd846,0xdfb2,0xd846,0xdfb3,0xd846,0xdfb4,0xd846,0xdfb5,0xd846,0xdfb6, - 0xd846,0xdfb7,0xd846,0xdfb8,0xd846,0xdfb9,0xd846,0xdfba,0xd846,0xdfbb, - 0xd846,0xdfbc,0xd846,0xdfbd,0xd846,0xdfbe,0xd846,0xdfbf,0xd846,0xdfc0, - 0xd846,0xdfc1,0xd846,0xdfc2,0xd846,0xdfc3,0xd846,0xdfc4,0xd846,0xdfc5, - 0xd846,0xdfc6,0xd846,0xdfc7,0xd846,0xdfc8,0xd846,0xdfc9,0xd846,0xdfca, - 0xd846,0xdfcb,0xd846,0xdfcc,0xd846,0xdfcd,0xd846,0xdfce,0xd846,0xdfcf, - 0xd846,0xdfd0,0xd846,0xdfd1,0xd846,0xdfd2,0xd846,0xdfd3,0xd846,0xdfd4, - 0xd846,0xdfd5,0xd846,0xdfd6,0xd846,0xdfd7,0xd846,0xdfd8,0xd846,0xdfd9, - 0xd846,0xdfda,0xd846,0xdfdb,0xd846,0xdfdc,0xd846,0xdfdd,0xd846,0xdfde, - 0xd846,0xdfdf,0xd846,0xdfe0,0xd846,0xdfe1,0xd846,0xdfe2,0xd846,0xdfe3, - 0xd846,0xdfe4,0xd846,0xdfe5,0xd846,0xdfe6,0xd846,0xdfe7,0xd846,0xdfe8, - 0xd846,0xdfe9,0xd846,0xdfea,0xd846,0xdfeb,0xd846,0xdfec,0xd846,0xdfed, - 0xd846,0xdfee,0xd846,0xdfef,0xd846,0xdff0,0xd846,0xdff1,0xd846,0xdff2, - 0xd846,0xdff3,0xd846,0xdff4,0xd846,0xdff5,0xd846,0xdff6,0xd846,0xdff7, - 0xd846,0xdff8,0xd846,0xdff9,0xd846,0xdffa,0xd846,0xdffb,0xd846,0xdffc, - 0xd846,0xdffd,0xd846,0xdffe,0xd846,0xdfff,0xd847,0xdc00,0xd847,0xdc01, - 0xd847,0xdc02,0xd847,0xdc03,0xd847,0xdc04,0xd847,0xdc05,0xd847,0xdc06, - 0xd847,0xdc07,0xd847,0xdc08,0xd847,0xdc09,0xd847,0xdc0a,0xd847,0xdc0b, - 0xd847,0xdc0c,0xd847,0xdc0d,0xd847,0xdc0e,0xd847,0xdc0f,0xd847,0xdc10, - 0xd847,0xdc11,0xd847,0xdc12,0xd847,0xdc13,0xd847,0xdc14,0xd847,0xdc15, - 0xd847,0xdc16,0xd847,0xdc17,0xd847,0xdc18,0xd847,0xdc19,0xd847,0xdc1a, - 0xd847,0xdc1b,0xd847,0xdc1c,0xd847,0xdc1d,0xd847,0xdc1e,0xd847,0xdc1f, - 0xd847,0xdc20,0xd847,0xdc21,0xd847,0xdc22,0xd847,0xdc23,0xd847,0xdc24, - 0xd847,0xdc25,0xd847,0xdc26,0xd847,0xdc27,0xd847,0xdc28,0xd847,0xdc29, - 0xd847,0xdc2a,0xd847,0xdc2b,0xd847,0xdc2c,0xd847,0xdc2d,0xd847,0xdc2e, - 0xd847,0xdc2f,0xd847,0xdc30,0xd847,0xdc31,0xd847,0xdc32,0xd847,0xdc33, - 0xd847,0xdc34,0xd847,0xdc35,0xd847,0xdc36,0xd847,0xdc37,0xd847,0xdc38, - 0xd847,0xdc39,0xd847,0xdc3a,0xd847,0xdc3b,0xd847,0xdc3c,0xd847,0xdc3d, - 0xd847,0xdc3e,0xd847,0xdc3f,0xd847,0xdc40,0xd847,0xdc41,0xd847,0xdc42, - 0xd847,0xdc43,0xd847,0xdc44,0xd847,0xdc45,0xd847,0xdc46,0xd847,0xdc47, - 0xd847,0xdc48,0xd847,0xdc49,0xd847,0xdc4a,0xd847,0xdc4b,0xd847,0xdc4c, - 0xd847,0xdc4d,0xd847,0xdc4e,0xd847,0xdc4f,0xd847,0xdc50,0xd847,0xdc51, - 0xd847,0xdc52,0xd847,0xdc53,0xd847,0xdc54,0xd847,0xdc55,0xd847,0xdc56, - 0xd847,0xdc57,0xd847,0xdc58,0xd847,0xdc59,0xd847,0xdc5a,0xd847,0xdc5b, - 0xd847,0xdc5c,0xd847,0xdc5d,0xd847,0xdc5e,0xd847,0xdc5f,0xd847,0xdc60, - 0xd847,0xdc61,0xd847,0xdc62,0xd847,0xdc63,0xd847,0xdc64,0xd847,0xdc65, - 0xd847,0xdc66,0xd847,0xdc67,0xd847,0xdc68,0xd847,0xdc69,0xd847,0xdc6a, - 0xd847,0xdc6b,0xd847,0xdc6c,0xd847,0xdc6d,0xd847,0xdc6e,0xd847,0xdc6f, - 0xd847,0xdc70,0xd847,0xdc71,0xd847,0xdc72,0xd847,0xdc73,0xd847,0xdc74, - 0xd847,0xdc75,0xd847,0xdc76,0xd847,0xdc77,0xd847,0xdc78,0xd847,0xdc79, - 0xd847,0xdc7a,0xd847,0xdc7b,0xd847,0xdc7c,0xd847,0xdc7d,0xd847,0xdc7e, - 0xd847,0xdc7f,0xd847,0xdc80,0xd847,0xdc81,0xd847,0xdc82,0xd847,0xdc83, - 0xd847,0xdc84,0xd847,0xdc85,0xd847,0xdc86,0xd847,0xdc87,0xd847,0xdc88, - 0xd847,0xdc89,0xd847,0xdc8a,0xd847,0xdc8b,0xd847,0xdc8c,0xd847,0xdc8d, - 0xd847,0xdc8e,0xd847,0xdc8f,0xd847,0xdc90,0xd847,0xdc91,0xd847,0xdc92, - 0xd847,0xdc93,0xd847,0xdc94,0xd847,0xdc95,0xd847,0xdc96,0xd847,0xdc97, - 0xd847,0xdc98,0xd847,0xdc99,0xd847,0xdc9a,0xd847,0xdc9b,0xd847,0xdc9c, - 0xd847,0xdc9d,0xd847,0xdc9e,0xd847,0xdc9f,0xd847,0xdca0,0xd847,0xdca1, - 0xd847,0xdca2,0xd847,0xdca3,0xd847,0xdca4,0xd847,0xdca5,0xd847,0xdca6, - 0xd847,0xdca7,0xd847,0xdca8,0xd847,0xdca9,0xd847,0xdcaa,0xd847,0xdcab, - 0xd847,0xdcac,0xd847,0xdcad,0xd847,0xdcae,0xd847,0xdcaf,0xd847,0xdcb0, - 0xd847,0xdcb1,0xd847,0xdcb2,0xd847,0xdcb3,0xd847,0xdcb4,0xd847,0xdcb5, - 0xd847,0xdcb6,0xd847,0xdcb7,0xd847,0xdcb8,0xd847,0xdcb9,0xd847,0xdcba, - 0xd847,0xdcbb,0xd847,0xdcbc,0xd847,0xdcbd,0xd847,0xdcbe,0xd847,0xdcbf, - 0xd847,0xdcc0,0xd847,0xdcc1,0xd847,0xdcc2,0xd847,0xdcc3,0xd847,0xdcc4, - 0xd847,0xdcc5,0xd847,0xdcc6,0xd847,0xdcc7,0xd847,0xdcc8,0xd847,0xdcc9, - 0xd847,0xdcca,0xd847,0xdccb,0xd847,0xdccc,0xd847,0xdccd,0xd847,0xdcce, - 0xd847,0xdccf,0xd847,0xdcd0,0xd847,0xdcd1,0xd847,0xdcd2,0xd847,0xdcd3, - 0xd847,0xdcd4,0xd847,0xdcd5,0xd847,0xdcd6,0xd847,0xdcd7,0xd847,0xdcd8, - 0xd847,0xdcd9,0xd847,0xdcda,0xd847,0xdcdb,0xd847,0xdcdc,0xd847,0xdcdd, - 0xd847,0xdcde,0xd847,0xdcdf,0xd847,0xdce0,0xd847,0xdce1,0xd847,0xdce2, - 0xd847,0xdce3,0xd847,0xdce4,0xd847,0xdce5,0xd847,0xdce6,0xd847,0xdce7, - 0xd847,0xdce8,0xd847,0xdce9,0xd847,0xdcea,0xd847,0xdceb,0xd847,0xdcec, - 0xd847,0xdced,0xd847,0xdcee,0xd847,0xdcef,0xd847,0xdcf0,0xd847,0xdcf1, - 0xd847,0xdcf2,0xd847,0xdcf3,0xd847,0xdcf4,0xd847,0xdcf5,0xd847,0xdcf6, - 0xd847,0xdcf7,0xd847,0xdcf8,0xd847,0xdcf9,0xd847,0xdcfa,0xd847,0xdcfb, - 0xd847,0xdcfc,0xd847,0xdcfd,0xd847,0xdcfe,0xd847,0xdcff,0xd847,0xdd00, - 0xd847,0xdd01,0xd847,0xdd02,0xd847,0xdd03,0xd847,0xdd04,0xd847,0xdd05, - 0xd847,0xdd06,0xd847,0xdd07,0xd847,0xdd08,0xd847,0xdd09,0xd847,0xdd0a, - 0xd847,0xdd0b,0xd847,0xdd0c,0xd847,0xdd0d,0xd847,0xdd0e,0xd847,0xdd0f, - 0xd847,0xdd10,0xd847,0xdd11,0xd847,0xdd12,0xd847,0xdd13,0xd847,0xdd14, - 0xd847,0xdd15,0xd847,0xdd16,0xd847,0xdd17,0xd847,0xdd18,0xd847,0xdd19, - 0xd847,0xdd1a,0xd847,0xdd1b,0xd847,0xdd1c,0xd847,0xdd1d,0xd847,0xdd1e, - 0xd847,0xdd1f,0xd847,0xdd20,0xd847,0xdd21,0xd847,0xdd22,0xd847,0xdd23, - 0xd847,0xdd24,0xd847,0xdd25,0xd847,0xdd26,0xd847,0xdd27,0xd847,0xdd28, - 0xd847,0xdd29,0xd847,0xdd2a,0xd847,0xdd2b,0xd847,0xdd2c,0xd847,0xdd2d, - 0xd847,0xdd2e,0xd847,0xdd2f,0xd847,0xdd30,0xd847,0xdd31,0xd847,0xdd32, - 0xd847,0xdd33,0xd847,0xdd34,0xd847,0xdd35,0xd847,0xdd36,0xd847,0xdd37, - 0xd847,0xdd38,0xd847,0xdd39,0xd847,0xdd3a,0xd847,0xdd3b,0xd847,0xdd3c, - 0xd847,0xdd3d,0xd847,0xdd3e,0xd847,0xdd3f,0xd847,0xdd40,0xd847,0xdd41, - 0xd847,0xdd42,0xd847,0xdd43,0xd847,0xdd44,0xd847,0xdd45,0xd847,0xdd46, - 0xd847,0xdd47,0xd847,0xdd48,0xd847,0xdd49,0xd847,0xdd4a,0xd847,0xdd4b, - 0xd847,0xdd4c,0xd847,0xdd4d,0xd847,0xdd4e,0xd847,0xdd4f,0xd847,0xdd50, - 0xd847,0xdd51,0xd847,0xdd52,0xd847,0xdd53,0xd847,0xdd54,0xd847,0xdd55, - 0xd847,0xdd56,0xd847,0xdd57,0xd847,0xdd58,0xd847,0xdd59,0xd847,0xdd5a, - 0xd847,0xdd5b,0xd847,0xdd5c,0xd847,0xdd5d,0xd847,0xdd5e,0xd847,0xdd5f, - 0xd847,0xdd60,0xd847,0xdd61,0xd847,0xdd62,0xd847,0xdd63,0xd847,0xdd64, - 0xd847,0xdd65,0xd847,0xdd66,0xd847,0xdd67,0xd847,0xdd68,0xd847,0xdd69, - 0xd847,0xdd6a,0xd847,0xdd6b,0xd847,0xdd6c,0xd847,0xdd6d,0xd847,0xdd6e, - 0xd847,0xdd6f,0xd847,0xdd70,0xd847,0xdd71,0xd847,0xdd72,0xd847,0xdd73, - 0xd847,0xdd74,0xd847,0xdd75,0xd847,0xdd76,0xd847,0xdd77,0xd847,0xdd78, - 0xd847,0xdd79,0xd847,0xdd7a,0xd847,0xdd7b,0xd847,0xdd7c,0xd847,0xdd7d, - 0xd847,0xdd7e,0xd847,0xdd7f,0xd847,0xdd80,0xd847,0xdd81,0xd847,0xdd82, - 0xd847,0xdd83,0xd847,0xdd84,0xd847,0xdd85,0xd847,0xdd86,0xd847,0xdd87, - 0xd847,0xdd88,0xd847,0xdd89,0xd847,0xdd8a,0xd847,0xdd8b,0xd847,0xdd8c, - 0xd847,0xdd8d,0xd847,0xdd8e,0xd847,0xdd8f,0xd847,0xdd90,0xd847,0xdd91, - 0xd847,0xdd92,0xd847,0xdd93,0xd847,0xdd94,0xd847,0xdd95,0xd847,0xdd96, - 0xd847,0xdd97,0xd847,0xdd98,0xd847,0xdd99,0xd847,0xdd9a,0xd847,0xdd9b, - 0xd847,0xdd9c,0xd847,0xdd9d,0xd847,0xdd9e,0xd847,0xdd9f,0xd847,0xdda0, - 0xd847,0xdda1,0xd847,0xdda2,0xd847,0xdda3,0xd847,0xdda4,0xd847,0xdda5, - 0xd847,0xdda6,0xd847,0xdda7,0xd847,0xdda8,0xd847,0xdda9,0xd847,0xddaa, - 0xd847,0xddab,0xd847,0xddac,0xd847,0xddad,0xd847,0xddae,0xd847,0xddaf, - 0xd847,0xddb0,0xd847,0xddb1,0xd847,0xddb2,0xd847,0xddb3,0xd847,0xddb4, - 0xd847,0xddb5,0xd847,0xddb6,0xd847,0xddb7,0xd847,0xddb8,0xd847,0xddb9, - 0xd847,0xddba,0xd847,0xddbb,0xd847,0xddbc,0xd847,0xddbd,0xd847,0xddbe, - 0xd847,0xddbf,0xd847,0xddc0,0xd847,0xddc1,0xd847,0xddc2,0xd847,0xddc3, - 0xd847,0xddc4,0xd847,0xddc5,0xd847,0xddc6,0xd847,0xddc7,0xd847,0xddc8, - 0xd847,0xddc9,0xd847,0xddca,0xd847,0xddcb,0xd847,0xddcc,0xd847,0xddcd, - 0xd847,0xddce,0xd847,0xddcf,0xd847,0xddd0,0xd847,0xddd1,0xd847,0xddd2, - 0xd847,0xddd3,0xd847,0xddd4,0xd847,0xddd5,0xd847,0xddd6,0xd847,0xddd7, - 0xd847,0xddd8,0xd847,0xddd9,0xd847,0xddda,0xd847,0xdddb,0xd847,0xdddc, - 0xd847,0xdddd,0xd847,0xddde,0xd847,0xdddf,0xd847,0xdde0,0xd847,0xdde1, - 0xd847,0xdde2,0xd847,0xdde3,0xd847,0xdde4,0xd847,0xdde5,0xd847,0xdde6, - 0xd847,0xdde7,0xd847,0xdde8,0xd847,0xdde9,0xd847,0xddea,0xd847,0xddeb, - 0xd847,0xddec,0xd847,0xdded,0xd847,0xddee,0xd847,0xddef,0xd847,0xddf0, - 0xd847,0xddf1,0xd847,0xddf2,0xd847,0xddf3,0xd847,0xddf4,0xd847,0xddf5, - 0xd847,0xddf6,0xd847,0xddf7,0xd847,0xddf8,0xd847,0xddf9,0xd847,0xddfa, - 0xd847,0xddfb,0xd847,0xddfc,0xd847,0xddfd,0xd847,0xddfe,0xd847,0xddff, - 0xd847,0xde00,0xd847,0xde01,0xd847,0xde02,0xd847,0xde03,0xd847,0xde04, - 0xd847,0xde05,0xd847,0xde06,0xd847,0xde07,0xd847,0xde08,0xd847,0xde09, - 0xd847,0xde0a,0xd847,0xde0b,0xd847,0xde0c,0xd847,0xde0d,0xd847,0xde0e, - 0xd847,0xde0f,0xd847,0xde10,0xd847,0xde11,0xd847,0xde12,0xd847,0xde13, - 0xd847,0xde14,0xd847,0xde15,0xd847,0xde16,0xd847,0xde17,0xd847,0xde18, - 0xd847,0xde19,0xd847,0xde1a,0xd847,0xde1b,0xd847,0xde1c,0xd847,0xde1d, - 0xd847,0xde1e,0xd847,0xde1f,0xd847,0xde20,0xd847,0xde21,0xd847,0xde22, - 0xd847,0xde23,0xd847,0xde24,0xd847,0xde25,0xd847,0xde26,0xd847,0xde27, - 0xd847,0xde28,0xd847,0xde29,0xd847,0xde2a,0xd847,0xde2b,0xd847,0xde2c, - 0xd847,0xde2d,0xd847,0xde2e,0xd847,0xde2f,0xd847,0xde30,0xd847,0xde31, - 0xd847,0xde32,0xd847,0xde33,0xd847,0xde34,0xd847,0xde35,0xd847,0xde36, - 0xd847,0xde37,0xd847,0xde38,0xd847,0xde39,0xd847,0xde3a,0xd847,0xde3b, - 0xd847,0xde3c,0xd847,0xde3d,0xd847,0xde3e,0xd847,0xde3f,0xd847,0xde40, - 0xd847,0xde41,0xd847,0xde42,0xd847,0xde43,0xd847,0xde44,0xd847,0xde45, - 0xd847,0xde46,0xd847,0xde47,0xd847,0xde48,0xd847,0xde49,0xd847,0xde4a, - 0xd847,0xde4b,0xd847,0xde4c,0xd847,0xde4d,0xd847,0xde4e,0xd847,0xde4f, - 0xd847,0xde50,0xd847,0xde51,0xd847,0xde52,0xd847,0xde53,0xd847,0xde54, - 0xd847,0xde55,0xd847,0xde56,0xd847,0xde57,0xd847,0xde58,0xd847,0xde59, - 0xd847,0xde5a,0xd847,0xde5b,0xd847,0xde5c,0xd847,0xde5d,0xd847,0xde5e, - 0xd847,0xde5f,0xd847,0xde60,0xd847,0xde61,0xd847,0xde62,0xd847,0xde63, - 0xd847,0xde64,0xd847,0xde65,0xd847,0xde66,0xd847,0xde67,0xd847,0xde68, - 0xd847,0xde69,0xd847,0xde6a,0xd847,0xde6b,0xd847,0xde6c,0xd847,0xde6d, - 0xd847,0xde6e,0xd847,0xde6f,0xd847,0xde70,0xd847,0xde71,0xd847,0xde72, - 0xd847,0xde73,0xd847,0xde74,0xd847,0xde75,0xd847,0xde76,0xd847,0xde77, - 0xd847,0xde78,0xd847,0xde79,0xd847,0xde7a,0xd847,0xde7b,0xd847,0xde7c, - 0xd847,0xde7d,0xd847,0xde7e,0xd847,0xde7f,0xd847,0xde80,0xd847,0xde81, - 0xd847,0xde82,0xd847,0xde83,0xd847,0xde84,0xd847,0xde85,0xd847,0xde86, - 0xd847,0xde87,0xd847,0xde88,0xd847,0xde89,0xd847,0xde8a,0xd847,0xde8b, - 0xd847,0xde8c,0xd847,0xde8d,0xd847,0xde8e,0xd847,0xde8f,0xd847,0xde90, - 0xd847,0xde91,0xd847,0xde92,0xd847,0xde93,0xd847,0xde94,0xd847,0xde95, - 0xd847,0xde96,0xd847,0xde97,0xd847,0xde98,0xd847,0xde99,0xd847,0xde9a, - 0xd847,0xde9b,0xd847,0xde9c,0xd847,0xde9d,0xd847,0xde9e,0xd847,0xde9f, - 0xd847,0xdea0,0xd847,0xdea1,0xd847,0xdea2,0xd847,0xdea3,0xd847,0xdea4, - 0xd847,0xdea5,0xd847,0xdea6,0xd847,0xdea7,0xd847,0xdea8,0xd847,0xdea9, - 0xd847,0xdeaa,0xd847,0xdeab,0xd847,0xdeac,0xd847,0xdead,0xd847,0xdeae, - 0xd847,0xdeaf,0xd847,0xdeb0,0xd847,0xdeb1,0xd847,0xdeb2,0xd847,0xdeb3, - 0xd847,0xdeb4,0xd847,0xdeb5,0xd847,0xdeb6,0xd847,0xdeb7,0xd847,0xdeb8, - 0xd847,0xdeb9,0xd847,0xdeba,0xd847,0xdebb,0xd847,0xdebc,0xd847,0xdebd, - 0xd847,0xdebe,0xd847,0xdebf,0xd847,0xdec0,0xd847,0xdec1,0xd847,0xdec2, - 0xd847,0xdec3,0xd847,0xdec4,0xd847,0xdec5,0xd847,0xdec6,0xd847,0xdec7, - 0xd847,0xdec8,0xd847,0xdec9,0xd847,0xdeca,0xd847,0xdecb,0xd847,0xdecc, - 0xd847,0xdecd,0xd847,0xdece,0xd847,0xdecf,0xd847,0xded0,0xd847,0xded1, - 0xd847,0xded2,0xd847,0xded3,0xd847,0xded4,0xd847,0xded5,0xd847,0xded6, - 0xd847,0xded7,0xd847,0xded8,0xd847,0xded9,0xd847,0xdeda,0xd847,0xdedb, - 0xd847,0xdedc,0xd847,0xdedd,0xd847,0xdede,0xd847,0xdedf,0xd847,0xdee0, - 0xd847,0xdee1,0xd847,0xdee2,0xd847,0xdee3,0xd847,0xdee4,0xd847,0xdee5, - 0xd847,0xdee6,0xd847,0xdee7,0xd847,0xdee8,0xd847,0xdee9,0xd847,0xdeea, - 0xd847,0xdeeb,0xd847,0xdeec,0xd847,0xdeed,0xd847,0xdeee,0xd847,0xdeef, - 0xd847,0xdef0,0xd847,0xdef1,0xd847,0xdef2,0xd847,0xdef3,0xd847,0xdef4, - 0xd847,0xdef5,0xd847,0xdef6,0xd847,0xdef7,0xd847,0xdef8,0xd847,0xdef9, - 0xd847,0xdefa,0xd847,0xdefb,0xd847,0xdefc,0xd847,0xdefd,0xd847,0xdefe, - 0xd847,0xdeff,0xd847,0xdf00,0xd847,0xdf01,0xd847,0xdf02,0xd847,0xdf03, - 0xd847,0xdf04,0xd847,0xdf05,0xd847,0xdf06,0xd847,0xdf07,0xd847,0xdf08, - 0xd847,0xdf09,0xd847,0xdf0a,0xd847,0xdf0b,0xd847,0xdf0c,0xd847,0xdf0d, - 0xd847,0xdf0e,0xd847,0xdf0f,0xd847,0xdf10,0xd847,0xdf11,0xd847,0xdf12, - 0xd847,0xdf13,0xd847,0xdf14,0xd847,0xdf15,0xd847,0xdf16,0xd847,0xdf17, - 0xd847,0xdf18,0xd847,0xdf19,0xd847,0xdf1a,0xd847,0xdf1b,0xd847,0xdf1c, - 0xd847,0xdf1d,0xd847,0xdf1e,0xd847,0xdf1f,0xd847,0xdf20,0xd847,0xdf21, - 0xd847,0xdf22,0xd847,0xdf23,0xd847,0xdf24,0xd847,0xdf25,0xd847,0xdf26, - 0xd847,0xdf27,0xd847,0xdf28,0xd847,0xdf29,0xd847,0xdf2a,0xd847,0xdf2b, - 0xd847,0xdf2c,0xd847,0xdf2d,0xd847,0xdf2e,0xd847,0xdf2f,0xd847,0xdf30, - 0xd847,0xdf31,0xd847,0xdf32,0xd847,0xdf33,0xd847,0xdf34,0xd847,0xdf35, - 0xd847,0xdf36,0xd847,0xdf37,0xd847,0xdf38,0xd847,0xdf39,0xd847,0xdf3a, - 0xd847,0xdf3b,0xd847,0xdf3c,0xd847,0xdf3d,0xd847,0xdf3e,0xd847,0xdf3f, - 0xd847,0xdf40,0xd847,0xdf41,0xd847,0xdf42,0xd847,0xdf43,0xd847,0xdf44, - 0xd847,0xdf45,0xd847,0xdf46,0xd847,0xdf47,0xd847,0xdf48,0xd847,0xdf49, - 0xd847,0xdf4a,0xd847,0xdf4b,0xd847,0xdf4c,0xd847,0xdf4d,0xd847,0xdf4e, - 0xd847,0xdf4f,0xd847,0xdf50,0xd847,0xdf51,0xd847,0xdf52,0xd847,0xdf53, - 0xd847,0xdf54,0xd847,0xdf55,0xd847,0xdf56,0xd847,0xdf57,0xd847,0xdf58, - 0xd847,0xdf59,0xd847,0xdf5a,0xd847,0xdf5b,0xd847,0xdf5c,0xd847,0xdf5d, - 0xd847,0xdf5e,0xd847,0xdf5f,0xd847,0xdf60,0xd847,0xdf61,0xd847,0xdf62, - 0xd847,0xdf63,0xd847,0xdf64,0xd847,0xdf65,0xd847,0xdf66,0xd847,0xdf67, - 0xd847,0xdf68,0xd847,0xdf69,0xd847,0xdf6a,0xd847,0xdf6b,0xd847,0xdf6c, - 0xd847,0xdf6d,0xd847,0xdf6e,0xd847,0xdf6f,0xd847,0xdf70,0xd847,0xdf71, - 0xd847,0xdf72,0xd847,0xdf73,0xd847,0xdf74,0xd847,0xdf75,0xd847,0xdf76, - 0xd847,0xdf77,0xd847,0xdf78,0xd847,0xdf79,0xd847,0xdf7a,0xd847,0xdf7b, - 0xd847,0xdf7c,0xd847,0xdf7d,0xd847,0xdf7e,0xd847,0xdf7f,0xd847,0xdf80, - 0xd847,0xdf81,0xd847,0xdf82,0xd847,0xdf83,0xd847,0xdf84,0xd847,0xdf85, - 0xd847,0xdf86,0xd847,0xdf87,0xd847,0xdf88,0xd847,0xdf89,0xd847,0xdf8a, - 0xd847,0xdf8b,0xd847,0xdf8c,0xd847,0xdf8d,0xd847,0xdf8e,0xd847,0xdf8f, - 0xd847,0xdf90,0xd847,0xdf91,0xd847,0xdf92,0xd847,0xdf93,0xd847,0xdf94, - 0xd847,0xdf95,0xd847,0xdf96,0xd847,0xdf97,0xd847,0xdf98,0xd847,0xdf99, - 0xd847,0xdf9a,0xd847,0xdf9b,0xd847,0xdf9c,0xd847,0xdf9d,0xd847,0xdf9e, - 0xd847,0xdf9f,0xd847,0xdfa0,0xd847,0xdfa1,0xd847,0xdfa2,0xd847,0xdfa3, - 0xd847,0xdfa4,0xd847,0xdfa5,0xd847,0xdfa6,0xd847,0xdfa7,0xd847,0xdfa8, - 0xd847,0xdfa9,0xd847,0xdfaa,0xd847,0xdfab,0xd847,0xdfac,0xd847,0xdfad, - 0xd847,0xdfae,0xd847,0xdfaf,0xd847,0xdfb0,0xd847,0xdfb1,0xd847,0xdfb2, - 0xd847,0xdfb3,0xd847,0xdfb4,0xd847,0xdfb5,0xd847,0xdfb6,0xd847,0xdfb7, - 0xd847,0xdfb8,0xd847,0xdfb9,0xd847,0xdfba,0xd847,0xdfbb,0xd847,0xdfbc, - 0xd847,0xdfbd,0xd847,0xdfbe,0xd847,0xdfbf,0xd847,0xdfc0,0xd847,0xdfc1, - 0xd847,0xdfc2,0xd847,0xdfc3,0xd847,0xdfc4,0xd847,0xdfc5,0xd847,0xdfc6, - 0xd847,0xdfc7,0xd847,0xdfc8,0xd847,0xdfc9,0xd847,0xdfca,0xd847,0xdfcb, - 0xd847,0xdfcc,0xd847,0xdfcd,0xd847,0xdfce,0xd847,0xdfcf,0xd847,0xdfd0, - 0xd847,0xdfd1,0xd847,0xdfd2,0xd847,0xdfd3,0xd847,0xdfd4,0xd847,0xdfd5, - 0xd847,0xdfd6,0xd847,0xdfd7,0xd847,0xdfd8,0xd847,0xdfd9,0xd847,0xdfda, - 0xd847,0xdfdb,0xd847,0xdfdc,0xd847,0xdfdd,0xd847,0xdfde,0xd847,0xdfdf, - 0xd847,0xdfe0,0xd847,0xdfe1,0xd847,0xdfe2,0xd847,0xdfe3,0xd847,0xdfe4, - 0xd847,0xdfe5,0xd847,0xdfe6,0xd847,0xdfe7,0xd847,0xdfe8,0xd847,0xdfe9, - 0xd847,0xdfea,0xd847,0xdfeb,0xd847,0xdfec,0xd847,0xdfed,0xd847,0xdfee, - 0xd847,0xdfef,0xd847,0xdff0,0xd847,0xdff1,0xd847,0xdff2,0xd847,0xdff3, - 0xd847,0xdff4,0xd847,0xdff5,0xd847,0xdff6,0xd847,0xdff7,0xd847,0xdff8, - 0xd847,0xdff9,0xd847,0xdffa,0xd847,0xdffb,0xd847,0xdffc,0xd847,0xdffd, - 0xd847,0xdffe,0xd847,0xdfff,0xd848,0xdc00,0xd848,0xdc01,0xd848,0xdc02, - 0xd848,0xdc03,0xd848,0xdc04,0xd848,0xdc05,0xd848,0xdc06,0xd848,0xdc07, - 0xd848,0xdc08,0xd848,0xdc09,0xd848,0xdc0a,0xd848,0xdc0b,0xd848,0xdc0c, - 0xd848,0xdc0d,0xd848,0xdc0e,0xd848,0xdc0f,0xd848,0xdc10,0xd848,0xdc11, - 0xd848,0xdc12,0xd848,0xdc13,0xd848,0xdc14,0xd848,0xdc15,0xd848,0xdc16, - 0xd848,0xdc17,0xd848,0xdc18,0xd848,0xdc19,0xd848,0xdc1a,0xd848,0xdc1b, - 0xd848,0xdc1c,0xd848,0xdc1d,0xd848,0xdc1e,0xd848,0xdc1f,0xd848,0xdc20, - 0xd848,0xdc21,0xd848,0xdc22,0xd848,0xdc23,0xd848,0xdc24,0xd848,0xdc25, - 0xd848,0xdc26,0xd848,0xdc27,0xd848,0xdc28,0xd848,0xdc29,0xd848,0xdc2a, - 0xd848,0xdc2b,0xd848,0xdc2c,0xd848,0xdc2d,0xd848,0xdc2e,0xd848,0xdc2f, - 0xd848,0xdc30,0xd848,0xdc31,0xd848,0xdc32,0xd848,0xdc33,0xd848,0xdc34, - 0xd848,0xdc35,0xd848,0xdc36,0xd848,0xdc37,0xd848,0xdc38,0xd848,0xdc39, - 0xd848,0xdc3a,0xd848,0xdc3b,0xd848,0xdc3c,0xd848,0xdc3d,0xd848,0xdc3e, - 0xd848,0xdc3f,0xd848,0xdc40,0xd848,0xdc41,0xd848,0xdc42,0xd848,0xdc43, - 0xd848,0xdc44,0xd848,0xdc45,0xd848,0xdc46,0xd848,0xdc47,0xd848,0xdc48, - 0xd848,0xdc49,0xd848,0xdc4a,0xd848,0xdc4b,0xd848,0xdc4c,0xd848,0xdc4d, - 0xd848,0xdc4e,0xd848,0xdc4f,0xd848,0xdc50,0xd848,0xdc51,0xd848,0xdc52, - 0xd848,0xdc53,0xd848,0xdc54,0xd848,0xdc55,0xd848,0xdc56,0xd848,0xdc57, - 0xd848,0xdc58,0xd848,0xdc59,0xd848,0xdc5a,0xd848,0xdc5b,0xd848,0xdc5c, - 0xd848,0xdc5d,0xd848,0xdc5e,0xd848,0xdc5f,0xd848,0xdc60,0xd848,0xdc61, - 0xd848,0xdc62,0xd848,0xdc63,0xd848,0xdc64,0xd848,0xdc65,0xd848,0xdc66, - 0xd848,0xdc67,0xd848,0xdc68,0xd848,0xdc69,0xd848,0xdc6a,0xd848,0xdc6b, - 0xd848,0xdc6c,0xd848,0xdc6d,0xd848,0xdc6e,0xd848,0xdc6f,0xd848,0xdc70, - 0xd848,0xdc71,0xd848,0xdc72,0xd848,0xdc73,0xd848,0xdc74,0xd848,0xdc75, - 0xd848,0xdc76,0xd848,0xdc77,0xd848,0xdc78,0xd848,0xdc79,0xd848,0xdc7a, - 0xd848,0xdc7b,0xd848,0xdc7c,0xd848,0xdc7d,0xd848,0xdc7e,0xd848,0xdc7f, - 0xd848,0xdc80,0xd848,0xdc81,0xd848,0xdc82,0xd848,0xdc83,0xd848,0xdc84, - 0xd848,0xdc85,0xd848,0xdc86,0xd848,0xdc87,0xd848,0xdc88,0xd848,0xdc89, - 0xd848,0xdc8a,0xd848,0xdc8b,0xd848,0xdc8c,0xd848,0xdc8d,0xd848,0xdc8e, - 0xd848,0xdc8f,0xd848,0xdc90,0xd848,0xdc91,0xd848,0xdc92,0xd848,0xdc93, - 0xd848,0xdc94,0xd848,0xdc95,0xd848,0xdc96,0xd848,0xdc97,0xd848,0xdc98, - 0xd848,0xdc99,0xd848,0xdc9a,0xd848,0xdc9b,0xd848,0xdc9c,0xd848,0xdc9d, - 0xd848,0xdc9e,0xd848,0xdc9f,0xd848,0xdca0,0xd848,0xdca1,0xd848,0xdca2, - 0xd848,0xdca3,0xd848,0xdca4,0xd848,0xdca5,0xd848,0xdca6,0xd848,0xdca7, - 0xd848,0xdca8,0xd848,0xdca9,0xd848,0xdcaa,0xd848,0xdcab,0xd848,0xdcac, - 0xd848,0xdcad,0xd848,0xdcae,0xd848,0xdcaf,0xd848,0xdcb0,0xd848,0xdcb1, - 0xd848,0xdcb2,0xd848,0xdcb3,0xd848,0xdcb4,0xd848,0xdcb5,0xd848,0xdcb6, - 0xd848,0xdcb7,0xd848,0xdcb8,0xd848,0xdcb9,0xd848,0xdcba,0xd848,0xdcbb, - 0xd848,0xdcbc,0xd848,0xdcbd,0xd848,0xdcbe,0xd848,0xdcbf,0xd848,0xdcc0, - 0xd848,0xdcc1,0xd848,0xdcc2,0xd848,0xdcc3,0xd848,0xdcc4,0xd848,0xdcc5, - 0xd848,0xdcc6,0xd848,0xdcc7,0xd848,0xdcc8,0xd848,0xdcc9,0xd848,0xdcca, - 0xd848,0xdccb,0xd848,0xdccc,0xd848,0xdccd,0xd848,0xdcce,0xd848,0xdccf, - 0xd848,0xdcd0,0xd848,0xdcd1,0xd848,0xdcd2,0xd848,0xdcd3,0xd848,0xdcd4, - 0xd848,0xdcd5,0xd848,0xdcd6,0xd848,0xdcd7,0xd848,0xdcd8,0xd848,0xdcd9, - 0xd848,0xdcda,0xd848,0xdcdb,0xd848,0xdcdc,0xd848,0xdcdd,0xd848,0xdcde, - 0xd848,0xdcdf,0xd848,0xdce0,0xd848,0xdce1,0xd848,0xdce2,0xd848,0xdce3, - 0xd848,0xdce4,0xd848,0xdce5,0xd848,0xdce6,0xd848,0xdce7,0xd848,0xdce8, - 0xd848,0xdce9,0xd848,0xdcea,0xd848,0xdceb,0xd848,0xdcec,0xd848,0xdced, - 0xd848,0xdcee,0xd848,0xdcef,0xd848,0xdcf0,0xd848,0xdcf1,0xd848,0xdcf2, - 0xd848,0xdcf3,0xd848,0xdcf4,0xd848,0xdcf5,0xd848,0xdcf6,0xd848,0xdcf7, - 0xd848,0xdcf8,0xd848,0xdcf9,0xd848,0xdcfa,0xd848,0xdcfb,0xd848,0xdcfc, - 0xd848,0xdcfd,0xd848,0xdcfe,0xd848,0xdcff,0xd848,0xdd00,0xd848,0xdd01, - 0xd848,0xdd02,0xd848,0xdd03,0xd848,0xdd04,0xd848,0xdd05,0xd848,0xdd06, - 0xd848,0xdd07,0xd848,0xdd08,0xd848,0xdd09,0xd848,0xdd0a,0xd848,0xdd0b, - 0xd848,0xdd0c,0xd848,0xdd0d,0xd848,0xdd0e,0xd848,0xdd0f,0xd848,0xdd10, - 0xd848,0xdd11,0xd848,0xdd12,0xd848,0xdd13,0xd848,0xdd14,0xd848,0xdd15, - 0xd848,0xdd16,0xd848,0xdd17,0xd848,0xdd18,0xd848,0xdd19,0xd848,0xdd1a, - 0xd848,0xdd1b,0xd848,0xdd1c,0xd848,0xdd1d,0xd848,0xdd1e,0xd848,0xdd1f, - 0xd848,0xdd20,0xd848,0xdd21,0xd848,0xdd22,0xd848,0xdd23,0xd848,0xdd24, - 0xd848,0xdd25,0xd848,0xdd26,0xd848,0xdd27,0xd848,0xdd28,0xd848,0xdd29, - 0xd848,0xdd2a,0xd848,0xdd2b,0xd848,0xdd2c,0xd848,0xdd2d,0xd848,0xdd2e, - 0xd848,0xdd2f,0xd848,0xdd30,0xd848,0xdd31,0xd848,0xdd32,0xd848,0xdd33, - 0xd848,0xdd34,0xd848,0xdd35,0xd848,0xdd36,0xd848,0xdd37,0xd848,0xdd38, - 0xd848,0xdd39,0xd848,0xdd3a,0xd848,0xdd3b,0xd848,0xdd3c,0xd848,0xdd3d, - 0xd848,0xdd3e,0xd848,0xdd3f,0xd848,0xdd40,0xd848,0xdd41,0xd848,0xdd42, - 0xd848,0xdd43,0xd848,0xdd44,0xd848,0xdd45,0xd848,0xdd46,0xd848,0xdd47, - 0xd848,0xdd48,0xd848,0xdd49,0xd848,0xdd4a,0xd848,0xdd4b,0xd848,0xdd4c, - 0xd848,0xdd4d,0xd848,0xdd4e,0xd848,0xdd4f,0xd848,0xdd50,0xd848,0xdd51, - 0xd848,0xdd52,0xd848,0xdd53,0xd848,0xdd54,0xd848,0xdd55,0xd848,0xdd56, - 0xd848,0xdd57,0xd848,0xdd58,0xd848,0xdd59,0xd848,0xdd5a,0xd848,0xdd5b, - 0xd848,0xdd5c,0xd848,0xdd5d,0xd848,0xdd5e,0xd848,0xdd5f,0xd848,0xdd60, - 0xd848,0xdd61,0xd848,0xdd62,0xd848,0xdd63,0xd848,0xdd64,0xd848,0xdd65, - 0xd848,0xdd66,0xd848,0xdd67,0xd848,0xdd68,0xd848,0xdd69,0xd848,0xdd6a, - 0xd848,0xdd6b,0xd848,0xdd6c,0xd848,0xdd6d,0xd848,0xdd6e,0xd848,0xdd6f, - 0xd848,0xdd70,0xd848,0xdd71,0xd848,0xdd72,0xd848,0xdd73,0xd848,0xdd74, - 0xd848,0xdd75,0xd848,0xdd76,0xd848,0xdd77,0xd848,0xdd78,0xd848,0xdd79, - 0xd848,0xdd7a,0xd848,0xdd7b,0xd848,0xdd7c,0xd848,0xdd7d,0xd848,0xdd7e, - 0xd848,0xdd7f,0xd848,0xdd80,0xd848,0xdd81,0xd848,0xdd82,0xd848,0xdd83, - 0xd848,0xdd84,0xd848,0xdd85,0xd848,0xdd86,0xd848,0xdd87,0xd848,0xdd88, - 0xd848,0xdd89,0xd848,0xdd8a,0xd848,0xdd8b,0xd848,0xdd8c,0xd848,0xdd8d, - 0xd848,0xdd8e,0xd848,0xdd8f,0xd848,0xdd90,0xd848,0xdd91,0xd848,0xdd92, - 0xd848,0xdd93,0xd848,0xdd94,0xd848,0xdd95,0xd848,0xdd96,0xd848,0xdd97, - 0xd848,0xdd98,0xd848,0xdd99,0xd848,0xdd9a,0xd848,0xdd9b,0xd848,0xdd9c, - 0xd848,0xdd9d,0xd848,0xdd9e,0xd848,0xdd9f,0xd848,0xdda0,0xd848,0xdda1, - 0xd848,0xdda2,0xd848,0xdda3,0xd848,0xdda4,0xd848,0xdda5,0xd848,0xdda6, - 0xd848,0xdda7,0xd848,0xdda8,0xd848,0xdda9,0xd848,0xddaa,0xd848,0xddab, - 0xd848,0xddac,0xd848,0xddad,0xd848,0xddae,0xd848,0xddaf,0xd848,0xddb0, - 0xd848,0xddb1,0xd848,0xddb2,0xd848,0xddb3,0xd848,0xddb4,0xd848,0xddb5, - 0xd848,0xddb6,0xd848,0xddb7,0xd848,0xddb8,0xd848,0xddb9,0xd848,0xddba, - 0xd848,0xddbb,0xd848,0xddbc,0xd848,0xddbd,0xd848,0xddbe,0xd848,0xddbf, - 0xd848,0xddc0,0xd848,0xddc1,0xd848,0xddc2,0xd848,0xddc3,0xd848,0xddc4, - 0xd848,0xddc5,0xd848,0xddc6,0xd848,0xddc7,0xd848,0xddc8,0xd848,0xddc9, - 0xd848,0xddca,0xd848,0xddcb,0xd848,0xddcc,0xd848,0xddcd,0xd848,0xddce, - 0xd848,0xddcf,0xd848,0xddd0,0xd848,0xddd1,0xd848,0xddd2,0xd848,0xddd3, - 0xd848,0xddd4,0xd848,0xddd5,0xd848,0xddd6,0xd848,0xddd7,0xd848,0xddd8, - 0xd848,0xddd9,0xd848,0xddda,0xd848,0xdddb,0xd848,0xdddc,0xd848,0xdddd, - 0xd848,0xddde,0xd848,0xdddf,0xd848,0xdde0,0xd848,0xdde1,0xd848,0xdde2, - 0xd848,0xdde3,0xd848,0xdde4,0xd848,0xdde5,0xd848,0xdde6,0xd848,0xdde7, - 0xd848,0xdde8,0xd848,0xdde9,0xd848,0xddea,0xd848,0xddeb,0xd848,0xddec, - 0xd848,0xdded,0xd848,0xddee,0xd848,0xddef,0xd848,0xddf0,0xd848,0xddf1, - 0xd848,0xddf2,0xd848,0xddf3,0xd848,0xddf4,0xd848,0xddf5,0xd848,0xddf6, - 0xd848,0xddf7,0xd848,0xddf8,0xd848,0xddf9,0xd848,0xddfa,0xd848,0xddfb, - 0xd848,0xddfc,0xd848,0xddfd,0xd848,0xddfe,0xd848,0xddff,0xd848,0xde00, - 0xd848,0xde01,0xd848,0xde02,0xd848,0xde03,0xd848,0xde04,0xd848,0xde05, - 0xd848,0xde06,0xd848,0xde07,0xd848,0xde08,0xd848,0xde09,0xd848,0xde0a, - 0xd848,0xde0b,0xd848,0xde0c,0xd848,0xde0d,0xd848,0xde0e,0xd848,0xde0f, - 0xd848,0xde10,0xd848,0xde11,0xd848,0xde12,0xd848,0xde13,0xd848,0xde14, - 0xd848,0xde15,0xd848,0xde16,0xd848,0xde17,0xd848,0xde18,0xd848,0xde19, - 0xd848,0xde1a,0xd848,0xde1b,0xd848,0xde1c,0xd848,0xde1d,0xd848,0xde1e, - 0xd848,0xde1f,0xd848,0xde20,0xd848,0xde21,0xd848,0xde22,0xd848,0xde23, - 0xd848,0xde24,0xd848,0xde25,0xd848,0xde26,0xd848,0xde27,0xd848,0xde28, - 0xd848,0xde29,0xd848,0xde2a,0xd848,0xde2b,0xd848,0xde2c,0xd848,0xde2d, - 0xd848,0xde2e,0xd848,0xde2f,0xd848,0xde30,0xd848,0xde31,0xd848,0xde32, - 0xd848,0xde33,0xd848,0xde34,0xd848,0xde35,0xd848,0xde36,0xd848,0xde37, - 0xd848,0xde38,0xd848,0xde39,0xd848,0xde3a,0xd848,0xde3b,0xd848,0xde3c, - 0xd848,0xde3d,0xd848,0xde3e,0xd848,0xde3f,0xd848,0xde40,0xd848,0xde41, - 0xd848,0xde42,0xd848,0xde43,0xd848,0xde44,0xd848,0xde45,0xd848,0xde46, - 0xd848,0xde47,0xd848,0xde48,0xd848,0xde49,0xd848,0xde4a,0xd848,0xde4b, - 0xd848,0xde4c,0xd848,0xde4d,0xd848,0xde4e,0xd848,0xde4f,0xd848,0xde50, - 0xd848,0xde51,0xd848,0xde52,0xd848,0xde53,0xd848,0xde54,0xd848,0xde55, - 0xd848,0xde56,0xd848,0xde57,0xd848,0xde58,0xd848,0xde59,0xd848,0xde5a, - 0xd848,0xde5b,0xd848,0xde5c,0xd848,0xde5d,0xd848,0xde5e,0xd848,0xde5f, - 0xd848,0xde60,0xd848,0xde61,0xd848,0xde62,0xd848,0xde63,0xd848,0xde64, - 0xd848,0xde65,0xd848,0xde66,0xd848,0xde67,0xd848,0xde68,0xd848,0xde69, - 0xd848,0xde6a,0xd848,0xde6b,0xd848,0xde6c,0xd848,0xde6d,0xd848,0xde6e, - 0xd848,0xde6f,0xd848,0xde70,0xd848,0xde71,0xd848,0xde72,0xd848,0xde73, - 0xd848,0xde74,0xd848,0xde75,0xd848,0xde76,0xd848,0xde77,0xd848,0xde78, - 0xd848,0xde79,0xd848,0xde7a,0xd848,0xde7b,0xd848,0xde7c,0xd848,0xde7d, - 0xd848,0xde7e,0xd848,0xde7f,0xd848,0xde80,0xd848,0xde81,0xd848,0xde82, - 0xd848,0xde83,0xd848,0xde84,0xd848,0xde85,0xd848,0xde86,0xd848,0xde87, - 0xd848,0xde88,0xd848,0xde89,0xd848,0xde8a,0xd848,0xde8b,0xd848,0xde8c, - 0xd848,0xde8d,0xd848,0xde8e,0xd848,0xde8f,0xd848,0xde90,0xd848,0xde91, - 0xd848,0xde92,0xd848,0xde93,0xd848,0xde94,0xd848,0xde95,0xd848,0xde96, - 0xd848,0xde97,0xd848,0xde98,0xd848,0xde99,0xd848,0xde9a,0xd848,0xde9b, - 0xd848,0xde9c,0xd848,0xde9d,0xd848,0xde9e,0xd848,0xde9f,0xd848,0xdea0, - 0xd848,0xdea1,0xd848,0xdea2,0xd848,0xdea3,0xd848,0xdea4,0xd848,0xdea5, - 0xd848,0xdea6,0xd848,0xdea7,0xd848,0xdea8,0xd848,0xdea9,0xd848,0xdeaa, - 0xd848,0xdeab,0xd848,0xdeac,0xd848,0xdead,0xd848,0xdeae,0xd848,0xdeaf, - 0xd848,0xdeb0,0xd848,0xdeb1,0xd848,0xdeb2,0xd848,0xdeb3,0xd848,0xdeb4, - 0xd848,0xdeb5,0xd848,0xdeb6,0xd848,0xdeb7,0xd848,0xdeb8,0xd848,0xdeb9, - 0xd848,0xdeba,0xd848,0xdebb,0xd848,0xdebc,0xd848,0xdebd,0xd848,0xdebe, - 0xd848,0xdebf,0xd848,0xdec0,0xd848,0xdec1,0xd848,0xdec2,0xd848,0xdec3, - 0xd848,0xdec4,0xd848,0xdec5,0xd848,0xdec6,0xd848,0xdec7,0xd848,0xdec8, - 0xd848,0xdec9,0xd848,0xdeca,0xd848,0xdecb,0xd848,0xdecc,0xd848,0xdecd, - 0xd848,0xdece,0xd848,0xdecf,0xd848,0xded0,0xd848,0xded1,0xd848,0xded2, - 0xd848,0xded3,0xd848,0xded4,0xd848,0xded5,0xd848,0xded6,0xd848,0xded7, - 0xd848,0xded8,0xd848,0xded9,0xd848,0xdeda,0xd848,0xdedb,0xd848,0xdedc, - 0xd848,0xdedd,0xd848,0xdede,0xd848,0xdedf,0xd848,0xdee0,0xd848,0xdee1, - 0xd848,0xdee2,0xd848,0xdee3,0xd848,0xdee4,0xd848,0xdee5,0xd848,0xdee6, - 0xd848,0xdee7,0xd848,0xdee8,0xd848,0xdee9,0xd848,0xdeea,0xd848,0xdeeb, - 0xd848,0xdeec,0xd848,0xdeed,0xd848,0xdeee,0xd848,0xdeef,0xd848,0xdef0, - 0xd848,0xdef1,0xd848,0xdef2,0xd848,0xdef3,0xd848,0xdef4,0xd848,0xdef5, - 0xd848,0xdef6,0xd848,0xdef7,0xd848,0xdef8,0xd848,0xdef9,0xd848,0xdefa, - 0xd848,0xdefb,0xd848,0xdefc,0xd848,0xdefd,0xd848,0xdefe,0xd848,0xdeff, - 0xd848,0xdf00,0xd848,0xdf01,0xd848,0xdf02,0xd848,0xdf03,0xd848,0xdf04, - 0xd848,0xdf05,0xd848,0xdf06,0xd848,0xdf07,0xd848,0xdf08,0xd848,0xdf09, - 0xd848,0xdf0a,0xd848,0xdf0b,0xd848,0xdf0c,0xd848,0xdf0d,0xd848,0xdf0e, - 0xd848,0xdf0f,0xd848,0xdf10,0xd848,0xdf11,0xd848,0xdf12,0xd848,0xdf13, - 0xd848,0xdf14,0xd848,0xdf15,0xd848,0xdf16,0xd848,0xdf17,0xd848,0xdf18, - 0xd848,0xdf19,0xd848,0xdf1a,0xd848,0xdf1b,0xd848,0xdf1c,0xd848,0xdf1d, - 0xd848,0xdf1e,0xd848,0xdf1f,0xd848,0xdf20,0xd848,0xdf21,0xd848,0xdf22, - 0xd848,0xdf23,0xd848,0xdf24,0xd848,0xdf25,0xd848,0xdf26,0xd848,0xdf27, - 0xd848,0xdf28,0xd848,0xdf29,0xd848,0xdf2a,0xd848,0xdf2b,0xd848,0xdf2c, - 0xd848,0xdf2d,0xd848,0xdf2e,0xd848,0xdf2f,0xd848,0xdf30,0xd848,0xdf31, - 0xd848,0xdf32,0xd848,0xdf33,0xd848,0xdf34,0xd848,0xdf35,0xd848,0xdf36, - 0xd848,0xdf37,0xd848,0xdf38,0xd848,0xdf39,0xd848,0xdf3a,0xd848,0xdf3b, - 0xd848,0xdf3c,0xd848,0xdf3d,0xd848,0xdf3e,0xd848,0xdf3f,0xd848,0xdf40, - 0xd848,0xdf41,0xd848,0xdf42,0xd848,0xdf43,0xd848,0xdf44,0xd848,0xdf45, - 0xd848,0xdf46,0xd848,0xdf47,0xd848,0xdf48,0xd848,0xdf49,0xd848,0xdf4a, - 0xd848,0xdf4b,0xd848,0xdf4c,0xd848,0xdf4d,0xd848,0xdf4e,0xd848,0xdf4f, - 0xd848,0xdf50,0xd848,0xdf51,0xd848,0xdf52,0xd848,0xdf53,0xd848,0xdf54, - 0xd848,0xdf55,0xd848,0xdf56,0xd848,0xdf57,0xd848,0xdf58,0xd848,0xdf59, - 0xd848,0xdf5a,0xd848,0xdf5b,0xd848,0xdf5c,0xd848,0xdf5d,0xd848,0xdf5e, - 0xd848,0xdf5f,0xd848,0xdf60,0xd848,0xdf61,0xd848,0xdf62,0xd848,0xdf63, - 0xd848,0xdf64,0xd848,0xdf65,0xd848,0xdf66,0xd848,0xdf67,0xd848,0xdf68, - 0xd848,0xdf69,0xd848,0xdf6a,0xd848,0xdf6b,0xd848,0xdf6c,0xd848,0xdf6d, - 0xd848,0xdf6e,0xd848,0xdf6f,0xd848,0xdf70,0xd848,0xdf71,0xd848,0xdf72, - 0xd848,0xdf73,0xd848,0xdf74,0xd848,0xdf75,0xd848,0xdf76,0xd848,0xdf77, - 0xd848,0xdf78,0xd848,0xdf79,0xd848,0xdf7a,0xd848,0xdf7b,0xd848,0xdf7c, - 0xd848,0xdf7d,0xd848,0xdf7e,0xd848,0xdf7f,0xd848,0xdf80,0xd848,0xdf81, - 0xd848,0xdf82,0xd848,0xdf83,0xd848,0xdf84,0xd848,0xdf85,0xd848,0xdf86, - 0xd848,0xdf87,0xd848,0xdf88,0xd848,0xdf89,0xd848,0xdf8a,0xd848,0xdf8b, - 0xd848,0xdf8c,0xd848,0xdf8d,0xd848,0xdf8e,0xd848,0xdf8f,0xd848,0xdf90, - 0xd848,0xdf91,0xd848,0xdf92,0xd848,0xdf93,0xd848,0xdf94,0xd848,0xdf95, - 0xd848,0xdf96,0xd848,0xdf97,0xd848,0xdf98,0xd848,0xdf99,0xd848,0xdf9a, - 0xd848,0xdf9b,0xd848,0xdf9c,0xd848,0xdf9d,0xd848,0xdf9e,0xd848,0xdf9f, - 0xd848,0xdfa0,0xd848,0xdfa1,0xd848,0xdfa2,0xd848,0xdfa3,0xd848,0xdfa4, - 0xd848,0xdfa5,0xd848,0xdfa6,0xd848,0xdfa7,0xd848,0xdfa8,0xd848,0xdfa9, - 0xd848,0xdfaa,0xd848,0xdfab,0xd848,0xdfac,0xd848,0xdfad,0xd848,0xdfae, - 0xd848,0xdfaf,0xd848,0xdfb0,0xd848,0xdfb1,0xd848,0xdfb2,0xd848,0xdfb3, - 0xd848,0xdfb4,0xd848,0xdfb5,0xd848,0xdfb6,0xd848,0xdfb7,0xd848,0xdfb8, - 0xd848,0xdfb9,0xd848,0xdfba,0xd848,0xdfbb,0xd848,0xdfbc,0xd848,0xdfbd, - 0xd848,0xdfbe,0xd848,0xdfbf,0xd848,0xdfc0,0xd848,0xdfc1,0xd848,0xdfc2, - 0xd848,0xdfc3,0xd848,0xdfc4,0xd848,0xdfc5,0xd848,0xdfc6,0xd848,0xdfc7, - 0xd848,0xdfc8,0xd848,0xdfc9,0xd848,0xdfca,0xd848,0xdfcb,0xd848,0xdfcc, - 0xd848,0xdfcd,0xd848,0xdfce,0xd848,0xdfcf,0xd848,0xdfd0,0xd848,0xdfd1, - 0xd848,0xdfd2,0xd848,0xdfd3,0xd848,0xdfd4,0xd848,0xdfd5,0xd848,0xdfd6, - 0xd848,0xdfd7,0xd848,0xdfd8,0xd848,0xdfd9,0xd848,0xdfda,0xd848,0xdfdb, - 0xd848,0xdfdc,0xd848,0xdfdd,0xd848,0xdfde,0xd848,0xdfdf,0xd848,0xdfe0, - 0xd848,0xdfe1,0xd848,0xdfe2,0xd848,0xdfe3,0xd848,0xdfe4,0xd848,0xdfe5, - 0xd848,0xdfe6,0xd848,0xdfe7,0xd848,0xdfe8,0xd848,0xdfe9,0xd848,0xdfea, - 0xd848,0xdfeb,0xd848,0xdfec,0xd848,0xdfed,0xd848,0xdfee,0xd848,0xdfef, - 0xd848,0xdff0,0xd848,0xdff1,0xd848,0xdff2,0xd848,0xdff3,0xd848,0xdff4, - 0xd848,0xdff5,0xd848,0xdff6,0xd848,0xdff7,0xd848,0xdff8,0xd848,0xdff9, - 0xd848,0xdffa,0xd848,0xdffb,0xd848,0xdffc,0xd848,0xdffd,0xd848,0xdffe, - 0xd848,0xdfff,0xd849,0xdc00,0xd849,0xdc01,0xd849,0xdc02,0xd849,0xdc03, - 0xd849,0xdc04,0xd849,0xdc05,0xd849,0xdc06,0xd849,0xdc07,0xd849,0xdc08, - 0xd849,0xdc09,0xd849,0xdc0a,0xd849,0xdc0b,0xd849,0xdc0c,0xd849,0xdc0d, - 0xd849,0xdc0e,0xd849,0xdc0f,0xd849,0xdc10,0xd849,0xdc11,0xd849,0xdc12, - 0xd849,0xdc13,0xd849,0xdc14,0xd849,0xdc15,0xd849,0xdc16,0xd849,0xdc17, - 0xd849,0xdc18,0xd849,0xdc19,0xd849,0xdc1a,0xd849,0xdc1b,0xd849,0xdc1c, - 0xd849,0xdc1d,0xd849,0xdc1e,0xd849,0xdc1f,0xd849,0xdc20,0xd849,0xdc21, - 0xd849,0xdc22,0xd849,0xdc23,0xd849,0xdc24,0xd849,0xdc25,0xd849,0xdc26, - 0xd849,0xdc27,0xd849,0xdc28,0xd849,0xdc29,0xd849,0xdc2a,0xd849,0xdc2b, - 0xd849,0xdc2c,0xd849,0xdc2d,0xd849,0xdc2e,0xd849,0xdc2f,0xd849,0xdc30, - 0xd849,0xdc31,0xd849,0xdc32,0xd849,0xdc33,0xd849,0xdc34,0xd849,0xdc35, - 0xd849,0xdc36,0xd849,0xdc37,0xd849,0xdc38,0xd849,0xdc39,0xd849,0xdc3a, - 0xd849,0xdc3b,0xd849,0xdc3c,0xd849,0xdc3d,0xd849,0xdc3e,0xd849,0xdc3f, - 0xd849,0xdc40,0xd849,0xdc41,0xd849,0xdc42,0xd849,0xdc43,0xd849,0xdc44, - 0xd849,0xdc45,0xd849,0xdc46,0xd849,0xdc47,0xd849,0xdc48,0xd849,0xdc49, - 0xd849,0xdc4a,0xd849,0xdc4b,0xd849,0xdc4c,0xd849,0xdc4d,0xd849,0xdc4e, - 0xd849,0xdc4f,0xd849,0xdc50,0xd849,0xdc51,0xd849,0xdc52,0xd849,0xdc53, - 0xd849,0xdc54,0xd849,0xdc55,0xd849,0xdc56,0xd849,0xdc57,0xd849,0xdc58, - 0xd849,0xdc59,0xd849,0xdc5a,0xd849,0xdc5b,0xd849,0xdc5c,0xd849,0xdc5d, - 0xd849,0xdc5e,0xd849,0xdc5f,0xd849,0xdc60,0xd849,0xdc61,0xd849,0xdc62, - 0xd849,0xdc63,0xd849,0xdc64,0xd849,0xdc65,0xd849,0xdc66,0xd849,0xdc67, - 0xd849,0xdc68,0xd849,0xdc69,0xd849,0xdc6a,0xd849,0xdc6b,0xd849,0xdc6c, - 0xd849,0xdc6d,0xd849,0xdc6e,0xd849,0xdc6f,0xd849,0xdc70,0xd849,0xdc71, - 0xd849,0xdc72,0xd849,0xdc73,0xd849,0xdc74,0xd849,0xdc75,0xd849,0xdc76, - 0xd849,0xdc77,0xd849,0xdc78,0xd849,0xdc79,0xd849,0xdc7a,0xd849,0xdc7b, - 0xd849,0xdc7c,0xd849,0xdc7d,0xd849,0xdc7e,0xd849,0xdc7f,0xd849,0xdc80, - 0xd849,0xdc81,0xd849,0xdc82,0xd849,0xdc83,0xd849,0xdc84,0xd849,0xdc85, - 0xd849,0xdc86,0xd849,0xdc87,0xd849,0xdc88,0xd849,0xdc89,0xd849,0xdc8a, - 0xd849,0xdc8b,0xd849,0xdc8c,0xd849,0xdc8d,0xd849,0xdc8e,0xd849,0xdc8f, - 0xd849,0xdc90,0xd849,0xdc91,0xd849,0xdc92,0xd849,0xdc93,0xd849,0xdc94, - 0xd849,0xdc95,0xd849,0xdc96,0xd849,0xdc97,0xd849,0xdc98,0xd849,0xdc99, - 0xd849,0xdc9a,0xd849,0xdc9b,0xd849,0xdc9c,0xd849,0xdc9d,0xd849,0xdc9e, - 0xd849,0xdc9f,0xd849,0xdca0,0xd849,0xdca1,0xd849,0xdca2,0xd849,0xdca3, - 0xd849,0xdca4,0xd849,0xdca5,0xd849,0xdca6,0xd849,0xdca7,0xd849,0xdca8, - 0xd849,0xdca9,0xd849,0xdcaa,0xd849,0xdcab,0xd849,0xdcac,0xd849,0xdcad, - 0xd849,0xdcae,0xd849,0xdcaf,0xd849,0xdcb0,0xd849,0xdcb1,0xd849,0xdcb2, - 0xd849,0xdcb3,0xd849,0xdcb4,0xd849,0xdcb5,0xd849,0xdcb6,0xd849,0xdcb7, - 0xd849,0xdcb8,0xd849,0xdcb9,0xd849,0xdcba,0xd849,0xdcbb,0xd849,0xdcbc, - 0xd849,0xdcbd,0xd849,0xdcbe,0xd849,0xdcbf,0xd849,0xdcc0,0xd849,0xdcc1, - 0xd849,0xdcc2,0xd849,0xdcc3,0xd849,0xdcc4,0xd849,0xdcc5,0xd849,0xdcc6, - 0xd849,0xdcc7,0xd849,0xdcc8,0xd849,0xdcc9,0xd849,0xdcca,0xd849,0xdccb, - 0xd849,0xdccc,0xd849,0xdccd,0xd849,0xdcce,0xd849,0xdccf,0xd849,0xdcd0, - 0xd849,0xdcd1,0xd849,0xdcd2,0xd849,0xdcd3,0xd849,0xdcd4,0xd849,0xdcd5, - 0xd849,0xdcd6,0xd849,0xdcd7,0xd849,0xdcd8,0xd849,0xdcd9,0xd849,0xdcda, - 0xd849,0xdcdb,0xd849,0xdcdc,0xd849,0xdcdd,0xd849,0xdcde,0xd849,0xdcdf, - 0xd849,0xdce0,0xd849,0xdce1,0xd849,0xdce2,0xd849,0xdce3,0xd849,0xdce4, - 0xd849,0xdce5,0xd849,0xdce6,0xd849,0xdce7,0xd849,0xdce8,0xd849,0xdce9, - 0xd849,0xdcea,0xd849,0xdceb,0xd849,0xdcec,0xd849,0xdced,0xd849,0xdcee, - 0xd849,0xdcef,0xd849,0xdcf0,0xd849,0xdcf1,0xd849,0xdcf2,0xd849,0xdcf3, - 0xd849,0xdcf4,0xd849,0xdcf5,0xd849,0xdcf6,0xd849,0xdcf7,0xd849,0xdcf8, - 0xd849,0xdcf9,0xd849,0xdcfa,0xd849,0xdcfb,0xd849,0xdcfc,0xd849,0xdcfd, - 0xd849,0xdcfe,0xd849,0xdcff,0xd849,0xdd00,0xd849,0xdd01,0xd849,0xdd02, - 0xd849,0xdd03,0xd849,0xdd04,0xd849,0xdd05,0xd849,0xdd06,0xd849,0xdd07, - 0xd849,0xdd08,0xd849,0xdd09,0xd849,0xdd0a,0xd849,0xdd0b,0xd849,0xdd0c, - 0xd849,0xdd0d,0xd849,0xdd0e,0xd849,0xdd0f,0xd849,0xdd10,0xd849,0xdd11, - 0xd849,0xdd12,0xd849,0xdd13,0xd849,0xdd14,0xd849,0xdd15,0xd849,0xdd16, - 0xd849,0xdd17,0xd849,0xdd18,0xd849,0xdd19,0xd849,0xdd1a,0xd849,0xdd1b, - 0xd849,0xdd1c,0xd849,0xdd1d,0xd849,0xdd1e,0xd849,0xdd1f,0xd849,0xdd20, - 0xd849,0xdd21,0xd849,0xdd22,0xd849,0xdd23,0xd849,0xdd24,0xd849,0xdd25, - 0xd849,0xdd26,0xd849,0xdd27,0xd849,0xdd28,0xd849,0xdd29,0xd849,0xdd2a, - 0xd849,0xdd2b,0xd849,0xdd2c,0xd849,0xdd2d,0xd849,0xdd2e,0xd849,0xdd2f, - 0xd849,0xdd30,0xd849,0xdd31,0xd849,0xdd32,0xd849,0xdd33,0xd849,0xdd34, - 0xd849,0xdd35,0xd849,0xdd36,0xd849,0xdd37,0xd849,0xdd38,0xd849,0xdd39, - 0xd849,0xdd3a,0xd849,0xdd3b,0xd849,0xdd3c,0xd849,0xdd3d,0xd849,0xdd3e, - 0xd849,0xdd3f,0xd849,0xdd40,0xd849,0xdd41,0xd849,0xdd42,0xd849,0xdd43, - 0xd849,0xdd44,0xd849,0xdd45,0xd849,0xdd46,0xd849,0xdd47,0xd849,0xdd48, - 0xd849,0xdd49,0xd849,0xdd4a,0xd849,0xdd4b,0xd849,0xdd4c,0xd849,0xdd4d, - 0xd849,0xdd4e,0xd849,0xdd4f,0xd849,0xdd50,0xd849,0xdd51,0xd849,0xdd52, - 0xd849,0xdd53,0xd849,0xdd54,0xd849,0xdd55,0xd849,0xdd56,0xd849,0xdd57, - 0xd849,0xdd58,0xd849,0xdd59,0xd849,0xdd5a,0xd849,0xdd5b,0xd849,0xdd5c, - 0xd849,0xdd5d,0xd849,0xdd5e,0xd849,0xdd5f,0xd849,0xdd60,0xd849,0xdd61, - 0xd849,0xdd62,0xd849,0xdd63,0xd849,0xdd64,0xd849,0xdd65,0xd849,0xdd66, - 0xd849,0xdd67,0xd849,0xdd68,0xd849,0xdd69,0xd849,0xdd6a,0xd849,0xdd6b, - 0xd849,0xdd6c,0xd849,0xdd6d,0xd849,0xdd6e,0xd849,0xdd6f,0xd849,0xdd70, - 0xd849,0xdd71,0xd849,0xdd72,0xd849,0xdd73,0xd849,0xdd74,0xd849,0xdd75, - 0xd849,0xdd76,0xd849,0xdd77,0xd849,0xdd78,0xd849,0xdd79,0xd849,0xdd7a, - 0xd849,0xdd7b,0xd849,0xdd7c,0xd849,0xdd7d,0xd849,0xdd7e,0xd849,0xdd7f, - 0xd849,0xdd80,0xd849,0xdd81,0xd849,0xdd82,0xd849,0xdd83,0xd849,0xdd84, - 0xd849,0xdd85,0xd849,0xdd86,0xd849,0xdd87,0xd849,0xdd88,0xd849,0xdd89, - 0xd849,0xdd8a,0xd849,0xdd8b,0xd849,0xdd8c,0xd849,0xdd8d,0xd849,0xdd8e, - 0xd849,0xdd8f,0xd849,0xdd90,0xd849,0xdd91,0xd849,0xdd92,0xd849,0xdd93, - 0xd849,0xdd94,0xd849,0xdd95,0xd849,0xdd96,0xd849,0xdd97,0xd849,0xdd98, - 0xd849,0xdd99,0xd849,0xdd9a,0xd849,0xdd9b,0xd849,0xdd9c,0xd849,0xdd9d, - 0xd849,0xdd9e,0xd849,0xdd9f,0xd849,0xdda0,0xd849,0xdda1,0xd849,0xdda2, - 0xd849,0xdda3,0xd849,0xdda4,0xd849,0xdda5,0xd849,0xdda6,0xd849,0xdda7, - 0xd849,0xdda8,0xd849,0xdda9,0xd849,0xddaa,0xd849,0xddab,0xd849,0xddac, - 0xd849,0xddad,0xd849,0xddae,0xd849,0xddaf,0xd849,0xddb0,0xd849,0xddb1, - 0xd849,0xddb2,0xd849,0xddb3,0xd849,0xddb4,0xd849,0xddb5,0xd849,0xddb6, - 0xd849,0xddb7,0xd849,0xddb8,0xd849,0xddb9,0xd849,0xddba,0xd849,0xddbb, - 0xd849,0xddbc,0xd849,0xddbd,0xd849,0xddbe,0xd849,0xddbf,0xd849,0xddc0, - 0xd849,0xddc1,0xd849,0xddc2,0xd849,0xddc3,0xd849,0xddc4,0xd849,0xddc5, - 0xd849,0xddc6,0xd849,0xddc7,0xd849,0xddc8,0xd849,0xddc9,0xd849,0xddca, - 0xd849,0xddcb,0xd849,0xddcc,0xd849,0xddcd,0xd849,0xddce,0xd849,0xddcf, - 0xd849,0xddd0,0xd849,0xddd1,0xd849,0xddd2,0xd849,0xddd3,0xd849,0xddd4, - 0xd849,0xddd5,0xd849,0xddd6,0xd849,0xddd7,0xd849,0xddd8,0xd849,0xddd9, - 0xd849,0xddda,0xd849,0xdddb,0xd849,0xdddc,0xd849,0xdddd,0xd849,0xddde, - 0xd849,0xdddf,0xd849,0xdde0,0xd849,0xdde1,0xd849,0xdde2,0xd849,0xdde3, - 0xd849,0xdde4,0xd849,0xdde5,0xd849,0xdde6,0xd849,0xdde7,0xd849,0xdde8, - 0xd849,0xdde9,0xd849,0xddea,0xd849,0xddeb,0xd849,0xddec,0xd849,0xdded, - 0xd849,0xddee,0xd849,0xddef,0xd849,0xddf0,0xd849,0xddf1,0xd849,0xddf2, - 0xd849,0xddf3,0xd849,0xddf4,0xd849,0xddf5,0xd849,0xddf6,0xd849,0xddf7, - 0xd849,0xddf8,0xd849,0xddf9,0xd849,0xddfa,0xd849,0xddfb,0xd849,0xddfc, - 0xd849,0xddfd,0xd849,0xddfe,0xd849,0xddff,0xd849,0xde00,0xd849,0xde01, - 0xd849,0xde02,0xd849,0xde03,0xd849,0xde04,0xd849,0xde05,0xd849,0xde06, - 0xd849,0xde07,0xd849,0xde08,0xd849,0xde09,0xd849,0xde0a,0xd849,0xde0b, - 0xd849,0xde0c,0xd849,0xde0d,0xd849,0xde0e,0xd849,0xde0f,0xd849,0xde10, - 0xd849,0xde11,0xd849,0xde12,0xd849,0xde13,0xd849,0xde14,0xd849,0xde15, - 0xd849,0xde16,0xd849,0xde17,0xd849,0xde18,0xd849,0xde19,0xd849,0xde1a, - 0xd849,0xde1b,0xd849,0xde1c,0xd849,0xde1d,0xd849,0xde1e,0xd849,0xde1f, - 0xd849,0xde20,0xd849,0xde21,0xd849,0xde22,0xd849,0xde23,0xd849,0xde24, - 0xd849,0xde25,0xd849,0xde26,0xd849,0xde27,0xd849,0xde28,0xd849,0xde29, - 0xd849,0xde2a,0xd849,0xde2b,0xd849,0xde2c,0xd849,0xde2d,0xd849,0xde2e, - 0xd849,0xde2f,0xd849,0xde30,0xd849,0xde31,0xd849,0xde32,0xd849,0xde33, - 0xd849,0xde34,0xd849,0xde35,0xd849,0xde36,0xd849,0xde37,0xd849,0xde38, - 0xd849,0xde39,0xd849,0xde3a,0xd849,0xde3b,0xd849,0xde3c,0xd849,0xde3d, - 0xd849,0xde3e,0xd849,0xde3f,0xd849,0xde40,0xd849,0xde41,0xd849,0xde42, - 0xd849,0xde43,0xd849,0xde44,0xd849,0xde45,0xd849,0xde46,0xd849,0xde47, - 0xd849,0xde48,0xd849,0xde49,0xd849,0xde4a,0xd849,0xde4b,0xd849,0xde4c, - 0xd849,0xde4d,0xd849,0xde4e,0xd849,0xde4f,0xd849,0xde50,0xd849,0xde51, - 0xd849,0xde52,0xd849,0xde53,0xd849,0xde54,0xd849,0xde55,0xd849,0xde56, - 0xd849,0xde57,0xd849,0xde58,0xd849,0xde59,0xd849,0xde5a,0xd849,0xde5b, - 0xd849,0xde5c,0xd849,0xde5d,0xd849,0xde5e,0xd849,0xde5f,0xd849,0xde60, - 0xd849,0xde61,0xd849,0xde62,0xd849,0xde63,0xd849,0xde64,0xd849,0xde65, - 0xd849,0xde66,0xd849,0xde67,0xd849,0xde68,0xd849,0xde69,0xd849,0xde6a, - 0xd849,0xde6b,0xd849,0xde6c,0xd849,0xde6d,0xd849,0xde6e,0xd849,0xde6f, - 0xd849,0xde70,0xd849,0xde71,0xd849,0xde72,0xd849,0xde73,0xd849,0xde74, - 0xd849,0xde75,0xd849,0xde76,0xd849,0xde77,0xd849,0xde78,0xd849,0xde79, - 0xd849,0xde7a,0xd849,0xde7b,0xd849,0xde7c,0xd849,0xde7d,0xd849,0xde7e, - 0xd849,0xde7f,0xd849,0xde80,0xd849,0xde81,0xd849,0xde82,0xd849,0xde83, - 0xd849,0xde84,0xd849,0xde85,0xd849,0xde86,0xd849,0xde87,0xd849,0xde88, - 0xd849,0xde89,0xd849,0xde8a,0xd849,0xde8b,0xd849,0xde8c,0xd849,0xde8d, - 0xd849,0xde8e,0xd849,0xde8f,0xd849,0xde90,0xd849,0xde91,0xd849,0xde92, - 0xd849,0xde93,0xd849,0xde94,0xd849,0xde95,0xd849,0xde96,0xd849,0xde97, - 0xd849,0xde98,0xd849,0xde99,0xd849,0xde9a,0xd849,0xde9b,0xd849,0xde9c, - 0xd849,0xde9d,0xd849,0xde9e,0xd849,0xde9f,0xd849,0xdea0,0xd849,0xdea1, - 0xd849,0xdea2,0xd849,0xdea3,0xd849,0xdea4,0xd849,0xdea5,0xd849,0xdea6, - 0xd849,0xdea7,0xd849,0xdea8,0xd849,0xdea9,0xd849,0xdeaa,0xd849,0xdeab, - 0xd849,0xdeac,0xd849,0xdead,0xd849,0xdeae,0xd849,0xdeaf,0xd849,0xdeb0, - 0xd849,0xdeb1,0xd849,0xdeb2,0xd849,0xdeb3,0xd849,0xdeb4,0xd849,0xdeb5, - 0xd849,0xdeb6,0xd849,0xdeb7,0xd849,0xdeb8,0xd849,0xdeb9,0xd849,0xdeba, - 0xd849,0xdebb,0xd849,0xdebc,0xd849,0xdebd,0xd849,0xdebe,0xd849,0xdebf, - 0xd849,0xdec0,0xd849,0xdec1,0xd849,0xdec2,0xd849,0xdec3,0xd849,0xdec4, - 0xd849,0xdec5,0xd849,0xdec6,0xd849,0xdec7,0xd849,0xdec8,0xd849,0xdec9, - 0xd849,0xdeca,0xd849,0xdecb,0xd849,0xdecc,0xd849,0xdecd,0xd849,0xdece, - 0xd849,0xdecf,0xd849,0xded0,0xd849,0xded1,0xd849,0xded2,0xd849,0xded3, - 0xd849,0xded4,0xd849,0xded5,0xd849,0xded6,0xd849,0xded7,0xd849,0xded8, - 0xd849,0xded9,0xd849,0xdeda,0xd849,0xdedb,0xd849,0xdedc,0xd849,0xdedd, - 0xd849,0xdede,0xd849,0xdedf,0xd849,0xdee0,0xd849,0xdee1,0xd849,0xdee2, - 0xd849,0xdee3,0xd849,0xdee4,0xd849,0xdee5,0xd849,0xdee6,0xd849,0xdee7, - 0xd849,0xdee8,0xd849,0xdee9,0xd849,0xdeea,0xd849,0xdeeb,0xd849,0xdeec, - 0xd849,0xdeed,0xd849,0xdeee,0xd849,0xdeef,0xd849,0xdef0,0xd849,0xdef1, - 0xd849,0xdef2,0xd849,0xdef3,0xd849,0xdef4,0xd849,0xdef5,0xd849,0xdef6, - 0xd849,0xdef7,0xd849,0xdef8,0xd849,0xdef9,0xd849,0xdefa,0xd849,0xdefb, - 0xd849,0xdefc,0xd849,0xdefd,0xd849,0xdefe,0xd849,0xdeff,0xd849,0xdf00, - 0xd849,0xdf01,0xd849,0xdf02,0xd849,0xdf03,0xd849,0xdf04,0xd849,0xdf05, - 0xd849,0xdf06,0xd849,0xdf07,0xd849,0xdf08,0xd849,0xdf09,0xd849,0xdf0a, - 0xd849,0xdf0b,0xd849,0xdf0c,0xd849,0xdf0d,0xd849,0xdf0e,0xd849,0xdf0f, - 0xd849,0xdf10,0xd849,0xdf11,0xd849,0xdf12,0xd849,0xdf13,0xd849,0xdf14, - 0xd849,0xdf15,0xd849,0xdf16,0xd849,0xdf17,0xd849,0xdf18,0xd849,0xdf19, - 0xd849,0xdf1a,0xd849,0xdf1b,0xd849,0xdf1c,0xd849,0xdf1d,0xd849,0xdf1e, - 0xd849,0xdf1f,0xd849,0xdf20,0xd849,0xdf21,0xd849,0xdf22,0xd849,0xdf23, - 0xd849,0xdf24,0xd849,0xdf25,0xd849,0xdf26,0xd849,0xdf27,0xd849,0xdf28, - 0xd849,0xdf29,0xd849,0xdf2a,0xd849,0xdf2b,0xd849,0xdf2c,0xd849,0xdf2d, - 0xd849,0xdf2e,0xd849,0xdf2f,0xd849,0xdf30,0xd849,0xdf31,0xd849,0xdf32, - 0xd849,0xdf33,0xd849,0xdf34,0xd849,0xdf35,0xd849,0xdf36,0xd849,0xdf37, - 0xd849,0xdf38,0xd849,0xdf39,0xd849,0xdf3a,0xd849,0xdf3b,0xd849,0xdf3c, - 0xd849,0xdf3d,0xd849,0xdf3e,0xd849,0xdf3f,0xd849,0xdf40,0xd849,0xdf41, - 0xd849,0xdf42,0xd849,0xdf43,0xd849,0xdf44,0xd849,0xdf45,0xd849,0xdf46, - 0xd849,0xdf47,0xd849,0xdf48,0xd849,0xdf49,0xd849,0xdf4a,0xd849,0xdf4b, - 0xd849,0xdf4c,0xd849,0xdf4d,0xd849,0xdf4e,0xd849,0xdf4f,0xd849,0xdf50, - 0xd849,0xdf51,0xd849,0xdf52,0xd849,0xdf53,0xd849,0xdf54,0xd849,0xdf55, - 0xd849,0xdf56,0xd849,0xdf57,0xd849,0xdf58,0xd849,0xdf59,0xd849,0xdf5a, - 0xd849,0xdf5b,0xd849,0xdf5c,0xd849,0xdf5d,0xd849,0xdf5e,0xd849,0xdf5f, - 0xd849,0xdf60,0xd849,0xdf61,0xd849,0xdf62,0xd849,0xdf63,0xd849,0xdf64, - 0xd849,0xdf65,0xd849,0xdf66,0xd849,0xdf67,0xd849,0xdf68,0xd849,0xdf69, - 0xd849,0xdf6a,0xd849,0xdf6b,0xd849,0xdf6c,0xd849,0xdf6d,0xd849,0xdf6e, - 0xd849,0xdf6f,0xd849,0xdf70,0xd849,0xdf71,0xd849,0xdf72,0xd849,0xdf73, - 0xd849,0xdf74,0xd849,0xdf75,0xd849,0xdf76,0xd849,0xdf77,0xd849,0xdf78, - 0xd849,0xdf79,0xd849,0xdf7a,0xd849,0xdf7b,0xd849,0xdf7c,0xd849,0xdf7d, - 0xd849,0xdf7e,0xd849,0xdf7f,0xd849,0xdf80,0xd849,0xdf81,0xd849,0xdf82, - 0xd849,0xdf83,0xd849,0xdf84,0xd849,0xdf85,0xd849,0xdf86,0xd849,0xdf87, - 0xd849,0xdf88,0xd849,0xdf89,0xd849,0xdf8a,0xd849,0xdf8b,0xd849,0xdf8c, - 0xd849,0xdf8d,0xd849,0xdf8e,0xd849,0xdf8f,0xd849,0xdf90,0xd849,0xdf91, - 0xd849,0xdf92,0xd849,0xdf93,0xd849,0xdf94,0xd849,0xdf95,0xd849,0xdf96, - 0xd849,0xdf97,0xd849,0xdf98,0xd849,0xdf99,0xd849,0xdf9a,0xd849,0xdf9b, - 0xd849,0xdf9c,0xd849,0xdf9d,0xd849,0xdf9e,0xd849,0xdf9f,0xd849,0xdfa0, - 0xd849,0xdfa1,0xd849,0xdfa2,0xd849,0xdfa3,0xd849,0xdfa4,0xd849,0xdfa5, - 0xd849,0xdfa6,0xd849,0xdfa7,0xd849,0xdfa8,0xd849,0xdfa9,0xd849,0xdfaa, - 0xd849,0xdfab,0xd849,0xdfac,0xd849,0xdfad,0xd849,0xdfae,0xd849,0xdfaf, - 0xd849,0xdfb0,0xd849,0xdfb1,0xd849,0xdfb2,0xd849,0xdfb3,0xd849,0xdfb4, - 0xd849,0xdfb5,0xd849,0xdfb6,0xd849,0xdfb7,0xd849,0xdfb8,0xd849,0xdfb9, - 0xd849,0xdfba,0xd849,0xdfbb,0xd849,0xdfbc,0xd849,0xdfbd,0xd849,0xdfbe, - 0xd849,0xdfbf,0xd849,0xdfc0,0xd849,0xdfc1,0xd849,0xdfc2,0xd849,0xdfc3, - 0xd849,0xdfc4,0xd849,0xdfc5,0xd849,0xdfc6,0xd849,0xdfc7,0xd849,0xdfc8, - 0xd849,0xdfc9,0xd849,0xdfca,0xd849,0xdfcb,0xd849,0xdfcc,0xd849,0xdfcd, - 0xd849,0xdfce,0xd849,0xdfcf,0xd849,0xdfd0,0xd849,0xdfd1,0xd849,0xdfd2, - 0xd849,0xdfd3,0xd849,0xdfd4,0xd849,0xdfd5,0xd849,0xdfd6,0xd849,0xdfd7, - 0xd849,0xdfd8,0xd849,0xdfd9,0xd849,0xdfda,0xd849,0xdfdb,0xd849,0xdfdc, - 0xd849,0xdfdd,0xd849,0xdfde,0xd849,0xdfdf,0xd849,0xdfe0,0xd849,0xdfe1, - 0xd849,0xdfe2,0xd849,0xdfe3,0xd849,0xdfe4,0xd849,0xdfe5,0xd849,0xdfe6, - 0xd849,0xdfe7,0xd849,0xdfe8,0xd849,0xdfe9,0xd849,0xdfea,0xd849,0xdfeb, - 0xd849,0xdfec,0xd849,0xdfed,0xd849,0xdfee,0xd849,0xdfef,0xd849,0xdff0, - 0xd849,0xdff1,0xd849,0xdff2,0xd849,0xdff3,0xd849,0xdff4,0xd849,0xdff5, - 0xd849,0xdff6,0xd849,0xdff7,0xd849,0xdff8,0xd849,0xdff9,0xd849,0xdffa, - 0xd849,0xdffb,0xd849,0xdffc,0xd849,0xdffd,0xd849,0xdffe,0xd849,0xdfff, - 0xd84a,0xdc00,0xd84a,0xdc01,0xd84a,0xdc02,0xd84a,0xdc03,0xd84a,0xdc04, - 0xd84a,0xdc05,0xd84a,0xdc06,0xd84a,0xdc07,0xd84a,0xdc08,0xd84a,0xdc09, - 0xd84a,0xdc0a,0xd84a,0xdc0b,0xd84a,0xdc0c,0xd84a,0xdc0d,0xd84a,0xdc0e, - 0xd84a,0xdc0f,0xd84a,0xdc10,0xd84a,0xdc11,0xd84a,0xdc12,0xd84a,0xdc13, - 0xd84a,0xdc14,0xd84a,0xdc15,0xd84a,0xdc16,0xd84a,0xdc17,0xd84a,0xdc18, - 0xd84a,0xdc19,0xd84a,0xdc1a,0xd84a,0xdc1b,0xd84a,0xdc1c,0xd84a,0xdc1d, - 0xd84a,0xdc1e,0xd84a,0xdc1f,0xd84a,0xdc20,0xd84a,0xdc21,0xd84a,0xdc22, - 0xd84a,0xdc23,0xd84a,0xdc24,0xd84a,0xdc25,0xd84a,0xdc26,0xd84a,0xdc27, - 0xd84a,0xdc28,0xd84a,0xdc29,0xd84a,0xdc2a,0xd84a,0xdc2b,0xd84a,0xdc2c, - 0xd84a,0xdc2d,0xd84a,0xdc2e,0xd84a,0xdc2f,0xd84a,0xdc30,0xd84a,0xdc31, - 0xd84a,0xdc32,0xd84a,0xdc33,0xd84a,0xdc34,0xd84a,0xdc35,0xd84a,0xdc36, - 0xd84a,0xdc37,0xd84a,0xdc38,0xd84a,0xdc39,0xd84a,0xdc3a,0xd84a,0xdc3b, - 0xd84a,0xdc3c,0xd84a,0xdc3d,0xd84a,0xdc3e,0xd84a,0xdc3f,0xd84a,0xdc40, - 0xd84a,0xdc41,0xd84a,0xdc42,0xd84a,0xdc43,0xd84a,0xdc44,0xd84a,0xdc45, - 0xd84a,0xdc46,0xd84a,0xdc47,0xd84a,0xdc48,0xd84a,0xdc49,0xd84a,0xdc4a, - 0xd84a,0xdc4b,0xd84a,0xdc4c,0xd84a,0xdc4d,0xd84a,0xdc4e,0xd84a,0xdc4f, - 0xd84a,0xdc50,0xd84a,0xdc51,0xd84a,0xdc52,0xd84a,0xdc53,0xd84a,0xdc54, - 0xd84a,0xdc55,0xd84a,0xdc56,0xd84a,0xdc57,0xd84a,0xdc58,0xd84a,0xdc59, - 0xd84a,0xdc5a,0xd84a,0xdc5b,0xd84a,0xdc5c,0xd84a,0xdc5d,0xd84a,0xdc5e, - 0xd84a,0xdc5f,0xd84a,0xdc60,0xd84a,0xdc61,0xd84a,0xdc62,0xd84a,0xdc63, - 0xd84a,0xdc64,0xd84a,0xdc65,0xd84a,0xdc66,0xd84a,0xdc67,0xd84a,0xdc68, - 0xd84a,0xdc69,0xd84a,0xdc6a,0xd84a,0xdc6b,0xd84a,0xdc6c,0xd84a,0xdc6d, - 0xd84a,0xdc6e,0xd84a,0xdc6f,0xd84a,0xdc70,0xd84a,0xdc71,0xd84a,0xdc72, - 0xd84a,0xdc73,0xd84a,0xdc74,0xd84a,0xdc75,0xd84a,0xdc76,0xd84a,0xdc77, - 0xd84a,0xdc78,0xd84a,0xdc79,0xd84a,0xdc7a,0xd84a,0xdc7b,0xd84a,0xdc7c, - 0xd84a,0xdc7d,0xd84a,0xdc7e,0xd84a,0xdc7f,0xd84a,0xdc80,0xd84a,0xdc81, - 0xd84a,0xdc82,0xd84a,0xdc83,0xd84a,0xdc84,0xd84a,0xdc85,0xd84a,0xdc86, - 0xd84a,0xdc87,0xd84a,0xdc88,0xd84a,0xdc89,0xd84a,0xdc8a,0xd84a,0xdc8b, - 0xd84a,0xdc8c,0xd84a,0xdc8d,0xd84a,0xdc8e,0xd84a,0xdc8f,0xd84a,0xdc90, - 0xd84a,0xdc91,0xd84a,0xdc92,0xd84a,0xdc93,0xd84a,0xdc94,0xd84a,0xdc95, - 0xd84a,0xdc96,0xd84a,0xdc97,0xd84a,0xdc98,0xd84a,0xdc99,0xd84a,0xdc9a, - 0xd84a,0xdc9b,0xd84a,0xdc9c,0xd84a,0xdc9d,0xd84a,0xdc9e,0xd84a,0xdc9f, - 0xd84a,0xdca0,0xd84a,0xdca1,0xd84a,0xdca2,0xd84a,0xdca3,0xd84a,0xdca4, - 0xd84a,0xdca5,0xd84a,0xdca6,0xd84a,0xdca7,0xd84a,0xdca8,0xd84a,0xdca9, - 0xd84a,0xdcaa,0xd84a,0xdcab,0xd84a,0xdcac,0xd84a,0xdcad,0xd84a,0xdcae, - 0xd84a,0xdcaf,0xd84a,0xdcb0,0xd84a,0xdcb1,0xd84a,0xdcb2,0xd84a,0xdcb3, - 0xd84a,0xdcb4,0xd84a,0xdcb5,0xd84a,0xdcb6,0xd84a,0xdcb7,0xd84a,0xdcb8, - 0xd84a,0xdcb9,0xd84a,0xdcba,0xd84a,0xdcbb,0xd84a,0xdcbc,0xd84a,0xdcbd, - 0xd84a,0xdcbe,0xd84a,0xdcbf,0xd84a,0xdcc0,0xd84a,0xdcc1,0xd84a,0xdcc2, - 0xd84a,0xdcc3,0xd84a,0xdcc4,0xd84a,0xdcc5,0xd84a,0xdcc6,0xd84a,0xdcc7, - 0xd84a,0xdcc8,0xd84a,0xdcc9,0xd84a,0xdcca,0xd84a,0xdccb,0xd84a,0xdccc, - 0xd84a,0xdccd,0xd84a,0xdcce,0xd84a,0xdccf,0xd84a,0xdcd0,0xd84a,0xdcd1, - 0xd84a,0xdcd2,0xd84a,0xdcd3,0xd84a,0xdcd4,0xd84a,0xdcd5,0xd84a,0xdcd6, - 0xd84a,0xdcd7,0xd84a,0xdcd8,0xd84a,0xdcd9,0xd84a,0xdcda,0xd84a,0xdcdb, - 0xd84a,0xdcdc,0xd84a,0xdcdd,0xd84a,0xdcde,0xd84a,0xdcdf,0xd84a,0xdce0, - 0xd84a,0xdce1,0xd84a,0xdce2,0xd84a,0xdce3,0xd84a,0xdce4,0xd84a,0xdce5, - 0xd84a,0xdce6,0xd84a,0xdce7,0xd84a,0xdce8,0xd84a,0xdce9,0xd84a,0xdcea, - 0xd84a,0xdceb,0xd84a,0xdcec,0xd84a,0xdced,0xd84a,0xdcee,0xd84a,0xdcef, - 0xd84a,0xdcf0,0xd84a,0xdcf1,0xd84a,0xdcf2,0xd84a,0xdcf3,0xd84a,0xdcf4, - 0xd84a,0xdcf5,0xd84a,0xdcf6,0xd84a,0xdcf7,0xd84a,0xdcf8,0xd84a,0xdcf9, - 0xd84a,0xdcfa,0xd84a,0xdcfb,0xd84a,0xdcfc,0xd84a,0xdcfd,0xd84a,0xdcfe, - 0xd84a,0xdcff,0xd84a,0xdd00,0xd84a,0xdd01,0xd84a,0xdd02,0xd84a,0xdd03, - 0xd84a,0xdd04,0xd84a,0xdd05,0xd84a,0xdd06,0xd84a,0xdd07,0xd84a,0xdd08, - 0xd84a,0xdd09,0xd84a,0xdd0a,0xd84a,0xdd0b,0xd84a,0xdd0c,0xd84a,0xdd0d, - 0xd84a,0xdd0e,0xd84a,0xdd0f,0xd84a,0xdd10,0xd84a,0xdd11,0xd84a,0xdd12, - 0xd84a,0xdd13,0xd84a,0xdd14,0xd84a,0xdd15,0xd84a,0xdd16,0xd84a,0xdd17, - 0xd84a,0xdd18,0xd84a,0xdd19,0xd84a,0xdd1a,0xd84a,0xdd1b,0xd84a,0xdd1c, - 0xd84a,0xdd1d,0xd84a,0xdd1e,0xd84a,0xdd1f,0xd84a,0xdd20,0xd84a,0xdd21, - 0xd84a,0xdd22,0xd84a,0xdd23,0xd84a,0xdd24,0xd84a,0xdd25,0xd84a,0xdd26, - 0xd84a,0xdd27,0xd84a,0xdd28,0xd84a,0xdd29,0xd84a,0xdd2a,0xd84a,0xdd2b, - 0xd84a,0xdd2c,0xd84a,0xdd2d,0xd84a,0xdd2e,0xd84a,0xdd2f,0xd84a,0xdd30, - 0xd84a,0xdd31,0xd84a,0xdd32,0xd84a,0xdd33,0xd84a,0xdd34,0xd84a,0xdd35, - 0xd84a,0xdd36,0xd84a,0xdd37,0xd84a,0xdd38,0xd84a,0xdd39,0xd84a,0xdd3a, - 0xd84a,0xdd3b,0xd84a,0xdd3c,0xd84a,0xdd3d,0xd84a,0xdd3e,0xd84a,0xdd3f, - 0xd84a,0xdd40,0xd84a,0xdd41,0xd84a,0xdd42,0xd84a,0xdd43,0xd84a,0xdd44, - 0xd84a,0xdd45,0xd84a,0xdd46,0xd84a,0xdd47,0xd84a,0xdd48,0xd84a,0xdd49, - 0xd84a,0xdd4a,0xd84a,0xdd4b,0xd84a,0xdd4c,0xd84a,0xdd4d,0xd84a,0xdd4e, - 0xd84a,0xdd4f,0xd84a,0xdd50,0xd84a,0xdd51,0xd84a,0xdd52,0xd84a,0xdd53, - 0xd84a,0xdd54,0xd84a,0xdd55,0xd84a,0xdd56,0xd84a,0xdd57,0xd84a,0xdd58, - 0xd84a,0xdd59,0xd84a,0xdd5a,0xd84a,0xdd5b,0xd84a,0xdd5c,0xd84a,0xdd5d, - 0xd84a,0xdd5e,0xd84a,0xdd5f,0xd84a,0xdd60,0xd84a,0xdd61,0xd84a,0xdd62, - 0xd84a,0xdd63,0xd84a,0xdd64,0xd84a,0xdd65,0xd84a,0xdd66,0xd84a,0xdd67, - 0xd84a,0xdd68,0xd84a,0xdd69,0xd84a,0xdd6a,0xd84a,0xdd6b,0xd84a,0xdd6c, - 0xd84a,0xdd6d,0xd84a,0xdd6e,0xd84a,0xdd6f,0xd84a,0xdd70,0xd84a,0xdd71, - 0xd84a,0xdd72,0xd84a,0xdd73,0xd84a,0xdd74,0xd84a,0xdd75,0xd84a,0xdd76, - 0xd84a,0xdd77,0xd84a,0xdd78,0xd84a,0xdd79,0xd84a,0xdd7a,0xd84a,0xdd7b, - 0xd84a,0xdd7c,0xd84a,0xdd7d,0xd84a,0xdd7e,0xd84a,0xdd7f,0xd84a,0xdd80, - 0xd84a,0xdd81,0xd84a,0xdd82,0xd84a,0xdd83,0xd84a,0xdd84,0xd84a,0xdd85, - 0xd84a,0xdd86,0xd84a,0xdd87,0xd84a,0xdd88,0xd84a,0xdd89,0xd84a,0xdd8a, - 0xd84a,0xdd8b,0xd84a,0xdd8c,0xd84a,0xdd8d,0xd84a,0xdd8e,0xd84a,0xdd8f, - 0xd84a,0xdd90,0xd84a,0xdd91,0xd84a,0xdd92,0xd84a,0xdd93,0xd84a,0xdd94, - 0xd84a,0xdd95,0xd84a,0xdd96,0xd84a,0xdd97,0xd84a,0xdd98,0xd84a,0xdd99, - 0xd84a,0xdd9a,0xd84a,0xdd9b,0xd84a,0xdd9c,0xd84a,0xdd9d,0xd84a,0xdd9e, - 0xd84a,0xdd9f,0xd84a,0xdda0,0xd84a,0xdda1,0xd84a,0xdda2,0xd84a,0xdda3, - 0xd84a,0xdda4,0xd84a,0xdda5,0xd84a,0xdda6,0xd84a,0xdda7,0xd84a,0xdda8, - 0xd84a,0xdda9,0xd84a,0xddaa,0xd84a,0xddab,0xd84a,0xddac,0xd84a,0xddad, - 0xd84a,0xddae,0xd84a,0xddaf,0xd84a,0xddb0,0xd84a,0xddb1,0xd84a,0xddb2, - 0xd84a,0xddb3,0xd84a,0xddb4,0xd84a,0xddb5,0xd84a,0xddb6,0xd84a,0xddb7, - 0xd84a,0xddb8,0xd84a,0xddb9,0xd84a,0xddba,0xd84a,0xddbb,0xd84a,0xddbc, - 0xd84a,0xddbd,0xd84a,0xddbe,0xd84a,0xddbf,0xd84a,0xddc0,0xd84a,0xddc1, - 0xd84a,0xddc2,0xd84a,0xddc3,0xd84a,0xddc4,0xd84a,0xddc5,0xd84a,0xddc6, - 0xd84a,0xddc7,0xd84a,0xddc8,0xd84a,0xddc9,0xd84a,0xddca,0xd84a,0xddcb, - 0xd84a,0xddcc,0xd84a,0xddcd,0xd84a,0xddce,0xd84a,0xddcf,0xd84a,0xddd0, - 0xd84a,0xddd1,0xd84a,0xddd2,0xd84a,0xddd3,0xd84a,0xddd4,0xd84a,0xddd5, - 0xd84a,0xddd6,0xd84a,0xddd7,0xd84a,0xddd8,0xd84a,0xddd9,0xd84a,0xddda, - 0xd84a,0xdddb,0xd84a,0xdddc,0xd84a,0xdddd,0xd84a,0xddde,0xd84a,0xdddf, - 0xd84a,0xdde0,0xd84a,0xdde1,0xd84a,0xdde2,0xd84a,0xdde3,0xd84a,0xdde4, - 0xd84a,0xdde5,0xd84a,0xdde6,0xd84a,0xdde7,0xd84a,0xdde8,0xd84a,0xdde9, - 0xd84a,0xddea,0xd84a,0xddeb,0xd84a,0xddec,0xd84a,0xdded,0xd84a,0xddee, - 0xd84a,0xddef,0xd84a,0xddf0,0xd84a,0xddf1,0xd84a,0xddf2,0xd84a,0xddf3, - 0xd84a,0xddf4,0xd84a,0xddf5,0xd84a,0xddf6,0xd84a,0xddf7,0xd84a,0xddf8, - 0xd84a,0xddf9,0xd84a,0xddfa,0xd84a,0xddfb,0xd84a,0xddfc,0xd84a,0xddfd, - 0xd84a,0xddfe,0xd84a,0xddff,0xd84a,0xde00,0xd84a,0xde01,0xd84a,0xde02, - 0xd84a,0xde03,0xd84a,0xde04,0xd84a,0xde05,0xd84a,0xde06,0xd84a,0xde07, - 0xd84a,0xde08,0xd84a,0xde09,0xd84a,0xde0a,0xd84a,0xde0b,0xd84a,0xde0c, - 0xd84a,0xde0d,0xd84a,0xde0e,0xd84a,0xde0f,0xd84a,0xde10,0xd84a,0xde11, - 0xd84a,0xde12,0xd84a,0xde13,0xd84a,0xde14,0xd84a,0xde15,0xd84a,0xde16, - 0xd84a,0xde17,0xd84a,0xde18,0xd84a,0xde19,0xd84a,0xde1a,0xd84a,0xde1b, - 0xd84a,0xde1c,0xd84a,0xde1d,0xd84a,0xde1e,0xd84a,0xde1f,0xd84a,0xde20, - 0xd84a,0xde21,0xd84a,0xde22,0xd84a,0xde23,0xd84a,0xde24,0xd84a,0xde25, - 0xd84a,0xde26,0xd84a,0xde27,0xd84a,0xde28,0xd84a,0xde29,0xd84a,0xde2a, - 0xd84a,0xde2b,0xd84a,0xde2c,0xd84a,0xde2d,0xd84a,0xde2e,0xd84a,0xde2f, - 0xd84a,0xde30,0xd84a,0xde31,0xd84a,0xde32,0xd84a,0xde33,0xd84a,0xde34, - 0xd84a,0xde35,0xd84a,0xde36,0xd84a,0xde37,0xd84a,0xde38,0xd84a,0xde39, - 0xd84a,0xde3a,0xd84a,0xde3b,0xd84a,0xde3c,0xd84a,0xde3d,0xd84a,0xde3e, - 0xd84a,0xde3f,0xd84a,0xde40,0xd84a,0xde41,0xd84a,0xde42,0xd84a,0xde43, - 0xd84a,0xde44,0xd84a,0xde45,0xd84a,0xde46,0xd84a,0xde47,0xd84a,0xde48, - 0xd84a,0xde49,0xd84a,0xde4a,0xd84a,0xde4b,0xd84a,0xde4c,0xd84a,0xde4d, - 0xd84a,0xde4e,0xd84a,0xde4f,0xd84a,0xde50,0xd84a,0xde51,0xd84a,0xde52, - 0xd84a,0xde53,0xd84a,0xde54,0xd84a,0xde55,0xd84a,0xde56,0xd84a,0xde57, - 0xd84a,0xde58,0xd84a,0xde59,0xd84a,0xde5a,0xd84a,0xde5b,0xd84a,0xde5c, - 0xd84a,0xde5d,0xd84a,0xde5e,0xd84a,0xde5f,0xd84a,0xde60,0xd84a,0xde61, - 0xd84a,0xde62,0xd84a,0xde63,0xd84a,0xde64,0xd84a,0xde65,0xd84a,0xde66, - 0xd84a,0xde67,0xd84a,0xde68,0xd84a,0xde69,0xd84a,0xde6a,0xd84a,0xde6b, - 0xd84a,0xde6c,0xd84a,0xde6d,0xd84a,0xde6e,0xd84a,0xde6f,0xd84a,0xde70, - 0xd84a,0xde71,0xd84a,0xde72,0xd84a,0xde73,0xd84a,0xde74,0xd84a,0xde75, - 0xd84a,0xde76,0xd84a,0xde77,0xd84a,0xde78,0xd84a,0xde79,0xd84a,0xde7a, - 0xd84a,0xde7b,0xd84a,0xde7c,0xd84a,0xde7d,0xd84a,0xde7e,0xd84a,0xde7f, - 0xd84a,0xde80,0xd84a,0xde81,0xd84a,0xde82,0xd84a,0xde83,0xd84a,0xde84, - 0xd84a,0xde85,0xd84a,0xde86,0xd84a,0xde87,0xd84a,0xde88,0xd84a,0xde89, - 0xd84a,0xde8a,0xd84a,0xde8b,0xd84a,0xde8c,0xd84a,0xde8d,0xd84a,0xde8e, - 0xd84a,0xde8f,0xd84a,0xde90,0xd84a,0xde91,0xd84a,0xde92,0xd84a,0xde93, - 0xd84a,0xde94,0xd84a,0xde95,0xd84a,0xde96,0xd84a,0xde97,0xd84a,0xde98, - 0xd84a,0xde99,0xd84a,0xde9a,0xd84a,0xde9b,0xd84a,0xde9c,0xd84a,0xde9d, - 0xd84a,0xde9e,0xd84a,0xde9f,0xd84a,0xdea0,0xd84a,0xdea1,0xd84a,0xdea2, - 0xd84a,0xdea3,0xd84a,0xdea4,0xd84a,0xdea5,0xd84a,0xdea6,0xd84a,0xdea7, - 0xd84a,0xdea8,0xd84a,0xdea9,0xd84a,0xdeaa,0xd84a,0xdeab,0xd84a,0xdeac, - 0xd84a,0xdead,0xd84a,0xdeae,0xd84a,0xdeaf,0xd84a,0xdeb0,0xd84a,0xdeb1, - 0xd84a,0xdeb2,0xd84a,0xdeb3,0xd84a,0xdeb4,0xd84a,0xdeb5,0xd84a,0xdeb6, - 0xd84a,0xdeb7,0xd84a,0xdeb8,0xd84a,0xdeb9,0xd84a,0xdeba,0xd84a,0xdebb, - 0xd84a,0xdebc,0xd84a,0xdebd,0xd84a,0xdebe,0xd84a,0xdebf,0xd84a,0xdec0, - 0xd84a,0xdec1,0xd84a,0xdec2,0xd84a,0xdec3,0xd84a,0xdec4,0xd84a,0xdec5, - 0xd84a,0xdec6,0xd84a,0xdec7,0xd84a,0xdec8,0xd84a,0xdec9,0xd84a,0xdeca, - 0xd84a,0xdecb,0xd84a,0xdecc,0xd84a,0xdecd,0xd84a,0xdece,0xd84a,0xdecf, - 0xd84a,0xded0,0xd84a,0xded1,0xd84a,0xded2,0xd84a,0xded3,0xd84a,0xded4, - 0xd84a,0xded5,0xd84a,0xded6,0xd84a,0xded7,0xd84a,0xded8,0xd84a,0xded9, - 0xd84a,0xdeda,0xd84a,0xdedb,0xd84a,0xdedc,0xd84a,0xdedd,0xd84a,0xdede, - 0xd84a,0xdedf,0xd84a,0xdee0,0xd84a,0xdee1,0xd84a,0xdee2,0xd84a,0xdee3, - 0xd84a,0xdee4,0xd84a,0xdee5,0xd84a,0xdee6,0xd84a,0xdee7,0xd84a,0xdee8, - 0xd84a,0xdee9,0xd84a,0xdeea,0xd84a,0xdeeb,0xd84a,0xdeec,0xd84a,0xdeed, - 0xd84a,0xdeee,0xd84a,0xdeef,0xd84a,0xdef0,0xd84a,0xdef1,0xd84a,0xdef2, - 0xd84a,0xdef3,0xd84a,0xdef4,0xd84a,0xdef5,0xd84a,0xdef6,0xd84a,0xdef7, - 0xd84a,0xdef8,0xd84a,0xdef9,0xd84a,0xdefa,0xd84a,0xdefb,0xd84a,0xdefc, - 0xd84a,0xdefd,0xd84a,0xdefe,0xd84a,0xdeff,0xd84a,0xdf00,0xd84a,0xdf01, - 0xd84a,0xdf02,0xd84a,0xdf03,0xd84a,0xdf04,0xd84a,0xdf05,0xd84a,0xdf06, - 0xd84a,0xdf07,0xd84a,0xdf08,0xd84a,0xdf09,0xd84a,0xdf0a,0xd84a,0xdf0b, - 0xd84a,0xdf0c,0xd84a,0xdf0d,0xd84a,0xdf0e,0xd84a,0xdf0f,0xd84a,0xdf10, - 0xd84a,0xdf11,0xd84a,0xdf12,0xd84a,0xdf13,0xd84a,0xdf14,0xd84a,0xdf15, - 0xd84a,0xdf16,0xd84a,0xdf17,0xd84a,0xdf18,0xd84a,0xdf19,0xd84a,0xdf1a, - 0xd84a,0xdf1b,0xd84a,0xdf1c,0xd84a,0xdf1d,0xd84a,0xdf1e,0xd84a,0xdf1f, - 0xd84a,0xdf20,0xd84a,0xdf21,0xd84a,0xdf22,0xd84a,0xdf23,0xd84a,0xdf24, - 0xd84a,0xdf25,0xd84a,0xdf26,0xd84a,0xdf27,0xd84a,0xdf28,0xd84a,0xdf29, - 0xd84a,0xdf2a,0xd84a,0xdf2b,0xd84a,0xdf2c,0xd84a,0xdf2d,0xd84a,0xdf2e, - 0xd84a,0xdf2f,0xd84a,0xdf30,0xd84a,0xdf31,0xd84a,0xdf32,0xd84a,0xdf33, - 0xd84a,0xdf34,0xd84a,0xdf35,0xd84a,0xdf36,0xd84a,0xdf37,0xd84a,0xdf38, - 0xd84a,0xdf39,0xd84a,0xdf3a,0xd84a,0xdf3b,0xd84a,0xdf3c,0xd84a,0xdf3d, - 0xd84a,0xdf3e,0xd84a,0xdf3f,0xd84a,0xdf40,0xd84a,0xdf41,0xd84a,0xdf42, - 0xd84a,0xdf43,0xd84a,0xdf44,0xd84a,0xdf45,0xd84a,0xdf46,0xd84a,0xdf47, - 0xd84a,0xdf48,0xd84a,0xdf49,0xd84a,0xdf4a,0xd84a,0xdf4b,0xd84a,0xdf4c, - 0xd84a,0xdf4d,0xd84a,0xdf4e,0xd84a,0xdf4f,0xd84a,0xdf50,0xd84a,0xdf51, - 0xd84a,0xdf52,0xd84a,0xdf53,0xd84a,0xdf54,0xd84a,0xdf55,0xd84a,0xdf56, - 0xd84a,0xdf57,0xd84a,0xdf58,0xd84a,0xdf59,0xd84a,0xdf5a,0xd84a,0xdf5b, - 0xd84a,0xdf5c,0xd84a,0xdf5d,0xd84a,0xdf5e,0xd84a,0xdf5f,0xd84a,0xdf60, - 0xd84a,0xdf61,0xd84a,0xdf62,0xd84a,0xdf63,0xd84a,0xdf64,0xd84a,0xdf65, - 0xd84a,0xdf66,0xd84a,0xdf67,0xd84a,0xdf68,0xd84a,0xdf69,0xd84a,0xdf6a, - 0xd84a,0xdf6b,0xd84a,0xdf6c,0xd84a,0xdf6d,0xd84a,0xdf6e,0xd84a,0xdf6f, - 0xd84a,0xdf70,0xd84a,0xdf71,0xd84a,0xdf72,0xd84a,0xdf73,0xd84a,0xdf74, - 0xd84a,0xdf75,0xd84a,0xdf76,0xd84a,0xdf77,0xd84a,0xdf78,0xd84a,0xdf79, - 0xd84a,0xdf7a,0xd84a,0xdf7b,0xd84a,0xdf7c,0xd84a,0xdf7d,0xd84a,0xdf7e, - 0xd84a,0xdf7f,0xd84a,0xdf80,0xd84a,0xdf81,0xd84a,0xdf82,0xd84a,0xdf83, - 0xd84a,0xdf84,0xd84a,0xdf85,0xd84a,0xdf86,0xd84a,0xdf87,0xd84a,0xdf88, - 0xd84a,0xdf89,0xd84a,0xdf8a,0xd84a,0xdf8b,0xd84a,0xdf8c,0xd84a,0xdf8d, - 0xd84a,0xdf8e,0xd84a,0xdf8f,0xd84a,0xdf90,0xd84a,0xdf91,0xd84a,0xdf92, - 0xd84a,0xdf93,0xd84a,0xdf94,0xd84a,0xdf95,0xd84a,0xdf96,0xd84a,0xdf97, - 0xd84a,0xdf98,0xd84a,0xdf99,0xd84a,0xdf9a,0xd84a,0xdf9b,0xd84a,0xdf9c, - 0xd84a,0xdf9d,0xd84a,0xdf9e,0xd84a,0xdf9f,0xd84a,0xdfa0,0xd84a,0xdfa1, - 0xd84a,0xdfa2,0xd84a,0xdfa3,0xd84a,0xdfa4,0xd84a,0xdfa5,0xd84a,0xdfa6, - 0xd84a,0xdfa7,0xd84a,0xdfa8,0xd84a,0xdfa9,0xd84a,0xdfaa,0xd84a,0xdfab, - 0xd84a,0xdfac,0xd84a,0xdfad,0xd84a,0xdfae,0xd84a,0xdfaf,0xd84a,0xdfb0, - 0xd84a,0xdfb1,0xd84a,0xdfb2,0xd84a,0xdfb3,0xd84a,0xdfb4,0xd84a,0xdfb5, - 0xd84a,0xdfb6,0xd84a,0xdfb7,0xd84a,0xdfb8,0xd84a,0xdfb9,0xd84a,0xdfba, - 0xd84a,0xdfbb,0xd84a,0xdfbc,0xd84a,0xdfbd,0xd84a,0xdfbe,0xd84a,0xdfbf, - 0xd84a,0xdfc0,0xd84a,0xdfc1,0xd84a,0xdfc2,0xd84a,0xdfc3,0xd84a,0xdfc4, - 0xd84a,0xdfc5,0xd84a,0xdfc6,0xd84a,0xdfc7,0xd84a,0xdfc8,0xd84a,0xdfc9, - 0xd84a,0xdfca,0xd84a,0xdfcb,0xd84a,0xdfcc,0xd84a,0xdfcd,0xd84a,0xdfce, - 0xd84a,0xdfcf,0xd84a,0xdfd0,0xd84a,0xdfd1,0xd84a,0xdfd2,0xd84a,0xdfd3, - 0xd84a,0xdfd4,0xd84a,0xdfd5,0xd84a,0xdfd6,0xd84a,0xdfd7,0xd84a,0xdfd8, - 0xd84a,0xdfd9,0xd84a,0xdfda,0xd84a,0xdfdb,0xd84a,0xdfdc,0xd84a,0xdfdd, - 0xd84a,0xdfde,0xd84a,0xdfdf,0xd84a,0xdfe0,0xd84a,0xdfe1,0xd84a,0xdfe2, - 0xd84a,0xdfe3,0xd84a,0xdfe4,0xd84a,0xdfe5,0xd84a,0xdfe6,0xd84a,0xdfe7, - 0xd84a,0xdfe8,0xd84a,0xdfe9,0xd84a,0xdfea,0xd84a,0xdfeb,0xd84a,0xdfec, - 0xd84a,0xdfed,0xd84a,0xdfee,0xd84a,0xdfef,0xd84a,0xdff0,0xd84a,0xdff1, - 0xd84a,0xdff2,0xd84a,0xdff3,0xd84a,0xdff4,0xd84a,0xdff5,0xd84a,0xdff6, - 0xd84a,0xdff7,0xd84a,0xdff8,0xd84a,0xdff9,0xd84a,0xdffa,0xd84a,0xdffb, - 0xd84a,0xdffc,0xd84a,0xdffd,0xd84a,0xdffe,0xd84a,0xdfff,0xd84b,0xdc00, - 0xd84b,0xdc01,0xd84b,0xdc02,0xd84b,0xdc03,0xd84b,0xdc04,0xd84b,0xdc05, - 0xd84b,0xdc06,0xd84b,0xdc07,0xd84b,0xdc08,0xd84b,0xdc09,0xd84b,0xdc0a, - 0xd84b,0xdc0b,0xd84b,0xdc0c,0xd84b,0xdc0d,0xd84b,0xdc0e,0xd84b,0xdc0f, - 0xd84b,0xdc10,0xd84b,0xdc11,0xd84b,0xdc12,0xd84b,0xdc13,0xd84b,0xdc14, - 0xd84b,0xdc15,0xd84b,0xdc16,0xd84b,0xdc17,0xd84b,0xdc18,0xd84b,0xdc19, - 0xd84b,0xdc1a,0xd84b,0xdc1b,0xd84b,0xdc1c,0xd84b,0xdc1d,0xd84b,0xdc1e, - 0xd84b,0xdc1f,0xd84b,0xdc20,0xd84b,0xdc21,0xd84b,0xdc22,0xd84b,0xdc23, - 0xd84b,0xdc24,0xd84b,0xdc25,0xd84b,0xdc26,0xd84b,0xdc27,0xd84b,0xdc28, - 0xd84b,0xdc29,0xd84b,0xdc2a,0xd84b,0xdc2b,0xd84b,0xdc2c,0xd84b,0xdc2d, - 0xd84b,0xdc2e,0xd84b,0xdc2f,0xd84b,0xdc30,0xd84b,0xdc31,0xd84b,0xdc32, - 0xd84b,0xdc33,0xd84b,0xdc34,0xd84b,0xdc35,0xd84b,0xdc36,0xd84b,0xdc37, - 0xd84b,0xdc38,0xd84b,0xdc39,0xd84b,0xdc3a,0xd84b,0xdc3b,0xd84b,0xdc3c, - 0xd84b,0xdc3d,0xd84b,0xdc3e,0xd84b,0xdc3f,0xd84b,0xdc40,0xd84b,0xdc41, - 0xd84b,0xdc42,0xd84b,0xdc43,0xd84b,0xdc44,0xd84b,0xdc45,0xd84b,0xdc46, - 0xd84b,0xdc47,0xd84b,0xdc48,0xd84b,0xdc49,0xd84b,0xdc4a,0xd84b,0xdc4b, - 0xd84b,0xdc4c,0xd84b,0xdc4d,0xd84b,0xdc4e,0xd84b,0xdc4f,0xd84b,0xdc50, - 0xd84b,0xdc51,0xd84b,0xdc52,0xd84b,0xdc53,0xd84b,0xdc54,0xd84b,0xdc55, - 0xd84b,0xdc56,0xd84b,0xdc57,0xd84b,0xdc58,0xd84b,0xdc59,0xd84b,0xdc5a, - 0xd84b,0xdc5b,0xd84b,0xdc5c,0xd84b,0xdc5d,0xd84b,0xdc5e,0xd84b,0xdc5f, - 0xd84b,0xdc60,0xd84b,0xdc61,0xd84b,0xdc62,0xd84b,0xdc63,0xd84b,0xdc64, - 0xd84b,0xdc65,0xd84b,0xdc66,0xd84b,0xdc67,0xd84b,0xdc68,0xd84b,0xdc69, - 0xd84b,0xdc6a,0xd84b,0xdc6b,0xd84b,0xdc6c,0xd84b,0xdc6d,0xd84b,0xdc6e, - 0xd84b,0xdc6f,0xd84b,0xdc70,0xd84b,0xdc71,0xd84b,0xdc72,0xd84b,0xdc73, - 0xd84b,0xdc74,0xd84b,0xdc75,0xd84b,0xdc76,0xd84b,0xdc77,0xd84b,0xdc78, - 0xd84b,0xdc79,0xd84b,0xdc7a,0xd84b,0xdc7b,0xd84b,0xdc7c,0xd84b,0xdc7d, - 0xd84b,0xdc7e,0xd84b,0xdc7f,0xd84b,0xdc80,0xd84b,0xdc81,0xd84b,0xdc82, - 0xd84b,0xdc83,0xd84b,0xdc84,0xd84b,0xdc85,0xd84b,0xdc86,0xd84b,0xdc87, - 0xd84b,0xdc88,0xd84b,0xdc89,0xd84b,0xdc8a,0xd84b,0xdc8b,0xd84b,0xdc8c, - 0xd84b,0xdc8d,0xd84b,0xdc8e,0xd84b,0xdc8f,0xd84b,0xdc90,0xd84b,0xdc91, - 0xd84b,0xdc92,0xd84b,0xdc93,0xd84b,0xdc94,0xd84b,0xdc95,0xd84b,0xdc96, - 0xd84b,0xdc97,0xd84b,0xdc98,0xd84b,0xdc99,0xd84b,0xdc9a,0xd84b,0xdc9b, - 0xd84b,0xdc9c,0xd84b,0xdc9d,0xd84b,0xdc9e,0xd84b,0xdc9f,0xd84b,0xdca0, - 0xd84b,0xdca1,0xd84b,0xdca2,0xd84b,0xdca3,0xd84b,0xdca4,0xd84b,0xdca5, - 0xd84b,0xdca6,0xd84b,0xdca7,0xd84b,0xdca8,0xd84b,0xdca9,0xd84b,0xdcaa, - 0xd84b,0xdcab,0xd84b,0xdcac,0xd84b,0xdcad,0xd84b,0xdcae,0xd84b,0xdcaf, - 0xd84b,0xdcb0,0xd84b,0xdcb1,0xd84b,0xdcb2,0xd84b,0xdcb3,0xd84b,0xdcb4, - 0xd84b,0xdcb5,0xd84b,0xdcb6,0xd84b,0xdcb7,0xd84b,0xdcb8,0xd84b,0xdcb9, - 0xd84b,0xdcba,0xd84b,0xdcbb,0xd84b,0xdcbc,0xd84b,0xdcbd,0xd84b,0xdcbe, - 0xd84b,0xdcbf,0xd84b,0xdcc0,0xd84b,0xdcc1,0xd84b,0xdcc2,0xd84b,0xdcc3, - 0xd84b,0xdcc4,0xd84b,0xdcc5,0xd84b,0xdcc6,0xd84b,0xdcc7,0xd84b,0xdcc8, - 0xd84b,0xdcc9,0xd84b,0xdcca,0xd84b,0xdccb,0xd84b,0xdccc,0xd84b,0xdccd, - 0xd84b,0xdcce,0xd84b,0xdccf,0xd84b,0xdcd0,0xd84b,0xdcd1,0xd84b,0xdcd2, - 0xd84b,0xdcd3,0xd84b,0xdcd4,0xd84b,0xdcd5,0xd84b,0xdcd6,0xd84b,0xdcd7, - 0xd84b,0xdcd8,0xd84b,0xdcd9,0xd84b,0xdcda,0xd84b,0xdcdb,0xd84b,0xdcdc, - 0xd84b,0xdcdd,0xd84b,0xdcde,0xd84b,0xdcdf,0xd84b,0xdce0,0xd84b,0xdce1, - 0xd84b,0xdce2,0xd84b,0xdce3,0xd84b,0xdce4,0xd84b,0xdce5,0xd84b,0xdce6, - 0xd84b,0xdce7,0xd84b,0xdce8,0xd84b,0xdce9,0xd84b,0xdcea,0xd84b,0xdceb, - 0xd84b,0xdcec,0xd84b,0xdced,0xd84b,0xdcee,0xd84b,0xdcef,0xd84b,0xdcf0, - 0xd84b,0xdcf1,0xd84b,0xdcf2,0xd84b,0xdcf3,0xd84b,0xdcf4,0xd84b,0xdcf5, - 0xd84b,0xdcf6,0xd84b,0xdcf7,0xd84b,0xdcf8,0xd84b,0xdcf9,0xd84b,0xdcfa, - 0xd84b,0xdcfb,0xd84b,0xdcfc,0xd84b,0xdcfd,0xd84b,0xdcfe,0xd84b,0xdcff, - 0xd84b,0xdd00,0xd84b,0xdd01,0xd84b,0xdd02,0xd84b,0xdd03,0xd84b,0xdd04, - 0xd84b,0xdd05,0xd84b,0xdd06,0xd84b,0xdd07,0xd84b,0xdd08,0xd84b,0xdd09, - 0xd84b,0xdd0a,0xd84b,0xdd0b,0xd84b,0xdd0c,0xd84b,0xdd0d,0xd84b,0xdd0e, - 0xd84b,0xdd0f,0xd84b,0xdd10,0xd84b,0xdd11,0xd84b,0xdd12,0xd84b,0xdd13, - 0xd84b,0xdd14,0xd84b,0xdd15,0xd84b,0xdd16,0xd84b,0xdd17,0xd84b,0xdd18, - 0xd84b,0xdd19,0xd84b,0xdd1a,0xd84b,0xdd1b,0xd84b,0xdd1c,0xd84b,0xdd1d, - 0xd84b,0xdd1e,0xd84b,0xdd1f,0xd84b,0xdd20,0xd84b,0xdd21,0xd84b,0xdd22, - 0xd84b,0xdd23,0xd84b,0xdd24,0xd84b,0xdd25,0xd84b,0xdd26,0xd84b,0xdd27, - 0xd84b,0xdd28,0xd84b,0xdd29,0xd84b,0xdd2a,0xd84b,0xdd2b,0xd84b,0xdd2c, - 0xd84b,0xdd2d,0xd84b,0xdd2e,0xd84b,0xdd2f,0xd84b,0xdd30,0xd84b,0xdd31, - 0xd84b,0xdd32,0xd84b,0xdd33,0xd84b,0xdd34,0xd84b,0xdd35,0xd84b,0xdd36, - 0xd84b,0xdd37,0xd84b,0xdd38,0xd84b,0xdd39,0xd84b,0xdd3a,0xd84b,0xdd3b, - 0xd84b,0xdd3c,0xd84b,0xdd3d,0xd84b,0xdd3e,0xd84b,0xdd3f,0xd84b,0xdd40, - 0xd84b,0xdd41,0xd84b,0xdd42,0xd84b,0xdd43,0xd84b,0xdd44,0xd84b,0xdd45, - 0xd84b,0xdd46,0xd84b,0xdd47,0xd84b,0xdd48,0xd84b,0xdd49,0xd84b,0xdd4a, - 0xd84b,0xdd4b,0xd84b,0xdd4c,0xd84b,0xdd4d,0xd84b,0xdd4e,0xd84b,0xdd4f, - 0xd84b,0xdd50,0xd84b,0xdd51,0xd84b,0xdd52,0xd84b,0xdd53,0xd84b,0xdd54, - 0xd84b,0xdd55,0xd84b,0xdd56,0xd84b,0xdd57,0xd84b,0xdd58,0xd84b,0xdd59, - 0xd84b,0xdd5a,0xd84b,0xdd5b,0xd84b,0xdd5c,0xd84b,0xdd5d,0xd84b,0xdd5e, - 0xd84b,0xdd5f,0xd84b,0xdd60,0xd84b,0xdd61,0xd84b,0xdd62,0xd84b,0xdd63, - 0xd84b,0xdd64,0xd84b,0xdd65,0xd84b,0xdd66,0xd84b,0xdd67,0xd84b,0xdd68, - 0xd84b,0xdd69,0xd84b,0xdd6a,0xd84b,0xdd6b,0xd84b,0xdd6c,0xd84b,0xdd6d, - 0xd84b,0xdd6e,0xd84b,0xdd6f,0xd84b,0xdd70,0xd84b,0xdd71,0xd84b,0xdd72, - 0xd84b,0xdd73,0xd84b,0xdd74,0xd84b,0xdd75,0xd84b,0xdd76,0xd84b,0xdd77, - 0xd84b,0xdd78,0xd84b,0xdd79,0xd84b,0xdd7a,0xd84b,0xdd7b,0xd84b,0xdd7c, - 0xd84b,0xdd7d,0xd84b,0xdd7e,0xd84b,0xdd7f,0xd84b,0xdd80,0xd84b,0xdd81, - 0xd84b,0xdd82,0xd84b,0xdd83,0xd84b,0xdd84,0xd84b,0xdd85,0xd84b,0xdd86, - 0xd84b,0xdd87,0xd84b,0xdd88,0xd84b,0xdd89,0xd84b,0xdd8a,0xd84b,0xdd8b, - 0xd84b,0xdd8c,0xd84b,0xdd8d,0xd84b,0xdd8e,0xd84b,0xdd8f,0xd84b,0xdd90, - 0xd84b,0xdd91,0xd84b,0xdd92,0xd84b,0xdd93,0xd84b,0xdd94,0xd84b,0xdd95, - 0xd84b,0xdd96,0xd84b,0xdd97,0xd84b,0xdd98,0xd84b,0xdd99,0xd84b,0xdd9a, - 0xd84b,0xdd9b,0xd84b,0xdd9c,0xd84b,0xdd9d,0xd84b,0xdd9e,0xd84b,0xdd9f, - 0xd84b,0xdda0,0xd84b,0xdda1,0xd84b,0xdda2,0xd84b,0xdda3,0xd84b,0xdda4, - 0xd84b,0xdda5,0xd84b,0xdda6,0xd84b,0xdda7,0xd84b,0xdda8,0xd84b,0xdda9, - 0xd84b,0xddaa,0xd84b,0xddab,0xd84b,0xddac,0xd84b,0xddad,0xd84b,0xddae, - 0xd84b,0xddaf,0xd84b,0xddb0,0xd84b,0xddb1,0xd84b,0xddb2,0xd84b,0xddb3, - 0xd84b,0xddb4,0xd84b,0xddb5,0xd84b,0xddb6,0xd84b,0xddb7,0xd84b,0xddb8, - 0xd84b,0xddb9,0xd84b,0xddba,0xd84b,0xddbb,0xd84b,0xddbc,0xd84b,0xddbd, - 0xd84b,0xddbe,0xd84b,0xddbf,0xd84b,0xddc0,0xd84b,0xddc1,0xd84b,0xddc2, - 0xd84b,0xddc3,0xd84b,0xddc4,0xd84b,0xddc5,0xd84b,0xddc6,0xd84b,0xddc7, - 0xd84b,0xddc8,0xd84b,0xddc9,0xd84b,0xddca,0xd84b,0xddcb,0xd84b,0xddcc, - 0xd84b,0xddcd,0xd84b,0xddce,0xd84b,0xddcf,0xd84b,0xddd0,0xd84b,0xddd1, - 0xd84b,0xddd2,0xd84b,0xddd3,0xd84b,0xddd4,0xd84b,0xddd5,0xd84b,0xddd6, - 0xd84b,0xddd7,0xd84b,0xddd8,0xd84b,0xddd9,0xd84b,0xddda,0xd84b,0xdddb, - 0xd84b,0xdddc,0xd84b,0xdddd,0xd84b,0xddde,0xd84b,0xdddf,0xd84b,0xdde0, - 0xd84b,0xdde1,0xd84b,0xdde2,0xd84b,0xdde3,0xd84b,0xdde4,0xd84b,0xdde5, - 0xd84b,0xdde6,0xd84b,0xdde7,0xd84b,0xdde8,0xd84b,0xdde9,0xd84b,0xddea, - 0xd84b,0xddeb,0xd84b,0xddec,0xd84b,0xdded,0xd84b,0xddee,0xd84b,0xddef, - 0xd84b,0xddf0,0xd84b,0xddf1,0xd84b,0xddf2,0xd84b,0xddf3,0xd84b,0xddf4, - 0xd84b,0xddf5,0xd84b,0xddf6,0xd84b,0xddf7,0xd84b,0xddf8,0xd84b,0xddf9, - 0xd84b,0xddfa,0xd84b,0xddfb,0xd84b,0xddfc,0xd84b,0xddfd,0xd84b,0xddfe, - 0xd84b,0xddff,0xd84b,0xde00,0xd84b,0xde01,0xd84b,0xde02,0xd84b,0xde03, - 0xd84b,0xde04,0xd84b,0xde05,0xd84b,0xde06,0xd84b,0xde07,0xd84b,0xde08, - 0xd84b,0xde09,0xd84b,0xde0a,0xd84b,0xde0b,0xd84b,0xde0c,0xd84b,0xde0d, - 0xd84b,0xde0e,0xd84b,0xde0f,0xd84b,0xde10,0xd84b,0xde11,0xd84b,0xde12, - 0xd84b,0xde13,0xd84b,0xde14,0xd84b,0xde15,0xd84b,0xde16,0xd84b,0xde17, - 0xd84b,0xde18,0xd84b,0xde19,0xd84b,0xde1a,0xd84b,0xde1b,0xd84b,0xde1c, - 0xd84b,0xde1d,0xd84b,0xde1e,0xd84b,0xde1f,0xd84b,0xde20,0xd84b,0xde21, - 0xd84b,0xde22,0xd84b,0xde23,0xd84b,0xde24,0xd84b,0xde25,0xd84b,0xde26, - 0xd84b,0xde27,0xd84b,0xde28,0xd84b,0xde29,0xd84b,0xde2a,0xd84b,0xde2b, - 0xd84b,0xde2c,0xd84b,0xde2d,0xd84b,0xde2e,0xd84b,0xde2f,0xd84b,0xde30, - 0xd84b,0xde31,0xd84b,0xde32,0xd84b,0xde33,0xd84b,0xde34,0xd84b,0xde35, - 0xd84b,0xde36,0xd84b,0xde37,0xd84b,0xde38,0xd84b,0xde39,0xd84b,0xde3a, - 0xd84b,0xde3b,0xd84b,0xde3c,0xd84b,0xde3d,0xd84b,0xde3e,0xd84b,0xde3f, - 0xd84b,0xde40,0xd84b,0xde41,0xd84b,0xde42,0xd84b,0xde43,0xd84b,0xde44, - 0xd84b,0xde45,0xd84b,0xde46,0xd84b,0xde47,0xd84b,0xde48,0xd84b,0xde49, - 0xd84b,0xde4a,0xd84b,0xde4b,0xd84b,0xde4c,0xd84b,0xde4d,0xd84b,0xde4e, - 0xd84b,0xde4f,0xd84b,0xde50,0xd84b,0xde51,0xd84b,0xde52,0xd84b,0xde53, - 0xd84b,0xde54,0xd84b,0xde55,0xd84b,0xde56,0xd84b,0xde57,0xd84b,0xde58, - 0xd84b,0xde59,0xd84b,0xde5a,0xd84b,0xde5b,0xd84b,0xde5c,0xd84b,0xde5d, - 0xd84b,0xde5e,0xd84b,0xde5f,0xd84b,0xde60,0xd84b,0xde61,0xd84b,0xde62, - 0xd84b,0xde63,0xd84b,0xde64,0xd84b,0xde65,0xd84b,0xde66,0xd84b,0xde67, - 0xd84b,0xde68,0xd84b,0xde69,0xd84b,0xde6a,0xd84b,0xde6b,0xd84b,0xde6c, - 0xd84b,0xde6d,0xd84b,0xde6e,0xd84b,0xde6f,0xd84b,0xde70,0xd84b,0xde71, - 0xd84b,0xde72,0xd84b,0xde73,0xd84b,0xde74,0xd84b,0xde75,0xd84b,0xde76, - 0xd84b,0xde77,0xd84b,0xde78,0xd84b,0xde79,0xd84b,0xde7a,0xd84b,0xde7b, - 0xd84b,0xde7c,0xd84b,0xde7d,0xd84b,0xde7e,0xd84b,0xde7f,0xd84b,0xde80, - 0xd84b,0xde81,0xd84b,0xde82,0xd84b,0xde83,0xd84b,0xde84,0xd84b,0xde85, - 0xd84b,0xde86,0xd84b,0xde87,0xd84b,0xde88,0xd84b,0xde89,0xd84b,0xde8a, - 0xd84b,0xde8b,0xd84b,0xde8c,0xd84b,0xde8d,0xd84b,0xde8e,0xd84b,0xde8f, - 0xd84b,0xde90,0xd84b,0xde91,0xd84b,0xde92,0xd84b,0xde93,0xd84b,0xde94, - 0xd84b,0xde95,0xd84b,0xde96,0xd84b,0xde97,0xd84b,0xde98,0xd84b,0xde99, - 0xd84b,0xde9a,0xd84b,0xde9b,0xd84b,0xde9c,0xd84b,0xde9d,0xd84b,0xde9e, - 0xd84b,0xde9f,0xd84b,0xdea0,0xd84b,0xdea1,0xd84b,0xdea2,0xd84b,0xdea3, - 0xd84b,0xdea4,0xd84b,0xdea5,0xd84b,0xdea6,0xd84b,0xdea7,0xd84b,0xdea8, - 0xd84b,0xdea9,0xd84b,0xdeaa,0xd84b,0xdeab,0xd84b,0xdeac,0xd84b,0xdead, - 0xd84b,0xdeae,0xd84b,0xdeaf,0xd84b,0xdeb0,0xd84b,0xdeb1,0xd84b,0xdeb2, - 0xd84b,0xdeb3,0xd84b,0xdeb4,0xd84b,0xdeb5,0xd84b,0xdeb6,0xd84b,0xdeb7, - 0xd84b,0xdeb8,0xd84b,0xdeb9,0xd84b,0xdeba,0xd84b,0xdebb,0xd84b,0xdebc, - 0xd84b,0xdebd,0xd84b,0xdebe,0xd84b,0xdebf,0xd84b,0xdec0,0xd84b,0xdec1, - 0xd84b,0xdec2,0xd84b,0xdec3,0xd84b,0xdec4,0xd84b,0xdec5,0xd84b,0xdec6, - 0xd84b,0xdec7,0xd84b,0xdec8,0xd84b,0xdec9,0xd84b,0xdeca,0xd84b,0xdecb, - 0xd84b,0xdecc,0xd84b,0xdecd,0xd84b,0xdece,0xd84b,0xdecf,0xd84b,0xded0, - 0xd84b,0xded1,0xd84b,0xded2,0xd84b,0xded3,0xd84b,0xded4,0xd84b,0xded5, - 0xd84b,0xded6,0xd84b,0xded7,0xd84b,0xded8,0xd84b,0xded9,0xd84b,0xdeda, - 0xd84b,0xdedb,0xd84b,0xdedc,0xd84b,0xdedd,0xd84b,0xdede,0xd84b,0xdedf, - 0xd84b,0xdee0,0xd84b,0xdee1,0xd84b,0xdee2,0xd84b,0xdee3,0xd84b,0xdee4, - 0xd84b,0xdee5,0xd84b,0xdee6,0xd84b,0xdee7,0xd84b,0xdee8,0xd84b,0xdee9, - 0xd84b,0xdeea,0xd84b,0xdeeb,0xd84b,0xdeec,0xd84b,0xdeed,0xd84b,0xdeee, - 0xd84b,0xdeef,0xd84b,0xdef0,0xd84b,0xdef1,0xd84b,0xdef2,0xd84b,0xdef3, - 0xd84b,0xdef4,0xd84b,0xdef5,0xd84b,0xdef6,0xd84b,0xdef7,0xd84b,0xdef8, - 0xd84b,0xdef9,0xd84b,0xdefa,0xd84b,0xdefb,0xd84b,0xdefc,0xd84b,0xdefd, - 0xd84b,0xdefe,0xd84b,0xdeff,0xd84b,0xdf00,0xd84b,0xdf01,0xd84b,0xdf02, - 0xd84b,0xdf03,0xd84b,0xdf04,0xd84b,0xdf05,0xd84b,0xdf06,0xd84b,0xdf07, - 0xd84b,0xdf08,0xd84b,0xdf09,0xd84b,0xdf0a,0xd84b,0xdf0b,0xd84b,0xdf0c, - 0xd84b,0xdf0d,0xd84b,0xdf0e,0xd84b,0xdf0f,0xd84b,0xdf10,0xd84b,0xdf11, - 0xd84b,0xdf12,0xd84b,0xdf13,0xd84b,0xdf14,0xd84b,0xdf15,0xd84b,0xdf16, - 0xd84b,0xdf17,0xd84b,0xdf18,0xd84b,0xdf19,0xd84b,0xdf1a,0xd84b,0xdf1b, - 0xd84b,0xdf1c,0xd84b,0xdf1d,0xd84b,0xdf1e,0xd84b,0xdf1f,0xd84b,0xdf20, - 0xd84b,0xdf21,0xd84b,0xdf22,0xd84b,0xdf23,0xd84b,0xdf24,0xd84b,0xdf25, - 0xd84b,0xdf26,0xd84b,0xdf27,0xd84b,0xdf28,0xd84b,0xdf29,0xd84b,0xdf2a, - 0xd84b,0xdf2b,0xd84b,0xdf2c,0xd84b,0xdf2d,0xd84b,0xdf2e,0xd84b,0xdf2f, - 0xd84b,0xdf30,0xd84b,0xdf31,0xd84b,0xdf32,0xd84b,0xdf33,0xd84b,0xdf34, - 0xd84b,0xdf35,0xd84b,0xdf36,0xd84b,0xdf37,0xd84b,0xdf38,0xd84b,0xdf39, - 0xd84b,0xdf3a,0xd84b,0xdf3b,0xd84b,0xdf3c,0xd84b,0xdf3d,0xd84b,0xdf3e, - 0xd84b,0xdf3f,0xd84b,0xdf40,0xd84b,0xdf41,0xd84b,0xdf42,0xd84b,0xdf43, - 0xd84b,0xdf44,0xd84b,0xdf45,0xd84b,0xdf46,0xd84b,0xdf47,0xd84b,0xdf48, - 0xd84b,0xdf49,0xd84b,0xdf4a,0xd84b,0xdf4b,0xd84b,0xdf4c,0xd84b,0xdf4d, - 0xd84b,0xdf4e,0xd84b,0xdf4f,0xd84b,0xdf50,0xd84b,0xdf51,0xd84b,0xdf52, - 0xd84b,0xdf53,0xd84b,0xdf54,0xd84b,0xdf55,0xd84b,0xdf56,0xd84b,0xdf57, - 0xd84b,0xdf58,0xd84b,0xdf59,0xd84b,0xdf5a,0xd84b,0xdf5b,0xd84b,0xdf5c, - 0xd84b,0xdf5d,0xd84b,0xdf5e,0xd84b,0xdf5f,0xd84b,0xdf60,0xd84b,0xdf61, - 0xd84b,0xdf62,0xd84b,0xdf63,0xd84b,0xdf64,0xd84b,0xdf65,0xd84b,0xdf66, - 0xd84b,0xdf67,0xd84b,0xdf68,0xd84b,0xdf69,0xd84b,0xdf6a,0xd84b,0xdf6b, - 0xd84b,0xdf6c,0xd84b,0xdf6d,0xd84b,0xdf6e,0xd84b,0xdf6f,0xd84b,0xdf70, - 0xd84b,0xdf71,0xd84b,0xdf72,0xd84b,0xdf73,0xd84b,0xdf74,0xd84b,0xdf75, - 0xd84b,0xdf76,0xd84b,0xdf77,0xd84b,0xdf78,0xd84b,0xdf79,0xd84b,0xdf7a, - 0xd84b,0xdf7b,0xd84b,0xdf7c,0xd84b,0xdf7d,0xd84b,0xdf7e,0xd84b,0xdf7f, - 0xd84b,0xdf80,0xd84b,0xdf81,0xd84b,0xdf82,0xd84b,0xdf83,0xd84b,0xdf84, - 0xd84b,0xdf85,0xd84b,0xdf86,0xd84b,0xdf87,0xd84b,0xdf88,0xd84b,0xdf89, - 0xd84b,0xdf8a,0xd84b,0xdf8b,0xd84b,0xdf8c,0xd84b,0xdf8d,0xd84b,0xdf8e, - 0xd84b,0xdf8f,0xd84b,0xdf90,0xd84b,0xdf91,0xd84b,0xdf92,0xd84b,0xdf93, - 0xd84b,0xdf94,0xd84b,0xdf95,0xd84b,0xdf96,0xd84b,0xdf97,0xd84b,0xdf98, - 0xd84b,0xdf99,0xd84b,0xdf9a,0xd84b,0xdf9b,0xd84b,0xdf9c,0xd84b,0xdf9d, - 0xd84b,0xdf9e,0xd84b,0xdf9f,0xd84b,0xdfa0,0xd84b,0xdfa1,0xd84b,0xdfa2, - 0xd84b,0xdfa3,0xd84b,0xdfa4,0xd84b,0xdfa5,0xd84b,0xdfa6,0xd84b,0xdfa7, - 0xd84b,0xdfa8,0xd84b,0xdfa9,0xd84b,0xdfaa,0xd84b,0xdfab,0xd84b,0xdfac, - 0xd84b,0xdfad,0xd84b,0xdfae,0xd84b,0xdfaf,0xd84b,0xdfb0,0xd84b,0xdfb1, - 0xd84b,0xdfb2,0xd84b,0xdfb3,0xd84b,0xdfb4,0xd84b,0xdfb5,0xd84b,0xdfb6, - 0xd84b,0xdfb7,0xd84b,0xdfb8,0xd84b,0xdfb9,0xd84b,0xdfba,0xd84b,0xdfbb, - 0xd84b,0xdfbc,0xd84b,0xdfbd,0xd84b,0xdfbe,0xd84b,0xdfbf,0xd84b,0xdfc0, - 0xd84b,0xdfc1,0xd84b,0xdfc2,0xd84b,0xdfc3,0xd84b,0xdfc4,0xd84b,0xdfc5, - 0xd84b,0xdfc6,0xd84b,0xdfc7,0xd84b,0xdfc8,0xd84b,0xdfc9,0xd84b,0xdfca, - 0xd84b,0xdfcb,0xd84b,0xdfcc,0xd84b,0xdfcd,0xd84b,0xdfce,0xd84b,0xdfcf, - 0xd84b,0xdfd0,0xd84b,0xdfd1,0xd84b,0xdfd2,0xd84b,0xdfd3,0xd84b,0xdfd4, - 0xd84b,0xdfd5,0xd84b,0xdfd6,0xd84b,0xdfd7,0xd84b,0xdfd8,0xd84b,0xdfd9, - 0xd84b,0xdfda,0xd84b,0xdfdb,0xd84b,0xdfdc,0xd84b,0xdfdd,0xd84b,0xdfde, - 0xd84b,0xdfdf,0xd84b,0xdfe0,0xd84b,0xdfe1,0xd84b,0xdfe2,0xd84b,0xdfe3, - 0xd84b,0xdfe4,0xd84b,0xdfe5,0xd84b,0xdfe6,0xd84b,0xdfe7,0xd84b,0xdfe8, - 0xd84b,0xdfe9,0xd84b,0xdfea,0xd84b,0xdfeb,0xd84b,0xdfec,0xd84b,0xdfed, - 0xd84b,0xdfee,0xd84b,0xdfef,0xd84b,0xdff0,0xd84b,0xdff1,0xd84b,0xdff2, - 0xd84b,0xdff3,0xd84b,0xdff4,0xd84b,0xdff5,0xd84b,0xdff6,0xd84b,0xdff7, - 0xd84b,0xdff8,0xd84b,0xdff9,0xd84b,0xdffa,0xd84b,0xdffb,0xd84b,0xdffc, - 0xd84b,0xdffd,0xd84b,0xdffe,0xd84b,0xdfff,0xd84c,0xdc00,0xd84c,0xdc01, - 0xd84c,0xdc02,0xd84c,0xdc03,0xd84c,0xdc04,0xd84c,0xdc05,0xd84c,0xdc06, - 0xd84c,0xdc07,0xd84c,0xdc08,0xd84c,0xdc09,0xd84c,0xdc0a,0xd84c,0xdc0b, - 0xd84c,0xdc0c,0xd84c,0xdc0d,0xd84c,0xdc0e,0xd84c,0xdc0f,0xd84c,0xdc10, - 0xd84c,0xdc11,0xd84c,0xdc12,0xd84c,0xdc13,0xd84c,0xdc14,0xd84c,0xdc15, - 0xd84c,0xdc16,0xd84c,0xdc17,0xd84c,0xdc18,0xd84c,0xdc19,0xd84c,0xdc1a, - 0xd84c,0xdc1b,0xd84c,0xdc1c,0xd84c,0xdc1d,0xd84c,0xdc1e,0xd84c,0xdc1f, - 0xd84c,0xdc20,0xd84c,0xdc21,0xd84c,0xdc22,0xd84c,0xdc23,0xd84c,0xdc24, - 0xd84c,0xdc25,0xd84c,0xdc26,0xd84c,0xdc27,0xd84c,0xdc28,0xd84c,0xdc29, - 0xd84c,0xdc2a,0xd84c,0xdc2b,0xd84c,0xdc2c,0xd84c,0xdc2d,0xd84c,0xdc2e, - 0xd84c,0xdc2f,0xd84c,0xdc30,0xd84c,0xdc31,0xd84c,0xdc32,0xd84c,0xdc33, - 0xd84c,0xdc34,0xd84c,0xdc35,0xd84c,0xdc36,0xd84c,0xdc37,0xd84c,0xdc38, - 0xd84c,0xdc39,0xd84c,0xdc3a,0xd84c,0xdc3b,0xd84c,0xdc3c,0xd84c,0xdc3d, - 0xd84c,0xdc3e,0xd84c,0xdc3f,0xd84c,0xdc40,0xd84c,0xdc41,0xd84c,0xdc42, - 0xd84c,0xdc43,0xd84c,0xdc44,0xd84c,0xdc45,0xd84c,0xdc46,0xd84c,0xdc47, - 0xd84c,0xdc48,0xd84c,0xdc49,0xd84c,0xdc4a,0xd84c,0xdc4b,0xd84c,0xdc4c, - 0xd84c,0xdc4d,0xd84c,0xdc4e,0xd84c,0xdc4f,0xd84c,0xdc50,0xd84c,0xdc51, - 0xd84c,0xdc52,0xd84c,0xdc53,0xd84c,0xdc54,0xd84c,0xdc55,0xd84c,0xdc56, - 0xd84c,0xdc57,0xd84c,0xdc58,0xd84c,0xdc59,0xd84c,0xdc5a,0xd84c,0xdc5b, - 0xd84c,0xdc5c,0xd84c,0xdc5d,0xd84c,0xdc5e,0xd84c,0xdc5f,0xd84c,0xdc60, - 0xd84c,0xdc61,0xd84c,0xdc62,0xd84c,0xdc63,0xd84c,0xdc64,0xd84c,0xdc65, - 0xd84c,0xdc66,0xd84c,0xdc67,0xd84c,0xdc68,0xd84c,0xdc69,0xd84c,0xdc6a, - 0xd84c,0xdc6b,0xd84c,0xdc6c,0xd84c,0xdc6d,0xd84c,0xdc6e,0xd84c,0xdc6f, - 0xd84c,0xdc70,0xd84c,0xdc71,0xd84c,0xdc72,0xd84c,0xdc73,0xd84c,0xdc74, - 0xd84c,0xdc75,0xd84c,0xdc76,0xd84c,0xdc77,0xd84c,0xdc78,0xd84c,0xdc79, - 0xd84c,0xdc7a,0xd84c,0xdc7b,0xd84c,0xdc7c,0xd84c,0xdc7d,0xd84c,0xdc7e, - 0xd84c,0xdc7f,0xd84c,0xdc80,0xd84c,0xdc81,0xd84c,0xdc82,0xd84c,0xdc83, - 0xd84c,0xdc84,0xd84c,0xdc85,0xd84c,0xdc86,0xd84c,0xdc87,0xd84c,0xdc88, - 0xd84c,0xdc89,0xd84c,0xdc8a,0xd84c,0xdc8b,0xd84c,0xdc8c,0xd84c,0xdc8d, - 0xd84c,0xdc8e,0xd84c,0xdc8f,0xd84c,0xdc90,0xd84c,0xdc91,0xd84c,0xdc92, - 0xd84c,0xdc93,0xd84c,0xdc94,0xd84c,0xdc95,0xd84c,0xdc96,0xd84c,0xdc97, - 0xd84c,0xdc98,0xd84c,0xdc99,0xd84c,0xdc9a,0xd84c,0xdc9b,0xd84c,0xdc9c, - 0xd84c,0xdc9d,0xd84c,0xdc9e,0xd84c,0xdc9f,0xd84c,0xdca0,0xd84c,0xdca1, - 0xd84c,0xdca2,0xd84c,0xdca3,0xd84c,0xdca4,0xd84c,0xdca5,0xd84c,0xdca6, - 0xd84c,0xdca7,0xd84c,0xdca8,0xd84c,0xdca9,0xd84c,0xdcaa,0xd84c,0xdcab, - 0xd84c,0xdcac,0xd84c,0xdcad,0xd84c,0xdcae,0xd84c,0xdcaf,0xd84c,0xdcb0, - 0xd84c,0xdcb1,0xd84c,0xdcb2,0xd84c,0xdcb3,0xd84c,0xdcb4,0xd84c,0xdcb5, - 0xd84c,0xdcb6,0xd84c,0xdcb7,0xd84c,0xdcb8,0xd84c,0xdcb9,0xd84c,0xdcba, - 0xd84c,0xdcbb,0xd84c,0xdcbc,0xd84c,0xdcbd,0xd84c,0xdcbe,0xd84c,0xdcbf, - 0xd84c,0xdcc0,0xd84c,0xdcc1,0xd84c,0xdcc2,0xd84c,0xdcc3,0xd84c,0xdcc4, - 0xd84c,0xdcc5,0xd84c,0xdcc6,0xd84c,0xdcc7,0xd84c,0xdcc8,0xd84c,0xdcc9, - 0xd84c,0xdcca,0xd84c,0xdccb,0xd84c,0xdccc,0xd84c,0xdccd,0xd84c,0xdcce, - 0xd84c,0xdccf,0xd84c,0xdcd0,0xd84c,0xdcd1,0xd84c,0xdcd2,0xd84c,0xdcd3, - 0xd84c,0xdcd4,0xd84c,0xdcd5,0xd84c,0xdcd6,0xd84c,0xdcd7,0xd84c,0xdcd8, - 0xd84c,0xdcd9,0xd84c,0xdcda,0xd84c,0xdcdb,0xd84c,0xdcdc,0xd84c,0xdcdd, - 0xd84c,0xdcde,0xd84c,0xdcdf,0xd84c,0xdce0,0xd84c,0xdce1,0xd84c,0xdce2, - 0xd84c,0xdce3,0xd84c,0xdce4,0xd84c,0xdce5,0xd84c,0xdce6,0xd84c,0xdce7, - 0xd84c,0xdce8,0xd84c,0xdce9,0xd84c,0xdcea,0xd84c,0xdceb,0xd84c,0xdcec, - 0xd84c,0xdced,0xd84c,0xdcee,0xd84c,0xdcef,0xd84c,0xdcf0,0xd84c,0xdcf1, - 0xd84c,0xdcf2,0xd84c,0xdcf3,0xd84c,0xdcf4,0xd84c,0xdcf5,0xd84c,0xdcf6, - 0xd84c,0xdcf7,0xd84c,0xdcf8,0xd84c,0xdcf9,0xd84c,0xdcfa,0xd84c,0xdcfb, - 0xd84c,0xdcfc,0xd84c,0xdcfd,0xd84c,0xdcfe,0xd84c,0xdcff,0xd84c,0xdd00, - 0xd84c,0xdd01,0xd84c,0xdd02,0xd84c,0xdd03,0xd84c,0xdd04,0xd84c,0xdd05, - 0xd84c,0xdd06,0xd84c,0xdd07,0xd84c,0xdd08,0xd84c,0xdd09,0xd84c,0xdd0a, - 0xd84c,0xdd0b,0xd84c,0xdd0c,0xd84c,0xdd0d,0xd84c,0xdd0e,0xd84c,0xdd0f, - 0xd84c,0xdd10,0xd84c,0xdd11,0xd84c,0xdd12,0xd84c,0xdd13,0xd84c,0xdd14, - 0xd84c,0xdd15,0xd84c,0xdd16,0xd84c,0xdd17,0xd84c,0xdd18,0xd84c,0xdd19, - 0xd84c,0xdd1a,0xd84c,0xdd1b,0xd84c,0xdd1c,0xd84c,0xdd1d,0xd84c,0xdd1e, - 0xd84c,0xdd1f,0xd84c,0xdd20,0xd84c,0xdd21,0xd84c,0xdd22,0xd84c,0xdd23, - 0xd84c,0xdd24,0xd84c,0xdd25,0xd84c,0xdd26,0xd84c,0xdd27,0xd84c,0xdd28, - 0xd84c,0xdd29,0xd84c,0xdd2a,0xd84c,0xdd2b,0xd84c,0xdd2c,0xd84c,0xdd2d, - 0xd84c,0xdd2e,0xd84c,0xdd2f,0xd84c,0xdd30,0xd84c,0xdd31,0xd84c,0xdd32, - 0xd84c,0xdd33,0xd84c,0xdd34,0xd84c,0xdd35,0xd84c,0xdd36,0xd84c,0xdd37, - 0xd84c,0xdd38,0xd84c,0xdd39,0xd84c,0xdd3a,0xd84c,0xdd3b,0xd84c,0xdd3c, - 0xd84c,0xdd3d,0xd84c,0xdd3e,0xd84c,0xdd3f,0xd84c,0xdd40,0xd84c,0xdd41, - 0xd84c,0xdd42,0xd84c,0xdd43,0xd84c,0xdd44,0xd84c,0xdd45,0xd84c,0xdd46, - 0xd84c,0xdd47,0xd84c,0xdd48,0xd84c,0xdd49,0xd84c,0xdd4a,0xd84c,0xdd4b, - 0xd84c,0xdd4c,0xd84c,0xdd4d,0xd84c,0xdd4e,0xd84c,0xdd4f,0xd84c,0xdd50, - 0xd84c,0xdd51,0xd84c,0xdd52,0xd84c,0xdd53,0xd84c,0xdd54,0xd84c,0xdd55, - 0xd84c,0xdd56,0xd84c,0xdd57,0xd84c,0xdd58,0xd84c,0xdd59,0xd84c,0xdd5a, - 0xd84c,0xdd5b,0xd84c,0xdd5c,0xd84c,0xdd5d,0xd84c,0xdd5e,0xd84c,0xdd5f, - 0xd84c,0xdd60,0xd84c,0xdd61,0xd84c,0xdd62,0xd84c,0xdd63,0xd84c,0xdd64, - 0xd84c,0xdd65,0xd84c,0xdd66,0xd84c,0xdd67,0xd84c,0xdd68,0xd84c,0xdd69, - 0xd84c,0xdd6a,0xd84c,0xdd6b,0xd84c,0xdd6c,0xd84c,0xdd6d,0xd84c,0xdd6e, - 0xd84c,0xdd6f,0xd84c,0xdd70,0xd84c,0xdd71,0xd84c,0xdd72,0xd84c,0xdd73, - 0xd84c,0xdd74,0xd84c,0xdd75,0xd84c,0xdd76,0xd84c,0xdd77,0xd84c,0xdd78, - 0xd84c,0xdd79,0xd84c,0xdd7a,0xd84c,0xdd7b,0xd84c,0xdd7c,0xd84c,0xdd7d, - 0xd84c,0xdd7e,0xd84c,0xdd7f,0xd84c,0xdd80,0xd84c,0xdd81,0xd84c,0xdd82, - 0xd84c,0xdd83,0xd84c,0xdd84,0xd84c,0xdd85,0xd84c,0xdd86,0xd84c,0xdd87, - 0xd84c,0xdd88,0xd84c,0xdd89,0xd84c,0xdd8a,0xd84c,0xdd8b,0xd84c,0xdd8c, - 0xd84c,0xdd8d,0xd84c,0xdd8e,0xd84c,0xdd8f,0xd84c,0xdd90,0xd84c,0xdd91, - 0xd84c,0xdd92,0xd84c,0xdd93,0xd84c,0xdd94,0xd84c,0xdd95,0xd84c,0xdd96, - 0xd84c,0xdd97,0xd84c,0xdd98,0xd84c,0xdd99,0xd84c,0xdd9a,0xd84c,0xdd9b, - 0xd84c,0xdd9c,0xd84c,0xdd9d,0xd84c,0xdd9e,0xd84c,0xdd9f,0xd84c,0xdda0, - 0xd84c,0xdda1,0xd84c,0xdda2,0xd84c,0xdda3,0xd84c,0xdda4,0xd84c,0xdda5, - 0xd84c,0xdda6,0xd84c,0xdda7,0xd84c,0xdda8,0xd84c,0xdda9,0xd84c,0xddaa, - 0xd84c,0xddab,0xd84c,0xddac,0xd84c,0xddad,0xd84c,0xddae,0xd84c,0xddaf, - 0xd84c,0xddb0,0xd84c,0xddb1,0xd84c,0xddb2,0xd84c,0xddb3,0xd84c,0xddb4, - 0xd84c,0xddb5,0xd84c,0xddb6,0xd84c,0xddb7,0xd84c,0xddb8,0xd84c,0xddb9, - 0xd84c,0xddba,0xd84c,0xddbb,0xd84c,0xddbc,0xd84c,0xddbd,0xd84c,0xddbe, - 0xd84c,0xddbf,0xd84c,0xddc0,0xd84c,0xddc1,0xd84c,0xddc2,0xd84c,0xddc3, - 0xd84c,0xddc4,0xd84c,0xddc5,0xd84c,0xddc6,0xd84c,0xddc7,0xd84c,0xddc8, - 0xd84c,0xddc9,0xd84c,0xddca,0xd84c,0xddcb,0xd84c,0xddcc,0xd84c,0xddcd, - 0xd84c,0xddce,0xd84c,0xddcf,0xd84c,0xddd0,0xd84c,0xddd1,0xd84c,0xddd2, - 0xd84c,0xddd3,0xd84c,0xddd4,0xd84c,0xddd5,0xd84c,0xddd6,0xd84c,0xddd7, - 0xd84c,0xddd8,0xd84c,0xddd9,0xd84c,0xddda,0xd84c,0xdddb,0xd84c,0xdddc, - 0xd84c,0xdddd,0xd84c,0xddde,0xd84c,0xdddf,0xd84c,0xdde0,0xd84c,0xdde1, - 0xd84c,0xdde2,0xd84c,0xdde3,0xd84c,0xdde4,0xd84c,0xdde5,0xd84c,0xdde6, - 0xd84c,0xdde7,0xd84c,0xdde8,0xd84c,0xdde9,0xd84c,0xddea,0xd84c,0xddeb, - 0xd84c,0xddec,0xd84c,0xdded,0xd84c,0xddee,0xd84c,0xddef,0xd84c,0xddf0, - 0xd84c,0xddf1,0xd84c,0xddf2,0xd84c,0xddf3,0xd84c,0xddf4,0xd84c,0xddf5, - 0xd84c,0xddf6,0xd84c,0xddf7,0xd84c,0xddf8,0xd84c,0xddf9,0xd84c,0xddfa, - 0xd84c,0xddfb,0xd84c,0xddfc,0xd84c,0xddfd,0xd84c,0xddfe,0xd84c,0xddff, - 0xd84c,0xde00,0xd84c,0xde01,0xd84c,0xde02,0xd84c,0xde03,0xd84c,0xde04, - 0xd84c,0xde05,0xd84c,0xde06,0xd84c,0xde07,0xd84c,0xde08,0xd84c,0xde09, - 0xd84c,0xde0a,0xd84c,0xde0b,0xd84c,0xde0c,0xd84c,0xde0d,0xd84c,0xde0e, - 0xd84c,0xde0f,0xd84c,0xde10,0xd84c,0xde11,0xd84c,0xde12,0xd84c,0xde13, - 0xd84c,0xde14,0xd84c,0xde15,0xd84c,0xde16,0xd84c,0xde17,0xd84c,0xde18, - 0xd84c,0xde19,0xd84c,0xde1a,0xd84c,0xde1b,0xd84c,0xde1c,0xd84c,0xde1d, - 0xd84c,0xde1e,0xd84c,0xde1f,0xd84c,0xde20,0xd84c,0xde21,0xd84c,0xde22, - 0xd84c,0xde23,0xd84c,0xde24,0xd84c,0xde25,0xd84c,0xde26,0xd84c,0xde27, - 0xd84c,0xde28,0xd84c,0xde29,0xd84c,0xde2a,0xd84c,0xde2b,0xd84c,0xde2c, - 0xd84c,0xde2d,0xd84c,0xde2e,0xd84c,0xde2f,0xd84c,0xde30,0xd84c,0xde31, - 0xd84c,0xde32,0xd84c,0xde33,0xd84c,0xde34,0xd84c,0xde35,0xd84c,0xde36, - 0xd84c,0xde37,0xd84c,0xde38,0xd84c,0xde39,0xd84c,0xde3a,0xd84c,0xde3b, - 0xd84c,0xde3c,0xd84c,0xde3d,0xd84c,0xde3e,0xd84c,0xde3f,0xd84c,0xde40, - 0xd84c,0xde41,0xd84c,0xde42,0xd84c,0xde43,0xd84c,0xde44,0xd84c,0xde45, - 0xd84c,0xde46,0xd84c,0xde47,0xd84c,0xde48,0xd84c,0xde49,0xd84c,0xde4a, - 0xd84c,0xde4b,0xd84c,0xde4c,0xd84c,0xde4d,0xd84c,0xde4e,0xd84c,0xde4f, - 0xd84c,0xde50,0xd84c,0xde51,0xd84c,0xde52,0xd84c,0xde53,0xd84c,0xde54, - 0xd84c,0xde55,0xd84c,0xde56,0xd84c,0xde57,0xd84c,0xde58,0xd84c,0xde59, - 0xd84c,0xde5a,0xd84c,0xde5b,0xd84c,0xde5c,0xd84c,0xde5d,0xd84c,0xde5e, - 0xd84c,0xde5f,0xd84c,0xde60,0xd84c,0xde61,0xd84c,0xde62,0xd84c,0xde63, - 0xd84c,0xde64,0xd84c,0xde65,0xd84c,0xde66,0xd84c,0xde67,0xd84c,0xde68, - 0xd84c,0xde69,0xd84c,0xde6a,0xd84c,0xde6b,0xd84c,0xde6c,0xd84c,0xde6d, - 0xd84c,0xde6e,0xd84c,0xde6f,0xd84c,0xde70,0xd84c,0xde71,0xd84c,0xde72, - 0xd84c,0xde73,0xd84c,0xde74,0xd84c,0xde75,0xd84c,0xde76,0xd84c,0xde77, - 0xd84c,0xde78,0xd84c,0xde79,0xd84c,0xde7a,0xd84c,0xde7b,0xd84c,0xde7c, - 0xd84c,0xde7d,0xd84c,0xde7e,0xd84c,0xde7f,0xd84c,0xde80,0xd84c,0xde81, - 0xd84c,0xde82,0xd84c,0xde83,0xd84c,0xde84,0xd84c,0xde85,0xd84c,0xde86, - 0xd84c,0xde87,0xd84c,0xde88,0xd84c,0xde89,0xd84c,0xde8a,0xd84c,0xde8b, - 0xd84c,0xde8c,0xd84c,0xde8d,0xd84c,0xde8e,0xd84c,0xde8f,0xd84c,0xde90, - 0xd84c,0xde91,0xd84c,0xde92,0xd84c,0xde93,0xd84c,0xde94,0xd84c,0xde95, - 0xd84c,0xde96,0xd84c,0xde97,0xd84c,0xde98,0xd84c,0xde99,0xd84c,0xde9a, - 0xd84c,0xde9b,0xd84c,0xde9c,0xd84c,0xde9d,0xd84c,0xde9e,0xd84c,0xde9f, - 0xd84c,0xdea0,0xd84c,0xdea1,0xd84c,0xdea2,0xd84c,0xdea3,0xd84c,0xdea4, - 0xd84c,0xdea5,0xd84c,0xdea6,0xd84c,0xdea7,0xd84c,0xdea8,0xd84c,0xdea9, - 0xd84c,0xdeaa,0xd84c,0xdeab,0xd84c,0xdeac,0xd84c,0xdead,0xd84c,0xdeae, - 0xd84c,0xdeaf,0xd84c,0xdeb0,0xd84c,0xdeb1,0xd84c,0xdeb2,0xd84c,0xdeb3, - 0xd84c,0xdeb4,0xd84c,0xdeb5,0xd84c,0xdeb6,0xd84c,0xdeb7,0xd84c,0xdeb8, - 0xd84c,0xdeb9,0xd84c,0xdeba,0xd84c,0xdebb,0xd84c,0xdebc,0xd84c,0xdebd, - 0xd84c,0xdebe,0xd84c,0xdebf,0xd84c,0xdec0,0xd84c,0xdec1,0xd84c,0xdec2, - 0xd84c,0xdec3,0xd84c,0xdec4,0xd84c,0xdec5,0xd84c,0xdec6,0xd84c,0xdec7, - 0xd84c,0xdec8,0xd84c,0xdec9,0xd84c,0xdeca,0xd84c,0xdecb,0xd84c,0xdecc, - 0xd84c,0xdecd,0xd84c,0xdece,0xd84c,0xdecf,0xd84c,0xded0,0xd84c,0xded1, - 0xd84c,0xded2,0xd84c,0xded3,0xd84c,0xded4,0xd84c,0xded5,0xd84c,0xded6, - 0xd84c,0xded7,0xd84c,0xded8,0xd84c,0xded9,0xd84c,0xdeda,0xd84c,0xdedb, - 0xd84c,0xdedc,0xd84c,0xdedd,0xd84c,0xdede,0xd84c,0xdedf,0xd84c,0xdee0, - 0xd84c,0xdee1,0xd84c,0xdee2,0xd84c,0xdee3,0xd84c,0xdee4,0xd84c,0xdee5, - 0xd84c,0xdee6,0xd84c,0xdee7,0xd84c,0xdee8,0xd84c,0xdee9,0xd84c,0xdeea, - 0xd84c,0xdeeb,0xd84c,0xdeec,0xd84c,0xdeed,0xd84c,0xdeee,0xd84c,0xdeef, - 0xd84c,0xdef0,0xd84c,0xdef1,0xd84c,0xdef2,0xd84c,0xdef3,0xd84c,0xdef4, - 0xd84c,0xdef5,0xd84c,0xdef6,0xd84c,0xdef7,0xd84c,0xdef8,0xd84c,0xdef9, - 0xd84c,0xdefa,0xd84c,0xdefb,0xd84c,0xdefc,0xd84c,0xdefd,0xd84c,0xdefe, - 0xd84c,0xdeff,0xd84c,0xdf00,0xd84c,0xdf01,0xd84c,0xdf02,0xd84c,0xdf03, - 0xd84c,0xdf04,0xd84c,0xdf05,0xd84c,0xdf06,0xd84c,0xdf07,0xd84c,0xdf08, - 0xd84c,0xdf09,0xd84c,0xdf0a,0xd84c,0xdf0b,0xd84c,0xdf0c,0xd84c,0xdf0d, - 0xd84c,0xdf0e,0xd84c,0xdf0f,0xd84c,0xdf10,0xd84c,0xdf11,0xd84c,0xdf12, - 0xd84c,0xdf13,0xd84c,0xdf14,0xd84c,0xdf15,0xd84c,0xdf16,0xd84c,0xdf17, - 0xd84c,0xdf18,0xd84c,0xdf19,0xd84c,0xdf1a,0xd84c,0xdf1b,0xd84c,0xdf1c, - 0xd84c,0xdf1d,0xd84c,0xdf1e,0xd84c,0xdf1f,0xd84c,0xdf20,0xd84c,0xdf21, - 0xd84c,0xdf22,0xd84c,0xdf23,0xd84c,0xdf24,0xd84c,0xdf25,0xd84c,0xdf26, - 0xd84c,0xdf27,0xd84c,0xdf28,0xd84c,0xdf29,0xd84c,0xdf2a,0xd84c,0xdf2b, - 0xd84c,0xdf2c,0xd84c,0xdf2d,0xd84c,0xdf2e,0xd84c,0xdf2f,0xd84c,0xdf30, - 0xd84c,0xdf31,0xd84c,0xdf32,0xd84c,0xdf33,0xd84c,0xdf34,0xd84c,0xdf35, - 0xd84c,0xdf36,0xd84c,0xdf37,0xd84c,0xdf38,0xd84c,0xdf39,0xd84c,0xdf3a, - 0xd84c,0xdf3b,0xd84c,0xdf3c,0xd84c,0xdf3d,0xd84c,0xdf3e,0xd84c,0xdf3f, - 0xd84c,0xdf40,0xd84c,0xdf41,0xd84c,0xdf42,0xd84c,0xdf43,0xd84c,0xdf44, - 0xd84c,0xdf45,0xd84c,0xdf46,0xd84c,0xdf47,0xd84c,0xdf48,0xd84c,0xdf49, - 0xd84c,0xdf4a,0xd84c,0xdf4b,0xd84c,0xdf4c,0xd84c,0xdf4d,0xd84c,0xdf4e, - 0xd84c,0xdf4f,0xd84c,0xdf50,0xd84c,0xdf51,0xd84c,0xdf52,0xd84c,0xdf53, - 0xd84c,0xdf54,0xd84c,0xdf55,0xd84c,0xdf56,0xd84c,0xdf57,0xd84c,0xdf58, - 0xd84c,0xdf59,0xd84c,0xdf5a,0xd84c,0xdf5b,0xd84c,0xdf5c,0xd84c,0xdf5d, - 0xd84c,0xdf5e,0xd84c,0xdf5f,0xd84c,0xdf60,0xd84c,0xdf61,0xd84c,0xdf62, - 0xd84c,0xdf63,0xd84c,0xdf64,0xd84c,0xdf65,0xd84c,0xdf66,0xd84c,0xdf67, - 0xd84c,0xdf68,0xd84c,0xdf69,0xd84c,0xdf6a,0xd84c,0xdf6b,0xd84c,0xdf6c, - 0xd84c,0xdf6d,0xd84c,0xdf6e,0xd84c,0xdf6f,0xd84c,0xdf70,0xd84c,0xdf71, - 0xd84c,0xdf72,0xd84c,0xdf73,0xd84c,0xdf74,0xd84c,0xdf75,0xd84c,0xdf76, - 0xd84c,0xdf77,0xd84c,0xdf78,0xd84c,0xdf79,0xd84c,0xdf7a,0xd84c,0xdf7b, - 0xd84c,0xdf7c,0xd84c,0xdf7d,0xd84c,0xdf7e,0xd84c,0xdf7f,0xd84c,0xdf80, - 0xd84c,0xdf81,0xd84c,0xdf82,0xd84c,0xdf83,0xd84c,0xdf84,0xd84c,0xdf85, - 0xd84c,0xdf86,0xd84c,0xdf87,0xd84c,0xdf88,0xd84c,0xdf89,0xd84c,0xdf8a, - 0xd84c,0xdf8b,0xd84c,0xdf8c,0xd84c,0xdf8d,0xd84c,0xdf8e,0xd84c,0xdf8f, - 0xd84c,0xdf90,0xd84c,0xdf91,0xd84c,0xdf92,0xd84c,0xdf93,0xd84c,0xdf94, - 0xd84c,0xdf95,0xd84c,0xdf96,0xd84c,0xdf97,0xd84c,0xdf98,0xd84c,0xdf99, - 0xd84c,0xdf9a,0xd84c,0xdf9b,0xd84c,0xdf9c,0xd84c,0xdf9d,0xd84c,0xdf9e, - 0xd84c,0xdf9f,0xd84c,0xdfa0,0xd84c,0xdfa1,0xd84c,0xdfa2,0xd84c,0xdfa3, - 0xd84c,0xdfa4,0xd84c,0xdfa5,0xd84c,0xdfa6,0xd84c,0xdfa7,0xd84c,0xdfa8, - 0xd84c,0xdfa9,0xd84c,0xdfaa,0xd84c,0xdfab,0xd84c,0xdfac,0xd84c,0xdfad, - 0xd84c,0xdfae,0xd84c,0xdfaf,0xd84c,0xdfb0,0xd84c,0xdfb1,0xd84c,0xdfb2, - 0xd84c,0xdfb3,0xd84c,0xdfb4,0xd84c,0xdfb5,0xd84c,0xdfb6,0xd84c,0xdfb7, - 0xd84c,0xdfb8,0xd84c,0xdfb9,0xd84c,0xdfba,0xd84c,0xdfbb,0xd84c,0xdfbc, - 0xd84c,0xdfbd,0xd84c,0xdfbe,0xd84c,0xdfbf,0xd84c,0xdfc0,0xd84c,0xdfc1, - 0xd84c,0xdfc2,0xd84c,0xdfc3,0xd84c,0xdfc4,0xd84c,0xdfc5,0xd84c,0xdfc6, - 0xd84c,0xdfc7,0xd84c,0xdfc8,0xd84c,0xdfc9,0xd84c,0xdfca,0xd84c,0xdfcb, - 0xd84c,0xdfcc,0xd84c,0xdfcd,0xd84c,0xdfce,0xd84c,0xdfcf,0xd84c,0xdfd0, - 0xd84c,0xdfd1,0xd84c,0xdfd2,0xd84c,0xdfd3,0xd84c,0xdfd4,0xd84c,0xdfd5, - 0xd84c,0xdfd6,0xd84c,0xdfd7,0xd84c,0xdfd8,0xd84c,0xdfd9,0xd84c,0xdfda, - 0xd84c,0xdfdb,0xd84c,0xdfdc,0xd84c,0xdfdd,0xd84c,0xdfde,0xd84c,0xdfdf, - 0xd84c,0xdfe0,0xd84c,0xdfe1,0xd84c,0xdfe2,0xd84c,0xdfe3,0xd84c,0xdfe4, - 0xd84c,0xdfe5,0xd84c,0xdfe6,0xd84c,0xdfe7,0xd84c,0xdfe8,0xd84c,0xdfe9, - 0xd84c,0xdfea,0xd84c,0xdfeb,0xd84c,0xdfec,0xd84c,0xdfed,0xd84c,0xdfee, - 0xd84c,0xdfef,0xd84c,0xdff0,0xd84c,0xdff1,0xd84c,0xdff2,0xd84c,0xdff3, - 0xd84c,0xdff4,0xd84c,0xdff5,0xd84c,0xdff6,0xd84c,0xdff7,0xd84c,0xdff8, - 0xd84c,0xdff9,0xd84c,0xdffa,0xd84c,0xdffb,0xd84c,0xdffc,0xd84c,0xdffd, - 0xd84c,0xdffe,0xd84c,0xdfff,0xd84d,0xdc00,0xd84d,0xdc01,0xd84d,0xdc02, - 0xd84d,0xdc03,0xd84d,0xdc04,0xd84d,0xdc05,0xd84d,0xdc06,0xd84d,0xdc07, - 0xd84d,0xdc08,0xd84d,0xdc09,0xd84d,0xdc0a,0xd84d,0xdc0b,0xd84d,0xdc0c, - 0xd84d,0xdc0d,0xd84d,0xdc0e,0xd84d,0xdc0f,0xd84d,0xdc10,0xd84d,0xdc11, - 0xd84d,0xdc12,0xd84d,0xdc13,0xd84d,0xdc14,0xd84d,0xdc15,0xd84d,0xdc16, - 0xd84d,0xdc17,0xd84d,0xdc18,0xd84d,0xdc19,0xd84d,0xdc1a,0xd84d,0xdc1b, - 0xd84d,0xdc1c,0xd84d,0xdc1d,0xd84d,0xdc1e,0xd84d,0xdc1f,0xd84d,0xdc20, - 0xd84d,0xdc21,0xd84d,0xdc22,0xd84d,0xdc23,0xd84d,0xdc24,0xd84d,0xdc25, - 0xd84d,0xdc26,0xd84d,0xdc27,0xd84d,0xdc28,0xd84d,0xdc29,0xd84d,0xdc2a, - 0xd84d,0xdc2b,0xd84d,0xdc2c,0xd84d,0xdc2d,0xd84d,0xdc2e,0xd84d,0xdc2f, - 0xd84d,0xdc30,0xd84d,0xdc31,0xd84d,0xdc32,0xd84d,0xdc33,0xd84d,0xdc34, - 0xd84d,0xdc35,0xd84d,0xdc36,0xd84d,0xdc37,0xd84d,0xdc38,0xd84d,0xdc39, - 0xd84d,0xdc3a,0xd84d,0xdc3b,0xd84d,0xdc3c,0xd84d,0xdc3d,0xd84d,0xdc3e, - 0xd84d,0xdc3f,0xd84d,0xdc40,0xd84d,0xdc41,0xd84d,0xdc42,0xd84d,0xdc43, - 0xd84d,0xdc44,0xd84d,0xdc45,0xd84d,0xdc46,0xd84d,0xdc47,0xd84d,0xdc48, - 0xd84d,0xdc49,0xd84d,0xdc4a,0xd84d,0xdc4b,0xd84d,0xdc4c,0xd84d,0xdc4d, - 0xd84d,0xdc4e,0xd84d,0xdc4f,0xd84d,0xdc50,0xd84d,0xdc51,0xd84d,0xdc52, - 0xd84d,0xdc53,0xd84d,0xdc54,0xd84d,0xdc55,0xd84d,0xdc56,0xd84d,0xdc57, - 0xd84d,0xdc58,0xd84d,0xdc59,0xd84d,0xdc5a,0xd84d,0xdc5b,0xd84d,0xdc5c, - 0xd84d,0xdc5d,0xd84d,0xdc5e,0xd84d,0xdc5f,0xd84d,0xdc60,0xd84d,0xdc61, - 0xd84d,0xdc62,0xd84d,0xdc63,0xd84d,0xdc64,0xd84d,0xdc65,0xd84d,0xdc66, - 0xd84d,0xdc67,0xd84d,0xdc68,0xd84d,0xdc69,0xd84d,0xdc6a,0xd84d,0xdc6b, - 0xd84d,0xdc6c,0xd84d,0xdc6d,0xd84d,0xdc6e,0xd84d,0xdc6f,0xd84d,0xdc70, - 0xd84d,0xdc71,0xd84d,0xdc72,0xd84d,0xdc73,0xd84d,0xdc74,0xd84d,0xdc75, - 0xd84d,0xdc76,0xd84d,0xdc77,0xd84d,0xdc78,0xd84d,0xdc79,0xd84d,0xdc7a, - 0xd84d,0xdc7b,0xd84d,0xdc7c,0xd84d,0xdc7d,0xd84d,0xdc7e,0xd84d,0xdc7f, - 0xd84d,0xdc80,0xd84d,0xdc81,0xd84d,0xdc82,0xd84d,0xdc83,0xd84d,0xdc84, - 0xd84d,0xdc85,0xd84d,0xdc86,0xd84d,0xdc87,0xd84d,0xdc88,0xd84d,0xdc89, - 0xd84d,0xdc8a,0xd84d,0xdc8b,0xd84d,0xdc8c,0xd84d,0xdc8d,0xd84d,0xdc8e, - 0xd84d,0xdc8f,0xd84d,0xdc90,0xd84d,0xdc91,0xd84d,0xdc92,0xd84d,0xdc93, - 0xd84d,0xdc94,0xd84d,0xdc95,0xd84d,0xdc96,0xd84d,0xdc97,0xd84d,0xdc98, - 0xd84d,0xdc99,0xd84d,0xdc9a,0xd84d,0xdc9b,0xd84d,0xdc9c,0xd84d,0xdc9d, - 0xd84d,0xdc9e,0xd84d,0xdc9f,0xd84d,0xdca0,0xd84d,0xdca1,0xd84d,0xdca2, - 0xd84d,0xdca3,0xd84d,0xdca4,0xd84d,0xdca5,0xd84d,0xdca6,0xd84d,0xdca7, - 0xd84d,0xdca8,0xd84d,0xdca9,0xd84d,0xdcaa,0xd84d,0xdcab,0xd84d,0xdcac, - 0xd84d,0xdcad,0xd84d,0xdcae,0xd84d,0xdcaf,0xd84d,0xdcb0,0xd84d,0xdcb1, - 0xd84d,0xdcb2,0xd84d,0xdcb3,0xd84d,0xdcb4,0xd84d,0xdcb5,0xd84d,0xdcb6, - 0xd84d,0xdcb7,0xd84d,0xdcb8,0xd84d,0xdcb9,0xd84d,0xdcba,0xd84d,0xdcbb, - 0xd84d,0xdcbc,0xd84d,0xdcbd,0xd84d,0xdcbe,0xd84d,0xdcbf,0xd84d,0xdcc0, - 0xd84d,0xdcc1,0xd84d,0xdcc2,0xd84d,0xdcc3,0xd84d,0xdcc4,0xd84d,0xdcc5, - 0xd84d,0xdcc6,0xd84d,0xdcc7,0xd84d,0xdcc8,0xd84d,0xdcc9,0xd84d,0xdcca, - 0xd84d,0xdccb,0xd84d,0xdccc,0xd84d,0xdccd,0xd84d,0xdcce,0xd84d,0xdccf, - 0xd84d,0xdcd0,0xd84d,0xdcd1,0xd84d,0xdcd2,0xd84d,0xdcd3,0xd84d,0xdcd4, - 0xd84d,0xdcd5,0xd84d,0xdcd6,0xd84d,0xdcd7,0xd84d,0xdcd8,0xd84d,0xdcd9, - 0xd84d,0xdcda,0xd84d,0xdcdb,0xd84d,0xdcdc,0xd84d,0xdcdd,0xd84d,0xdcde, - 0xd84d,0xdcdf,0xd84d,0xdce0,0xd84d,0xdce1,0xd84d,0xdce2,0xd84d,0xdce3, - 0xd84d,0xdce4,0xd84d,0xdce5,0xd84d,0xdce6,0xd84d,0xdce7,0xd84d,0xdce8, - 0xd84d,0xdce9,0xd84d,0xdcea,0xd84d,0xdceb,0xd84d,0xdcec,0xd84d,0xdced, - 0xd84d,0xdcee,0xd84d,0xdcef,0xd84d,0xdcf0,0xd84d,0xdcf1,0xd84d,0xdcf2, - 0xd84d,0xdcf3,0xd84d,0xdcf4,0xd84d,0xdcf5,0xd84d,0xdcf6,0xd84d,0xdcf7, - 0xd84d,0xdcf8,0xd84d,0xdcf9,0xd84d,0xdcfa,0xd84d,0xdcfb,0xd84d,0xdcfc, - 0xd84d,0xdcfd,0xd84d,0xdcfe,0xd84d,0xdcff,0xd84d,0xdd00,0xd84d,0xdd01, - 0xd84d,0xdd02,0xd84d,0xdd03,0xd84d,0xdd04,0xd84d,0xdd05,0xd84d,0xdd06, - 0xd84d,0xdd07,0xd84d,0xdd08,0xd84d,0xdd09,0xd84d,0xdd0a,0xd84d,0xdd0b, - 0xd84d,0xdd0c,0xd84d,0xdd0d,0xd84d,0xdd0e,0xd84d,0xdd0f,0xd84d,0xdd10, - 0xd84d,0xdd11,0xd84d,0xdd12,0xd84d,0xdd13,0xd84d,0xdd14,0xd84d,0xdd15, - 0xd84d,0xdd16,0xd84d,0xdd17,0xd84d,0xdd18,0xd84d,0xdd19,0xd84d,0xdd1a, - 0xd84d,0xdd1b,0xd84d,0xdd1c,0xd84d,0xdd1d,0xd84d,0xdd1e,0xd84d,0xdd1f, - 0xd84d,0xdd20,0xd84d,0xdd21,0xd84d,0xdd22,0xd84d,0xdd23,0xd84d,0xdd24, - 0xd84d,0xdd25,0xd84d,0xdd26,0xd84d,0xdd27,0xd84d,0xdd28,0xd84d,0xdd29, - 0xd84d,0xdd2a,0xd84d,0xdd2b,0xd84d,0xdd2c,0xd84d,0xdd2d,0xd84d,0xdd2e, - 0xd84d,0xdd2f,0xd84d,0xdd30,0xd84d,0xdd31,0xd84d,0xdd32,0xd84d,0xdd33, - 0xd84d,0xdd34,0xd84d,0xdd35,0xd84d,0xdd36,0xd84d,0xdd37,0xd84d,0xdd38, - 0xd84d,0xdd39,0xd84d,0xdd3a,0xd84d,0xdd3b,0xd84d,0xdd3c,0xd84d,0xdd3d, - 0xd84d,0xdd3e,0xd84d,0xdd3f,0xd84d,0xdd40,0xd84d,0xdd41,0xd84d,0xdd42, - 0xd84d,0xdd43,0xd84d,0xdd44,0xd84d,0xdd45,0xd84d,0xdd46,0xd84d,0xdd47, - 0xd84d,0xdd48,0xd84d,0xdd49,0xd84d,0xdd4a,0xd84d,0xdd4b,0xd84d,0xdd4c, - 0xd84d,0xdd4d,0xd84d,0xdd4e,0xd84d,0xdd4f,0xd84d,0xdd50,0xd84d,0xdd51, - 0xd84d,0xdd52,0xd84d,0xdd53,0xd84d,0xdd54,0xd84d,0xdd55,0xd84d,0xdd56, - 0xd84d,0xdd57,0xd84d,0xdd58,0xd84d,0xdd59,0xd84d,0xdd5a,0xd84d,0xdd5b, - 0xd84d,0xdd5c,0xd84d,0xdd5d,0xd84d,0xdd5e,0xd84d,0xdd5f,0xd84d,0xdd60, - 0xd84d,0xdd61,0xd84d,0xdd62,0xd84d,0xdd63,0xd84d,0xdd64,0xd84d,0xdd65, - 0xd84d,0xdd66,0xd84d,0xdd67,0xd84d,0xdd68,0xd84d,0xdd69,0xd84d,0xdd6a, - 0xd84d,0xdd6b,0xd84d,0xdd6c,0xd84d,0xdd6d,0xd84d,0xdd6e,0xd84d,0xdd6f, - 0xd84d,0xdd70,0xd84d,0xdd71,0xd84d,0xdd72,0xd84d,0xdd73,0xd84d,0xdd74, - 0xd84d,0xdd75,0xd84d,0xdd76,0xd84d,0xdd77,0xd84d,0xdd78,0xd84d,0xdd79, - 0xd84d,0xdd7a,0xd84d,0xdd7b,0xd84d,0xdd7c,0xd84d,0xdd7d,0xd84d,0xdd7e, - 0xd84d,0xdd7f,0xd84d,0xdd80,0xd84d,0xdd81,0xd84d,0xdd82,0xd84d,0xdd83, - 0xd84d,0xdd84,0xd84d,0xdd85,0xd84d,0xdd86,0xd84d,0xdd87,0xd84d,0xdd88, - 0xd84d,0xdd89,0xd84d,0xdd8a,0xd84d,0xdd8b,0xd84d,0xdd8c,0xd84d,0xdd8d, - 0xd84d,0xdd8e,0xd84d,0xdd8f,0xd84d,0xdd90,0xd84d,0xdd91,0xd84d,0xdd92, - 0xd84d,0xdd93,0xd84d,0xdd94,0xd84d,0xdd95,0xd84d,0xdd96,0xd84d,0xdd97, - 0xd84d,0xdd98,0xd84d,0xdd99,0xd84d,0xdd9a,0xd84d,0xdd9b,0xd84d,0xdd9c, - 0xd84d,0xdd9d,0xd84d,0xdd9e,0xd84d,0xdd9f,0xd84d,0xdda0,0xd84d,0xdda1, - 0xd84d,0xdda2,0xd84d,0xdda3,0xd84d,0xdda4,0xd84d,0xdda5,0xd84d,0xdda6, - 0xd84d,0xdda7,0xd84d,0xdda8,0xd84d,0xdda9,0xd84d,0xddaa,0xd84d,0xddab, - 0xd84d,0xddac,0xd84d,0xddad,0xd84d,0xddae,0xd84d,0xddaf,0xd84d,0xddb0, - 0xd84d,0xddb1,0xd84d,0xddb2,0xd84d,0xddb3,0xd84d,0xddb4,0xd84d,0xddb5, - 0xd84d,0xddb6,0xd84d,0xddb7,0xd84d,0xddb8,0xd84d,0xddb9,0xd84d,0xddba, - 0xd84d,0xddbb,0xd84d,0xddbc,0xd84d,0xddbd,0xd84d,0xddbe,0xd84d,0xddbf, - 0xd84d,0xddc0,0xd84d,0xddc1,0xd84d,0xddc2,0xd84d,0xddc3,0xd84d,0xddc4, - 0xd84d,0xddc5,0xd84d,0xddc6,0xd84d,0xddc7,0xd84d,0xddc8,0xd84d,0xddc9, - 0xd84d,0xddca,0xd84d,0xddcb,0xd84d,0xddcc,0xd84d,0xddcd,0xd84d,0xddce, - 0xd84d,0xddcf,0xd84d,0xddd0,0xd84d,0xddd1,0xd84d,0xddd2,0xd84d,0xddd3, - 0xd84d,0xddd4,0xd84d,0xddd5,0xd84d,0xddd6,0xd84d,0xddd7,0xd84d,0xddd8, - 0xd84d,0xddd9,0xd84d,0xddda,0xd84d,0xdddb,0xd84d,0xdddc,0xd84d,0xdddd, - 0xd84d,0xddde,0xd84d,0xdddf,0xd84d,0xdde0,0xd84d,0xdde1,0xd84d,0xdde2, - 0xd84d,0xdde3,0xd84d,0xdde4,0xd84d,0xdde5,0xd84d,0xdde6,0xd84d,0xdde7, - 0xd84d,0xdde8,0xd84d,0xdde9,0xd84d,0xddea,0xd84d,0xddeb,0xd84d,0xddec, - 0xd84d,0xdded,0xd84d,0xddee,0xd84d,0xddef,0xd84d,0xddf0,0xd84d,0xddf1, - 0xd84d,0xddf2,0xd84d,0xddf3,0xd84d,0xddf4,0xd84d,0xddf5,0xd84d,0xddf6, - 0xd84d,0xddf7,0xd84d,0xddf8,0xd84d,0xddf9,0xd84d,0xddfa,0xd84d,0xddfb, - 0xd84d,0xddfc,0xd84d,0xddfd,0xd84d,0xddfe,0xd84d,0xddff,0xd84d,0xde00, - 0xd84d,0xde01,0xd84d,0xde02,0xd84d,0xde03,0xd84d,0xde04,0xd84d,0xde05, - 0xd84d,0xde06,0xd84d,0xde07,0xd84d,0xde08,0xd84d,0xde09,0xd84d,0xde0a, - 0xd84d,0xde0b,0xd84d,0xde0c,0xd84d,0xde0d,0xd84d,0xde0e,0xd84d,0xde0f, - 0xd84d,0xde10,0xd84d,0xde11,0xd84d,0xde12,0xd84d,0xde13,0xd84d,0xde14, - 0xd84d,0xde15,0xd84d,0xde16,0xd84d,0xde17,0xd84d,0xde18,0xd84d,0xde19, - 0xd84d,0xde1a,0xd84d,0xde1b,0xd84d,0xde1c,0xd84d,0xde1d,0xd84d,0xde1e, - 0xd84d,0xde1f,0xd84d,0xde20,0xd84d,0xde21,0xd84d,0xde22,0xd84d,0xde23, - 0xd84d,0xde24,0xd84d,0xde25,0xd84d,0xde26,0xd84d,0xde27,0xd84d,0xde28, - 0xd84d,0xde29,0xd84d,0xde2a,0xd84d,0xde2b,0xd84d,0xde2c,0xd84d,0xde2d, - 0xd84d,0xde2e,0xd84d,0xde2f,0xd84d,0xde30,0xd84d,0xde31,0xd84d,0xde32, - 0xd84d,0xde33,0xd84d,0xde34,0xd84d,0xde35,0xd84d,0xde36,0xd84d,0xde37, - 0xd84d,0xde38,0xd84d,0xde39,0xd84d,0xde3a,0xd84d,0xde3b,0xd84d,0xde3c, - 0xd84d,0xde3d,0xd84d,0xde3e,0xd84d,0xde3f,0xd84d,0xde40,0xd84d,0xde41, - 0xd84d,0xde42,0xd84d,0xde43,0xd84d,0xde44,0xd84d,0xde45,0xd84d,0xde46, - 0xd84d,0xde47,0xd84d,0xde48,0xd84d,0xde49,0xd84d,0xde4a,0xd84d,0xde4b, - 0xd84d,0xde4c,0xd84d,0xde4d,0xd84d,0xde4e,0xd84d,0xde4f,0xd84d,0xde50, - 0xd84d,0xde51,0xd84d,0xde52,0xd84d,0xde53,0xd84d,0xde54,0xd84d,0xde55, - 0xd84d,0xde56,0xd84d,0xde57,0xd84d,0xde58,0xd84d,0xde59,0xd84d,0xde5a, - 0xd84d,0xde5b,0xd84d,0xde5c,0xd84d,0xde5d,0xd84d,0xde5e,0xd84d,0xde5f, - 0xd84d,0xde60,0xd84d,0xde61,0xd84d,0xde62,0xd84d,0xde63,0xd84d,0xde64, - 0xd84d,0xde65,0xd84d,0xde66,0xd84d,0xde67,0xd84d,0xde68,0xd84d,0xde69, - 0xd84d,0xde6a,0xd84d,0xde6b,0xd84d,0xde6c,0xd84d,0xde6d,0xd84d,0xde6e, - 0xd84d,0xde6f,0xd84d,0xde70,0xd84d,0xde71,0xd84d,0xde72,0xd84d,0xde73, - 0xd84d,0xde74,0xd84d,0xde75,0xd84d,0xde76,0xd84d,0xde77,0xd84d,0xde78, - 0xd84d,0xde79,0xd84d,0xde7a,0xd84d,0xde7b,0xd84d,0xde7c,0xd84d,0xde7d, - 0xd84d,0xde7e,0xd84d,0xde7f,0xd84d,0xde80,0xd84d,0xde81,0xd84d,0xde82, - 0xd84d,0xde83,0xd84d,0xde84,0xd84d,0xde85,0xd84d,0xde86,0xd84d,0xde87, - 0xd84d,0xde88,0xd84d,0xde89,0xd84d,0xde8a,0xd84d,0xde8b,0xd84d,0xde8c, - 0xd84d,0xde8d,0xd84d,0xde8e,0xd84d,0xde8f,0xd84d,0xde90,0xd84d,0xde91, - 0xd84d,0xde92,0xd84d,0xde93,0xd84d,0xde94,0xd84d,0xde95,0xd84d,0xde96, - 0xd84d,0xde97,0xd84d,0xde98,0xd84d,0xde99,0xd84d,0xde9a,0xd84d,0xde9b, - 0xd84d,0xde9c,0xd84d,0xde9d,0xd84d,0xde9e,0xd84d,0xde9f,0xd84d,0xdea0, - 0xd84d,0xdea1,0xd84d,0xdea2,0xd84d,0xdea3,0xd84d,0xdea4,0xd84d,0xdea5, - 0xd84d,0xdea6,0xd84d,0xdea7,0xd84d,0xdea8,0xd84d,0xdea9,0xd84d,0xdeaa, - 0xd84d,0xdeab,0xd84d,0xdeac,0xd84d,0xdead,0xd84d,0xdeae,0xd84d,0xdeaf, - 0xd84d,0xdeb0,0xd84d,0xdeb1,0xd84d,0xdeb2,0xd84d,0xdeb3,0xd84d,0xdeb4, - 0xd84d,0xdeb5,0xd84d,0xdeb6,0xd84d,0xdeb7,0xd84d,0xdeb8,0xd84d,0xdeb9, - 0xd84d,0xdeba,0xd84d,0xdebb,0xd84d,0xdebc,0xd84d,0xdebd,0xd84d,0xdebe, - 0xd84d,0xdebf,0xd84d,0xdec0,0xd84d,0xdec1,0xd84d,0xdec2,0xd84d,0xdec3, - 0xd84d,0xdec4,0xd84d,0xdec5,0xd84d,0xdec6,0xd84d,0xdec7,0xd84d,0xdec8, - 0xd84d,0xdec9,0xd84d,0xdeca,0xd84d,0xdecb,0xd84d,0xdecc,0xd84d,0xdecd, - 0xd84d,0xdece,0xd84d,0xdecf,0xd84d,0xded0,0xd84d,0xded1,0xd84d,0xded2, - 0xd84d,0xded3,0xd84d,0xded4,0xd84d,0xded5,0xd84d,0xded6,0xd84d,0xded7, - 0xd84d,0xded8,0xd84d,0xded9,0xd84d,0xdeda,0xd84d,0xdedb,0xd84d,0xdedc, - 0xd84d,0xdedd,0xd84d,0xdede,0xd84d,0xdedf,0xd84d,0xdee0,0xd84d,0xdee1, - 0xd84d,0xdee2,0xd84d,0xdee3,0xd84d,0xdee4,0xd84d,0xdee5,0xd84d,0xdee6, - 0xd84d,0xdee7,0xd84d,0xdee8,0xd84d,0xdee9,0xd84d,0xdeea,0xd84d,0xdeeb, - 0xd84d,0xdeec,0xd84d,0xdeed,0xd84d,0xdeee,0xd84d,0xdeef,0xd84d,0xdef0, - 0xd84d,0xdef1,0xd84d,0xdef2,0xd84d,0xdef3,0xd84d,0xdef4,0xd84d,0xdef5, - 0xd84d,0xdef6,0xd84d,0xdef7,0xd84d,0xdef8,0xd84d,0xdef9,0xd84d,0xdefa, - 0xd84d,0xdefb,0xd84d,0xdefc,0xd84d,0xdefd,0xd84d,0xdefe,0xd84d,0xdeff, - 0xd84d,0xdf00,0xd84d,0xdf01,0xd84d,0xdf02,0xd84d,0xdf03,0xd84d,0xdf04, - 0xd84d,0xdf05,0xd84d,0xdf06,0xd84d,0xdf07,0xd84d,0xdf08,0xd84d,0xdf09, - 0xd84d,0xdf0a,0xd84d,0xdf0b,0xd84d,0xdf0c,0xd84d,0xdf0d,0xd84d,0xdf0e, - 0xd84d,0xdf0f,0xd84d,0xdf10,0xd84d,0xdf11,0xd84d,0xdf12,0xd84d,0xdf13, - 0xd84d,0xdf14,0xd84d,0xdf15,0xd84d,0xdf16,0xd84d,0xdf17,0xd84d,0xdf18, - 0xd84d,0xdf19,0xd84d,0xdf1a,0xd84d,0xdf1b,0xd84d,0xdf1c,0xd84d,0xdf1d, - 0xd84d,0xdf1e,0xd84d,0xdf1f,0xd84d,0xdf20,0xd84d,0xdf21,0xd84d,0xdf22, - 0xd84d,0xdf23,0xd84d,0xdf24,0xd84d,0xdf25,0xd84d,0xdf26,0xd84d,0xdf27, - 0xd84d,0xdf28,0xd84d,0xdf29,0xd84d,0xdf2a,0xd84d,0xdf2b,0xd84d,0xdf2c, - 0xd84d,0xdf2d,0xd84d,0xdf2e,0xd84d,0xdf2f,0xd84d,0xdf30,0xd84d,0xdf31, - 0xd84d,0xdf32,0xd84d,0xdf33,0xd84d,0xdf34,0xd84d,0xdf35,0xd84d,0xdf36, - 0xd84d,0xdf37,0xd84d,0xdf38,0xd84d,0xdf39,0xd84d,0xdf3a,0xd84d,0xdf3b, - 0xd84d,0xdf3c,0xd84d,0xdf3d,0xd84d,0xdf3e,0xd84d,0xdf3f,0xd84d,0xdf40, - 0xd84d,0xdf41,0xd84d,0xdf42,0xd84d,0xdf43,0xd84d,0xdf44,0xd84d,0xdf45, - 0xd84d,0xdf46,0xd84d,0xdf47,0xd84d,0xdf48,0xd84d,0xdf49,0xd84d,0xdf4a, - 0xd84d,0xdf4b,0xd84d,0xdf4c,0xd84d,0xdf4d,0xd84d,0xdf4e,0xd84d,0xdf4f, - 0xd84d,0xdf50,0xd84d,0xdf51,0xd84d,0xdf52,0xd84d,0xdf53,0xd84d,0xdf54, - 0xd84d,0xdf55,0xd84d,0xdf56,0xd84d,0xdf57,0xd84d,0xdf58,0xd84d,0xdf59, - 0xd84d,0xdf5a,0xd84d,0xdf5b,0xd84d,0xdf5c,0xd84d,0xdf5d,0xd84d,0xdf5e, - 0xd84d,0xdf5f,0xd84d,0xdf60,0xd84d,0xdf61,0xd84d,0xdf62,0xd84d,0xdf63, - 0xd84d,0xdf64,0xd84d,0xdf65,0xd84d,0xdf66,0xd84d,0xdf67,0xd84d,0xdf68, - 0xd84d,0xdf69,0xd84d,0xdf6a,0xd84d,0xdf6b,0xd84d,0xdf6c,0xd84d,0xdf6d, - 0xd84d,0xdf6e,0xd84d,0xdf6f,0xd84d,0xdf70,0xd84d,0xdf71,0xd84d,0xdf72, - 0xd84d,0xdf73,0xd84d,0xdf74,0xd84d,0xdf75,0xd84d,0xdf76,0xd84d,0xdf77, - 0xd84d,0xdf78,0xd84d,0xdf79,0xd84d,0xdf7a,0xd84d,0xdf7b,0xd84d,0xdf7c, - 0xd84d,0xdf7d,0xd84d,0xdf7e,0xd84d,0xdf7f,0xd84d,0xdf80,0xd84d,0xdf81, - 0xd84d,0xdf82,0xd84d,0xdf83,0xd84d,0xdf84,0xd84d,0xdf85,0xd84d,0xdf86, - 0xd84d,0xdf87,0xd84d,0xdf88,0xd84d,0xdf89,0xd84d,0xdf8a,0xd84d,0xdf8b, - 0xd84d,0xdf8c,0xd84d,0xdf8d,0xd84d,0xdf8e,0xd84d,0xdf8f,0xd84d,0xdf90, - 0xd84d,0xdf91,0xd84d,0xdf92,0xd84d,0xdf93,0xd84d,0xdf94,0xd84d,0xdf95, - 0xd84d,0xdf96,0xd84d,0xdf97,0xd84d,0xdf98,0xd84d,0xdf99,0xd84d,0xdf9a, - 0xd84d,0xdf9b,0xd84d,0xdf9c,0xd84d,0xdf9d,0xd84d,0xdf9e,0xd84d,0xdf9f, - 0xd84d,0xdfa0,0xd84d,0xdfa1,0xd84d,0xdfa2,0xd84d,0xdfa3,0xd84d,0xdfa4, - 0xd84d,0xdfa5,0xd84d,0xdfa6,0xd84d,0xdfa7,0xd84d,0xdfa8,0xd84d,0xdfa9, - 0xd84d,0xdfaa,0xd84d,0xdfab,0xd84d,0xdfac,0xd84d,0xdfad,0xd84d,0xdfae, - 0xd84d,0xdfaf,0xd84d,0xdfb0,0xd84d,0xdfb1,0xd84d,0xdfb2,0xd84d,0xdfb3, - 0xd84d,0xdfb4,0xd84d,0xdfb5,0xd84d,0xdfb6,0xd84d,0xdfb7,0xd84d,0xdfb8, - 0xd84d,0xdfb9,0xd84d,0xdfba,0xd84d,0xdfbb,0xd84d,0xdfbc,0xd84d,0xdfbd, - 0xd84d,0xdfbe,0xd84d,0xdfbf,0xd84d,0xdfc0,0xd84d,0xdfc1,0xd84d,0xdfc2, - 0xd84d,0xdfc3,0xd84d,0xdfc4,0xd84d,0xdfc5,0xd84d,0xdfc6,0xd84d,0xdfc7, - 0xd84d,0xdfc8,0xd84d,0xdfc9,0xd84d,0xdfca,0xd84d,0xdfcb,0xd84d,0xdfcc, - 0xd84d,0xdfcd,0xd84d,0xdfce,0xd84d,0xdfcf,0xd84d,0xdfd0,0xd84d,0xdfd1, - 0xd84d,0xdfd2,0xd84d,0xdfd3,0xd84d,0xdfd4,0xd84d,0xdfd5,0xd84d,0xdfd6, - 0xd84d,0xdfd7,0xd84d,0xdfd8,0xd84d,0xdfd9,0xd84d,0xdfda,0xd84d,0xdfdb, - 0xd84d,0xdfdc,0xd84d,0xdfdd,0xd84d,0xdfde,0xd84d,0xdfdf,0xd84d,0xdfe0, - 0xd84d,0xdfe1,0xd84d,0xdfe2,0xd84d,0xdfe3,0xd84d,0xdfe4,0xd84d,0xdfe5, - 0xd84d,0xdfe6,0xd84d,0xdfe7,0xd84d,0xdfe8,0xd84d,0xdfe9,0xd84d,0xdfea, - 0xd84d,0xdfeb,0xd84d,0xdfec,0xd84d,0xdfed,0xd84d,0xdfee,0xd84d,0xdfef, - 0xd84d,0xdff0,0xd84d,0xdff1,0xd84d,0xdff2,0xd84d,0xdff3,0xd84d,0xdff4, - 0xd84d,0xdff5,0xd84d,0xdff6,0xd84d,0xdff7,0xd84d,0xdff8,0xd84d,0xdff9, - 0xd84d,0xdffa,0xd84d,0xdffb,0xd84d,0xdffc,0xd84d,0xdffd,0xd84d,0xdffe, - 0xd84d,0xdfff,0xd84e,0xdc00,0xd84e,0xdc01,0xd84e,0xdc02,0xd84e,0xdc03, - 0xd84e,0xdc04,0xd84e,0xdc05,0xd84e,0xdc06,0xd84e,0xdc07,0xd84e,0xdc08, - 0xd84e,0xdc09,0xd84e,0xdc0a,0xd84e,0xdc0b,0xd84e,0xdc0c,0xd84e,0xdc0d, - 0xd84e,0xdc0e,0xd84e,0xdc0f,0xd84e,0xdc10,0xd84e,0xdc11,0xd84e,0xdc12, - 0xd84e,0xdc13,0xd84e,0xdc14,0xd84e,0xdc15,0xd84e,0xdc16,0xd84e,0xdc17, - 0xd84e,0xdc18,0xd84e,0xdc19,0xd84e,0xdc1a,0xd84e,0xdc1b,0xd84e,0xdc1c, - 0xd84e,0xdc1d,0xd84e,0xdc1e,0xd84e,0xdc1f,0xd84e,0xdc20,0xd84e,0xdc21, - 0xd84e,0xdc22,0xd84e,0xdc23,0xd84e,0xdc24,0xd84e,0xdc25,0xd84e,0xdc26, - 0xd84e,0xdc27,0xd84e,0xdc28,0xd84e,0xdc29,0xd84e,0xdc2a,0xd84e,0xdc2b, - 0xd84e,0xdc2c,0xd84e,0xdc2d,0xd84e,0xdc2e,0xd84e,0xdc2f,0xd84e,0xdc30, - 0xd84e,0xdc31,0xd84e,0xdc32,0xd84e,0xdc33,0xd84e,0xdc34,0xd84e,0xdc35, - 0xd84e,0xdc36,0xd84e,0xdc37,0xd84e,0xdc38,0xd84e,0xdc39,0xd84e,0xdc3a, - 0xd84e,0xdc3b,0xd84e,0xdc3c,0xd84e,0xdc3d,0xd84e,0xdc3e,0xd84e,0xdc3f, - 0xd84e,0xdc40,0xd84e,0xdc41,0xd84e,0xdc42,0xd84e,0xdc43,0xd84e,0xdc44, - 0xd84e,0xdc45,0xd84e,0xdc46,0xd84e,0xdc47,0xd84e,0xdc48,0xd84e,0xdc49, - 0xd84e,0xdc4a,0xd84e,0xdc4b,0xd84e,0xdc4c,0xd84e,0xdc4d,0xd84e,0xdc4e, - 0xd84e,0xdc4f,0xd84e,0xdc50,0xd84e,0xdc51,0xd84e,0xdc52,0xd84e,0xdc53, - 0xd84e,0xdc54,0xd84e,0xdc55,0xd84e,0xdc56,0xd84e,0xdc57,0xd84e,0xdc58, - 0xd84e,0xdc59,0xd84e,0xdc5a,0xd84e,0xdc5b,0xd84e,0xdc5c,0xd84e,0xdc5d, - 0xd84e,0xdc5e,0xd84e,0xdc5f,0xd84e,0xdc60,0xd84e,0xdc61,0xd84e,0xdc62, - 0xd84e,0xdc63,0xd84e,0xdc64,0xd84e,0xdc65,0xd84e,0xdc66,0xd84e,0xdc67, - 0xd84e,0xdc68,0xd84e,0xdc69,0xd84e,0xdc6a,0xd84e,0xdc6b,0xd84e,0xdc6c, - 0xd84e,0xdc6d,0xd84e,0xdc6e,0xd84e,0xdc6f,0xd84e,0xdc70,0xd84e,0xdc71, - 0xd84e,0xdc72,0xd84e,0xdc73,0xd84e,0xdc74,0xd84e,0xdc75,0xd84e,0xdc76, - 0xd84e,0xdc77,0xd84e,0xdc78,0xd84e,0xdc79,0xd84e,0xdc7a,0xd84e,0xdc7b, - 0xd84e,0xdc7c,0xd84e,0xdc7d,0xd84e,0xdc7e,0xd84e,0xdc7f,0xd84e,0xdc80, - 0xd84e,0xdc81,0xd84e,0xdc82,0xd84e,0xdc83,0xd84e,0xdc84,0xd84e,0xdc85, - 0xd84e,0xdc86,0xd84e,0xdc87,0xd84e,0xdc88,0xd84e,0xdc89,0xd84e,0xdc8a, - 0xd84e,0xdc8b,0xd84e,0xdc8c,0xd84e,0xdc8d,0xd84e,0xdc8e,0xd84e,0xdc8f, - 0xd84e,0xdc90,0xd84e,0xdc91,0xd84e,0xdc92,0xd84e,0xdc93,0xd84e,0xdc94, - 0xd84e,0xdc95,0xd84e,0xdc96,0xd84e,0xdc97,0xd84e,0xdc98,0xd84e,0xdc99, - 0xd84e,0xdc9a,0xd84e,0xdc9b,0xd84e,0xdc9c,0xd84e,0xdc9d,0xd84e,0xdc9e, - 0xd84e,0xdc9f,0xd84e,0xdca0,0xd84e,0xdca1,0xd84e,0xdca2,0xd84e,0xdca3, - 0xd84e,0xdca4,0xd84e,0xdca5,0xd84e,0xdca6,0xd84e,0xdca7,0xd84e,0xdca8, - 0xd84e,0xdca9,0xd84e,0xdcaa,0xd84e,0xdcab,0xd84e,0xdcac,0xd84e,0xdcad, - 0xd84e,0xdcae,0xd84e,0xdcaf,0xd84e,0xdcb0,0xd84e,0xdcb1,0xd84e,0xdcb2, - 0xd84e,0xdcb3,0xd84e,0xdcb4,0xd84e,0xdcb5,0xd84e,0xdcb6,0xd84e,0xdcb7, - 0xd84e,0xdcb8,0xd84e,0xdcb9,0xd84e,0xdcba,0xd84e,0xdcbb,0xd84e,0xdcbc, - 0xd84e,0xdcbd,0xd84e,0xdcbe,0xd84e,0xdcbf,0xd84e,0xdcc0,0xd84e,0xdcc1, - 0xd84e,0xdcc2,0xd84e,0xdcc3,0xd84e,0xdcc4,0xd84e,0xdcc5,0xd84e,0xdcc6, - 0xd84e,0xdcc7,0xd84e,0xdcc8,0xd84e,0xdcc9,0xd84e,0xdcca,0xd84e,0xdccb, - 0xd84e,0xdccc,0xd84e,0xdccd,0xd84e,0xdcce,0xd84e,0xdccf,0xd84e,0xdcd0, - 0xd84e,0xdcd1,0xd84e,0xdcd2,0xd84e,0xdcd3,0xd84e,0xdcd4,0xd84e,0xdcd5, - 0xd84e,0xdcd6,0xd84e,0xdcd7,0xd84e,0xdcd8,0xd84e,0xdcd9,0xd84e,0xdcda, - 0xd84e,0xdcdb,0xd84e,0xdcdc,0xd84e,0xdcdd,0xd84e,0xdcde,0xd84e,0xdcdf, - 0xd84e,0xdce0,0xd84e,0xdce1,0xd84e,0xdce2,0xd84e,0xdce3,0xd84e,0xdce4, - 0xd84e,0xdce5,0xd84e,0xdce6,0xd84e,0xdce7,0xd84e,0xdce8,0xd84e,0xdce9, - 0xd84e,0xdcea,0xd84e,0xdceb,0xd84e,0xdcec,0xd84e,0xdced,0xd84e,0xdcee, - 0xd84e,0xdcef,0xd84e,0xdcf0,0xd84e,0xdcf1,0xd84e,0xdcf2,0xd84e,0xdcf3, - 0xd84e,0xdcf4,0xd84e,0xdcf5,0xd84e,0xdcf6,0xd84e,0xdcf7,0xd84e,0xdcf8, - 0xd84e,0xdcf9,0xd84e,0xdcfa,0xd84e,0xdcfb,0xd84e,0xdcfc,0xd84e,0xdcfd, - 0xd84e,0xdcfe,0xd84e,0xdcff,0xd84e,0xdd00,0xd84e,0xdd01,0xd84e,0xdd02, - 0xd84e,0xdd03,0xd84e,0xdd04,0xd84e,0xdd05,0xd84e,0xdd06,0xd84e,0xdd07, - 0xd84e,0xdd08,0xd84e,0xdd09,0xd84e,0xdd0a,0xd84e,0xdd0b,0xd84e,0xdd0c, - 0xd84e,0xdd0d,0xd84e,0xdd0e,0xd84e,0xdd0f,0xd84e,0xdd10,0xd84e,0xdd11, - 0xd84e,0xdd12,0xd84e,0xdd13,0xd84e,0xdd14,0xd84e,0xdd15,0xd84e,0xdd16, - 0xd84e,0xdd17,0xd84e,0xdd18,0xd84e,0xdd19,0xd84e,0xdd1a,0xd84e,0xdd1b, - 0xd84e,0xdd1c,0xd84e,0xdd1d,0xd84e,0xdd1e,0xd84e,0xdd1f,0xd84e,0xdd20, - 0xd84e,0xdd21,0xd84e,0xdd22,0xd84e,0xdd23,0xd84e,0xdd24,0xd84e,0xdd25, - 0xd84e,0xdd26,0xd84e,0xdd27,0xd84e,0xdd28,0xd84e,0xdd29,0xd84e,0xdd2a, - 0xd84e,0xdd2b,0xd84e,0xdd2c,0xd84e,0xdd2d,0xd84e,0xdd2e,0xd84e,0xdd2f, - 0xd84e,0xdd30,0xd84e,0xdd31,0xd84e,0xdd32,0xd84e,0xdd33,0xd84e,0xdd34, - 0xd84e,0xdd35,0xd84e,0xdd36,0xd84e,0xdd37,0xd84e,0xdd38,0xd84e,0xdd39, - 0xd84e,0xdd3a,0xd84e,0xdd3b,0xd84e,0xdd3c,0xd84e,0xdd3d,0xd84e,0xdd3e, - 0xd84e,0xdd3f,0xd84e,0xdd40,0xd84e,0xdd41,0xd84e,0xdd42,0xd84e,0xdd43, - 0xd84e,0xdd44,0xd84e,0xdd45,0xd84e,0xdd46,0xd84e,0xdd47,0xd84e,0xdd48, - 0xd84e,0xdd49,0xd84e,0xdd4a,0xd84e,0xdd4b,0xd84e,0xdd4c,0xd84e,0xdd4d, - 0xd84e,0xdd4e,0xd84e,0xdd4f,0xd84e,0xdd50,0xd84e,0xdd51,0xd84e,0xdd52, - 0xd84e,0xdd53,0xd84e,0xdd54,0xd84e,0xdd55,0xd84e,0xdd56,0xd84e,0xdd57, - 0xd84e,0xdd58,0xd84e,0xdd59,0xd84e,0xdd5a,0xd84e,0xdd5b,0xd84e,0xdd5c, - 0xd84e,0xdd5d,0xd84e,0xdd5e,0xd84e,0xdd5f,0xd84e,0xdd60,0xd84e,0xdd61, - 0xd84e,0xdd62,0xd84e,0xdd63,0xd84e,0xdd64,0xd84e,0xdd65,0xd84e,0xdd66, - 0xd84e,0xdd67,0xd84e,0xdd68,0xd84e,0xdd69,0xd84e,0xdd6a,0xd84e,0xdd6b, - 0xd84e,0xdd6c,0xd84e,0xdd6d,0xd84e,0xdd6e,0xd84e,0xdd6f,0xd84e,0xdd70, - 0xd84e,0xdd71,0xd84e,0xdd72,0xd84e,0xdd73,0xd84e,0xdd74,0xd84e,0xdd75, - 0xd84e,0xdd76,0xd84e,0xdd77,0xd84e,0xdd78,0xd84e,0xdd79,0xd84e,0xdd7a, - 0xd84e,0xdd7b,0xd84e,0xdd7c,0xd84e,0xdd7d,0xd84e,0xdd7e,0xd84e,0xdd7f, - 0xd84e,0xdd80,0xd84e,0xdd81,0xd84e,0xdd82,0xd84e,0xdd83,0xd84e,0xdd84, - 0xd84e,0xdd85,0xd84e,0xdd86,0xd84e,0xdd87,0xd84e,0xdd88,0xd84e,0xdd89, - 0xd84e,0xdd8a,0xd84e,0xdd8b,0xd84e,0xdd8c,0xd84e,0xdd8d,0xd84e,0xdd8e, - 0xd84e,0xdd8f,0xd84e,0xdd90,0xd84e,0xdd91,0xd84e,0xdd92,0xd84e,0xdd93, - 0xd84e,0xdd94,0xd84e,0xdd95,0xd84e,0xdd96,0xd84e,0xdd97,0xd84e,0xdd98, - 0xd84e,0xdd99,0xd84e,0xdd9a,0xd84e,0xdd9b,0xd84e,0xdd9c,0xd84e,0xdd9d, - 0xd84e,0xdd9e,0xd84e,0xdd9f,0xd84e,0xdda0,0xd84e,0xdda1,0xd84e,0xdda2, - 0xd84e,0xdda3,0xd84e,0xdda4,0xd84e,0xdda5,0xd84e,0xdda6,0xd84e,0xdda7, - 0xd84e,0xdda8,0xd84e,0xdda9,0xd84e,0xddaa,0xd84e,0xddab,0xd84e,0xddac, - 0xd84e,0xddad,0xd84e,0xddae,0xd84e,0xddaf,0xd84e,0xddb0,0xd84e,0xddb1, - 0xd84e,0xddb2,0xd84e,0xddb3,0xd84e,0xddb4,0xd84e,0xddb5,0xd84e,0xddb6, - 0xd84e,0xddb7,0xd84e,0xddb8,0xd84e,0xddb9,0xd84e,0xddba,0xd84e,0xddbb, - 0xd84e,0xddbc,0xd84e,0xddbd,0xd84e,0xddbe,0xd84e,0xddbf,0xd84e,0xddc0, - 0xd84e,0xddc1,0xd84e,0xddc2,0xd84e,0xddc3,0xd84e,0xddc4,0xd84e,0xddc5, - 0xd84e,0xddc6,0xd84e,0xddc7,0xd84e,0xddc8,0xd84e,0xddc9,0xd84e,0xddca, - 0xd84e,0xddcb,0xd84e,0xddcc,0xd84e,0xddcd,0xd84e,0xddce,0xd84e,0xddcf, - 0xd84e,0xddd0,0xd84e,0xddd1,0xd84e,0xddd2,0xd84e,0xddd3,0xd84e,0xddd4, - 0xd84e,0xddd5,0xd84e,0xddd6,0xd84e,0xddd7,0xd84e,0xddd8,0xd84e,0xddd9, - 0xd84e,0xddda,0xd84e,0xdddb,0xd84e,0xdddc,0xd84e,0xdddd,0xd84e,0xddde, - 0xd84e,0xdddf,0xd84e,0xdde0,0xd84e,0xdde1,0xd84e,0xdde2,0xd84e,0xdde3, - 0xd84e,0xdde4,0xd84e,0xdde5,0xd84e,0xdde6,0xd84e,0xdde7,0xd84e,0xdde8, - 0xd84e,0xdde9,0xd84e,0xddea,0xd84e,0xddeb,0xd84e,0xddec,0xd84e,0xdded, - 0xd84e,0xddee,0xd84e,0xddef,0xd84e,0xddf0,0xd84e,0xddf1,0xd84e,0xddf2, - 0xd84e,0xddf3,0xd84e,0xddf4,0xd84e,0xddf5,0xd84e,0xddf6,0xd84e,0xddf7, - 0xd84e,0xddf8,0xd84e,0xddf9,0xd84e,0xddfa,0xd84e,0xddfb,0xd84e,0xddfc, - 0xd84e,0xddfd,0xd84e,0xddfe,0xd84e,0xddff,0xd84e,0xde00,0xd84e,0xde01, - 0xd84e,0xde02,0xd84e,0xde03,0xd84e,0xde04,0xd84e,0xde05,0xd84e,0xde06, - 0xd84e,0xde07,0xd84e,0xde08,0xd84e,0xde09,0xd84e,0xde0a,0xd84e,0xde0b, - 0xd84e,0xde0c,0xd84e,0xde0d,0xd84e,0xde0e,0xd84e,0xde0f,0xd84e,0xde10, - 0xd84e,0xde11,0xd84e,0xde12,0xd84e,0xde13,0xd84e,0xde14,0xd84e,0xde15, - 0xd84e,0xde16,0xd84e,0xde17,0xd84e,0xde18,0xd84e,0xde19,0xd84e,0xde1a, - 0xd84e,0xde1b,0xd84e,0xde1c,0xd84e,0xde1d,0xd84e,0xde1e,0xd84e,0xde1f, - 0xd84e,0xde20,0xd84e,0xde21,0xd84e,0xde22,0xd84e,0xde23,0xd84e,0xde24, - 0xd84e,0xde25,0xd84e,0xde26,0xd84e,0xde27,0xd84e,0xde28,0xd84e,0xde29, - 0xd84e,0xde2a,0xd84e,0xde2b,0xd84e,0xde2c,0xd84e,0xde2d,0xd84e,0xde2e, - 0xd84e,0xde2f,0xd84e,0xde30,0xd84e,0xde31,0xd84e,0xde32,0xd84e,0xde33, - 0xd84e,0xde34,0xd84e,0xde35,0xd84e,0xde36,0xd84e,0xde37,0xd84e,0xde38, - 0xd84e,0xde39,0xd84e,0xde3a,0xd84e,0xde3b,0xd84e,0xde3c,0xd84e,0xde3d, - 0xd84e,0xde3e,0xd84e,0xde3f,0xd84e,0xde40,0xd84e,0xde41,0xd84e,0xde42, - 0xd84e,0xde43,0xd84e,0xde44,0xd84e,0xde45,0xd84e,0xde46,0xd84e,0xde47, - 0xd84e,0xde48,0xd84e,0xde49,0xd84e,0xde4a,0xd84e,0xde4b,0xd84e,0xde4c, - 0xd84e,0xde4d,0xd84e,0xde4e,0xd84e,0xde4f,0xd84e,0xde50,0xd84e,0xde51, - 0xd84e,0xde52,0xd84e,0xde53,0xd84e,0xde54,0xd84e,0xde55,0xd84e,0xde56, - 0xd84e,0xde57,0xd84e,0xde58,0xd84e,0xde59,0xd84e,0xde5a,0xd84e,0xde5b, - 0xd84e,0xde5c,0xd84e,0xde5d,0xd84e,0xde5e,0xd84e,0xde5f,0xd84e,0xde60, - 0xd84e,0xde61,0xd84e,0xde62,0xd84e,0xde63,0xd84e,0xde64,0xd84e,0xde65, - 0xd84e,0xde66,0xd84e,0xde67,0xd84e,0xde68,0xd84e,0xde69,0xd84e,0xde6a, - 0xd84e,0xde6b,0xd84e,0xde6c,0xd84e,0xde6d,0xd84e,0xde6e,0xd84e,0xde6f, - 0xd84e,0xde70,0xd84e,0xde71,0xd84e,0xde72,0xd84e,0xde73,0xd84e,0xde74, - 0xd84e,0xde75,0xd84e,0xde76,0xd84e,0xde77,0xd84e,0xde78,0xd84e,0xde79, - 0xd84e,0xde7a,0xd84e,0xde7b,0xd84e,0xde7c,0xd84e,0xde7d,0xd84e,0xde7e, - 0xd84e,0xde7f,0xd84e,0xde80,0xd84e,0xde81,0xd84e,0xde82,0xd84e,0xde83, - 0xd84e,0xde84,0xd84e,0xde85,0xd84e,0xde86,0xd84e,0xde87,0xd84e,0xde88, - 0xd84e,0xde89,0xd84e,0xde8a,0xd84e,0xde8b,0xd84e,0xde8c,0xd84e,0xde8d, - 0xd84e,0xde8e,0xd84e,0xde8f,0xd84e,0xde90,0xd84e,0xde91,0xd84e,0xde92, - 0xd84e,0xde93,0xd84e,0xde94,0xd84e,0xde95,0xd84e,0xde96,0xd84e,0xde97, - 0xd84e,0xde98,0xd84e,0xde99,0xd84e,0xde9a,0xd84e,0xde9b,0xd84e,0xde9c, - 0xd84e,0xde9d,0xd84e,0xde9e,0xd84e,0xde9f,0xd84e,0xdea0,0xd84e,0xdea1, - 0xd84e,0xdea2,0xd84e,0xdea3,0xd84e,0xdea4,0xd84e,0xdea5,0xd84e,0xdea6, - 0xd84e,0xdea7,0xd84e,0xdea8,0xd84e,0xdea9,0xd84e,0xdeaa,0xd84e,0xdeab, - 0xd84e,0xdeac,0xd84e,0xdead,0xd84e,0xdeae,0xd84e,0xdeaf,0xd84e,0xdeb0, - 0xd84e,0xdeb1,0xd84e,0xdeb2,0xd84e,0xdeb3,0xd84e,0xdeb4,0xd84e,0xdeb5, - 0xd84e,0xdeb6,0xd84e,0xdeb7,0xd84e,0xdeb8,0xd84e,0xdeb9,0xd84e,0xdeba, - 0xd84e,0xdebb,0xd84e,0xdebc,0xd84e,0xdebd,0xd84e,0xdebe,0xd84e,0xdebf, - 0xd84e,0xdec0,0xd84e,0xdec1,0xd84e,0xdec2,0xd84e,0xdec3,0xd84e,0xdec4, - 0xd84e,0xdec5,0xd84e,0xdec6,0xd84e,0xdec7,0xd84e,0xdec8,0xd84e,0xdec9, - 0xd84e,0xdeca,0xd84e,0xdecb,0xd84e,0xdecc,0xd84e,0xdecd,0xd84e,0xdece, - 0xd84e,0xdecf,0xd84e,0xded0,0xd84e,0xded1,0xd84e,0xded2,0xd84e,0xded3, - 0xd84e,0xded4,0xd84e,0xded5,0xd84e,0xded6,0xd84e,0xded7,0xd84e,0xded8, - 0xd84e,0xded9,0xd84e,0xdeda,0xd84e,0xdedb,0xd84e,0xdedc,0xd84e,0xdedd, - 0xd84e,0xdede,0xd84e,0xdedf,0xd84e,0xdee0,0xd84e,0xdee1,0xd84e,0xdee2, - 0xd84e,0xdee3,0xd84e,0xdee4,0xd84e,0xdee5,0xd84e,0xdee6,0xd84e,0xdee7, - 0xd84e,0xdee8,0xd84e,0xdee9,0xd84e,0xdeea,0xd84e,0xdeeb,0xd84e,0xdeec, - 0xd84e,0xdeed,0xd84e,0xdeee,0xd84e,0xdeef,0xd84e,0xdef0,0xd84e,0xdef1, - 0xd84e,0xdef2,0xd84e,0xdef3,0xd84e,0xdef4,0xd84e,0xdef5,0xd84e,0xdef6, - 0xd84e,0xdef7,0xd84e,0xdef8,0xd84e,0xdef9,0xd84e,0xdefa,0xd84e,0xdefb, - 0xd84e,0xdefc,0xd84e,0xdefd,0xd84e,0xdefe,0xd84e,0xdeff,0xd84e,0xdf00, - 0xd84e,0xdf01,0xd84e,0xdf02,0xd84e,0xdf03,0xd84e,0xdf04,0xd84e,0xdf05, - 0xd84e,0xdf06,0xd84e,0xdf07,0xd84e,0xdf08,0xd84e,0xdf09,0xd84e,0xdf0a, - 0xd84e,0xdf0b,0xd84e,0xdf0c,0xd84e,0xdf0d,0xd84e,0xdf0e,0xd84e,0xdf0f, - 0xd84e,0xdf10,0xd84e,0xdf11,0xd84e,0xdf12,0xd84e,0xdf13,0xd84e,0xdf14, - 0xd84e,0xdf15,0xd84e,0xdf16,0xd84e,0xdf17,0xd84e,0xdf18,0xd84e,0xdf19, - 0xd84e,0xdf1a,0xd84e,0xdf1b,0xd84e,0xdf1c,0xd84e,0xdf1d,0xd84e,0xdf1e, - 0xd84e,0xdf1f,0xd84e,0xdf20,0xd84e,0xdf21,0xd84e,0xdf22,0xd84e,0xdf23, - 0xd84e,0xdf24,0xd84e,0xdf25,0xd84e,0xdf26,0xd84e,0xdf27,0xd84e,0xdf28, - 0xd84e,0xdf29,0xd84e,0xdf2a,0xd84e,0xdf2b,0xd84e,0xdf2c,0xd84e,0xdf2d, - 0xd84e,0xdf2e,0xd84e,0xdf2f,0xd84e,0xdf30,0xd84e,0xdf31,0xd84e,0xdf32, - 0xd84e,0xdf33,0xd84e,0xdf34,0xd84e,0xdf35,0xd84e,0xdf36,0xd84e,0xdf37, - 0xd84e,0xdf38,0xd84e,0xdf39,0xd84e,0xdf3a,0xd84e,0xdf3b,0xd84e,0xdf3c, - 0xd84e,0xdf3d,0xd84e,0xdf3e,0xd84e,0xdf3f,0xd84e,0xdf40,0xd84e,0xdf41, - 0xd84e,0xdf42,0xd84e,0xdf43,0xd84e,0xdf44,0xd84e,0xdf45,0xd84e,0xdf46, - 0xd84e,0xdf47,0xd84e,0xdf48,0xd84e,0xdf49,0xd84e,0xdf4a,0xd84e,0xdf4b, - 0xd84e,0xdf4c,0xd84e,0xdf4d,0xd84e,0xdf4e,0xd84e,0xdf4f,0xd84e,0xdf50, - 0xd84e,0xdf51,0xd84e,0xdf52,0xd84e,0xdf53,0xd84e,0xdf54,0xd84e,0xdf55, - 0xd84e,0xdf56,0xd84e,0xdf57,0xd84e,0xdf58,0xd84e,0xdf59,0xd84e,0xdf5a, - 0xd84e,0xdf5b,0xd84e,0xdf5c,0xd84e,0xdf5d,0xd84e,0xdf5e,0xd84e,0xdf5f, - 0xd84e,0xdf60,0xd84e,0xdf61,0xd84e,0xdf62,0xd84e,0xdf63,0xd84e,0xdf64, - 0xd84e,0xdf65,0xd84e,0xdf66,0xd84e,0xdf67,0xd84e,0xdf68,0xd84e,0xdf69, - 0xd84e,0xdf6a,0xd84e,0xdf6b,0xd84e,0xdf6c,0xd84e,0xdf6d,0xd84e,0xdf6e, - 0xd84e,0xdf6f,0xd84e,0xdf70,0xd84e,0xdf71,0xd84e,0xdf72,0xd84e,0xdf73, - 0xd84e,0xdf74,0xd84e,0xdf75,0xd84e,0xdf76,0xd84e,0xdf77,0xd84e,0xdf78, - 0xd84e,0xdf79,0xd84e,0xdf7a,0xd84e,0xdf7b,0xd84e,0xdf7c,0xd84e,0xdf7d, - 0xd84e,0xdf7e,0xd84e,0xdf7f,0xd84e,0xdf80,0xd84e,0xdf81,0xd84e,0xdf82, - 0xd84e,0xdf83,0xd84e,0xdf84,0xd84e,0xdf85,0xd84e,0xdf86,0xd84e,0xdf87, - 0xd84e,0xdf88,0xd84e,0xdf89,0xd84e,0xdf8a,0xd84e,0xdf8b,0xd84e,0xdf8c, - 0xd84e,0xdf8d,0xd84e,0xdf8e,0xd84e,0xdf8f,0xd84e,0xdf90,0xd84e,0xdf91, - 0xd84e,0xdf92,0xd84e,0xdf93,0xd84e,0xdf94,0xd84e,0xdf95,0xd84e,0xdf96, - 0xd84e,0xdf97,0xd84e,0xdf98,0xd84e,0xdf99,0xd84e,0xdf9a,0xd84e,0xdf9b, - 0xd84e,0xdf9c,0xd84e,0xdf9d,0xd84e,0xdf9e,0xd84e,0xdf9f,0xd84e,0xdfa0, - 0xd84e,0xdfa1,0xd84e,0xdfa2,0xd84e,0xdfa3,0xd84e,0xdfa4,0xd84e,0xdfa5, - 0xd84e,0xdfa6,0xd84e,0xdfa7,0xd84e,0xdfa8,0xd84e,0xdfa9,0xd84e,0xdfaa, - 0xd84e,0xdfab,0xd84e,0xdfac,0xd84e,0xdfad,0xd84e,0xdfae,0xd84e,0xdfaf, - 0xd84e,0xdfb0,0xd84e,0xdfb1,0xd84e,0xdfb2,0xd84e,0xdfb3,0xd84e,0xdfb4, - 0xd84e,0xdfb5,0xd84e,0xdfb6,0xd84e,0xdfb7,0xd84e,0xdfb8,0xd84e,0xdfb9, - 0xd84e,0xdfba,0xd84e,0xdfbb,0xd84e,0xdfbc,0xd84e,0xdfbd,0xd84e,0xdfbe, - 0xd84e,0xdfbf,0xd84e,0xdfc0,0xd84e,0xdfc1,0xd84e,0xdfc2,0xd84e,0xdfc3, - 0xd84e,0xdfc4,0xd84e,0xdfc5,0xd84e,0xdfc6,0xd84e,0xdfc7,0xd84e,0xdfc8, - 0xd84e,0xdfc9,0xd84e,0xdfca,0xd84e,0xdfcb,0xd84e,0xdfcc,0xd84e,0xdfcd, - 0xd84e,0xdfce,0xd84e,0xdfcf,0xd84e,0xdfd0,0xd84e,0xdfd1,0xd84e,0xdfd2, - 0xd84e,0xdfd3,0xd84e,0xdfd4,0xd84e,0xdfd5,0xd84e,0xdfd6,0xd84e,0xdfd7, - 0xd84e,0xdfd8,0xd84e,0xdfd9,0xd84e,0xdfda,0xd84e,0xdfdb,0xd84e,0xdfdc, - 0xd84e,0xdfdd,0xd84e,0xdfde,0xd84e,0xdfdf,0xd84e,0xdfe0,0xd84e,0xdfe1, - 0xd84e,0xdfe2,0xd84e,0xdfe3,0xd84e,0xdfe4,0xd84e,0xdfe5,0xd84e,0xdfe6, - 0xd84e,0xdfe7,0xd84e,0xdfe8,0xd84e,0xdfe9,0xd84e,0xdfea,0xd84e,0xdfeb, - 0xd84e,0xdfec,0xd84e,0xdfed,0xd84e,0xdfee,0xd84e,0xdfef,0xd84e,0xdff0, - 0xd84e,0xdff1,0xd84e,0xdff2,0xd84e,0xdff3,0xd84e,0xdff4,0xd84e,0xdff5, - 0xd84e,0xdff6,0xd84e,0xdff7,0xd84e,0xdff8,0xd84e,0xdff9,0xd84e,0xdffa, - 0xd84e,0xdffb,0xd84e,0xdffc,0xd84e,0xdffd,0xd84e,0xdffe,0xd84e,0xdfff, - 0xd84f,0xdc00,0xd84f,0xdc01,0xd84f,0xdc02,0xd84f,0xdc03,0xd84f,0xdc04, - 0xd84f,0xdc05,0xd84f,0xdc06,0xd84f,0xdc07,0xd84f,0xdc08,0xd84f,0xdc09, - 0xd84f,0xdc0a,0xd84f,0xdc0b,0xd84f,0xdc0c,0xd84f,0xdc0d,0xd84f,0xdc0e, - 0xd84f,0xdc0f,0xd84f,0xdc10,0xd84f,0xdc11,0xd84f,0xdc12,0xd84f,0xdc13, - 0xd84f,0xdc14,0xd84f,0xdc15,0xd84f,0xdc16,0xd84f,0xdc17,0xd84f,0xdc18, - 0xd84f,0xdc19,0xd84f,0xdc1a,0xd84f,0xdc1b,0xd84f,0xdc1c,0xd84f,0xdc1d, - 0xd84f,0xdc1e,0xd84f,0xdc1f,0xd84f,0xdc20,0xd84f,0xdc21,0xd84f,0xdc22, - 0xd84f,0xdc23,0xd84f,0xdc24,0xd84f,0xdc25,0xd84f,0xdc26,0xd84f,0xdc27, - 0xd84f,0xdc28,0xd84f,0xdc29,0xd84f,0xdc2a,0xd84f,0xdc2b,0xd84f,0xdc2c, - 0xd84f,0xdc2d,0xd84f,0xdc2e,0xd84f,0xdc2f,0xd84f,0xdc30,0xd84f,0xdc31, - 0xd84f,0xdc32,0xd84f,0xdc33,0xd84f,0xdc34,0xd84f,0xdc35,0xd84f,0xdc36, - 0xd84f,0xdc37,0xd84f,0xdc38,0xd84f,0xdc39,0xd84f,0xdc3a,0xd84f,0xdc3b, - 0xd84f,0xdc3c,0xd84f,0xdc3d,0xd84f,0xdc3e,0xd84f,0xdc3f,0xd84f,0xdc40, - 0xd84f,0xdc41,0xd84f,0xdc42,0xd84f,0xdc43,0xd84f,0xdc44,0xd84f,0xdc45, - 0xd84f,0xdc46,0xd84f,0xdc47,0xd84f,0xdc48,0xd84f,0xdc49,0xd84f,0xdc4a, - 0xd84f,0xdc4b,0xd84f,0xdc4c,0xd84f,0xdc4d,0xd84f,0xdc4e,0xd84f,0xdc4f, - 0xd84f,0xdc50,0xd84f,0xdc51,0xd84f,0xdc52,0xd84f,0xdc53,0xd84f,0xdc54, - 0xd84f,0xdc55,0xd84f,0xdc56,0xd84f,0xdc57,0xd84f,0xdc58,0xd84f,0xdc59, - 0xd84f,0xdc5a,0xd84f,0xdc5b,0xd84f,0xdc5c,0xd84f,0xdc5d,0xd84f,0xdc5e, - 0xd84f,0xdc5f,0xd84f,0xdc60,0xd84f,0xdc61,0xd84f,0xdc62,0xd84f,0xdc63, - 0xd84f,0xdc64,0xd84f,0xdc65,0xd84f,0xdc66,0xd84f,0xdc67,0xd84f,0xdc68, - 0xd84f,0xdc69,0xd84f,0xdc6a,0xd84f,0xdc6b,0xd84f,0xdc6c,0xd84f,0xdc6d, - 0xd84f,0xdc6e,0xd84f,0xdc6f,0xd84f,0xdc70,0xd84f,0xdc71,0xd84f,0xdc72, - 0xd84f,0xdc73,0xd84f,0xdc74,0xd84f,0xdc75,0xd84f,0xdc76,0xd84f,0xdc77, - 0xd84f,0xdc78,0xd84f,0xdc79,0xd84f,0xdc7a,0xd84f,0xdc7b,0xd84f,0xdc7c, - 0xd84f,0xdc7d,0xd84f,0xdc7e,0xd84f,0xdc7f,0xd84f,0xdc80,0xd84f,0xdc81, - 0xd84f,0xdc82,0xd84f,0xdc83,0xd84f,0xdc84,0xd84f,0xdc85,0xd84f,0xdc86, - 0xd84f,0xdc87,0xd84f,0xdc88,0xd84f,0xdc89,0xd84f,0xdc8a,0xd84f,0xdc8b, - 0xd84f,0xdc8c,0xd84f,0xdc8d,0xd84f,0xdc8e,0xd84f,0xdc8f,0xd84f,0xdc90, - 0xd84f,0xdc91,0xd84f,0xdc92,0xd84f,0xdc93,0xd84f,0xdc94,0xd84f,0xdc95, - 0xd84f,0xdc96,0xd84f,0xdc97,0xd84f,0xdc98,0xd84f,0xdc99,0xd84f,0xdc9a, - 0xd84f,0xdc9b,0xd84f,0xdc9c,0xd84f,0xdc9d,0xd84f,0xdc9e,0xd84f,0xdc9f, - 0xd84f,0xdca0,0xd84f,0xdca1,0xd84f,0xdca2,0xd84f,0xdca3,0xd84f,0xdca4, - 0xd84f,0xdca5,0xd84f,0xdca6,0xd84f,0xdca7,0xd84f,0xdca8,0xd84f,0xdca9, - 0xd84f,0xdcaa,0xd84f,0xdcab,0xd84f,0xdcac,0xd84f,0xdcad,0xd84f,0xdcae, - 0xd84f,0xdcaf,0xd84f,0xdcb0,0xd84f,0xdcb1,0xd84f,0xdcb2,0xd84f,0xdcb3, - 0xd84f,0xdcb4,0xd84f,0xdcb5,0xd84f,0xdcb6,0xd84f,0xdcb7,0xd84f,0xdcb8, - 0xd84f,0xdcb9,0xd84f,0xdcba,0xd84f,0xdcbb,0xd84f,0xdcbc,0xd84f,0xdcbd, - 0xd84f,0xdcbe,0xd84f,0xdcbf,0xd84f,0xdcc0,0xd84f,0xdcc1,0xd84f,0xdcc2, - 0xd84f,0xdcc3,0xd84f,0xdcc4,0xd84f,0xdcc5,0xd84f,0xdcc6,0xd84f,0xdcc7, - 0xd84f,0xdcc8,0xd84f,0xdcc9,0xd84f,0xdcca,0xd84f,0xdccb,0xd84f,0xdccc, - 0xd84f,0xdccd,0xd84f,0xdcce,0xd84f,0xdccf,0xd84f,0xdcd0,0xd84f,0xdcd1, - 0xd84f,0xdcd2,0xd84f,0xdcd3,0xd84f,0xdcd4,0xd84f,0xdcd5,0xd84f,0xdcd6, - 0xd84f,0xdcd7,0xd84f,0xdcd8,0xd84f,0xdcd9,0xd84f,0xdcda,0xd84f,0xdcdb, - 0xd84f,0xdcdc,0xd84f,0xdcdd,0xd84f,0xdcde,0xd84f,0xdcdf,0xd84f,0xdce0, - 0xd84f,0xdce1,0xd84f,0xdce2,0xd84f,0xdce3,0xd84f,0xdce4,0xd84f,0xdce5, - 0xd84f,0xdce6,0xd84f,0xdce7,0xd84f,0xdce8,0xd84f,0xdce9,0xd84f,0xdcea, - 0xd84f,0xdceb,0xd84f,0xdcec,0xd84f,0xdced,0xd84f,0xdcee,0xd84f,0xdcef, - 0xd84f,0xdcf0,0xd84f,0xdcf1,0xd84f,0xdcf2,0xd84f,0xdcf3,0xd84f,0xdcf4, - 0xd84f,0xdcf5,0xd84f,0xdcf6,0xd84f,0xdcf7,0xd84f,0xdcf8,0xd84f,0xdcf9, - 0xd84f,0xdcfa,0xd84f,0xdcfb,0xd84f,0xdcfc,0xd84f,0xdcfd,0xd84f,0xdcfe, - 0xd84f,0xdcff,0xd84f,0xdd00,0xd84f,0xdd01,0xd84f,0xdd02,0xd84f,0xdd03, - 0xd84f,0xdd04,0xd84f,0xdd05,0xd84f,0xdd06,0xd84f,0xdd07,0xd84f,0xdd08, - 0xd84f,0xdd09,0xd84f,0xdd0a,0xd84f,0xdd0b,0xd84f,0xdd0c,0xd84f,0xdd0d, - 0xd84f,0xdd0e,0xd84f,0xdd0f,0xd84f,0xdd10,0xd84f,0xdd11,0xd84f,0xdd12, - 0xd84f,0xdd13,0xd84f,0xdd14,0xd84f,0xdd15,0xd84f,0xdd16,0xd84f,0xdd17, - 0xd84f,0xdd18,0xd84f,0xdd19,0xd84f,0xdd1a,0xd84f,0xdd1b,0xd84f,0xdd1c, - 0xd84f,0xdd1d,0xd84f,0xdd1e,0xd84f,0xdd1f,0xd84f,0xdd20,0xd84f,0xdd21, - 0xd84f,0xdd22,0xd84f,0xdd23,0xd84f,0xdd24,0xd84f,0xdd25,0xd84f,0xdd26, - 0xd84f,0xdd27,0xd84f,0xdd28,0xd84f,0xdd29,0xd84f,0xdd2a,0xd84f,0xdd2b, - 0xd84f,0xdd2c,0xd84f,0xdd2d,0xd84f,0xdd2e,0xd84f,0xdd2f,0xd84f,0xdd30, - 0xd84f,0xdd31,0xd84f,0xdd32,0xd84f,0xdd33,0xd84f,0xdd34,0xd84f,0xdd35, - 0xd84f,0xdd36,0xd84f,0xdd37,0xd84f,0xdd38,0xd84f,0xdd39,0xd84f,0xdd3a, - 0xd84f,0xdd3b,0xd84f,0xdd3c,0xd84f,0xdd3d,0xd84f,0xdd3e,0xd84f,0xdd3f, - 0xd84f,0xdd40,0xd84f,0xdd41,0xd84f,0xdd42,0xd84f,0xdd43,0xd84f,0xdd44, - 0xd84f,0xdd45,0xd84f,0xdd46,0xd84f,0xdd47,0xd84f,0xdd48,0xd84f,0xdd49, - 0xd84f,0xdd4a,0xd84f,0xdd4b,0xd84f,0xdd4c,0xd84f,0xdd4d,0xd84f,0xdd4e, - 0xd84f,0xdd4f,0xd84f,0xdd50,0xd84f,0xdd51,0xd84f,0xdd52,0xd84f,0xdd53, - 0xd84f,0xdd54,0xd84f,0xdd55,0xd84f,0xdd56,0xd84f,0xdd57,0xd84f,0xdd58, - 0xd84f,0xdd59,0xd84f,0xdd5a,0xd84f,0xdd5b,0xd84f,0xdd5c,0xd84f,0xdd5d, - 0xd84f,0xdd5e,0xd84f,0xdd5f,0xd84f,0xdd60,0xd84f,0xdd61,0xd84f,0xdd62, - 0xd84f,0xdd63,0xd84f,0xdd64,0xd84f,0xdd65,0xd84f,0xdd66,0xd84f,0xdd67, - 0xd84f,0xdd68,0xd84f,0xdd69,0xd84f,0xdd6a,0xd84f,0xdd6b,0xd84f,0xdd6c, - 0xd84f,0xdd6d,0xd84f,0xdd6e,0xd84f,0xdd6f,0xd84f,0xdd70,0xd84f,0xdd71, - 0xd84f,0xdd72,0xd84f,0xdd73,0xd84f,0xdd74,0xd84f,0xdd75,0xd84f,0xdd76, - 0xd84f,0xdd77,0xd84f,0xdd78,0xd84f,0xdd79,0xd84f,0xdd7a,0xd84f,0xdd7b, - 0xd84f,0xdd7c,0xd84f,0xdd7d,0xd84f,0xdd7e,0xd84f,0xdd7f,0xd84f,0xdd80, - 0xd84f,0xdd81,0xd84f,0xdd82,0xd84f,0xdd83,0xd84f,0xdd84,0xd84f,0xdd85, - 0xd84f,0xdd86,0xd84f,0xdd87,0xd84f,0xdd88,0xd84f,0xdd89,0xd84f,0xdd8a, - 0xd84f,0xdd8b,0xd84f,0xdd8c,0xd84f,0xdd8d,0xd84f,0xdd8e,0xd84f,0xdd8f, - 0xd84f,0xdd90,0xd84f,0xdd91,0xd84f,0xdd92,0xd84f,0xdd93,0xd84f,0xdd94, - 0xd84f,0xdd95,0xd84f,0xdd96,0xd84f,0xdd97,0xd84f,0xdd98,0xd84f,0xdd99, - 0xd84f,0xdd9a,0xd84f,0xdd9b,0xd84f,0xdd9c,0xd84f,0xdd9d,0xd84f,0xdd9e, - 0xd84f,0xdd9f,0xd84f,0xdda0,0xd84f,0xdda1,0xd84f,0xdda2,0xd84f,0xdda3, - 0xd84f,0xdda4,0xd84f,0xdda5,0xd84f,0xdda6,0xd84f,0xdda7,0xd84f,0xdda8, - 0xd84f,0xdda9,0xd84f,0xddaa,0xd84f,0xddab,0xd84f,0xddac,0xd84f,0xddad, - 0xd84f,0xddae,0xd84f,0xddaf,0xd84f,0xddb0,0xd84f,0xddb1,0xd84f,0xddb2, - 0xd84f,0xddb3,0xd84f,0xddb4,0xd84f,0xddb5,0xd84f,0xddb6,0xd84f,0xddb7, - 0xd84f,0xddb8,0xd84f,0xddb9,0xd84f,0xddba,0xd84f,0xddbb,0xd84f,0xddbc, - 0xd84f,0xddbd,0xd84f,0xddbe,0xd84f,0xddbf,0xd84f,0xddc0,0xd84f,0xddc1, - 0xd84f,0xddc2,0xd84f,0xddc3,0xd84f,0xddc4,0xd84f,0xddc5,0xd84f,0xddc6, - 0xd84f,0xddc7,0xd84f,0xddc8,0xd84f,0xddc9,0xd84f,0xddca,0xd84f,0xddcb, - 0xd84f,0xddcc,0xd84f,0xddcd,0xd84f,0xddce,0xd84f,0xddcf,0xd84f,0xddd0, - 0xd84f,0xddd1,0xd84f,0xddd2,0xd84f,0xddd3,0xd84f,0xddd4,0xd84f,0xddd5, - 0xd84f,0xddd6,0xd84f,0xddd7,0xd84f,0xddd8,0xd84f,0xddd9,0xd84f,0xddda, - 0xd84f,0xdddb,0xd84f,0xdddc,0xd84f,0xdddd,0xd84f,0xddde,0xd84f,0xdddf, - 0xd84f,0xdde0,0xd84f,0xdde1,0xd84f,0xdde2,0xd84f,0xdde3,0xd84f,0xdde4, - 0xd84f,0xdde5,0xd84f,0xdde6,0xd84f,0xdde7,0xd84f,0xdde8,0xd84f,0xdde9, - 0xd84f,0xddea,0xd84f,0xddeb,0xd84f,0xddec,0xd84f,0xdded,0xd84f,0xddee, - 0xd84f,0xddef,0xd84f,0xddf0,0xd84f,0xddf1,0xd84f,0xddf2,0xd84f,0xddf3, - 0xd84f,0xddf4,0xd84f,0xddf5,0xd84f,0xddf6,0xd84f,0xddf7,0xd84f,0xddf8, - 0xd84f,0xddf9,0xd84f,0xddfa,0xd84f,0xddfb,0xd84f,0xddfc,0xd84f,0xddfd, - 0xd84f,0xddfe,0xd84f,0xddff,0xd84f,0xde00,0xd84f,0xde01,0xd84f,0xde02, - 0xd84f,0xde03,0xd84f,0xde04,0xd84f,0xde05,0xd84f,0xde06,0xd84f,0xde07, - 0xd84f,0xde08,0xd84f,0xde09,0xd84f,0xde0a,0xd84f,0xde0b,0xd84f,0xde0c, - 0xd84f,0xde0d,0xd84f,0xde0e,0xd84f,0xde0f,0xd84f,0xde10,0xd84f,0xde11, - 0xd84f,0xde12,0xd84f,0xde13,0xd84f,0xde14,0xd84f,0xde15,0xd84f,0xde16, - 0xd84f,0xde17,0xd84f,0xde18,0xd84f,0xde19,0xd84f,0xde1a,0xd84f,0xde1b, - 0xd84f,0xde1c,0xd84f,0xde1d,0xd84f,0xde1e,0xd84f,0xde1f,0xd84f,0xde20, - 0xd84f,0xde21,0xd84f,0xde22,0xd84f,0xde23,0xd84f,0xde24,0xd84f,0xde25, - 0xd84f,0xde26,0xd84f,0xde27,0xd84f,0xde28,0xd84f,0xde29,0xd84f,0xde2a, - 0xd84f,0xde2b,0xd84f,0xde2c,0xd84f,0xde2d,0xd84f,0xde2e,0xd84f,0xde2f, - 0xd84f,0xde30,0xd84f,0xde31,0xd84f,0xde32,0xd84f,0xde33,0xd84f,0xde34, - 0xd84f,0xde35,0xd84f,0xde36,0xd84f,0xde37,0xd84f,0xde38,0xd84f,0xde39, - 0xd84f,0xde3a,0xd84f,0xde3b,0xd84f,0xde3c,0xd84f,0xde3d,0xd84f,0xde3e, - 0xd84f,0xde3f,0xd84f,0xde40,0xd84f,0xde41,0xd84f,0xde42,0xd84f,0xde43, - 0xd84f,0xde44,0xd84f,0xde45,0xd84f,0xde46,0xd84f,0xde47,0xd84f,0xde48, - 0xd84f,0xde49,0xd84f,0xde4a,0xd84f,0xde4b,0xd84f,0xde4c,0xd84f,0xde4d, - 0xd84f,0xde4e,0xd84f,0xde4f,0xd84f,0xde50,0xd84f,0xde51,0xd84f,0xde52, - 0xd84f,0xde53,0xd84f,0xde54,0xd84f,0xde55,0xd84f,0xde56,0xd84f,0xde57, - 0xd84f,0xde58,0xd84f,0xde59,0xd84f,0xde5a,0xd84f,0xde5b,0xd84f,0xde5c, - 0xd84f,0xde5d,0xd84f,0xde5e,0xd84f,0xde5f,0xd84f,0xde60,0xd84f,0xde61, - 0xd84f,0xde62,0xd84f,0xde63,0xd84f,0xde64,0xd84f,0xde65,0xd84f,0xde66, - 0xd84f,0xde67,0xd84f,0xde68,0xd84f,0xde69,0xd84f,0xde6a,0xd84f,0xde6b, - 0xd84f,0xde6c,0xd84f,0xde6d,0xd84f,0xde6e,0xd84f,0xde6f,0xd84f,0xde70, - 0xd84f,0xde71,0xd84f,0xde72,0xd84f,0xde73,0xd84f,0xde74,0xd84f,0xde75, - 0xd84f,0xde76,0xd84f,0xde77,0xd84f,0xde78,0xd84f,0xde79,0xd84f,0xde7a, - 0xd84f,0xde7b,0xd84f,0xde7c,0xd84f,0xde7d,0xd84f,0xde7e,0xd84f,0xde7f, - 0xd84f,0xde80,0xd84f,0xde81,0xd84f,0xde82,0xd84f,0xde83,0xd84f,0xde84, - 0xd84f,0xde85,0xd84f,0xde86,0xd84f,0xde87,0xd84f,0xde88,0xd84f,0xde89, - 0xd84f,0xde8a,0xd84f,0xde8b,0xd84f,0xde8c,0xd84f,0xde8d,0xd84f,0xde8e, - 0xd84f,0xde8f,0xd84f,0xde90,0xd84f,0xde91,0xd84f,0xde92,0xd84f,0xde93, - 0xd84f,0xde94,0xd84f,0xde95,0xd84f,0xde96,0xd84f,0xde97,0xd84f,0xde98, - 0xd84f,0xde99,0xd84f,0xde9a,0xd84f,0xde9b,0xd84f,0xde9c,0xd84f,0xde9d, - 0xd84f,0xde9e,0xd84f,0xde9f,0xd84f,0xdea0,0xd84f,0xdea1,0xd84f,0xdea2, - 0xd84f,0xdea3,0xd84f,0xdea4,0xd84f,0xdea5,0xd84f,0xdea6,0xd84f,0xdea7, - 0xd84f,0xdea8,0xd84f,0xdea9,0xd84f,0xdeaa,0xd84f,0xdeab,0xd84f,0xdeac, - 0xd84f,0xdead,0xd84f,0xdeae,0xd84f,0xdeaf,0xd84f,0xdeb0,0xd84f,0xdeb1, - 0xd84f,0xdeb2,0xd84f,0xdeb3,0xd84f,0xdeb4,0xd84f,0xdeb5,0xd84f,0xdeb6, - 0xd84f,0xdeb7,0xd84f,0xdeb8,0xd84f,0xdeb9,0xd84f,0xdeba,0xd84f,0xdebb, - 0xd84f,0xdebc,0xd84f,0xdebd,0xd84f,0xdebe,0xd84f,0xdebf,0xd84f,0xdec0, - 0xd84f,0xdec1,0xd84f,0xdec2,0xd84f,0xdec3,0xd84f,0xdec4,0xd84f,0xdec5, - 0xd84f,0xdec6,0xd84f,0xdec7,0xd84f,0xdec8,0xd84f,0xdec9,0xd84f,0xdeca, - 0xd84f,0xdecb,0xd84f,0xdecc,0xd84f,0xdecd,0xd84f,0xdece,0xd84f,0xdecf, - 0xd84f,0xded0,0xd84f,0xded1,0xd84f,0xded2,0xd84f,0xded3,0xd84f,0xded4, - 0xd84f,0xded5,0xd84f,0xded6,0xd84f,0xded7,0xd84f,0xded8,0xd84f,0xded9, - 0xd84f,0xdeda,0xd84f,0xdedb,0xd84f,0xdedc,0xd84f,0xdedd,0xd84f,0xdede, - 0xd84f,0xdedf,0xd84f,0xdee0,0xd84f,0xdee1,0xd84f,0xdee2,0xd84f,0xdee3, - 0xd84f,0xdee4,0xd84f,0xdee5,0xd84f,0xdee6,0xd84f,0xdee7,0xd84f,0xdee8, - 0xd84f,0xdee9,0xd84f,0xdeea,0xd84f,0xdeeb,0xd84f,0xdeec,0xd84f,0xdeed, - 0xd84f,0xdeee,0xd84f,0xdeef,0xd84f,0xdef0,0xd84f,0xdef1,0xd84f,0xdef2, - 0xd84f,0xdef3,0xd84f,0xdef4,0xd84f,0xdef5,0xd84f,0xdef6,0xd84f,0xdef7, - 0xd84f,0xdef8,0xd84f,0xdef9,0xd84f,0xdefa,0xd84f,0xdefb,0xd84f,0xdefc, - 0xd84f,0xdefd,0xd84f,0xdefe,0xd84f,0xdeff,0xd84f,0xdf00,0xd84f,0xdf01, - 0xd84f,0xdf02,0xd84f,0xdf03,0xd84f,0xdf04,0xd84f,0xdf05,0xd84f,0xdf06, - 0xd84f,0xdf07,0xd84f,0xdf08,0xd84f,0xdf09,0xd84f,0xdf0a,0xd84f,0xdf0b, - 0xd84f,0xdf0c,0xd84f,0xdf0d,0xd84f,0xdf0e,0xd84f,0xdf0f,0xd84f,0xdf10, - 0xd84f,0xdf11,0xd84f,0xdf12,0xd84f,0xdf13,0xd84f,0xdf14,0xd84f,0xdf15, - 0xd84f,0xdf16,0xd84f,0xdf17,0xd84f,0xdf18,0xd84f,0xdf19,0xd84f,0xdf1a, - 0xd84f,0xdf1b,0xd84f,0xdf1c,0xd84f,0xdf1d,0xd84f,0xdf1e,0xd84f,0xdf1f, - 0xd84f,0xdf20,0xd84f,0xdf21,0xd84f,0xdf22,0xd84f,0xdf23,0xd84f,0xdf24, - 0xd84f,0xdf25,0xd84f,0xdf26,0xd84f,0xdf27,0xd84f,0xdf28,0xd84f,0xdf29, - 0xd84f,0xdf2a,0xd84f,0xdf2b,0xd84f,0xdf2c,0xd84f,0xdf2d,0xd84f,0xdf2e, - 0xd84f,0xdf2f,0xd84f,0xdf30,0xd84f,0xdf31,0xd84f,0xdf32,0xd84f,0xdf33, - 0xd84f,0xdf34,0xd84f,0xdf35,0xd84f,0xdf36,0xd84f,0xdf37,0xd84f,0xdf38, - 0xd84f,0xdf39,0xd84f,0xdf3a,0xd84f,0xdf3b,0xd84f,0xdf3c,0xd84f,0xdf3d, - 0xd84f,0xdf3e,0xd84f,0xdf3f,0xd84f,0xdf40,0xd84f,0xdf41,0xd84f,0xdf42, - 0xd84f,0xdf43,0xd84f,0xdf44,0xd84f,0xdf45,0xd84f,0xdf46,0xd84f,0xdf47, - 0xd84f,0xdf48,0xd84f,0xdf49,0xd84f,0xdf4a,0xd84f,0xdf4b,0xd84f,0xdf4c, - 0xd84f,0xdf4d,0xd84f,0xdf4e,0xd84f,0xdf4f,0xd84f,0xdf50,0xd84f,0xdf51, - 0xd84f,0xdf52,0xd84f,0xdf53,0xd84f,0xdf54,0xd84f,0xdf55,0xd84f,0xdf56, - 0xd84f,0xdf57,0xd84f,0xdf58,0xd84f,0xdf59,0xd84f,0xdf5a,0xd84f,0xdf5b, - 0xd84f,0xdf5c,0xd84f,0xdf5d,0xd84f,0xdf5e,0xd84f,0xdf5f,0xd84f,0xdf60, - 0xd84f,0xdf61,0xd84f,0xdf62,0xd84f,0xdf63,0xd84f,0xdf64,0xd84f,0xdf65, - 0xd84f,0xdf66,0xd84f,0xdf67,0xd84f,0xdf68,0xd84f,0xdf69,0xd84f,0xdf6a, - 0xd84f,0xdf6b,0xd84f,0xdf6c,0xd84f,0xdf6d,0xd84f,0xdf6e,0xd84f,0xdf6f, - 0xd84f,0xdf70,0xd84f,0xdf71,0xd84f,0xdf72,0xd84f,0xdf73,0xd84f,0xdf74, - 0xd84f,0xdf75,0xd84f,0xdf76,0xd84f,0xdf77,0xd84f,0xdf78,0xd84f,0xdf79, - 0xd84f,0xdf7a,0xd84f,0xdf7b,0xd84f,0xdf7c,0xd84f,0xdf7d,0xd84f,0xdf7e, - 0xd84f,0xdf7f,0xd84f,0xdf80,0xd84f,0xdf81,0xd84f,0xdf82,0xd84f,0xdf83, - 0xd84f,0xdf84,0xd84f,0xdf85,0xd84f,0xdf86,0xd84f,0xdf87,0xd84f,0xdf88, - 0xd84f,0xdf89,0xd84f,0xdf8a,0xd84f,0xdf8b,0xd84f,0xdf8c,0xd84f,0xdf8d, - 0xd84f,0xdf8e,0xd84f,0xdf8f,0xd84f,0xdf90,0xd84f,0xdf91,0xd84f,0xdf92, - 0xd84f,0xdf93,0xd84f,0xdf94,0xd84f,0xdf95,0xd84f,0xdf96,0xd84f,0xdf97, - 0xd84f,0xdf98,0xd84f,0xdf99,0xd84f,0xdf9a,0xd84f,0xdf9b,0xd84f,0xdf9c, - 0xd84f,0xdf9d,0xd84f,0xdf9e,0xd84f,0xdf9f,0xd84f,0xdfa0,0xd84f,0xdfa1, - 0xd84f,0xdfa2,0xd84f,0xdfa3,0xd84f,0xdfa4,0xd84f,0xdfa5,0xd84f,0xdfa6, - 0xd84f,0xdfa7,0xd84f,0xdfa8,0xd84f,0xdfa9,0xd84f,0xdfaa,0xd84f,0xdfab, - 0xd84f,0xdfac,0xd84f,0xdfad,0xd84f,0xdfae,0xd84f,0xdfaf,0xd84f,0xdfb0, - 0xd84f,0xdfb1,0xd84f,0xdfb2,0xd84f,0xdfb3,0xd84f,0xdfb4,0xd84f,0xdfb5, - 0xd84f,0xdfb6,0xd84f,0xdfb7,0xd84f,0xdfb8,0xd84f,0xdfb9,0xd84f,0xdfba, - 0xd84f,0xdfbb,0xd84f,0xdfbc,0xd84f,0xdfbd,0xd84f,0xdfbe,0xd84f,0xdfbf, - 0xd84f,0xdfc0,0xd84f,0xdfc1,0xd84f,0xdfc2,0xd84f,0xdfc3,0xd84f,0xdfc4, - 0xd84f,0xdfc5,0xd84f,0xdfc6,0xd84f,0xdfc7,0xd84f,0xdfc8,0xd84f,0xdfc9, - 0xd84f,0xdfca,0xd84f,0xdfcb,0xd84f,0xdfcc,0xd84f,0xdfcd,0xd84f,0xdfce, - 0xd84f,0xdfcf,0xd84f,0xdfd0,0xd84f,0xdfd1,0xd84f,0xdfd2,0xd84f,0xdfd3, - 0xd84f,0xdfd4,0xd84f,0xdfd5,0xd84f,0xdfd6,0xd84f,0xdfd7,0xd84f,0xdfd8, - 0xd84f,0xdfd9,0xd84f,0xdfda,0xd84f,0xdfdb,0xd84f,0xdfdc,0xd84f,0xdfdd, - 0xd84f,0xdfde,0xd84f,0xdfdf,0xd84f,0xdfe0,0xd84f,0xdfe1,0xd84f,0xdfe2, - 0xd84f,0xdfe3,0xd84f,0xdfe4,0xd84f,0xdfe5,0xd84f,0xdfe6,0xd84f,0xdfe7, - 0xd84f,0xdfe8,0xd84f,0xdfe9,0xd84f,0xdfea,0xd84f,0xdfeb,0xd84f,0xdfec, - 0xd84f,0xdfed,0xd84f,0xdfee,0xd84f,0xdfef,0xd84f,0xdff0,0xd84f,0xdff1, - 0xd84f,0xdff2,0xd84f,0xdff3,0xd84f,0xdff4,0xd84f,0xdff5,0xd84f,0xdff6, - 0xd84f,0xdff7,0xd84f,0xdff8,0xd84f,0xdff9,0xd84f,0xdffa,0xd84f,0xdffb, - 0xd84f,0xdffc,0xd84f,0xdffd,0xd84f,0xdffe,0xd84f,0xdfff,0xd850,0xdc00, - 0xd850,0xdc01,0xd850,0xdc02,0xd850,0xdc03,0xd850,0xdc04,0xd850,0xdc05, - 0xd850,0xdc06,0xd850,0xdc07,0xd850,0xdc08,0xd850,0xdc09,0xd850,0xdc0a, - 0xd850,0xdc0b,0xd850,0xdc0c,0xd850,0xdc0d,0xd850,0xdc0e,0xd850,0xdc0f, - 0xd850,0xdc10,0xd850,0xdc11,0xd850,0xdc12,0xd850,0xdc13,0xd850,0xdc14, - 0xd850,0xdc15,0xd850,0xdc16,0xd850,0xdc17,0xd850,0xdc18,0xd850,0xdc19, - 0xd850,0xdc1a,0xd850,0xdc1b,0xd850,0xdc1c,0xd850,0xdc1d,0xd850,0xdc1e, - 0xd850,0xdc1f,0xd850,0xdc20,0xd850,0xdc21,0xd850,0xdc22,0xd850,0xdc23, - 0xd850,0xdc24,0xd850,0xdc25,0xd850,0xdc26,0xd850,0xdc27,0xd850,0xdc28, - 0xd850,0xdc29,0xd850,0xdc2a,0xd850,0xdc2b,0xd850,0xdc2c,0xd850,0xdc2d, - 0xd850,0xdc2e,0xd850,0xdc2f,0xd850,0xdc30,0xd850,0xdc31,0xd850,0xdc32, - 0xd850,0xdc33,0xd850,0xdc34,0xd850,0xdc35,0xd850,0xdc36,0xd850,0xdc37, - 0xd850,0xdc38,0xd850,0xdc39,0xd850,0xdc3a,0xd850,0xdc3b,0xd850,0xdc3c, - 0xd850,0xdc3d,0xd850,0xdc3e,0xd850,0xdc3f,0xd850,0xdc40,0xd850,0xdc41, - 0xd850,0xdc42,0xd850,0xdc43,0xd850,0xdc44,0xd850,0xdc45,0xd850,0xdc46, - 0xd850,0xdc47,0xd850,0xdc48,0xd850,0xdc49,0xd850,0xdc4a,0xd850,0xdc4b, - 0xd850,0xdc4c,0xd850,0xdc4d,0xd850,0xdc4e,0xd850,0xdc4f,0xd850,0xdc50, - 0xd850,0xdc51,0xd850,0xdc52,0xd850,0xdc53,0xd850,0xdc54,0xd850,0xdc55, - 0xd850,0xdc56,0xd850,0xdc57,0xd850,0xdc58,0xd850,0xdc59,0xd850,0xdc5a, - 0xd850,0xdc5b,0xd850,0xdc5c,0xd850,0xdc5d,0xd850,0xdc5e,0xd850,0xdc5f, - 0xd850,0xdc60,0xd850,0xdc61,0xd850,0xdc62,0xd850,0xdc63,0xd850,0xdc64, - 0xd850,0xdc65,0xd850,0xdc66,0xd850,0xdc67,0xd850,0xdc68,0xd850,0xdc69, - 0xd850,0xdc6a,0xd850,0xdc6b,0xd850,0xdc6c,0xd850,0xdc6d,0xd850,0xdc6e, - 0xd850,0xdc6f,0xd850,0xdc70,0xd850,0xdc71,0xd850,0xdc72,0xd850,0xdc73, - 0xd850,0xdc74,0xd850,0xdc75,0xd850,0xdc76,0xd850,0xdc77,0xd850,0xdc78, - 0xd850,0xdc79,0xd850,0xdc7a,0xd850,0xdc7b,0xd850,0xdc7c,0xd850,0xdc7d, - 0xd850,0xdc7e,0xd850,0xdc7f,0xd850,0xdc80,0xd850,0xdc81,0xd850,0xdc82, - 0xd850,0xdc83,0xd850,0xdc84,0xd850,0xdc85,0xd850,0xdc86,0xd850,0xdc87, - 0xd850,0xdc88,0xd850,0xdc89,0xd850,0xdc8a,0xd850,0xdc8b,0xd850,0xdc8c, - 0xd850,0xdc8d,0xd850,0xdc8e,0xd850,0xdc8f,0xd850,0xdc90,0xd850,0xdc91, - 0xd850,0xdc92,0xd850,0xdc93,0xd850,0xdc94,0xd850,0xdc95,0xd850,0xdc96, - 0xd850,0xdc97,0xd850,0xdc98,0xd850,0xdc99,0xd850,0xdc9a,0xd850,0xdc9b, - 0xd850,0xdc9c,0xd850,0xdc9d,0xd850,0xdc9e,0xd850,0xdc9f,0xd850,0xdca0, - 0xd850,0xdca1,0xd850,0xdca2,0xd850,0xdca3,0xd850,0xdca4,0xd850,0xdca5, - 0xd850,0xdca6,0xd850,0xdca7,0xd850,0xdca8,0xd850,0xdca9,0xd850,0xdcaa, - 0xd850,0xdcab,0xd850,0xdcac,0xd850,0xdcad,0xd850,0xdcae,0xd850,0xdcaf, - 0xd850,0xdcb0,0xd850,0xdcb1,0xd850,0xdcb2,0xd850,0xdcb3,0xd850,0xdcb4, - 0xd850,0xdcb5,0xd850,0xdcb6,0xd850,0xdcb7,0xd850,0xdcb8,0xd850,0xdcb9, - 0xd850,0xdcba,0xd850,0xdcbb,0xd850,0xdcbc,0xd850,0xdcbd,0xd850,0xdcbe, - 0xd850,0xdcbf,0xd850,0xdcc0,0xd850,0xdcc1,0xd850,0xdcc2,0xd850,0xdcc3, - 0xd850,0xdcc4,0xd850,0xdcc5,0xd850,0xdcc6,0xd850,0xdcc7,0xd850,0xdcc8, - 0xd850,0xdcc9,0xd850,0xdcca,0xd850,0xdccb,0xd850,0xdccc,0xd850,0xdccd, - 0xd850,0xdcce,0xd850,0xdccf,0xd850,0xdcd0,0xd850,0xdcd1,0xd850,0xdcd2, - 0xd850,0xdcd3,0xd850,0xdcd4,0xd850,0xdcd5,0xd850,0xdcd6,0xd850,0xdcd7, - 0xd850,0xdcd8,0xd850,0xdcd9,0xd850,0xdcda,0xd850,0xdcdb,0xd850,0xdcdc, - 0xd850,0xdcdd,0xd850,0xdcde,0xd850,0xdcdf,0xd850,0xdce0,0xd850,0xdce1, - 0xd850,0xdce2,0xd850,0xdce3,0xd850,0xdce4,0xd850,0xdce5,0xd850,0xdce6, - 0xd850,0xdce7,0xd850,0xdce8,0xd850,0xdce9,0xd850,0xdcea,0xd850,0xdceb, - 0xd850,0xdcec,0xd850,0xdced,0xd850,0xdcee,0xd850,0xdcef,0xd850,0xdcf0, - 0xd850,0xdcf1,0xd850,0xdcf2,0xd850,0xdcf3,0xd850,0xdcf4,0xd850,0xdcf5, - 0xd850,0xdcf6,0xd850,0xdcf7,0xd850,0xdcf8,0xd850,0xdcf9,0xd850,0xdcfa, - 0xd850,0xdcfb,0xd850,0xdcfc,0xd850,0xdcfd,0xd850,0xdcfe,0xd850,0xdcff, - 0xd850,0xdd00,0xd850,0xdd01,0xd850,0xdd02,0xd850,0xdd03,0xd850,0xdd04, - 0xd850,0xdd05,0xd850,0xdd06,0xd850,0xdd07,0xd850,0xdd08,0xd850,0xdd09, - 0xd850,0xdd0a,0xd850,0xdd0b,0xd850,0xdd0c,0xd850,0xdd0d,0xd850,0xdd0e, - 0xd850,0xdd0f,0xd850,0xdd10,0xd850,0xdd11,0xd850,0xdd12,0xd850,0xdd13, - 0xd850,0xdd14,0xd850,0xdd15,0xd850,0xdd16,0xd850,0xdd17,0xd850,0xdd18, - 0xd850,0xdd19,0xd850,0xdd1a,0xd850,0xdd1b,0xd850,0xdd1c,0xd850,0xdd1d, - 0xd850,0xdd1e,0xd850,0xdd1f,0xd850,0xdd20,0xd850,0xdd21,0xd850,0xdd22, - 0xd850,0xdd23,0xd850,0xdd24,0xd850,0xdd25,0xd850,0xdd26,0xd850,0xdd27, - 0xd850,0xdd28,0xd850,0xdd29,0xd850,0xdd2a,0xd850,0xdd2b,0xd850,0xdd2c, - 0xd850,0xdd2d,0xd850,0xdd2e,0xd850,0xdd2f,0xd850,0xdd30,0xd850,0xdd31, - 0xd850,0xdd32,0xd850,0xdd33,0xd850,0xdd34,0xd850,0xdd35,0xd850,0xdd36, - 0xd850,0xdd37,0xd850,0xdd38,0xd850,0xdd39,0xd850,0xdd3a,0xd850,0xdd3b, - 0xd850,0xdd3c,0xd850,0xdd3d,0xd850,0xdd3e,0xd850,0xdd3f,0xd850,0xdd40, - 0xd850,0xdd41,0xd850,0xdd42,0xd850,0xdd43,0xd850,0xdd44,0xd850,0xdd45, - 0xd850,0xdd46,0xd850,0xdd47,0xd850,0xdd48,0xd850,0xdd49,0xd850,0xdd4a, - 0xd850,0xdd4b,0xd850,0xdd4c,0xd850,0xdd4d,0xd850,0xdd4e,0xd850,0xdd4f, - 0xd850,0xdd50,0xd850,0xdd51,0xd850,0xdd52,0xd850,0xdd53,0xd850,0xdd54, - 0xd850,0xdd55,0xd850,0xdd56,0xd850,0xdd57,0xd850,0xdd58,0xd850,0xdd59, - 0xd850,0xdd5a,0xd850,0xdd5b,0xd850,0xdd5c,0xd850,0xdd5d,0xd850,0xdd5e, - 0xd850,0xdd5f,0xd850,0xdd60,0xd850,0xdd61,0xd850,0xdd62,0xd850,0xdd63, - 0xd850,0xdd64,0xd850,0xdd65,0xd850,0xdd66,0xd850,0xdd67,0xd850,0xdd68, - 0xd850,0xdd69,0xd850,0xdd6a,0xd850,0xdd6b,0xd850,0xdd6c,0xd850,0xdd6d, - 0xd850,0xdd6e,0xd850,0xdd6f,0xd850,0xdd70,0xd850,0xdd71,0xd850,0xdd72, - 0xd850,0xdd73,0xd850,0xdd74,0xd850,0xdd75,0xd850,0xdd76,0xd850,0xdd77, - 0xd850,0xdd78,0xd850,0xdd79,0xd850,0xdd7a,0xd850,0xdd7b,0xd850,0xdd7c, - 0xd850,0xdd7d,0xd850,0xdd7e,0xd850,0xdd7f,0xd850,0xdd80,0xd850,0xdd81, - 0xd850,0xdd82,0xd850,0xdd83,0xd850,0xdd84,0xd850,0xdd85,0xd850,0xdd86, - 0xd850,0xdd87,0xd850,0xdd88,0xd850,0xdd89,0xd850,0xdd8a,0xd850,0xdd8b, - 0xd850,0xdd8c,0xd850,0xdd8d,0xd850,0xdd8e,0xd850,0xdd8f,0xd850,0xdd90, - 0xd850,0xdd91,0xd850,0xdd92,0xd850,0xdd93,0xd850,0xdd94,0xd850,0xdd95, - 0xd850,0xdd96,0xd850,0xdd97,0xd850,0xdd98,0xd850,0xdd99,0xd850,0xdd9a, - 0xd850,0xdd9b,0xd850,0xdd9c,0xd850,0xdd9d,0xd850,0xdd9e,0xd850,0xdd9f, - 0xd850,0xdda0,0xd850,0xdda1,0xd850,0xdda2,0xd850,0xdda3,0xd850,0xdda4, - 0xd850,0xdda5,0xd850,0xdda6,0xd850,0xdda7,0xd850,0xdda8,0xd850,0xdda9, - 0xd850,0xddaa,0xd850,0xddab,0xd850,0xddac,0xd850,0xddad,0xd850,0xddae, - 0xd850,0xddaf,0xd850,0xddb0,0xd850,0xddb1,0xd850,0xddb2,0xd850,0xddb3, - 0xd850,0xddb4,0xd850,0xddb5,0xd850,0xddb6,0xd850,0xddb7,0xd850,0xddb8, - 0xd850,0xddb9,0xd850,0xddba,0xd850,0xddbb,0xd850,0xddbc,0xd850,0xddbd, - 0xd850,0xddbe,0xd850,0xddbf,0xd850,0xddc0,0xd850,0xddc1,0xd850,0xddc2, - 0xd850,0xddc3,0xd850,0xddc4,0xd850,0xddc5,0xd850,0xddc6,0xd850,0xddc7, - 0xd850,0xddc8,0xd850,0xddc9,0xd850,0xddca,0xd850,0xddcb,0xd850,0xddcc, - 0xd850,0xddcd,0xd850,0xddce,0xd850,0xddcf,0xd850,0xddd0,0xd850,0xddd1, - 0xd850,0xddd2,0xd850,0xddd3,0xd850,0xddd4,0xd850,0xddd5,0xd850,0xddd6, - 0xd850,0xddd7,0xd850,0xddd8,0xd850,0xddd9,0xd850,0xddda,0xd850,0xdddb, - 0xd850,0xdddc,0xd850,0xdddd,0xd850,0xddde,0xd850,0xdddf,0xd850,0xdde0, - 0xd850,0xdde1,0xd850,0xdde2,0xd850,0xdde3,0xd850,0xdde4,0xd850,0xdde5, - 0xd850,0xdde6,0xd850,0xdde7,0xd850,0xdde8,0xd850,0xdde9,0xd850,0xddea, - 0xd850,0xddeb,0xd850,0xddec,0xd850,0xdded,0xd850,0xddee,0xd850,0xddef, - 0xd850,0xddf0,0xd850,0xddf1,0xd850,0xddf2,0xd850,0xddf3,0xd850,0xddf4, - 0xd850,0xddf5,0xd850,0xddf6,0xd850,0xddf7,0xd850,0xddf8,0xd850,0xddf9, - 0xd850,0xddfa,0xd850,0xddfb,0xd850,0xddfc,0xd850,0xddfd,0xd850,0xddfe, - 0xd850,0xddff,0xd850,0xde00,0xd850,0xde01,0xd850,0xde02,0xd850,0xde03, - 0xd850,0xde04,0xd850,0xde05,0xd850,0xde06,0xd850,0xde07,0xd850,0xde08, - 0xd850,0xde09,0xd850,0xde0a,0xd850,0xde0b,0xd850,0xde0c,0xd850,0xde0d, - 0xd850,0xde0e,0xd850,0xde0f,0xd850,0xde10,0xd850,0xde11,0xd850,0xde12, - 0xd850,0xde13,0xd850,0xde14,0xd850,0xde15,0xd850,0xde16,0xd850,0xde17, - 0xd850,0xde18,0xd850,0xde19,0xd850,0xde1a,0xd850,0xde1b,0xd850,0xde1c, - 0xd850,0xde1d,0xd850,0xde1e,0xd850,0xde1f,0xd850,0xde20,0xd850,0xde21, - 0xd850,0xde22,0xd850,0xde23,0xd850,0xde24,0xd850,0xde25,0xd850,0xde26, - 0xd850,0xde27,0xd850,0xde28,0xd850,0xde29,0xd850,0xde2a,0xd850,0xde2b, - 0xd850,0xde2c,0xd850,0xde2d,0xd850,0xde2e,0xd850,0xde2f,0xd850,0xde30, - 0xd850,0xde31,0xd850,0xde32,0xd850,0xde33,0xd850,0xde34,0xd850,0xde35, - 0xd850,0xde36,0xd850,0xde37,0xd850,0xde38,0xd850,0xde39,0xd850,0xde3a, - 0xd850,0xde3b,0xd850,0xde3c,0xd850,0xde3d,0xd850,0xde3e,0xd850,0xde3f, - 0xd850,0xde40,0xd850,0xde41,0xd850,0xde42,0xd850,0xde43,0xd850,0xde44, - 0xd850,0xde45,0xd850,0xde46,0xd850,0xde47,0xd850,0xde48,0xd850,0xde49, - 0xd850,0xde4a,0xd850,0xde4b,0xd850,0xde4c,0xd850,0xde4d,0xd850,0xde4e, - 0xd850,0xde4f,0xd850,0xde50,0xd850,0xde51,0xd850,0xde52,0xd850,0xde53, - 0xd850,0xde54,0xd850,0xde55,0xd850,0xde56,0xd850,0xde57,0xd850,0xde58, - 0xd850,0xde59,0xd850,0xde5a,0xd850,0xde5b,0xd850,0xde5c,0xd850,0xde5d, - 0xd850,0xde5e,0xd850,0xde5f,0xd850,0xde60,0xd850,0xde61,0xd850,0xde62, - 0xd850,0xde63,0xd850,0xde64,0xd850,0xde65,0xd850,0xde66,0xd850,0xde67, - 0xd850,0xde68,0xd850,0xde69,0xd850,0xde6a,0xd850,0xde6b,0xd850,0xde6c, - 0xd850,0xde6d,0xd850,0xde6e,0xd850,0xde6f,0xd850,0xde70,0xd850,0xde71, - 0xd850,0xde72,0xd850,0xde73,0xd850,0xde74,0xd850,0xde75,0xd850,0xde76, - 0xd850,0xde77,0xd850,0xde78,0xd850,0xde79,0xd850,0xde7a,0xd850,0xde7b, - 0xd850,0xde7c,0xd850,0xde7d,0xd850,0xde7e,0xd850,0xde7f,0xd850,0xde80, - 0xd850,0xde81,0xd850,0xde82,0xd850,0xde83,0xd850,0xde84,0xd850,0xde85, - 0xd850,0xde86,0xd850,0xde87,0xd850,0xde88,0xd850,0xde89,0xd850,0xde8a, - 0xd850,0xde8b,0xd850,0xde8c,0xd850,0xde8d,0xd850,0xde8e,0xd850,0xde8f, - 0xd850,0xde90,0xd850,0xde91,0xd850,0xde92,0xd850,0xde93,0xd850,0xde94, - 0xd850,0xde95,0xd850,0xde96,0xd850,0xde97,0xd850,0xde98,0xd850,0xde99, - 0xd850,0xde9a,0xd850,0xde9b,0xd850,0xde9c,0xd850,0xde9d,0xd850,0xde9e, - 0xd850,0xde9f,0xd850,0xdea0,0xd850,0xdea1,0xd850,0xdea2,0xd850,0xdea3, - 0xd850,0xdea4,0xd850,0xdea5,0xd850,0xdea6,0xd850,0xdea7,0xd850,0xdea8, - 0xd850,0xdea9,0xd850,0xdeaa,0xd850,0xdeab,0xd850,0xdeac,0xd850,0xdead, - 0xd850,0xdeae,0xd850,0xdeaf,0xd850,0xdeb0,0xd850,0xdeb1,0xd850,0xdeb2, - 0xd850,0xdeb3,0xd850,0xdeb4,0xd850,0xdeb5,0xd850,0xdeb6,0xd850,0xdeb7, - 0xd850,0xdeb8,0xd850,0xdeb9,0xd850,0xdeba,0xd850,0xdebb,0xd850,0xdebc, - 0xd850,0xdebd,0xd850,0xdebe,0xd850,0xdebf,0xd850,0xdec0,0xd850,0xdec1, - 0xd850,0xdec2,0xd850,0xdec3,0xd850,0xdec4,0xd850,0xdec5,0xd850,0xdec6, - 0xd850,0xdec7,0xd850,0xdec8,0xd850,0xdec9,0xd850,0xdeca,0xd850,0xdecb, - 0xd850,0xdecc,0xd850,0xdecd,0xd850,0xdece,0xd850,0xdecf,0xd850,0xded0, - 0xd850,0xded1,0xd850,0xded2,0xd850,0xded3,0xd850,0xded4,0xd850,0xded5, - 0xd850,0xded6,0xd850,0xded7,0xd850,0xded8,0xd850,0xded9,0xd850,0xdeda, - 0xd850,0xdedb,0xd850,0xdedc,0xd850,0xdedd,0xd850,0xdede,0xd850,0xdedf, - 0xd850,0xdee0,0xd850,0xdee1,0xd850,0xdee2,0xd850,0xdee3,0xd850,0xdee4, - 0xd850,0xdee5,0xd850,0xdee6,0xd850,0xdee7,0xd850,0xdee8,0xd850,0xdee9, - 0xd850,0xdeea,0xd850,0xdeeb,0xd850,0xdeec,0xd850,0xdeed,0xd850,0xdeee, - 0xd850,0xdeef,0xd850,0xdef0,0xd850,0xdef1,0xd850,0xdef2,0xd850,0xdef3, - 0xd850,0xdef4,0xd850,0xdef5,0xd850,0xdef6,0xd850,0xdef7,0xd850,0xdef8, - 0xd850,0xdef9,0xd850,0xdefa,0xd850,0xdefb,0xd850,0xdefc,0xd850,0xdefd, - 0xd850,0xdefe,0xd850,0xdeff,0xd850,0xdf00,0xd850,0xdf01,0xd850,0xdf02, - 0xd850,0xdf03,0xd850,0xdf04,0xd850,0xdf05,0xd850,0xdf06,0xd850,0xdf07, - 0xd850,0xdf08,0xd850,0xdf09,0xd850,0xdf0a,0xd850,0xdf0b,0xd850,0xdf0c, - 0xd850,0xdf0d,0xd850,0xdf0e,0xd850,0xdf0f,0xd850,0xdf10,0xd850,0xdf11, - 0xd850,0xdf12,0xd850,0xdf13,0xd850,0xdf14,0xd850,0xdf15,0xd850,0xdf16, - 0xd850,0xdf17,0xd850,0xdf18,0xd850,0xdf19,0xd850,0xdf1a,0xd850,0xdf1b, - 0xd850,0xdf1c,0xd850,0xdf1d,0xd850,0xdf1e,0xd850,0xdf1f,0xd850,0xdf20, - 0xd850,0xdf21,0xd850,0xdf22,0xd850,0xdf23,0xd850,0xdf24,0xd850,0xdf25, - 0xd850,0xdf26,0xd850,0xdf27,0xd850,0xdf28,0xd850,0xdf29,0xd850,0xdf2a, - 0xd850,0xdf2b,0xd850,0xdf2c,0xd850,0xdf2d,0xd850,0xdf2e,0xd850,0xdf2f, - 0xd850,0xdf30,0xd850,0xdf31,0xd850,0xdf32,0xd850,0xdf33,0xd850,0xdf34, - 0xd850,0xdf35,0xd850,0xdf36,0xd850,0xdf37,0xd850,0xdf38,0xd850,0xdf39, - 0xd850,0xdf3a,0xd850,0xdf3b,0xd850,0xdf3c,0xd850,0xdf3d,0xd850,0xdf3e, - 0xd850,0xdf3f,0xd850,0xdf40,0xd850,0xdf41,0xd850,0xdf42,0xd850,0xdf43, - 0xd850,0xdf44,0xd850,0xdf45,0xd850,0xdf46,0xd850,0xdf47,0xd850,0xdf48, - 0xd850,0xdf49,0xd850,0xdf4a,0xd850,0xdf4b,0xd850,0xdf4c,0xd850,0xdf4d, - 0xd850,0xdf4e,0xd850,0xdf4f,0xd850,0xdf50,0xd850,0xdf51,0xd850,0xdf52, - 0xd850,0xdf53,0xd850,0xdf54,0xd850,0xdf55,0xd850,0xdf56,0xd850,0xdf57, - 0xd850,0xdf58,0xd850,0xdf59,0xd850,0xdf5a,0xd850,0xdf5b,0xd850,0xdf5c, - 0xd850,0xdf5d,0xd850,0xdf5e,0xd850,0xdf5f,0xd850,0xdf60,0xd850,0xdf61, - 0xd850,0xdf62,0xd850,0xdf63,0xd850,0xdf64,0xd850,0xdf65,0xd850,0xdf66, - 0xd850,0xdf67,0xd850,0xdf68,0xd850,0xdf69,0xd850,0xdf6a,0xd850,0xdf6b, - 0xd850,0xdf6c,0xd850,0xdf6d,0xd850,0xdf6e,0xd850,0xdf6f,0xd850,0xdf70, - 0xd850,0xdf71,0xd850,0xdf72,0xd850,0xdf73,0xd850,0xdf74,0xd850,0xdf75, - 0xd850,0xdf76,0xd850,0xdf77,0xd850,0xdf78,0xd850,0xdf79,0xd850,0xdf7a, - 0xd850,0xdf7b,0xd850,0xdf7c,0xd850,0xdf7d,0xd850,0xdf7e,0xd850,0xdf7f, - 0xd850,0xdf80,0xd850,0xdf81,0xd850,0xdf82,0xd850,0xdf83,0xd850,0xdf84, - 0xd850,0xdf85,0xd850,0xdf86,0xd850,0xdf87,0xd850,0xdf88,0xd850,0xdf89, - 0xd850,0xdf8a,0xd850,0xdf8b,0xd850,0xdf8c,0xd850,0xdf8d,0xd850,0xdf8e, - 0xd850,0xdf8f,0xd850,0xdf90,0xd850,0xdf91,0xd850,0xdf92,0xd850,0xdf93, - 0xd850,0xdf94,0xd850,0xdf95,0xd850,0xdf96,0xd850,0xdf97,0xd850,0xdf98, - 0xd850,0xdf99,0xd850,0xdf9a,0xd850,0xdf9b,0xd850,0xdf9c,0xd850,0xdf9d, - 0xd850,0xdf9e,0xd850,0xdf9f,0xd850,0xdfa0,0xd850,0xdfa1,0xd850,0xdfa2, - 0xd850,0xdfa3,0xd850,0xdfa4,0xd850,0xdfa5,0xd850,0xdfa6,0xd850,0xdfa7, - 0xd850,0xdfa8,0xd850,0xdfa9,0xd850,0xdfaa,0xd850,0xdfab,0xd850,0xdfac, - 0xd850,0xdfad,0xd850,0xdfae,0xd850,0xdfaf,0xd850,0xdfb0,0xd850,0xdfb1, - 0xd850,0xdfb2,0xd850,0xdfb3,0xd850,0xdfb4,0xd850,0xdfb5,0xd850,0xdfb6, - 0xd850,0xdfb7,0xd850,0xdfb8,0xd850,0xdfb9,0xd850,0xdfba,0xd850,0xdfbb, - 0xd850,0xdfbc,0xd850,0xdfbd,0xd850,0xdfbe,0xd850,0xdfbf,0xd850,0xdfc0, - 0xd850,0xdfc1,0xd850,0xdfc2,0xd850,0xdfc3,0xd850,0xdfc4,0xd850,0xdfc5, - 0xd850,0xdfc6,0xd850,0xdfc7,0xd850,0xdfc8,0xd850,0xdfc9,0xd850,0xdfca, - 0xd850,0xdfcb,0xd850,0xdfcc,0xd850,0xdfcd,0xd850,0xdfce,0xd850,0xdfcf, - 0xd850,0xdfd0,0xd850,0xdfd1,0xd850,0xdfd2,0xd850,0xdfd3,0xd850,0xdfd4, - 0xd850,0xdfd5,0xd850,0xdfd6,0xd850,0xdfd7,0xd850,0xdfd8,0xd850,0xdfd9, - 0xd850,0xdfda,0xd850,0xdfdb,0xd850,0xdfdc,0xd850,0xdfdd,0xd850,0xdfde, - 0xd850,0xdfdf,0xd850,0xdfe0,0xd850,0xdfe1,0xd850,0xdfe2,0xd850,0xdfe3, - 0xd850,0xdfe4,0xd850,0xdfe5,0xd850,0xdfe6,0xd850,0xdfe7,0xd850,0xdfe8, - 0xd850,0xdfe9,0xd850,0xdfea,0xd850,0xdfeb,0xd850,0xdfec,0xd850,0xdfed, - 0xd850,0xdfee,0xd850,0xdfef,0xd850,0xdff0,0xd850,0xdff1,0xd850,0xdff2, - 0xd850,0xdff3,0xd850,0xdff4,0xd850,0xdff5,0xd850,0xdff6,0xd850,0xdff7, - 0xd850,0xdff8,0xd850,0xdff9,0xd850,0xdffa,0xd850,0xdffb,0xd850,0xdffc, - 0xd850,0xdffd,0xd850,0xdffe,0xd850,0xdfff,0xd851,0xdc00,0xd851,0xdc01, - 0xd851,0xdc02,0xd851,0xdc03,0xd851,0xdc04,0xd851,0xdc05,0xd851,0xdc06, - 0xd851,0xdc07,0xd851,0xdc08,0xd851,0xdc09,0xd851,0xdc0a,0xd851,0xdc0b, - 0xd851,0xdc0c,0xd851,0xdc0d,0xd851,0xdc0e,0xd851,0xdc0f,0xd851,0xdc10, - 0xd851,0xdc11,0xd851,0xdc12,0xd851,0xdc13,0xd851,0xdc14,0xd851,0xdc15, - 0xd851,0xdc16,0xd851,0xdc17,0xd851,0xdc18,0xd851,0xdc19,0xd851,0xdc1a, - 0xd851,0xdc1b,0xd851,0xdc1c,0xd851,0xdc1d,0xd851,0xdc1e,0xd851,0xdc1f, - 0xd851,0xdc20,0xd851,0xdc21,0xd851,0xdc22,0xd851,0xdc23,0xd851,0xdc24, - 0xd851,0xdc25,0xd851,0xdc26,0xd851,0xdc27,0xd851,0xdc28,0xd851,0xdc29, - 0xd851,0xdc2a,0xd851,0xdc2b,0xd851,0xdc2c,0xd851,0xdc2d,0xd851,0xdc2e, - 0xd851,0xdc2f,0xd851,0xdc30,0xd851,0xdc31,0xd851,0xdc32,0xd851,0xdc33, - 0xd851,0xdc34,0xd851,0xdc35,0xd851,0xdc36,0xd851,0xdc37,0xd851,0xdc38, - 0xd851,0xdc39,0xd851,0xdc3a,0xd851,0xdc3b,0xd851,0xdc3c,0xd851,0xdc3d, - 0xd851,0xdc3e,0xd851,0xdc3f,0xd851,0xdc40,0xd851,0xdc41,0xd851,0xdc42, - 0xd851,0xdc43,0xd851,0xdc44,0xd851,0xdc45,0xd851,0xdc46,0xd851,0xdc47, - 0xd851,0xdc48,0xd851,0xdc49,0xd851,0xdc4a,0xd851,0xdc4b,0xd851,0xdc4c, - 0xd851,0xdc4d,0xd851,0xdc4e,0xd851,0xdc4f,0xd851,0xdc50,0xd851,0xdc51, - 0xd851,0xdc52,0xd851,0xdc53,0xd851,0xdc54,0xd851,0xdc55,0xd851,0xdc56, - 0xd851,0xdc57,0xd851,0xdc58,0xd851,0xdc59,0xd851,0xdc5a,0xd851,0xdc5b, - 0xd851,0xdc5c,0xd851,0xdc5d,0xd851,0xdc5e,0xd851,0xdc5f,0xd851,0xdc60, - 0xd851,0xdc61,0xd851,0xdc62,0xd851,0xdc63,0xd851,0xdc64,0xd851,0xdc65, - 0xd851,0xdc66,0xd851,0xdc67,0xd851,0xdc68,0xd851,0xdc69,0xd851,0xdc6a, - 0xd851,0xdc6b,0xd851,0xdc6c,0xd851,0xdc6d,0xd851,0xdc6e,0xd851,0xdc6f, - 0xd851,0xdc70,0xd851,0xdc71,0xd851,0xdc72,0xd851,0xdc73,0xd851,0xdc74, - 0xd851,0xdc75,0xd851,0xdc76,0xd851,0xdc77,0xd851,0xdc78,0xd851,0xdc79, - 0xd851,0xdc7a,0xd851,0xdc7b,0xd851,0xdc7c,0xd851,0xdc7d,0xd851,0xdc7e, - 0xd851,0xdc7f,0xd851,0xdc80,0xd851,0xdc81,0xd851,0xdc82,0xd851,0xdc83, - 0xd851,0xdc84,0xd851,0xdc85,0xd851,0xdc86,0xd851,0xdc87,0xd851,0xdc88, - 0xd851,0xdc89,0xd851,0xdc8a,0xd851,0xdc8b,0xd851,0xdc8c,0xd851,0xdc8d, - 0xd851,0xdc8e,0xd851,0xdc8f,0xd851,0xdc90,0xd851,0xdc91,0xd851,0xdc92, - 0xd851,0xdc93,0xd851,0xdc94,0xd851,0xdc95,0xd851,0xdc96,0xd851,0xdc97, - 0xd851,0xdc98,0xd851,0xdc99,0xd851,0xdc9a,0xd851,0xdc9b,0xd851,0xdc9c, - 0xd851,0xdc9d,0xd851,0xdc9e,0xd851,0xdc9f,0xd851,0xdca0,0xd851,0xdca1, - 0xd851,0xdca2,0xd851,0xdca3,0xd851,0xdca4,0xd851,0xdca5,0xd851,0xdca6, - 0xd851,0xdca7,0xd851,0xdca8,0xd851,0xdca9,0xd851,0xdcaa,0xd851,0xdcab, - 0xd851,0xdcac,0xd851,0xdcad,0xd851,0xdcae,0xd851,0xdcaf,0xd851,0xdcb0, - 0xd851,0xdcb1,0xd851,0xdcb2,0xd851,0xdcb3,0xd851,0xdcb4,0xd851,0xdcb5, - 0xd851,0xdcb6,0xd851,0xdcb7,0xd851,0xdcb8,0xd851,0xdcb9,0xd851,0xdcba, - 0xd851,0xdcbb,0xd851,0xdcbc,0xd851,0xdcbd,0xd851,0xdcbe,0xd851,0xdcbf, - 0xd851,0xdcc0,0xd851,0xdcc1,0xd851,0xdcc2,0xd851,0xdcc3,0xd851,0xdcc4, - 0xd851,0xdcc5,0xd851,0xdcc6,0xd851,0xdcc7,0xd851,0xdcc8,0xd851,0xdcc9, - 0xd851,0xdcca,0xd851,0xdccb,0xd851,0xdccc,0xd851,0xdccd,0xd851,0xdcce, - 0xd851,0xdccf,0xd851,0xdcd0,0xd851,0xdcd1,0xd851,0xdcd2,0xd851,0xdcd3, - 0xd851,0xdcd4,0xd851,0xdcd5,0xd851,0xdcd6,0xd851,0xdcd7,0xd851,0xdcd8, - 0xd851,0xdcd9,0xd851,0xdcda,0xd851,0xdcdb,0xd851,0xdcdc,0xd851,0xdcdd, - 0xd851,0xdcde,0xd851,0xdcdf,0xd851,0xdce0,0xd851,0xdce1,0xd851,0xdce2, - 0xd851,0xdce3,0xd851,0xdce4,0xd851,0xdce5,0xd851,0xdce6,0xd851,0xdce7, - 0xd851,0xdce8,0xd851,0xdce9,0xd851,0xdcea,0xd851,0xdceb,0xd851,0xdcec, - 0xd851,0xdced,0xd851,0xdcee,0xd851,0xdcef,0xd851,0xdcf0,0xd851,0xdcf1, - 0xd851,0xdcf2,0xd851,0xdcf3,0xd851,0xdcf4,0xd851,0xdcf5,0xd851,0xdcf6, - 0xd851,0xdcf7,0xd851,0xdcf8,0xd851,0xdcf9,0xd851,0xdcfa,0xd851,0xdcfb, - 0xd851,0xdcfc,0xd851,0xdcfd,0xd851,0xdcfe,0xd851,0xdcff,0xd851,0xdd00, - 0xd851,0xdd01,0xd851,0xdd02,0xd851,0xdd03,0xd851,0xdd04,0xd851,0xdd05, - 0xd851,0xdd06,0xd851,0xdd07,0xd851,0xdd08,0xd851,0xdd09,0xd851,0xdd0a, - 0xd851,0xdd0b,0xd851,0xdd0c,0xd851,0xdd0d,0xd851,0xdd0e,0xd851,0xdd0f, - 0xd851,0xdd10,0xd851,0xdd11,0xd851,0xdd12,0xd851,0xdd13,0xd851,0xdd14, - 0xd851,0xdd15,0xd851,0xdd16,0xd851,0xdd17,0xd851,0xdd18,0xd851,0xdd19, - 0xd851,0xdd1a,0xd851,0xdd1b,0xd851,0xdd1c,0xd851,0xdd1d,0xd851,0xdd1e, - 0xd851,0xdd1f,0xd851,0xdd20,0xd851,0xdd21,0xd851,0xdd22,0xd851,0xdd23, - 0xd851,0xdd24,0xd851,0xdd25,0xd851,0xdd26,0xd851,0xdd27,0xd851,0xdd28, - 0xd851,0xdd29,0xd851,0xdd2a,0xd851,0xdd2b,0xd851,0xdd2c,0xd851,0xdd2d, - 0xd851,0xdd2e,0xd851,0xdd2f,0xd851,0xdd30,0xd851,0xdd31,0xd851,0xdd32, - 0xd851,0xdd33,0xd851,0xdd34,0xd851,0xdd35,0xd851,0xdd36,0xd851,0xdd37, - 0xd851,0xdd38,0xd851,0xdd39,0xd851,0xdd3a,0xd851,0xdd3b,0xd851,0xdd3c, - 0xd851,0xdd3d,0xd851,0xdd3e,0xd851,0xdd3f,0xd851,0xdd40,0xd851,0xdd41, - 0xd851,0xdd42,0xd851,0xdd43,0xd851,0xdd44,0xd851,0xdd45,0xd851,0xdd46, - 0xd851,0xdd47,0xd851,0xdd48,0xd851,0xdd49,0xd851,0xdd4a,0xd851,0xdd4b, - 0xd851,0xdd4c,0xd851,0xdd4d,0xd851,0xdd4e,0xd851,0xdd4f,0xd851,0xdd50, - 0xd851,0xdd51,0xd851,0xdd52,0xd851,0xdd53,0xd851,0xdd54,0xd851,0xdd55, - 0xd851,0xdd56,0xd851,0xdd57,0xd851,0xdd58,0xd851,0xdd59,0xd851,0xdd5a, - 0xd851,0xdd5b,0xd851,0xdd5c,0xd851,0xdd5d,0xd851,0xdd5e,0xd851,0xdd5f, - 0xd851,0xdd60,0xd851,0xdd61,0xd851,0xdd62,0xd851,0xdd63,0xd851,0xdd64, - 0xd851,0xdd65,0xd851,0xdd66,0xd851,0xdd67,0xd851,0xdd68,0xd851,0xdd69, - 0xd851,0xdd6a,0xd851,0xdd6b,0xd851,0xdd6c,0xd851,0xdd6d,0xd851,0xdd6e, - 0xd851,0xdd6f,0xd851,0xdd70,0xd851,0xdd71,0xd851,0xdd72,0xd851,0xdd73, - 0xd851,0xdd74,0xd851,0xdd75,0xd851,0xdd76,0xd851,0xdd77,0xd851,0xdd78, - 0xd851,0xdd79,0xd851,0xdd7a,0xd851,0xdd7b,0xd851,0xdd7c,0xd851,0xdd7d, - 0xd851,0xdd7e,0xd851,0xdd7f,0xd851,0xdd80,0xd851,0xdd81,0xd851,0xdd82, - 0xd851,0xdd83,0xd851,0xdd84,0xd851,0xdd85,0xd851,0xdd86,0xd851,0xdd87, - 0xd851,0xdd88,0xd851,0xdd89,0xd851,0xdd8a,0xd851,0xdd8b,0xd851,0xdd8c, - 0xd851,0xdd8d,0xd851,0xdd8e,0xd851,0xdd8f,0xd851,0xdd90,0xd851,0xdd91, - 0xd851,0xdd92,0xd851,0xdd93,0xd851,0xdd94,0xd851,0xdd95,0xd851,0xdd96, - 0xd851,0xdd97,0xd851,0xdd98,0xd851,0xdd99,0xd851,0xdd9a,0xd851,0xdd9b, - 0xd851,0xdd9c,0xd851,0xdd9d,0xd851,0xdd9e,0xd851,0xdd9f,0xd851,0xdda0, - 0xd851,0xdda1,0xd851,0xdda2,0xd851,0xdda3,0xd851,0xdda4,0xd851,0xdda5, - 0xd851,0xdda6,0xd851,0xdda7,0xd851,0xdda8,0xd851,0xdda9,0xd851,0xddaa, - 0xd851,0xddab,0xd851,0xddac,0xd851,0xddad,0xd851,0xddae,0xd851,0xddaf, - 0xd851,0xddb0,0xd851,0xddb1,0xd851,0xddb2,0xd851,0xddb3,0xd851,0xddb4, - 0xd851,0xddb5,0xd851,0xddb6,0xd851,0xddb7,0xd851,0xddb8,0xd851,0xddb9, - 0xd851,0xddba,0xd851,0xddbb,0xd851,0xddbc,0xd851,0xddbd,0xd851,0xddbe, - 0xd851,0xddbf,0xd851,0xddc0,0xd851,0xddc1,0xd851,0xddc2,0xd851,0xddc3, - 0xd851,0xddc4,0xd851,0xddc5,0xd851,0xddc6,0xd851,0xddc7,0xd851,0xddc8, - 0xd851,0xddc9,0xd851,0xddca,0xd851,0xddcb,0xd851,0xddcc,0xd851,0xddcd, - 0xd851,0xddce,0xd851,0xddcf,0xd851,0xddd0,0xd851,0xddd1,0xd851,0xddd2, - 0xd851,0xddd3,0xd851,0xddd4,0xd851,0xddd5,0xd851,0xddd6,0xd851,0xddd7, - 0xd851,0xddd8,0xd851,0xddd9,0xd851,0xddda,0xd851,0xdddb,0xd851,0xdddc, - 0xd851,0xdddd,0xd851,0xddde,0xd851,0xdddf,0xd851,0xdde0,0xd851,0xdde1, - 0xd851,0xdde2,0xd851,0xdde3,0xd851,0xdde4,0xd851,0xdde5,0xd851,0xdde6, - 0xd851,0xdde7,0xd851,0xdde8,0xd851,0xdde9,0xd851,0xddea,0xd851,0xddeb, - 0xd851,0xddec,0xd851,0xdded,0xd851,0xddee,0xd851,0xddef,0xd851,0xddf0, - 0xd851,0xddf1,0xd851,0xddf2,0xd851,0xddf3,0xd851,0xddf4,0xd851,0xddf5, - 0xd851,0xddf6,0xd851,0xddf7,0xd851,0xddf8,0xd851,0xddf9,0xd851,0xddfa, - 0xd851,0xddfb,0xd851,0xddfc,0xd851,0xddfd,0xd851,0xddfe,0xd851,0xddff, - 0xd851,0xde00,0xd851,0xde01,0xd851,0xde02,0xd851,0xde03,0xd851,0xde04, - 0xd851,0xde05,0xd851,0xde06,0xd851,0xde07,0xd851,0xde08,0xd851,0xde09, - 0xd851,0xde0a,0xd851,0xde0b,0xd851,0xde0c,0xd851,0xde0d,0xd851,0xde0e, - 0xd851,0xde0f,0xd851,0xde10,0xd851,0xde11,0xd851,0xde12,0xd851,0xde13, - 0xd851,0xde14,0xd851,0xde15,0xd851,0xde16,0xd851,0xde17,0xd851,0xde18, - 0xd851,0xde19,0xd851,0xde1a,0xd851,0xde1b,0xd851,0xde1c,0xd851,0xde1d, - 0xd851,0xde1e,0xd851,0xde1f,0xd851,0xde20,0xd851,0xde21,0xd851,0xde22, - 0xd851,0xde23,0xd851,0xde24,0xd851,0xde25,0xd851,0xde26,0xd851,0xde27, - 0xd851,0xde28,0xd851,0xde29,0xd851,0xde2a,0xd851,0xde2b,0xd851,0xde2c, - 0xd851,0xde2d,0xd851,0xde2e,0xd851,0xde2f,0xd851,0xde30,0xd851,0xde31, - 0xd851,0xde32,0xd851,0xde33,0xd851,0xde34,0xd851,0xde35,0xd851,0xde36, - 0xd851,0xde37,0xd851,0xde38,0xd851,0xde39,0xd851,0xde3a,0xd851,0xde3b, - 0xd851,0xde3c,0xd851,0xde3d,0xd851,0xde3e,0xd851,0xde3f,0xd851,0xde40, - 0xd851,0xde41,0xd851,0xde42,0xd851,0xde43,0xd851,0xde44,0xd851,0xde45, - 0xd851,0xde46,0xd851,0xde47,0xd851,0xde48,0xd851,0xde49,0xd851,0xde4a, - 0xd851,0xde4b,0xd851,0xde4c,0xd851,0xde4d,0xd851,0xde4e,0xd851,0xde4f, - 0xd851,0xde50,0xd851,0xde51,0xd851,0xde52,0xd851,0xde53,0xd851,0xde54, - 0xd851,0xde55,0xd851,0xde56,0xd851,0xde57,0xd851,0xde58,0xd851,0xde59, - 0xd851,0xde5a,0xd851,0xde5b,0xd851,0xde5c,0xd851,0xde5d,0xd851,0xde5e, - 0xd851,0xde5f,0xd851,0xde60,0xd851,0xde61,0xd851,0xde62,0xd851,0xde63, - 0xd851,0xde64,0xd851,0xde65,0xd851,0xde66,0xd851,0xde67,0xd851,0xde68, - 0xd851,0xde69,0xd851,0xde6a,0xd851,0xde6b,0xd851,0xde6c,0xd851,0xde6d, - 0xd851,0xde6e,0xd851,0xde6f,0xd851,0xde70,0xd851,0xde71,0xd851,0xde72, - 0xd851,0xde73,0xd851,0xde74,0xd851,0xde75,0xd851,0xde76,0xd851,0xde77, - 0xd851,0xde78,0xd851,0xde79,0xd851,0xde7a,0xd851,0xde7b,0xd851,0xde7c, - 0xd851,0xde7d,0xd851,0xde7e,0xd851,0xde7f,0xd851,0xde80,0xd851,0xde81, - 0xd851,0xde82,0xd851,0xde83,0xd851,0xde84,0xd851,0xde85,0xd851,0xde86, - 0xd851,0xde87,0xd851,0xde88,0xd851,0xde89,0xd851,0xde8a,0xd851,0xde8b, - 0xd851,0xde8c,0xd851,0xde8d,0xd851,0xde8e,0xd851,0xde8f,0xd851,0xde90, - 0xd851,0xde91,0xd851,0xde92,0xd851,0xde93,0xd851,0xde94,0xd851,0xde95, - 0xd851,0xde96,0xd851,0xde97,0xd851,0xde98,0xd851,0xde99,0xd851,0xde9a, - 0xd851,0xde9b,0xd851,0xde9c,0xd851,0xde9d,0xd851,0xde9e,0xd851,0xde9f, - 0xd851,0xdea0,0xd851,0xdea1,0xd851,0xdea2,0xd851,0xdea3,0xd851,0xdea4, - 0xd851,0xdea5,0xd851,0xdea6,0xd851,0xdea7,0xd851,0xdea8,0xd851,0xdea9, - 0xd851,0xdeaa,0xd851,0xdeab,0xd851,0xdeac,0xd851,0xdead,0xd851,0xdeae, - 0xd851,0xdeaf,0xd851,0xdeb0,0xd851,0xdeb1,0xd851,0xdeb2,0xd851,0xdeb3, - 0xd851,0xdeb4,0xd851,0xdeb5,0xd851,0xdeb6,0xd851,0xdeb7,0xd851,0xdeb8, - 0xd851,0xdeb9,0xd851,0xdeba,0xd851,0xdebb,0xd851,0xdebc,0xd851,0xdebd, - 0xd851,0xdebe,0xd851,0xdebf,0xd851,0xdec0,0xd851,0xdec1,0xd851,0xdec2, - 0xd851,0xdec3,0xd851,0xdec4,0xd851,0xdec5,0xd851,0xdec6,0xd851,0xdec7, - 0xd851,0xdec8,0xd851,0xdec9,0xd851,0xdeca,0xd851,0xdecb,0xd851,0xdecc, - 0xd851,0xdecd,0xd851,0xdece,0xd851,0xdecf,0xd851,0xded0,0xd851,0xded1, - 0xd851,0xded2,0xd851,0xded3,0xd851,0xded4,0xd851,0xded5,0xd851,0xded6, - 0xd851,0xded7,0xd851,0xded8,0xd851,0xded9,0xd851,0xdeda,0xd851,0xdedb, - 0xd851,0xdedc,0xd851,0xdedd,0xd851,0xdede,0xd851,0xdedf,0xd851,0xdee0, - 0xd851,0xdee1,0xd851,0xdee2,0xd851,0xdee3,0xd851,0xdee4,0xd851,0xdee5, - 0xd851,0xdee6,0xd851,0xdee7,0xd851,0xdee8,0xd851,0xdee9,0xd851,0xdeea, - 0xd851,0xdeeb,0xd851,0xdeec,0xd851,0xdeed,0xd851,0xdeee,0xd851,0xdeef, - 0xd851,0xdef0,0xd851,0xdef1,0xd851,0xdef2,0xd851,0xdef3,0xd851,0xdef4, - 0xd851,0xdef5,0xd851,0xdef6,0xd851,0xdef7,0xd851,0xdef8,0xd851,0xdef9, - 0xd851,0xdefa,0xd851,0xdefb,0xd851,0xdefc,0xd851,0xdefd,0xd851,0xdefe, - 0xd851,0xdeff,0xd851,0xdf00,0xd851,0xdf01,0xd851,0xdf02,0xd851,0xdf03, - 0xd851,0xdf04,0xd851,0xdf05,0xd851,0xdf06,0xd851,0xdf07,0xd851,0xdf08, - 0xd851,0xdf09,0xd851,0xdf0a,0xd851,0xdf0b,0xd851,0xdf0c,0xd851,0xdf0d, - 0xd851,0xdf0e,0xd851,0xdf0f,0xd851,0xdf10,0xd851,0xdf11,0xd851,0xdf12, - 0xd851,0xdf13,0xd851,0xdf14,0xd851,0xdf15,0xd851,0xdf16,0xd851,0xdf17, - 0xd851,0xdf18,0xd851,0xdf19,0xd851,0xdf1a,0xd851,0xdf1b,0xd851,0xdf1c, - 0xd851,0xdf1d,0xd851,0xdf1e,0xd851,0xdf1f,0xd851,0xdf20,0xd851,0xdf21, - 0xd851,0xdf22,0xd851,0xdf23,0xd851,0xdf24,0xd851,0xdf25,0xd851,0xdf26, - 0xd851,0xdf27,0xd851,0xdf28,0xd851,0xdf29,0xd851,0xdf2a,0xd851,0xdf2b, - 0xd851,0xdf2c,0xd851,0xdf2d,0xd851,0xdf2e,0xd851,0xdf2f,0xd851,0xdf30, - 0xd851,0xdf31,0xd851,0xdf32,0xd851,0xdf33,0xd851,0xdf34,0xd851,0xdf35, - 0xd851,0xdf36,0xd851,0xdf37,0xd851,0xdf38,0xd851,0xdf39,0xd851,0xdf3a, - 0xd851,0xdf3b,0xd851,0xdf3c,0xd851,0xdf3d,0xd851,0xdf3e,0xd851,0xdf3f, - 0xd851,0xdf40,0xd851,0xdf41,0xd851,0xdf42,0xd851,0xdf43,0xd851,0xdf44, - 0xd851,0xdf45,0xd851,0xdf46,0xd851,0xdf47,0xd851,0xdf48,0xd851,0xdf49, - 0xd851,0xdf4a,0xd851,0xdf4b,0xd851,0xdf4c,0xd851,0xdf4d,0xd851,0xdf4e, - 0xd851,0xdf4f,0xd851,0xdf50,0xd851,0xdf51,0xd851,0xdf52,0xd851,0xdf53, - 0xd851,0xdf54,0xd851,0xdf55,0xd851,0xdf56,0xd851,0xdf57,0xd851,0xdf58, - 0xd851,0xdf59,0xd851,0xdf5a,0xd851,0xdf5b,0xd851,0xdf5c,0xd851,0xdf5d, - 0xd851,0xdf5e,0xd851,0xdf5f,0xd851,0xdf60,0xd851,0xdf61,0xd851,0xdf62, - 0xd851,0xdf63,0xd851,0xdf64,0xd851,0xdf65,0xd851,0xdf66,0xd851,0xdf67, - 0xd851,0xdf68,0xd851,0xdf69,0xd851,0xdf6a,0xd851,0xdf6b,0xd851,0xdf6c, - 0xd851,0xdf6d,0xd851,0xdf6e,0xd851,0xdf6f,0xd851,0xdf70,0xd851,0xdf71, - 0xd851,0xdf72,0xd851,0xdf73,0xd851,0xdf74,0xd851,0xdf75,0xd851,0xdf76, - 0xd851,0xdf77,0xd851,0xdf78,0xd851,0xdf79,0xd851,0xdf7a,0xd851,0xdf7b, - 0xd851,0xdf7c,0xd851,0xdf7d,0xd851,0xdf7e,0xd851,0xdf7f,0xd851,0xdf80, - 0xd851,0xdf81,0xd851,0xdf82,0xd851,0xdf83,0xd851,0xdf84,0xd851,0xdf85, - 0xd851,0xdf86,0xd851,0xdf87,0xd851,0xdf88,0xd851,0xdf89,0xd851,0xdf8a, - 0xd851,0xdf8b,0xd851,0xdf8c,0xd851,0xdf8d,0xd851,0xdf8e,0xd851,0xdf8f, - 0xd851,0xdf90,0xd851,0xdf91,0xd851,0xdf92,0xd851,0xdf93,0xd851,0xdf94, - 0xd851,0xdf95,0xd851,0xdf96,0xd851,0xdf97,0xd851,0xdf98,0xd851,0xdf99, - 0xd851,0xdf9a,0xd851,0xdf9b,0xd851,0xdf9c,0xd851,0xdf9d,0xd851,0xdf9e, - 0xd851,0xdf9f,0xd851,0xdfa0,0xd851,0xdfa1,0xd851,0xdfa2,0xd851,0xdfa3, - 0xd851,0xdfa4,0xd851,0xdfa5,0xd851,0xdfa6,0xd851,0xdfa7,0xd851,0xdfa8, - 0xd851,0xdfa9,0xd851,0xdfaa,0xd851,0xdfab,0xd851,0xdfac,0xd851,0xdfad, - 0xd851,0xdfae,0xd851,0xdfaf,0xd851,0xdfb0,0xd851,0xdfb1,0xd851,0xdfb2, - 0xd851,0xdfb3,0xd851,0xdfb4,0xd851,0xdfb5,0xd851,0xdfb6,0xd851,0xdfb7, - 0xd851,0xdfb8,0xd851,0xdfb9,0xd851,0xdfba,0xd851,0xdfbb,0xd851,0xdfbc, - 0xd851,0xdfbd,0xd851,0xdfbe,0xd851,0xdfbf,0xd851,0xdfc0,0xd851,0xdfc1, - 0xd851,0xdfc2,0xd851,0xdfc3,0xd851,0xdfc4,0xd851,0xdfc5,0xd851,0xdfc6, - 0xd851,0xdfc7,0xd851,0xdfc8,0xd851,0xdfc9,0xd851,0xdfca,0xd851,0xdfcb, - 0xd851,0xdfcc,0xd851,0xdfcd,0xd851,0xdfce,0xd851,0xdfcf,0xd851,0xdfd0, - 0xd851,0xdfd1,0xd851,0xdfd2,0xd851,0xdfd3,0xd851,0xdfd4,0xd851,0xdfd5, - 0xd851,0xdfd6,0xd851,0xdfd7,0xd851,0xdfd8,0xd851,0xdfd9,0xd851,0xdfda, - 0xd851,0xdfdb,0xd851,0xdfdc,0xd851,0xdfdd,0xd851,0xdfde,0xd851,0xdfdf, - 0xd851,0xdfe0,0xd851,0xdfe1,0xd851,0xdfe2,0xd851,0xdfe3,0xd851,0xdfe4, - 0xd851,0xdfe5,0xd851,0xdfe6,0xd851,0xdfe7,0xd851,0xdfe8,0xd851,0xdfe9, - 0xd851,0xdfea,0xd851,0xdfeb,0xd851,0xdfec,0xd851,0xdfed,0xd851,0xdfee, - 0xd851,0xdfef,0xd851,0xdff0,0xd851,0xdff1,0xd851,0xdff2,0xd851,0xdff3, - 0xd851,0xdff4,0xd851,0xdff5,0xd851,0xdff6,0xd851,0xdff7,0xd851,0xdff8, - 0xd851,0xdff9,0xd851,0xdffa,0xd851,0xdffb,0xd851,0xdffc,0xd851,0xdffd, - 0xd851,0xdffe,0xd851,0xdfff,0xd852,0xdc00,0xd852,0xdc01,0xd852,0xdc02, - 0xd852,0xdc03,0xd852,0xdc04,0xd852,0xdc05,0xd852,0xdc06,0xd852,0xdc07, - 0xd852,0xdc08,0xd852,0xdc09,0xd852,0xdc0a,0xd852,0xdc0b,0xd852,0xdc0c, - 0xd852,0xdc0d,0xd852,0xdc0e,0xd852,0xdc0f,0xd852,0xdc10,0xd852,0xdc11, - 0xd852,0xdc12,0xd852,0xdc13,0xd852,0xdc14,0xd852,0xdc15,0xd852,0xdc16, - 0xd852,0xdc17,0xd852,0xdc18,0xd852,0xdc19,0xd852,0xdc1a,0xd852,0xdc1b, - 0xd852,0xdc1c,0xd852,0xdc1d,0xd852,0xdc1e,0xd852,0xdc1f,0xd852,0xdc20, - 0xd852,0xdc21,0xd852,0xdc22,0xd852,0xdc23,0xd852,0xdc24,0xd852,0xdc25, - 0xd852,0xdc26,0xd852,0xdc27,0xd852,0xdc28,0xd852,0xdc29,0xd852,0xdc2a, - 0xd852,0xdc2b,0xd852,0xdc2c,0xd852,0xdc2d,0xd852,0xdc2e,0xd852,0xdc2f, - 0xd852,0xdc30,0xd852,0xdc31,0xd852,0xdc32,0xd852,0xdc33,0xd852,0xdc34, - 0xd852,0xdc35,0xd852,0xdc36,0xd852,0xdc37,0xd852,0xdc38,0xd852,0xdc39, - 0xd852,0xdc3a,0xd852,0xdc3b,0xd852,0xdc3c,0xd852,0xdc3d,0xd852,0xdc3e, - 0xd852,0xdc3f,0xd852,0xdc40,0xd852,0xdc41,0xd852,0xdc42,0xd852,0xdc43, - 0xd852,0xdc44,0xd852,0xdc45,0xd852,0xdc46,0xd852,0xdc47,0xd852,0xdc48, - 0xd852,0xdc49,0xd852,0xdc4a,0xd852,0xdc4b,0xd852,0xdc4c,0xd852,0xdc4d, - 0xd852,0xdc4e,0xd852,0xdc4f,0xd852,0xdc50,0xd852,0xdc51,0xd852,0xdc52, - 0xd852,0xdc53,0xd852,0xdc54,0xd852,0xdc55,0xd852,0xdc56,0xd852,0xdc57, - 0xd852,0xdc58,0xd852,0xdc59,0xd852,0xdc5a,0xd852,0xdc5b,0xd852,0xdc5c, - 0xd852,0xdc5d,0xd852,0xdc5e,0xd852,0xdc5f,0xd852,0xdc60,0xd852,0xdc61, - 0xd852,0xdc62,0xd852,0xdc63,0xd852,0xdc64,0xd852,0xdc65,0xd852,0xdc66, - 0xd852,0xdc67,0xd852,0xdc68,0xd852,0xdc69,0xd852,0xdc6a,0xd852,0xdc6b, - 0xd852,0xdc6c,0xd852,0xdc6d,0xd852,0xdc6e,0xd852,0xdc6f,0xd852,0xdc70, - 0xd852,0xdc71,0xd852,0xdc72,0xd852,0xdc73,0xd852,0xdc74,0xd852,0xdc75, - 0xd852,0xdc76,0xd852,0xdc77,0xd852,0xdc78,0xd852,0xdc79,0xd852,0xdc7a, - 0xd852,0xdc7b,0xd852,0xdc7c,0xd852,0xdc7d,0xd852,0xdc7e,0xd852,0xdc7f, - 0xd852,0xdc80,0xd852,0xdc81,0xd852,0xdc82,0xd852,0xdc83,0xd852,0xdc84, - 0xd852,0xdc85,0xd852,0xdc86,0xd852,0xdc87,0xd852,0xdc88,0xd852,0xdc89, - 0xd852,0xdc8a,0xd852,0xdc8b,0xd852,0xdc8c,0xd852,0xdc8d,0xd852,0xdc8e, - 0xd852,0xdc8f,0xd852,0xdc90,0xd852,0xdc91,0xd852,0xdc92,0xd852,0xdc93, - 0xd852,0xdc94,0xd852,0xdc95,0xd852,0xdc96,0xd852,0xdc97,0xd852,0xdc98, - 0xd852,0xdc99,0xd852,0xdc9a,0xd852,0xdc9b,0xd852,0xdc9c,0xd852,0xdc9d, - 0xd852,0xdc9e,0xd852,0xdc9f,0xd852,0xdca0,0xd852,0xdca1,0xd852,0xdca2, - 0xd852,0xdca3,0xd852,0xdca4,0xd852,0xdca5,0xd852,0xdca6,0xd852,0xdca7, - 0xd852,0xdca8,0xd852,0xdca9,0xd852,0xdcaa,0xd852,0xdcab,0xd852,0xdcac, - 0xd852,0xdcad,0xd852,0xdcae,0xd852,0xdcaf,0xd852,0xdcb0,0xd852,0xdcb1, - 0xd852,0xdcb2,0xd852,0xdcb3,0xd852,0xdcb4,0xd852,0xdcb5,0xd852,0xdcb6, - 0xd852,0xdcb7,0xd852,0xdcb8,0xd852,0xdcb9,0xd852,0xdcba,0xd852,0xdcbb, - 0xd852,0xdcbc,0xd852,0xdcbd,0xd852,0xdcbe,0xd852,0xdcbf,0xd852,0xdcc0, - 0xd852,0xdcc1,0xd852,0xdcc2,0xd852,0xdcc3,0xd852,0xdcc4,0xd852,0xdcc5, - 0xd852,0xdcc6,0xd852,0xdcc7,0xd852,0xdcc8,0xd852,0xdcc9,0xd852,0xdcca, - 0xd852,0xdccb,0xd852,0xdccc,0xd852,0xdccd,0xd852,0xdcce,0xd852,0xdccf, - 0xd852,0xdcd0,0xd852,0xdcd1,0xd852,0xdcd2,0xd852,0xdcd3,0xd852,0xdcd4, - 0xd852,0xdcd5,0xd852,0xdcd6,0xd852,0xdcd7,0xd852,0xdcd8,0xd852,0xdcd9, - 0xd852,0xdcda,0xd852,0xdcdb,0xd852,0xdcdc,0xd852,0xdcdd,0xd852,0xdcde, - 0xd852,0xdcdf,0xd852,0xdce0,0xd852,0xdce1,0xd852,0xdce2,0xd852,0xdce3, - 0xd852,0xdce4,0xd852,0xdce5,0xd852,0xdce6,0xd852,0xdce7,0xd852,0xdce8, - 0xd852,0xdce9,0xd852,0xdcea,0xd852,0xdceb,0xd852,0xdcec,0xd852,0xdced, - 0xd852,0xdcee,0xd852,0xdcef,0xd852,0xdcf0,0xd852,0xdcf1,0xd852,0xdcf2, - 0xd852,0xdcf3,0xd852,0xdcf4,0xd852,0xdcf5,0xd852,0xdcf6,0xd852,0xdcf7, - 0xd852,0xdcf8,0xd852,0xdcf9,0xd852,0xdcfa,0xd852,0xdcfb,0xd852,0xdcfc, - 0xd852,0xdcfd,0xd852,0xdcfe,0xd852,0xdcff,0xd852,0xdd00,0xd852,0xdd01, - 0xd852,0xdd02,0xd852,0xdd03,0xd852,0xdd04,0xd852,0xdd05,0xd852,0xdd06, - 0xd852,0xdd07,0xd852,0xdd08,0xd852,0xdd09,0xd852,0xdd0a,0xd852,0xdd0b, - 0xd852,0xdd0c,0xd852,0xdd0d,0xd852,0xdd0e,0xd852,0xdd0f,0xd852,0xdd10, - 0xd852,0xdd11,0xd852,0xdd12,0xd852,0xdd13,0xd852,0xdd14,0xd852,0xdd15, - 0xd852,0xdd16,0xd852,0xdd17,0xd852,0xdd18,0xd852,0xdd19,0xd852,0xdd1a, - 0xd852,0xdd1b,0xd852,0xdd1c,0xd852,0xdd1d,0xd852,0xdd1e,0xd852,0xdd1f, - 0xd852,0xdd20,0xd852,0xdd21,0xd852,0xdd22,0xd852,0xdd23,0xd852,0xdd24, - 0xd852,0xdd25,0xd852,0xdd26,0xd852,0xdd27,0xd852,0xdd28,0xd852,0xdd29, - 0xd852,0xdd2a,0xd852,0xdd2b,0xd852,0xdd2c,0xd852,0xdd2d,0xd852,0xdd2e, - 0xd852,0xdd2f,0xd852,0xdd30,0xd852,0xdd31,0xd852,0xdd32,0xd852,0xdd33, - 0xd852,0xdd34,0xd852,0xdd35,0xd852,0xdd36,0xd852,0xdd37,0xd852,0xdd38, - 0xd852,0xdd39,0xd852,0xdd3a,0xd852,0xdd3b,0xd852,0xdd3c,0xd852,0xdd3d, - 0xd852,0xdd3e,0xd852,0xdd3f,0xd852,0xdd40,0xd852,0xdd41,0xd852,0xdd42, - 0xd852,0xdd43,0xd852,0xdd44,0xd852,0xdd45,0xd852,0xdd46,0xd852,0xdd47, - 0xd852,0xdd48,0xd852,0xdd49,0xd852,0xdd4a,0xd852,0xdd4b,0xd852,0xdd4c, - 0xd852,0xdd4d,0xd852,0xdd4e,0xd852,0xdd4f,0xd852,0xdd50,0xd852,0xdd51, - 0xd852,0xdd52,0xd852,0xdd53,0xd852,0xdd54,0xd852,0xdd55,0xd852,0xdd56, - 0xd852,0xdd57,0xd852,0xdd58,0xd852,0xdd59,0xd852,0xdd5a,0xd852,0xdd5b, - 0xd852,0xdd5c,0xd852,0xdd5d,0xd852,0xdd5e,0xd852,0xdd5f,0xd852,0xdd60, - 0xd852,0xdd61,0xd852,0xdd62,0xd852,0xdd63,0xd852,0xdd64,0xd852,0xdd65, - 0xd852,0xdd66,0xd852,0xdd67,0xd852,0xdd68,0xd852,0xdd69,0xd852,0xdd6a, - 0xd852,0xdd6b,0xd852,0xdd6c,0xd852,0xdd6d,0xd852,0xdd6e,0xd852,0xdd6f, - 0xd852,0xdd70,0xd852,0xdd71,0xd852,0xdd72,0xd852,0xdd73,0xd852,0xdd74, - 0xd852,0xdd75,0xd852,0xdd76,0xd852,0xdd77,0xd852,0xdd78,0xd852,0xdd79, - 0xd852,0xdd7a,0xd852,0xdd7b,0xd852,0xdd7c,0xd852,0xdd7d,0xd852,0xdd7e, - 0xd852,0xdd7f,0xd852,0xdd80,0xd852,0xdd81,0xd852,0xdd82,0xd852,0xdd83, - 0xd852,0xdd84,0xd852,0xdd85,0xd852,0xdd86,0xd852,0xdd87,0xd852,0xdd88, - 0xd852,0xdd89,0xd852,0xdd8a,0xd852,0xdd8b,0xd852,0xdd8c,0xd852,0xdd8d, - 0xd852,0xdd8e,0xd852,0xdd8f,0xd852,0xdd90,0xd852,0xdd91,0xd852,0xdd92, - 0xd852,0xdd93,0xd852,0xdd94,0xd852,0xdd95,0xd852,0xdd96,0xd852,0xdd97, - 0xd852,0xdd98,0xd852,0xdd99,0xd852,0xdd9a,0xd852,0xdd9b,0xd852,0xdd9c, - 0xd852,0xdd9d,0xd852,0xdd9e,0xd852,0xdd9f,0xd852,0xdda0,0xd852,0xdda1, - 0xd852,0xdda2,0xd852,0xdda3,0xd852,0xdda4,0xd852,0xdda5,0xd852,0xdda6, - 0xd852,0xdda7,0xd852,0xdda8,0xd852,0xdda9,0xd852,0xddaa,0xd852,0xddab, - 0xd852,0xddac,0xd852,0xddad,0xd852,0xddae,0xd852,0xddaf,0xd852,0xddb0, - 0xd852,0xddb1,0xd852,0xddb2,0xd852,0xddb3,0xd852,0xddb4,0xd852,0xddb5, - 0xd852,0xddb6,0xd852,0xddb7,0xd852,0xddb8,0xd852,0xddb9,0xd852,0xddba, - 0xd852,0xddbb,0xd852,0xddbc,0xd852,0xddbd,0xd852,0xddbe,0xd852,0xddbf, - 0xd852,0xddc0,0xd852,0xddc1,0xd852,0xddc2,0xd852,0xddc3,0xd852,0xddc4, - 0xd852,0xddc5,0xd852,0xddc6,0xd852,0xddc7,0xd852,0xddc8,0xd852,0xddc9, - 0xd852,0xddca,0xd852,0xddcb,0xd852,0xddcc,0xd852,0xddcd,0xd852,0xddce, - 0xd852,0xddcf,0xd852,0xddd0,0xd852,0xddd1,0xd852,0xddd2,0xd852,0xddd3, - 0xd852,0xddd4,0xd852,0xddd5,0xd852,0xddd6,0xd852,0xddd7,0xd852,0xddd8, - 0xd852,0xddd9,0xd852,0xddda,0xd852,0xdddb,0xd852,0xdddc,0xd852,0xdddd, - 0xd852,0xddde,0xd852,0xdddf,0xd852,0xdde0,0xd852,0xdde1,0xd852,0xdde2, - 0xd852,0xdde3,0xd852,0xdde4,0xd852,0xdde5,0xd852,0xdde6,0xd852,0xdde7, - 0xd852,0xdde8,0xd852,0xdde9,0xd852,0xddea,0xd852,0xddeb,0xd852,0xddec, - 0xd852,0xdded,0xd852,0xddee,0xd852,0xddef,0xd852,0xddf0,0xd852,0xddf1, - 0xd852,0xddf2,0xd852,0xddf3,0xd852,0xddf4,0xd852,0xddf5,0xd852,0xddf6, - 0xd852,0xddf7,0xd852,0xddf8,0xd852,0xddf9,0xd852,0xddfa,0xd852,0xddfb, - 0xd852,0xddfc,0xd852,0xddfd,0xd852,0xddfe,0xd852,0xddff,0xd852,0xde00, - 0xd852,0xde01,0xd852,0xde02,0xd852,0xde03,0xd852,0xde04,0xd852,0xde05, - 0xd852,0xde06,0xd852,0xde07,0xd852,0xde08,0xd852,0xde09,0xd852,0xde0a, - 0xd852,0xde0b,0xd852,0xde0c,0xd852,0xde0d,0xd852,0xde0e,0xd852,0xde0f, - 0xd852,0xde10,0xd852,0xde11,0xd852,0xde12,0xd852,0xde13,0xd852,0xde14, - 0xd852,0xde15,0xd852,0xde16,0xd852,0xde17,0xd852,0xde18,0xd852,0xde19, - 0xd852,0xde1a,0xd852,0xde1b,0xd852,0xde1c,0xd852,0xde1d,0xd852,0xde1e, - 0xd852,0xde1f,0xd852,0xde20,0xd852,0xde21,0xd852,0xde22,0xd852,0xde23, - 0xd852,0xde24,0xd852,0xde25,0xd852,0xde26,0xd852,0xde27,0xd852,0xde28, - 0xd852,0xde29,0xd852,0xde2a,0xd852,0xde2b,0xd852,0xde2c,0xd852,0xde2d, - 0xd852,0xde2e,0xd852,0xde2f,0xd852,0xde30,0xd852,0xde31,0xd852,0xde32, - 0xd852,0xde33,0xd852,0xde34,0xd852,0xde35,0xd852,0xde36,0xd852,0xde37, - 0xd852,0xde38,0xd852,0xde39,0xd852,0xde3a,0xd852,0xde3b,0xd852,0xde3c, - 0xd852,0xde3d,0xd852,0xde3e,0xd852,0xde3f,0xd852,0xde40,0xd852,0xde41, - 0xd852,0xde42,0xd852,0xde43,0xd852,0xde44,0xd852,0xde45,0xd852,0xde46, - 0xd852,0xde47,0xd852,0xde48,0xd852,0xde49,0xd852,0xde4a,0xd852,0xde4b, - 0xd852,0xde4c,0xd852,0xde4d,0xd852,0xde4e,0xd852,0xde4f,0xd852,0xde50, - 0xd852,0xde51,0xd852,0xde52,0xd852,0xde53,0xd852,0xde54,0xd852,0xde55, - 0xd852,0xde56,0xd852,0xde57,0xd852,0xde58,0xd852,0xde59,0xd852,0xde5a, - 0xd852,0xde5b,0xd852,0xde5c,0xd852,0xde5d,0xd852,0xde5e,0xd852,0xde5f, - 0xd852,0xde60,0xd852,0xde61,0xd852,0xde62,0xd852,0xde63,0xd852,0xde64, - 0xd852,0xde65,0xd852,0xde66,0xd852,0xde67,0xd852,0xde68,0xd852,0xde69, - 0xd852,0xde6a,0xd852,0xde6b,0xd852,0xde6c,0xd852,0xde6d,0xd852,0xde6e, - 0xd852,0xde6f,0xd852,0xde70,0xd852,0xde71,0xd852,0xde72,0xd852,0xde73, - 0xd852,0xde74,0xd852,0xde75,0xd852,0xde76,0xd852,0xde77,0xd852,0xde78, - 0xd852,0xde79,0xd852,0xde7a,0xd852,0xde7b,0xd852,0xde7c,0xd852,0xde7d, - 0xd852,0xde7e,0xd852,0xde7f,0xd852,0xde80,0xd852,0xde81,0xd852,0xde82, - 0xd852,0xde83,0xd852,0xde84,0xd852,0xde85,0xd852,0xde86,0xd852,0xde87, - 0xd852,0xde88,0xd852,0xde89,0xd852,0xde8a,0xd852,0xde8b,0xd852,0xde8c, - 0xd852,0xde8d,0xd852,0xde8e,0xd852,0xde8f,0xd852,0xde90,0xd852,0xde91, - 0xd852,0xde92,0xd852,0xde93,0xd852,0xde94,0xd852,0xde95,0xd852,0xde96, - 0xd852,0xde97,0xd852,0xde98,0xd852,0xde99,0xd852,0xde9a,0xd852,0xde9b, - 0xd852,0xde9c,0xd852,0xde9d,0xd852,0xde9e,0xd852,0xde9f,0xd852,0xdea0, - 0xd852,0xdea1,0xd852,0xdea2,0xd852,0xdea3,0xd852,0xdea4,0xd852,0xdea5, - 0xd852,0xdea6,0xd852,0xdea7,0xd852,0xdea8,0xd852,0xdea9,0xd852,0xdeaa, - 0xd852,0xdeab,0xd852,0xdeac,0xd852,0xdead,0xd852,0xdeae,0xd852,0xdeaf, - 0xd852,0xdeb0,0xd852,0xdeb1,0xd852,0xdeb2,0xd852,0xdeb3,0xd852,0xdeb4, - 0xd852,0xdeb5,0xd852,0xdeb6,0xd852,0xdeb7,0xd852,0xdeb8,0xd852,0xdeb9, - 0xd852,0xdeba,0xd852,0xdebb,0xd852,0xdebc,0xd852,0xdebd,0xd852,0xdebe, - 0xd852,0xdebf,0xd852,0xdec0,0xd852,0xdec1,0xd852,0xdec2,0xd852,0xdec3, - 0xd852,0xdec4,0xd852,0xdec5,0xd852,0xdec6,0xd852,0xdec7,0xd852,0xdec8, - 0xd852,0xdec9,0xd852,0xdeca,0xd852,0xdecb,0xd852,0xdecc,0xd852,0xdecd, - 0xd852,0xdece,0xd852,0xdecf,0xd852,0xded0,0xd852,0xded1,0xd852,0xded2, - 0xd852,0xded3,0xd852,0xded4,0xd852,0xded5,0xd852,0xded6,0xd852,0xded7, - 0xd852,0xded8,0xd852,0xded9,0xd852,0xdeda,0xd852,0xdedb,0xd852,0xdedc, - 0xd852,0xdedd,0xd852,0xdede,0xd852,0xdedf,0xd852,0xdee0,0xd852,0xdee1, - 0xd852,0xdee2,0xd852,0xdee3,0xd852,0xdee4,0xd852,0xdee5,0xd852,0xdee6, - 0xd852,0xdee7,0xd852,0xdee8,0xd852,0xdee9,0xd852,0xdeea,0xd852,0xdeeb, - 0xd852,0xdeec,0xd852,0xdeed,0xd852,0xdeee,0xd852,0xdeef,0xd852,0xdef0, - 0xd852,0xdef1,0xd852,0xdef2,0xd852,0xdef3,0xd852,0xdef4,0xd852,0xdef5, - 0xd852,0xdef6,0xd852,0xdef7,0xd852,0xdef8,0xd852,0xdef9,0xd852,0xdefa, - 0xd852,0xdefb,0xd852,0xdefc,0xd852,0xdefd,0xd852,0xdefe,0xd852,0xdeff, - 0xd852,0xdf00,0xd852,0xdf01,0xd852,0xdf02,0xd852,0xdf03,0xd852,0xdf04, - 0xd852,0xdf05,0xd852,0xdf06,0xd852,0xdf07,0xd852,0xdf08,0xd852,0xdf09, - 0xd852,0xdf0a,0xd852,0xdf0b,0xd852,0xdf0c,0xd852,0xdf0d,0xd852,0xdf0e, - 0xd852,0xdf0f,0xd852,0xdf10,0xd852,0xdf11,0xd852,0xdf12,0xd852,0xdf13, - 0xd852,0xdf14,0xd852,0xdf15,0xd852,0xdf16,0xd852,0xdf17,0xd852,0xdf18, - 0xd852,0xdf19,0xd852,0xdf1a,0xd852,0xdf1b,0xd852,0xdf1c,0xd852,0xdf1d, - 0xd852,0xdf1e,0xd852,0xdf1f,0xd852,0xdf20,0xd852,0xdf21,0xd852,0xdf22, - 0xd852,0xdf23,0xd852,0xdf24,0xd852,0xdf25,0xd852,0xdf26,0xd852,0xdf27, - 0xd852,0xdf28,0xd852,0xdf29,0xd852,0xdf2a,0xd852,0xdf2b,0xd852,0xdf2c, - 0xd852,0xdf2d,0xd852,0xdf2e,0xd852,0xdf2f,0xd852,0xdf30,0xd852,0xdf31, - 0xd852,0xdf32,0xd852,0xdf33,0xd852,0xdf34,0xd852,0xdf35,0xd852,0xdf36, - 0xd852,0xdf37,0xd852,0xdf38,0xd852,0xdf39,0xd852,0xdf3a,0xd852,0xdf3b, - 0xd852,0xdf3c,0xd852,0xdf3d,0xd852,0xdf3e,0xd852,0xdf3f,0xd852,0xdf40, - 0xd852,0xdf41,0xd852,0xdf42,0xd852,0xdf43,0xd852,0xdf44,0xd852,0xdf45, - 0xd852,0xdf46,0xd852,0xdf47,0xd852,0xdf48,0xd852,0xdf49,0xd852,0xdf4a, - 0xd852,0xdf4b,0xd852,0xdf4c,0xd852,0xdf4d,0xd852,0xdf4e,0xd852,0xdf4f, - 0xd852,0xdf50,0xd852,0xdf51,0xd852,0xdf52,0xd852,0xdf53,0xd852,0xdf54, - 0xd852,0xdf55,0xd852,0xdf56,0xd852,0xdf57,0xd852,0xdf58,0xd852,0xdf59, - 0xd852,0xdf5a,0xd852,0xdf5b,0xd852,0xdf5c,0xd852,0xdf5d,0xd852,0xdf5e, - 0xd852,0xdf5f,0xd852,0xdf60,0xd852,0xdf61,0xd852,0xdf62,0xd852,0xdf63, - 0xd852,0xdf64,0xd852,0xdf65,0xd852,0xdf66,0xd852,0xdf67,0xd852,0xdf68, - 0xd852,0xdf69,0xd852,0xdf6a,0xd852,0xdf6b,0xd852,0xdf6c,0xd852,0xdf6d, - 0xd852,0xdf6e,0xd852,0xdf6f,0xd852,0xdf70,0xd852,0xdf71,0xd852,0xdf72, - 0xd852,0xdf73,0xd852,0xdf74,0xd852,0xdf75,0xd852,0xdf76,0xd852,0xdf77, - 0xd852,0xdf78,0xd852,0xdf79,0xd852,0xdf7a,0xd852,0xdf7b,0xd852,0xdf7c, - 0xd852,0xdf7d,0xd852,0xdf7e,0xd852,0xdf7f,0xd852,0xdf80,0xd852,0xdf81, - 0xd852,0xdf82,0xd852,0xdf83,0xd852,0xdf84,0xd852,0xdf85,0xd852,0xdf86, - 0xd852,0xdf87,0xd852,0xdf88,0xd852,0xdf89,0xd852,0xdf8a,0xd852,0xdf8b, - 0xd852,0xdf8c,0xd852,0xdf8d,0xd852,0xdf8e,0xd852,0xdf8f,0xd852,0xdf90, - 0xd852,0xdf91,0xd852,0xdf92,0xd852,0xdf93,0xd852,0xdf94,0xd852,0xdf95, - 0xd852,0xdf96,0xd852,0xdf97,0xd852,0xdf98,0xd852,0xdf99,0xd852,0xdf9a, - 0xd852,0xdf9b,0xd852,0xdf9c,0xd852,0xdf9d,0xd852,0xdf9e,0xd852,0xdf9f, - 0xd852,0xdfa0,0xd852,0xdfa1,0xd852,0xdfa2,0xd852,0xdfa3,0xd852,0xdfa4, - 0xd852,0xdfa5,0xd852,0xdfa6,0xd852,0xdfa7,0xd852,0xdfa8,0xd852,0xdfa9, - 0xd852,0xdfaa,0xd852,0xdfab,0xd852,0xdfac,0xd852,0xdfad,0xd852,0xdfae, - 0xd852,0xdfaf,0xd852,0xdfb0,0xd852,0xdfb1,0xd852,0xdfb2,0xd852,0xdfb3, - 0xd852,0xdfb4,0xd852,0xdfb5,0xd852,0xdfb6,0xd852,0xdfb7,0xd852,0xdfb8, - 0xd852,0xdfb9,0xd852,0xdfba,0xd852,0xdfbb,0xd852,0xdfbc,0xd852,0xdfbd, - 0xd852,0xdfbe,0xd852,0xdfbf,0xd852,0xdfc0,0xd852,0xdfc1,0xd852,0xdfc2, - 0xd852,0xdfc3,0xd852,0xdfc4,0xd852,0xdfc5,0xd852,0xdfc6,0xd852,0xdfc7, - 0xd852,0xdfc8,0xd852,0xdfc9,0xd852,0xdfca,0xd852,0xdfcb,0xd852,0xdfcc, - 0xd852,0xdfcd,0xd852,0xdfce,0xd852,0xdfcf,0xd852,0xdfd0,0xd852,0xdfd1, - 0xd852,0xdfd2,0xd852,0xdfd3,0xd852,0xdfd4,0xd852,0xdfd5,0xd852,0xdfd6, - 0xd852,0xdfd7,0xd852,0xdfd8,0xd852,0xdfd9,0xd852,0xdfda,0xd852,0xdfdb, - 0xd852,0xdfdc,0xd852,0xdfdd,0xd852,0xdfde,0xd852,0xdfdf,0xd852,0xdfe0, - 0xd852,0xdfe1,0xd852,0xdfe2,0xd852,0xdfe3,0xd852,0xdfe4,0xd852,0xdfe5, - 0xd852,0xdfe6,0xd852,0xdfe7,0xd852,0xdfe8,0xd852,0xdfe9,0xd852,0xdfea, - 0xd852,0xdfeb,0xd852,0xdfec,0xd852,0xdfed,0xd852,0xdfee,0xd852,0xdfef, - 0xd852,0xdff0,0xd852,0xdff1,0xd852,0xdff2,0xd852,0xdff3,0xd852,0xdff4, - 0xd852,0xdff5,0xd852,0xdff6,0xd852,0xdff7,0xd852,0xdff8,0xd852,0xdff9, - 0xd852,0xdffa,0xd852,0xdffb,0xd852,0xdffc,0xd852,0xdffd,0xd852,0xdffe, - 0xd852,0xdfff,0xd853,0xdc00,0xd853,0xdc01,0xd853,0xdc02,0xd853,0xdc03, - 0xd853,0xdc04,0xd853,0xdc05,0xd853,0xdc06,0xd853,0xdc07,0xd853,0xdc08, - 0xd853,0xdc09,0xd853,0xdc0a,0xd853,0xdc0b,0xd853,0xdc0c,0xd853,0xdc0d, - 0xd853,0xdc0e,0xd853,0xdc0f,0xd853,0xdc10,0xd853,0xdc11,0xd853,0xdc12, - 0xd853,0xdc13,0xd853,0xdc14,0xd853,0xdc15,0xd853,0xdc16,0xd853,0xdc17, - 0xd853,0xdc18,0xd853,0xdc19,0xd853,0xdc1a,0xd853,0xdc1b,0xd853,0xdc1c, - 0xd853,0xdc1d,0xd853,0xdc1e,0xd853,0xdc1f,0xd853,0xdc20,0xd853,0xdc21, - 0xd853,0xdc22,0xd853,0xdc23,0xd853,0xdc24,0xd853,0xdc25,0xd853,0xdc26, - 0xd853,0xdc27,0xd853,0xdc28,0xd853,0xdc29,0xd853,0xdc2a,0xd853,0xdc2b, - 0xd853,0xdc2c,0xd853,0xdc2d,0xd853,0xdc2e,0xd853,0xdc2f,0xd853,0xdc30, - 0xd853,0xdc31,0xd853,0xdc32,0xd853,0xdc33,0xd853,0xdc34,0xd853,0xdc35, - 0xd853,0xdc36,0xd853,0xdc37,0xd853,0xdc38,0xd853,0xdc39,0xd853,0xdc3a, - 0xd853,0xdc3b,0xd853,0xdc3c,0xd853,0xdc3d,0xd853,0xdc3e,0xd853,0xdc3f, - 0xd853,0xdc40,0xd853,0xdc41,0xd853,0xdc42,0xd853,0xdc43,0xd853,0xdc44, - 0xd853,0xdc45,0xd853,0xdc46,0xd853,0xdc47,0xd853,0xdc48,0xd853,0xdc49, - 0xd853,0xdc4a,0xd853,0xdc4b,0xd853,0xdc4c,0xd853,0xdc4d,0xd853,0xdc4e, - 0xd853,0xdc4f,0xd853,0xdc50,0xd853,0xdc51,0xd853,0xdc52,0xd853,0xdc53, - 0xd853,0xdc54,0xd853,0xdc55,0xd853,0xdc56,0xd853,0xdc57,0xd853,0xdc58, - 0xd853,0xdc59,0xd853,0xdc5a,0xd853,0xdc5b,0xd853,0xdc5c,0xd853,0xdc5d, - 0xd853,0xdc5e,0xd853,0xdc5f,0xd853,0xdc60,0xd853,0xdc61,0xd853,0xdc62, - 0xd853,0xdc63,0xd853,0xdc64,0xd853,0xdc65,0xd853,0xdc66,0xd853,0xdc67, - 0xd853,0xdc68,0xd853,0xdc69,0xd853,0xdc6a,0xd853,0xdc6b,0xd853,0xdc6c, - 0xd853,0xdc6d,0xd853,0xdc6e,0xd853,0xdc6f,0xd853,0xdc70,0xd853,0xdc71, - 0xd853,0xdc72,0xd853,0xdc73,0xd853,0xdc74,0xd853,0xdc75,0xd853,0xdc76, - 0xd853,0xdc77,0xd853,0xdc78,0xd853,0xdc79,0xd853,0xdc7a,0xd853,0xdc7b, - 0xd853,0xdc7c,0xd853,0xdc7d,0xd853,0xdc7e,0xd853,0xdc7f,0xd853,0xdc80, - 0xd853,0xdc81,0xd853,0xdc82,0xd853,0xdc83,0xd853,0xdc84,0xd853,0xdc85, - 0xd853,0xdc86,0xd853,0xdc87,0xd853,0xdc88,0xd853,0xdc89,0xd853,0xdc8a, - 0xd853,0xdc8b,0xd853,0xdc8c,0xd853,0xdc8d,0xd853,0xdc8e,0xd853,0xdc8f, - 0xd853,0xdc90,0xd853,0xdc91,0xd853,0xdc92,0xd853,0xdc93,0xd853,0xdc94, - 0xd853,0xdc95,0xd853,0xdc96,0xd853,0xdc97,0xd853,0xdc98,0xd853,0xdc99, - 0xd853,0xdc9a,0xd853,0xdc9b,0xd853,0xdc9c,0xd853,0xdc9d,0xd853,0xdc9e, - 0xd853,0xdc9f,0xd853,0xdca0,0xd853,0xdca1,0xd853,0xdca2,0xd853,0xdca3, - 0xd853,0xdca4,0xd853,0xdca5,0xd853,0xdca6,0xd853,0xdca7,0xd853,0xdca8, - 0xd853,0xdca9,0xd853,0xdcaa,0xd853,0xdcab,0xd853,0xdcac,0xd853,0xdcad, - 0xd853,0xdcae,0xd853,0xdcaf,0xd853,0xdcb0,0xd853,0xdcb1,0xd853,0xdcb2, - 0xd853,0xdcb3,0xd853,0xdcb4,0xd853,0xdcb5,0xd853,0xdcb6,0xd853,0xdcb7, - 0xd853,0xdcb8,0xd853,0xdcb9,0xd853,0xdcba,0xd853,0xdcbb,0xd853,0xdcbc, - 0xd853,0xdcbd,0xd853,0xdcbe,0xd853,0xdcbf,0xd853,0xdcc0,0xd853,0xdcc1, - 0xd853,0xdcc2,0xd853,0xdcc3,0xd853,0xdcc4,0xd853,0xdcc5,0xd853,0xdcc6, - 0xd853,0xdcc7,0xd853,0xdcc8,0xd853,0xdcc9,0xd853,0xdcca,0xd853,0xdccb, - 0xd853,0xdccc,0xd853,0xdccd,0xd853,0xdcce,0xd853,0xdccf,0xd853,0xdcd0, - 0xd853,0xdcd1,0xd853,0xdcd2,0xd853,0xdcd3,0xd853,0xdcd4,0xd853,0xdcd5, - 0xd853,0xdcd6,0xd853,0xdcd7,0xd853,0xdcd8,0xd853,0xdcd9,0xd853,0xdcda, - 0xd853,0xdcdb,0xd853,0xdcdc,0xd853,0xdcdd,0xd853,0xdcde,0xd853,0xdcdf, - 0xd853,0xdce0,0xd853,0xdce1,0xd853,0xdce2,0xd853,0xdce3,0xd853,0xdce4, - 0xd853,0xdce5,0xd853,0xdce6,0xd853,0xdce7,0xd853,0xdce8,0xd853,0xdce9, - 0xd853,0xdcea,0xd853,0xdceb,0xd853,0xdcec,0xd853,0xdced,0xd853,0xdcee, - 0xd853,0xdcef,0xd853,0xdcf0,0xd853,0xdcf1,0xd853,0xdcf2,0xd853,0xdcf3, - 0xd853,0xdcf4,0xd853,0xdcf5,0xd853,0xdcf6,0xd853,0xdcf7,0xd853,0xdcf8, - 0xd853,0xdcf9,0xd853,0xdcfa,0xd853,0xdcfb,0xd853,0xdcfc,0xd853,0xdcfd, - 0xd853,0xdcfe,0xd853,0xdcff,0xd853,0xdd00,0xd853,0xdd01,0xd853,0xdd02, - 0xd853,0xdd03,0xd853,0xdd04,0xd853,0xdd05,0xd853,0xdd06,0xd853,0xdd07, - 0xd853,0xdd08,0xd853,0xdd09,0xd853,0xdd0a,0xd853,0xdd0b,0xd853,0xdd0c, - 0xd853,0xdd0d,0xd853,0xdd0e,0xd853,0xdd0f,0xd853,0xdd10,0xd853,0xdd11, - 0xd853,0xdd12,0xd853,0xdd13,0xd853,0xdd14,0xd853,0xdd15,0xd853,0xdd16, - 0xd853,0xdd17,0xd853,0xdd18,0xd853,0xdd19,0xd853,0xdd1a,0xd853,0xdd1b, - 0xd853,0xdd1c,0xd853,0xdd1d,0xd853,0xdd1e,0xd853,0xdd1f,0xd853,0xdd20, - 0xd853,0xdd21,0xd853,0xdd22,0xd853,0xdd23,0xd853,0xdd24,0xd853,0xdd25, - 0xd853,0xdd26,0xd853,0xdd27,0xd853,0xdd28,0xd853,0xdd29,0xd853,0xdd2a, - 0xd853,0xdd2b,0xd853,0xdd2c,0xd853,0xdd2d,0xd853,0xdd2e,0xd853,0xdd2f, - 0xd853,0xdd30,0xd853,0xdd31,0xd853,0xdd32,0xd853,0xdd33,0xd853,0xdd34, - 0xd853,0xdd35,0xd853,0xdd36,0xd853,0xdd37,0xd853,0xdd38,0xd853,0xdd39, - 0xd853,0xdd3a,0xd853,0xdd3b,0xd853,0xdd3c,0xd853,0xdd3d,0xd853,0xdd3e, - 0xd853,0xdd3f,0xd853,0xdd40,0xd853,0xdd41,0xd853,0xdd42,0xd853,0xdd43, - 0xd853,0xdd44,0xd853,0xdd45,0xd853,0xdd46,0xd853,0xdd47,0xd853,0xdd48, - 0xd853,0xdd49,0xd853,0xdd4a,0xd853,0xdd4b,0xd853,0xdd4c,0xd853,0xdd4d, - 0xd853,0xdd4e,0xd853,0xdd4f,0xd853,0xdd50,0xd853,0xdd51,0xd853,0xdd52, - 0xd853,0xdd53,0xd853,0xdd54,0xd853,0xdd55,0xd853,0xdd56,0xd853,0xdd57, - 0xd853,0xdd58,0xd853,0xdd59,0xd853,0xdd5a,0xd853,0xdd5b,0xd853,0xdd5c, - 0xd853,0xdd5d,0xd853,0xdd5e,0xd853,0xdd5f,0xd853,0xdd60,0xd853,0xdd61, - 0xd853,0xdd62,0xd853,0xdd63,0xd853,0xdd64,0xd853,0xdd65,0xd853,0xdd66, - 0xd853,0xdd67,0xd853,0xdd68,0xd853,0xdd69,0xd853,0xdd6a,0xd853,0xdd6b, - 0xd853,0xdd6c,0xd853,0xdd6d,0xd853,0xdd6e,0xd853,0xdd6f,0xd853,0xdd70, - 0xd853,0xdd71,0xd853,0xdd72,0xd853,0xdd73,0xd853,0xdd74,0xd853,0xdd75, - 0xd853,0xdd76,0xd853,0xdd77,0xd853,0xdd78,0xd853,0xdd79,0xd853,0xdd7a, - 0xd853,0xdd7b,0xd853,0xdd7c,0xd853,0xdd7d,0xd853,0xdd7e,0xd853,0xdd7f, - 0xd853,0xdd80,0xd853,0xdd81,0xd853,0xdd82,0xd853,0xdd83,0xd853,0xdd84, - 0xd853,0xdd85,0xd853,0xdd86,0xd853,0xdd87,0xd853,0xdd88,0xd853,0xdd89, - 0xd853,0xdd8a,0xd853,0xdd8b,0xd853,0xdd8c,0xd853,0xdd8d,0xd853,0xdd8e, - 0xd853,0xdd8f,0xd853,0xdd90,0xd853,0xdd91,0xd853,0xdd92,0xd853,0xdd93, - 0xd853,0xdd94,0xd853,0xdd95,0xd853,0xdd96,0xd853,0xdd97,0xd853,0xdd98, - 0xd853,0xdd99,0xd853,0xdd9a,0xd853,0xdd9b,0xd853,0xdd9c,0xd853,0xdd9d, - 0xd853,0xdd9e,0xd853,0xdd9f,0xd853,0xdda0,0xd853,0xdda1,0xd853,0xdda2, - 0xd853,0xdda3,0xd853,0xdda4,0xd853,0xdda5,0xd853,0xdda6,0xd853,0xdda7, - 0xd853,0xdda8,0xd853,0xdda9,0xd853,0xddaa,0xd853,0xddab,0xd853,0xddac, - 0xd853,0xddad,0xd853,0xddae,0xd853,0xddaf,0xd853,0xddb0,0xd853,0xddb1, - 0xd853,0xddb2,0xd853,0xddb3,0xd853,0xddb4,0xd853,0xddb5,0xd853,0xddb6, - 0xd853,0xddb7,0xd853,0xddb8,0xd853,0xddb9,0xd853,0xddba,0xd853,0xddbb, - 0xd853,0xddbc,0xd853,0xddbd,0xd853,0xddbe,0xd853,0xddbf,0xd853,0xddc0, - 0xd853,0xddc1,0xd853,0xddc2,0xd853,0xddc3,0xd853,0xddc4,0xd853,0xddc5, - 0xd853,0xddc6,0xd853,0xddc7,0xd853,0xddc8,0xd853,0xddc9,0xd853,0xddca, - 0xd853,0xddcb,0xd853,0xddcc,0xd853,0xddcd,0xd853,0xddce,0xd853,0xddcf, - 0xd853,0xddd0,0xd853,0xddd1,0xd853,0xddd2,0xd853,0xddd3,0xd853,0xddd4, - 0xd853,0xddd5,0xd853,0xddd6,0xd853,0xddd7,0xd853,0xddd8,0xd853,0xddd9, - 0xd853,0xddda,0xd853,0xdddb,0xd853,0xdddc,0xd853,0xdddd,0xd853,0xddde, - 0xd853,0xdddf,0xd853,0xdde0,0xd853,0xdde1,0xd853,0xdde2,0xd853,0xdde3, - 0xd853,0xdde4,0xd853,0xdde5,0xd853,0xdde6,0xd853,0xdde7,0xd853,0xdde8, - 0xd853,0xdde9,0xd853,0xddea,0xd853,0xddeb,0xd853,0xddec,0xd853,0xdded, - 0xd853,0xddee,0xd853,0xddef,0xd853,0xddf0,0xd853,0xddf1,0xd853,0xddf2, - 0xd853,0xddf3,0xd853,0xddf4,0xd853,0xddf5,0xd853,0xddf6,0xd853,0xddf7, - 0xd853,0xddf8,0xd853,0xddf9,0xd853,0xddfa,0xd853,0xddfb,0xd853,0xddfc, - 0xd853,0xddfd,0xd853,0xddfe,0xd853,0xddff,0xd853,0xde00,0xd853,0xde01, - 0xd853,0xde02,0xd853,0xde03,0xd853,0xde04,0xd853,0xde05,0xd853,0xde06, - 0xd853,0xde07,0xd853,0xde08,0xd853,0xde09,0xd853,0xde0a,0xd853,0xde0b, - 0xd853,0xde0c,0xd853,0xde0d,0xd853,0xde0e,0xd853,0xde0f,0xd853,0xde10, - 0xd853,0xde11,0xd853,0xde12,0xd853,0xde13,0xd853,0xde14,0xd853,0xde15, - 0xd853,0xde16,0xd853,0xde17,0xd853,0xde18,0xd853,0xde19,0xd853,0xde1a, - 0xd853,0xde1b,0xd853,0xde1c,0xd853,0xde1d,0xd853,0xde1e,0xd853,0xde1f, - 0xd853,0xde20,0xd853,0xde21,0xd853,0xde22,0xd853,0xde23,0xd853,0xde24, - 0xd853,0xde25,0xd853,0xde26,0xd853,0xde27,0xd853,0xde28,0xd853,0xde29, - 0xd853,0xde2a,0xd853,0xde2b,0xd853,0xde2c,0xd853,0xde2d,0xd853,0xde2e, - 0xd853,0xde2f,0xd853,0xde30,0xd853,0xde31,0xd853,0xde32,0xd853,0xde33, - 0xd853,0xde34,0xd853,0xde35,0xd853,0xde36,0xd853,0xde37,0xd853,0xde38, - 0xd853,0xde39,0xd853,0xde3a,0xd853,0xde3b,0xd853,0xde3c,0xd853,0xde3d, - 0xd853,0xde3e,0xd853,0xde3f,0xd853,0xde40,0xd853,0xde41,0xd853,0xde42, - 0xd853,0xde43,0xd853,0xde44,0xd853,0xde45,0xd853,0xde46,0xd853,0xde47, - 0xd853,0xde48,0xd853,0xde49,0xd853,0xde4a,0xd853,0xde4b,0xd853,0xde4c, - 0xd853,0xde4d,0xd853,0xde4e,0xd853,0xde4f,0xd853,0xde50,0xd853,0xde51, - 0xd853,0xde52,0xd853,0xde53,0xd853,0xde54,0xd853,0xde55,0xd853,0xde56, - 0xd853,0xde57,0xd853,0xde58,0xd853,0xde59,0xd853,0xde5a,0xd853,0xde5b, - 0xd853,0xde5c,0xd853,0xde5d,0xd853,0xde5e,0xd853,0xde5f,0xd853,0xde60, - 0xd853,0xde61,0xd853,0xde62,0xd853,0xde63,0xd853,0xde64,0xd853,0xde65, - 0xd853,0xde66,0xd853,0xde67,0xd853,0xde68,0xd853,0xde69,0xd853,0xde6a, - 0xd853,0xde6b,0xd853,0xde6c,0xd853,0xde6d,0xd853,0xde6e,0xd853,0xde6f, - 0xd853,0xde70,0xd853,0xde71,0xd853,0xde72,0xd853,0xde73,0xd853,0xde74, - 0xd853,0xde75,0xd853,0xde76,0xd853,0xde77,0xd853,0xde78,0xd853,0xde79, - 0xd853,0xde7a,0xd853,0xde7b,0xd853,0xde7c,0xd853,0xde7d,0xd853,0xde7e, - 0xd853,0xde7f,0xd853,0xde80,0xd853,0xde81,0xd853,0xde82,0xd853,0xde83, - 0xd853,0xde84,0xd853,0xde85,0xd853,0xde86,0xd853,0xde87,0xd853,0xde88, - 0xd853,0xde89,0xd853,0xde8a,0xd853,0xde8b,0xd853,0xde8c,0xd853,0xde8d, - 0xd853,0xde8e,0xd853,0xde8f,0xd853,0xde90,0xd853,0xde91,0xd853,0xde92, - 0xd853,0xde93,0xd853,0xde94,0xd853,0xde95,0xd853,0xde96,0xd853,0xde97, - 0xd853,0xde98,0xd853,0xde99,0xd853,0xde9a,0xd853,0xde9b,0xd853,0xde9c, - 0xd853,0xde9d,0xd853,0xde9e,0xd853,0xde9f,0xd853,0xdea0,0xd853,0xdea1, - 0xd853,0xdea2,0xd853,0xdea3,0xd853,0xdea4,0xd853,0xdea5,0xd853,0xdea6, - 0xd853,0xdea7,0xd853,0xdea8,0xd853,0xdea9,0xd853,0xdeaa,0xd853,0xdeab, - 0xd853,0xdeac,0xd853,0xdead,0xd853,0xdeae,0xd853,0xdeaf,0xd853,0xdeb0, - 0xd853,0xdeb1,0xd853,0xdeb2,0xd853,0xdeb3,0xd853,0xdeb4,0xd853,0xdeb5, - 0xd853,0xdeb6,0xd853,0xdeb7,0xd853,0xdeb8,0xd853,0xdeb9,0xd853,0xdeba, - 0xd853,0xdebb,0xd853,0xdebc,0xd853,0xdebd,0xd853,0xdebe,0xd853,0xdebf, - 0xd853,0xdec0,0xd853,0xdec1,0xd853,0xdec2,0xd853,0xdec3,0xd853,0xdec4, - 0xd853,0xdec5,0xd853,0xdec6,0xd853,0xdec7,0xd853,0xdec8,0xd853,0xdec9, - 0xd853,0xdeca,0xd853,0xdecb,0xd853,0xdecc,0xd853,0xdecd,0xd853,0xdece, - 0xd853,0xdecf,0xd853,0xded0,0xd853,0xded1,0xd853,0xded2,0xd853,0xded3, - 0xd853,0xded4,0xd853,0xded5,0xd853,0xded6,0xd853,0xded7,0xd853,0xded8, - 0xd853,0xded9,0xd853,0xdeda,0xd853,0xdedb,0xd853,0xdedc,0xd853,0xdedd, - 0xd853,0xdede,0xd853,0xdedf,0xd853,0xdee0,0xd853,0xdee1,0xd853,0xdee2, - 0xd853,0xdee3,0xd853,0xdee4,0xd853,0xdee5,0xd853,0xdee6,0xd853,0xdee7, - 0xd853,0xdee8,0xd853,0xdee9,0xd853,0xdeea,0xd853,0xdeeb,0xd853,0xdeec, - 0xd853,0xdeed,0xd853,0xdeee,0xd853,0xdeef,0xd853,0xdef0,0xd853,0xdef1, - 0xd853,0xdef2,0xd853,0xdef3,0xd853,0xdef4,0xd853,0xdef5,0xd853,0xdef6, - 0xd853,0xdef7,0xd853,0xdef8,0xd853,0xdef9,0xd853,0xdefa,0xd853,0xdefb, - 0xd853,0xdefc,0xd853,0xdefd,0xd853,0xdefe,0xd853,0xdeff,0xd853,0xdf00, - 0xd853,0xdf01,0xd853,0xdf02,0xd853,0xdf03,0xd853,0xdf04,0xd853,0xdf05, - 0xd853,0xdf06,0xd853,0xdf07,0xd853,0xdf08,0xd853,0xdf09,0xd853,0xdf0a, - 0xd853,0xdf0b,0xd853,0xdf0c,0xd853,0xdf0d,0xd853,0xdf0e,0xd853,0xdf0f, - 0xd853,0xdf10,0xd853,0xdf11,0xd853,0xdf12,0xd853,0xdf13,0xd853,0xdf14, - 0xd853,0xdf15,0xd853,0xdf16,0xd853,0xdf17,0xd853,0xdf18,0xd853,0xdf19, - 0xd853,0xdf1a,0xd853,0xdf1b,0xd853,0xdf1c,0xd853,0xdf1d,0xd853,0xdf1e, - 0xd853,0xdf1f,0xd853,0xdf20,0xd853,0xdf21,0xd853,0xdf22,0xd853,0xdf23, - 0xd853,0xdf24,0xd853,0xdf25,0xd853,0xdf26,0xd853,0xdf27,0xd853,0xdf28, - 0xd853,0xdf29,0xd853,0xdf2a,0xd853,0xdf2b,0xd853,0xdf2c,0xd853,0xdf2d, - 0xd853,0xdf2e,0xd853,0xdf2f,0xd853,0xdf30,0xd853,0xdf31,0xd853,0xdf32, - 0xd853,0xdf33,0xd853,0xdf34,0xd853,0xdf35,0xd853,0xdf36,0xd853,0xdf37, - 0xd853,0xdf38,0xd853,0xdf39,0xd853,0xdf3a,0xd853,0xdf3b,0xd853,0xdf3c, - 0xd853,0xdf3d,0xd853,0xdf3e,0xd853,0xdf3f,0xd853,0xdf40,0xd853,0xdf41, - 0xd853,0xdf42,0xd853,0xdf43,0xd853,0xdf44,0xd853,0xdf45,0xd853,0xdf46, - 0xd853,0xdf47,0xd853,0xdf48,0xd853,0xdf49,0xd853,0xdf4a,0xd853,0xdf4b, - 0xd853,0xdf4c,0xd853,0xdf4d,0xd853,0xdf4e,0xd853,0xdf4f,0xd853,0xdf50, - 0xd853,0xdf51,0xd853,0xdf52,0xd853,0xdf53,0xd853,0xdf54,0xd853,0xdf55, - 0xd853,0xdf56,0xd853,0xdf57,0xd853,0xdf58,0xd853,0xdf59,0xd853,0xdf5a, - 0xd853,0xdf5b,0xd853,0xdf5c,0xd853,0xdf5d,0xd853,0xdf5e,0xd853,0xdf5f, - 0xd853,0xdf60,0xd853,0xdf61,0xd853,0xdf62,0xd853,0xdf63,0xd853,0xdf64, - 0xd853,0xdf65,0xd853,0xdf66,0xd853,0xdf67,0xd853,0xdf68,0xd853,0xdf69, - 0xd853,0xdf6a,0xd853,0xdf6b,0xd853,0xdf6c,0xd853,0xdf6d,0xd853,0xdf6e, - 0xd853,0xdf6f,0xd853,0xdf70,0xd853,0xdf71,0xd853,0xdf72,0xd853,0xdf73, - 0xd853,0xdf74,0xd853,0xdf75,0xd853,0xdf76,0xd853,0xdf77,0xd853,0xdf78, - 0xd853,0xdf79,0xd853,0xdf7a,0xd853,0xdf7b,0xd853,0xdf7c,0xd853,0xdf7d, - 0xd853,0xdf7e,0xd853,0xdf7f,0xd853,0xdf80,0xd853,0xdf81,0xd853,0xdf82, - 0xd853,0xdf83,0xd853,0xdf84,0xd853,0xdf85,0xd853,0xdf86,0xd853,0xdf87, - 0xd853,0xdf88,0xd853,0xdf89,0xd853,0xdf8a,0xd853,0xdf8b,0xd853,0xdf8c, - 0xd853,0xdf8d,0xd853,0xdf8e,0xd853,0xdf8f,0xd853,0xdf90,0xd853,0xdf91, - 0xd853,0xdf92,0xd853,0xdf93,0xd853,0xdf94,0xd853,0xdf95,0xd853,0xdf96, - 0xd853,0xdf97,0xd853,0xdf98,0xd853,0xdf99,0xd853,0xdf9a,0xd853,0xdf9b, - 0xd853,0xdf9c,0xd853,0xdf9d,0xd853,0xdf9e,0xd853,0xdf9f,0xd853,0xdfa0, - 0xd853,0xdfa1,0xd853,0xdfa2,0xd853,0xdfa3,0xd853,0xdfa4,0xd853,0xdfa5, - 0xd853,0xdfa6,0xd853,0xdfa7,0xd853,0xdfa8,0xd853,0xdfa9,0xd853,0xdfaa, - 0xd853,0xdfab,0xd853,0xdfac,0xd853,0xdfad,0xd853,0xdfae,0xd853,0xdfaf, - 0xd853,0xdfb0,0xd853,0xdfb1,0xd853,0xdfb2,0xd853,0xdfb3,0xd853,0xdfb4, - 0xd853,0xdfb5,0xd853,0xdfb6,0xd853,0xdfb7,0xd853,0xdfb8,0xd853,0xdfb9, - 0xd853,0xdfba,0xd853,0xdfbb,0xd853,0xdfbc,0xd853,0xdfbd,0xd853,0xdfbe, - 0xd853,0xdfbf,0xd853,0xdfc0,0xd853,0xdfc1,0xd853,0xdfc2,0xd853,0xdfc3, - 0xd853,0xdfc4,0xd853,0xdfc5,0xd853,0xdfc6,0xd853,0xdfc7,0xd853,0xdfc8, - 0xd853,0xdfc9,0xd853,0xdfca,0xd853,0xdfcb,0xd853,0xdfcc,0xd853,0xdfcd, - 0xd853,0xdfce,0xd853,0xdfcf,0xd853,0xdfd0,0xd853,0xdfd1,0xd853,0xdfd2, - 0xd853,0xdfd3,0xd853,0xdfd4,0xd853,0xdfd5,0xd853,0xdfd6,0xd853,0xdfd7, - 0xd853,0xdfd8,0xd853,0xdfd9,0xd853,0xdfda,0xd853,0xdfdb,0xd853,0xdfdc, - 0xd853,0xdfdd,0xd853,0xdfde,0xd853,0xdfdf,0xd853,0xdfe0,0xd853,0xdfe1, - 0xd853,0xdfe2,0xd853,0xdfe3,0xd853,0xdfe4,0xd853,0xdfe5,0xd853,0xdfe6, - 0xd853,0xdfe7,0xd853,0xdfe8,0xd853,0xdfe9,0xd853,0xdfea,0xd853,0xdfeb, - 0xd853,0xdfec,0xd853,0xdfed,0xd853,0xdfee,0xd853,0xdfef,0xd853,0xdff0, - 0xd853,0xdff1,0xd853,0xdff2,0xd853,0xdff3,0xd853,0xdff4,0xd853,0xdff5, - 0xd853,0xdff6,0xd853,0xdff7,0xd853,0xdff8,0xd853,0xdff9,0xd853,0xdffa, - 0xd853,0xdffb,0xd853,0xdffc,0xd853,0xdffd,0xd853,0xdffe,0xd853,0xdfff, - 0xd854,0xdc00,0xd854,0xdc01,0xd854,0xdc02,0xd854,0xdc03,0xd854,0xdc04, - 0xd854,0xdc05,0xd854,0xdc06,0xd854,0xdc07,0xd854,0xdc08,0xd854,0xdc09, - 0xd854,0xdc0a,0xd854,0xdc0b,0xd854,0xdc0c,0xd854,0xdc0d,0xd854,0xdc0e, - 0xd854,0xdc0f,0xd854,0xdc10,0xd854,0xdc11,0xd854,0xdc12,0xd854,0xdc13, - 0xd854,0xdc14,0xd854,0xdc15,0xd854,0xdc16,0xd854,0xdc17,0xd854,0xdc18, - 0xd854,0xdc19,0xd854,0xdc1a,0xd854,0xdc1b,0xd854,0xdc1c,0xd854,0xdc1d, - 0xd854,0xdc1e,0xd854,0xdc1f,0xd854,0xdc20,0xd854,0xdc21,0xd854,0xdc22, - 0xd854,0xdc23,0xd854,0xdc24,0xd854,0xdc25,0xd854,0xdc26,0xd854,0xdc27, - 0xd854,0xdc28,0xd854,0xdc29,0xd854,0xdc2a,0xd854,0xdc2b,0xd854,0xdc2c, - 0xd854,0xdc2d,0xd854,0xdc2e,0xd854,0xdc2f,0xd854,0xdc30,0xd854,0xdc31, - 0xd854,0xdc32,0xd854,0xdc33,0xd854,0xdc34,0xd854,0xdc35,0xd854,0xdc36, - 0xd854,0xdc37,0xd854,0xdc38,0xd854,0xdc39,0xd854,0xdc3a,0xd854,0xdc3b, - 0xd854,0xdc3c,0xd854,0xdc3d,0xd854,0xdc3e,0xd854,0xdc3f,0xd854,0xdc40, - 0xd854,0xdc41,0xd854,0xdc42,0xd854,0xdc43,0xd854,0xdc44,0xd854,0xdc45, - 0xd854,0xdc46,0xd854,0xdc47,0xd854,0xdc48,0xd854,0xdc49,0xd854,0xdc4a, - 0xd854,0xdc4b,0xd854,0xdc4c,0xd854,0xdc4d,0xd854,0xdc4e,0xd854,0xdc4f, - 0xd854,0xdc50,0xd854,0xdc51,0xd854,0xdc52,0xd854,0xdc53,0xd854,0xdc54, - 0xd854,0xdc55,0xd854,0xdc56,0xd854,0xdc57,0xd854,0xdc58,0xd854,0xdc59, - 0xd854,0xdc5a,0xd854,0xdc5b,0xd854,0xdc5c,0xd854,0xdc5d,0xd854,0xdc5e, - 0xd854,0xdc5f,0xd854,0xdc60,0xd854,0xdc61,0xd854,0xdc62,0xd854,0xdc63, - 0xd854,0xdc64,0xd854,0xdc65,0xd854,0xdc66,0xd854,0xdc67,0xd854,0xdc68, - 0xd854,0xdc69,0xd854,0xdc6a,0xd854,0xdc6b,0xd854,0xdc6c,0xd854,0xdc6d, - 0xd854,0xdc6e,0xd854,0xdc6f,0xd854,0xdc70,0xd854,0xdc71,0xd854,0xdc72, - 0xd854,0xdc73,0xd854,0xdc74,0xd854,0xdc75,0xd854,0xdc76,0xd854,0xdc77, - 0xd854,0xdc78,0xd854,0xdc79,0xd854,0xdc7a,0xd854,0xdc7b,0xd854,0xdc7c, - 0xd854,0xdc7d,0xd854,0xdc7e,0xd854,0xdc7f,0xd854,0xdc80,0xd854,0xdc81, - 0xd854,0xdc82,0xd854,0xdc83,0xd854,0xdc84,0xd854,0xdc85,0xd854,0xdc86, - 0xd854,0xdc87,0xd854,0xdc88,0xd854,0xdc89,0xd854,0xdc8a,0xd854,0xdc8b, - 0xd854,0xdc8c,0xd854,0xdc8d,0xd854,0xdc8e,0xd854,0xdc8f,0xd854,0xdc90, - 0xd854,0xdc91,0xd854,0xdc92,0xd854,0xdc93,0xd854,0xdc94,0xd854,0xdc95, - 0xd854,0xdc96,0xd854,0xdc97,0xd854,0xdc98,0xd854,0xdc99,0xd854,0xdc9a, - 0xd854,0xdc9b,0xd854,0xdc9c,0xd854,0xdc9d,0xd854,0xdc9e,0xd854,0xdc9f, - 0xd854,0xdca0,0xd854,0xdca1,0xd854,0xdca2,0xd854,0xdca3,0xd854,0xdca4, - 0xd854,0xdca5,0xd854,0xdca6,0xd854,0xdca7,0xd854,0xdca8,0xd854,0xdca9, - 0xd854,0xdcaa,0xd854,0xdcab,0xd854,0xdcac,0xd854,0xdcad,0xd854,0xdcae, - 0xd854,0xdcaf,0xd854,0xdcb0,0xd854,0xdcb1,0xd854,0xdcb2,0xd854,0xdcb3, - 0xd854,0xdcb4,0xd854,0xdcb5,0xd854,0xdcb6,0xd854,0xdcb7,0xd854,0xdcb8, - 0xd854,0xdcb9,0xd854,0xdcba,0xd854,0xdcbb,0xd854,0xdcbc,0xd854,0xdcbd, - 0xd854,0xdcbe,0xd854,0xdcbf,0xd854,0xdcc0,0xd854,0xdcc1,0xd854,0xdcc2, - 0xd854,0xdcc3,0xd854,0xdcc4,0xd854,0xdcc5,0xd854,0xdcc6,0xd854,0xdcc7, - 0xd854,0xdcc8,0xd854,0xdcc9,0xd854,0xdcca,0xd854,0xdccb,0xd854,0xdccc, - 0xd854,0xdccd,0xd854,0xdcce,0xd854,0xdccf,0xd854,0xdcd0,0xd854,0xdcd1, - 0xd854,0xdcd2,0xd854,0xdcd3,0xd854,0xdcd4,0xd854,0xdcd5,0xd854,0xdcd6, - 0xd854,0xdcd7,0xd854,0xdcd8,0xd854,0xdcd9,0xd854,0xdcda,0xd854,0xdcdb, - 0xd854,0xdcdc,0xd854,0xdcdd,0xd854,0xdcde,0xd854,0xdcdf,0xd854,0xdce0, - 0xd854,0xdce1,0xd854,0xdce2,0xd854,0xdce3,0xd854,0xdce4,0xd854,0xdce5, - 0xd854,0xdce6,0xd854,0xdce7,0xd854,0xdce8,0xd854,0xdce9,0xd854,0xdcea, - 0xd854,0xdceb,0xd854,0xdcec,0xd854,0xdced,0xd854,0xdcee,0xd854,0xdcef, - 0xd854,0xdcf0,0xd854,0xdcf1,0xd854,0xdcf2,0xd854,0xdcf3,0xd854,0xdcf4, - 0xd854,0xdcf5,0xd854,0xdcf6,0xd854,0xdcf7,0xd854,0xdcf8,0xd854,0xdcf9, - 0xd854,0xdcfa,0xd854,0xdcfb,0xd854,0xdcfc,0xd854,0xdcfd,0xd854,0xdcfe, - 0xd854,0xdcff,0xd854,0xdd00,0xd854,0xdd01,0xd854,0xdd02,0xd854,0xdd03, - 0xd854,0xdd04,0xd854,0xdd05,0xd854,0xdd06,0xd854,0xdd07,0xd854,0xdd08, - 0xd854,0xdd09,0xd854,0xdd0a,0xd854,0xdd0b,0xd854,0xdd0c,0xd854,0xdd0d, - 0xd854,0xdd0e,0xd854,0xdd0f,0xd854,0xdd10,0xd854,0xdd11,0xd854,0xdd12, - 0xd854,0xdd13,0xd854,0xdd14,0xd854,0xdd15,0xd854,0xdd16,0xd854,0xdd17, - 0xd854,0xdd18,0xd854,0xdd19,0xd854,0xdd1a,0xd854,0xdd1b,0xd854,0xdd1c, - 0xd854,0xdd1d,0xd854,0xdd1e,0xd854,0xdd1f,0xd854,0xdd20,0xd854,0xdd21, - 0xd854,0xdd22,0xd854,0xdd23,0xd854,0xdd24,0xd854,0xdd25,0xd854,0xdd26, - 0xd854,0xdd27,0xd854,0xdd28,0xd854,0xdd29,0xd854,0xdd2a,0xd854,0xdd2b, - 0xd854,0xdd2c,0xd854,0xdd2d,0xd854,0xdd2e,0xd854,0xdd2f,0xd854,0xdd30, - 0xd854,0xdd31,0xd854,0xdd32,0xd854,0xdd33,0xd854,0xdd34,0xd854,0xdd35, - 0xd854,0xdd36,0xd854,0xdd37,0xd854,0xdd38,0xd854,0xdd39,0xd854,0xdd3a, - 0xd854,0xdd3b,0xd854,0xdd3c,0xd854,0xdd3d,0xd854,0xdd3e,0xd854,0xdd3f, - 0xd854,0xdd40,0xd854,0xdd41,0xd854,0xdd42,0xd854,0xdd43,0xd854,0xdd44, - 0xd854,0xdd45,0xd854,0xdd46,0xd854,0xdd47,0xd854,0xdd48,0xd854,0xdd49, - 0xd854,0xdd4a,0xd854,0xdd4b,0xd854,0xdd4c,0xd854,0xdd4d,0xd854,0xdd4e, - 0xd854,0xdd4f,0xd854,0xdd50,0xd854,0xdd51,0xd854,0xdd52,0xd854,0xdd53, - 0xd854,0xdd54,0xd854,0xdd55,0xd854,0xdd56,0xd854,0xdd57,0xd854,0xdd58, - 0xd854,0xdd59,0xd854,0xdd5a,0xd854,0xdd5b,0xd854,0xdd5c,0xd854,0xdd5d, - 0xd854,0xdd5e,0xd854,0xdd5f,0xd854,0xdd60,0xd854,0xdd61,0xd854,0xdd62, - 0xd854,0xdd63,0xd854,0xdd64,0xd854,0xdd65,0xd854,0xdd66,0xd854,0xdd67, - 0xd854,0xdd68,0xd854,0xdd69,0xd854,0xdd6a,0xd854,0xdd6b,0xd854,0xdd6c, - 0xd854,0xdd6d,0xd854,0xdd6e,0xd854,0xdd6f,0xd854,0xdd70,0xd854,0xdd71, - 0xd854,0xdd72,0xd854,0xdd73,0xd854,0xdd74,0xd854,0xdd75,0xd854,0xdd76, - 0xd854,0xdd77,0xd854,0xdd78,0xd854,0xdd79,0xd854,0xdd7a,0xd854,0xdd7b, - 0xd854,0xdd7c,0xd854,0xdd7d,0xd854,0xdd7e,0xd854,0xdd7f,0xd854,0xdd80, - 0xd854,0xdd81,0xd854,0xdd82,0xd854,0xdd83,0xd854,0xdd84,0xd854,0xdd85, - 0xd854,0xdd86,0xd854,0xdd87,0xd854,0xdd88,0xd854,0xdd89,0xd854,0xdd8a, - 0xd854,0xdd8b,0xd854,0xdd8c,0xd854,0xdd8d,0xd854,0xdd8e,0xd854,0xdd8f, - 0xd854,0xdd90,0xd854,0xdd91,0xd854,0xdd92,0xd854,0xdd93,0xd854,0xdd94, - 0xd854,0xdd95,0xd854,0xdd96,0xd854,0xdd97,0xd854,0xdd98,0xd854,0xdd99, - 0xd854,0xdd9a,0xd854,0xdd9b,0xd854,0xdd9c,0xd854,0xdd9d,0xd854,0xdd9e, - 0xd854,0xdd9f,0xd854,0xdda0,0xd854,0xdda1,0xd854,0xdda2,0xd854,0xdda3, - 0xd854,0xdda4,0xd854,0xdda5,0xd854,0xdda6,0xd854,0xdda7,0xd854,0xdda8, - 0xd854,0xdda9,0xd854,0xddaa,0xd854,0xddab,0xd854,0xddac,0xd854,0xddad, - 0xd854,0xddae,0xd854,0xddaf,0xd854,0xddb0,0xd854,0xddb1,0xd854,0xddb2, - 0xd854,0xddb3,0xd854,0xddb4,0xd854,0xddb5,0xd854,0xddb6,0xd854,0xddb7, - 0xd854,0xddb8,0xd854,0xddb9,0xd854,0xddba,0xd854,0xddbb,0xd854,0xddbc, - 0xd854,0xddbd,0xd854,0xddbe,0xd854,0xddbf,0xd854,0xddc0,0xd854,0xddc1, - 0xd854,0xddc2,0xd854,0xddc3,0xd854,0xddc4,0xd854,0xddc5,0xd854,0xddc6, - 0xd854,0xddc7,0xd854,0xddc8,0xd854,0xddc9,0xd854,0xddca,0xd854,0xddcb, - 0xd854,0xddcc,0xd854,0xddcd,0xd854,0xddce,0xd854,0xddcf,0xd854,0xddd0, - 0xd854,0xddd1,0xd854,0xddd2,0xd854,0xddd3,0xd854,0xddd4,0xd854,0xddd5, - 0xd854,0xddd6,0xd854,0xddd7,0xd854,0xddd8,0xd854,0xddd9,0xd854,0xddda, - 0xd854,0xdddb,0xd854,0xdddc,0xd854,0xdddd,0xd854,0xddde,0xd854,0xdddf, - 0xd854,0xdde0,0xd854,0xdde1,0xd854,0xdde2,0xd854,0xdde3,0xd854,0xdde4, - 0xd854,0xdde5,0xd854,0xdde6,0xd854,0xdde7,0xd854,0xdde8,0xd854,0xdde9, - 0xd854,0xddea,0xd854,0xddeb,0xd854,0xddec,0xd854,0xdded,0xd854,0xddee, - 0xd854,0xddef,0xd854,0xddf0,0xd854,0xddf1,0xd854,0xddf2,0xd854,0xddf3, - 0xd854,0xddf4,0xd854,0xddf5,0xd854,0xddf6,0xd854,0xddf7,0xd854,0xddf8, - 0xd854,0xddf9,0xd854,0xddfa,0xd854,0xddfb,0xd854,0xddfc,0xd854,0xddfd, - 0xd854,0xddfe,0xd854,0xddff,0xd854,0xde00,0xd854,0xde01,0xd854,0xde02, - 0xd854,0xde03,0xd854,0xde04,0xd854,0xde05,0xd854,0xde06,0xd854,0xde07, - 0xd854,0xde08,0xd854,0xde09,0xd854,0xde0a,0xd854,0xde0b,0xd854,0xde0c, - 0xd854,0xde0d,0xd854,0xde0e,0xd854,0xde0f,0xd854,0xde10,0xd854,0xde11, - 0xd854,0xde12,0xd854,0xde13,0xd854,0xde14,0xd854,0xde15,0xd854,0xde16, - 0xd854,0xde17,0xd854,0xde18,0xd854,0xde19,0xd854,0xde1a,0xd854,0xde1b, - 0xd854,0xde1c,0xd854,0xde1d,0xd854,0xde1e,0xd854,0xde1f,0xd854,0xde20, - 0xd854,0xde21,0xd854,0xde22,0xd854,0xde23,0xd854,0xde24,0xd854,0xde25, - 0xd854,0xde26,0xd854,0xde27,0xd854,0xde28,0xd854,0xde29,0xd854,0xde2a, - 0xd854,0xde2b,0xd854,0xde2c,0xd854,0xde2d,0xd854,0xde2e,0xd854,0xde2f, - 0xd854,0xde30,0xd854,0xde31,0xd854,0xde32,0xd854,0xde33,0xd854,0xde34, - 0xd854,0xde35,0xd854,0xde36,0xd854,0xde37,0xd854,0xde38,0xd854,0xde39, - 0xd854,0xde3a,0xd854,0xde3b,0xd854,0xde3c,0xd854,0xde3d,0xd854,0xde3e, - 0xd854,0xde3f,0xd854,0xde40,0xd854,0xde41,0xd854,0xde42,0xd854,0xde43, - 0xd854,0xde44,0xd854,0xde45,0xd854,0xde46,0xd854,0xde47,0xd854,0xde48, - 0xd854,0xde49,0xd854,0xde4a,0xd854,0xde4b,0xd854,0xde4c,0xd854,0xde4d, - 0xd854,0xde4e,0xd854,0xde4f,0xd854,0xde50,0xd854,0xde51,0xd854,0xde52, - 0xd854,0xde53,0xd854,0xde54,0xd854,0xde55,0xd854,0xde56,0xd854,0xde57, - 0xd854,0xde58,0xd854,0xde59,0xd854,0xde5a,0xd854,0xde5b,0xd854,0xde5c, - 0xd854,0xde5d,0xd854,0xde5e,0xd854,0xde5f,0xd854,0xde60,0xd854,0xde61, - 0xd854,0xde62,0xd854,0xde63,0xd854,0xde64,0xd854,0xde65,0xd854,0xde66, - 0xd854,0xde67,0xd854,0xde68,0xd854,0xde69,0xd854,0xde6a,0xd854,0xde6b, - 0xd854,0xde6c,0xd854,0xde6d,0xd854,0xde6e,0xd854,0xde6f,0xd854,0xde70, - 0xd854,0xde71,0xd854,0xde72,0xd854,0xde73,0xd854,0xde74,0xd854,0xde75, - 0xd854,0xde76,0xd854,0xde77,0xd854,0xde78,0xd854,0xde79,0xd854,0xde7a, - 0xd854,0xde7b,0xd854,0xde7c,0xd854,0xde7d,0xd854,0xde7e,0xd854,0xde7f, - 0xd854,0xde80,0xd854,0xde81,0xd854,0xde82,0xd854,0xde83,0xd854,0xde84, - 0xd854,0xde85,0xd854,0xde86,0xd854,0xde87,0xd854,0xde88,0xd854,0xde89, - 0xd854,0xde8a,0xd854,0xde8b,0xd854,0xde8c,0xd854,0xde8d,0xd854,0xde8e, - 0xd854,0xde8f,0xd854,0xde90,0xd854,0xde91,0xd854,0xde92,0xd854,0xde93, - 0xd854,0xde94,0xd854,0xde95,0xd854,0xde96,0xd854,0xde97,0xd854,0xde98, - 0xd854,0xde99,0xd854,0xde9a,0xd854,0xde9b,0xd854,0xde9c,0xd854,0xde9d, - 0xd854,0xde9e,0xd854,0xde9f,0xd854,0xdea0,0xd854,0xdea1,0xd854,0xdea2, - 0xd854,0xdea3,0xd854,0xdea4,0xd854,0xdea5,0xd854,0xdea6,0xd854,0xdea7, - 0xd854,0xdea8,0xd854,0xdea9,0xd854,0xdeaa,0xd854,0xdeab,0xd854,0xdeac, - 0xd854,0xdead,0xd854,0xdeae,0xd854,0xdeaf,0xd854,0xdeb0,0xd854,0xdeb1, - 0xd854,0xdeb2,0xd854,0xdeb3,0xd854,0xdeb4,0xd854,0xdeb5,0xd854,0xdeb6, - 0xd854,0xdeb7,0xd854,0xdeb8,0xd854,0xdeb9,0xd854,0xdeba,0xd854,0xdebb, - 0xd854,0xdebc,0xd854,0xdebd,0xd854,0xdebe,0xd854,0xdebf,0xd854,0xdec0, - 0xd854,0xdec1,0xd854,0xdec2,0xd854,0xdec3,0xd854,0xdec4,0xd854,0xdec5, - 0xd854,0xdec6,0xd854,0xdec7,0xd854,0xdec8,0xd854,0xdec9,0xd854,0xdeca, - 0xd854,0xdecb,0xd854,0xdecc,0xd854,0xdecd,0xd854,0xdece,0xd854,0xdecf, - 0xd854,0xded0,0xd854,0xded1,0xd854,0xded2,0xd854,0xded3,0xd854,0xded4, - 0xd854,0xded5,0xd854,0xded6,0xd854,0xded7,0xd854,0xded8,0xd854,0xded9, - 0xd854,0xdeda,0xd854,0xdedb,0xd854,0xdedc,0xd854,0xdedd,0xd854,0xdede, - 0xd854,0xdedf,0xd854,0xdee0,0xd854,0xdee1,0xd854,0xdee2,0xd854,0xdee3, - 0xd854,0xdee4,0xd854,0xdee5,0xd854,0xdee6,0xd854,0xdee7,0xd854,0xdee8, - 0xd854,0xdee9,0xd854,0xdeea,0xd854,0xdeeb,0xd854,0xdeec,0xd854,0xdeed, - 0xd854,0xdeee,0xd854,0xdeef,0xd854,0xdef0,0xd854,0xdef1,0xd854,0xdef2, - 0xd854,0xdef3,0xd854,0xdef4,0xd854,0xdef5,0xd854,0xdef6,0xd854,0xdef7, - 0xd854,0xdef8,0xd854,0xdef9,0xd854,0xdefa,0xd854,0xdefb,0xd854,0xdefc, - 0xd854,0xdefd,0xd854,0xdefe,0xd854,0xdeff,0xd854,0xdf00,0xd854,0xdf01, - 0xd854,0xdf02,0xd854,0xdf03,0xd854,0xdf04,0xd854,0xdf05,0xd854,0xdf06, - 0xd854,0xdf07,0xd854,0xdf08,0xd854,0xdf09,0xd854,0xdf0a,0xd854,0xdf0b, - 0xd854,0xdf0c,0xd854,0xdf0d,0xd854,0xdf0e,0xd854,0xdf0f,0xd854,0xdf10, - 0xd854,0xdf11,0xd854,0xdf12,0xd854,0xdf13,0xd854,0xdf14,0xd854,0xdf15, - 0xd854,0xdf16,0xd854,0xdf17,0xd854,0xdf18,0xd854,0xdf19,0xd854,0xdf1a, - 0xd854,0xdf1b,0xd854,0xdf1c,0xd854,0xdf1d,0xd854,0xdf1e,0xd854,0xdf1f, - 0xd854,0xdf20,0xd854,0xdf21,0xd854,0xdf22,0xd854,0xdf23,0xd854,0xdf24, - 0xd854,0xdf25,0xd854,0xdf26,0xd854,0xdf27,0xd854,0xdf28,0xd854,0xdf29, - 0xd854,0xdf2a,0xd854,0xdf2b,0xd854,0xdf2c,0xd854,0xdf2d,0xd854,0xdf2e, - 0xd854,0xdf2f,0xd854,0xdf30,0xd854,0xdf31,0xd854,0xdf32,0xd854,0xdf33, - 0xd854,0xdf34,0xd854,0xdf35,0xd854,0xdf36,0xd854,0xdf37,0xd854,0xdf38, - 0xd854,0xdf39,0xd854,0xdf3a,0xd854,0xdf3b,0xd854,0xdf3c,0xd854,0xdf3d, - 0xd854,0xdf3e,0xd854,0xdf3f,0xd854,0xdf40,0xd854,0xdf41,0xd854,0xdf42, - 0xd854,0xdf43,0xd854,0xdf44,0xd854,0xdf45,0xd854,0xdf46,0xd854,0xdf47, - 0xd854,0xdf48,0xd854,0xdf49,0xd854,0xdf4a,0xd854,0xdf4b,0xd854,0xdf4c, - 0xd854,0xdf4d,0xd854,0xdf4e,0xd854,0xdf4f,0xd854,0xdf50,0xd854,0xdf51, - 0xd854,0xdf52,0xd854,0xdf53,0xd854,0xdf54,0xd854,0xdf55,0xd854,0xdf56, - 0xd854,0xdf57,0xd854,0xdf58,0xd854,0xdf59,0xd854,0xdf5a,0xd854,0xdf5b, - 0xd854,0xdf5c,0xd854,0xdf5d,0xd854,0xdf5e,0xd854,0xdf5f,0xd854,0xdf60, - 0xd854,0xdf61,0xd854,0xdf62,0xd854,0xdf63,0xd854,0xdf64,0xd854,0xdf65, - 0xd854,0xdf66,0xd854,0xdf67,0xd854,0xdf68,0xd854,0xdf69,0xd854,0xdf6a, - 0xd854,0xdf6b,0xd854,0xdf6c,0xd854,0xdf6d,0xd854,0xdf6e,0xd854,0xdf6f, - 0xd854,0xdf70,0xd854,0xdf71,0xd854,0xdf72,0xd854,0xdf73,0xd854,0xdf74, - 0xd854,0xdf75,0xd854,0xdf76,0xd854,0xdf77,0xd854,0xdf78,0xd854,0xdf79, - 0xd854,0xdf7a,0xd854,0xdf7b,0xd854,0xdf7c,0xd854,0xdf7d,0xd854,0xdf7e, - 0xd854,0xdf7f,0xd854,0xdf80,0xd854,0xdf81,0xd854,0xdf82,0xd854,0xdf83, - 0xd854,0xdf84,0xd854,0xdf85,0xd854,0xdf86,0xd854,0xdf87,0xd854,0xdf88, - 0xd854,0xdf89,0xd854,0xdf8a,0xd854,0xdf8b,0xd854,0xdf8c,0xd854,0xdf8d, - 0xd854,0xdf8e,0xd854,0xdf8f,0xd854,0xdf90,0xd854,0xdf91,0xd854,0xdf92, - 0xd854,0xdf93,0xd854,0xdf94,0xd854,0xdf95,0xd854,0xdf96,0xd854,0xdf97, - 0xd854,0xdf98,0xd854,0xdf99,0xd854,0xdf9a,0xd854,0xdf9b,0xd854,0xdf9c, - 0xd854,0xdf9d,0xd854,0xdf9e,0xd854,0xdf9f,0xd854,0xdfa0,0xd854,0xdfa1, - 0xd854,0xdfa2,0xd854,0xdfa3,0xd854,0xdfa4,0xd854,0xdfa5,0xd854,0xdfa6, - 0xd854,0xdfa7,0xd854,0xdfa8,0xd854,0xdfa9,0xd854,0xdfaa,0xd854,0xdfab, - 0xd854,0xdfac,0xd854,0xdfad,0xd854,0xdfae,0xd854,0xdfaf,0xd854,0xdfb0, - 0xd854,0xdfb1,0xd854,0xdfb2,0xd854,0xdfb3,0xd854,0xdfb4,0xd854,0xdfb5, - 0xd854,0xdfb6,0xd854,0xdfb7,0xd854,0xdfb8,0xd854,0xdfb9,0xd854,0xdfba, - 0xd854,0xdfbb,0xd854,0xdfbc,0xd854,0xdfbd,0xd854,0xdfbe,0xd854,0xdfbf, - 0xd854,0xdfc0,0xd854,0xdfc1,0xd854,0xdfc2,0xd854,0xdfc3,0xd854,0xdfc4, - 0xd854,0xdfc5,0xd854,0xdfc6,0xd854,0xdfc7,0xd854,0xdfc8,0xd854,0xdfc9, - 0xd854,0xdfca,0xd854,0xdfcb,0xd854,0xdfcc,0xd854,0xdfcd,0xd854,0xdfce, - 0xd854,0xdfcf,0xd854,0xdfd0,0xd854,0xdfd1,0xd854,0xdfd2,0xd854,0xdfd3, - 0xd854,0xdfd4,0xd854,0xdfd5,0xd854,0xdfd6,0xd854,0xdfd7,0xd854,0xdfd8, - 0xd854,0xdfd9,0xd854,0xdfda,0xd854,0xdfdb,0xd854,0xdfdc,0xd854,0xdfdd, - 0xd854,0xdfde,0xd854,0xdfdf,0xd854,0xdfe0,0xd854,0xdfe1,0xd854,0xdfe2, - 0xd854,0xdfe3,0xd854,0xdfe4,0xd854,0xdfe5,0xd854,0xdfe6,0xd854,0xdfe7, - 0xd854,0xdfe8,0xd854,0xdfe9,0xd854,0xdfea,0xd854,0xdfeb,0xd854,0xdfec, - 0xd854,0xdfed,0xd854,0xdfee,0xd854,0xdfef,0xd854,0xdff0,0xd854,0xdff1, - 0xd854,0xdff2,0xd854,0xdff3,0xd854,0xdff4,0xd854,0xdff5,0xd854,0xdff6, - 0xd854,0xdff7,0xd854,0xdff8,0xd854,0xdff9,0xd854,0xdffa,0xd854,0xdffb, - 0xd854,0xdffc,0xd854,0xdffd,0xd854,0xdffe,0xd854,0xdfff,0xd855,0xdc00, - 0xd855,0xdc01,0xd855,0xdc02,0xd855,0xdc03,0xd855,0xdc04,0xd855,0xdc05, - 0xd855,0xdc06,0xd855,0xdc07,0xd855,0xdc08,0xd855,0xdc09,0xd855,0xdc0a, - 0xd855,0xdc0b,0xd855,0xdc0c,0xd855,0xdc0d,0xd855,0xdc0e,0xd855,0xdc0f, - 0xd855,0xdc10,0xd855,0xdc11,0xd855,0xdc12,0xd855,0xdc13,0xd855,0xdc14, - 0xd855,0xdc15,0xd855,0xdc16,0xd855,0xdc17,0xd855,0xdc18,0xd855,0xdc19, - 0xd855,0xdc1a,0xd855,0xdc1b,0xd855,0xdc1c,0xd855,0xdc1d,0xd855,0xdc1e, - 0xd855,0xdc1f,0xd855,0xdc20,0xd855,0xdc21,0xd855,0xdc22,0xd855,0xdc23, - 0xd855,0xdc24,0xd855,0xdc25,0xd855,0xdc26,0xd855,0xdc27,0xd855,0xdc28, - 0xd855,0xdc29,0xd855,0xdc2a,0xd855,0xdc2b,0xd855,0xdc2c,0xd855,0xdc2d, - 0xd855,0xdc2e,0xd855,0xdc2f,0xd855,0xdc30,0xd855,0xdc31,0xd855,0xdc32, - 0xd855,0xdc33,0xd855,0xdc34,0xd855,0xdc35,0xd855,0xdc36,0xd855,0xdc37, - 0xd855,0xdc38,0xd855,0xdc39,0xd855,0xdc3a,0xd855,0xdc3b,0xd855,0xdc3c, - 0xd855,0xdc3d,0xd855,0xdc3e,0xd855,0xdc3f,0xd855,0xdc40,0xd855,0xdc41, - 0xd855,0xdc42,0xd855,0xdc43,0xd855,0xdc44,0xd855,0xdc45,0xd855,0xdc46, - 0xd855,0xdc47,0xd855,0xdc48,0xd855,0xdc49,0xd855,0xdc4a,0xd855,0xdc4b, - 0xd855,0xdc4c,0xd855,0xdc4d,0xd855,0xdc4e,0xd855,0xdc4f,0xd855,0xdc50, - 0xd855,0xdc51,0xd855,0xdc52,0xd855,0xdc53,0xd855,0xdc54,0xd855,0xdc55, - 0xd855,0xdc56,0xd855,0xdc57,0xd855,0xdc58,0xd855,0xdc59,0xd855,0xdc5a, - 0xd855,0xdc5b,0xd855,0xdc5c,0xd855,0xdc5d,0xd855,0xdc5e,0xd855,0xdc5f, - 0xd855,0xdc60,0xd855,0xdc61,0xd855,0xdc62,0xd855,0xdc63,0xd855,0xdc64, - 0xd855,0xdc65,0xd855,0xdc66,0xd855,0xdc67,0xd855,0xdc68,0xd855,0xdc69, - 0xd855,0xdc6a,0xd855,0xdc6b,0xd855,0xdc6c,0xd855,0xdc6d,0xd855,0xdc6e, - 0xd855,0xdc6f,0xd855,0xdc70,0xd855,0xdc71,0xd855,0xdc72,0xd855,0xdc73, - 0xd855,0xdc74,0xd855,0xdc75,0xd855,0xdc76,0xd855,0xdc77,0xd855,0xdc78, - 0xd855,0xdc79,0xd855,0xdc7a,0xd855,0xdc7b,0xd855,0xdc7c,0xd855,0xdc7d, - 0xd855,0xdc7e,0xd855,0xdc7f,0xd855,0xdc80,0xd855,0xdc81,0xd855,0xdc82, - 0xd855,0xdc83,0xd855,0xdc84,0xd855,0xdc85,0xd855,0xdc86,0xd855,0xdc87, - 0xd855,0xdc88,0xd855,0xdc89,0xd855,0xdc8a,0xd855,0xdc8b,0xd855,0xdc8c, - 0xd855,0xdc8d,0xd855,0xdc8e,0xd855,0xdc8f,0xd855,0xdc90,0xd855,0xdc91, - 0xd855,0xdc92,0xd855,0xdc93,0xd855,0xdc94,0xd855,0xdc95,0xd855,0xdc96, - 0xd855,0xdc97,0xd855,0xdc98,0xd855,0xdc99,0xd855,0xdc9a,0xd855,0xdc9b, - 0xd855,0xdc9c,0xd855,0xdc9d,0xd855,0xdc9e,0xd855,0xdc9f,0xd855,0xdca0, - 0xd855,0xdca1,0xd855,0xdca2,0xd855,0xdca3,0xd855,0xdca4,0xd855,0xdca5, - 0xd855,0xdca6,0xd855,0xdca7,0xd855,0xdca8,0xd855,0xdca9,0xd855,0xdcaa, - 0xd855,0xdcab,0xd855,0xdcac,0xd855,0xdcad,0xd855,0xdcae,0xd855,0xdcaf, - 0xd855,0xdcb0,0xd855,0xdcb1,0xd855,0xdcb2,0xd855,0xdcb3,0xd855,0xdcb4, - 0xd855,0xdcb5,0xd855,0xdcb6,0xd855,0xdcb7,0xd855,0xdcb8,0xd855,0xdcb9, - 0xd855,0xdcba,0xd855,0xdcbb,0xd855,0xdcbc,0xd855,0xdcbd,0xd855,0xdcbe, - 0xd855,0xdcbf,0xd855,0xdcc0,0xd855,0xdcc1,0xd855,0xdcc2,0xd855,0xdcc3, - 0xd855,0xdcc4,0xd855,0xdcc5,0xd855,0xdcc6,0xd855,0xdcc7,0xd855,0xdcc8, - 0xd855,0xdcc9,0xd855,0xdcca,0xd855,0xdccb,0xd855,0xdccc,0xd855,0xdccd, - 0xd855,0xdcce,0xd855,0xdccf,0xd855,0xdcd0,0xd855,0xdcd1,0xd855,0xdcd2, - 0xd855,0xdcd3,0xd855,0xdcd4,0xd855,0xdcd5,0xd855,0xdcd6,0xd855,0xdcd7, - 0xd855,0xdcd8,0xd855,0xdcd9,0xd855,0xdcda,0xd855,0xdcdb,0xd855,0xdcdc, - 0xd855,0xdcdd,0xd855,0xdcde,0xd855,0xdcdf,0xd855,0xdce0,0xd855,0xdce1, - 0xd855,0xdce2,0xd855,0xdce3,0xd855,0xdce4,0xd855,0xdce5,0xd855,0xdce6, - 0xd855,0xdce7,0xd855,0xdce8,0xd855,0xdce9,0xd855,0xdcea,0xd855,0xdceb, - 0xd855,0xdcec,0xd855,0xdced,0xd855,0xdcee,0xd855,0xdcef,0xd855,0xdcf0, - 0xd855,0xdcf1,0xd855,0xdcf2,0xd855,0xdcf3,0xd855,0xdcf4,0xd855,0xdcf5, - 0xd855,0xdcf6,0xd855,0xdcf7,0xd855,0xdcf8,0xd855,0xdcf9,0xd855,0xdcfa, - 0xd855,0xdcfb,0xd855,0xdcfc,0xd855,0xdcfd,0xd855,0xdcfe,0xd855,0xdcff, - 0xd855,0xdd00,0xd855,0xdd01,0xd855,0xdd02,0xd855,0xdd03,0xd855,0xdd04, - 0xd855,0xdd05,0xd855,0xdd06,0xd855,0xdd07,0xd855,0xdd08,0xd855,0xdd09, - 0xd855,0xdd0a,0xd855,0xdd0b,0xd855,0xdd0c,0xd855,0xdd0d,0xd855,0xdd0e, - 0xd855,0xdd0f,0xd855,0xdd10,0xd855,0xdd11,0xd855,0xdd12,0xd855,0xdd13, - 0xd855,0xdd14,0xd855,0xdd15,0xd855,0xdd16,0xd855,0xdd17,0xd855,0xdd18, - 0xd855,0xdd19,0xd855,0xdd1a,0xd855,0xdd1b,0xd855,0xdd1c,0xd855,0xdd1d, - 0xd855,0xdd1e,0xd855,0xdd1f,0xd855,0xdd20,0xd855,0xdd21,0xd855,0xdd22, - 0xd855,0xdd23,0xd855,0xdd24,0xd855,0xdd25,0xd855,0xdd26,0xd855,0xdd27, - 0xd855,0xdd28,0xd855,0xdd29,0xd855,0xdd2a,0xd855,0xdd2b,0xd855,0xdd2c, - 0xd855,0xdd2d,0xd855,0xdd2e,0xd855,0xdd2f,0xd855,0xdd30,0xd855,0xdd31, - 0xd855,0xdd32,0xd855,0xdd33,0xd855,0xdd34,0xd855,0xdd35,0xd855,0xdd36, - 0xd855,0xdd37,0xd855,0xdd38,0xd855,0xdd39,0xd855,0xdd3a,0xd855,0xdd3b, - 0xd855,0xdd3c,0xd855,0xdd3d,0xd855,0xdd3e,0xd855,0xdd3f,0xd855,0xdd40, - 0xd855,0xdd41,0xd855,0xdd42,0xd855,0xdd43,0xd855,0xdd44,0xd855,0xdd45, - 0xd855,0xdd46,0xd855,0xdd47,0xd855,0xdd48,0xd855,0xdd49,0xd855,0xdd4a, - 0xd855,0xdd4b,0xd855,0xdd4c,0xd855,0xdd4d,0xd855,0xdd4e,0xd855,0xdd4f, - 0xd855,0xdd50,0xd855,0xdd51,0xd855,0xdd52,0xd855,0xdd53,0xd855,0xdd54, - 0xd855,0xdd55,0xd855,0xdd56,0xd855,0xdd57,0xd855,0xdd58,0xd855,0xdd59, - 0xd855,0xdd5a,0xd855,0xdd5b,0xd855,0xdd5c,0xd855,0xdd5d,0xd855,0xdd5e, - 0xd855,0xdd5f,0xd855,0xdd60,0xd855,0xdd61,0xd855,0xdd62,0xd855,0xdd63, - 0xd855,0xdd64,0xd855,0xdd65,0xd855,0xdd66,0xd855,0xdd67,0xd855,0xdd68, - 0xd855,0xdd69,0xd855,0xdd6a,0xd855,0xdd6b,0xd855,0xdd6c,0xd855,0xdd6d, - 0xd855,0xdd6e,0xd855,0xdd6f,0xd855,0xdd70,0xd855,0xdd71,0xd855,0xdd72, - 0xd855,0xdd73,0xd855,0xdd74,0xd855,0xdd75,0xd855,0xdd76,0xd855,0xdd77, - 0xd855,0xdd78,0xd855,0xdd79,0xd855,0xdd7a,0xd855,0xdd7b,0xd855,0xdd7c, - 0xd855,0xdd7d,0xd855,0xdd7e,0xd855,0xdd7f,0xd855,0xdd80,0xd855,0xdd81, - 0xd855,0xdd82,0xd855,0xdd83,0xd855,0xdd84,0xd855,0xdd85,0xd855,0xdd86, - 0xd855,0xdd87,0xd855,0xdd88,0xd855,0xdd89,0xd855,0xdd8a,0xd855,0xdd8b, - 0xd855,0xdd8c,0xd855,0xdd8d,0xd855,0xdd8e,0xd855,0xdd8f,0xd855,0xdd90, - 0xd855,0xdd91,0xd855,0xdd92,0xd855,0xdd93,0xd855,0xdd94,0xd855,0xdd95, - 0xd855,0xdd96,0xd855,0xdd97,0xd855,0xdd98,0xd855,0xdd99,0xd855,0xdd9a, - 0xd855,0xdd9b,0xd855,0xdd9c,0xd855,0xdd9d,0xd855,0xdd9e,0xd855,0xdd9f, - 0xd855,0xdda0,0xd855,0xdda1,0xd855,0xdda2,0xd855,0xdda3,0xd855,0xdda4, - 0xd855,0xdda5,0xd855,0xdda6,0xd855,0xdda7,0xd855,0xdda8,0xd855,0xdda9, - 0xd855,0xddaa,0xd855,0xddab,0xd855,0xddac,0xd855,0xddad,0xd855,0xddae, - 0xd855,0xddaf,0xd855,0xddb0,0xd855,0xddb1,0xd855,0xddb2,0xd855,0xddb3, - 0xd855,0xddb4,0xd855,0xddb5,0xd855,0xddb6,0xd855,0xddb7,0xd855,0xddb8, - 0xd855,0xddb9,0xd855,0xddba,0xd855,0xddbb,0xd855,0xddbc,0xd855,0xddbd, - 0xd855,0xddbe,0xd855,0xddbf,0xd855,0xddc0,0xd855,0xddc1,0xd855,0xddc2, - 0xd855,0xddc3,0xd855,0xddc4,0xd855,0xddc5,0xd855,0xddc6,0xd855,0xddc7, - 0xd855,0xddc8,0xd855,0xddc9,0xd855,0xddca,0xd855,0xddcb,0xd855,0xddcc, - 0xd855,0xddcd,0xd855,0xddce,0xd855,0xddcf,0xd855,0xddd0,0xd855,0xddd1, - 0xd855,0xddd2,0xd855,0xddd3,0xd855,0xddd4,0xd855,0xddd5,0xd855,0xddd6, - 0xd855,0xddd7,0xd855,0xddd8,0xd855,0xddd9,0xd855,0xddda,0xd855,0xdddb, - 0xd855,0xdddc,0xd855,0xdddd,0xd855,0xddde,0xd855,0xdddf,0xd855,0xdde0, - 0xd855,0xdde1,0xd855,0xdde2,0xd855,0xdde3,0xd855,0xdde4,0xd855,0xdde5, - 0xd855,0xdde6,0xd855,0xdde7,0xd855,0xdde8,0xd855,0xdde9,0xd855,0xddea, - 0xd855,0xddeb,0xd855,0xddec,0xd855,0xdded,0xd855,0xddee,0xd855,0xddef, - 0xd855,0xddf0,0xd855,0xddf1,0xd855,0xddf2,0xd855,0xddf3,0xd855,0xddf4, - 0xd855,0xddf5,0xd855,0xddf6,0xd855,0xddf7,0xd855,0xddf8,0xd855,0xddf9, - 0xd855,0xddfa,0xd855,0xddfb,0xd855,0xddfc,0xd855,0xddfd,0xd855,0xddfe, - 0xd855,0xddff,0xd855,0xde00,0xd855,0xde01,0xd855,0xde02,0xd855,0xde03, - 0xd855,0xde04,0xd855,0xde05,0xd855,0xde06,0xd855,0xde07,0xd855,0xde08, - 0xd855,0xde09,0xd855,0xde0a,0xd855,0xde0b,0xd855,0xde0c,0xd855,0xde0d, - 0xd855,0xde0e,0xd855,0xde0f,0xd855,0xde10,0xd855,0xde11,0xd855,0xde12, - 0xd855,0xde13,0xd855,0xde14,0xd855,0xde15,0xd855,0xde16,0xd855,0xde17, - 0xd855,0xde18,0xd855,0xde19,0xd855,0xde1a,0xd855,0xde1b,0xd855,0xde1c, - 0xd855,0xde1d,0xd855,0xde1e,0xd855,0xde1f,0xd855,0xde20,0xd855,0xde21, - 0xd855,0xde22,0xd855,0xde23,0xd855,0xde24,0xd855,0xde25,0xd855,0xde26, - 0xd855,0xde27,0xd855,0xde28,0xd855,0xde29,0xd855,0xde2a,0xd855,0xde2b, - 0xd855,0xde2c,0xd855,0xde2d,0xd855,0xde2e,0xd855,0xde2f,0xd855,0xde30, - 0xd855,0xde31,0xd855,0xde32,0xd855,0xde33,0xd855,0xde34,0xd855,0xde35, - 0xd855,0xde36,0xd855,0xde37,0xd855,0xde38,0xd855,0xde39,0xd855,0xde3a, - 0xd855,0xde3b,0xd855,0xde3c,0xd855,0xde3d,0xd855,0xde3e,0xd855,0xde3f, - 0xd855,0xde40,0xd855,0xde41,0xd855,0xde42,0xd855,0xde43,0xd855,0xde44, - 0xd855,0xde45,0xd855,0xde46,0xd855,0xde47,0xd855,0xde48,0xd855,0xde49, - 0xd855,0xde4a,0xd855,0xde4b,0xd855,0xde4c,0xd855,0xde4d,0xd855,0xde4e, - 0xd855,0xde4f,0xd855,0xde50,0xd855,0xde51,0xd855,0xde52,0xd855,0xde53, - 0xd855,0xde54,0xd855,0xde55,0xd855,0xde56,0xd855,0xde57,0xd855,0xde58, - 0xd855,0xde59,0xd855,0xde5a,0xd855,0xde5b,0xd855,0xde5c,0xd855,0xde5d, - 0xd855,0xde5e,0xd855,0xde5f,0xd855,0xde60,0xd855,0xde61,0xd855,0xde62, - 0xd855,0xde63,0xd855,0xde64,0xd855,0xde65,0xd855,0xde66,0xd855,0xde67, - 0xd855,0xde68,0xd855,0xde69,0xd855,0xde6a,0xd855,0xde6b,0xd855,0xde6c, - 0xd855,0xde6d,0xd855,0xde6e,0xd855,0xde6f,0xd855,0xde70,0xd855,0xde71, - 0xd855,0xde72,0xd855,0xde73,0xd855,0xde74,0xd855,0xde75,0xd855,0xde76, - 0xd855,0xde77,0xd855,0xde78,0xd855,0xde79,0xd855,0xde7a,0xd855,0xde7b, - 0xd855,0xde7c,0xd855,0xde7d,0xd855,0xde7e,0xd855,0xde7f,0xd855,0xde80, - 0xd855,0xde81,0xd855,0xde82,0xd855,0xde83,0xd855,0xde84,0xd855,0xde85, - 0xd855,0xde86,0xd855,0xde87,0xd855,0xde88,0xd855,0xde89,0xd855,0xde8a, - 0xd855,0xde8b,0xd855,0xde8c,0xd855,0xde8d,0xd855,0xde8e,0xd855,0xde8f, - 0xd855,0xde90,0xd855,0xde91,0xd855,0xde92,0xd855,0xde93,0xd855,0xde94, - 0xd855,0xde95,0xd855,0xde96,0xd855,0xde97,0xd855,0xde98,0xd855,0xde99, - 0xd855,0xde9a,0xd855,0xde9b,0xd855,0xde9c,0xd855,0xde9d,0xd855,0xde9e, - 0xd855,0xde9f,0xd855,0xdea0,0xd855,0xdea1,0xd855,0xdea2,0xd855,0xdea3, - 0xd855,0xdea4,0xd855,0xdea5,0xd855,0xdea6,0xd855,0xdea7,0xd855,0xdea8, - 0xd855,0xdea9,0xd855,0xdeaa,0xd855,0xdeab,0xd855,0xdeac,0xd855,0xdead, - 0xd855,0xdeae,0xd855,0xdeaf,0xd855,0xdeb0,0xd855,0xdeb1,0xd855,0xdeb2, - 0xd855,0xdeb3,0xd855,0xdeb4,0xd855,0xdeb5,0xd855,0xdeb6,0xd855,0xdeb7, - 0xd855,0xdeb8,0xd855,0xdeb9,0xd855,0xdeba,0xd855,0xdebb,0xd855,0xdebc, - 0xd855,0xdebd,0xd855,0xdebe,0xd855,0xdebf,0xd855,0xdec0,0xd855,0xdec1, - 0xd855,0xdec2,0xd855,0xdec3,0xd855,0xdec4,0xd855,0xdec5,0xd855,0xdec6, - 0xd855,0xdec7,0xd855,0xdec8,0xd855,0xdec9,0xd855,0xdeca,0xd855,0xdecb, - 0xd855,0xdecc,0xd855,0xdecd,0xd855,0xdece,0xd855,0xdecf,0xd855,0xded0, - 0xd855,0xded1,0xd855,0xded2,0xd855,0xded3,0xd855,0xded4,0xd855,0xded5, - 0xd855,0xded6,0xd855,0xded7,0xd855,0xded8,0xd855,0xded9,0xd855,0xdeda, - 0xd855,0xdedb,0xd855,0xdedc,0xd855,0xdedd,0xd855,0xdede,0xd855,0xdedf, - 0xd855,0xdee0,0xd855,0xdee1,0xd855,0xdee2,0xd855,0xdee3,0xd855,0xdee4, - 0xd855,0xdee5,0xd855,0xdee6,0xd855,0xdee7,0xd855,0xdee8,0xd855,0xdee9, - 0xd855,0xdeea,0xd855,0xdeeb,0xd855,0xdeec,0xd855,0xdeed,0xd855,0xdeee, - 0xd855,0xdeef,0xd855,0xdef0,0xd855,0xdef1,0xd855,0xdef2,0xd855,0xdef3, - 0xd855,0xdef4,0xd855,0xdef5,0xd855,0xdef6,0xd855,0xdef7,0xd855,0xdef8, - 0xd855,0xdef9,0xd855,0xdefa,0xd855,0xdefb,0xd855,0xdefc,0xd855,0xdefd, - 0xd855,0xdefe,0xd855,0xdeff,0xd855,0xdf00,0xd855,0xdf01,0xd855,0xdf02, - 0xd855,0xdf03,0xd855,0xdf04,0xd855,0xdf05,0xd855,0xdf06,0xd855,0xdf07, - 0xd855,0xdf08,0xd855,0xdf09,0xd855,0xdf0a,0xd855,0xdf0b,0xd855,0xdf0c, - 0xd855,0xdf0d,0xd855,0xdf0e,0xd855,0xdf0f,0xd855,0xdf10,0xd855,0xdf11, - 0xd855,0xdf12,0xd855,0xdf13,0xd855,0xdf14,0xd855,0xdf15,0xd855,0xdf16, - 0xd855,0xdf17,0xd855,0xdf18,0xd855,0xdf19,0xd855,0xdf1a,0xd855,0xdf1b, - 0xd855,0xdf1c,0xd855,0xdf1d,0xd855,0xdf1e,0xd855,0xdf1f,0xd855,0xdf20, - 0xd855,0xdf21,0xd855,0xdf22,0xd855,0xdf23,0xd855,0xdf24,0xd855,0xdf25, - 0xd855,0xdf26,0xd855,0xdf27,0xd855,0xdf28,0xd855,0xdf29,0xd855,0xdf2a, - 0xd855,0xdf2b,0xd855,0xdf2c,0xd855,0xdf2d,0xd855,0xdf2e,0xd855,0xdf2f, - 0xd855,0xdf30,0xd855,0xdf31,0xd855,0xdf32,0xd855,0xdf33,0xd855,0xdf34, - 0xd855,0xdf35,0xd855,0xdf36,0xd855,0xdf37,0xd855,0xdf38,0xd855,0xdf39, - 0xd855,0xdf3a,0xd855,0xdf3b,0xd855,0xdf3c,0xd855,0xdf3d,0xd855,0xdf3e, - 0xd855,0xdf3f,0xd855,0xdf40,0xd855,0xdf41,0xd855,0xdf42,0xd855,0xdf43, - 0xd855,0xdf44,0xd855,0xdf45,0xd855,0xdf46,0xd855,0xdf47,0xd855,0xdf48, - 0xd855,0xdf49,0xd855,0xdf4a,0xd855,0xdf4b,0xd855,0xdf4c,0xd855,0xdf4d, - 0xd855,0xdf4e,0xd855,0xdf4f,0xd855,0xdf50,0xd855,0xdf51,0xd855,0xdf52, - 0xd855,0xdf53,0xd855,0xdf54,0xd855,0xdf55,0xd855,0xdf56,0xd855,0xdf57, - 0xd855,0xdf58,0xd855,0xdf59,0xd855,0xdf5a,0xd855,0xdf5b,0xd855,0xdf5c, - 0xd855,0xdf5d,0xd855,0xdf5e,0xd855,0xdf5f,0xd855,0xdf60,0xd855,0xdf61, - 0xd855,0xdf62,0xd855,0xdf63,0xd855,0xdf64,0xd855,0xdf65,0xd855,0xdf66, - 0xd855,0xdf67,0xd855,0xdf68,0xd855,0xdf69,0xd855,0xdf6a,0xd855,0xdf6b, - 0xd855,0xdf6c,0xd855,0xdf6d,0xd855,0xdf6e,0xd855,0xdf6f,0xd855,0xdf70, - 0xd855,0xdf71,0xd855,0xdf72,0xd855,0xdf73,0xd855,0xdf74,0xd855,0xdf75, - 0xd855,0xdf76,0xd855,0xdf77,0xd855,0xdf78,0xd855,0xdf79,0xd855,0xdf7a, - 0xd855,0xdf7b,0xd855,0xdf7c,0xd855,0xdf7d,0xd855,0xdf7e,0xd855,0xdf7f, - 0xd855,0xdf80,0xd855,0xdf81,0xd855,0xdf82,0xd855,0xdf83,0xd855,0xdf84, - 0xd855,0xdf85,0xd855,0xdf86,0xd855,0xdf87,0xd855,0xdf88,0xd855,0xdf89, - 0xd855,0xdf8a,0xd855,0xdf8b,0xd855,0xdf8c,0xd855,0xdf8d,0xd855,0xdf8e, - 0xd855,0xdf8f,0xd855,0xdf90,0xd855,0xdf91,0xd855,0xdf92,0xd855,0xdf93, - 0xd855,0xdf94,0xd855,0xdf95,0xd855,0xdf96,0xd855,0xdf97,0xd855,0xdf98, - 0xd855,0xdf99,0xd855,0xdf9a,0xd855,0xdf9b,0xd855,0xdf9c,0xd855,0xdf9d, - 0xd855,0xdf9e,0xd855,0xdf9f,0xd855,0xdfa0,0xd855,0xdfa1,0xd855,0xdfa2, - 0xd855,0xdfa3,0xd855,0xdfa4,0xd855,0xdfa5,0xd855,0xdfa6,0xd855,0xdfa7, - 0xd855,0xdfa8,0xd855,0xdfa9,0xd855,0xdfaa,0xd855,0xdfab,0xd855,0xdfac, - 0xd855,0xdfad,0xd855,0xdfae,0xd855,0xdfaf,0xd855,0xdfb0,0xd855,0xdfb1, - 0xd855,0xdfb2,0xd855,0xdfb3,0xd855,0xdfb4,0xd855,0xdfb5,0xd855,0xdfb6, - 0xd855,0xdfb7,0xd855,0xdfb8,0xd855,0xdfb9,0xd855,0xdfba,0xd855,0xdfbb, - 0xd855,0xdfbc,0xd855,0xdfbd,0xd855,0xdfbe,0xd855,0xdfbf,0xd855,0xdfc0, - 0xd855,0xdfc1,0xd855,0xdfc2,0xd855,0xdfc3,0xd855,0xdfc4,0xd855,0xdfc5, - 0xd855,0xdfc6,0xd855,0xdfc7,0xd855,0xdfc8,0xd855,0xdfc9,0xd855,0xdfca, - 0xd855,0xdfcb,0xd855,0xdfcc,0xd855,0xdfcd,0xd855,0xdfce,0xd855,0xdfcf, - 0xd855,0xdfd0,0xd855,0xdfd1,0xd855,0xdfd2,0xd855,0xdfd3,0xd855,0xdfd4, - 0xd855,0xdfd5,0xd855,0xdfd6,0xd855,0xdfd7,0xd855,0xdfd8,0xd855,0xdfd9, - 0xd855,0xdfda,0xd855,0xdfdb,0xd855,0xdfdc,0xd855,0xdfdd,0xd855,0xdfde, - 0xd855,0xdfdf,0xd855,0xdfe0,0xd855,0xdfe1,0xd855,0xdfe2,0xd855,0xdfe3, - 0xd855,0xdfe4,0xd855,0xdfe5,0xd855,0xdfe6,0xd855,0xdfe7,0xd855,0xdfe8, - 0xd855,0xdfe9,0xd855,0xdfea,0xd855,0xdfeb,0xd855,0xdfec,0xd855,0xdfed, - 0xd855,0xdfee,0xd855,0xdfef,0xd855,0xdff0,0xd855,0xdff1,0xd855,0xdff2, - 0xd855,0xdff3,0xd855,0xdff4,0xd855,0xdff5,0xd855,0xdff6,0xd855,0xdff7, - 0xd855,0xdff8,0xd855,0xdff9,0xd855,0xdffa,0xd855,0xdffb,0xd855,0xdffc, - 0xd855,0xdffd,0xd855,0xdffe,0xd855,0xdfff,0xd856,0xdc00,0xd856,0xdc01, - 0xd856,0xdc02,0xd856,0xdc03,0xd856,0xdc04,0xd856,0xdc05,0xd856,0xdc06, - 0xd856,0xdc07,0xd856,0xdc08,0xd856,0xdc09,0xd856,0xdc0a,0xd856,0xdc0b, - 0xd856,0xdc0c,0xd856,0xdc0d,0xd856,0xdc0e,0xd856,0xdc0f,0xd856,0xdc10, - 0xd856,0xdc11,0xd856,0xdc12,0xd856,0xdc13,0xd856,0xdc14,0xd856,0xdc15, - 0xd856,0xdc16,0xd856,0xdc17,0xd856,0xdc18,0xd856,0xdc19,0xd856,0xdc1a, - 0xd856,0xdc1b,0xd856,0xdc1c,0xd856,0xdc1d,0xd856,0xdc1e,0xd856,0xdc1f, - 0xd856,0xdc20,0xd856,0xdc21,0xd856,0xdc22,0xd856,0xdc23,0xd856,0xdc24, - 0xd856,0xdc25,0xd856,0xdc26,0xd856,0xdc27,0xd856,0xdc28,0xd856,0xdc29, - 0xd856,0xdc2a,0xd856,0xdc2b,0xd856,0xdc2c,0xd856,0xdc2d,0xd856,0xdc2e, - 0xd856,0xdc2f,0xd856,0xdc30,0xd856,0xdc31,0xd856,0xdc32,0xd856,0xdc33, - 0xd856,0xdc34,0xd856,0xdc35,0xd856,0xdc36,0xd856,0xdc37,0xd856,0xdc38, - 0xd856,0xdc39,0xd856,0xdc3a,0xd856,0xdc3b,0xd856,0xdc3c,0xd856,0xdc3d, - 0xd856,0xdc3e,0xd856,0xdc3f,0xd856,0xdc40,0xd856,0xdc41,0xd856,0xdc42, - 0xd856,0xdc43,0xd856,0xdc44,0xd856,0xdc45,0xd856,0xdc46,0xd856,0xdc47, - 0xd856,0xdc48,0xd856,0xdc49,0xd856,0xdc4a,0xd856,0xdc4b,0xd856,0xdc4c, - 0xd856,0xdc4d,0xd856,0xdc4e,0xd856,0xdc4f,0xd856,0xdc50,0xd856,0xdc51, - 0xd856,0xdc52,0xd856,0xdc53,0xd856,0xdc54,0xd856,0xdc55,0xd856,0xdc56, - 0xd856,0xdc57,0xd856,0xdc58,0xd856,0xdc59,0xd856,0xdc5a,0xd856,0xdc5b, - 0xd856,0xdc5c,0xd856,0xdc5d,0xd856,0xdc5e,0xd856,0xdc5f,0xd856,0xdc60, - 0xd856,0xdc61,0xd856,0xdc62,0xd856,0xdc63,0xd856,0xdc64,0xd856,0xdc65, - 0xd856,0xdc66,0xd856,0xdc67,0xd856,0xdc68,0xd856,0xdc69,0xd856,0xdc6a, - 0xd856,0xdc6b,0xd856,0xdc6c,0xd856,0xdc6d,0xd856,0xdc6e,0xd856,0xdc6f, - 0xd856,0xdc70,0xd856,0xdc71,0xd856,0xdc72,0xd856,0xdc73,0xd856,0xdc74, - 0xd856,0xdc75,0xd856,0xdc76,0xd856,0xdc77,0xd856,0xdc78,0xd856,0xdc79, - 0xd856,0xdc7a,0xd856,0xdc7b,0xd856,0xdc7c,0xd856,0xdc7d,0xd856,0xdc7e, - 0xd856,0xdc7f,0xd856,0xdc80,0xd856,0xdc81,0xd856,0xdc82,0xd856,0xdc83, - 0xd856,0xdc84,0xd856,0xdc85,0xd856,0xdc86,0xd856,0xdc87,0xd856,0xdc88, - 0xd856,0xdc89,0xd856,0xdc8a,0xd856,0xdc8b,0xd856,0xdc8c,0xd856,0xdc8d, - 0xd856,0xdc8e,0xd856,0xdc8f,0xd856,0xdc90,0xd856,0xdc91,0xd856,0xdc92, - 0xd856,0xdc93,0xd856,0xdc94,0xd856,0xdc95,0xd856,0xdc96,0xd856,0xdc97, - 0xd856,0xdc98,0xd856,0xdc99,0xd856,0xdc9a,0xd856,0xdc9b,0xd856,0xdc9c, - 0xd856,0xdc9d,0xd856,0xdc9e,0xd856,0xdc9f,0xd856,0xdca0,0xd856,0xdca1, - 0xd856,0xdca2,0xd856,0xdca3,0xd856,0xdca4,0xd856,0xdca5,0xd856,0xdca6, - 0xd856,0xdca7,0xd856,0xdca8,0xd856,0xdca9,0xd856,0xdcaa,0xd856,0xdcab, - 0xd856,0xdcac,0xd856,0xdcad,0xd856,0xdcae,0xd856,0xdcaf,0xd856,0xdcb0, - 0xd856,0xdcb1,0xd856,0xdcb2,0xd856,0xdcb3,0xd856,0xdcb4,0xd856,0xdcb5, - 0xd856,0xdcb6,0xd856,0xdcb7,0xd856,0xdcb8,0xd856,0xdcb9,0xd856,0xdcba, - 0xd856,0xdcbb,0xd856,0xdcbc,0xd856,0xdcbd,0xd856,0xdcbe,0xd856,0xdcbf, - 0xd856,0xdcc0,0xd856,0xdcc1,0xd856,0xdcc2,0xd856,0xdcc3,0xd856,0xdcc4, - 0xd856,0xdcc5,0xd856,0xdcc6,0xd856,0xdcc7,0xd856,0xdcc8,0xd856,0xdcc9, - 0xd856,0xdcca,0xd856,0xdccb,0xd856,0xdccc,0xd856,0xdccd,0xd856,0xdcce, - 0xd856,0xdccf,0xd856,0xdcd0,0xd856,0xdcd1,0xd856,0xdcd2,0xd856,0xdcd3, - 0xd856,0xdcd4,0xd856,0xdcd5,0xd856,0xdcd6,0xd856,0xdcd7,0xd856,0xdcd8, - 0xd856,0xdcd9,0xd856,0xdcda,0xd856,0xdcdb,0xd856,0xdcdc,0xd856,0xdcdd, - 0xd856,0xdcde,0xd856,0xdcdf,0xd856,0xdce0,0xd856,0xdce1,0xd856,0xdce2, - 0xd856,0xdce3,0xd856,0xdce4,0xd856,0xdce5,0xd856,0xdce6,0xd856,0xdce7, - 0xd856,0xdce8,0xd856,0xdce9,0xd856,0xdcea,0xd856,0xdceb,0xd856,0xdcec, - 0xd856,0xdced,0xd856,0xdcee,0xd856,0xdcef,0xd856,0xdcf0,0xd856,0xdcf1, - 0xd856,0xdcf2,0xd856,0xdcf3,0xd856,0xdcf4,0xd856,0xdcf5,0xd856,0xdcf6, - 0xd856,0xdcf7,0xd856,0xdcf8,0xd856,0xdcf9,0xd856,0xdcfa,0xd856,0xdcfb, - 0xd856,0xdcfc,0xd856,0xdcfd,0xd856,0xdcfe,0xd856,0xdcff,0xd856,0xdd00, - 0xd856,0xdd01,0xd856,0xdd02,0xd856,0xdd03,0xd856,0xdd04,0xd856,0xdd05, - 0xd856,0xdd06,0xd856,0xdd07,0xd856,0xdd08,0xd856,0xdd09,0xd856,0xdd0a, - 0xd856,0xdd0b,0xd856,0xdd0c,0xd856,0xdd0d,0xd856,0xdd0e,0xd856,0xdd0f, - 0xd856,0xdd10,0xd856,0xdd11,0xd856,0xdd12,0xd856,0xdd13,0xd856,0xdd14, - 0xd856,0xdd15,0xd856,0xdd16,0xd856,0xdd17,0xd856,0xdd18,0xd856,0xdd19, - 0xd856,0xdd1a,0xd856,0xdd1b,0xd856,0xdd1c,0xd856,0xdd1d,0xd856,0xdd1e, - 0xd856,0xdd1f,0xd856,0xdd20,0xd856,0xdd21,0xd856,0xdd22,0xd856,0xdd23, - 0xd856,0xdd24,0xd856,0xdd25,0xd856,0xdd26,0xd856,0xdd27,0xd856,0xdd28, - 0xd856,0xdd29,0xd856,0xdd2a,0xd856,0xdd2b,0xd856,0xdd2c,0xd856,0xdd2d, - 0xd856,0xdd2e,0xd856,0xdd2f,0xd856,0xdd30,0xd856,0xdd31,0xd856,0xdd32, - 0xd856,0xdd33,0xd856,0xdd34,0xd856,0xdd35,0xd856,0xdd36,0xd856,0xdd37, - 0xd856,0xdd38,0xd856,0xdd39,0xd856,0xdd3a,0xd856,0xdd3b,0xd856,0xdd3c, - 0xd856,0xdd3d,0xd856,0xdd3e,0xd856,0xdd3f,0xd856,0xdd40,0xd856,0xdd41, - 0xd856,0xdd42,0xd856,0xdd43,0xd856,0xdd44,0xd856,0xdd45,0xd856,0xdd46, - 0xd856,0xdd47,0xd856,0xdd48,0xd856,0xdd49,0xd856,0xdd4a,0xd856,0xdd4b, - 0xd856,0xdd4c,0xd856,0xdd4d,0xd856,0xdd4e,0xd856,0xdd4f,0xd856,0xdd50, - 0xd856,0xdd51,0xd856,0xdd52,0xd856,0xdd53,0xd856,0xdd54,0xd856,0xdd55, - 0xd856,0xdd56,0xd856,0xdd57,0xd856,0xdd58,0xd856,0xdd59,0xd856,0xdd5a, - 0xd856,0xdd5b,0xd856,0xdd5c,0xd856,0xdd5d,0xd856,0xdd5e,0xd856,0xdd5f, - 0xd856,0xdd60,0xd856,0xdd61,0xd856,0xdd62,0xd856,0xdd63,0xd856,0xdd64, - 0xd856,0xdd65,0xd856,0xdd66,0xd856,0xdd67,0xd856,0xdd68,0xd856,0xdd69, - 0xd856,0xdd6a,0xd856,0xdd6b,0xd856,0xdd6c,0xd856,0xdd6d,0xd856,0xdd6e, - 0xd856,0xdd6f,0xd856,0xdd70,0xd856,0xdd71,0xd856,0xdd72,0xd856,0xdd73, - 0xd856,0xdd74,0xd856,0xdd75,0xd856,0xdd76,0xd856,0xdd77,0xd856,0xdd78, - 0xd856,0xdd79,0xd856,0xdd7a,0xd856,0xdd7b,0xd856,0xdd7c,0xd856,0xdd7d, - 0xd856,0xdd7e,0xd856,0xdd7f,0xd856,0xdd80,0xd856,0xdd81,0xd856,0xdd82, - 0xd856,0xdd83,0xd856,0xdd84,0xd856,0xdd85,0xd856,0xdd86,0xd856,0xdd87, - 0xd856,0xdd88,0xd856,0xdd89,0xd856,0xdd8a,0xd856,0xdd8b,0xd856,0xdd8c, - 0xd856,0xdd8d,0xd856,0xdd8e,0xd856,0xdd8f,0xd856,0xdd90,0xd856,0xdd91, - 0xd856,0xdd92,0xd856,0xdd93,0xd856,0xdd94,0xd856,0xdd95,0xd856,0xdd96, - 0xd856,0xdd97,0xd856,0xdd98,0xd856,0xdd99,0xd856,0xdd9a,0xd856,0xdd9b, - 0xd856,0xdd9c,0xd856,0xdd9d,0xd856,0xdd9e,0xd856,0xdd9f,0xd856,0xdda0, - 0xd856,0xdda1,0xd856,0xdda2,0xd856,0xdda3,0xd856,0xdda4,0xd856,0xdda5, - 0xd856,0xdda6,0xd856,0xdda7,0xd856,0xdda8,0xd856,0xdda9,0xd856,0xddaa, - 0xd856,0xddab,0xd856,0xddac,0xd856,0xddad,0xd856,0xddae,0xd856,0xddaf, - 0xd856,0xddb0,0xd856,0xddb1,0xd856,0xddb2,0xd856,0xddb3,0xd856,0xddb4, - 0xd856,0xddb5,0xd856,0xddb6,0xd856,0xddb7,0xd856,0xddb8,0xd856,0xddb9, - 0xd856,0xddba,0xd856,0xddbb,0xd856,0xddbc,0xd856,0xddbd,0xd856,0xddbe, - 0xd856,0xddbf,0xd856,0xddc0,0xd856,0xddc1,0xd856,0xddc2,0xd856,0xddc3, - 0xd856,0xddc4,0xd856,0xddc5,0xd856,0xddc6,0xd856,0xddc7,0xd856,0xddc8, - 0xd856,0xddc9,0xd856,0xddca,0xd856,0xddcb,0xd856,0xddcc,0xd856,0xddcd, - 0xd856,0xddce,0xd856,0xddcf,0xd856,0xddd0,0xd856,0xddd1,0xd856,0xddd2, - 0xd856,0xddd3,0xd856,0xddd4,0xd856,0xddd5,0xd856,0xddd6,0xd856,0xddd7, - 0xd856,0xddd8,0xd856,0xddd9,0xd856,0xddda,0xd856,0xdddb,0xd856,0xdddc, - 0xd856,0xdddd,0xd856,0xddde,0xd856,0xdddf,0xd856,0xdde0,0xd856,0xdde1, - 0xd856,0xdde2,0xd856,0xdde3,0xd856,0xdde4,0xd856,0xdde5,0xd856,0xdde6, - 0xd856,0xdde7,0xd856,0xdde8,0xd856,0xdde9,0xd856,0xddea,0xd856,0xddeb, - 0xd856,0xddec,0xd856,0xdded,0xd856,0xddee,0xd856,0xddef,0xd856,0xddf0, - 0xd856,0xddf1,0xd856,0xddf2,0xd856,0xddf3,0xd856,0xddf4,0xd856,0xddf5, - 0xd856,0xddf6,0xd856,0xddf7,0xd856,0xddf8,0xd856,0xddf9,0xd856,0xddfa, - 0xd856,0xddfb,0xd856,0xddfc,0xd856,0xddfd,0xd856,0xddfe,0xd856,0xddff, - 0xd856,0xde00,0xd856,0xde01,0xd856,0xde02,0xd856,0xde03,0xd856,0xde04, - 0xd856,0xde05,0xd856,0xde06,0xd856,0xde07,0xd856,0xde08,0xd856,0xde09, - 0xd856,0xde0a,0xd856,0xde0b,0xd856,0xde0c,0xd856,0xde0d,0xd856,0xde0e, - 0xd856,0xde0f,0xd856,0xde10,0xd856,0xde11,0xd856,0xde12,0xd856,0xde13, - 0xd856,0xde14,0xd856,0xde15,0xd856,0xde16,0xd856,0xde17,0xd856,0xde18, - 0xd856,0xde19,0xd856,0xde1a,0xd856,0xde1b,0xd856,0xde1c,0xd856,0xde1d, - 0xd856,0xde1e,0xd856,0xde1f,0xd856,0xde20,0xd856,0xde21,0xd856,0xde22, - 0xd856,0xde23,0xd856,0xde24,0xd856,0xde25,0xd856,0xde26,0xd856,0xde27, - 0xd856,0xde28,0xd856,0xde29,0xd856,0xde2a,0xd856,0xde2b,0xd856,0xde2c, - 0xd856,0xde2d,0xd856,0xde2e,0xd856,0xde2f,0xd856,0xde30,0xd856,0xde31, - 0xd856,0xde32,0xd856,0xde33,0xd856,0xde34,0xd856,0xde35,0xd856,0xde36, - 0xd856,0xde37,0xd856,0xde38,0xd856,0xde39,0xd856,0xde3a,0xd856,0xde3b, - 0xd856,0xde3c,0xd856,0xde3d,0xd856,0xde3e,0xd856,0xde3f,0xd856,0xde40, - 0xd856,0xde41,0xd856,0xde42,0xd856,0xde43,0xd856,0xde44,0xd856,0xde45, - 0xd856,0xde46,0xd856,0xde47,0xd856,0xde48,0xd856,0xde49,0xd856,0xde4a, - 0xd856,0xde4b,0xd856,0xde4c,0xd856,0xde4d,0xd856,0xde4e,0xd856,0xde4f, - 0xd856,0xde50,0xd856,0xde51,0xd856,0xde52,0xd856,0xde53,0xd856,0xde54, - 0xd856,0xde55,0xd856,0xde56,0xd856,0xde57,0xd856,0xde58,0xd856,0xde59, - 0xd856,0xde5a,0xd856,0xde5b,0xd856,0xde5c,0xd856,0xde5d,0xd856,0xde5e, - 0xd856,0xde5f,0xd856,0xde60,0xd856,0xde61,0xd856,0xde62,0xd856,0xde63, - 0xd856,0xde64,0xd856,0xde65,0xd856,0xde66,0xd856,0xde67,0xd856,0xde68, - 0xd856,0xde69,0xd856,0xde6a,0xd856,0xde6b,0xd856,0xde6c,0xd856,0xde6d, - 0xd856,0xde6e,0xd856,0xde6f,0xd856,0xde70,0xd856,0xde71,0xd856,0xde72, - 0xd856,0xde73,0xd856,0xde74,0xd856,0xde75,0xd856,0xde76,0xd856,0xde77, - 0xd856,0xde78,0xd856,0xde79,0xd856,0xde7a,0xd856,0xde7b,0xd856,0xde7c, - 0xd856,0xde7d,0xd856,0xde7e,0xd856,0xde7f,0xd856,0xde80,0xd856,0xde81, - 0xd856,0xde82,0xd856,0xde83,0xd856,0xde84,0xd856,0xde85,0xd856,0xde86, - 0xd856,0xde87,0xd856,0xde88,0xd856,0xde89,0xd856,0xde8a,0xd856,0xde8b, - 0xd856,0xde8c,0xd856,0xde8d,0xd856,0xde8e,0xd856,0xde8f,0xd856,0xde90, - 0xd856,0xde91,0xd856,0xde92,0xd856,0xde93,0xd856,0xde94,0xd856,0xde95, - 0xd856,0xde96,0xd856,0xde97,0xd856,0xde98,0xd856,0xde99,0xd856,0xde9a, - 0xd856,0xde9b,0xd856,0xde9c,0xd856,0xde9d,0xd856,0xde9e,0xd856,0xde9f, - 0xd856,0xdea0,0xd856,0xdea1,0xd856,0xdea2,0xd856,0xdea3,0xd856,0xdea4, - 0xd856,0xdea5,0xd856,0xdea6,0xd856,0xdea7,0xd856,0xdea8,0xd856,0xdea9, - 0xd856,0xdeaa,0xd856,0xdeab,0xd856,0xdeac,0xd856,0xdead,0xd856,0xdeae, - 0xd856,0xdeaf,0xd856,0xdeb0,0xd856,0xdeb1,0xd856,0xdeb2,0xd856,0xdeb3, - 0xd856,0xdeb4,0xd856,0xdeb5,0xd856,0xdeb6,0xd856,0xdeb7,0xd856,0xdeb8, - 0xd856,0xdeb9,0xd856,0xdeba,0xd856,0xdebb,0xd856,0xdebc,0xd856,0xdebd, - 0xd856,0xdebe,0xd856,0xdebf,0xd856,0xdec0,0xd856,0xdec1,0xd856,0xdec2, - 0xd856,0xdec3,0xd856,0xdec4,0xd856,0xdec5,0xd856,0xdec6,0xd856,0xdec7, - 0xd856,0xdec8,0xd856,0xdec9,0xd856,0xdeca,0xd856,0xdecb,0xd856,0xdecc, - 0xd856,0xdecd,0xd856,0xdece,0xd856,0xdecf,0xd856,0xded0,0xd856,0xded1, - 0xd856,0xded2,0xd856,0xded3,0xd856,0xded4,0xd856,0xded5,0xd856,0xded6, - 0xd856,0xded7,0xd856,0xded8,0xd856,0xded9,0xd856,0xdeda,0xd856,0xdedb, - 0xd856,0xdedc,0xd856,0xdedd,0xd856,0xdede,0xd856,0xdedf,0xd856,0xdee0, - 0xd856,0xdee1,0xd856,0xdee2,0xd856,0xdee3,0xd856,0xdee4,0xd856,0xdee5, - 0xd856,0xdee6,0xd856,0xdee7,0xd856,0xdee8,0xd856,0xdee9,0xd856,0xdeea, - 0xd856,0xdeeb,0xd856,0xdeec,0xd856,0xdeed,0xd856,0xdeee,0xd856,0xdeef, - 0xd856,0xdef0,0xd856,0xdef1,0xd856,0xdef2,0xd856,0xdef3,0xd856,0xdef4, - 0xd856,0xdef5,0xd856,0xdef6,0xd856,0xdef7,0xd856,0xdef8,0xd856,0xdef9, - 0xd856,0xdefa,0xd856,0xdefb,0xd856,0xdefc,0xd856,0xdefd,0xd856,0xdefe, - 0xd856,0xdeff,0xd856,0xdf00,0xd856,0xdf01,0xd856,0xdf02,0xd856,0xdf03, - 0xd856,0xdf04,0xd856,0xdf05,0xd856,0xdf06,0xd856,0xdf07,0xd856,0xdf08, - 0xd856,0xdf09,0xd856,0xdf0a,0xd856,0xdf0b,0xd856,0xdf0c,0xd856,0xdf0d, - 0xd856,0xdf0e,0xd856,0xdf0f,0xd856,0xdf10,0xd856,0xdf11,0xd856,0xdf12, - 0xd856,0xdf13,0xd856,0xdf14,0xd856,0xdf15,0xd856,0xdf16,0xd856,0xdf17, - 0xd856,0xdf18,0xd856,0xdf19,0xd856,0xdf1a,0xd856,0xdf1b,0xd856,0xdf1c, - 0xd856,0xdf1d,0xd856,0xdf1e,0xd856,0xdf1f,0xd856,0xdf20,0xd856,0xdf21, - 0xd856,0xdf22,0xd856,0xdf23,0xd856,0xdf24,0xd856,0xdf25,0xd856,0xdf26, - 0xd856,0xdf27,0xd856,0xdf28,0xd856,0xdf29,0xd856,0xdf2a,0xd856,0xdf2b, - 0xd856,0xdf2c,0xd856,0xdf2d,0xd856,0xdf2e,0xd856,0xdf2f,0xd856,0xdf30, - 0xd856,0xdf31,0xd856,0xdf32,0xd856,0xdf33,0xd856,0xdf34,0xd856,0xdf35, - 0xd856,0xdf36,0xd856,0xdf37,0xd856,0xdf38,0xd856,0xdf39,0xd856,0xdf3a, - 0xd856,0xdf3b,0xd856,0xdf3c,0xd856,0xdf3d,0xd856,0xdf3e,0xd856,0xdf3f, - 0xd856,0xdf40,0xd856,0xdf41,0xd856,0xdf42,0xd856,0xdf43,0xd856,0xdf44, - 0xd856,0xdf45,0xd856,0xdf46,0xd856,0xdf47,0xd856,0xdf48,0xd856,0xdf49, - 0xd856,0xdf4a,0xd856,0xdf4b,0xd856,0xdf4c,0xd856,0xdf4d,0xd856,0xdf4e, - 0xd856,0xdf4f,0xd856,0xdf50,0xd856,0xdf51,0xd856,0xdf52,0xd856,0xdf53, - 0xd856,0xdf54,0xd856,0xdf55,0xd856,0xdf56,0xd856,0xdf57,0xd856,0xdf58, - 0xd856,0xdf59,0xd856,0xdf5a,0xd856,0xdf5b,0xd856,0xdf5c,0xd856,0xdf5d, - 0xd856,0xdf5e,0xd856,0xdf5f,0xd856,0xdf60,0xd856,0xdf61,0xd856,0xdf62, - 0xd856,0xdf63,0xd856,0xdf64,0xd856,0xdf65,0xd856,0xdf66,0xd856,0xdf67, - 0xd856,0xdf68,0xd856,0xdf69,0xd856,0xdf6a,0xd856,0xdf6b,0xd856,0xdf6c, - 0xd856,0xdf6d,0xd856,0xdf6e,0xd856,0xdf6f,0xd856,0xdf70,0xd856,0xdf71, - 0xd856,0xdf72,0xd856,0xdf73,0xd856,0xdf74,0xd856,0xdf75,0xd856,0xdf76, - 0xd856,0xdf77,0xd856,0xdf78,0xd856,0xdf79,0xd856,0xdf7a,0xd856,0xdf7b, - 0xd856,0xdf7c,0xd856,0xdf7d,0xd856,0xdf7e,0xd856,0xdf7f,0xd856,0xdf80, - 0xd856,0xdf81,0xd856,0xdf82,0xd856,0xdf83,0xd856,0xdf84,0xd856,0xdf85, - 0xd856,0xdf86,0xd856,0xdf87,0xd856,0xdf88,0xd856,0xdf89,0xd856,0xdf8a, - 0xd856,0xdf8b,0xd856,0xdf8c,0xd856,0xdf8d,0xd856,0xdf8e,0xd856,0xdf8f, - 0xd856,0xdf90,0xd856,0xdf91,0xd856,0xdf92,0xd856,0xdf93,0xd856,0xdf94, - 0xd856,0xdf95,0xd856,0xdf96,0xd856,0xdf97,0xd856,0xdf98,0xd856,0xdf99, - 0xd856,0xdf9a,0xd856,0xdf9b,0xd856,0xdf9c,0xd856,0xdf9d,0xd856,0xdf9e, - 0xd856,0xdf9f,0xd856,0xdfa0,0xd856,0xdfa1,0xd856,0xdfa2,0xd856,0xdfa3, - 0xd856,0xdfa4,0xd856,0xdfa5,0xd856,0xdfa6,0xd856,0xdfa7,0xd856,0xdfa8, - 0xd856,0xdfa9,0xd856,0xdfaa,0xd856,0xdfab,0xd856,0xdfac,0xd856,0xdfad, - 0xd856,0xdfae,0xd856,0xdfaf,0xd856,0xdfb0,0xd856,0xdfb1,0xd856,0xdfb2, - 0xd856,0xdfb3,0xd856,0xdfb4,0xd856,0xdfb5,0xd856,0xdfb6,0xd856,0xdfb7, - 0xd856,0xdfb8,0xd856,0xdfb9,0xd856,0xdfba,0xd856,0xdfbb,0xd856,0xdfbc, - 0xd856,0xdfbd,0xd856,0xdfbe,0xd856,0xdfbf,0xd856,0xdfc0,0xd856,0xdfc1, - 0xd856,0xdfc2,0xd856,0xdfc3,0xd856,0xdfc4,0xd856,0xdfc5,0xd856,0xdfc6, - 0xd856,0xdfc7,0xd856,0xdfc8,0xd856,0xdfc9,0xd856,0xdfca,0xd856,0xdfcb, - 0xd856,0xdfcc,0xd856,0xdfcd,0xd856,0xdfce,0xd856,0xdfcf,0xd856,0xdfd0, - 0xd856,0xdfd1,0xd856,0xdfd2,0xd856,0xdfd3,0xd856,0xdfd4,0xd856,0xdfd5, - 0xd856,0xdfd6,0xd856,0xdfd7,0xd856,0xdfd8,0xd856,0xdfd9,0xd856,0xdfda, - 0xd856,0xdfdb,0xd856,0xdfdc,0xd856,0xdfdd,0xd856,0xdfde,0xd856,0xdfdf, - 0xd856,0xdfe0,0xd856,0xdfe1,0xd856,0xdfe2,0xd856,0xdfe3,0xd856,0xdfe4, - 0xd856,0xdfe5,0xd856,0xdfe6,0xd856,0xdfe7,0xd856,0xdfe8,0xd856,0xdfe9, - 0xd856,0xdfea,0xd856,0xdfeb,0xd856,0xdfec,0xd856,0xdfed,0xd856,0xdfee, - 0xd856,0xdfef,0xd856,0xdff0,0xd856,0xdff1,0xd856,0xdff2,0xd856,0xdff3, - 0xd856,0xdff4,0xd856,0xdff5,0xd856,0xdff6,0xd856,0xdff7,0xd856,0xdff8, - 0xd856,0xdff9,0xd856,0xdffa,0xd856,0xdffb,0xd856,0xdffc,0xd856,0xdffd, - 0xd856,0xdffe,0xd856,0xdfff,0xd857,0xdc00,0xd857,0xdc01,0xd857,0xdc02, - 0xd857,0xdc03,0xd857,0xdc04,0xd857,0xdc05,0xd857,0xdc06,0xd857,0xdc07, - 0xd857,0xdc08,0xd857,0xdc09,0xd857,0xdc0a,0xd857,0xdc0b,0xd857,0xdc0c, - 0xd857,0xdc0d,0xd857,0xdc0e,0xd857,0xdc0f,0xd857,0xdc10,0xd857,0xdc11, - 0xd857,0xdc12,0xd857,0xdc13,0xd857,0xdc14,0xd857,0xdc15,0xd857,0xdc16, - 0xd857,0xdc17,0xd857,0xdc18,0xd857,0xdc19,0xd857,0xdc1a,0xd857,0xdc1b, - 0xd857,0xdc1c,0xd857,0xdc1d,0xd857,0xdc1e,0xd857,0xdc1f,0xd857,0xdc20, - 0xd857,0xdc21,0xd857,0xdc22,0xd857,0xdc23,0xd857,0xdc24,0xd857,0xdc25, - 0xd857,0xdc26,0xd857,0xdc27,0xd857,0xdc28,0xd857,0xdc29,0xd857,0xdc2a, - 0xd857,0xdc2b,0xd857,0xdc2c,0xd857,0xdc2d,0xd857,0xdc2e,0xd857,0xdc2f, - 0xd857,0xdc30,0xd857,0xdc31,0xd857,0xdc32,0xd857,0xdc33,0xd857,0xdc34, - 0xd857,0xdc35,0xd857,0xdc36,0xd857,0xdc37,0xd857,0xdc38,0xd857,0xdc39, - 0xd857,0xdc3a,0xd857,0xdc3b,0xd857,0xdc3c,0xd857,0xdc3d,0xd857,0xdc3e, - 0xd857,0xdc3f,0xd857,0xdc40,0xd857,0xdc41,0xd857,0xdc42,0xd857,0xdc43, - 0xd857,0xdc44,0xd857,0xdc45,0xd857,0xdc46,0xd857,0xdc47,0xd857,0xdc48, - 0xd857,0xdc49,0xd857,0xdc4a,0xd857,0xdc4b,0xd857,0xdc4c,0xd857,0xdc4d, - 0xd857,0xdc4e,0xd857,0xdc4f,0xd857,0xdc50,0xd857,0xdc51,0xd857,0xdc52, - 0xd857,0xdc53,0xd857,0xdc54,0xd857,0xdc55,0xd857,0xdc56,0xd857,0xdc57, - 0xd857,0xdc58,0xd857,0xdc59,0xd857,0xdc5a,0xd857,0xdc5b,0xd857,0xdc5c, - 0xd857,0xdc5d,0xd857,0xdc5e,0xd857,0xdc5f,0xd857,0xdc60,0xd857,0xdc61, - 0xd857,0xdc62,0xd857,0xdc63,0xd857,0xdc64,0xd857,0xdc65,0xd857,0xdc66, - 0xd857,0xdc67,0xd857,0xdc68,0xd857,0xdc69,0xd857,0xdc6a,0xd857,0xdc6b, - 0xd857,0xdc6c,0xd857,0xdc6d,0xd857,0xdc6e,0xd857,0xdc6f,0xd857,0xdc70, - 0xd857,0xdc71,0xd857,0xdc72,0xd857,0xdc73,0xd857,0xdc74,0xd857,0xdc75, - 0xd857,0xdc76,0xd857,0xdc77,0xd857,0xdc78,0xd857,0xdc79,0xd857,0xdc7a, - 0xd857,0xdc7b,0xd857,0xdc7c,0xd857,0xdc7d,0xd857,0xdc7e,0xd857,0xdc7f, - 0xd857,0xdc80,0xd857,0xdc81,0xd857,0xdc82,0xd857,0xdc83,0xd857,0xdc84, - 0xd857,0xdc85,0xd857,0xdc86,0xd857,0xdc87,0xd857,0xdc88,0xd857,0xdc89, - 0xd857,0xdc8a,0xd857,0xdc8b,0xd857,0xdc8c,0xd857,0xdc8d,0xd857,0xdc8e, - 0xd857,0xdc8f,0xd857,0xdc90,0xd857,0xdc91,0xd857,0xdc92,0xd857,0xdc93, - 0xd857,0xdc94,0xd857,0xdc95,0xd857,0xdc96,0xd857,0xdc97,0xd857,0xdc98, - 0xd857,0xdc99,0xd857,0xdc9a,0xd857,0xdc9b,0xd857,0xdc9c,0xd857,0xdc9d, - 0xd857,0xdc9e,0xd857,0xdc9f,0xd857,0xdca0,0xd857,0xdca1,0xd857,0xdca2, - 0xd857,0xdca3,0xd857,0xdca4,0xd857,0xdca5,0xd857,0xdca6,0xd857,0xdca7, - 0xd857,0xdca8,0xd857,0xdca9,0xd857,0xdcaa,0xd857,0xdcab,0xd857,0xdcac, - 0xd857,0xdcad,0xd857,0xdcae,0xd857,0xdcaf,0xd857,0xdcb0,0xd857,0xdcb1, - 0xd857,0xdcb2,0xd857,0xdcb3,0xd857,0xdcb4,0xd857,0xdcb5,0xd857,0xdcb6, - 0xd857,0xdcb7,0xd857,0xdcb8,0xd857,0xdcb9,0xd857,0xdcba,0xd857,0xdcbb, - 0xd857,0xdcbc,0xd857,0xdcbd,0xd857,0xdcbe,0xd857,0xdcbf,0xd857,0xdcc0, - 0xd857,0xdcc1,0xd857,0xdcc2,0xd857,0xdcc3,0xd857,0xdcc4,0xd857,0xdcc5, - 0xd857,0xdcc6,0xd857,0xdcc7,0xd857,0xdcc8,0xd857,0xdcc9,0xd857,0xdcca, - 0xd857,0xdccb,0xd857,0xdccc,0xd857,0xdccd,0xd857,0xdcce,0xd857,0xdccf, - 0xd857,0xdcd0,0xd857,0xdcd1,0xd857,0xdcd2,0xd857,0xdcd3,0xd857,0xdcd4, - 0xd857,0xdcd5,0xd857,0xdcd6,0xd857,0xdcd7,0xd857,0xdcd8,0xd857,0xdcd9, - 0xd857,0xdcda,0xd857,0xdcdb,0xd857,0xdcdc,0xd857,0xdcdd,0xd857,0xdcde, - 0xd857,0xdcdf,0xd857,0xdce0,0xd857,0xdce1,0xd857,0xdce2,0xd857,0xdce3, - 0xd857,0xdce4,0xd857,0xdce5,0xd857,0xdce6,0xd857,0xdce7,0xd857,0xdce8, - 0xd857,0xdce9,0xd857,0xdcea,0xd857,0xdceb,0xd857,0xdcec,0xd857,0xdced, - 0xd857,0xdcee,0xd857,0xdcef,0xd857,0xdcf0,0xd857,0xdcf1,0xd857,0xdcf2, - 0xd857,0xdcf3,0xd857,0xdcf4,0xd857,0xdcf5,0xd857,0xdcf6,0xd857,0xdcf7, - 0xd857,0xdcf8,0xd857,0xdcf9,0xd857,0xdcfa,0xd857,0xdcfb,0xd857,0xdcfc, - 0xd857,0xdcfd,0xd857,0xdcfe,0xd857,0xdcff,0xd857,0xdd00,0xd857,0xdd01, - 0xd857,0xdd02,0xd857,0xdd03,0xd857,0xdd04,0xd857,0xdd05,0xd857,0xdd06, - 0xd857,0xdd07,0xd857,0xdd08,0xd857,0xdd09,0xd857,0xdd0a,0xd857,0xdd0b, - 0xd857,0xdd0c,0xd857,0xdd0d,0xd857,0xdd0e,0xd857,0xdd0f,0xd857,0xdd10, - 0xd857,0xdd11,0xd857,0xdd12,0xd857,0xdd13,0xd857,0xdd14,0xd857,0xdd15, - 0xd857,0xdd16,0xd857,0xdd17,0xd857,0xdd18,0xd857,0xdd19,0xd857,0xdd1a, - 0xd857,0xdd1b,0xd857,0xdd1c,0xd857,0xdd1d,0xd857,0xdd1e,0xd857,0xdd1f, - 0xd857,0xdd20,0xd857,0xdd21,0xd857,0xdd22,0xd857,0xdd23,0xd857,0xdd24, - 0xd857,0xdd25,0xd857,0xdd26,0xd857,0xdd27,0xd857,0xdd28,0xd857,0xdd29, - 0xd857,0xdd2a,0xd857,0xdd2b,0xd857,0xdd2c,0xd857,0xdd2d,0xd857,0xdd2e, - 0xd857,0xdd2f,0xd857,0xdd30,0xd857,0xdd31,0xd857,0xdd32,0xd857,0xdd33, - 0xd857,0xdd34,0xd857,0xdd35,0xd857,0xdd36,0xd857,0xdd37,0xd857,0xdd38, - 0xd857,0xdd39,0xd857,0xdd3a,0xd857,0xdd3b,0xd857,0xdd3c,0xd857,0xdd3d, - 0xd857,0xdd3e,0xd857,0xdd3f,0xd857,0xdd40,0xd857,0xdd41,0xd857,0xdd42, - 0xd857,0xdd43,0xd857,0xdd44,0xd857,0xdd45,0xd857,0xdd46,0xd857,0xdd47, - 0xd857,0xdd48,0xd857,0xdd49,0xd857,0xdd4a,0xd857,0xdd4b,0xd857,0xdd4c, - 0xd857,0xdd4d,0xd857,0xdd4e,0xd857,0xdd4f,0xd857,0xdd50,0xd857,0xdd51, - 0xd857,0xdd52,0xd857,0xdd53,0xd857,0xdd54,0xd857,0xdd55,0xd857,0xdd56, - 0xd857,0xdd57,0xd857,0xdd58,0xd857,0xdd59,0xd857,0xdd5a,0xd857,0xdd5b, - 0xd857,0xdd5c,0xd857,0xdd5d,0xd857,0xdd5e,0xd857,0xdd5f,0xd857,0xdd60, - 0xd857,0xdd61,0xd857,0xdd62,0xd857,0xdd63,0xd857,0xdd64,0xd857,0xdd65, - 0xd857,0xdd66,0xd857,0xdd67,0xd857,0xdd68,0xd857,0xdd69,0xd857,0xdd6a, - 0xd857,0xdd6b,0xd857,0xdd6c,0xd857,0xdd6d,0xd857,0xdd6e,0xd857,0xdd6f, - 0xd857,0xdd70,0xd857,0xdd71,0xd857,0xdd72,0xd857,0xdd73,0xd857,0xdd74, - 0xd857,0xdd75,0xd857,0xdd76,0xd857,0xdd77,0xd857,0xdd78,0xd857,0xdd79, - 0xd857,0xdd7a,0xd857,0xdd7b,0xd857,0xdd7c,0xd857,0xdd7d,0xd857,0xdd7e, - 0xd857,0xdd7f,0xd857,0xdd80,0xd857,0xdd81,0xd857,0xdd82,0xd857,0xdd83, - 0xd857,0xdd84,0xd857,0xdd85,0xd857,0xdd86,0xd857,0xdd87,0xd857,0xdd88, - 0xd857,0xdd89,0xd857,0xdd8a,0xd857,0xdd8b,0xd857,0xdd8c,0xd857,0xdd8d, - 0xd857,0xdd8e,0xd857,0xdd8f,0xd857,0xdd90,0xd857,0xdd91,0xd857,0xdd92, - 0xd857,0xdd93,0xd857,0xdd94,0xd857,0xdd95,0xd857,0xdd96,0xd857,0xdd97, - 0xd857,0xdd98,0xd857,0xdd99,0xd857,0xdd9a,0xd857,0xdd9b,0xd857,0xdd9c, - 0xd857,0xdd9d,0xd857,0xdd9e,0xd857,0xdd9f,0xd857,0xdda0,0xd857,0xdda1, - 0xd857,0xdda2,0xd857,0xdda3,0xd857,0xdda4,0xd857,0xdda5,0xd857,0xdda6, - 0xd857,0xdda7,0xd857,0xdda8,0xd857,0xdda9,0xd857,0xddaa,0xd857,0xddab, - 0xd857,0xddac,0xd857,0xddad,0xd857,0xddae,0xd857,0xddaf,0xd857,0xddb0, - 0xd857,0xddb1,0xd857,0xddb2,0xd857,0xddb3,0xd857,0xddb4,0xd857,0xddb5, - 0xd857,0xddb6,0xd857,0xddb7,0xd857,0xddb8,0xd857,0xddb9,0xd857,0xddba, - 0xd857,0xddbb,0xd857,0xddbc,0xd857,0xddbd,0xd857,0xddbe,0xd857,0xddbf, - 0xd857,0xddc0,0xd857,0xddc1,0xd857,0xddc2,0xd857,0xddc3,0xd857,0xddc4, - 0xd857,0xddc5,0xd857,0xddc6,0xd857,0xddc7,0xd857,0xddc8,0xd857,0xddc9, - 0xd857,0xddca,0xd857,0xddcb,0xd857,0xddcc,0xd857,0xddcd,0xd857,0xddce, - 0xd857,0xddcf,0xd857,0xddd0,0xd857,0xddd1,0xd857,0xddd2,0xd857,0xddd3, - 0xd857,0xddd4,0xd857,0xddd5,0xd857,0xddd6,0xd857,0xddd7,0xd857,0xddd8, - 0xd857,0xddd9,0xd857,0xddda,0xd857,0xdddb,0xd857,0xdddc,0xd857,0xdddd, - 0xd857,0xddde,0xd857,0xdddf,0xd857,0xdde0,0xd857,0xdde1,0xd857,0xdde2, - 0xd857,0xdde3,0xd857,0xdde4,0xd857,0xdde5,0xd857,0xdde6,0xd857,0xdde7, - 0xd857,0xdde8,0xd857,0xdde9,0xd857,0xddea,0xd857,0xddeb,0xd857,0xddec, - 0xd857,0xdded,0xd857,0xddee,0xd857,0xddef,0xd857,0xddf0,0xd857,0xddf1, - 0xd857,0xddf2,0xd857,0xddf3,0xd857,0xddf4,0xd857,0xddf5,0xd857,0xddf6, - 0xd857,0xddf7,0xd857,0xddf8,0xd857,0xddf9,0xd857,0xddfa,0xd857,0xddfb, - 0xd857,0xddfc,0xd857,0xddfd,0xd857,0xddfe,0xd857,0xddff,0xd857,0xde00, - 0xd857,0xde01,0xd857,0xde02,0xd857,0xde03,0xd857,0xde04,0xd857,0xde05, - 0xd857,0xde06,0xd857,0xde07,0xd857,0xde08,0xd857,0xde09,0xd857,0xde0a, - 0xd857,0xde0b,0xd857,0xde0c,0xd857,0xde0d,0xd857,0xde0e,0xd857,0xde0f, - 0xd857,0xde10,0xd857,0xde11,0xd857,0xde12,0xd857,0xde13,0xd857,0xde14, - 0xd857,0xde15,0xd857,0xde16,0xd857,0xde17,0xd857,0xde18,0xd857,0xde19, - 0xd857,0xde1a,0xd857,0xde1b,0xd857,0xde1c,0xd857,0xde1d,0xd857,0xde1e, - 0xd857,0xde1f,0xd857,0xde20,0xd857,0xde21,0xd857,0xde22,0xd857,0xde23, - 0xd857,0xde24,0xd857,0xde25,0xd857,0xde26,0xd857,0xde27,0xd857,0xde28, - 0xd857,0xde29,0xd857,0xde2a,0xd857,0xde2b,0xd857,0xde2c,0xd857,0xde2d, - 0xd857,0xde2e,0xd857,0xde2f,0xd857,0xde30,0xd857,0xde31,0xd857,0xde32, - 0xd857,0xde33,0xd857,0xde34,0xd857,0xde35,0xd857,0xde36,0xd857,0xde37, - 0xd857,0xde38,0xd857,0xde39,0xd857,0xde3a,0xd857,0xde3b,0xd857,0xde3c, - 0xd857,0xde3d,0xd857,0xde3e,0xd857,0xde3f,0xd857,0xde40,0xd857,0xde41, - 0xd857,0xde42,0xd857,0xde43,0xd857,0xde44,0xd857,0xde45,0xd857,0xde46, - 0xd857,0xde47,0xd857,0xde48,0xd857,0xde49,0xd857,0xde4a,0xd857,0xde4b, - 0xd857,0xde4c,0xd857,0xde4d,0xd857,0xde4e,0xd857,0xde4f,0xd857,0xde50, - 0xd857,0xde51,0xd857,0xde52,0xd857,0xde53,0xd857,0xde54,0xd857,0xde55, - 0xd857,0xde56,0xd857,0xde57,0xd857,0xde58,0xd857,0xde59,0xd857,0xde5a, - 0xd857,0xde5b,0xd857,0xde5c,0xd857,0xde5d,0xd857,0xde5e,0xd857,0xde5f, - 0xd857,0xde60,0xd857,0xde61,0xd857,0xde62,0xd857,0xde63,0xd857,0xde64, - 0xd857,0xde65,0xd857,0xde66,0xd857,0xde67,0xd857,0xde68,0xd857,0xde69, - 0xd857,0xde6a,0xd857,0xde6b,0xd857,0xde6c,0xd857,0xde6d,0xd857,0xde6e, - 0xd857,0xde6f,0xd857,0xde70,0xd857,0xde71,0xd857,0xde72,0xd857,0xde73, - 0xd857,0xde74,0xd857,0xde75,0xd857,0xde76,0xd857,0xde77,0xd857,0xde78, - 0xd857,0xde79,0xd857,0xde7a,0xd857,0xde7b,0xd857,0xde7c,0xd857,0xde7d, - 0xd857,0xde7e,0xd857,0xde7f,0xd857,0xde80,0xd857,0xde81,0xd857,0xde82, - 0xd857,0xde83,0xd857,0xde84,0xd857,0xde85,0xd857,0xde86,0xd857,0xde87, - 0xd857,0xde88,0xd857,0xde89,0xd857,0xde8a,0xd857,0xde8b,0xd857,0xde8c, - 0xd857,0xde8d,0xd857,0xde8e,0xd857,0xde8f,0xd857,0xde90,0xd857,0xde91, - 0xd857,0xde92,0xd857,0xde93,0xd857,0xde94,0xd857,0xde95,0xd857,0xde96, - 0xd857,0xde97,0xd857,0xde98,0xd857,0xde99,0xd857,0xde9a,0xd857,0xde9b, - 0xd857,0xde9c,0xd857,0xde9d,0xd857,0xde9e,0xd857,0xde9f,0xd857,0xdea0, - 0xd857,0xdea1,0xd857,0xdea2,0xd857,0xdea3,0xd857,0xdea4,0xd857,0xdea5, - 0xd857,0xdea6,0xd857,0xdea7,0xd857,0xdea8,0xd857,0xdea9,0xd857,0xdeaa, - 0xd857,0xdeab,0xd857,0xdeac,0xd857,0xdead,0xd857,0xdeae,0xd857,0xdeaf, - 0xd857,0xdeb0,0xd857,0xdeb1,0xd857,0xdeb2,0xd857,0xdeb3,0xd857,0xdeb4, - 0xd857,0xdeb5,0xd857,0xdeb6,0xd857,0xdeb7,0xd857,0xdeb8,0xd857,0xdeb9, - 0xd857,0xdeba,0xd857,0xdebb,0xd857,0xdebc,0xd857,0xdebd,0xd857,0xdebe, - 0xd857,0xdebf,0xd857,0xdec0,0xd857,0xdec1,0xd857,0xdec2,0xd857,0xdec3, - 0xd857,0xdec4,0xd857,0xdec5,0xd857,0xdec6,0xd857,0xdec7,0xd857,0xdec8, - 0xd857,0xdec9,0xd857,0xdeca,0xd857,0xdecb,0xd857,0xdecc,0xd857,0xdecd, - 0xd857,0xdece,0xd857,0xdecf,0xd857,0xded0,0xd857,0xded1,0xd857,0xded2, - 0xd857,0xded3,0xd857,0xded4,0xd857,0xded5,0xd857,0xded6,0xd857,0xded7, - 0xd857,0xded8,0xd857,0xded9,0xd857,0xdeda,0xd857,0xdedb,0xd857,0xdedc, - 0xd857,0xdedd,0xd857,0xdede,0xd857,0xdedf,0xd857,0xdee0,0xd857,0xdee1, - 0xd857,0xdee2,0xd857,0xdee3,0xd857,0xdee4,0xd857,0xdee5,0xd857,0xdee6, - 0xd857,0xdee7,0xd857,0xdee8,0xd857,0xdee9,0xd857,0xdeea,0xd857,0xdeeb, - 0xd857,0xdeec,0xd857,0xdeed,0xd857,0xdeee,0xd857,0xdeef,0xd857,0xdef0, - 0xd857,0xdef1,0xd857,0xdef2,0xd857,0xdef3,0xd857,0xdef4,0xd857,0xdef5, - 0xd857,0xdef6,0xd857,0xdef7,0xd857,0xdef8,0xd857,0xdef9,0xd857,0xdefa, - 0xd857,0xdefb,0xd857,0xdefc,0xd857,0xdefd,0xd857,0xdefe,0xd857,0xdeff, - 0xd857,0xdf00,0xd857,0xdf01,0xd857,0xdf02,0xd857,0xdf03,0xd857,0xdf04, - 0xd857,0xdf05,0xd857,0xdf06,0xd857,0xdf07,0xd857,0xdf08,0xd857,0xdf09, - 0xd857,0xdf0a,0xd857,0xdf0b,0xd857,0xdf0c,0xd857,0xdf0d,0xd857,0xdf0e, - 0xd857,0xdf0f,0xd857,0xdf10,0xd857,0xdf11,0xd857,0xdf12,0xd857,0xdf13, - 0xd857,0xdf14,0xd857,0xdf15,0xd857,0xdf16,0xd857,0xdf17,0xd857,0xdf18, - 0xd857,0xdf19,0xd857,0xdf1a,0xd857,0xdf1b,0xd857,0xdf1c,0xd857,0xdf1d, - 0xd857,0xdf1e,0xd857,0xdf1f,0xd857,0xdf20,0xd857,0xdf21,0xd857,0xdf22, - 0xd857,0xdf23,0xd857,0xdf24,0xd857,0xdf25,0xd857,0xdf26,0xd857,0xdf27, - 0xd857,0xdf28,0xd857,0xdf29,0xd857,0xdf2a,0xd857,0xdf2b,0xd857,0xdf2c, - 0xd857,0xdf2d,0xd857,0xdf2e,0xd857,0xdf2f,0xd857,0xdf30,0xd857,0xdf31, - 0xd857,0xdf32,0xd857,0xdf33,0xd857,0xdf34,0xd857,0xdf35,0xd857,0xdf36, - 0xd857,0xdf37,0xd857,0xdf38,0xd857,0xdf39,0xd857,0xdf3a,0xd857,0xdf3b, - 0xd857,0xdf3c,0xd857,0xdf3d,0xd857,0xdf3e,0xd857,0xdf3f,0xd857,0xdf40, - 0xd857,0xdf41,0xd857,0xdf42,0xd857,0xdf43,0xd857,0xdf44,0xd857,0xdf45, - 0xd857,0xdf46,0xd857,0xdf47,0xd857,0xdf48,0xd857,0xdf49,0xd857,0xdf4a, - 0xd857,0xdf4b,0xd857,0xdf4c,0xd857,0xdf4d,0xd857,0xdf4e,0xd857,0xdf4f, - 0xd857,0xdf50,0xd857,0xdf51,0xd857,0xdf52,0xd857,0xdf53,0xd857,0xdf54, - 0xd857,0xdf55,0xd857,0xdf56,0xd857,0xdf57,0xd857,0xdf58,0xd857,0xdf59, - 0xd857,0xdf5a,0xd857,0xdf5b,0xd857,0xdf5c,0xd857,0xdf5d,0xd857,0xdf5e, - 0xd857,0xdf5f,0xd857,0xdf60,0xd857,0xdf61,0xd857,0xdf62,0xd857,0xdf63, - 0xd857,0xdf64,0xd857,0xdf65,0xd857,0xdf66,0xd857,0xdf67,0xd857,0xdf68, - 0xd857,0xdf69,0xd857,0xdf6a,0xd857,0xdf6b,0xd857,0xdf6c,0xd857,0xdf6d, - 0xd857,0xdf6e,0xd857,0xdf6f,0xd857,0xdf70,0xd857,0xdf71,0xd857,0xdf72, - 0xd857,0xdf73,0xd857,0xdf74,0xd857,0xdf75,0xd857,0xdf76,0xd857,0xdf77, - 0xd857,0xdf78,0xd857,0xdf79,0xd857,0xdf7a,0xd857,0xdf7b,0xd857,0xdf7c, - 0xd857,0xdf7d,0xd857,0xdf7e,0xd857,0xdf7f,0xd857,0xdf80,0xd857,0xdf81, - 0xd857,0xdf82,0xd857,0xdf83,0xd857,0xdf84,0xd857,0xdf85,0xd857,0xdf86, - 0xd857,0xdf87,0xd857,0xdf88,0xd857,0xdf89,0xd857,0xdf8a,0xd857,0xdf8b, - 0xd857,0xdf8c,0xd857,0xdf8d,0xd857,0xdf8e,0xd857,0xdf8f,0xd857,0xdf90, - 0xd857,0xdf91,0xd857,0xdf92,0xd857,0xdf93,0xd857,0xdf94,0xd857,0xdf95, - 0xd857,0xdf96,0xd857,0xdf97,0xd857,0xdf98,0xd857,0xdf99,0xd857,0xdf9a, - 0xd857,0xdf9b,0xd857,0xdf9c,0xd857,0xdf9d,0xd857,0xdf9e,0xd857,0xdf9f, - 0xd857,0xdfa0,0xd857,0xdfa1,0xd857,0xdfa2,0xd857,0xdfa3,0xd857,0xdfa4, - 0xd857,0xdfa5,0xd857,0xdfa6,0xd857,0xdfa7,0xd857,0xdfa8,0xd857,0xdfa9, - 0xd857,0xdfaa,0xd857,0xdfab,0xd857,0xdfac,0xd857,0xdfad,0xd857,0xdfae, - 0xd857,0xdfaf,0xd857,0xdfb0,0xd857,0xdfb1,0xd857,0xdfb2,0xd857,0xdfb3, - 0xd857,0xdfb4,0xd857,0xdfb5,0xd857,0xdfb6,0xd857,0xdfb7,0xd857,0xdfb8, - 0xd857,0xdfb9,0xd857,0xdfba,0xd857,0xdfbb,0xd857,0xdfbc,0xd857,0xdfbd, - 0xd857,0xdfbe,0xd857,0xdfbf,0xd857,0xdfc0,0xd857,0xdfc1,0xd857,0xdfc2, - 0xd857,0xdfc3,0xd857,0xdfc4,0xd857,0xdfc5,0xd857,0xdfc6,0xd857,0xdfc7, - 0xd857,0xdfc8,0xd857,0xdfc9,0xd857,0xdfca,0xd857,0xdfcb,0xd857,0xdfcc, - 0xd857,0xdfcd,0xd857,0xdfce,0xd857,0xdfcf,0xd857,0xdfd0,0xd857,0xdfd1, - 0xd857,0xdfd2,0xd857,0xdfd3,0xd857,0xdfd4,0xd857,0xdfd5,0xd857,0xdfd6, - 0xd857,0xdfd7,0xd857,0xdfd8,0xd857,0xdfd9,0xd857,0xdfda,0xd857,0xdfdb, - 0xd857,0xdfdc,0xd857,0xdfdd,0xd857,0xdfde,0xd857,0xdfdf,0xd857,0xdfe0, - 0xd857,0xdfe1,0xd857,0xdfe2,0xd857,0xdfe3,0xd857,0xdfe4,0xd857,0xdfe5, - 0xd857,0xdfe6,0xd857,0xdfe7,0xd857,0xdfe8,0xd857,0xdfe9,0xd857,0xdfea, - 0xd857,0xdfeb,0xd857,0xdfec,0xd857,0xdfed,0xd857,0xdfee,0xd857,0xdfef, - 0xd857,0xdff0,0xd857,0xdff1,0xd857,0xdff2,0xd857,0xdff3,0xd857,0xdff4, - 0xd857,0xdff5,0xd857,0xdff6,0xd857,0xdff7,0xd857,0xdff8,0xd857,0xdff9, - 0xd857,0xdffa,0xd857,0xdffb,0xd857,0xdffc,0xd857,0xdffd,0xd857,0xdffe, - 0xd857,0xdfff,0xd858,0xdc00,0xd858,0xdc01,0xd858,0xdc02,0xd858,0xdc03, - 0xd858,0xdc04,0xd858,0xdc05,0xd858,0xdc06,0xd858,0xdc07,0xd858,0xdc08, - 0xd858,0xdc09,0xd858,0xdc0a,0xd858,0xdc0b,0xd858,0xdc0c,0xd858,0xdc0d, - 0xd858,0xdc0e,0xd858,0xdc0f,0xd858,0xdc10,0xd858,0xdc11,0xd858,0xdc12, - 0xd858,0xdc13,0xd858,0xdc14,0xd858,0xdc15,0xd858,0xdc16,0xd858,0xdc17, - 0xd858,0xdc18,0xd858,0xdc19,0xd858,0xdc1a,0xd858,0xdc1b,0xd858,0xdc1c, - 0xd858,0xdc1d,0xd858,0xdc1e,0xd858,0xdc1f,0xd858,0xdc20,0xd858,0xdc21, - 0xd858,0xdc22,0xd858,0xdc23,0xd858,0xdc24,0xd858,0xdc25,0xd858,0xdc26, - 0xd858,0xdc27,0xd858,0xdc28,0xd858,0xdc29,0xd858,0xdc2a,0xd858,0xdc2b, - 0xd858,0xdc2c,0xd858,0xdc2d,0xd858,0xdc2e,0xd858,0xdc2f,0xd858,0xdc30, - 0xd858,0xdc31,0xd858,0xdc32,0xd858,0xdc33,0xd858,0xdc34,0xd858,0xdc35, - 0xd858,0xdc36,0xd858,0xdc37,0xd858,0xdc38,0xd858,0xdc39,0xd858,0xdc3a, - 0xd858,0xdc3b,0xd858,0xdc3c,0xd858,0xdc3d,0xd858,0xdc3e,0xd858,0xdc3f, - 0xd858,0xdc40,0xd858,0xdc41,0xd858,0xdc42,0xd858,0xdc43,0xd858,0xdc44, - 0xd858,0xdc45,0xd858,0xdc46,0xd858,0xdc47,0xd858,0xdc48,0xd858,0xdc49, - 0xd858,0xdc4a,0xd858,0xdc4b,0xd858,0xdc4c,0xd858,0xdc4d,0xd858,0xdc4e, - 0xd858,0xdc4f,0xd858,0xdc50,0xd858,0xdc51,0xd858,0xdc52,0xd858,0xdc53, - 0xd858,0xdc54,0xd858,0xdc55,0xd858,0xdc56,0xd858,0xdc57,0xd858,0xdc58, - 0xd858,0xdc59,0xd858,0xdc5a,0xd858,0xdc5b,0xd858,0xdc5c,0xd858,0xdc5d, - 0xd858,0xdc5e,0xd858,0xdc5f,0xd858,0xdc60,0xd858,0xdc61,0xd858,0xdc62, - 0xd858,0xdc63,0xd858,0xdc64,0xd858,0xdc65,0xd858,0xdc66,0xd858,0xdc67, - 0xd858,0xdc68,0xd858,0xdc69,0xd858,0xdc6a,0xd858,0xdc6b,0xd858,0xdc6c, - 0xd858,0xdc6d,0xd858,0xdc6e,0xd858,0xdc6f,0xd858,0xdc70,0xd858,0xdc71, - 0xd858,0xdc72,0xd858,0xdc73,0xd858,0xdc74,0xd858,0xdc75,0xd858,0xdc76, - 0xd858,0xdc77,0xd858,0xdc78,0xd858,0xdc79,0xd858,0xdc7a,0xd858,0xdc7b, - 0xd858,0xdc7c,0xd858,0xdc7d,0xd858,0xdc7e,0xd858,0xdc7f,0xd858,0xdc80, - 0xd858,0xdc81,0xd858,0xdc82,0xd858,0xdc83,0xd858,0xdc84,0xd858,0xdc85, - 0xd858,0xdc86,0xd858,0xdc87,0xd858,0xdc88,0xd858,0xdc89,0xd858,0xdc8a, - 0xd858,0xdc8b,0xd858,0xdc8c,0xd858,0xdc8d,0xd858,0xdc8e,0xd858,0xdc8f, - 0xd858,0xdc90,0xd858,0xdc91,0xd858,0xdc92,0xd858,0xdc93,0xd858,0xdc94, - 0xd858,0xdc95,0xd858,0xdc96,0xd858,0xdc97,0xd858,0xdc98,0xd858,0xdc99, - 0xd858,0xdc9a,0xd858,0xdc9b,0xd858,0xdc9c,0xd858,0xdc9d,0xd858,0xdc9e, - 0xd858,0xdc9f,0xd858,0xdca0,0xd858,0xdca1,0xd858,0xdca2,0xd858,0xdca3, - 0xd858,0xdca4,0xd858,0xdca5,0xd858,0xdca6,0xd858,0xdca7,0xd858,0xdca8, - 0xd858,0xdca9,0xd858,0xdcaa,0xd858,0xdcab,0xd858,0xdcac,0xd858,0xdcad, - 0xd858,0xdcae,0xd858,0xdcaf,0xd858,0xdcb0,0xd858,0xdcb1,0xd858,0xdcb2, - 0xd858,0xdcb3,0xd858,0xdcb4,0xd858,0xdcb5,0xd858,0xdcb6,0xd858,0xdcb7, - 0xd858,0xdcb8,0xd858,0xdcb9,0xd858,0xdcba,0xd858,0xdcbb,0xd858,0xdcbc, - 0xd858,0xdcbd,0xd858,0xdcbe,0xd858,0xdcbf,0xd858,0xdcc0,0xd858,0xdcc1, - 0xd858,0xdcc2,0xd858,0xdcc3,0xd858,0xdcc4,0xd858,0xdcc5,0xd858,0xdcc6, - 0xd858,0xdcc7,0xd858,0xdcc8,0xd858,0xdcc9,0xd858,0xdcca,0xd858,0xdccb, - 0xd858,0xdccc,0xd858,0xdccd,0xd858,0xdcce,0xd858,0xdccf,0xd858,0xdcd0, - 0xd858,0xdcd1,0xd858,0xdcd2,0xd858,0xdcd3,0xd858,0xdcd4,0xd858,0xdcd5, - 0xd858,0xdcd6,0xd858,0xdcd7,0xd858,0xdcd8,0xd858,0xdcd9,0xd858,0xdcda, - 0xd858,0xdcdb,0xd858,0xdcdc,0xd858,0xdcdd,0xd858,0xdcde,0xd858,0xdcdf, - 0xd858,0xdce0,0xd858,0xdce1,0xd858,0xdce2,0xd858,0xdce3,0xd858,0xdce4, - 0xd858,0xdce5,0xd858,0xdce6,0xd858,0xdce7,0xd858,0xdce8,0xd858,0xdce9, - 0xd858,0xdcea,0xd858,0xdceb,0xd858,0xdcec,0xd858,0xdced,0xd858,0xdcee, - 0xd858,0xdcef,0xd858,0xdcf0,0xd858,0xdcf1,0xd858,0xdcf2,0xd858,0xdcf3, - 0xd858,0xdcf4,0xd858,0xdcf5,0xd858,0xdcf6,0xd858,0xdcf7,0xd858,0xdcf8, - 0xd858,0xdcf9,0xd858,0xdcfa,0xd858,0xdcfb,0xd858,0xdcfc,0xd858,0xdcfd, - 0xd858,0xdcfe,0xd858,0xdcff,0xd858,0xdd00,0xd858,0xdd01,0xd858,0xdd02, - 0xd858,0xdd03,0xd858,0xdd04,0xd858,0xdd05,0xd858,0xdd06,0xd858,0xdd07, - 0xd858,0xdd08,0xd858,0xdd09,0xd858,0xdd0a,0xd858,0xdd0b,0xd858,0xdd0c, - 0xd858,0xdd0d,0xd858,0xdd0e,0xd858,0xdd0f,0xd858,0xdd10,0xd858,0xdd11, - 0xd858,0xdd12,0xd858,0xdd13,0xd858,0xdd14,0xd858,0xdd15,0xd858,0xdd16, - 0xd858,0xdd17,0xd858,0xdd18,0xd858,0xdd19,0xd858,0xdd1a,0xd858,0xdd1b, - 0xd858,0xdd1c,0xd858,0xdd1d,0xd858,0xdd1e,0xd858,0xdd1f,0xd858,0xdd20, - 0xd858,0xdd21,0xd858,0xdd22,0xd858,0xdd23,0xd858,0xdd24,0xd858,0xdd25, - 0xd858,0xdd26,0xd858,0xdd27,0xd858,0xdd28,0xd858,0xdd29,0xd858,0xdd2a, - 0xd858,0xdd2b,0xd858,0xdd2c,0xd858,0xdd2d,0xd858,0xdd2e,0xd858,0xdd2f, - 0xd858,0xdd30,0xd858,0xdd31,0xd858,0xdd32,0xd858,0xdd33,0xd858,0xdd34, - 0xd858,0xdd35,0xd858,0xdd36,0xd858,0xdd37,0xd858,0xdd38,0xd858,0xdd39, - 0xd858,0xdd3a,0xd858,0xdd3b,0xd858,0xdd3c,0xd858,0xdd3d,0xd858,0xdd3e, - 0xd858,0xdd3f,0xd858,0xdd40,0xd858,0xdd41,0xd858,0xdd42,0xd858,0xdd43, - 0xd858,0xdd44,0xd858,0xdd45,0xd858,0xdd46,0xd858,0xdd47,0xd858,0xdd48, - 0xd858,0xdd49,0xd858,0xdd4a,0xd858,0xdd4b,0xd858,0xdd4c,0xd858,0xdd4d, - 0xd858,0xdd4e,0xd858,0xdd4f,0xd858,0xdd50,0xd858,0xdd51,0xd858,0xdd52, - 0xd858,0xdd53,0xd858,0xdd54,0xd858,0xdd55,0xd858,0xdd56,0xd858,0xdd57, - 0xd858,0xdd58,0xd858,0xdd59,0xd858,0xdd5a,0xd858,0xdd5b,0xd858,0xdd5c, - 0xd858,0xdd5d,0xd858,0xdd5e,0xd858,0xdd5f,0xd858,0xdd60,0xd858,0xdd61, - 0xd858,0xdd62,0xd858,0xdd63,0xd858,0xdd64,0xd858,0xdd65,0xd858,0xdd66, - 0xd858,0xdd67,0xd858,0xdd68,0xd858,0xdd69,0xd858,0xdd6a,0xd858,0xdd6b, - 0xd858,0xdd6c,0xd858,0xdd6d,0xd858,0xdd6e,0xd858,0xdd6f,0xd858,0xdd70, - 0xd858,0xdd71,0xd858,0xdd72,0xd858,0xdd73,0xd858,0xdd74,0xd858,0xdd75, - 0xd858,0xdd76,0xd858,0xdd77,0xd858,0xdd78,0xd858,0xdd79,0xd858,0xdd7a, - 0xd858,0xdd7b,0xd858,0xdd7c,0xd858,0xdd7d,0xd858,0xdd7e,0xd858,0xdd7f, - 0xd858,0xdd80,0xd858,0xdd81,0xd858,0xdd82,0xd858,0xdd83,0xd858,0xdd84, - 0xd858,0xdd85,0xd858,0xdd86,0xd858,0xdd87,0xd858,0xdd88,0xd858,0xdd89, - 0xd858,0xdd8a,0xd858,0xdd8b,0xd858,0xdd8c,0xd858,0xdd8d,0xd858,0xdd8e, - 0xd858,0xdd8f,0xd858,0xdd90,0xd858,0xdd91,0xd858,0xdd92,0xd858,0xdd93, - 0xd858,0xdd94,0xd858,0xdd95,0xd858,0xdd96,0xd858,0xdd97,0xd858,0xdd98, - 0xd858,0xdd99,0xd858,0xdd9a,0xd858,0xdd9b,0xd858,0xdd9c,0xd858,0xdd9d, - 0xd858,0xdd9e,0xd858,0xdd9f,0xd858,0xdda0,0xd858,0xdda1,0xd858,0xdda2, - 0xd858,0xdda3,0xd858,0xdda4,0xd858,0xdda5,0xd858,0xdda6,0xd858,0xdda7, - 0xd858,0xdda8,0xd858,0xdda9,0xd858,0xddaa,0xd858,0xddab,0xd858,0xddac, - 0xd858,0xddad,0xd858,0xddae,0xd858,0xddaf,0xd858,0xddb0,0xd858,0xddb1, - 0xd858,0xddb2,0xd858,0xddb3,0xd858,0xddb4,0xd858,0xddb5,0xd858,0xddb6, - 0xd858,0xddb7,0xd858,0xddb8,0xd858,0xddb9,0xd858,0xddba,0xd858,0xddbb, - 0xd858,0xddbc,0xd858,0xddbd,0xd858,0xddbe,0xd858,0xddbf,0xd858,0xddc0, - 0xd858,0xddc1,0xd858,0xddc2,0xd858,0xddc3,0xd858,0xddc4,0xd858,0xddc5, - 0xd858,0xddc6,0xd858,0xddc7,0xd858,0xddc8,0xd858,0xddc9,0xd858,0xddca, - 0xd858,0xddcb,0xd858,0xddcc,0xd858,0xddcd,0xd858,0xddce,0xd858,0xddcf, - 0xd858,0xddd0,0xd858,0xddd1,0xd858,0xddd2,0xd858,0xddd3,0xd858,0xddd4, - 0xd858,0xddd5,0xd858,0xddd6,0xd858,0xddd7,0xd858,0xddd8,0xd858,0xddd9, - 0xd858,0xddda,0xd858,0xdddb,0xd858,0xdddc,0xd858,0xdddd,0xd858,0xddde, - 0xd858,0xdddf,0xd858,0xdde0,0xd858,0xdde1,0xd858,0xdde2,0xd858,0xdde3, - 0xd858,0xdde4,0xd858,0xdde5,0xd858,0xdde6,0xd858,0xdde7,0xd858,0xdde8, - 0xd858,0xdde9,0xd858,0xddea,0xd858,0xddeb,0xd858,0xddec,0xd858,0xdded, - 0xd858,0xddee,0xd858,0xddef,0xd858,0xddf0,0xd858,0xddf1,0xd858,0xddf2, - 0xd858,0xddf3,0xd858,0xddf4,0xd858,0xddf5,0xd858,0xddf6,0xd858,0xddf7, - 0xd858,0xddf8,0xd858,0xddf9,0xd858,0xddfa,0xd858,0xddfb,0xd858,0xddfc, - 0xd858,0xddfd,0xd858,0xddfe,0xd858,0xddff,0xd858,0xde00,0xd858,0xde01, - 0xd858,0xde02,0xd858,0xde03,0xd858,0xde04,0xd858,0xde05,0xd858,0xde06, - 0xd858,0xde07,0xd858,0xde08,0xd858,0xde09,0xd858,0xde0a,0xd858,0xde0b, - 0xd858,0xde0c,0xd858,0xde0d,0xd858,0xde0e,0xd858,0xde0f,0xd858,0xde10, - 0xd858,0xde11,0xd858,0xde12,0xd858,0xde13,0xd858,0xde14,0xd858,0xde15, - 0xd858,0xde16,0xd858,0xde17,0xd858,0xde18,0xd858,0xde19,0xd858,0xde1a, - 0xd858,0xde1b,0xd858,0xde1c,0xd858,0xde1d,0xd858,0xde1e,0xd858,0xde1f, - 0xd858,0xde20,0xd858,0xde21,0xd858,0xde22,0xd858,0xde23,0xd858,0xde24, - 0xd858,0xde25,0xd858,0xde26,0xd858,0xde27,0xd858,0xde28,0xd858,0xde29, - 0xd858,0xde2a,0xd858,0xde2b,0xd858,0xde2c,0xd858,0xde2d,0xd858,0xde2e, - 0xd858,0xde2f,0xd858,0xde30,0xd858,0xde31,0xd858,0xde32,0xd858,0xde33, - 0xd858,0xde34,0xd858,0xde35,0xd858,0xde36,0xd858,0xde37,0xd858,0xde38, - 0xd858,0xde39,0xd858,0xde3a,0xd858,0xde3b,0xd858,0xde3c,0xd858,0xde3d, - 0xd858,0xde3e,0xd858,0xde3f,0xd858,0xde40,0xd858,0xde41,0xd858,0xde42, - 0xd858,0xde43,0xd858,0xde44,0xd858,0xde45,0xd858,0xde46,0xd858,0xde47, - 0xd858,0xde48,0xd858,0xde49,0xd858,0xde4a,0xd858,0xde4b,0xd858,0xde4c, - 0xd858,0xde4d,0xd858,0xde4e,0xd858,0xde4f,0xd858,0xde50,0xd858,0xde51, - 0xd858,0xde52,0xd858,0xde53,0xd858,0xde54,0xd858,0xde55,0xd858,0xde56, - 0xd858,0xde57,0xd858,0xde58,0xd858,0xde59,0xd858,0xde5a,0xd858,0xde5b, - 0xd858,0xde5c,0xd858,0xde5d,0xd858,0xde5e,0xd858,0xde5f,0xd858,0xde60, - 0xd858,0xde61,0xd858,0xde62,0xd858,0xde63,0xd858,0xde64,0xd858,0xde65, - 0xd858,0xde66,0xd858,0xde67,0xd858,0xde68,0xd858,0xde69,0xd858,0xde6a, - 0xd858,0xde6b,0xd858,0xde6c,0xd858,0xde6d,0xd858,0xde6e,0xd858,0xde6f, - 0xd858,0xde70,0xd858,0xde71,0xd858,0xde72,0xd858,0xde73,0xd858,0xde74, - 0xd858,0xde75,0xd858,0xde76,0xd858,0xde77,0xd858,0xde78,0xd858,0xde79, - 0xd858,0xde7a,0xd858,0xde7b,0xd858,0xde7c,0xd858,0xde7d,0xd858,0xde7e, - 0xd858,0xde7f,0xd858,0xde80,0xd858,0xde81,0xd858,0xde82,0xd858,0xde83, - 0xd858,0xde84,0xd858,0xde85,0xd858,0xde86,0xd858,0xde87,0xd858,0xde88, - 0xd858,0xde89,0xd858,0xde8a,0xd858,0xde8b,0xd858,0xde8c,0xd858,0xde8d, - 0xd858,0xde8e,0xd858,0xde8f,0xd858,0xde90,0xd858,0xde91,0xd858,0xde92, - 0xd858,0xde93,0xd858,0xde94,0xd858,0xde95,0xd858,0xde96,0xd858,0xde97, - 0xd858,0xde98,0xd858,0xde99,0xd858,0xde9a,0xd858,0xde9b,0xd858,0xde9c, - 0xd858,0xde9d,0xd858,0xde9e,0xd858,0xde9f,0xd858,0xdea0,0xd858,0xdea1, - 0xd858,0xdea2,0xd858,0xdea3,0xd858,0xdea4,0xd858,0xdea5,0xd858,0xdea6, - 0xd858,0xdea7,0xd858,0xdea8,0xd858,0xdea9,0xd858,0xdeaa,0xd858,0xdeab, - 0xd858,0xdeac,0xd858,0xdead,0xd858,0xdeae,0xd858,0xdeaf,0xd858,0xdeb0, - 0xd858,0xdeb1,0xd858,0xdeb2,0xd858,0xdeb3,0xd858,0xdeb4,0xd858,0xdeb5, - 0xd858,0xdeb6,0xd858,0xdeb7,0xd858,0xdeb8,0xd858,0xdeb9,0xd858,0xdeba, - 0xd858,0xdebb,0xd858,0xdebc,0xd858,0xdebd,0xd858,0xdebe,0xd858,0xdebf, - 0xd858,0xdec0,0xd858,0xdec1,0xd858,0xdec2,0xd858,0xdec3,0xd858,0xdec4, - 0xd858,0xdec5,0xd858,0xdec6,0xd858,0xdec7,0xd858,0xdec8,0xd858,0xdec9, - 0xd858,0xdeca,0xd858,0xdecb,0xd858,0xdecc,0xd858,0xdecd,0xd858,0xdece, - 0xd858,0xdecf,0xd858,0xded0,0xd858,0xded1,0xd858,0xded2,0xd858,0xded3, - 0xd858,0xded4,0xd858,0xded5,0xd858,0xded6,0xd858,0xded7,0xd858,0xded8, - 0xd858,0xded9,0xd858,0xdeda,0xd858,0xdedb,0xd858,0xdedc,0xd858,0xdedd, - 0xd858,0xdede,0xd858,0xdedf,0xd858,0xdee0,0xd858,0xdee1,0xd858,0xdee2, - 0xd858,0xdee3,0xd858,0xdee4,0xd858,0xdee5,0xd858,0xdee6,0xd858,0xdee7, - 0xd858,0xdee8,0xd858,0xdee9,0xd858,0xdeea,0xd858,0xdeeb,0xd858,0xdeec, - 0xd858,0xdeed,0xd858,0xdeee,0xd858,0xdeef,0xd858,0xdef0,0xd858,0xdef1, - 0xd858,0xdef2,0xd858,0xdef3,0xd858,0xdef4,0xd858,0xdef5,0xd858,0xdef6, - 0xd858,0xdef7,0xd858,0xdef8,0xd858,0xdef9,0xd858,0xdefa,0xd858,0xdefb, - 0xd858,0xdefc,0xd858,0xdefd,0xd858,0xdefe,0xd858,0xdeff,0xd858,0xdf00, - 0xd858,0xdf01,0xd858,0xdf02,0xd858,0xdf03,0xd858,0xdf04,0xd858,0xdf05, - 0xd858,0xdf06,0xd858,0xdf07,0xd858,0xdf08,0xd858,0xdf09,0xd858,0xdf0a, - 0xd858,0xdf0b,0xd858,0xdf0c,0xd858,0xdf0d,0xd858,0xdf0e,0xd858,0xdf0f, - 0xd858,0xdf10,0xd858,0xdf11,0xd858,0xdf12,0xd858,0xdf13,0xd858,0xdf14, - 0xd858,0xdf15,0xd858,0xdf16,0xd858,0xdf17,0xd858,0xdf18,0xd858,0xdf19, - 0xd858,0xdf1a,0xd858,0xdf1b,0xd858,0xdf1c,0xd858,0xdf1d,0xd858,0xdf1e, - 0xd858,0xdf1f,0xd858,0xdf20,0xd858,0xdf21,0xd858,0xdf22,0xd858,0xdf23, - 0xd858,0xdf24,0xd858,0xdf25,0xd858,0xdf26,0xd858,0xdf27,0xd858,0xdf28, - 0xd858,0xdf29,0xd858,0xdf2a,0xd858,0xdf2b,0xd858,0xdf2c,0xd858,0xdf2d, - 0xd858,0xdf2e,0xd858,0xdf2f,0xd858,0xdf30,0xd858,0xdf31,0xd858,0xdf32, - 0xd858,0xdf33,0xd858,0xdf34,0xd858,0xdf35,0xd858,0xdf36,0xd858,0xdf37, - 0xd858,0xdf38,0xd858,0xdf39,0xd858,0xdf3a,0xd858,0xdf3b,0xd858,0xdf3c, - 0xd858,0xdf3d,0xd858,0xdf3e,0xd858,0xdf3f,0xd858,0xdf40,0xd858,0xdf41, - 0xd858,0xdf42,0xd858,0xdf43,0xd858,0xdf44,0xd858,0xdf45,0xd858,0xdf46, - 0xd858,0xdf47,0xd858,0xdf48,0xd858,0xdf49,0xd858,0xdf4a,0xd858,0xdf4b, - 0xd858,0xdf4c,0xd858,0xdf4d,0xd858,0xdf4e,0xd858,0xdf4f,0xd858,0xdf50, - 0xd858,0xdf51,0xd858,0xdf52,0xd858,0xdf53,0xd858,0xdf54,0xd858,0xdf55, - 0xd858,0xdf56,0xd858,0xdf57,0xd858,0xdf58,0xd858,0xdf59,0xd858,0xdf5a, - 0xd858,0xdf5b,0xd858,0xdf5c,0xd858,0xdf5d,0xd858,0xdf5e,0xd858,0xdf5f, - 0xd858,0xdf60,0xd858,0xdf61,0xd858,0xdf62,0xd858,0xdf63,0xd858,0xdf64, - 0xd858,0xdf65,0xd858,0xdf66,0xd858,0xdf67,0xd858,0xdf68,0xd858,0xdf69, - 0xd858,0xdf6a,0xd858,0xdf6b,0xd858,0xdf6c,0xd858,0xdf6d,0xd858,0xdf6e, - 0xd858,0xdf6f,0xd858,0xdf70,0xd858,0xdf71,0xd858,0xdf72,0xd858,0xdf73, - 0xd858,0xdf74,0xd858,0xdf75,0xd858,0xdf76,0xd858,0xdf77,0xd858,0xdf78, - 0xd858,0xdf79,0xd858,0xdf7a,0xd858,0xdf7b,0xd858,0xdf7c,0xd858,0xdf7d, - 0xd858,0xdf7e,0xd858,0xdf7f,0xd858,0xdf80,0xd858,0xdf81,0xd858,0xdf82, - 0xd858,0xdf83,0xd858,0xdf84,0xd858,0xdf85,0xd858,0xdf86,0xd858,0xdf87, - 0xd858,0xdf88,0xd858,0xdf89,0xd858,0xdf8a,0xd858,0xdf8b,0xd858,0xdf8c, - 0xd858,0xdf8d,0xd858,0xdf8e,0xd858,0xdf8f,0xd858,0xdf90,0xd858,0xdf91, - 0xd858,0xdf92,0xd858,0xdf93,0xd858,0xdf94,0xd858,0xdf95,0xd858,0xdf96, - 0xd858,0xdf97,0xd858,0xdf98,0xd858,0xdf99,0xd858,0xdf9a,0xd858,0xdf9b, - 0xd858,0xdf9c,0xd858,0xdf9d,0xd858,0xdf9e,0xd858,0xdf9f,0xd858,0xdfa0, - 0xd858,0xdfa1,0xd858,0xdfa2,0xd858,0xdfa3,0xd858,0xdfa4,0xd858,0xdfa5, - 0xd858,0xdfa6,0xd858,0xdfa7,0xd858,0xdfa8,0xd858,0xdfa9,0xd858,0xdfaa, - 0xd858,0xdfab,0xd858,0xdfac,0xd858,0xdfad,0xd858,0xdfae,0xd858,0xdfaf, - 0xd858,0xdfb0,0xd858,0xdfb1,0xd858,0xdfb2,0xd858,0xdfb3,0xd858,0xdfb4, - 0xd858,0xdfb5,0xd858,0xdfb6,0xd858,0xdfb7,0xd858,0xdfb8,0xd858,0xdfb9, - 0xd858,0xdfba,0xd858,0xdfbb,0xd858,0xdfbc,0xd858,0xdfbd,0xd858,0xdfbe, - 0xd858,0xdfbf,0xd858,0xdfc0,0xd858,0xdfc1,0xd858,0xdfc2,0xd858,0xdfc3, - 0xd858,0xdfc4,0xd858,0xdfc5,0xd858,0xdfc6,0xd858,0xdfc7,0xd858,0xdfc8, - 0xd858,0xdfc9,0xd858,0xdfca,0xd858,0xdfcb,0xd858,0xdfcc,0xd858,0xdfcd, - 0xd858,0xdfce,0xd858,0xdfcf,0xd858,0xdfd0,0xd858,0xdfd1,0xd858,0xdfd2, - 0xd858,0xdfd3,0xd858,0xdfd4,0xd858,0xdfd5,0xd858,0xdfd6,0xd858,0xdfd7, - 0xd858,0xdfd8,0xd858,0xdfd9,0xd858,0xdfda,0xd858,0xdfdb,0xd858,0xdfdc, - 0xd858,0xdfdd,0xd858,0xdfde,0xd858,0xdfdf,0xd858,0xdfe0,0xd858,0xdfe1, - 0xd858,0xdfe2,0xd858,0xdfe3,0xd858,0xdfe4,0xd858,0xdfe5,0xd858,0xdfe6, - 0xd858,0xdfe7,0xd858,0xdfe8,0xd858,0xdfe9,0xd858,0xdfea,0xd858,0xdfeb, - 0xd858,0xdfec,0xd858,0xdfed,0xd858,0xdfee,0xd858,0xdfef,0xd858,0xdff0, - 0xd858,0xdff1,0xd858,0xdff2,0xd858,0xdff3,0xd858,0xdff4,0xd858,0xdff5, - 0xd858,0xdff6,0xd858,0xdff7,0xd858,0xdff8,0xd858,0xdff9,0xd858,0xdffa, - 0xd858,0xdffb,0xd858,0xdffc,0xd858,0xdffd,0xd858,0xdffe,0xd858,0xdfff, - 0xd859,0xdc00,0xd859,0xdc01,0xd859,0xdc02,0xd859,0xdc03,0xd859,0xdc04, - 0xd859,0xdc05,0xd859,0xdc06,0xd859,0xdc07,0xd859,0xdc08,0xd859,0xdc09, - 0xd859,0xdc0a,0xd859,0xdc0b,0xd859,0xdc0c,0xd859,0xdc0d,0xd859,0xdc0e, - 0xd859,0xdc0f,0xd859,0xdc10,0xd859,0xdc11,0xd859,0xdc12,0xd859,0xdc13, - 0xd859,0xdc14,0xd859,0xdc15,0xd859,0xdc16,0xd859,0xdc17,0xd859,0xdc18, - 0xd859,0xdc19,0xd859,0xdc1a,0xd859,0xdc1b,0xd859,0xdc1c,0xd859,0xdc1d, - 0xd859,0xdc1e,0xd859,0xdc1f,0xd859,0xdc20,0xd859,0xdc21,0xd859,0xdc22, - 0xd859,0xdc23,0xd859,0xdc24,0xd859,0xdc25,0xd859,0xdc26,0xd859,0xdc27, - 0xd859,0xdc28,0xd859,0xdc29,0xd859,0xdc2a,0xd859,0xdc2b,0xd859,0xdc2c, - 0xd859,0xdc2d,0xd859,0xdc2e,0xd859,0xdc2f,0xd859,0xdc30,0xd859,0xdc31, - 0xd859,0xdc32,0xd859,0xdc33,0xd859,0xdc34,0xd859,0xdc35,0xd859,0xdc36, - 0xd859,0xdc37,0xd859,0xdc38,0xd859,0xdc39,0xd859,0xdc3a,0xd859,0xdc3b, - 0xd859,0xdc3c,0xd859,0xdc3d,0xd859,0xdc3e,0xd859,0xdc3f,0xd859,0xdc40, - 0xd859,0xdc41,0xd859,0xdc42,0xd859,0xdc43,0xd859,0xdc44,0xd859,0xdc45, - 0xd859,0xdc46,0xd859,0xdc47,0xd859,0xdc48,0xd859,0xdc49,0xd859,0xdc4a, - 0xd859,0xdc4b,0xd859,0xdc4c,0xd859,0xdc4d,0xd859,0xdc4e,0xd859,0xdc4f, - 0xd859,0xdc50,0xd859,0xdc51,0xd859,0xdc52,0xd859,0xdc53,0xd859,0xdc54, - 0xd859,0xdc55,0xd859,0xdc56,0xd859,0xdc57,0xd859,0xdc58,0xd859,0xdc59, - 0xd859,0xdc5a,0xd859,0xdc5b,0xd859,0xdc5c,0xd859,0xdc5d,0xd859,0xdc5e, - 0xd859,0xdc5f,0xd859,0xdc60,0xd859,0xdc61,0xd859,0xdc62,0xd859,0xdc63, - 0xd859,0xdc64,0xd859,0xdc65,0xd859,0xdc66,0xd859,0xdc67,0xd859,0xdc68, - 0xd859,0xdc69,0xd859,0xdc6a,0xd859,0xdc6b,0xd859,0xdc6c,0xd859,0xdc6d, - 0xd859,0xdc6e,0xd859,0xdc6f,0xd859,0xdc70,0xd859,0xdc71,0xd859,0xdc72, - 0xd859,0xdc73,0xd859,0xdc74,0xd859,0xdc75,0xd859,0xdc76,0xd859,0xdc77, - 0xd859,0xdc78,0xd859,0xdc79,0xd859,0xdc7a,0xd859,0xdc7b,0xd859,0xdc7c, - 0xd859,0xdc7d,0xd859,0xdc7e,0xd859,0xdc7f,0xd859,0xdc80,0xd859,0xdc81, - 0xd859,0xdc82,0xd859,0xdc83,0xd859,0xdc84,0xd859,0xdc85,0xd859,0xdc86, - 0xd859,0xdc87,0xd859,0xdc88,0xd859,0xdc89,0xd859,0xdc8a,0xd859,0xdc8b, - 0xd859,0xdc8c,0xd859,0xdc8d,0xd859,0xdc8e,0xd859,0xdc8f,0xd859,0xdc90, - 0xd859,0xdc91,0xd859,0xdc92,0xd859,0xdc93,0xd859,0xdc94,0xd859,0xdc95, - 0xd859,0xdc96,0xd859,0xdc97,0xd859,0xdc98,0xd859,0xdc99,0xd859,0xdc9a, - 0xd859,0xdc9b,0xd859,0xdc9c,0xd859,0xdc9d,0xd859,0xdc9e,0xd859,0xdc9f, - 0xd859,0xdca0,0xd859,0xdca1,0xd859,0xdca2,0xd859,0xdca3,0xd859,0xdca4, - 0xd859,0xdca5,0xd859,0xdca6,0xd859,0xdca7,0xd859,0xdca8,0xd859,0xdca9, - 0xd859,0xdcaa,0xd859,0xdcab,0xd859,0xdcac,0xd859,0xdcad,0xd859,0xdcae, - 0xd859,0xdcaf,0xd859,0xdcb0,0xd859,0xdcb1,0xd859,0xdcb2,0xd859,0xdcb3, - 0xd859,0xdcb4,0xd859,0xdcb5,0xd859,0xdcb6,0xd859,0xdcb7,0xd859,0xdcb8, - 0xd859,0xdcb9,0xd859,0xdcba,0xd859,0xdcbb,0xd859,0xdcbc,0xd859,0xdcbd, - 0xd859,0xdcbe,0xd859,0xdcbf,0xd859,0xdcc0,0xd859,0xdcc1,0xd859,0xdcc2, - 0xd859,0xdcc3,0xd859,0xdcc4,0xd859,0xdcc5,0xd859,0xdcc6,0xd859,0xdcc7, - 0xd859,0xdcc8,0xd859,0xdcc9,0xd859,0xdcca,0xd859,0xdccb,0xd859,0xdccc, - 0xd859,0xdccd,0xd859,0xdcce,0xd859,0xdccf,0xd859,0xdcd0,0xd859,0xdcd1, - 0xd859,0xdcd2,0xd859,0xdcd3,0xd859,0xdcd4,0xd859,0xdcd5,0xd859,0xdcd6, - 0xd859,0xdcd7,0xd859,0xdcd8,0xd859,0xdcd9,0xd859,0xdcda,0xd859,0xdcdb, - 0xd859,0xdcdc,0xd859,0xdcdd,0xd859,0xdcde,0xd859,0xdcdf,0xd859,0xdce0, - 0xd859,0xdce1,0xd859,0xdce2,0xd859,0xdce3,0xd859,0xdce4,0xd859,0xdce5, - 0xd859,0xdce6,0xd859,0xdce7,0xd859,0xdce8,0xd859,0xdce9,0xd859,0xdcea, - 0xd859,0xdceb,0xd859,0xdcec,0xd859,0xdced,0xd859,0xdcee,0xd859,0xdcef, - 0xd859,0xdcf0,0xd859,0xdcf1,0xd859,0xdcf2,0xd859,0xdcf3,0xd859,0xdcf4, - 0xd859,0xdcf5,0xd859,0xdcf6,0xd859,0xdcf7,0xd859,0xdcf8,0xd859,0xdcf9, - 0xd859,0xdcfa,0xd859,0xdcfb,0xd859,0xdcfc,0xd859,0xdcfd,0xd859,0xdcfe, - 0xd859,0xdcff,0xd859,0xdd00,0xd859,0xdd01,0xd859,0xdd02,0xd859,0xdd03, - 0xd859,0xdd04,0xd859,0xdd05,0xd859,0xdd06,0xd859,0xdd07,0xd859,0xdd08, - 0xd859,0xdd09,0xd859,0xdd0a,0xd859,0xdd0b,0xd859,0xdd0c,0xd859,0xdd0d, - 0xd859,0xdd0e,0xd859,0xdd0f,0xd859,0xdd10,0xd859,0xdd11,0xd859,0xdd12, - 0xd859,0xdd13,0xd859,0xdd14,0xd859,0xdd15,0xd859,0xdd16,0xd859,0xdd17, - 0xd859,0xdd18,0xd859,0xdd19,0xd859,0xdd1a,0xd859,0xdd1b,0xd859,0xdd1c, - 0xd859,0xdd1d,0xd859,0xdd1e,0xd859,0xdd1f,0xd859,0xdd20,0xd859,0xdd21, - 0xd859,0xdd22,0xd859,0xdd23,0xd859,0xdd24,0xd859,0xdd25,0xd859,0xdd26, - 0xd859,0xdd27,0xd859,0xdd28,0xd859,0xdd29,0xd859,0xdd2a,0xd859,0xdd2b, - 0xd859,0xdd2c,0xd859,0xdd2d,0xd859,0xdd2e,0xd859,0xdd2f,0xd859,0xdd30, - 0xd859,0xdd31,0xd859,0xdd32,0xd859,0xdd33,0xd859,0xdd34,0xd859,0xdd35, - 0xd859,0xdd36,0xd859,0xdd37,0xd859,0xdd38,0xd859,0xdd39,0xd859,0xdd3a, - 0xd859,0xdd3b,0xd859,0xdd3c,0xd859,0xdd3d,0xd859,0xdd3e,0xd859,0xdd3f, - 0xd859,0xdd40,0xd859,0xdd41,0xd859,0xdd42,0xd859,0xdd43,0xd859,0xdd44, - 0xd859,0xdd45,0xd859,0xdd46,0xd859,0xdd47,0xd859,0xdd48,0xd859,0xdd49, - 0xd859,0xdd4a,0xd859,0xdd4b,0xd859,0xdd4c,0xd859,0xdd4d,0xd859,0xdd4e, - 0xd859,0xdd4f,0xd859,0xdd50,0xd859,0xdd51,0xd859,0xdd52,0xd859,0xdd53, - 0xd859,0xdd54,0xd859,0xdd55,0xd859,0xdd56,0xd859,0xdd57,0xd859,0xdd58, - 0xd859,0xdd59,0xd859,0xdd5a,0xd859,0xdd5b,0xd859,0xdd5c,0xd859,0xdd5d, - 0xd859,0xdd5e,0xd859,0xdd5f,0xd859,0xdd60,0xd859,0xdd61,0xd859,0xdd62, - 0xd859,0xdd63,0xd859,0xdd64,0xd859,0xdd65,0xd859,0xdd66,0xd859,0xdd67, - 0xd859,0xdd68,0xd859,0xdd69,0xd859,0xdd6a,0xd859,0xdd6b,0xd859,0xdd6c, - 0xd859,0xdd6d,0xd859,0xdd6e,0xd859,0xdd6f,0xd859,0xdd70,0xd859,0xdd71, - 0xd859,0xdd72,0xd859,0xdd73,0xd859,0xdd74,0xd859,0xdd75,0xd859,0xdd76, - 0xd859,0xdd77,0xd859,0xdd78,0xd859,0xdd79,0xd859,0xdd7a,0xd859,0xdd7b, - 0xd859,0xdd7c,0xd859,0xdd7d,0xd859,0xdd7e,0xd859,0xdd7f,0xd859,0xdd80, - 0xd859,0xdd81,0xd859,0xdd82,0xd859,0xdd83,0xd859,0xdd84,0xd859,0xdd85, - 0xd859,0xdd86,0xd859,0xdd87,0xd859,0xdd88,0xd859,0xdd89,0xd859,0xdd8a, - 0xd859,0xdd8b,0xd859,0xdd8c,0xd859,0xdd8d,0xd859,0xdd8e,0xd859,0xdd8f, - 0xd859,0xdd90,0xd859,0xdd91,0xd859,0xdd92,0xd859,0xdd93,0xd859,0xdd94, - 0xd859,0xdd95,0xd859,0xdd96,0xd859,0xdd97,0xd859,0xdd98,0xd859,0xdd99, - 0xd859,0xdd9a,0xd859,0xdd9b,0xd859,0xdd9c,0xd859,0xdd9d,0xd859,0xdd9e, - 0xd859,0xdd9f,0xd859,0xdda0,0xd859,0xdda1,0xd859,0xdda2,0xd859,0xdda3, - 0xd859,0xdda4,0xd859,0xdda5,0xd859,0xdda6,0xd859,0xdda7,0xd859,0xdda8, - 0xd859,0xdda9,0xd859,0xddaa,0xd859,0xddab,0xd859,0xddac,0xd859,0xddad, - 0xd859,0xddae,0xd859,0xddaf,0xd859,0xddb0,0xd859,0xddb1,0xd859,0xddb2, - 0xd859,0xddb3,0xd859,0xddb4,0xd859,0xddb5,0xd859,0xddb6,0xd859,0xddb7, - 0xd859,0xddb8,0xd859,0xddb9,0xd859,0xddba,0xd859,0xddbb,0xd859,0xddbc, - 0xd859,0xddbd,0xd859,0xddbe,0xd859,0xddbf,0xd859,0xddc0,0xd859,0xddc1, - 0xd859,0xddc2,0xd859,0xddc3,0xd859,0xddc4,0xd859,0xddc5,0xd859,0xddc6, - 0xd859,0xddc7,0xd859,0xddc8,0xd859,0xddc9,0xd859,0xddca,0xd859,0xddcb, - 0xd859,0xddcc,0xd859,0xddcd,0xd859,0xddce,0xd859,0xddcf,0xd859,0xddd0, - 0xd859,0xddd1,0xd859,0xddd2,0xd859,0xddd3,0xd859,0xddd4,0xd859,0xddd5, - 0xd859,0xddd6,0xd859,0xddd7,0xd859,0xddd8,0xd859,0xddd9,0xd859,0xddda, - 0xd859,0xdddb,0xd859,0xdddc,0xd859,0xdddd,0xd859,0xddde,0xd859,0xdddf, - 0xd859,0xdde0,0xd859,0xdde1,0xd859,0xdde2,0xd859,0xdde3,0xd859,0xdde4, - 0xd859,0xdde5,0xd859,0xdde6,0xd859,0xdde7,0xd859,0xdde8,0xd859,0xdde9, - 0xd859,0xddea,0xd859,0xddeb,0xd859,0xddec,0xd859,0xdded,0xd859,0xddee, - 0xd859,0xddef,0xd859,0xddf0,0xd859,0xddf1,0xd859,0xddf2,0xd859,0xddf3, - 0xd859,0xddf4,0xd859,0xddf5,0xd859,0xddf6,0xd859,0xddf7,0xd859,0xddf8, - 0xd859,0xddf9,0xd859,0xddfa,0xd859,0xddfb,0xd859,0xddfc,0xd859,0xddfd, - 0xd859,0xddfe,0xd859,0xddff,0xd859,0xde00,0xd859,0xde01,0xd859,0xde02, - 0xd859,0xde03,0xd859,0xde04,0xd859,0xde05,0xd859,0xde06,0xd859,0xde07, - 0xd859,0xde08,0xd859,0xde09,0xd859,0xde0a,0xd859,0xde0b,0xd859,0xde0c, - 0xd859,0xde0d,0xd859,0xde0e,0xd859,0xde0f,0xd859,0xde10,0xd859,0xde11, - 0xd859,0xde12,0xd859,0xde13,0xd859,0xde14,0xd859,0xde15,0xd859,0xde16, - 0xd859,0xde17,0xd859,0xde18,0xd859,0xde19,0xd859,0xde1a,0xd859,0xde1b, - 0xd859,0xde1c,0xd859,0xde1d,0xd859,0xde1e,0xd859,0xde1f,0xd859,0xde20, - 0xd859,0xde21,0xd859,0xde22,0xd859,0xde23,0xd859,0xde24,0xd859,0xde25, - 0xd859,0xde26,0xd859,0xde27,0xd859,0xde28,0xd859,0xde29,0xd859,0xde2a, - 0xd859,0xde2b,0xd859,0xde2c,0xd859,0xde2d,0xd859,0xde2e,0xd859,0xde2f, - 0xd859,0xde30,0xd859,0xde31,0xd859,0xde32,0xd859,0xde33,0xd859,0xde34, - 0xd859,0xde35,0xd859,0xde36,0xd859,0xde37,0xd859,0xde38,0xd859,0xde39, - 0xd859,0xde3a,0xd859,0xde3b,0xd859,0xde3c,0xd859,0xde3d,0xd859,0xde3e, - 0xd859,0xde3f,0xd859,0xde40,0xd859,0xde41,0xd859,0xde42,0xd859,0xde43, - 0xd859,0xde44,0xd859,0xde45,0xd859,0xde46,0xd859,0xde47,0xd859,0xde48, - 0xd859,0xde49,0xd859,0xde4a,0xd859,0xde4b,0xd859,0xde4c,0xd859,0xde4d, - 0xd859,0xde4e,0xd859,0xde4f,0xd859,0xde50,0xd859,0xde51,0xd859,0xde52, - 0xd859,0xde53,0xd859,0xde54,0xd859,0xde55,0xd859,0xde56,0xd859,0xde57, - 0xd859,0xde58,0xd859,0xde59,0xd859,0xde5a,0xd859,0xde5b,0xd859,0xde5c, - 0xd859,0xde5d,0xd859,0xde5e,0xd859,0xde5f,0xd859,0xde60,0xd859,0xde61, - 0xd859,0xde62,0xd859,0xde63,0xd859,0xde64,0xd859,0xde65,0xd859,0xde66, - 0xd859,0xde67,0xd859,0xde68,0xd859,0xde69,0xd859,0xde6a,0xd859,0xde6b, - 0xd859,0xde6c,0xd859,0xde6d,0xd859,0xde6e,0xd859,0xde6f,0xd859,0xde70, - 0xd859,0xde71,0xd859,0xde72,0xd859,0xde73,0xd859,0xde74,0xd859,0xde75, - 0xd859,0xde76,0xd859,0xde77,0xd859,0xde78,0xd859,0xde79,0xd859,0xde7a, - 0xd859,0xde7b,0xd859,0xde7c,0xd859,0xde7d,0xd859,0xde7e,0xd859,0xde7f, - 0xd859,0xde80,0xd859,0xde81,0xd859,0xde82,0xd859,0xde83,0xd859,0xde84, - 0xd859,0xde85,0xd859,0xde86,0xd859,0xde87,0xd859,0xde88,0xd859,0xde89, - 0xd859,0xde8a,0xd859,0xde8b,0xd859,0xde8c,0xd859,0xde8d,0xd859,0xde8e, - 0xd859,0xde8f,0xd859,0xde90,0xd859,0xde91,0xd859,0xde92,0xd859,0xde93, - 0xd859,0xde94,0xd859,0xde95,0xd859,0xde96,0xd859,0xde97,0xd859,0xde98, - 0xd859,0xde99,0xd859,0xde9a,0xd859,0xde9b,0xd859,0xde9c,0xd859,0xde9d, - 0xd859,0xde9e,0xd859,0xde9f,0xd859,0xdea0,0xd859,0xdea1,0xd859,0xdea2, - 0xd859,0xdea3,0xd859,0xdea4,0xd859,0xdea5,0xd859,0xdea6,0xd859,0xdea7, - 0xd859,0xdea8,0xd859,0xdea9,0xd859,0xdeaa,0xd859,0xdeab,0xd859,0xdeac, - 0xd859,0xdead,0xd859,0xdeae,0xd859,0xdeaf,0xd859,0xdeb0,0xd859,0xdeb1, - 0xd859,0xdeb2,0xd859,0xdeb3,0xd859,0xdeb4,0xd859,0xdeb5,0xd859,0xdeb6, - 0xd859,0xdeb7,0xd859,0xdeb8,0xd859,0xdeb9,0xd859,0xdeba,0xd859,0xdebb, - 0xd859,0xdebc,0xd859,0xdebd,0xd859,0xdebe,0xd859,0xdebf,0xd859,0xdec0, - 0xd859,0xdec1,0xd859,0xdec2,0xd859,0xdec3,0xd859,0xdec4,0xd859,0xdec5, - 0xd859,0xdec6,0xd859,0xdec7,0xd859,0xdec8,0xd859,0xdec9,0xd859,0xdeca, - 0xd859,0xdecb,0xd859,0xdecc,0xd859,0xdecd,0xd859,0xdece,0xd859,0xdecf, - 0xd859,0xded0,0xd859,0xded1,0xd859,0xded2,0xd859,0xded3,0xd859,0xded4, - 0xd859,0xded5,0xd859,0xded6,0xd859,0xded7,0xd859,0xded8,0xd859,0xded9, - 0xd859,0xdeda,0xd859,0xdedb,0xd859,0xdedc,0xd859,0xdedd,0xd859,0xdede, - 0xd859,0xdedf,0xd859,0xdee0,0xd859,0xdee1,0xd859,0xdee2,0xd859,0xdee3, - 0xd859,0xdee4,0xd859,0xdee5,0xd859,0xdee6,0xd859,0xdee7,0xd859,0xdee8, - 0xd859,0xdee9,0xd859,0xdeea,0xd859,0xdeeb,0xd859,0xdeec,0xd859,0xdeed, - 0xd859,0xdeee,0xd859,0xdeef,0xd859,0xdef0,0xd859,0xdef1,0xd859,0xdef2, - 0xd859,0xdef3,0xd859,0xdef4,0xd859,0xdef5,0xd859,0xdef6,0xd859,0xdef7, - 0xd859,0xdef8,0xd859,0xdef9,0xd859,0xdefa,0xd859,0xdefb,0xd859,0xdefc, - 0xd859,0xdefd,0xd859,0xdefe,0xd859,0xdeff,0xd859,0xdf00,0xd859,0xdf01, - 0xd859,0xdf02,0xd859,0xdf03,0xd859,0xdf04,0xd859,0xdf05,0xd859,0xdf06, - 0xd859,0xdf07,0xd859,0xdf08,0xd859,0xdf09,0xd859,0xdf0a,0xd859,0xdf0b, - 0xd859,0xdf0c,0xd859,0xdf0d,0xd859,0xdf0e,0xd859,0xdf0f,0xd859,0xdf10, - 0xd859,0xdf11,0xd859,0xdf12,0xd859,0xdf13,0xd859,0xdf14,0xd859,0xdf15, - 0xd859,0xdf16,0xd859,0xdf17,0xd859,0xdf18,0xd859,0xdf19,0xd859,0xdf1a, - 0xd859,0xdf1b,0xd859,0xdf1c,0xd859,0xdf1d,0xd859,0xdf1e,0xd859,0xdf1f, - 0xd859,0xdf20,0xd859,0xdf21,0xd859,0xdf22,0xd859,0xdf23,0xd859,0xdf24, - 0xd859,0xdf25,0xd859,0xdf26,0xd859,0xdf27,0xd859,0xdf28,0xd859,0xdf29, - 0xd859,0xdf2a,0xd859,0xdf2b,0xd859,0xdf2c,0xd859,0xdf2d,0xd859,0xdf2e, - 0xd859,0xdf2f,0xd859,0xdf30,0xd859,0xdf31,0xd859,0xdf32,0xd859,0xdf33, - 0xd859,0xdf34,0xd859,0xdf35,0xd859,0xdf36,0xd859,0xdf37,0xd859,0xdf38, - 0xd859,0xdf39,0xd859,0xdf3a,0xd859,0xdf3b,0xd859,0xdf3c,0xd859,0xdf3d, - 0xd859,0xdf3e,0xd859,0xdf3f,0xd859,0xdf40,0xd859,0xdf41,0xd859,0xdf42, - 0xd859,0xdf43,0xd859,0xdf44,0xd859,0xdf45,0xd859,0xdf46,0xd859,0xdf47, - 0xd859,0xdf48,0xd859,0xdf49,0xd859,0xdf4a,0xd859,0xdf4b,0xd859,0xdf4c, - 0xd859,0xdf4d,0xd859,0xdf4e,0xd859,0xdf4f,0xd859,0xdf50,0xd859,0xdf51, - 0xd859,0xdf52,0xd859,0xdf53,0xd859,0xdf54,0xd859,0xdf55,0xd859,0xdf56, - 0xd859,0xdf57,0xd859,0xdf58,0xd859,0xdf59,0xd859,0xdf5a,0xd859,0xdf5b, - 0xd859,0xdf5c,0xd859,0xdf5d,0xd859,0xdf5e,0xd859,0xdf5f,0xd859,0xdf60, - 0xd859,0xdf61,0xd859,0xdf62,0xd859,0xdf63,0xd859,0xdf64,0xd859,0xdf65, - 0xd859,0xdf66,0xd859,0xdf67,0xd859,0xdf68,0xd859,0xdf69,0xd859,0xdf6a, - 0xd859,0xdf6b,0xd859,0xdf6c,0xd859,0xdf6d,0xd859,0xdf6e,0xd859,0xdf6f, - 0xd859,0xdf70,0xd859,0xdf71,0xd859,0xdf72,0xd859,0xdf73,0xd859,0xdf74, - 0xd859,0xdf75,0xd859,0xdf76,0xd859,0xdf77,0xd859,0xdf78,0xd859,0xdf79, - 0xd859,0xdf7a,0xd859,0xdf7b,0xd859,0xdf7c,0xd859,0xdf7d,0xd859,0xdf7e, - 0xd859,0xdf7f,0xd859,0xdf80,0xd859,0xdf81,0xd859,0xdf82,0xd859,0xdf83, - 0xd859,0xdf84,0xd859,0xdf85,0xd859,0xdf86,0xd859,0xdf87,0xd859,0xdf88, - 0xd859,0xdf89,0xd859,0xdf8a,0xd859,0xdf8b,0xd859,0xdf8c,0xd859,0xdf8d, - 0xd859,0xdf8e,0xd859,0xdf8f,0xd859,0xdf90,0xd859,0xdf91,0xd859,0xdf92, - 0xd859,0xdf93,0xd859,0xdf94,0xd859,0xdf95,0xd859,0xdf96,0xd859,0xdf97, - 0xd859,0xdf98,0xd859,0xdf99,0xd859,0xdf9a,0xd859,0xdf9b,0xd859,0xdf9c, - 0xd859,0xdf9d,0xd859,0xdf9e,0xd859,0xdf9f,0xd859,0xdfa0,0xd859,0xdfa1, - 0xd859,0xdfa2,0xd859,0xdfa3,0xd859,0xdfa4,0xd859,0xdfa5,0xd859,0xdfa6, - 0xd859,0xdfa7,0xd859,0xdfa8,0xd859,0xdfa9,0xd859,0xdfaa,0xd859,0xdfab, - 0xd859,0xdfac,0xd859,0xdfad,0xd859,0xdfae,0xd859,0xdfaf,0xd859,0xdfb0, - 0xd859,0xdfb1,0xd859,0xdfb2,0xd859,0xdfb3,0xd859,0xdfb4,0xd859,0xdfb5, - 0xd859,0xdfb6,0xd859,0xdfb7,0xd859,0xdfb8,0xd859,0xdfb9,0xd859,0xdfba, - 0xd859,0xdfbb,0xd859,0xdfbc,0xd859,0xdfbd,0xd859,0xdfbe,0xd859,0xdfbf, - 0xd859,0xdfc0,0xd859,0xdfc1,0xd859,0xdfc2,0xd859,0xdfc3,0xd859,0xdfc4, - 0xd859,0xdfc5,0xd859,0xdfc6,0xd859,0xdfc7,0xd859,0xdfc8,0xd859,0xdfc9, - 0xd859,0xdfca,0xd859,0xdfcb,0xd859,0xdfcc,0xd859,0xdfcd,0xd859,0xdfce, - 0xd859,0xdfcf,0xd859,0xdfd0,0xd859,0xdfd1,0xd859,0xdfd2,0xd859,0xdfd3, - 0xd859,0xdfd4,0xd859,0xdfd5,0xd859,0xdfd6,0xd859,0xdfd7,0xd859,0xdfd8, - 0xd859,0xdfd9,0xd859,0xdfda,0xd859,0xdfdb,0xd859,0xdfdc,0xd859,0xdfdd, - 0xd859,0xdfde,0xd859,0xdfdf,0xd859,0xdfe0,0xd859,0xdfe1,0xd859,0xdfe2, - 0xd859,0xdfe3,0xd859,0xdfe4,0xd859,0xdfe5,0xd859,0xdfe6,0xd859,0xdfe7, - 0xd859,0xdfe8,0xd859,0xdfe9,0xd859,0xdfea,0xd859,0xdfeb,0xd859,0xdfec, - 0xd859,0xdfed,0xd859,0xdfee,0xd859,0xdfef,0xd859,0xdff0,0xd859,0xdff1, - 0xd859,0xdff2,0xd859,0xdff3,0xd859,0xdff4,0xd859,0xdff5,0xd859,0xdff6, - 0xd859,0xdff7,0xd859,0xdff8,0xd859,0xdff9,0xd859,0xdffa,0xd859,0xdffb, - 0xd859,0xdffc,0xd859,0xdffd,0xd859,0xdffe,0xd859,0xdfff,0xd85a,0xdc00, - 0xd85a,0xdc01,0xd85a,0xdc02,0xd85a,0xdc03,0xd85a,0xdc04,0xd85a,0xdc05, - 0xd85a,0xdc06,0xd85a,0xdc07,0xd85a,0xdc08,0xd85a,0xdc09,0xd85a,0xdc0a, - 0xd85a,0xdc0b,0xd85a,0xdc0c,0xd85a,0xdc0d,0xd85a,0xdc0e,0xd85a,0xdc0f, - 0xd85a,0xdc10,0xd85a,0xdc11,0xd85a,0xdc12,0xd85a,0xdc13,0xd85a,0xdc14, - 0xd85a,0xdc15,0xd85a,0xdc16,0xd85a,0xdc17,0xd85a,0xdc18,0xd85a,0xdc19, - 0xd85a,0xdc1a,0xd85a,0xdc1b,0xd85a,0xdc1c,0xd85a,0xdc1d,0xd85a,0xdc1e, - 0xd85a,0xdc1f,0xd85a,0xdc20,0xd85a,0xdc21,0xd85a,0xdc22,0xd85a,0xdc23, - 0xd85a,0xdc24,0xd85a,0xdc25,0xd85a,0xdc26,0xd85a,0xdc27,0xd85a,0xdc28, - 0xd85a,0xdc29,0xd85a,0xdc2a,0xd85a,0xdc2b,0xd85a,0xdc2c,0xd85a,0xdc2d, - 0xd85a,0xdc2e,0xd85a,0xdc2f,0xd85a,0xdc30,0xd85a,0xdc31,0xd85a,0xdc32, - 0xd85a,0xdc33,0xd85a,0xdc34,0xd85a,0xdc35,0xd85a,0xdc36,0xd85a,0xdc37, - 0xd85a,0xdc38,0xd85a,0xdc39,0xd85a,0xdc3a,0xd85a,0xdc3b,0xd85a,0xdc3c, - 0xd85a,0xdc3d,0xd85a,0xdc3e,0xd85a,0xdc3f,0xd85a,0xdc40,0xd85a,0xdc41, - 0xd85a,0xdc42,0xd85a,0xdc43,0xd85a,0xdc44,0xd85a,0xdc45,0xd85a,0xdc46, - 0xd85a,0xdc47,0xd85a,0xdc48,0xd85a,0xdc49,0xd85a,0xdc4a,0xd85a,0xdc4b, - 0xd85a,0xdc4c,0xd85a,0xdc4d,0xd85a,0xdc4e,0xd85a,0xdc4f,0xd85a,0xdc50, - 0xd85a,0xdc51,0xd85a,0xdc52,0xd85a,0xdc53,0xd85a,0xdc54,0xd85a,0xdc55, - 0xd85a,0xdc56,0xd85a,0xdc57,0xd85a,0xdc58,0xd85a,0xdc59,0xd85a,0xdc5a, - 0xd85a,0xdc5b,0xd85a,0xdc5c,0xd85a,0xdc5d,0xd85a,0xdc5e,0xd85a,0xdc5f, - 0xd85a,0xdc60,0xd85a,0xdc61,0xd85a,0xdc62,0xd85a,0xdc63,0xd85a,0xdc64, - 0xd85a,0xdc65,0xd85a,0xdc66,0xd85a,0xdc67,0xd85a,0xdc68,0xd85a,0xdc69, - 0xd85a,0xdc6a,0xd85a,0xdc6b,0xd85a,0xdc6c,0xd85a,0xdc6d,0xd85a,0xdc6e, - 0xd85a,0xdc6f,0xd85a,0xdc70,0xd85a,0xdc71,0xd85a,0xdc72,0xd85a,0xdc73, - 0xd85a,0xdc74,0xd85a,0xdc75,0xd85a,0xdc76,0xd85a,0xdc77,0xd85a,0xdc78, - 0xd85a,0xdc79,0xd85a,0xdc7a,0xd85a,0xdc7b,0xd85a,0xdc7c,0xd85a,0xdc7d, - 0xd85a,0xdc7e,0xd85a,0xdc7f,0xd85a,0xdc80,0xd85a,0xdc81,0xd85a,0xdc82, - 0xd85a,0xdc83,0xd85a,0xdc84,0xd85a,0xdc85,0xd85a,0xdc86,0xd85a,0xdc87, - 0xd85a,0xdc88,0xd85a,0xdc89,0xd85a,0xdc8a,0xd85a,0xdc8b,0xd85a,0xdc8c, - 0xd85a,0xdc8d,0xd85a,0xdc8e,0xd85a,0xdc8f,0xd85a,0xdc90,0xd85a,0xdc91, - 0xd85a,0xdc92,0xd85a,0xdc93,0xd85a,0xdc94,0xd85a,0xdc95,0xd85a,0xdc96, - 0xd85a,0xdc97,0xd85a,0xdc98,0xd85a,0xdc99,0xd85a,0xdc9a,0xd85a,0xdc9b, - 0xd85a,0xdc9c,0xd85a,0xdc9d,0xd85a,0xdc9e,0xd85a,0xdc9f,0xd85a,0xdca0, - 0xd85a,0xdca1,0xd85a,0xdca2,0xd85a,0xdca3,0xd85a,0xdca4,0xd85a,0xdca5, - 0xd85a,0xdca6,0xd85a,0xdca7,0xd85a,0xdca8,0xd85a,0xdca9,0xd85a,0xdcaa, - 0xd85a,0xdcab,0xd85a,0xdcac,0xd85a,0xdcad,0xd85a,0xdcae,0xd85a,0xdcaf, - 0xd85a,0xdcb0,0xd85a,0xdcb1,0xd85a,0xdcb2,0xd85a,0xdcb3,0xd85a,0xdcb4, - 0xd85a,0xdcb5,0xd85a,0xdcb6,0xd85a,0xdcb7,0xd85a,0xdcb8,0xd85a,0xdcb9, - 0xd85a,0xdcba,0xd85a,0xdcbb,0xd85a,0xdcbc,0xd85a,0xdcbd,0xd85a,0xdcbe, - 0xd85a,0xdcbf,0xd85a,0xdcc0,0xd85a,0xdcc1,0xd85a,0xdcc2,0xd85a,0xdcc3, - 0xd85a,0xdcc4,0xd85a,0xdcc5,0xd85a,0xdcc6,0xd85a,0xdcc7,0xd85a,0xdcc8, - 0xd85a,0xdcc9,0xd85a,0xdcca,0xd85a,0xdccb,0xd85a,0xdccc,0xd85a,0xdccd, - 0xd85a,0xdcce,0xd85a,0xdccf,0xd85a,0xdcd0,0xd85a,0xdcd1,0xd85a,0xdcd2, - 0xd85a,0xdcd3,0xd85a,0xdcd4,0xd85a,0xdcd5,0xd85a,0xdcd6,0xd85a,0xdcd7, - 0xd85a,0xdcd8,0xd85a,0xdcd9,0xd85a,0xdcda,0xd85a,0xdcdb,0xd85a,0xdcdc, - 0xd85a,0xdcdd,0xd85a,0xdcde,0xd85a,0xdcdf,0xd85a,0xdce0,0xd85a,0xdce1, - 0xd85a,0xdce2,0xd85a,0xdce3,0xd85a,0xdce4,0xd85a,0xdce5,0xd85a,0xdce6, - 0xd85a,0xdce7,0xd85a,0xdce8,0xd85a,0xdce9,0xd85a,0xdcea,0xd85a,0xdceb, - 0xd85a,0xdcec,0xd85a,0xdced,0xd85a,0xdcee,0xd85a,0xdcef,0xd85a,0xdcf0, - 0xd85a,0xdcf1,0xd85a,0xdcf2,0xd85a,0xdcf3,0xd85a,0xdcf4,0xd85a,0xdcf5, - 0xd85a,0xdcf6,0xd85a,0xdcf7,0xd85a,0xdcf8,0xd85a,0xdcf9,0xd85a,0xdcfa, - 0xd85a,0xdcfb,0xd85a,0xdcfc,0xd85a,0xdcfd,0xd85a,0xdcfe,0xd85a,0xdcff, - 0xd85a,0xdd00,0xd85a,0xdd01,0xd85a,0xdd02,0xd85a,0xdd03,0xd85a,0xdd04, - 0xd85a,0xdd05,0xd85a,0xdd06,0xd85a,0xdd07,0xd85a,0xdd08,0xd85a,0xdd09, - 0xd85a,0xdd0a,0xd85a,0xdd0b,0xd85a,0xdd0c,0xd85a,0xdd0d,0xd85a,0xdd0e, - 0xd85a,0xdd0f,0xd85a,0xdd10,0xd85a,0xdd11,0xd85a,0xdd12,0xd85a,0xdd13, - 0xd85a,0xdd14,0xd85a,0xdd15,0xd85a,0xdd16,0xd85a,0xdd17,0xd85a,0xdd18, - 0xd85a,0xdd19,0xd85a,0xdd1a,0xd85a,0xdd1b,0xd85a,0xdd1c,0xd85a,0xdd1d, - 0xd85a,0xdd1e,0xd85a,0xdd1f,0xd85a,0xdd20,0xd85a,0xdd21,0xd85a,0xdd22, - 0xd85a,0xdd23,0xd85a,0xdd24,0xd85a,0xdd25,0xd85a,0xdd26,0xd85a,0xdd27, - 0xd85a,0xdd28,0xd85a,0xdd29,0xd85a,0xdd2a,0xd85a,0xdd2b,0xd85a,0xdd2c, - 0xd85a,0xdd2d,0xd85a,0xdd2e,0xd85a,0xdd2f,0xd85a,0xdd30,0xd85a,0xdd31, - 0xd85a,0xdd32,0xd85a,0xdd33,0xd85a,0xdd34,0xd85a,0xdd35,0xd85a,0xdd36, - 0xd85a,0xdd37,0xd85a,0xdd38,0xd85a,0xdd39,0xd85a,0xdd3a,0xd85a,0xdd3b, - 0xd85a,0xdd3c,0xd85a,0xdd3d,0xd85a,0xdd3e,0xd85a,0xdd3f,0xd85a,0xdd40, - 0xd85a,0xdd41,0xd85a,0xdd42,0xd85a,0xdd43,0xd85a,0xdd44,0xd85a,0xdd45, - 0xd85a,0xdd46,0xd85a,0xdd47,0xd85a,0xdd48,0xd85a,0xdd49,0xd85a,0xdd4a, - 0xd85a,0xdd4b,0xd85a,0xdd4c,0xd85a,0xdd4d,0xd85a,0xdd4e,0xd85a,0xdd4f, - 0xd85a,0xdd50,0xd85a,0xdd51,0xd85a,0xdd52,0xd85a,0xdd53,0xd85a,0xdd54, - 0xd85a,0xdd55,0xd85a,0xdd56,0xd85a,0xdd57,0xd85a,0xdd58,0xd85a,0xdd59, - 0xd85a,0xdd5a,0xd85a,0xdd5b,0xd85a,0xdd5c,0xd85a,0xdd5d,0xd85a,0xdd5e, - 0xd85a,0xdd5f,0xd85a,0xdd60,0xd85a,0xdd61,0xd85a,0xdd62,0xd85a,0xdd63, - 0xd85a,0xdd64,0xd85a,0xdd65,0xd85a,0xdd66,0xd85a,0xdd67,0xd85a,0xdd68, - 0xd85a,0xdd69,0xd85a,0xdd6a,0xd85a,0xdd6b,0xd85a,0xdd6c,0xd85a,0xdd6d, - 0xd85a,0xdd6e,0xd85a,0xdd6f,0xd85a,0xdd70,0xd85a,0xdd71,0xd85a,0xdd72, - 0xd85a,0xdd73,0xd85a,0xdd74,0xd85a,0xdd75,0xd85a,0xdd76,0xd85a,0xdd77, - 0xd85a,0xdd78,0xd85a,0xdd79,0xd85a,0xdd7a,0xd85a,0xdd7b,0xd85a,0xdd7c, - 0xd85a,0xdd7d,0xd85a,0xdd7e,0xd85a,0xdd7f,0xd85a,0xdd80,0xd85a,0xdd81, - 0xd85a,0xdd82,0xd85a,0xdd83,0xd85a,0xdd84,0xd85a,0xdd85,0xd85a,0xdd86, - 0xd85a,0xdd87,0xd85a,0xdd88,0xd85a,0xdd89,0xd85a,0xdd8a,0xd85a,0xdd8b, - 0xd85a,0xdd8c,0xd85a,0xdd8d,0xd85a,0xdd8e,0xd85a,0xdd8f,0xd85a,0xdd90, - 0xd85a,0xdd91,0xd85a,0xdd92,0xd85a,0xdd93,0xd85a,0xdd94,0xd85a,0xdd95, - 0xd85a,0xdd96,0xd85a,0xdd97,0xd85a,0xdd98,0xd85a,0xdd99,0xd85a,0xdd9a, - 0xd85a,0xdd9b,0xd85a,0xdd9c,0xd85a,0xdd9d,0xd85a,0xdd9e,0xd85a,0xdd9f, - 0xd85a,0xdda0,0xd85a,0xdda1,0xd85a,0xdda2,0xd85a,0xdda3,0xd85a,0xdda4, - 0xd85a,0xdda5,0xd85a,0xdda6,0xd85a,0xdda7,0xd85a,0xdda8,0xd85a,0xdda9, - 0xd85a,0xddaa,0xd85a,0xddab,0xd85a,0xddac,0xd85a,0xddad,0xd85a,0xddae, - 0xd85a,0xddaf,0xd85a,0xddb0,0xd85a,0xddb1,0xd85a,0xddb2,0xd85a,0xddb3, - 0xd85a,0xddb4,0xd85a,0xddb5,0xd85a,0xddb6,0xd85a,0xddb7,0xd85a,0xddb8, - 0xd85a,0xddb9,0xd85a,0xddba,0xd85a,0xddbb,0xd85a,0xddbc,0xd85a,0xddbd, - 0xd85a,0xddbe,0xd85a,0xddbf,0xd85a,0xddc0,0xd85a,0xddc1,0xd85a,0xddc2, - 0xd85a,0xddc3,0xd85a,0xddc4,0xd85a,0xddc5,0xd85a,0xddc6,0xd85a,0xddc7, - 0xd85a,0xddc8,0xd85a,0xddc9,0xd85a,0xddca,0xd85a,0xddcb,0xd85a,0xddcc, - 0xd85a,0xddcd,0xd85a,0xddce,0xd85a,0xddcf,0xd85a,0xddd0,0xd85a,0xddd1, - 0xd85a,0xddd2,0xd85a,0xddd3,0xd85a,0xddd4,0xd85a,0xddd5,0xd85a,0xddd6, - 0xd85a,0xddd7,0xd85a,0xddd8,0xd85a,0xddd9,0xd85a,0xddda,0xd85a,0xdddb, - 0xd85a,0xdddc,0xd85a,0xdddd,0xd85a,0xddde,0xd85a,0xdddf,0xd85a,0xdde0, - 0xd85a,0xdde1,0xd85a,0xdde2,0xd85a,0xdde3,0xd85a,0xdde4,0xd85a,0xdde5, - 0xd85a,0xdde6,0xd85a,0xdde7,0xd85a,0xdde8,0xd85a,0xdde9,0xd85a,0xddea, - 0xd85a,0xddeb,0xd85a,0xddec,0xd85a,0xdded,0xd85a,0xddee,0xd85a,0xddef, - 0xd85a,0xddf0,0xd85a,0xddf1,0xd85a,0xddf2,0xd85a,0xddf3,0xd85a,0xddf4, - 0xd85a,0xddf5,0xd85a,0xddf6,0xd85a,0xddf7,0xd85a,0xddf8,0xd85a,0xddf9, - 0xd85a,0xddfa,0xd85a,0xddfb,0xd85a,0xddfc,0xd85a,0xddfd,0xd85a,0xddfe, - 0xd85a,0xddff,0xd85a,0xde00,0xd85a,0xde01,0xd85a,0xde02,0xd85a,0xde03, - 0xd85a,0xde04,0xd85a,0xde05,0xd85a,0xde06,0xd85a,0xde07,0xd85a,0xde08, - 0xd85a,0xde09,0xd85a,0xde0a,0xd85a,0xde0b,0xd85a,0xde0c,0xd85a,0xde0d, - 0xd85a,0xde0e,0xd85a,0xde0f,0xd85a,0xde10,0xd85a,0xde11,0xd85a,0xde12, - 0xd85a,0xde13,0xd85a,0xde14,0xd85a,0xde15,0xd85a,0xde16,0xd85a,0xde17, - 0xd85a,0xde18,0xd85a,0xde19,0xd85a,0xde1a,0xd85a,0xde1b,0xd85a,0xde1c, - 0xd85a,0xde1d,0xd85a,0xde1e,0xd85a,0xde1f,0xd85a,0xde20,0xd85a,0xde21, - 0xd85a,0xde22,0xd85a,0xde23,0xd85a,0xde24,0xd85a,0xde25,0xd85a,0xde26, - 0xd85a,0xde27,0xd85a,0xde28,0xd85a,0xde29,0xd85a,0xde2a,0xd85a,0xde2b, - 0xd85a,0xde2c,0xd85a,0xde2d,0xd85a,0xde2e,0xd85a,0xde2f,0xd85a,0xde30, - 0xd85a,0xde31,0xd85a,0xde32,0xd85a,0xde33,0xd85a,0xde34,0xd85a,0xde35, - 0xd85a,0xde36,0xd85a,0xde37,0xd85a,0xde38,0xd85a,0xde39,0xd85a,0xde3a, - 0xd85a,0xde3b,0xd85a,0xde3c,0xd85a,0xde3d,0xd85a,0xde3e,0xd85a,0xde3f, - 0xd85a,0xde40,0xd85a,0xde41,0xd85a,0xde42,0xd85a,0xde43,0xd85a,0xde44, - 0xd85a,0xde45,0xd85a,0xde46,0xd85a,0xde47,0xd85a,0xde48,0xd85a,0xde49, - 0xd85a,0xde4a,0xd85a,0xde4b,0xd85a,0xde4c,0xd85a,0xde4d,0xd85a,0xde4e, - 0xd85a,0xde4f,0xd85a,0xde50,0xd85a,0xde51,0xd85a,0xde52,0xd85a,0xde53, - 0xd85a,0xde54,0xd85a,0xde55,0xd85a,0xde56,0xd85a,0xde57,0xd85a,0xde58, - 0xd85a,0xde59,0xd85a,0xde5a,0xd85a,0xde5b,0xd85a,0xde5c,0xd85a,0xde5d, - 0xd85a,0xde5e,0xd85a,0xde5f,0xd85a,0xde60,0xd85a,0xde61,0xd85a,0xde62, - 0xd85a,0xde63,0xd85a,0xde64,0xd85a,0xde65,0xd85a,0xde66,0xd85a,0xde67, - 0xd85a,0xde68,0xd85a,0xde69,0xd85a,0xde6a,0xd85a,0xde6b,0xd85a,0xde6c, - 0xd85a,0xde6d,0xd85a,0xde6e,0xd85a,0xde6f,0xd85a,0xde70,0xd85a,0xde71, - 0xd85a,0xde72,0xd85a,0xde73,0xd85a,0xde74,0xd85a,0xde75,0xd85a,0xde76, - 0xd85a,0xde77,0xd85a,0xde78,0xd85a,0xde79,0xd85a,0xde7a,0xd85a,0xde7b, - 0xd85a,0xde7c,0xd85a,0xde7d,0xd85a,0xde7e,0xd85a,0xde7f,0xd85a,0xde80, - 0xd85a,0xde81,0xd85a,0xde82,0xd85a,0xde83,0xd85a,0xde84,0xd85a,0xde85, - 0xd85a,0xde86,0xd85a,0xde87,0xd85a,0xde88,0xd85a,0xde89,0xd85a,0xde8a, - 0xd85a,0xde8b,0xd85a,0xde8c,0xd85a,0xde8d,0xd85a,0xde8e,0xd85a,0xde8f, - 0xd85a,0xde90,0xd85a,0xde91,0xd85a,0xde92,0xd85a,0xde93,0xd85a,0xde94, - 0xd85a,0xde95,0xd85a,0xde96,0xd85a,0xde97,0xd85a,0xde98,0xd85a,0xde99, - 0xd85a,0xde9a,0xd85a,0xde9b,0xd85a,0xde9c,0xd85a,0xde9d,0xd85a,0xde9e, - 0xd85a,0xde9f,0xd85a,0xdea0,0xd85a,0xdea1,0xd85a,0xdea2,0xd85a,0xdea3, - 0xd85a,0xdea4,0xd85a,0xdea5,0xd85a,0xdea6,0xd85a,0xdea7,0xd85a,0xdea8, - 0xd85a,0xdea9,0xd85a,0xdeaa,0xd85a,0xdeab,0xd85a,0xdeac,0xd85a,0xdead, - 0xd85a,0xdeae,0xd85a,0xdeaf,0xd85a,0xdeb0,0xd85a,0xdeb1,0xd85a,0xdeb2, - 0xd85a,0xdeb3,0xd85a,0xdeb4,0xd85a,0xdeb5,0xd85a,0xdeb6,0xd85a,0xdeb7, - 0xd85a,0xdeb8,0xd85a,0xdeb9,0xd85a,0xdeba,0xd85a,0xdebb,0xd85a,0xdebc, - 0xd85a,0xdebd,0xd85a,0xdebe,0xd85a,0xdebf,0xd85a,0xdec0,0xd85a,0xdec1, - 0xd85a,0xdec2,0xd85a,0xdec3,0xd85a,0xdec4,0xd85a,0xdec5,0xd85a,0xdec6, - 0xd85a,0xdec7,0xd85a,0xdec8,0xd85a,0xdec9,0xd85a,0xdeca,0xd85a,0xdecb, - 0xd85a,0xdecc,0xd85a,0xdecd,0xd85a,0xdece,0xd85a,0xdecf,0xd85a,0xded0, - 0xd85a,0xded1,0xd85a,0xded2,0xd85a,0xded3,0xd85a,0xded4,0xd85a,0xded5, - 0xd85a,0xded6,0xd85a,0xded7,0xd85a,0xded8,0xd85a,0xded9,0xd85a,0xdeda, - 0xd85a,0xdedb,0xd85a,0xdedc,0xd85a,0xdedd,0xd85a,0xdede,0xd85a,0xdedf, - 0xd85a,0xdee0,0xd85a,0xdee1,0xd85a,0xdee2,0xd85a,0xdee3,0xd85a,0xdee4, - 0xd85a,0xdee5,0xd85a,0xdee6,0xd85a,0xdee7,0xd85a,0xdee8,0xd85a,0xdee9, - 0xd85a,0xdeea,0xd85a,0xdeeb,0xd85a,0xdeec,0xd85a,0xdeed,0xd85a,0xdeee, - 0xd85a,0xdeef,0xd85a,0xdef0,0xd85a,0xdef1,0xd85a,0xdef2,0xd85a,0xdef3, - 0xd85a,0xdef4,0xd85a,0xdef5,0xd85a,0xdef6,0xd85a,0xdef7,0xd85a,0xdef8, - 0xd85a,0xdef9,0xd85a,0xdefa,0xd85a,0xdefb,0xd85a,0xdefc,0xd85a,0xdefd, - 0xd85a,0xdefe,0xd85a,0xdeff,0xd85a,0xdf00,0xd85a,0xdf01,0xd85a,0xdf02, - 0xd85a,0xdf03,0xd85a,0xdf04,0xd85a,0xdf05,0xd85a,0xdf06,0xd85a,0xdf07, - 0xd85a,0xdf08,0xd85a,0xdf09,0xd85a,0xdf0a,0xd85a,0xdf0b,0xd85a,0xdf0c, - 0xd85a,0xdf0d,0xd85a,0xdf0e,0xd85a,0xdf0f,0xd85a,0xdf10,0xd85a,0xdf11, - 0xd85a,0xdf12,0xd85a,0xdf13,0xd85a,0xdf14,0xd85a,0xdf15,0xd85a,0xdf16, - 0xd85a,0xdf17,0xd85a,0xdf18,0xd85a,0xdf19,0xd85a,0xdf1a,0xd85a,0xdf1b, - 0xd85a,0xdf1c,0xd85a,0xdf1d,0xd85a,0xdf1e,0xd85a,0xdf1f,0xd85a,0xdf20, - 0xd85a,0xdf21,0xd85a,0xdf22,0xd85a,0xdf23,0xd85a,0xdf24,0xd85a,0xdf25, - 0xd85a,0xdf26,0xd85a,0xdf27,0xd85a,0xdf28,0xd85a,0xdf29,0xd85a,0xdf2a, - 0xd85a,0xdf2b,0xd85a,0xdf2c,0xd85a,0xdf2d,0xd85a,0xdf2e,0xd85a,0xdf2f, - 0xd85a,0xdf30,0xd85a,0xdf31,0xd85a,0xdf32,0xd85a,0xdf33,0xd85a,0xdf34, - 0xd85a,0xdf35,0xd85a,0xdf36,0xd85a,0xdf37,0xd85a,0xdf38,0xd85a,0xdf39, - 0xd85a,0xdf3a,0xd85a,0xdf3b,0xd85a,0xdf3c,0xd85a,0xdf3d,0xd85a,0xdf3e, - 0xd85a,0xdf3f,0xd85a,0xdf40,0xd85a,0xdf41,0xd85a,0xdf42,0xd85a,0xdf43, - 0xd85a,0xdf44,0xd85a,0xdf45,0xd85a,0xdf46,0xd85a,0xdf47,0xd85a,0xdf48, - 0xd85a,0xdf49,0xd85a,0xdf4a,0xd85a,0xdf4b,0xd85a,0xdf4c,0xd85a,0xdf4d, - 0xd85a,0xdf4e,0xd85a,0xdf4f,0xd85a,0xdf50,0xd85a,0xdf51,0xd85a,0xdf52, - 0xd85a,0xdf53,0xd85a,0xdf54,0xd85a,0xdf55,0xd85a,0xdf56,0xd85a,0xdf57, - 0xd85a,0xdf58,0xd85a,0xdf59,0xd85a,0xdf5a,0xd85a,0xdf5b,0xd85a,0xdf5c, - 0xd85a,0xdf5d,0xd85a,0xdf5e,0xd85a,0xdf5f,0xd85a,0xdf60,0xd85a,0xdf61, - 0xd85a,0xdf62,0xd85a,0xdf63,0xd85a,0xdf64,0xd85a,0xdf65,0xd85a,0xdf66, - 0xd85a,0xdf67,0xd85a,0xdf68,0xd85a,0xdf69,0xd85a,0xdf6a,0xd85a,0xdf6b, - 0xd85a,0xdf6c,0xd85a,0xdf6d,0xd85a,0xdf6e,0xd85a,0xdf6f,0xd85a,0xdf70, - 0xd85a,0xdf71,0xd85a,0xdf72,0xd85a,0xdf73,0xd85a,0xdf74,0xd85a,0xdf75, - 0xd85a,0xdf76,0xd85a,0xdf77,0xd85a,0xdf78,0xd85a,0xdf79,0xd85a,0xdf7a, - 0xd85a,0xdf7b,0xd85a,0xdf7c,0xd85a,0xdf7d,0xd85a,0xdf7e,0xd85a,0xdf7f, - 0xd85a,0xdf80,0xd85a,0xdf81,0xd85a,0xdf82,0xd85a,0xdf83,0xd85a,0xdf84, - 0xd85a,0xdf85,0xd85a,0xdf86,0xd85a,0xdf87,0xd85a,0xdf88,0xd85a,0xdf89, - 0xd85a,0xdf8a,0xd85a,0xdf8b,0xd85a,0xdf8c,0xd85a,0xdf8d,0xd85a,0xdf8e, - 0xd85a,0xdf8f,0xd85a,0xdf90,0xd85a,0xdf91,0xd85a,0xdf92,0xd85a,0xdf93, - 0xd85a,0xdf94,0xd85a,0xdf95,0xd85a,0xdf96,0xd85a,0xdf97,0xd85a,0xdf98, - 0xd85a,0xdf99,0xd85a,0xdf9a,0xd85a,0xdf9b,0xd85a,0xdf9c,0xd85a,0xdf9d, - 0xd85a,0xdf9e,0xd85a,0xdf9f,0xd85a,0xdfa0,0xd85a,0xdfa1,0xd85a,0xdfa2, - 0xd85a,0xdfa3,0xd85a,0xdfa4,0xd85a,0xdfa5,0xd85a,0xdfa6,0xd85a,0xdfa7, - 0xd85a,0xdfa8,0xd85a,0xdfa9,0xd85a,0xdfaa,0xd85a,0xdfab,0xd85a,0xdfac, - 0xd85a,0xdfad,0xd85a,0xdfae,0xd85a,0xdfaf,0xd85a,0xdfb0,0xd85a,0xdfb1, - 0xd85a,0xdfb2,0xd85a,0xdfb3,0xd85a,0xdfb4,0xd85a,0xdfb5,0xd85a,0xdfb6, - 0xd85a,0xdfb7,0xd85a,0xdfb8,0xd85a,0xdfb9,0xd85a,0xdfba,0xd85a,0xdfbb, - 0xd85a,0xdfbc,0xd85a,0xdfbd,0xd85a,0xdfbe,0xd85a,0xdfbf,0xd85a,0xdfc0, - 0xd85a,0xdfc1,0xd85a,0xdfc2,0xd85a,0xdfc3,0xd85a,0xdfc4,0xd85a,0xdfc5, - 0xd85a,0xdfc6,0xd85a,0xdfc7,0xd85a,0xdfc8,0xd85a,0xdfc9,0xd85a,0xdfca, - 0xd85a,0xdfcb,0xd85a,0xdfcc,0xd85a,0xdfcd,0xd85a,0xdfce,0xd85a,0xdfcf, - 0xd85a,0xdfd0,0xd85a,0xdfd1,0xd85a,0xdfd2,0xd85a,0xdfd3,0xd85a,0xdfd4, - 0xd85a,0xdfd5,0xd85a,0xdfd6,0xd85a,0xdfd7,0xd85a,0xdfd8,0xd85a,0xdfd9, - 0xd85a,0xdfda,0xd85a,0xdfdb,0xd85a,0xdfdc,0xd85a,0xdfdd,0xd85a,0xdfde, - 0xd85a,0xdfdf,0xd85a,0xdfe0,0xd85a,0xdfe1,0xd85a,0xdfe2,0xd85a,0xdfe3, - 0xd85a,0xdfe4,0xd85a,0xdfe5,0xd85a,0xdfe6,0xd85a,0xdfe7,0xd85a,0xdfe8, - 0xd85a,0xdfe9,0xd85a,0xdfea,0xd85a,0xdfeb,0xd85a,0xdfec,0xd85a,0xdfed, - 0xd85a,0xdfee,0xd85a,0xdfef,0xd85a,0xdff0,0xd85a,0xdff1,0xd85a,0xdff2, - 0xd85a,0xdff3,0xd85a,0xdff4,0xd85a,0xdff5,0xd85a,0xdff6,0xd85a,0xdff7, - 0xd85a,0xdff8,0xd85a,0xdff9,0xd85a,0xdffa,0xd85a,0xdffb,0xd85a,0xdffc, - 0xd85a,0xdffd,0xd85a,0xdffe,0xd85a,0xdfff,0xd85b,0xdc00,0xd85b,0xdc01, - 0xd85b,0xdc02,0xd85b,0xdc03,0xd85b,0xdc04,0xd85b,0xdc05,0xd85b,0xdc06, - 0xd85b,0xdc07,0xd85b,0xdc08,0xd85b,0xdc09,0xd85b,0xdc0a,0xd85b,0xdc0b, - 0xd85b,0xdc0c,0xd85b,0xdc0d,0xd85b,0xdc0e,0xd85b,0xdc0f,0xd85b,0xdc10, - 0xd85b,0xdc11,0xd85b,0xdc12,0xd85b,0xdc13,0xd85b,0xdc14,0xd85b,0xdc15, - 0xd85b,0xdc16,0xd85b,0xdc17,0xd85b,0xdc18,0xd85b,0xdc19,0xd85b,0xdc1a, - 0xd85b,0xdc1b,0xd85b,0xdc1c,0xd85b,0xdc1d,0xd85b,0xdc1e,0xd85b,0xdc1f, - 0xd85b,0xdc20,0xd85b,0xdc21,0xd85b,0xdc22,0xd85b,0xdc23,0xd85b,0xdc24, - 0xd85b,0xdc25,0xd85b,0xdc26,0xd85b,0xdc27,0xd85b,0xdc28,0xd85b,0xdc29, - 0xd85b,0xdc2a,0xd85b,0xdc2b,0xd85b,0xdc2c,0xd85b,0xdc2d,0xd85b,0xdc2e, - 0xd85b,0xdc2f,0xd85b,0xdc30,0xd85b,0xdc31,0xd85b,0xdc32,0xd85b,0xdc33, - 0xd85b,0xdc34,0xd85b,0xdc35,0xd85b,0xdc36,0xd85b,0xdc37,0xd85b,0xdc38, - 0xd85b,0xdc39,0xd85b,0xdc3a,0xd85b,0xdc3b,0xd85b,0xdc3c,0xd85b,0xdc3d, - 0xd85b,0xdc3e,0xd85b,0xdc3f,0xd85b,0xdc40,0xd85b,0xdc41,0xd85b,0xdc42, - 0xd85b,0xdc43,0xd85b,0xdc44,0xd85b,0xdc45,0xd85b,0xdc46,0xd85b,0xdc47, - 0xd85b,0xdc48,0xd85b,0xdc49,0xd85b,0xdc4a,0xd85b,0xdc4b,0xd85b,0xdc4c, - 0xd85b,0xdc4d,0xd85b,0xdc4e,0xd85b,0xdc4f,0xd85b,0xdc50,0xd85b,0xdc51, - 0xd85b,0xdc52,0xd85b,0xdc53,0xd85b,0xdc54,0xd85b,0xdc55,0xd85b,0xdc56, - 0xd85b,0xdc57,0xd85b,0xdc58,0xd85b,0xdc59,0xd85b,0xdc5a,0xd85b,0xdc5b, - 0xd85b,0xdc5c,0xd85b,0xdc5d,0xd85b,0xdc5e,0xd85b,0xdc5f,0xd85b,0xdc60, - 0xd85b,0xdc61,0xd85b,0xdc62,0xd85b,0xdc63,0xd85b,0xdc64,0xd85b,0xdc65, - 0xd85b,0xdc66,0xd85b,0xdc67,0xd85b,0xdc68,0xd85b,0xdc69,0xd85b,0xdc6a, - 0xd85b,0xdc6b,0xd85b,0xdc6c,0xd85b,0xdc6d,0xd85b,0xdc6e,0xd85b,0xdc6f, - 0xd85b,0xdc70,0xd85b,0xdc71,0xd85b,0xdc72,0xd85b,0xdc73,0xd85b,0xdc74, - 0xd85b,0xdc75,0xd85b,0xdc76,0xd85b,0xdc77,0xd85b,0xdc78,0xd85b,0xdc79, - 0xd85b,0xdc7a,0xd85b,0xdc7b,0xd85b,0xdc7c,0xd85b,0xdc7d,0xd85b,0xdc7e, - 0xd85b,0xdc7f,0xd85b,0xdc80,0xd85b,0xdc81,0xd85b,0xdc82,0xd85b,0xdc83, - 0xd85b,0xdc84,0xd85b,0xdc85,0xd85b,0xdc86,0xd85b,0xdc87,0xd85b,0xdc88, - 0xd85b,0xdc89,0xd85b,0xdc8a,0xd85b,0xdc8b,0xd85b,0xdc8c,0xd85b,0xdc8d, - 0xd85b,0xdc8e,0xd85b,0xdc8f,0xd85b,0xdc90,0xd85b,0xdc91,0xd85b,0xdc92, - 0xd85b,0xdc93,0xd85b,0xdc94,0xd85b,0xdc95,0xd85b,0xdc96,0xd85b,0xdc97, - 0xd85b,0xdc98,0xd85b,0xdc99,0xd85b,0xdc9a,0xd85b,0xdc9b,0xd85b,0xdc9c, - 0xd85b,0xdc9d,0xd85b,0xdc9e,0xd85b,0xdc9f,0xd85b,0xdca0,0xd85b,0xdca1, - 0xd85b,0xdca2,0xd85b,0xdca3,0xd85b,0xdca4,0xd85b,0xdca5,0xd85b,0xdca6, - 0xd85b,0xdca7,0xd85b,0xdca8,0xd85b,0xdca9,0xd85b,0xdcaa,0xd85b,0xdcab, - 0xd85b,0xdcac,0xd85b,0xdcad,0xd85b,0xdcae,0xd85b,0xdcaf,0xd85b,0xdcb0, - 0xd85b,0xdcb1,0xd85b,0xdcb2,0xd85b,0xdcb3,0xd85b,0xdcb4,0xd85b,0xdcb5, - 0xd85b,0xdcb6,0xd85b,0xdcb7,0xd85b,0xdcb8,0xd85b,0xdcb9,0xd85b,0xdcba, - 0xd85b,0xdcbb,0xd85b,0xdcbc,0xd85b,0xdcbd,0xd85b,0xdcbe,0xd85b,0xdcbf, - 0xd85b,0xdcc0,0xd85b,0xdcc1,0xd85b,0xdcc2,0xd85b,0xdcc3,0xd85b,0xdcc4, - 0xd85b,0xdcc5,0xd85b,0xdcc6,0xd85b,0xdcc7,0xd85b,0xdcc8,0xd85b,0xdcc9, - 0xd85b,0xdcca,0xd85b,0xdccb,0xd85b,0xdccc,0xd85b,0xdccd,0xd85b,0xdcce, - 0xd85b,0xdccf,0xd85b,0xdcd0,0xd85b,0xdcd1,0xd85b,0xdcd2,0xd85b,0xdcd3, - 0xd85b,0xdcd4,0xd85b,0xdcd5,0xd85b,0xdcd6,0xd85b,0xdcd7,0xd85b,0xdcd8, - 0xd85b,0xdcd9,0xd85b,0xdcda,0xd85b,0xdcdb,0xd85b,0xdcdc,0xd85b,0xdcdd, - 0xd85b,0xdcde,0xd85b,0xdcdf,0xd85b,0xdce0,0xd85b,0xdce1,0xd85b,0xdce2, - 0xd85b,0xdce3,0xd85b,0xdce4,0xd85b,0xdce5,0xd85b,0xdce6,0xd85b,0xdce7, - 0xd85b,0xdce8,0xd85b,0xdce9,0xd85b,0xdcea,0xd85b,0xdceb,0xd85b,0xdcec, - 0xd85b,0xdced,0xd85b,0xdcee,0xd85b,0xdcef,0xd85b,0xdcf0,0xd85b,0xdcf1, - 0xd85b,0xdcf2,0xd85b,0xdcf3,0xd85b,0xdcf4,0xd85b,0xdcf5,0xd85b,0xdcf6, - 0xd85b,0xdcf7,0xd85b,0xdcf8,0xd85b,0xdcf9,0xd85b,0xdcfa,0xd85b,0xdcfb, - 0xd85b,0xdcfc,0xd85b,0xdcfd,0xd85b,0xdcfe,0xd85b,0xdcff,0xd85b,0xdd00, - 0xd85b,0xdd01,0xd85b,0xdd02,0xd85b,0xdd03,0xd85b,0xdd04,0xd85b,0xdd05, - 0xd85b,0xdd06,0xd85b,0xdd07,0xd85b,0xdd08,0xd85b,0xdd09,0xd85b,0xdd0a, - 0xd85b,0xdd0b,0xd85b,0xdd0c,0xd85b,0xdd0d,0xd85b,0xdd0e,0xd85b,0xdd0f, - 0xd85b,0xdd10,0xd85b,0xdd11,0xd85b,0xdd12,0xd85b,0xdd13,0xd85b,0xdd14, - 0xd85b,0xdd15,0xd85b,0xdd16,0xd85b,0xdd17,0xd85b,0xdd18,0xd85b,0xdd19, - 0xd85b,0xdd1a,0xd85b,0xdd1b,0xd85b,0xdd1c,0xd85b,0xdd1d,0xd85b,0xdd1e, - 0xd85b,0xdd1f,0xd85b,0xdd20,0xd85b,0xdd21,0xd85b,0xdd22,0xd85b,0xdd23, - 0xd85b,0xdd24,0xd85b,0xdd25,0xd85b,0xdd26,0xd85b,0xdd27,0xd85b,0xdd28, - 0xd85b,0xdd29,0xd85b,0xdd2a,0xd85b,0xdd2b,0xd85b,0xdd2c,0xd85b,0xdd2d, - 0xd85b,0xdd2e,0xd85b,0xdd2f,0xd85b,0xdd30,0xd85b,0xdd31,0xd85b,0xdd32, - 0xd85b,0xdd33,0xd85b,0xdd34,0xd85b,0xdd35,0xd85b,0xdd36,0xd85b,0xdd37, - 0xd85b,0xdd38,0xd85b,0xdd39,0xd85b,0xdd3a,0xd85b,0xdd3b,0xd85b,0xdd3c, - 0xd85b,0xdd3d,0xd85b,0xdd3e,0xd85b,0xdd3f,0xd85b,0xdd40,0xd85b,0xdd41, - 0xd85b,0xdd42,0xd85b,0xdd43,0xd85b,0xdd44,0xd85b,0xdd45,0xd85b,0xdd46, - 0xd85b,0xdd47,0xd85b,0xdd48,0xd85b,0xdd49,0xd85b,0xdd4a,0xd85b,0xdd4b, - 0xd85b,0xdd4c,0xd85b,0xdd4d,0xd85b,0xdd4e,0xd85b,0xdd4f,0xd85b,0xdd50, - 0xd85b,0xdd51,0xd85b,0xdd52,0xd85b,0xdd53,0xd85b,0xdd54,0xd85b,0xdd55, - 0xd85b,0xdd56,0xd85b,0xdd57,0xd85b,0xdd58,0xd85b,0xdd59,0xd85b,0xdd5a, - 0xd85b,0xdd5b,0xd85b,0xdd5c,0xd85b,0xdd5d,0xd85b,0xdd5e,0xd85b,0xdd5f, - 0xd85b,0xdd60,0xd85b,0xdd61,0xd85b,0xdd62,0xd85b,0xdd63,0xd85b,0xdd64, - 0xd85b,0xdd65,0xd85b,0xdd66,0xd85b,0xdd67,0xd85b,0xdd68,0xd85b,0xdd69, - 0xd85b,0xdd6a,0xd85b,0xdd6b,0xd85b,0xdd6c,0xd85b,0xdd6d,0xd85b,0xdd6e, - 0xd85b,0xdd6f,0xd85b,0xdd70,0xd85b,0xdd71,0xd85b,0xdd72,0xd85b,0xdd73, - 0xd85b,0xdd74,0xd85b,0xdd75,0xd85b,0xdd76,0xd85b,0xdd77,0xd85b,0xdd78, - 0xd85b,0xdd79,0xd85b,0xdd7a,0xd85b,0xdd7b,0xd85b,0xdd7c,0xd85b,0xdd7d, - 0xd85b,0xdd7e,0xd85b,0xdd7f,0xd85b,0xdd80,0xd85b,0xdd81,0xd85b,0xdd82, - 0xd85b,0xdd83,0xd85b,0xdd84,0xd85b,0xdd85,0xd85b,0xdd86,0xd85b,0xdd87, - 0xd85b,0xdd88,0xd85b,0xdd89,0xd85b,0xdd8a,0xd85b,0xdd8b,0xd85b,0xdd8c, - 0xd85b,0xdd8d,0xd85b,0xdd8e,0xd85b,0xdd8f,0xd85b,0xdd90,0xd85b,0xdd91, - 0xd85b,0xdd92,0xd85b,0xdd93,0xd85b,0xdd94,0xd85b,0xdd95,0xd85b,0xdd96, - 0xd85b,0xdd97,0xd85b,0xdd98,0xd85b,0xdd99,0xd85b,0xdd9a,0xd85b,0xdd9b, - 0xd85b,0xdd9c,0xd85b,0xdd9d,0xd85b,0xdd9e,0xd85b,0xdd9f,0xd85b,0xdda0, - 0xd85b,0xdda1,0xd85b,0xdda2,0xd85b,0xdda3,0xd85b,0xdda4,0xd85b,0xdda5, - 0xd85b,0xdda6,0xd85b,0xdda7,0xd85b,0xdda8,0xd85b,0xdda9,0xd85b,0xddaa, - 0xd85b,0xddab,0xd85b,0xddac,0xd85b,0xddad,0xd85b,0xddae,0xd85b,0xddaf, - 0xd85b,0xddb0,0xd85b,0xddb1,0xd85b,0xddb2,0xd85b,0xddb3,0xd85b,0xddb4, - 0xd85b,0xddb5,0xd85b,0xddb6,0xd85b,0xddb7,0xd85b,0xddb8,0xd85b,0xddb9, - 0xd85b,0xddba,0xd85b,0xddbb,0xd85b,0xddbc,0xd85b,0xddbd,0xd85b,0xddbe, - 0xd85b,0xddbf,0xd85b,0xddc0,0xd85b,0xddc1,0xd85b,0xddc2,0xd85b,0xddc3, - 0xd85b,0xddc4,0xd85b,0xddc5,0xd85b,0xddc6,0xd85b,0xddc7,0xd85b,0xddc8, - 0xd85b,0xddc9,0xd85b,0xddca,0xd85b,0xddcb,0xd85b,0xddcc,0xd85b,0xddcd, - 0xd85b,0xddce,0xd85b,0xddcf,0xd85b,0xddd0,0xd85b,0xddd1,0xd85b,0xddd2, - 0xd85b,0xddd3,0xd85b,0xddd4,0xd85b,0xddd5,0xd85b,0xddd6,0xd85b,0xddd7, - 0xd85b,0xddd8,0xd85b,0xddd9,0xd85b,0xddda,0xd85b,0xdddb,0xd85b,0xdddc, - 0xd85b,0xdddd,0xd85b,0xddde,0xd85b,0xdddf,0xd85b,0xdde0,0xd85b,0xdde1, - 0xd85b,0xdde2,0xd85b,0xdde3,0xd85b,0xdde4,0xd85b,0xdde5,0xd85b,0xdde6, - 0xd85b,0xdde7,0xd85b,0xdde8,0xd85b,0xdde9,0xd85b,0xddea,0xd85b,0xddeb, - 0xd85b,0xddec,0xd85b,0xdded,0xd85b,0xddee,0xd85b,0xddef,0xd85b,0xddf0, - 0xd85b,0xddf1,0xd85b,0xddf2,0xd85b,0xddf3,0xd85b,0xddf4,0xd85b,0xddf5, - 0xd85b,0xddf6,0xd85b,0xddf7,0xd85b,0xddf8,0xd85b,0xddf9,0xd85b,0xddfa, - 0xd85b,0xddfb,0xd85b,0xddfc,0xd85b,0xddfd,0xd85b,0xddfe,0xd85b,0xddff, - 0xd85b,0xde00,0xd85b,0xde01,0xd85b,0xde02,0xd85b,0xde03,0xd85b,0xde04, - 0xd85b,0xde05,0xd85b,0xde06,0xd85b,0xde07,0xd85b,0xde08,0xd85b,0xde09, - 0xd85b,0xde0a,0xd85b,0xde0b,0xd85b,0xde0c,0xd85b,0xde0d,0xd85b,0xde0e, - 0xd85b,0xde0f,0xd85b,0xde10,0xd85b,0xde11,0xd85b,0xde12,0xd85b,0xde13, - 0xd85b,0xde14,0xd85b,0xde15,0xd85b,0xde16,0xd85b,0xde17,0xd85b,0xde18, - 0xd85b,0xde19,0xd85b,0xde1a,0xd85b,0xde1b,0xd85b,0xde1c,0xd85b,0xde1d, - 0xd85b,0xde1e,0xd85b,0xde1f,0xd85b,0xde20,0xd85b,0xde21,0xd85b,0xde22, - 0xd85b,0xde23,0xd85b,0xde24,0xd85b,0xde25,0xd85b,0xde26,0xd85b,0xde27, - 0xd85b,0xde28,0xd85b,0xde29,0xd85b,0xde2a,0xd85b,0xde2b,0xd85b,0xde2c, - 0xd85b,0xde2d,0xd85b,0xde2e,0xd85b,0xde2f,0xd85b,0xde30,0xd85b,0xde31, - 0xd85b,0xde32,0xd85b,0xde33,0xd85b,0xde34,0xd85b,0xde35,0xd85b,0xde36, - 0xd85b,0xde37,0xd85b,0xde38,0xd85b,0xde39,0xd85b,0xde3a,0xd85b,0xde3b, - 0xd85b,0xde3c,0xd85b,0xde3d,0xd85b,0xde3e,0xd85b,0xde3f,0xd85b,0xde40, - 0xd85b,0xde41,0xd85b,0xde42,0xd85b,0xde43,0xd85b,0xde44,0xd85b,0xde45, - 0xd85b,0xde46,0xd85b,0xde47,0xd85b,0xde48,0xd85b,0xde49,0xd85b,0xde4a, - 0xd85b,0xde4b,0xd85b,0xde4c,0xd85b,0xde4d,0xd85b,0xde4e,0xd85b,0xde4f, - 0xd85b,0xde50,0xd85b,0xde51,0xd85b,0xde52,0xd85b,0xde53,0xd85b,0xde54, - 0xd85b,0xde55,0xd85b,0xde56,0xd85b,0xde57,0xd85b,0xde58,0xd85b,0xde59, - 0xd85b,0xde5a,0xd85b,0xde5b,0xd85b,0xde5c,0xd85b,0xde5d,0xd85b,0xde5e, - 0xd85b,0xde5f,0xd85b,0xde60,0xd85b,0xde61,0xd85b,0xde62,0xd85b,0xde63, - 0xd85b,0xde64,0xd85b,0xde65,0xd85b,0xde66,0xd85b,0xde67,0xd85b,0xde68, - 0xd85b,0xde69,0xd85b,0xde6a,0xd85b,0xde6b,0xd85b,0xde6c,0xd85b,0xde6d, - 0xd85b,0xde6e,0xd85b,0xde6f,0xd85b,0xde70,0xd85b,0xde71,0xd85b,0xde72, - 0xd85b,0xde73,0xd85b,0xde74,0xd85b,0xde75,0xd85b,0xde76,0xd85b,0xde77, - 0xd85b,0xde78,0xd85b,0xde79,0xd85b,0xde7a,0xd85b,0xde7b,0xd85b,0xde7c, - 0xd85b,0xde7d,0xd85b,0xde7e,0xd85b,0xde7f,0xd85b,0xde80,0xd85b,0xde81, - 0xd85b,0xde82,0xd85b,0xde83,0xd85b,0xde84,0xd85b,0xde85,0xd85b,0xde86, - 0xd85b,0xde87,0xd85b,0xde88,0xd85b,0xde89,0xd85b,0xde8a,0xd85b,0xde8b, - 0xd85b,0xde8c,0xd85b,0xde8d,0xd85b,0xde8e,0xd85b,0xde8f,0xd85b,0xde90, - 0xd85b,0xde91,0xd85b,0xde92,0xd85b,0xde93,0xd85b,0xde94,0xd85b,0xde95, - 0xd85b,0xde96,0xd85b,0xde97,0xd85b,0xde98,0xd85b,0xde99,0xd85b,0xde9a, - 0xd85b,0xde9b,0xd85b,0xde9c,0xd85b,0xde9d,0xd85b,0xde9e,0xd85b,0xde9f, - 0xd85b,0xdea0,0xd85b,0xdea1,0xd85b,0xdea2,0xd85b,0xdea3,0xd85b,0xdea4, - 0xd85b,0xdea5,0xd85b,0xdea6,0xd85b,0xdea7,0xd85b,0xdea8,0xd85b,0xdea9, - 0xd85b,0xdeaa,0xd85b,0xdeab,0xd85b,0xdeac,0xd85b,0xdead,0xd85b,0xdeae, - 0xd85b,0xdeaf,0xd85b,0xdeb0,0xd85b,0xdeb1,0xd85b,0xdeb2,0xd85b,0xdeb3, - 0xd85b,0xdeb4,0xd85b,0xdeb5,0xd85b,0xdeb6,0xd85b,0xdeb7,0xd85b,0xdeb8, - 0xd85b,0xdeb9,0xd85b,0xdeba,0xd85b,0xdebb,0xd85b,0xdebc,0xd85b,0xdebd, - 0xd85b,0xdebe,0xd85b,0xdebf,0xd85b,0xdec0,0xd85b,0xdec1,0xd85b,0xdec2, - 0xd85b,0xdec3,0xd85b,0xdec4,0xd85b,0xdec5,0xd85b,0xdec6,0xd85b,0xdec7, - 0xd85b,0xdec8,0xd85b,0xdec9,0xd85b,0xdeca,0xd85b,0xdecb,0xd85b,0xdecc, - 0xd85b,0xdecd,0xd85b,0xdece,0xd85b,0xdecf,0xd85b,0xded0,0xd85b,0xded1, - 0xd85b,0xded2,0xd85b,0xded3,0xd85b,0xded4,0xd85b,0xded5,0xd85b,0xded6, - 0xd85b,0xded7,0xd85b,0xded8,0xd85b,0xded9,0xd85b,0xdeda,0xd85b,0xdedb, - 0xd85b,0xdedc,0xd85b,0xdedd,0xd85b,0xdede,0xd85b,0xdedf,0xd85b,0xdee0, - 0xd85b,0xdee1,0xd85b,0xdee2,0xd85b,0xdee3,0xd85b,0xdee4,0xd85b,0xdee5, - 0xd85b,0xdee6,0xd85b,0xdee7,0xd85b,0xdee8,0xd85b,0xdee9,0xd85b,0xdeea, - 0xd85b,0xdeeb,0xd85b,0xdeec,0xd85b,0xdeed,0xd85b,0xdeee,0xd85b,0xdeef, - 0xd85b,0xdef0,0xd85b,0xdef1,0xd85b,0xdef2,0xd85b,0xdef3,0xd85b,0xdef4, - 0xd85b,0xdef5,0xd85b,0xdef6,0xd85b,0xdef7,0xd85b,0xdef8,0xd85b,0xdef9, - 0xd85b,0xdefa,0xd85b,0xdefb,0xd85b,0xdefc,0xd85b,0xdefd,0xd85b,0xdefe, - 0xd85b,0xdeff,0xd85b,0xdf00,0xd85b,0xdf01,0xd85b,0xdf02,0xd85b,0xdf03, - 0xd85b,0xdf04,0xd85b,0xdf05,0xd85b,0xdf06,0xd85b,0xdf07,0xd85b,0xdf08, - 0xd85b,0xdf09,0xd85b,0xdf0a,0xd85b,0xdf0b,0xd85b,0xdf0c,0xd85b,0xdf0d, - 0xd85b,0xdf0e,0xd85b,0xdf0f,0xd85b,0xdf10,0xd85b,0xdf11,0xd85b,0xdf12, - 0xd85b,0xdf13,0xd85b,0xdf14,0xd85b,0xdf15,0xd85b,0xdf16,0xd85b,0xdf17, - 0xd85b,0xdf18,0xd85b,0xdf19,0xd85b,0xdf1a,0xd85b,0xdf1b,0xd85b,0xdf1c, - 0xd85b,0xdf1d,0xd85b,0xdf1e,0xd85b,0xdf1f,0xd85b,0xdf20,0xd85b,0xdf21, - 0xd85b,0xdf22,0xd85b,0xdf23,0xd85b,0xdf24,0xd85b,0xdf25,0xd85b,0xdf26, - 0xd85b,0xdf27,0xd85b,0xdf28,0xd85b,0xdf29,0xd85b,0xdf2a,0xd85b,0xdf2b, - 0xd85b,0xdf2c,0xd85b,0xdf2d,0xd85b,0xdf2e,0xd85b,0xdf2f,0xd85b,0xdf30, - 0xd85b,0xdf31,0xd85b,0xdf32,0xd85b,0xdf33,0xd85b,0xdf34,0xd85b,0xdf35, - 0xd85b,0xdf36,0xd85b,0xdf37,0xd85b,0xdf38,0xd85b,0xdf39,0xd85b,0xdf3a, - 0xd85b,0xdf3b,0xd85b,0xdf3c,0xd85b,0xdf3d,0xd85b,0xdf3e,0xd85b,0xdf3f, - 0xd85b,0xdf40,0xd85b,0xdf41,0xd85b,0xdf42,0xd85b,0xdf43,0xd85b,0xdf44, - 0xd85b,0xdf45,0xd85b,0xdf46,0xd85b,0xdf47,0xd85b,0xdf48,0xd85b,0xdf49, - 0xd85b,0xdf4a,0xd85b,0xdf4b,0xd85b,0xdf4c,0xd85b,0xdf4d,0xd85b,0xdf4e, - 0xd85b,0xdf4f,0xd85b,0xdf50,0xd85b,0xdf51,0xd85b,0xdf52,0xd85b,0xdf53, - 0xd85b,0xdf54,0xd85b,0xdf55,0xd85b,0xdf56,0xd85b,0xdf57,0xd85b,0xdf58, - 0xd85b,0xdf59,0xd85b,0xdf5a,0xd85b,0xdf5b,0xd85b,0xdf5c,0xd85b,0xdf5d, - 0xd85b,0xdf5e,0xd85b,0xdf5f,0xd85b,0xdf60,0xd85b,0xdf61,0xd85b,0xdf62, - 0xd85b,0xdf63,0xd85b,0xdf64,0xd85b,0xdf65,0xd85b,0xdf66,0xd85b,0xdf67, - 0xd85b,0xdf68,0xd85b,0xdf69,0xd85b,0xdf6a,0xd85b,0xdf6b,0xd85b,0xdf6c, - 0xd85b,0xdf6d,0xd85b,0xdf6e,0xd85b,0xdf6f,0xd85b,0xdf70,0xd85b,0xdf71, - 0xd85b,0xdf72,0xd85b,0xdf73,0xd85b,0xdf74,0xd85b,0xdf75,0xd85b,0xdf76, - 0xd85b,0xdf77,0xd85b,0xdf78,0xd85b,0xdf79,0xd85b,0xdf7a,0xd85b,0xdf7b, - 0xd85b,0xdf7c,0xd85b,0xdf7d,0xd85b,0xdf7e,0xd85b,0xdf7f,0xd85b,0xdf80, - 0xd85b,0xdf81,0xd85b,0xdf82,0xd85b,0xdf83,0xd85b,0xdf84,0xd85b,0xdf85, - 0xd85b,0xdf86,0xd85b,0xdf87,0xd85b,0xdf88,0xd85b,0xdf89,0xd85b,0xdf8a, - 0xd85b,0xdf8b,0xd85b,0xdf8c,0xd85b,0xdf8d,0xd85b,0xdf8e,0xd85b,0xdf8f, - 0xd85b,0xdf90,0xd85b,0xdf91,0xd85b,0xdf92,0xd85b,0xdf93,0xd85b,0xdf94, - 0xd85b,0xdf95,0xd85b,0xdf96,0xd85b,0xdf97,0xd85b,0xdf98,0xd85b,0xdf99, - 0xd85b,0xdf9a,0xd85b,0xdf9b,0xd85b,0xdf9c,0xd85b,0xdf9d,0xd85b,0xdf9e, - 0xd85b,0xdf9f,0xd85b,0xdfa0,0xd85b,0xdfa1,0xd85b,0xdfa2,0xd85b,0xdfa3, - 0xd85b,0xdfa4,0xd85b,0xdfa5,0xd85b,0xdfa6,0xd85b,0xdfa7,0xd85b,0xdfa8, - 0xd85b,0xdfa9,0xd85b,0xdfaa,0xd85b,0xdfab,0xd85b,0xdfac,0xd85b,0xdfad, - 0xd85b,0xdfae,0xd85b,0xdfaf,0xd85b,0xdfb0,0xd85b,0xdfb1,0xd85b,0xdfb2, - 0xd85b,0xdfb3,0xd85b,0xdfb4,0xd85b,0xdfb5,0xd85b,0xdfb6,0xd85b,0xdfb7, - 0xd85b,0xdfb8,0xd85b,0xdfb9,0xd85b,0xdfba,0xd85b,0xdfbb,0xd85b,0xdfbc, - 0xd85b,0xdfbd,0xd85b,0xdfbe,0xd85b,0xdfbf,0xd85b,0xdfc0,0xd85b,0xdfc1, - 0xd85b,0xdfc2,0xd85b,0xdfc3,0xd85b,0xdfc4,0xd85b,0xdfc5,0xd85b,0xdfc6, - 0xd85b,0xdfc7,0xd85b,0xdfc8,0xd85b,0xdfc9,0xd85b,0xdfca,0xd85b,0xdfcb, - 0xd85b,0xdfcc,0xd85b,0xdfcd,0xd85b,0xdfce,0xd85b,0xdfcf,0xd85b,0xdfd0, - 0xd85b,0xdfd1,0xd85b,0xdfd2,0xd85b,0xdfd3,0xd85b,0xdfd4,0xd85b,0xdfd5, - 0xd85b,0xdfd6,0xd85b,0xdfd7,0xd85b,0xdfd8,0xd85b,0xdfd9,0xd85b,0xdfda, - 0xd85b,0xdfdb,0xd85b,0xdfdc,0xd85b,0xdfdd,0xd85b,0xdfde,0xd85b,0xdfdf, - 0xd85b,0xdfe0,0xd85b,0xdfe1,0xd85b,0xdfe2,0xd85b,0xdfe3,0xd85b,0xdfe4, - 0xd85b,0xdfe5,0xd85b,0xdfe6,0xd85b,0xdfe7,0xd85b,0xdfe8,0xd85b,0xdfe9, - 0xd85b,0xdfea,0xd85b,0xdfeb,0xd85b,0xdfec,0xd85b,0xdfed,0xd85b,0xdfee, - 0xd85b,0xdfef,0xd85b,0xdff0,0xd85b,0xdff1,0xd85b,0xdff2,0xd85b,0xdff3, - 0xd85b,0xdff4,0xd85b,0xdff5,0xd85b,0xdff6,0xd85b,0xdff7,0xd85b,0xdff8, - 0xd85b,0xdff9,0xd85b,0xdffa,0xd85b,0xdffb,0xd85b,0xdffc,0xd85b,0xdffd, - 0xd85b,0xdffe,0xd85b,0xdfff,0xd85c,0xdc00,0xd85c,0xdc01,0xd85c,0xdc02, - 0xd85c,0xdc03,0xd85c,0xdc04,0xd85c,0xdc05,0xd85c,0xdc06,0xd85c,0xdc07, - 0xd85c,0xdc08,0xd85c,0xdc09,0xd85c,0xdc0a,0xd85c,0xdc0b,0xd85c,0xdc0c, - 0xd85c,0xdc0d,0xd85c,0xdc0e,0xd85c,0xdc0f,0xd85c,0xdc10,0xd85c,0xdc11, - 0xd85c,0xdc12,0xd85c,0xdc13,0xd85c,0xdc14,0xd85c,0xdc15,0xd85c,0xdc16, - 0xd85c,0xdc17,0xd85c,0xdc18,0xd85c,0xdc19,0xd85c,0xdc1a,0xd85c,0xdc1b, - 0xd85c,0xdc1c,0xd85c,0xdc1d,0xd85c,0xdc1e,0xd85c,0xdc1f,0xd85c,0xdc20, - 0xd85c,0xdc21,0xd85c,0xdc22,0xd85c,0xdc23,0xd85c,0xdc24,0xd85c,0xdc25, - 0xd85c,0xdc26,0xd85c,0xdc27,0xd85c,0xdc28,0xd85c,0xdc29,0xd85c,0xdc2a, - 0xd85c,0xdc2b,0xd85c,0xdc2c,0xd85c,0xdc2d,0xd85c,0xdc2e,0xd85c,0xdc2f, - 0xd85c,0xdc30,0xd85c,0xdc31,0xd85c,0xdc32,0xd85c,0xdc33,0xd85c,0xdc34, - 0xd85c,0xdc35,0xd85c,0xdc36,0xd85c,0xdc37,0xd85c,0xdc38,0xd85c,0xdc39, - 0xd85c,0xdc3a,0xd85c,0xdc3b,0xd85c,0xdc3c,0xd85c,0xdc3d,0xd85c,0xdc3e, - 0xd85c,0xdc3f,0xd85c,0xdc40,0xd85c,0xdc41,0xd85c,0xdc42,0xd85c,0xdc43, - 0xd85c,0xdc44,0xd85c,0xdc45,0xd85c,0xdc46,0xd85c,0xdc47,0xd85c,0xdc48, - 0xd85c,0xdc49,0xd85c,0xdc4a,0xd85c,0xdc4b,0xd85c,0xdc4c,0xd85c,0xdc4d, - 0xd85c,0xdc4e,0xd85c,0xdc4f,0xd85c,0xdc50,0xd85c,0xdc51,0xd85c,0xdc52, - 0xd85c,0xdc53,0xd85c,0xdc54,0xd85c,0xdc55,0xd85c,0xdc56,0xd85c,0xdc57, - 0xd85c,0xdc58,0xd85c,0xdc59,0xd85c,0xdc5a,0xd85c,0xdc5b,0xd85c,0xdc5c, - 0xd85c,0xdc5d,0xd85c,0xdc5e,0xd85c,0xdc5f,0xd85c,0xdc60,0xd85c,0xdc61, - 0xd85c,0xdc62,0xd85c,0xdc63,0xd85c,0xdc64,0xd85c,0xdc65,0xd85c,0xdc66, - 0xd85c,0xdc67,0xd85c,0xdc68,0xd85c,0xdc69,0xd85c,0xdc6a,0xd85c,0xdc6b, - 0xd85c,0xdc6c,0xd85c,0xdc6d,0xd85c,0xdc6e,0xd85c,0xdc6f,0xd85c,0xdc70, - 0xd85c,0xdc71,0xd85c,0xdc72,0xd85c,0xdc73,0xd85c,0xdc74,0xd85c,0xdc75, - 0xd85c,0xdc76,0xd85c,0xdc77,0xd85c,0xdc78,0xd85c,0xdc79,0xd85c,0xdc7a, - 0xd85c,0xdc7b,0xd85c,0xdc7c,0xd85c,0xdc7d,0xd85c,0xdc7e,0xd85c,0xdc7f, - 0xd85c,0xdc80,0xd85c,0xdc81,0xd85c,0xdc82,0xd85c,0xdc83,0xd85c,0xdc84, - 0xd85c,0xdc85,0xd85c,0xdc86,0xd85c,0xdc87,0xd85c,0xdc88,0xd85c,0xdc89, - 0xd85c,0xdc8a,0xd85c,0xdc8b,0xd85c,0xdc8c,0xd85c,0xdc8d,0xd85c,0xdc8e, - 0xd85c,0xdc8f,0xd85c,0xdc90,0xd85c,0xdc91,0xd85c,0xdc92,0xd85c,0xdc93, - 0xd85c,0xdc94,0xd85c,0xdc95,0xd85c,0xdc96,0xd85c,0xdc97,0xd85c,0xdc98, - 0xd85c,0xdc99,0xd85c,0xdc9a,0xd85c,0xdc9b,0xd85c,0xdc9c,0xd85c,0xdc9d, - 0xd85c,0xdc9e,0xd85c,0xdc9f,0xd85c,0xdca0,0xd85c,0xdca1,0xd85c,0xdca2, - 0xd85c,0xdca3,0xd85c,0xdca4,0xd85c,0xdca5,0xd85c,0xdca6,0xd85c,0xdca7, - 0xd85c,0xdca8,0xd85c,0xdca9,0xd85c,0xdcaa,0xd85c,0xdcab,0xd85c,0xdcac, - 0xd85c,0xdcad,0xd85c,0xdcae,0xd85c,0xdcaf,0xd85c,0xdcb0,0xd85c,0xdcb1, - 0xd85c,0xdcb2,0xd85c,0xdcb3,0xd85c,0xdcb4,0xd85c,0xdcb5,0xd85c,0xdcb6, - 0xd85c,0xdcb7,0xd85c,0xdcb8,0xd85c,0xdcb9,0xd85c,0xdcba,0xd85c,0xdcbb, - 0xd85c,0xdcbc,0xd85c,0xdcbd,0xd85c,0xdcbe,0xd85c,0xdcbf,0xd85c,0xdcc0, - 0xd85c,0xdcc1,0xd85c,0xdcc2,0xd85c,0xdcc3,0xd85c,0xdcc4,0xd85c,0xdcc5, - 0xd85c,0xdcc6,0xd85c,0xdcc7,0xd85c,0xdcc8,0xd85c,0xdcc9,0xd85c,0xdcca, - 0xd85c,0xdccb,0xd85c,0xdccc,0xd85c,0xdccd,0xd85c,0xdcce,0xd85c,0xdccf, - 0xd85c,0xdcd0,0xd85c,0xdcd1,0xd85c,0xdcd2,0xd85c,0xdcd3,0xd85c,0xdcd4, - 0xd85c,0xdcd5,0xd85c,0xdcd6,0xd85c,0xdcd7,0xd85c,0xdcd8,0xd85c,0xdcd9, - 0xd85c,0xdcda,0xd85c,0xdcdb,0xd85c,0xdcdc,0xd85c,0xdcdd,0xd85c,0xdcde, - 0xd85c,0xdcdf,0xd85c,0xdce0,0xd85c,0xdce1,0xd85c,0xdce2,0xd85c,0xdce3, - 0xd85c,0xdce4,0xd85c,0xdce5,0xd85c,0xdce6,0xd85c,0xdce7,0xd85c,0xdce8, - 0xd85c,0xdce9,0xd85c,0xdcea,0xd85c,0xdceb,0xd85c,0xdcec,0xd85c,0xdced, - 0xd85c,0xdcee,0xd85c,0xdcef,0xd85c,0xdcf0,0xd85c,0xdcf1,0xd85c,0xdcf2, - 0xd85c,0xdcf3,0xd85c,0xdcf4,0xd85c,0xdcf5,0xd85c,0xdcf6,0xd85c,0xdcf7, - 0xd85c,0xdcf8,0xd85c,0xdcf9,0xd85c,0xdcfa,0xd85c,0xdcfb,0xd85c,0xdcfc, - 0xd85c,0xdcfd,0xd85c,0xdcfe,0xd85c,0xdcff,0xd85c,0xdd00,0xd85c,0xdd01, - 0xd85c,0xdd02,0xd85c,0xdd03,0xd85c,0xdd04,0xd85c,0xdd05,0xd85c,0xdd06, - 0xd85c,0xdd07,0xd85c,0xdd08,0xd85c,0xdd09,0xd85c,0xdd0a,0xd85c,0xdd0b, - 0xd85c,0xdd0c,0xd85c,0xdd0d,0xd85c,0xdd0e,0xd85c,0xdd0f,0xd85c,0xdd10, - 0xd85c,0xdd11,0xd85c,0xdd12,0xd85c,0xdd13,0xd85c,0xdd14,0xd85c,0xdd15, - 0xd85c,0xdd16,0xd85c,0xdd17,0xd85c,0xdd18,0xd85c,0xdd19,0xd85c,0xdd1a, - 0xd85c,0xdd1b,0xd85c,0xdd1c,0xd85c,0xdd1d,0xd85c,0xdd1e,0xd85c,0xdd1f, - 0xd85c,0xdd20,0xd85c,0xdd21,0xd85c,0xdd22,0xd85c,0xdd23,0xd85c,0xdd24, - 0xd85c,0xdd25,0xd85c,0xdd26,0xd85c,0xdd27,0xd85c,0xdd28,0xd85c,0xdd29, - 0xd85c,0xdd2a,0xd85c,0xdd2b,0xd85c,0xdd2c,0xd85c,0xdd2d,0xd85c,0xdd2e, - 0xd85c,0xdd2f,0xd85c,0xdd30,0xd85c,0xdd31,0xd85c,0xdd32,0xd85c,0xdd33, - 0xd85c,0xdd34,0xd85c,0xdd35,0xd85c,0xdd36,0xd85c,0xdd37,0xd85c,0xdd38, - 0xd85c,0xdd39,0xd85c,0xdd3a,0xd85c,0xdd3b,0xd85c,0xdd3c,0xd85c,0xdd3d, - 0xd85c,0xdd3e,0xd85c,0xdd3f,0xd85c,0xdd40,0xd85c,0xdd41,0xd85c,0xdd42, - 0xd85c,0xdd43,0xd85c,0xdd44,0xd85c,0xdd45,0xd85c,0xdd46,0xd85c,0xdd47, - 0xd85c,0xdd48,0xd85c,0xdd49,0xd85c,0xdd4a,0xd85c,0xdd4b,0xd85c,0xdd4c, - 0xd85c,0xdd4d,0xd85c,0xdd4e,0xd85c,0xdd4f,0xd85c,0xdd50,0xd85c,0xdd51, - 0xd85c,0xdd52,0xd85c,0xdd53,0xd85c,0xdd54,0xd85c,0xdd55,0xd85c,0xdd56, - 0xd85c,0xdd57,0xd85c,0xdd58,0xd85c,0xdd59,0xd85c,0xdd5a,0xd85c,0xdd5b, - 0xd85c,0xdd5c,0xd85c,0xdd5d,0xd85c,0xdd5e,0xd85c,0xdd5f,0xd85c,0xdd60, - 0xd85c,0xdd61,0xd85c,0xdd62,0xd85c,0xdd63,0xd85c,0xdd64,0xd85c,0xdd65, - 0xd85c,0xdd66,0xd85c,0xdd67,0xd85c,0xdd68,0xd85c,0xdd69,0xd85c,0xdd6a, - 0xd85c,0xdd6b,0xd85c,0xdd6c,0xd85c,0xdd6d,0xd85c,0xdd6e,0xd85c,0xdd6f, - 0xd85c,0xdd70,0xd85c,0xdd71,0xd85c,0xdd72,0xd85c,0xdd73,0xd85c,0xdd74, - 0xd85c,0xdd75,0xd85c,0xdd76,0xd85c,0xdd77,0xd85c,0xdd78,0xd85c,0xdd79, - 0xd85c,0xdd7a,0xd85c,0xdd7b,0xd85c,0xdd7c,0xd85c,0xdd7d,0xd85c,0xdd7e, - 0xd85c,0xdd7f,0xd85c,0xdd80,0xd85c,0xdd81,0xd85c,0xdd82,0xd85c,0xdd83, - 0xd85c,0xdd84,0xd85c,0xdd85,0xd85c,0xdd86,0xd85c,0xdd87,0xd85c,0xdd88, - 0xd85c,0xdd89,0xd85c,0xdd8a,0xd85c,0xdd8b,0xd85c,0xdd8c,0xd85c,0xdd8d, - 0xd85c,0xdd8e,0xd85c,0xdd8f,0xd85c,0xdd90,0xd85c,0xdd91,0xd85c,0xdd92, - 0xd85c,0xdd93,0xd85c,0xdd94,0xd85c,0xdd95,0xd85c,0xdd96,0xd85c,0xdd97, - 0xd85c,0xdd98,0xd85c,0xdd99,0xd85c,0xdd9a,0xd85c,0xdd9b,0xd85c,0xdd9c, - 0xd85c,0xdd9d,0xd85c,0xdd9e,0xd85c,0xdd9f,0xd85c,0xdda0,0xd85c,0xdda1, - 0xd85c,0xdda2,0xd85c,0xdda3,0xd85c,0xdda4,0xd85c,0xdda5,0xd85c,0xdda6, - 0xd85c,0xdda7,0xd85c,0xdda8,0xd85c,0xdda9,0xd85c,0xddaa,0xd85c,0xddab, - 0xd85c,0xddac,0xd85c,0xddad,0xd85c,0xddae,0xd85c,0xddaf,0xd85c,0xddb0, - 0xd85c,0xddb1,0xd85c,0xddb2,0xd85c,0xddb3,0xd85c,0xddb4,0xd85c,0xddb5, - 0xd85c,0xddb6,0xd85c,0xddb7,0xd85c,0xddb8,0xd85c,0xddb9,0xd85c,0xddba, - 0xd85c,0xddbb,0xd85c,0xddbc,0xd85c,0xddbd,0xd85c,0xddbe,0xd85c,0xddbf, - 0xd85c,0xddc0,0xd85c,0xddc1,0xd85c,0xddc2,0xd85c,0xddc3,0xd85c,0xddc4, - 0xd85c,0xddc5,0xd85c,0xddc6,0xd85c,0xddc7,0xd85c,0xddc8,0xd85c,0xddc9, - 0xd85c,0xddca,0xd85c,0xddcb,0xd85c,0xddcc,0xd85c,0xddcd,0xd85c,0xddce, - 0xd85c,0xddcf,0xd85c,0xddd0,0xd85c,0xddd1,0xd85c,0xddd2,0xd85c,0xddd3, - 0xd85c,0xddd4,0xd85c,0xddd5,0xd85c,0xddd6,0xd85c,0xddd7,0xd85c,0xddd8, - 0xd85c,0xddd9,0xd85c,0xddda,0xd85c,0xdddb,0xd85c,0xdddc,0xd85c,0xdddd, - 0xd85c,0xddde,0xd85c,0xdddf,0xd85c,0xdde0,0xd85c,0xdde1,0xd85c,0xdde2, - 0xd85c,0xdde3,0xd85c,0xdde4,0xd85c,0xdde5,0xd85c,0xdde6,0xd85c,0xdde7, - 0xd85c,0xdde8,0xd85c,0xdde9,0xd85c,0xddea,0xd85c,0xddeb,0xd85c,0xddec, - 0xd85c,0xdded,0xd85c,0xddee,0xd85c,0xddef,0xd85c,0xddf0,0xd85c,0xddf1, - 0xd85c,0xddf2,0xd85c,0xddf3,0xd85c,0xddf4,0xd85c,0xddf5,0xd85c,0xddf6, - 0xd85c,0xddf7,0xd85c,0xddf8,0xd85c,0xddf9,0xd85c,0xddfa,0xd85c,0xddfb, - 0xd85c,0xddfc,0xd85c,0xddfd,0xd85c,0xddfe,0xd85c,0xddff,0xd85c,0xde00, - 0xd85c,0xde01,0xd85c,0xde02,0xd85c,0xde03,0xd85c,0xde04,0xd85c,0xde05, - 0xd85c,0xde06,0xd85c,0xde07,0xd85c,0xde08,0xd85c,0xde09,0xd85c,0xde0a, - 0xd85c,0xde0b,0xd85c,0xde0c,0xd85c,0xde0d,0xd85c,0xde0e,0xd85c,0xde0f, - 0xd85c,0xde10,0xd85c,0xde11,0xd85c,0xde12,0xd85c,0xde13,0xd85c,0xde14, - 0xd85c,0xde15,0xd85c,0xde16,0xd85c,0xde17,0xd85c,0xde18,0xd85c,0xde19, - 0xd85c,0xde1a,0xd85c,0xde1b,0xd85c,0xde1c,0xd85c,0xde1d,0xd85c,0xde1e, - 0xd85c,0xde1f,0xd85c,0xde20,0xd85c,0xde21,0xd85c,0xde22,0xd85c,0xde23, - 0xd85c,0xde24,0xd85c,0xde25,0xd85c,0xde26,0xd85c,0xde27,0xd85c,0xde28, - 0xd85c,0xde29,0xd85c,0xde2a,0xd85c,0xde2b,0xd85c,0xde2c,0xd85c,0xde2d, - 0xd85c,0xde2e,0xd85c,0xde2f,0xd85c,0xde30,0xd85c,0xde31,0xd85c,0xde32, - 0xd85c,0xde33,0xd85c,0xde34,0xd85c,0xde35,0xd85c,0xde36,0xd85c,0xde37, - 0xd85c,0xde38,0xd85c,0xde39,0xd85c,0xde3a,0xd85c,0xde3b,0xd85c,0xde3c, - 0xd85c,0xde3d,0xd85c,0xde3e,0xd85c,0xde3f,0xd85c,0xde40,0xd85c,0xde41, - 0xd85c,0xde42,0xd85c,0xde43,0xd85c,0xde44,0xd85c,0xde45,0xd85c,0xde46, - 0xd85c,0xde47,0xd85c,0xde48,0xd85c,0xde49,0xd85c,0xde4a,0xd85c,0xde4b, - 0xd85c,0xde4c,0xd85c,0xde4d,0xd85c,0xde4e,0xd85c,0xde4f,0xd85c,0xde50, - 0xd85c,0xde51,0xd85c,0xde52,0xd85c,0xde53,0xd85c,0xde54,0xd85c,0xde55, - 0xd85c,0xde56,0xd85c,0xde57,0xd85c,0xde58,0xd85c,0xde59,0xd85c,0xde5a, - 0xd85c,0xde5b,0xd85c,0xde5c,0xd85c,0xde5d,0xd85c,0xde5e,0xd85c,0xde5f, - 0xd85c,0xde60,0xd85c,0xde61,0xd85c,0xde62,0xd85c,0xde63,0xd85c,0xde64, - 0xd85c,0xde65,0xd85c,0xde66,0xd85c,0xde67,0xd85c,0xde68,0xd85c,0xde69, - 0xd85c,0xde6a,0xd85c,0xde6b,0xd85c,0xde6c,0xd85c,0xde6d,0xd85c,0xde6e, - 0xd85c,0xde6f,0xd85c,0xde70,0xd85c,0xde71,0xd85c,0xde72,0xd85c,0xde73, - 0xd85c,0xde74,0xd85c,0xde75,0xd85c,0xde76,0xd85c,0xde77,0xd85c,0xde78, - 0xd85c,0xde79,0xd85c,0xde7a,0xd85c,0xde7b,0xd85c,0xde7c,0xd85c,0xde7d, - 0xd85c,0xde7e,0xd85c,0xde7f,0xd85c,0xde80,0xd85c,0xde81,0xd85c,0xde82, - 0xd85c,0xde83,0xd85c,0xde84,0xd85c,0xde85,0xd85c,0xde86,0xd85c,0xde87, - 0xd85c,0xde88,0xd85c,0xde89,0xd85c,0xde8a,0xd85c,0xde8b,0xd85c,0xde8c, - 0xd85c,0xde8d,0xd85c,0xde8e,0xd85c,0xde8f,0xd85c,0xde90,0xd85c,0xde91, - 0xd85c,0xde92,0xd85c,0xde93,0xd85c,0xde94,0xd85c,0xde95,0xd85c,0xde96, - 0xd85c,0xde97,0xd85c,0xde98,0xd85c,0xde99,0xd85c,0xde9a,0xd85c,0xde9b, - 0xd85c,0xde9c,0xd85c,0xde9d,0xd85c,0xde9e,0xd85c,0xde9f,0xd85c,0xdea0, - 0xd85c,0xdea1,0xd85c,0xdea2,0xd85c,0xdea3,0xd85c,0xdea4,0xd85c,0xdea5, - 0xd85c,0xdea6,0xd85c,0xdea7,0xd85c,0xdea8,0xd85c,0xdea9,0xd85c,0xdeaa, - 0xd85c,0xdeab,0xd85c,0xdeac,0xd85c,0xdead,0xd85c,0xdeae,0xd85c,0xdeaf, - 0xd85c,0xdeb0,0xd85c,0xdeb1,0xd85c,0xdeb2,0xd85c,0xdeb3,0xd85c,0xdeb4, - 0xd85c,0xdeb5,0xd85c,0xdeb6,0xd85c,0xdeb7,0xd85c,0xdeb8,0xd85c,0xdeb9, - 0xd85c,0xdeba,0xd85c,0xdebb,0xd85c,0xdebc,0xd85c,0xdebd,0xd85c,0xdebe, - 0xd85c,0xdebf,0xd85c,0xdec0,0xd85c,0xdec1,0xd85c,0xdec2,0xd85c,0xdec3, - 0xd85c,0xdec4,0xd85c,0xdec5,0xd85c,0xdec6,0xd85c,0xdec7,0xd85c,0xdec8, - 0xd85c,0xdec9,0xd85c,0xdeca,0xd85c,0xdecb,0xd85c,0xdecc,0xd85c,0xdecd, - 0xd85c,0xdece,0xd85c,0xdecf,0xd85c,0xded0,0xd85c,0xded1,0xd85c,0xded2, - 0xd85c,0xded3,0xd85c,0xded4,0xd85c,0xded5,0xd85c,0xded6,0xd85c,0xded7, - 0xd85c,0xded8,0xd85c,0xded9,0xd85c,0xdeda,0xd85c,0xdedb,0xd85c,0xdedc, - 0xd85c,0xdedd,0xd85c,0xdede,0xd85c,0xdedf,0xd85c,0xdee0,0xd85c,0xdee1, - 0xd85c,0xdee2,0xd85c,0xdee3,0xd85c,0xdee4,0xd85c,0xdee5,0xd85c,0xdee6, - 0xd85c,0xdee7,0xd85c,0xdee8,0xd85c,0xdee9,0xd85c,0xdeea,0xd85c,0xdeeb, - 0xd85c,0xdeec,0xd85c,0xdeed,0xd85c,0xdeee,0xd85c,0xdeef,0xd85c,0xdef0, - 0xd85c,0xdef1,0xd85c,0xdef2,0xd85c,0xdef3,0xd85c,0xdef4,0xd85c,0xdef5, - 0xd85c,0xdef6,0xd85c,0xdef7,0xd85c,0xdef8,0xd85c,0xdef9,0xd85c,0xdefa, - 0xd85c,0xdefb,0xd85c,0xdefc,0xd85c,0xdefd,0xd85c,0xdefe,0xd85c,0xdeff, - 0xd85c,0xdf00,0xd85c,0xdf01,0xd85c,0xdf02,0xd85c,0xdf03,0xd85c,0xdf04, - 0xd85c,0xdf05,0xd85c,0xdf06,0xd85c,0xdf07,0xd85c,0xdf08,0xd85c,0xdf09, - 0xd85c,0xdf0a,0xd85c,0xdf0b,0xd85c,0xdf0c,0xd85c,0xdf0d,0xd85c,0xdf0e, - 0xd85c,0xdf0f,0xd85c,0xdf10,0xd85c,0xdf11,0xd85c,0xdf12,0xd85c,0xdf13, - 0xd85c,0xdf14,0xd85c,0xdf15,0xd85c,0xdf16,0xd85c,0xdf17,0xd85c,0xdf18, - 0xd85c,0xdf19,0xd85c,0xdf1a,0xd85c,0xdf1b,0xd85c,0xdf1c,0xd85c,0xdf1d, - 0xd85c,0xdf1e,0xd85c,0xdf1f,0xd85c,0xdf20,0xd85c,0xdf21,0xd85c,0xdf22, - 0xd85c,0xdf23,0xd85c,0xdf24,0xd85c,0xdf25,0xd85c,0xdf26,0xd85c,0xdf27, - 0xd85c,0xdf28,0xd85c,0xdf29,0xd85c,0xdf2a,0xd85c,0xdf2b,0xd85c,0xdf2c, - 0xd85c,0xdf2d,0xd85c,0xdf2e,0xd85c,0xdf2f,0xd85c,0xdf30,0xd85c,0xdf31, - 0xd85c,0xdf32,0xd85c,0xdf33,0xd85c,0xdf34,0xd85c,0xdf35,0xd85c,0xdf36, - 0xd85c,0xdf37,0xd85c,0xdf38,0xd85c,0xdf39,0xd85c,0xdf3a,0xd85c,0xdf3b, - 0xd85c,0xdf3c,0xd85c,0xdf3d,0xd85c,0xdf3e,0xd85c,0xdf3f,0xd85c,0xdf40, - 0xd85c,0xdf41,0xd85c,0xdf42,0xd85c,0xdf43,0xd85c,0xdf44,0xd85c,0xdf45, - 0xd85c,0xdf46,0xd85c,0xdf47,0xd85c,0xdf48,0xd85c,0xdf49,0xd85c,0xdf4a, - 0xd85c,0xdf4b,0xd85c,0xdf4c,0xd85c,0xdf4d,0xd85c,0xdf4e,0xd85c,0xdf4f, - 0xd85c,0xdf50,0xd85c,0xdf51,0xd85c,0xdf52,0xd85c,0xdf53,0xd85c,0xdf54, - 0xd85c,0xdf55,0xd85c,0xdf56,0xd85c,0xdf57,0xd85c,0xdf58,0xd85c,0xdf59, - 0xd85c,0xdf5a,0xd85c,0xdf5b,0xd85c,0xdf5c,0xd85c,0xdf5d,0xd85c,0xdf5e, - 0xd85c,0xdf5f,0xd85c,0xdf60,0xd85c,0xdf61,0xd85c,0xdf62,0xd85c,0xdf63, - 0xd85c,0xdf64,0xd85c,0xdf65,0xd85c,0xdf66,0xd85c,0xdf67,0xd85c,0xdf68, - 0xd85c,0xdf69,0xd85c,0xdf6a,0xd85c,0xdf6b,0xd85c,0xdf6c,0xd85c,0xdf6d, - 0xd85c,0xdf6e,0xd85c,0xdf6f,0xd85c,0xdf70,0xd85c,0xdf71,0xd85c,0xdf72, - 0xd85c,0xdf73,0xd85c,0xdf74,0xd85c,0xdf75,0xd85c,0xdf76,0xd85c,0xdf77, - 0xd85c,0xdf78,0xd85c,0xdf79,0xd85c,0xdf7a,0xd85c,0xdf7b,0xd85c,0xdf7c, - 0xd85c,0xdf7d,0xd85c,0xdf7e,0xd85c,0xdf7f,0xd85c,0xdf80,0xd85c,0xdf81, - 0xd85c,0xdf82,0xd85c,0xdf83,0xd85c,0xdf84,0xd85c,0xdf85,0xd85c,0xdf86, - 0xd85c,0xdf87,0xd85c,0xdf88,0xd85c,0xdf89,0xd85c,0xdf8a,0xd85c,0xdf8b, - 0xd85c,0xdf8c,0xd85c,0xdf8d,0xd85c,0xdf8e,0xd85c,0xdf8f,0xd85c,0xdf90, - 0xd85c,0xdf91,0xd85c,0xdf92,0xd85c,0xdf93,0xd85c,0xdf94,0xd85c,0xdf95, - 0xd85c,0xdf96,0xd85c,0xdf97,0xd85c,0xdf98,0xd85c,0xdf99,0xd85c,0xdf9a, - 0xd85c,0xdf9b,0xd85c,0xdf9c,0xd85c,0xdf9d,0xd85c,0xdf9e,0xd85c,0xdf9f, - 0xd85c,0xdfa0,0xd85c,0xdfa1,0xd85c,0xdfa2,0xd85c,0xdfa3,0xd85c,0xdfa4, - 0xd85c,0xdfa5,0xd85c,0xdfa6,0xd85c,0xdfa7,0xd85c,0xdfa8,0xd85c,0xdfa9, - 0xd85c,0xdfaa,0xd85c,0xdfab,0xd85c,0xdfac,0xd85c,0xdfad,0xd85c,0xdfae, - 0xd85c,0xdfaf,0xd85c,0xdfb0,0xd85c,0xdfb1,0xd85c,0xdfb2,0xd85c,0xdfb3, - 0xd85c,0xdfb4,0xd85c,0xdfb5,0xd85c,0xdfb6,0xd85c,0xdfb7,0xd85c,0xdfb8, - 0xd85c,0xdfb9,0xd85c,0xdfba,0xd85c,0xdfbb,0xd85c,0xdfbc,0xd85c,0xdfbd, - 0xd85c,0xdfbe,0xd85c,0xdfbf,0xd85c,0xdfc0,0xd85c,0xdfc1,0xd85c,0xdfc2, - 0xd85c,0xdfc3,0xd85c,0xdfc4,0xd85c,0xdfc5,0xd85c,0xdfc6,0xd85c,0xdfc7, - 0xd85c,0xdfc8,0xd85c,0xdfc9,0xd85c,0xdfca,0xd85c,0xdfcb,0xd85c,0xdfcc, - 0xd85c,0xdfcd,0xd85c,0xdfce,0xd85c,0xdfcf,0xd85c,0xdfd0,0xd85c,0xdfd1, - 0xd85c,0xdfd2,0xd85c,0xdfd3,0xd85c,0xdfd4,0xd85c,0xdfd5,0xd85c,0xdfd6, - 0xd85c,0xdfd7,0xd85c,0xdfd8,0xd85c,0xdfd9,0xd85c,0xdfda,0xd85c,0xdfdb, - 0xd85c,0xdfdc,0xd85c,0xdfdd,0xd85c,0xdfde,0xd85c,0xdfdf,0xd85c,0xdfe0, - 0xd85c,0xdfe1,0xd85c,0xdfe2,0xd85c,0xdfe3,0xd85c,0xdfe4,0xd85c,0xdfe5, - 0xd85c,0xdfe6,0xd85c,0xdfe7,0xd85c,0xdfe8,0xd85c,0xdfe9,0xd85c,0xdfea, - 0xd85c,0xdfeb,0xd85c,0xdfec,0xd85c,0xdfed,0xd85c,0xdfee,0xd85c,0xdfef, - 0xd85c,0xdff0,0xd85c,0xdff1,0xd85c,0xdff2,0xd85c,0xdff3,0xd85c,0xdff4, - 0xd85c,0xdff5,0xd85c,0xdff6,0xd85c,0xdff7,0xd85c,0xdff8,0xd85c,0xdff9, - 0xd85c,0xdffa,0xd85c,0xdffb,0xd85c,0xdffc,0xd85c,0xdffd,0xd85c,0xdffe, - 0xd85c,0xdfff,0xd85d,0xdc00,0xd85d,0xdc01,0xd85d,0xdc02,0xd85d,0xdc03, - 0xd85d,0xdc04,0xd85d,0xdc05,0xd85d,0xdc06,0xd85d,0xdc07,0xd85d,0xdc08, - 0xd85d,0xdc09,0xd85d,0xdc0a,0xd85d,0xdc0b,0xd85d,0xdc0c,0xd85d,0xdc0d, - 0xd85d,0xdc0e,0xd85d,0xdc0f,0xd85d,0xdc10,0xd85d,0xdc11,0xd85d,0xdc12, - 0xd85d,0xdc13,0xd85d,0xdc14,0xd85d,0xdc15,0xd85d,0xdc16,0xd85d,0xdc17, - 0xd85d,0xdc18,0xd85d,0xdc19,0xd85d,0xdc1a,0xd85d,0xdc1b,0xd85d,0xdc1c, - 0xd85d,0xdc1d,0xd85d,0xdc1e,0xd85d,0xdc1f,0xd85d,0xdc20,0xd85d,0xdc21, - 0xd85d,0xdc22,0xd85d,0xdc23,0xd85d,0xdc24,0xd85d,0xdc25,0xd85d,0xdc26, - 0xd85d,0xdc27,0xd85d,0xdc28,0xd85d,0xdc29,0xd85d,0xdc2a,0xd85d,0xdc2b, - 0xd85d,0xdc2c,0xd85d,0xdc2d,0xd85d,0xdc2e,0xd85d,0xdc2f,0xd85d,0xdc30, - 0xd85d,0xdc31,0xd85d,0xdc32,0xd85d,0xdc33,0xd85d,0xdc34,0xd85d,0xdc35, - 0xd85d,0xdc36,0xd85d,0xdc37,0xd85d,0xdc38,0xd85d,0xdc39,0xd85d,0xdc3a, - 0xd85d,0xdc3b,0xd85d,0xdc3c,0xd85d,0xdc3d,0xd85d,0xdc3e,0xd85d,0xdc3f, - 0xd85d,0xdc40,0xd85d,0xdc41,0xd85d,0xdc42,0xd85d,0xdc43,0xd85d,0xdc44, - 0xd85d,0xdc45,0xd85d,0xdc46,0xd85d,0xdc47,0xd85d,0xdc48,0xd85d,0xdc49, - 0xd85d,0xdc4a,0xd85d,0xdc4b,0xd85d,0xdc4c,0xd85d,0xdc4d,0xd85d,0xdc4e, - 0xd85d,0xdc4f,0xd85d,0xdc50,0xd85d,0xdc51,0xd85d,0xdc52,0xd85d,0xdc53, - 0xd85d,0xdc54,0xd85d,0xdc55,0xd85d,0xdc56,0xd85d,0xdc57,0xd85d,0xdc58, - 0xd85d,0xdc59,0xd85d,0xdc5a,0xd85d,0xdc5b,0xd85d,0xdc5c,0xd85d,0xdc5d, - 0xd85d,0xdc5e,0xd85d,0xdc5f,0xd85d,0xdc60,0xd85d,0xdc61,0xd85d,0xdc62, - 0xd85d,0xdc63,0xd85d,0xdc64,0xd85d,0xdc65,0xd85d,0xdc66,0xd85d,0xdc67, - 0xd85d,0xdc68,0xd85d,0xdc69,0xd85d,0xdc6a,0xd85d,0xdc6b,0xd85d,0xdc6c, - 0xd85d,0xdc6d,0xd85d,0xdc6e,0xd85d,0xdc6f,0xd85d,0xdc70,0xd85d,0xdc71, - 0xd85d,0xdc72,0xd85d,0xdc73,0xd85d,0xdc74,0xd85d,0xdc75,0xd85d,0xdc76, - 0xd85d,0xdc77,0xd85d,0xdc78,0xd85d,0xdc79,0xd85d,0xdc7a,0xd85d,0xdc7b, - 0xd85d,0xdc7c,0xd85d,0xdc7d,0xd85d,0xdc7e,0xd85d,0xdc7f,0xd85d,0xdc80, - 0xd85d,0xdc81,0xd85d,0xdc82,0xd85d,0xdc83,0xd85d,0xdc84,0xd85d,0xdc85, - 0xd85d,0xdc86,0xd85d,0xdc87,0xd85d,0xdc88,0xd85d,0xdc89,0xd85d,0xdc8a, - 0xd85d,0xdc8b,0xd85d,0xdc8c,0xd85d,0xdc8d,0xd85d,0xdc8e,0xd85d,0xdc8f, - 0xd85d,0xdc90,0xd85d,0xdc91,0xd85d,0xdc92,0xd85d,0xdc93,0xd85d,0xdc94, - 0xd85d,0xdc95,0xd85d,0xdc96,0xd85d,0xdc97,0xd85d,0xdc98,0xd85d,0xdc99, - 0xd85d,0xdc9a,0xd85d,0xdc9b,0xd85d,0xdc9c,0xd85d,0xdc9d,0xd85d,0xdc9e, - 0xd85d,0xdc9f,0xd85d,0xdca0,0xd85d,0xdca1,0xd85d,0xdca2,0xd85d,0xdca3, - 0xd85d,0xdca4,0xd85d,0xdca5,0xd85d,0xdca6,0xd85d,0xdca7,0xd85d,0xdca8, - 0xd85d,0xdca9,0xd85d,0xdcaa,0xd85d,0xdcab,0xd85d,0xdcac,0xd85d,0xdcad, - 0xd85d,0xdcae,0xd85d,0xdcaf,0xd85d,0xdcb0,0xd85d,0xdcb1,0xd85d,0xdcb2, - 0xd85d,0xdcb3,0xd85d,0xdcb4,0xd85d,0xdcb5,0xd85d,0xdcb6,0xd85d,0xdcb7, - 0xd85d,0xdcb8,0xd85d,0xdcb9,0xd85d,0xdcba,0xd85d,0xdcbb,0xd85d,0xdcbc, - 0xd85d,0xdcbd,0xd85d,0xdcbe,0xd85d,0xdcbf,0xd85d,0xdcc0,0xd85d,0xdcc1, - 0xd85d,0xdcc2,0xd85d,0xdcc3,0xd85d,0xdcc4,0xd85d,0xdcc5,0xd85d,0xdcc6, - 0xd85d,0xdcc7,0xd85d,0xdcc8,0xd85d,0xdcc9,0xd85d,0xdcca,0xd85d,0xdccb, - 0xd85d,0xdccc,0xd85d,0xdccd,0xd85d,0xdcce,0xd85d,0xdccf,0xd85d,0xdcd0, - 0xd85d,0xdcd1,0xd85d,0xdcd2,0xd85d,0xdcd3,0xd85d,0xdcd4,0xd85d,0xdcd5, - 0xd85d,0xdcd6,0xd85d,0xdcd7,0xd85d,0xdcd8,0xd85d,0xdcd9,0xd85d,0xdcda, - 0xd85d,0xdcdb,0xd85d,0xdcdc,0xd85d,0xdcdd,0xd85d,0xdcde,0xd85d,0xdcdf, - 0xd85d,0xdce0,0xd85d,0xdce1,0xd85d,0xdce2,0xd85d,0xdce3,0xd85d,0xdce4, - 0xd85d,0xdce5,0xd85d,0xdce6,0xd85d,0xdce7,0xd85d,0xdce8,0xd85d,0xdce9, - 0xd85d,0xdcea,0xd85d,0xdceb,0xd85d,0xdcec,0xd85d,0xdced,0xd85d,0xdcee, - 0xd85d,0xdcef,0xd85d,0xdcf0,0xd85d,0xdcf1,0xd85d,0xdcf2,0xd85d,0xdcf3, - 0xd85d,0xdcf4,0xd85d,0xdcf5,0xd85d,0xdcf6,0xd85d,0xdcf7,0xd85d,0xdcf8, - 0xd85d,0xdcf9,0xd85d,0xdcfa,0xd85d,0xdcfb,0xd85d,0xdcfc,0xd85d,0xdcfd, - 0xd85d,0xdcfe,0xd85d,0xdcff,0xd85d,0xdd00,0xd85d,0xdd01,0xd85d,0xdd02, - 0xd85d,0xdd03,0xd85d,0xdd04,0xd85d,0xdd05,0xd85d,0xdd06,0xd85d,0xdd07, - 0xd85d,0xdd08,0xd85d,0xdd09,0xd85d,0xdd0a,0xd85d,0xdd0b,0xd85d,0xdd0c, - 0xd85d,0xdd0d,0xd85d,0xdd0e,0xd85d,0xdd0f,0xd85d,0xdd10,0xd85d,0xdd11, - 0xd85d,0xdd12,0xd85d,0xdd13,0xd85d,0xdd14,0xd85d,0xdd15,0xd85d,0xdd16, - 0xd85d,0xdd17,0xd85d,0xdd18,0xd85d,0xdd19,0xd85d,0xdd1a,0xd85d,0xdd1b, - 0xd85d,0xdd1c,0xd85d,0xdd1d,0xd85d,0xdd1e,0xd85d,0xdd1f,0xd85d,0xdd20, - 0xd85d,0xdd21,0xd85d,0xdd22,0xd85d,0xdd23,0xd85d,0xdd24,0xd85d,0xdd25, - 0xd85d,0xdd26,0xd85d,0xdd27,0xd85d,0xdd28,0xd85d,0xdd29,0xd85d,0xdd2a, - 0xd85d,0xdd2b,0xd85d,0xdd2c,0xd85d,0xdd2d,0xd85d,0xdd2e,0xd85d,0xdd2f, - 0xd85d,0xdd30,0xd85d,0xdd31,0xd85d,0xdd32,0xd85d,0xdd33,0xd85d,0xdd34, - 0xd85d,0xdd35,0xd85d,0xdd36,0xd85d,0xdd37,0xd85d,0xdd38,0xd85d,0xdd39, - 0xd85d,0xdd3a,0xd85d,0xdd3b,0xd85d,0xdd3c,0xd85d,0xdd3d,0xd85d,0xdd3e, - 0xd85d,0xdd3f,0xd85d,0xdd40,0xd85d,0xdd41,0xd85d,0xdd42,0xd85d,0xdd43, - 0xd85d,0xdd44,0xd85d,0xdd45,0xd85d,0xdd46,0xd85d,0xdd47,0xd85d,0xdd48, - 0xd85d,0xdd49,0xd85d,0xdd4a,0xd85d,0xdd4b,0xd85d,0xdd4c,0xd85d,0xdd4d, - 0xd85d,0xdd4e,0xd85d,0xdd4f,0xd85d,0xdd50,0xd85d,0xdd51,0xd85d,0xdd52, - 0xd85d,0xdd53,0xd85d,0xdd54,0xd85d,0xdd55,0xd85d,0xdd56,0xd85d,0xdd57, - 0xd85d,0xdd58,0xd85d,0xdd59,0xd85d,0xdd5a,0xd85d,0xdd5b,0xd85d,0xdd5c, - 0xd85d,0xdd5d,0xd85d,0xdd5e,0xd85d,0xdd5f,0xd85d,0xdd60,0xd85d,0xdd61, - 0xd85d,0xdd62,0xd85d,0xdd63,0xd85d,0xdd64,0xd85d,0xdd65,0xd85d,0xdd66, - 0xd85d,0xdd67,0xd85d,0xdd68,0xd85d,0xdd69,0xd85d,0xdd6a,0xd85d,0xdd6b, - 0xd85d,0xdd6c,0xd85d,0xdd6d,0xd85d,0xdd6e,0xd85d,0xdd6f,0xd85d,0xdd70, - 0xd85d,0xdd71,0xd85d,0xdd72,0xd85d,0xdd73,0xd85d,0xdd74,0xd85d,0xdd75, - 0xd85d,0xdd76,0xd85d,0xdd77,0xd85d,0xdd78,0xd85d,0xdd79,0xd85d,0xdd7a, - 0xd85d,0xdd7b,0xd85d,0xdd7c,0xd85d,0xdd7d,0xd85d,0xdd7e,0xd85d,0xdd7f, - 0xd85d,0xdd80,0xd85d,0xdd81,0xd85d,0xdd82,0xd85d,0xdd83,0xd85d,0xdd84, - 0xd85d,0xdd85,0xd85d,0xdd86,0xd85d,0xdd87,0xd85d,0xdd88,0xd85d,0xdd89, - 0xd85d,0xdd8a,0xd85d,0xdd8b,0xd85d,0xdd8c,0xd85d,0xdd8d,0xd85d,0xdd8e, - 0xd85d,0xdd8f,0xd85d,0xdd90,0xd85d,0xdd91,0xd85d,0xdd92,0xd85d,0xdd93, - 0xd85d,0xdd94,0xd85d,0xdd95,0xd85d,0xdd96,0xd85d,0xdd97,0xd85d,0xdd98, - 0xd85d,0xdd99,0xd85d,0xdd9a,0xd85d,0xdd9b,0xd85d,0xdd9c,0xd85d,0xdd9d, - 0xd85d,0xdd9e,0xd85d,0xdd9f,0xd85d,0xdda0,0xd85d,0xdda1,0xd85d,0xdda2, - 0xd85d,0xdda3,0xd85d,0xdda4,0xd85d,0xdda5,0xd85d,0xdda6,0xd85d,0xdda7, - 0xd85d,0xdda8,0xd85d,0xdda9,0xd85d,0xddaa,0xd85d,0xddab,0xd85d,0xddac, - 0xd85d,0xddad,0xd85d,0xddae,0xd85d,0xddaf,0xd85d,0xddb0,0xd85d,0xddb1, - 0xd85d,0xddb2,0xd85d,0xddb3,0xd85d,0xddb4,0xd85d,0xddb5,0xd85d,0xddb6, - 0xd85d,0xddb7,0xd85d,0xddb8,0xd85d,0xddb9,0xd85d,0xddba,0xd85d,0xddbb, - 0xd85d,0xddbc,0xd85d,0xddbd,0xd85d,0xddbe,0xd85d,0xddbf,0xd85d,0xddc0, - 0xd85d,0xddc1,0xd85d,0xddc2,0xd85d,0xddc3,0xd85d,0xddc4,0xd85d,0xddc5, - 0xd85d,0xddc6,0xd85d,0xddc7,0xd85d,0xddc8,0xd85d,0xddc9,0xd85d,0xddca, - 0xd85d,0xddcb,0xd85d,0xddcc,0xd85d,0xddcd,0xd85d,0xddce,0xd85d,0xddcf, - 0xd85d,0xddd0,0xd85d,0xddd1,0xd85d,0xddd2,0xd85d,0xddd3,0xd85d,0xddd4, - 0xd85d,0xddd5,0xd85d,0xddd6,0xd85d,0xddd7,0xd85d,0xddd8,0xd85d,0xddd9, - 0xd85d,0xddda,0xd85d,0xdddb,0xd85d,0xdddc,0xd85d,0xdddd,0xd85d,0xddde, - 0xd85d,0xdddf,0xd85d,0xdde0,0xd85d,0xdde1,0xd85d,0xdde2,0xd85d,0xdde3, - 0xd85d,0xdde4,0xd85d,0xdde5,0xd85d,0xdde6,0xd85d,0xdde7,0xd85d,0xdde8, - 0xd85d,0xdde9,0xd85d,0xddea,0xd85d,0xddeb,0xd85d,0xddec,0xd85d,0xdded, - 0xd85d,0xddee,0xd85d,0xddef,0xd85d,0xddf0,0xd85d,0xddf1,0xd85d,0xddf2, - 0xd85d,0xddf3,0xd85d,0xddf4,0xd85d,0xddf5,0xd85d,0xddf6,0xd85d,0xddf7, - 0xd85d,0xddf8,0xd85d,0xddf9,0xd85d,0xddfa,0xd85d,0xddfb,0xd85d,0xddfc, - 0xd85d,0xddfd,0xd85d,0xddfe,0xd85d,0xddff,0xd85d,0xde00,0xd85d,0xde01, - 0xd85d,0xde02,0xd85d,0xde03,0xd85d,0xde04,0xd85d,0xde05,0xd85d,0xde06, - 0xd85d,0xde07,0xd85d,0xde08,0xd85d,0xde09,0xd85d,0xde0a,0xd85d,0xde0b, - 0xd85d,0xde0c,0xd85d,0xde0d,0xd85d,0xde0e,0xd85d,0xde0f,0xd85d,0xde10, - 0xd85d,0xde11,0xd85d,0xde12,0xd85d,0xde13,0xd85d,0xde14,0xd85d,0xde15, - 0xd85d,0xde16,0xd85d,0xde17,0xd85d,0xde18,0xd85d,0xde19,0xd85d,0xde1a, - 0xd85d,0xde1b,0xd85d,0xde1c,0xd85d,0xde1d,0xd85d,0xde1e,0xd85d,0xde1f, - 0xd85d,0xde20,0xd85d,0xde21,0xd85d,0xde22,0xd85d,0xde23,0xd85d,0xde24, - 0xd85d,0xde25,0xd85d,0xde26,0xd85d,0xde27,0xd85d,0xde28,0xd85d,0xde29, - 0xd85d,0xde2a,0xd85d,0xde2b,0xd85d,0xde2c,0xd85d,0xde2d,0xd85d,0xde2e, - 0xd85d,0xde2f,0xd85d,0xde30,0xd85d,0xde31,0xd85d,0xde32,0xd85d,0xde33, - 0xd85d,0xde34,0xd85d,0xde35,0xd85d,0xde36,0xd85d,0xde37,0xd85d,0xde38, - 0xd85d,0xde39,0xd85d,0xde3a,0xd85d,0xde3b,0xd85d,0xde3c,0xd85d,0xde3d, - 0xd85d,0xde3e,0xd85d,0xde3f,0xd85d,0xde40,0xd85d,0xde41,0xd85d,0xde42, - 0xd85d,0xde43,0xd85d,0xde44,0xd85d,0xde45,0xd85d,0xde46,0xd85d,0xde47, - 0xd85d,0xde48,0xd85d,0xde49,0xd85d,0xde4a,0xd85d,0xde4b,0xd85d,0xde4c, - 0xd85d,0xde4d,0xd85d,0xde4e,0xd85d,0xde4f,0xd85d,0xde50,0xd85d,0xde51, - 0xd85d,0xde52,0xd85d,0xde53,0xd85d,0xde54,0xd85d,0xde55,0xd85d,0xde56, - 0xd85d,0xde57,0xd85d,0xde58,0xd85d,0xde59,0xd85d,0xde5a,0xd85d,0xde5b, - 0xd85d,0xde5c,0xd85d,0xde5d,0xd85d,0xde5e,0xd85d,0xde5f,0xd85d,0xde60, - 0xd85d,0xde61,0xd85d,0xde62,0xd85d,0xde63,0xd85d,0xde64,0xd85d,0xde65, - 0xd85d,0xde66,0xd85d,0xde67,0xd85d,0xde68,0xd85d,0xde69,0xd85d,0xde6a, - 0xd85d,0xde6b,0xd85d,0xde6c,0xd85d,0xde6d,0xd85d,0xde6e,0xd85d,0xde6f, - 0xd85d,0xde70,0xd85d,0xde71,0xd85d,0xde72,0xd85d,0xde73,0xd85d,0xde74, - 0xd85d,0xde75,0xd85d,0xde76,0xd85d,0xde77,0xd85d,0xde78,0xd85d,0xde79, - 0xd85d,0xde7a,0xd85d,0xde7b,0xd85d,0xde7c,0xd85d,0xde7d,0xd85d,0xde7e, - 0xd85d,0xde7f,0xd85d,0xde80,0xd85d,0xde81,0xd85d,0xde82,0xd85d,0xde83, - 0xd85d,0xde84,0xd85d,0xde85,0xd85d,0xde86,0xd85d,0xde87,0xd85d,0xde88, - 0xd85d,0xde89,0xd85d,0xde8a,0xd85d,0xde8b,0xd85d,0xde8c,0xd85d,0xde8d, - 0xd85d,0xde8e,0xd85d,0xde8f,0xd85d,0xde90,0xd85d,0xde91,0xd85d,0xde92, - 0xd85d,0xde93,0xd85d,0xde94,0xd85d,0xde95,0xd85d,0xde96,0xd85d,0xde97, - 0xd85d,0xde98,0xd85d,0xde99,0xd85d,0xde9a,0xd85d,0xde9b,0xd85d,0xde9c, - 0xd85d,0xde9d,0xd85d,0xde9e,0xd85d,0xde9f,0xd85d,0xdea0,0xd85d,0xdea1, - 0xd85d,0xdea2,0xd85d,0xdea3,0xd85d,0xdea4,0xd85d,0xdea5,0xd85d,0xdea6, - 0xd85d,0xdea7,0xd85d,0xdea8,0xd85d,0xdea9,0xd85d,0xdeaa,0xd85d,0xdeab, - 0xd85d,0xdeac,0xd85d,0xdead,0xd85d,0xdeae,0xd85d,0xdeaf,0xd85d,0xdeb0, - 0xd85d,0xdeb1,0xd85d,0xdeb2,0xd85d,0xdeb3,0xd85d,0xdeb4,0xd85d,0xdeb5, - 0xd85d,0xdeb6,0xd85d,0xdeb7,0xd85d,0xdeb8,0xd85d,0xdeb9,0xd85d,0xdeba, - 0xd85d,0xdebb,0xd85d,0xdebc,0xd85d,0xdebd,0xd85d,0xdebe,0xd85d,0xdebf, - 0xd85d,0xdec0,0xd85d,0xdec1,0xd85d,0xdec2,0xd85d,0xdec3,0xd85d,0xdec4, - 0xd85d,0xdec5,0xd85d,0xdec6,0xd85d,0xdec7,0xd85d,0xdec8,0xd85d,0xdec9, - 0xd85d,0xdeca,0xd85d,0xdecb,0xd85d,0xdecc,0xd85d,0xdecd,0xd85d,0xdece, - 0xd85d,0xdecf,0xd85d,0xded0,0xd85d,0xded1,0xd85d,0xded2,0xd85d,0xded3, - 0xd85d,0xded4,0xd85d,0xded5,0xd85d,0xded6,0xd85d,0xded7,0xd85d,0xded8, - 0xd85d,0xded9,0xd85d,0xdeda,0xd85d,0xdedb,0xd85d,0xdedc,0xd85d,0xdedd, - 0xd85d,0xdede,0xd85d,0xdedf,0xd85d,0xdee0,0xd85d,0xdee1,0xd85d,0xdee2, - 0xd85d,0xdee3,0xd85d,0xdee4,0xd85d,0xdee5,0xd85d,0xdee6,0xd85d,0xdee7, - 0xd85d,0xdee8,0xd85d,0xdee9,0xd85d,0xdeea,0xd85d,0xdeeb,0xd85d,0xdeec, - 0xd85d,0xdeed,0xd85d,0xdeee,0xd85d,0xdeef,0xd85d,0xdef0,0xd85d,0xdef1, - 0xd85d,0xdef2,0xd85d,0xdef3,0xd85d,0xdef4,0xd85d,0xdef5,0xd85d,0xdef6, - 0xd85d,0xdef7,0xd85d,0xdef8,0xd85d,0xdef9,0xd85d,0xdefa,0xd85d,0xdefb, - 0xd85d,0xdefc,0xd85d,0xdefd,0xd85d,0xdefe,0xd85d,0xdeff,0xd85d,0xdf00, - 0xd85d,0xdf01,0xd85d,0xdf02,0xd85d,0xdf03,0xd85d,0xdf04,0xd85d,0xdf05, - 0xd85d,0xdf06,0xd85d,0xdf07,0xd85d,0xdf08,0xd85d,0xdf09,0xd85d,0xdf0a, - 0xd85d,0xdf0b,0xd85d,0xdf0c,0xd85d,0xdf0d,0xd85d,0xdf0e,0xd85d,0xdf0f, - 0xd85d,0xdf10,0xd85d,0xdf11,0xd85d,0xdf12,0xd85d,0xdf13,0xd85d,0xdf14, - 0xd85d,0xdf15,0xd85d,0xdf16,0xd85d,0xdf17,0xd85d,0xdf18,0xd85d,0xdf19, - 0xd85d,0xdf1a,0xd85d,0xdf1b,0xd85d,0xdf1c,0xd85d,0xdf1d,0xd85d,0xdf1e, - 0xd85d,0xdf1f,0xd85d,0xdf20,0xd85d,0xdf21,0xd85d,0xdf22,0xd85d,0xdf23, - 0xd85d,0xdf24,0xd85d,0xdf25,0xd85d,0xdf26,0xd85d,0xdf27,0xd85d,0xdf28, - 0xd85d,0xdf29,0xd85d,0xdf2a,0xd85d,0xdf2b,0xd85d,0xdf2c,0xd85d,0xdf2d, - 0xd85d,0xdf2e,0xd85d,0xdf2f,0xd85d,0xdf30,0xd85d,0xdf31,0xd85d,0xdf32, - 0xd85d,0xdf33,0xd85d,0xdf34,0xd85d,0xdf35,0xd85d,0xdf36,0xd85d,0xdf37, - 0xd85d,0xdf38,0xd85d,0xdf39,0xd85d,0xdf3a,0xd85d,0xdf3b,0xd85d,0xdf3c, - 0xd85d,0xdf3d,0xd85d,0xdf3e,0xd85d,0xdf3f,0xd85d,0xdf40,0xd85d,0xdf41, - 0xd85d,0xdf42,0xd85d,0xdf43,0xd85d,0xdf44,0xd85d,0xdf45,0xd85d,0xdf46, - 0xd85d,0xdf47,0xd85d,0xdf48,0xd85d,0xdf49,0xd85d,0xdf4a,0xd85d,0xdf4b, - 0xd85d,0xdf4c,0xd85d,0xdf4d,0xd85d,0xdf4e,0xd85d,0xdf4f,0xd85d,0xdf50, - 0xd85d,0xdf51,0xd85d,0xdf52,0xd85d,0xdf53,0xd85d,0xdf54,0xd85d,0xdf55, - 0xd85d,0xdf56,0xd85d,0xdf57,0xd85d,0xdf58,0xd85d,0xdf59,0xd85d,0xdf5a, - 0xd85d,0xdf5b,0xd85d,0xdf5c,0xd85d,0xdf5d,0xd85d,0xdf5e,0xd85d,0xdf5f, - 0xd85d,0xdf60,0xd85d,0xdf61,0xd85d,0xdf62,0xd85d,0xdf63,0xd85d,0xdf64, - 0xd85d,0xdf65,0xd85d,0xdf66,0xd85d,0xdf67,0xd85d,0xdf68,0xd85d,0xdf69, - 0xd85d,0xdf6a,0xd85d,0xdf6b,0xd85d,0xdf6c,0xd85d,0xdf6d,0xd85d,0xdf6e, - 0xd85d,0xdf6f,0xd85d,0xdf70,0xd85d,0xdf71,0xd85d,0xdf72,0xd85d,0xdf73, - 0xd85d,0xdf74,0xd85d,0xdf75,0xd85d,0xdf76,0xd85d,0xdf77,0xd85d,0xdf78, - 0xd85d,0xdf79,0xd85d,0xdf7a,0xd85d,0xdf7b,0xd85d,0xdf7c,0xd85d,0xdf7d, - 0xd85d,0xdf7e,0xd85d,0xdf7f,0xd85d,0xdf80,0xd85d,0xdf81,0xd85d,0xdf82, - 0xd85d,0xdf83,0xd85d,0xdf84,0xd85d,0xdf85,0xd85d,0xdf86,0xd85d,0xdf87, - 0xd85d,0xdf88,0xd85d,0xdf89,0xd85d,0xdf8a,0xd85d,0xdf8b,0xd85d,0xdf8c, - 0xd85d,0xdf8d,0xd85d,0xdf8e,0xd85d,0xdf8f,0xd85d,0xdf90,0xd85d,0xdf91, - 0xd85d,0xdf92,0xd85d,0xdf93,0xd85d,0xdf94,0xd85d,0xdf95,0xd85d,0xdf96, - 0xd85d,0xdf97,0xd85d,0xdf98,0xd85d,0xdf99,0xd85d,0xdf9a,0xd85d,0xdf9b, - 0xd85d,0xdf9c,0xd85d,0xdf9d,0xd85d,0xdf9e,0xd85d,0xdf9f,0xd85d,0xdfa0, - 0xd85d,0xdfa1,0xd85d,0xdfa2,0xd85d,0xdfa3,0xd85d,0xdfa4,0xd85d,0xdfa5, - 0xd85d,0xdfa6,0xd85d,0xdfa7,0xd85d,0xdfa8,0xd85d,0xdfa9,0xd85d,0xdfaa, - 0xd85d,0xdfab,0xd85d,0xdfac,0xd85d,0xdfad,0xd85d,0xdfae,0xd85d,0xdfaf, - 0xd85d,0xdfb0,0xd85d,0xdfb1,0xd85d,0xdfb2,0xd85d,0xdfb3,0xd85d,0xdfb4, - 0xd85d,0xdfb5,0xd85d,0xdfb6,0xd85d,0xdfb7,0xd85d,0xdfb8,0xd85d,0xdfb9, - 0xd85d,0xdfba,0xd85d,0xdfbb,0xd85d,0xdfbc,0xd85d,0xdfbd,0xd85d,0xdfbe, - 0xd85d,0xdfbf,0xd85d,0xdfc0,0xd85d,0xdfc1,0xd85d,0xdfc2,0xd85d,0xdfc3, - 0xd85d,0xdfc4,0xd85d,0xdfc5,0xd85d,0xdfc6,0xd85d,0xdfc7,0xd85d,0xdfc8, - 0xd85d,0xdfc9,0xd85d,0xdfca,0xd85d,0xdfcb,0xd85d,0xdfcc,0xd85d,0xdfcd, - 0xd85d,0xdfce,0xd85d,0xdfcf,0xd85d,0xdfd0,0xd85d,0xdfd1,0xd85d,0xdfd2, - 0xd85d,0xdfd3,0xd85d,0xdfd4,0xd85d,0xdfd5,0xd85d,0xdfd6,0xd85d,0xdfd7, - 0xd85d,0xdfd8,0xd85d,0xdfd9,0xd85d,0xdfda,0xd85d,0xdfdb,0xd85d,0xdfdc, - 0xd85d,0xdfdd,0xd85d,0xdfde,0xd85d,0xdfdf,0xd85d,0xdfe0,0xd85d,0xdfe1, - 0xd85d,0xdfe2,0xd85d,0xdfe3,0xd85d,0xdfe4,0xd85d,0xdfe5,0xd85d,0xdfe6, - 0xd85d,0xdfe7,0xd85d,0xdfe8,0xd85d,0xdfe9,0xd85d,0xdfea,0xd85d,0xdfeb, - 0xd85d,0xdfec,0xd85d,0xdfed,0xd85d,0xdfee,0xd85d,0xdfef,0xd85d,0xdff0, - 0xd85d,0xdff1,0xd85d,0xdff2,0xd85d,0xdff3,0xd85d,0xdff4,0xd85d,0xdff5, - 0xd85d,0xdff6,0xd85d,0xdff7,0xd85d,0xdff8,0xd85d,0xdff9,0xd85d,0xdffa, - 0xd85d,0xdffb,0xd85d,0xdffc,0xd85d,0xdffd,0xd85d,0xdffe,0xd85d,0xdfff, - 0xd85e,0xdc00,0xd85e,0xdc01,0xd85e,0xdc02,0xd85e,0xdc03,0xd85e,0xdc04, - 0xd85e,0xdc05,0xd85e,0xdc06,0xd85e,0xdc07,0xd85e,0xdc08,0xd85e,0xdc09, - 0xd85e,0xdc0a,0xd85e,0xdc0b,0xd85e,0xdc0c,0xd85e,0xdc0d,0xd85e,0xdc0e, - 0xd85e,0xdc0f,0xd85e,0xdc10,0xd85e,0xdc11,0xd85e,0xdc12,0xd85e,0xdc13, - 0xd85e,0xdc14,0xd85e,0xdc15,0xd85e,0xdc16,0xd85e,0xdc17,0xd85e,0xdc18, - 0xd85e,0xdc19,0xd85e,0xdc1a,0xd85e,0xdc1b,0xd85e,0xdc1c,0xd85e,0xdc1d, - 0xd85e,0xdc1e,0xd85e,0xdc1f,0xd85e,0xdc20,0xd85e,0xdc21,0xd85e,0xdc22, - 0xd85e,0xdc23,0xd85e,0xdc24,0xd85e,0xdc25,0xd85e,0xdc26,0xd85e,0xdc27, - 0xd85e,0xdc28,0xd85e,0xdc29,0xd85e,0xdc2a,0xd85e,0xdc2b,0xd85e,0xdc2c, - 0xd85e,0xdc2d,0xd85e,0xdc2e,0xd85e,0xdc2f,0xd85e,0xdc30,0xd85e,0xdc31, - 0xd85e,0xdc32,0xd85e,0xdc33,0xd85e,0xdc34,0xd85e,0xdc35,0xd85e,0xdc36, - 0xd85e,0xdc37,0xd85e,0xdc38,0xd85e,0xdc39,0xd85e,0xdc3a,0xd85e,0xdc3b, - 0xd85e,0xdc3c,0xd85e,0xdc3d,0xd85e,0xdc3e,0xd85e,0xdc3f,0xd85e,0xdc40, - 0xd85e,0xdc41,0xd85e,0xdc42,0xd85e,0xdc43,0xd85e,0xdc44,0xd85e,0xdc45, - 0xd85e,0xdc46,0xd85e,0xdc47,0xd85e,0xdc48,0xd85e,0xdc49,0xd85e,0xdc4a, - 0xd85e,0xdc4b,0xd85e,0xdc4c,0xd85e,0xdc4d,0xd85e,0xdc4e,0xd85e,0xdc4f, - 0xd85e,0xdc50,0xd85e,0xdc51,0xd85e,0xdc52,0xd85e,0xdc53,0xd85e,0xdc54, - 0xd85e,0xdc55,0xd85e,0xdc56,0xd85e,0xdc57,0xd85e,0xdc58,0xd85e,0xdc59, - 0xd85e,0xdc5a,0xd85e,0xdc5b,0xd85e,0xdc5c,0xd85e,0xdc5d,0xd85e,0xdc5e, - 0xd85e,0xdc5f,0xd85e,0xdc60,0xd85e,0xdc61,0xd85e,0xdc62,0xd85e,0xdc63, - 0xd85e,0xdc64,0xd85e,0xdc65,0xd85e,0xdc66,0xd85e,0xdc67,0xd85e,0xdc68, - 0xd85e,0xdc69,0xd85e,0xdc6a,0xd85e,0xdc6b,0xd85e,0xdc6c,0xd85e,0xdc6d, - 0xd85e,0xdc6e,0xd85e,0xdc6f,0xd85e,0xdc70,0xd85e,0xdc71,0xd85e,0xdc72, - 0xd85e,0xdc73,0xd85e,0xdc74,0xd85e,0xdc75,0xd85e,0xdc76,0xd85e,0xdc77, - 0xd85e,0xdc78,0xd85e,0xdc79,0xd85e,0xdc7a,0xd85e,0xdc7b,0xd85e,0xdc7c, - 0xd85e,0xdc7d,0xd85e,0xdc7e,0xd85e,0xdc7f,0xd85e,0xdc80,0xd85e,0xdc81, - 0xd85e,0xdc82,0xd85e,0xdc83,0xd85e,0xdc84,0xd85e,0xdc85,0xd85e,0xdc86, - 0xd85e,0xdc87,0xd85e,0xdc88,0xd85e,0xdc89,0xd85e,0xdc8a,0xd85e,0xdc8b, - 0xd85e,0xdc8c,0xd85e,0xdc8d,0xd85e,0xdc8e,0xd85e,0xdc8f,0xd85e,0xdc90, - 0xd85e,0xdc91,0xd85e,0xdc92,0xd85e,0xdc93,0xd85e,0xdc94,0xd85e,0xdc95, - 0xd85e,0xdc96,0xd85e,0xdc97,0xd85e,0xdc98,0xd85e,0xdc99,0xd85e,0xdc9a, - 0xd85e,0xdc9b,0xd85e,0xdc9c,0xd85e,0xdc9d,0xd85e,0xdc9e,0xd85e,0xdc9f, - 0xd85e,0xdca0,0xd85e,0xdca1,0xd85e,0xdca2,0xd85e,0xdca3,0xd85e,0xdca4, - 0xd85e,0xdca5,0xd85e,0xdca6,0xd85e,0xdca7,0xd85e,0xdca8,0xd85e,0xdca9, - 0xd85e,0xdcaa,0xd85e,0xdcab,0xd85e,0xdcac,0xd85e,0xdcad,0xd85e,0xdcae, - 0xd85e,0xdcaf,0xd85e,0xdcb0,0xd85e,0xdcb1,0xd85e,0xdcb2,0xd85e,0xdcb3, - 0xd85e,0xdcb4,0xd85e,0xdcb5,0xd85e,0xdcb6,0xd85e,0xdcb7,0xd85e,0xdcb8, - 0xd85e,0xdcb9,0xd85e,0xdcba,0xd85e,0xdcbb,0xd85e,0xdcbc,0xd85e,0xdcbd, - 0xd85e,0xdcbe,0xd85e,0xdcbf,0xd85e,0xdcc0,0xd85e,0xdcc1,0xd85e,0xdcc2, - 0xd85e,0xdcc3,0xd85e,0xdcc4,0xd85e,0xdcc5,0xd85e,0xdcc6,0xd85e,0xdcc7, - 0xd85e,0xdcc8,0xd85e,0xdcc9,0xd85e,0xdcca,0xd85e,0xdccb,0xd85e,0xdccc, - 0xd85e,0xdccd,0xd85e,0xdcce,0xd85e,0xdccf,0xd85e,0xdcd0,0xd85e,0xdcd1, - 0xd85e,0xdcd2,0xd85e,0xdcd3,0xd85e,0xdcd4,0xd85e,0xdcd5,0xd85e,0xdcd6, - 0xd85e,0xdcd7,0xd85e,0xdcd8,0xd85e,0xdcd9,0xd85e,0xdcda,0xd85e,0xdcdb, - 0xd85e,0xdcdc,0xd85e,0xdcdd,0xd85e,0xdcde,0xd85e,0xdcdf,0xd85e,0xdce0, - 0xd85e,0xdce1,0xd85e,0xdce2,0xd85e,0xdce3,0xd85e,0xdce4,0xd85e,0xdce5, - 0xd85e,0xdce6,0xd85e,0xdce7,0xd85e,0xdce8,0xd85e,0xdce9,0xd85e,0xdcea, - 0xd85e,0xdceb,0xd85e,0xdcec,0xd85e,0xdced,0xd85e,0xdcee,0xd85e,0xdcef, - 0xd85e,0xdcf0,0xd85e,0xdcf1,0xd85e,0xdcf2,0xd85e,0xdcf3,0xd85e,0xdcf4, - 0xd85e,0xdcf5,0xd85e,0xdcf6,0xd85e,0xdcf7,0xd85e,0xdcf8,0xd85e,0xdcf9, - 0xd85e,0xdcfa,0xd85e,0xdcfb,0xd85e,0xdcfc,0xd85e,0xdcfd,0xd85e,0xdcfe, - 0xd85e,0xdcff,0xd85e,0xdd00,0xd85e,0xdd01,0xd85e,0xdd02,0xd85e,0xdd03, - 0xd85e,0xdd04,0xd85e,0xdd05,0xd85e,0xdd06,0xd85e,0xdd07,0xd85e,0xdd08, - 0xd85e,0xdd09,0xd85e,0xdd0a,0xd85e,0xdd0b,0xd85e,0xdd0c,0xd85e,0xdd0d, - 0xd85e,0xdd0e,0xd85e,0xdd0f,0xd85e,0xdd10,0xd85e,0xdd11,0xd85e,0xdd12, - 0xd85e,0xdd13,0xd85e,0xdd14,0xd85e,0xdd15,0xd85e,0xdd16,0xd85e,0xdd17, - 0xd85e,0xdd18,0xd85e,0xdd19,0xd85e,0xdd1a,0xd85e,0xdd1b,0xd85e,0xdd1c, - 0xd85e,0xdd1d,0xd85e,0xdd1e,0xd85e,0xdd1f,0xd85e,0xdd20,0xd85e,0xdd21, - 0xd85e,0xdd22,0xd85e,0xdd23,0xd85e,0xdd24,0xd85e,0xdd25,0xd85e,0xdd26, - 0xd85e,0xdd27,0xd85e,0xdd28,0xd85e,0xdd29,0xd85e,0xdd2a,0xd85e,0xdd2b, - 0xd85e,0xdd2c,0xd85e,0xdd2d,0xd85e,0xdd2e,0xd85e,0xdd2f,0xd85e,0xdd30, - 0xd85e,0xdd31,0xd85e,0xdd32,0xd85e,0xdd33,0xd85e,0xdd34,0xd85e,0xdd35, - 0xd85e,0xdd36,0xd85e,0xdd37,0xd85e,0xdd38,0xd85e,0xdd39,0xd85e,0xdd3a, - 0xd85e,0xdd3b,0xd85e,0xdd3c,0xd85e,0xdd3d,0xd85e,0xdd3e,0xd85e,0xdd3f, - 0xd85e,0xdd40,0xd85e,0xdd41,0xd85e,0xdd42,0xd85e,0xdd43,0xd85e,0xdd44, - 0xd85e,0xdd45,0xd85e,0xdd46,0xd85e,0xdd47,0xd85e,0xdd48,0xd85e,0xdd49, - 0xd85e,0xdd4a,0xd85e,0xdd4b,0xd85e,0xdd4c,0xd85e,0xdd4d,0xd85e,0xdd4e, - 0xd85e,0xdd4f,0xd85e,0xdd50,0xd85e,0xdd51,0xd85e,0xdd52,0xd85e,0xdd53, - 0xd85e,0xdd54,0xd85e,0xdd55,0xd85e,0xdd56,0xd85e,0xdd57,0xd85e,0xdd58, - 0xd85e,0xdd59,0xd85e,0xdd5a,0xd85e,0xdd5b,0xd85e,0xdd5c,0xd85e,0xdd5d, - 0xd85e,0xdd5e,0xd85e,0xdd5f,0xd85e,0xdd60,0xd85e,0xdd61,0xd85e,0xdd62, - 0xd85e,0xdd63,0xd85e,0xdd64,0xd85e,0xdd65,0xd85e,0xdd66,0xd85e,0xdd67, - 0xd85e,0xdd68,0xd85e,0xdd69,0xd85e,0xdd6a,0xd85e,0xdd6b,0xd85e,0xdd6c, - 0xd85e,0xdd6d,0xd85e,0xdd6e,0xd85e,0xdd6f,0xd85e,0xdd70,0xd85e,0xdd71, - 0xd85e,0xdd72,0xd85e,0xdd73,0xd85e,0xdd74,0xd85e,0xdd75,0xd85e,0xdd76, - 0xd85e,0xdd77,0xd85e,0xdd78,0xd85e,0xdd79,0xd85e,0xdd7a,0xd85e,0xdd7b, - 0xd85e,0xdd7c,0xd85e,0xdd7d,0xd85e,0xdd7e,0xd85e,0xdd7f,0xd85e,0xdd80, - 0xd85e,0xdd81,0xd85e,0xdd82,0xd85e,0xdd83,0xd85e,0xdd84,0xd85e,0xdd85, - 0xd85e,0xdd86,0xd85e,0xdd87,0xd85e,0xdd88,0xd85e,0xdd89,0xd85e,0xdd8a, - 0xd85e,0xdd8b,0xd85e,0xdd8c,0xd85e,0xdd8d,0xd85e,0xdd8e,0xd85e,0xdd8f, - 0xd85e,0xdd90,0xd85e,0xdd91,0xd85e,0xdd92,0xd85e,0xdd93,0xd85e,0xdd94, - 0xd85e,0xdd95,0xd85e,0xdd96,0xd85e,0xdd97,0xd85e,0xdd98,0xd85e,0xdd99, - 0xd85e,0xdd9a,0xd85e,0xdd9b,0xd85e,0xdd9c,0xd85e,0xdd9d,0xd85e,0xdd9e, - 0xd85e,0xdd9f,0xd85e,0xdda0,0xd85e,0xdda1,0xd85e,0xdda2,0xd85e,0xdda3, - 0xd85e,0xdda4,0xd85e,0xdda5,0xd85e,0xdda6,0xd85e,0xdda7,0xd85e,0xdda8, - 0xd85e,0xdda9,0xd85e,0xddaa,0xd85e,0xddab,0xd85e,0xddac,0xd85e,0xddad, - 0xd85e,0xddae,0xd85e,0xddaf,0xd85e,0xddb0,0xd85e,0xddb1,0xd85e,0xddb2, - 0xd85e,0xddb3,0xd85e,0xddb4,0xd85e,0xddb5,0xd85e,0xddb6,0xd85e,0xddb7, - 0xd85e,0xddb8,0xd85e,0xddb9,0xd85e,0xddba,0xd85e,0xddbb,0xd85e,0xddbc, - 0xd85e,0xddbd,0xd85e,0xddbe,0xd85e,0xddbf,0xd85e,0xddc0,0xd85e,0xddc1, - 0xd85e,0xddc2,0xd85e,0xddc3,0xd85e,0xddc4,0xd85e,0xddc5,0xd85e,0xddc6, - 0xd85e,0xddc7,0xd85e,0xddc8,0xd85e,0xddc9,0xd85e,0xddca,0xd85e,0xddcb, - 0xd85e,0xddcc,0xd85e,0xddcd,0xd85e,0xddce,0xd85e,0xddcf,0xd85e,0xddd0, - 0xd85e,0xddd1,0xd85e,0xddd2,0xd85e,0xddd3,0xd85e,0xddd4,0xd85e,0xddd5, - 0xd85e,0xddd6,0xd85e,0xddd7,0xd85e,0xddd8,0xd85e,0xddd9,0xd85e,0xddda, - 0xd85e,0xdddb,0xd85e,0xdddc,0xd85e,0xdddd,0xd85e,0xddde,0xd85e,0xdddf, - 0xd85e,0xdde0,0xd85e,0xdde1,0xd85e,0xdde2,0xd85e,0xdde3,0xd85e,0xdde4, - 0xd85e,0xdde5,0xd85e,0xdde6,0xd85e,0xdde7,0xd85e,0xdde8,0xd85e,0xdde9, - 0xd85e,0xddea,0xd85e,0xddeb,0xd85e,0xddec,0xd85e,0xdded,0xd85e,0xddee, - 0xd85e,0xddef,0xd85e,0xddf0,0xd85e,0xddf1,0xd85e,0xddf2,0xd85e,0xddf3, - 0xd85e,0xddf4,0xd85e,0xddf5,0xd85e,0xddf6,0xd85e,0xddf7,0xd85e,0xddf8, - 0xd85e,0xddf9,0xd85e,0xddfa,0xd85e,0xddfb,0xd85e,0xddfc,0xd85e,0xddfd, - 0xd85e,0xddfe,0xd85e,0xddff,0xd85e,0xde00,0xd85e,0xde01,0xd85e,0xde02, - 0xd85e,0xde03,0xd85e,0xde04,0xd85e,0xde05,0xd85e,0xde06,0xd85e,0xde07, - 0xd85e,0xde08,0xd85e,0xde09,0xd85e,0xde0a,0xd85e,0xde0b,0xd85e,0xde0c, - 0xd85e,0xde0d,0xd85e,0xde0e,0xd85e,0xde0f,0xd85e,0xde10,0xd85e,0xde11, - 0xd85e,0xde12,0xd85e,0xde13,0xd85e,0xde14,0xd85e,0xde15,0xd85e,0xde16, - 0xd85e,0xde17,0xd85e,0xde18,0xd85e,0xde19,0xd85e,0xde1a,0xd85e,0xde1b, - 0xd85e,0xde1c,0xd85e,0xde1d,0xd85e,0xde1e,0xd85e,0xde1f,0xd85e,0xde20, - 0xd85e,0xde21,0xd85e,0xde22,0xd85e,0xde23,0xd85e,0xde24,0xd85e,0xde25, - 0xd85e,0xde26,0xd85e,0xde27,0xd85e,0xde28,0xd85e,0xde29,0xd85e,0xde2a, - 0xd85e,0xde2b,0xd85e,0xde2c,0xd85e,0xde2d,0xd85e,0xde2e,0xd85e,0xde2f, - 0xd85e,0xde30,0xd85e,0xde31,0xd85e,0xde32,0xd85e,0xde33,0xd85e,0xde34, - 0xd85e,0xde35,0xd85e,0xde36,0xd85e,0xde37,0xd85e,0xde38,0xd85e,0xde39, - 0xd85e,0xde3a,0xd85e,0xde3b,0xd85e,0xde3c,0xd85e,0xde3d,0xd85e,0xde3e, - 0xd85e,0xde3f,0xd85e,0xde40,0xd85e,0xde41,0xd85e,0xde42,0xd85e,0xde43, - 0xd85e,0xde44,0xd85e,0xde45,0xd85e,0xde46,0xd85e,0xde47,0xd85e,0xde48, - 0xd85e,0xde49,0xd85e,0xde4a,0xd85e,0xde4b,0xd85e,0xde4c,0xd85e,0xde4d, - 0xd85e,0xde4e,0xd85e,0xde4f,0xd85e,0xde50,0xd85e,0xde51,0xd85e,0xde52, - 0xd85e,0xde53,0xd85e,0xde54,0xd85e,0xde55,0xd85e,0xde56,0xd85e,0xde57, - 0xd85e,0xde58,0xd85e,0xde59,0xd85e,0xde5a,0xd85e,0xde5b,0xd85e,0xde5c, - 0xd85e,0xde5d,0xd85e,0xde5e,0xd85e,0xde5f,0xd85e,0xde60,0xd85e,0xde61, - 0xd85e,0xde62,0xd85e,0xde63,0xd85e,0xde64,0xd85e,0xde65,0xd85e,0xde66, - 0xd85e,0xde67,0xd85e,0xde68,0xd85e,0xde69,0xd85e,0xde6a,0xd85e,0xde6b, - 0xd85e,0xde6c,0xd85e,0xde6d,0xd85e,0xde6e,0xd85e,0xde6f,0xd85e,0xde70, - 0xd85e,0xde71,0xd85e,0xde72,0xd85e,0xde73,0xd85e,0xde74,0xd85e,0xde75, - 0xd85e,0xde76,0xd85e,0xde77,0xd85e,0xde78,0xd85e,0xde79,0xd85e,0xde7a, - 0xd85e,0xde7b,0xd85e,0xde7c,0xd85e,0xde7d,0xd85e,0xde7e,0xd85e,0xde7f, - 0xd85e,0xde80,0xd85e,0xde81,0xd85e,0xde82,0xd85e,0xde83,0xd85e,0xde84, - 0xd85e,0xde85,0xd85e,0xde86,0xd85e,0xde87,0xd85e,0xde88,0xd85e,0xde89, - 0xd85e,0xde8a,0xd85e,0xde8b,0xd85e,0xde8c,0xd85e,0xde8d,0xd85e,0xde8e, - 0xd85e,0xde8f,0xd85e,0xde90,0xd85e,0xde91,0xd85e,0xde92,0xd85e,0xde93, - 0xd85e,0xde94,0xd85e,0xde95,0xd85e,0xde96,0xd85e,0xde97,0xd85e,0xde98, - 0xd85e,0xde99,0xd85e,0xde9a,0xd85e,0xde9b,0xd85e,0xde9c,0xd85e,0xde9d, - 0xd85e,0xde9e,0xd85e,0xde9f,0xd85e,0xdea0,0xd85e,0xdea1,0xd85e,0xdea2, - 0xd85e,0xdea3,0xd85e,0xdea4,0xd85e,0xdea5,0xd85e,0xdea6,0xd85e,0xdea7, - 0xd85e,0xdea8,0xd85e,0xdea9,0xd85e,0xdeaa,0xd85e,0xdeab,0xd85e,0xdeac, - 0xd85e,0xdead,0xd85e,0xdeae,0xd85e,0xdeaf,0xd85e,0xdeb0,0xd85e,0xdeb1, - 0xd85e,0xdeb2,0xd85e,0xdeb3,0xd85e,0xdeb4,0xd85e,0xdeb5,0xd85e,0xdeb6, - 0xd85e,0xdeb7,0xd85e,0xdeb8,0xd85e,0xdeb9,0xd85e,0xdeba,0xd85e,0xdebb, - 0xd85e,0xdebc,0xd85e,0xdebd,0xd85e,0xdebe,0xd85e,0xdebf,0xd85e,0xdec0, - 0xd85e,0xdec1,0xd85e,0xdec2,0xd85e,0xdec3,0xd85e,0xdec4,0xd85e,0xdec5, - 0xd85e,0xdec6,0xd85e,0xdec7,0xd85e,0xdec8,0xd85e,0xdec9,0xd85e,0xdeca, - 0xd85e,0xdecb,0xd85e,0xdecc,0xd85e,0xdecd,0xd85e,0xdece,0xd85e,0xdecf, - 0xd85e,0xded0,0xd85e,0xded1,0xd85e,0xded2,0xd85e,0xded3,0xd85e,0xded4, - 0xd85e,0xded5,0xd85e,0xded6,0xd85e,0xded7,0xd85e,0xded8,0xd85e,0xded9, - 0xd85e,0xdeda,0xd85e,0xdedb,0xd85e,0xdedc,0xd85e,0xdedd,0xd85e,0xdede, - 0xd85e,0xdedf,0xd85e,0xdee0,0xd85e,0xdee1,0xd85e,0xdee2,0xd85e,0xdee3, - 0xd85e,0xdee4,0xd85e,0xdee5,0xd85e,0xdee6,0xd85e,0xdee7,0xd85e,0xdee8, - 0xd85e,0xdee9,0xd85e,0xdeea,0xd85e,0xdeeb,0xd85e,0xdeec,0xd85e,0xdeed, - 0xd85e,0xdeee,0xd85e,0xdeef,0xd85e,0xdef0,0xd85e,0xdef1,0xd85e,0xdef2, - 0xd85e,0xdef3,0xd85e,0xdef4,0xd85e,0xdef5,0xd85e,0xdef6,0xd85e,0xdef7, - 0xd85e,0xdef8,0xd85e,0xdef9,0xd85e,0xdefa,0xd85e,0xdefb,0xd85e,0xdefc, - 0xd85e,0xdefd,0xd85e,0xdefe,0xd85e,0xdeff,0xd85e,0xdf00,0xd85e,0xdf01, - 0xd85e,0xdf02,0xd85e,0xdf03,0xd85e,0xdf04,0xd85e,0xdf05,0xd85e,0xdf06, - 0xd85e,0xdf07,0xd85e,0xdf08,0xd85e,0xdf09,0xd85e,0xdf0a,0xd85e,0xdf0b, - 0xd85e,0xdf0c,0xd85e,0xdf0d,0xd85e,0xdf0e,0xd85e,0xdf0f,0xd85e,0xdf10, - 0xd85e,0xdf11,0xd85e,0xdf12,0xd85e,0xdf13,0xd85e,0xdf14,0xd85e,0xdf15, - 0xd85e,0xdf16,0xd85e,0xdf17,0xd85e,0xdf18,0xd85e,0xdf19,0xd85e,0xdf1a, - 0xd85e,0xdf1b,0xd85e,0xdf1c,0xd85e,0xdf1d,0xd85e,0xdf1e,0xd85e,0xdf1f, - 0xd85e,0xdf20,0xd85e,0xdf21,0xd85e,0xdf22,0xd85e,0xdf23,0xd85e,0xdf24, - 0xd85e,0xdf25,0xd85e,0xdf26,0xd85e,0xdf27,0xd85e,0xdf28,0xd85e,0xdf29, - 0xd85e,0xdf2a,0xd85e,0xdf2b,0xd85e,0xdf2c,0xd85e,0xdf2d,0xd85e,0xdf2e, - 0xd85e,0xdf2f,0xd85e,0xdf30,0xd85e,0xdf31,0xd85e,0xdf32,0xd85e,0xdf33, - 0xd85e,0xdf34,0xd85e,0xdf35,0xd85e,0xdf36,0xd85e,0xdf37,0xd85e,0xdf38, - 0xd85e,0xdf39,0xd85e,0xdf3a,0xd85e,0xdf3b,0xd85e,0xdf3c,0xd85e,0xdf3d, - 0xd85e,0xdf3e,0xd85e,0xdf3f,0xd85e,0xdf40,0xd85e,0xdf41,0xd85e,0xdf42, - 0xd85e,0xdf43,0xd85e,0xdf44,0xd85e,0xdf45,0xd85e,0xdf46,0xd85e,0xdf47, - 0xd85e,0xdf48,0xd85e,0xdf49,0xd85e,0xdf4a,0xd85e,0xdf4b,0xd85e,0xdf4c, - 0xd85e,0xdf4d,0xd85e,0xdf4e,0xd85e,0xdf4f,0xd85e,0xdf50,0xd85e,0xdf51, - 0xd85e,0xdf52,0xd85e,0xdf53,0xd85e,0xdf54,0xd85e,0xdf55,0xd85e,0xdf56, - 0xd85e,0xdf57,0xd85e,0xdf58,0xd85e,0xdf59,0xd85e,0xdf5a,0xd85e,0xdf5b, - 0xd85e,0xdf5c,0xd85e,0xdf5d,0xd85e,0xdf5e,0xd85e,0xdf5f,0xd85e,0xdf60, - 0xd85e,0xdf61,0xd85e,0xdf62,0xd85e,0xdf63,0xd85e,0xdf64,0xd85e,0xdf65, - 0xd85e,0xdf66,0xd85e,0xdf67,0xd85e,0xdf68,0xd85e,0xdf69,0xd85e,0xdf6a, - 0xd85e,0xdf6b,0xd85e,0xdf6c,0xd85e,0xdf6d,0xd85e,0xdf6e,0xd85e,0xdf6f, - 0xd85e,0xdf70,0xd85e,0xdf71,0xd85e,0xdf72,0xd85e,0xdf73,0xd85e,0xdf74, - 0xd85e,0xdf75,0xd85e,0xdf76,0xd85e,0xdf77,0xd85e,0xdf78,0xd85e,0xdf79, - 0xd85e,0xdf7a,0xd85e,0xdf7b,0xd85e,0xdf7c,0xd85e,0xdf7d,0xd85e,0xdf7e, - 0xd85e,0xdf7f,0xd85e,0xdf80,0xd85e,0xdf81,0xd85e,0xdf82,0xd85e,0xdf83, - 0xd85e,0xdf84,0xd85e,0xdf85,0xd85e,0xdf86,0xd85e,0xdf87,0xd85e,0xdf88, - 0xd85e,0xdf89,0xd85e,0xdf8a,0xd85e,0xdf8b,0xd85e,0xdf8c,0xd85e,0xdf8d, - 0xd85e,0xdf8e,0xd85e,0xdf8f,0xd85e,0xdf90,0xd85e,0xdf91,0xd85e,0xdf92, - 0xd85e,0xdf93,0xd85e,0xdf94,0xd85e,0xdf95,0xd85e,0xdf96,0xd85e,0xdf97, - 0xd85e,0xdf98,0xd85e,0xdf99,0xd85e,0xdf9a,0xd85e,0xdf9b,0xd85e,0xdf9c, - 0xd85e,0xdf9d,0xd85e,0xdf9e,0xd85e,0xdf9f,0xd85e,0xdfa0,0xd85e,0xdfa1, - 0xd85e,0xdfa2,0xd85e,0xdfa3,0xd85e,0xdfa4,0xd85e,0xdfa5,0xd85e,0xdfa6, - 0xd85e,0xdfa7,0xd85e,0xdfa8,0xd85e,0xdfa9,0xd85e,0xdfaa,0xd85e,0xdfab, - 0xd85e,0xdfac,0xd85e,0xdfad,0xd85e,0xdfae,0xd85e,0xdfaf,0xd85e,0xdfb0, - 0xd85e,0xdfb1,0xd85e,0xdfb2,0xd85e,0xdfb3,0xd85e,0xdfb4,0xd85e,0xdfb5, - 0xd85e,0xdfb6,0xd85e,0xdfb7,0xd85e,0xdfb8,0xd85e,0xdfb9,0xd85e,0xdfba, - 0xd85e,0xdfbb,0xd85e,0xdfbc,0xd85e,0xdfbd,0xd85e,0xdfbe,0xd85e,0xdfbf, - 0xd85e,0xdfc0,0xd85e,0xdfc1,0xd85e,0xdfc2,0xd85e,0xdfc3,0xd85e,0xdfc4, - 0xd85e,0xdfc5,0xd85e,0xdfc6,0xd85e,0xdfc7,0xd85e,0xdfc8,0xd85e,0xdfc9, - 0xd85e,0xdfca,0xd85e,0xdfcb,0xd85e,0xdfcc,0xd85e,0xdfcd,0xd85e,0xdfce, - 0xd85e,0xdfcf,0xd85e,0xdfd0,0xd85e,0xdfd1,0xd85e,0xdfd2,0xd85e,0xdfd3, - 0xd85e,0xdfd4,0xd85e,0xdfd5,0xd85e,0xdfd6,0xd85e,0xdfd7,0xd85e,0xdfd8, - 0xd85e,0xdfd9,0xd85e,0xdfda,0xd85e,0xdfdb,0xd85e,0xdfdc,0xd85e,0xdfdd, - 0xd85e,0xdfde,0xd85e,0xdfdf,0xd85e,0xdfe0,0xd85e,0xdfe1,0xd85e,0xdfe2, - 0xd85e,0xdfe3,0xd85e,0xdfe4,0xd85e,0xdfe5,0xd85e,0xdfe6,0xd85e,0xdfe7, - 0xd85e,0xdfe8,0xd85e,0xdfe9,0xd85e,0xdfea,0xd85e,0xdfeb,0xd85e,0xdfec, - 0xd85e,0xdfed,0xd85e,0xdfee,0xd85e,0xdfef,0xd85e,0xdff0,0xd85e,0xdff1, - 0xd85e,0xdff2,0xd85e,0xdff3,0xd85e,0xdff4,0xd85e,0xdff5,0xd85e,0xdff6, - 0xd85e,0xdff7,0xd85e,0xdff8,0xd85e,0xdff9,0xd85e,0xdffa,0xd85e,0xdffb, - 0xd85e,0xdffc,0xd85e,0xdffd,0xd85e,0xdffe,0xd85e,0xdfff,0xd85f,0xdc00, - 0xd85f,0xdc01,0xd85f,0xdc02,0xd85f,0xdc03,0xd85f,0xdc04,0xd85f,0xdc05, - 0xd85f,0xdc06,0xd85f,0xdc07,0xd85f,0xdc08,0xd85f,0xdc09,0xd85f,0xdc0a, - 0xd85f,0xdc0b,0xd85f,0xdc0c,0xd85f,0xdc0d,0xd85f,0xdc0e,0xd85f,0xdc0f, - 0xd85f,0xdc10,0xd85f,0xdc11,0xd85f,0xdc12,0xd85f,0xdc13,0xd85f,0xdc14, - 0xd85f,0xdc15,0xd85f,0xdc16,0xd85f,0xdc17,0xd85f,0xdc18,0xd85f,0xdc19, - 0xd85f,0xdc1a,0xd85f,0xdc1b,0xd85f,0xdc1c,0xd85f,0xdc1d,0xd85f,0xdc1e, - 0xd85f,0xdc1f,0xd85f,0xdc20,0xd85f,0xdc21,0xd85f,0xdc22,0xd85f,0xdc23, - 0xd85f,0xdc24,0xd85f,0xdc25,0xd85f,0xdc26,0xd85f,0xdc27,0xd85f,0xdc28, - 0xd85f,0xdc29,0xd85f,0xdc2a,0xd85f,0xdc2b,0xd85f,0xdc2c,0xd85f,0xdc2d, - 0xd85f,0xdc2e,0xd85f,0xdc2f,0xd85f,0xdc30,0xd85f,0xdc31,0xd85f,0xdc32, - 0xd85f,0xdc33,0xd85f,0xdc34,0xd85f,0xdc35,0xd85f,0xdc36,0xd85f,0xdc37, - 0xd85f,0xdc38,0xd85f,0xdc39,0xd85f,0xdc3a,0xd85f,0xdc3b,0xd85f,0xdc3c, - 0xd85f,0xdc3d,0xd85f,0xdc3e,0xd85f,0xdc3f,0xd85f,0xdc40,0xd85f,0xdc41, - 0xd85f,0xdc42,0xd85f,0xdc43,0xd85f,0xdc44,0xd85f,0xdc45,0xd85f,0xdc46, - 0xd85f,0xdc47,0xd85f,0xdc48,0xd85f,0xdc49,0xd85f,0xdc4a,0xd85f,0xdc4b, - 0xd85f,0xdc4c,0xd85f,0xdc4d,0xd85f,0xdc4e,0xd85f,0xdc4f,0xd85f,0xdc50, - 0xd85f,0xdc51,0xd85f,0xdc52,0xd85f,0xdc53,0xd85f,0xdc54,0xd85f,0xdc55, - 0xd85f,0xdc56,0xd85f,0xdc57,0xd85f,0xdc58,0xd85f,0xdc59,0xd85f,0xdc5a, - 0xd85f,0xdc5b,0xd85f,0xdc5c,0xd85f,0xdc5d,0xd85f,0xdc5e,0xd85f,0xdc5f, - 0xd85f,0xdc60,0xd85f,0xdc61,0xd85f,0xdc62,0xd85f,0xdc63,0xd85f,0xdc64, - 0xd85f,0xdc65,0xd85f,0xdc66,0xd85f,0xdc67,0xd85f,0xdc68,0xd85f,0xdc69, - 0xd85f,0xdc6a,0xd85f,0xdc6b,0xd85f,0xdc6c,0xd85f,0xdc6d,0xd85f,0xdc6e, - 0xd85f,0xdc6f,0xd85f,0xdc70,0xd85f,0xdc71,0xd85f,0xdc72,0xd85f,0xdc73, - 0xd85f,0xdc74,0xd85f,0xdc75,0xd85f,0xdc76,0xd85f,0xdc77,0xd85f,0xdc78, - 0xd85f,0xdc79,0xd85f,0xdc7a,0xd85f,0xdc7b,0xd85f,0xdc7c,0xd85f,0xdc7d, - 0xd85f,0xdc7e,0xd85f,0xdc7f,0xd85f,0xdc80,0xd85f,0xdc81,0xd85f,0xdc82, - 0xd85f,0xdc83,0xd85f,0xdc84,0xd85f,0xdc85,0xd85f,0xdc86,0xd85f,0xdc87, - 0xd85f,0xdc88,0xd85f,0xdc89,0xd85f,0xdc8a,0xd85f,0xdc8b,0xd85f,0xdc8c, - 0xd85f,0xdc8d,0xd85f,0xdc8e,0xd85f,0xdc8f,0xd85f,0xdc90,0xd85f,0xdc91, - 0xd85f,0xdc92,0xd85f,0xdc93,0xd85f,0xdc94,0xd85f,0xdc95,0xd85f,0xdc96, - 0xd85f,0xdc97,0xd85f,0xdc98,0xd85f,0xdc99,0xd85f,0xdc9a,0xd85f,0xdc9b, - 0xd85f,0xdc9c,0xd85f,0xdc9d,0xd85f,0xdc9e,0xd85f,0xdc9f,0xd85f,0xdca0, - 0xd85f,0xdca1,0xd85f,0xdca2,0xd85f,0xdca3,0xd85f,0xdca4,0xd85f,0xdca5, - 0xd85f,0xdca6,0xd85f,0xdca7,0xd85f,0xdca8,0xd85f,0xdca9,0xd85f,0xdcaa, - 0xd85f,0xdcab,0xd85f,0xdcac,0xd85f,0xdcad,0xd85f,0xdcae,0xd85f,0xdcaf, - 0xd85f,0xdcb0,0xd85f,0xdcb1,0xd85f,0xdcb2,0xd85f,0xdcb3,0xd85f,0xdcb4, - 0xd85f,0xdcb5,0xd85f,0xdcb6,0xd85f,0xdcb7,0xd85f,0xdcb8,0xd85f,0xdcb9, - 0xd85f,0xdcba,0xd85f,0xdcbb,0xd85f,0xdcbc,0xd85f,0xdcbd,0xd85f,0xdcbe, - 0xd85f,0xdcbf,0xd85f,0xdcc0,0xd85f,0xdcc1,0xd85f,0xdcc2,0xd85f,0xdcc3, - 0xd85f,0xdcc4,0xd85f,0xdcc5,0xd85f,0xdcc6,0xd85f,0xdcc7,0xd85f,0xdcc8, - 0xd85f,0xdcc9,0xd85f,0xdcca,0xd85f,0xdccb,0xd85f,0xdccc,0xd85f,0xdccd, - 0xd85f,0xdcce,0xd85f,0xdccf,0xd85f,0xdcd0,0xd85f,0xdcd1,0xd85f,0xdcd2, - 0xd85f,0xdcd3,0xd85f,0xdcd4,0xd85f,0xdcd5,0xd85f,0xdcd6,0xd85f,0xdcd7, - 0xd85f,0xdcd8,0xd85f,0xdcd9,0xd85f,0xdcda,0xd85f,0xdcdb,0xd85f,0xdcdc, - 0xd85f,0xdcdd,0xd85f,0xdcde,0xd85f,0xdcdf,0xd85f,0xdce0,0xd85f,0xdce1, - 0xd85f,0xdce2,0xd85f,0xdce3,0xd85f,0xdce4,0xd85f,0xdce5,0xd85f,0xdce6, - 0xd85f,0xdce7,0xd85f,0xdce8,0xd85f,0xdce9,0xd85f,0xdcea,0xd85f,0xdceb, - 0xd85f,0xdcec,0xd85f,0xdced,0xd85f,0xdcee,0xd85f,0xdcef,0xd85f,0xdcf0, - 0xd85f,0xdcf1,0xd85f,0xdcf2,0xd85f,0xdcf3,0xd85f,0xdcf4,0xd85f,0xdcf5, - 0xd85f,0xdcf6,0xd85f,0xdcf7,0xd85f,0xdcf8,0xd85f,0xdcf9,0xd85f,0xdcfa, - 0xd85f,0xdcfb,0xd85f,0xdcfc,0xd85f,0xdcfd,0xd85f,0xdcfe,0xd85f,0xdcff, - 0xd85f,0xdd00,0xd85f,0xdd01,0xd85f,0xdd02,0xd85f,0xdd03,0xd85f,0xdd04, - 0xd85f,0xdd05,0xd85f,0xdd06,0xd85f,0xdd07,0xd85f,0xdd08,0xd85f,0xdd09, - 0xd85f,0xdd0a,0xd85f,0xdd0b,0xd85f,0xdd0c,0xd85f,0xdd0d,0xd85f,0xdd0e, - 0xd85f,0xdd0f,0xd85f,0xdd10,0xd85f,0xdd11,0xd85f,0xdd12,0xd85f,0xdd13, - 0xd85f,0xdd14,0xd85f,0xdd15,0xd85f,0xdd16,0xd85f,0xdd17,0xd85f,0xdd18, - 0xd85f,0xdd19,0xd85f,0xdd1a,0xd85f,0xdd1b,0xd85f,0xdd1c,0xd85f,0xdd1d, - 0xd85f,0xdd1e,0xd85f,0xdd1f,0xd85f,0xdd20,0xd85f,0xdd21,0xd85f,0xdd22, - 0xd85f,0xdd23,0xd85f,0xdd24,0xd85f,0xdd25,0xd85f,0xdd26,0xd85f,0xdd27, - 0xd85f,0xdd28,0xd85f,0xdd29,0xd85f,0xdd2a,0xd85f,0xdd2b,0xd85f,0xdd2c, - 0xd85f,0xdd2d,0xd85f,0xdd2e,0xd85f,0xdd2f,0xd85f,0xdd30,0xd85f,0xdd31, - 0xd85f,0xdd32,0xd85f,0xdd33,0xd85f,0xdd34,0xd85f,0xdd35,0xd85f,0xdd36, - 0xd85f,0xdd37,0xd85f,0xdd38,0xd85f,0xdd39,0xd85f,0xdd3a,0xd85f,0xdd3b, - 0xd85f,0xdd3c,0xd85f,0xdd3d,0xd85f,0xdd3e,0xd85f,0xdd3f,0xd85f,0xdd40, - 0xd85f,0xdd41,0xd85f,0xdd42,0xd85f,0xdd43,0xd85f,0xdd44,0xd85f,0xdd45, - 0xd85f,0xdd46,0xd85f,0xdd47,0xd85f,0xdd48,0xd85f,0xdd49,0xd85f,0xdd4a, - 0xd85f,0xdd4b,0xd85f,0xdd4c,0xd85f,0xdd4d,0xd85f,0xdd4e,0xd85f,0xdd4f, - 0xd85f,0xdd50,0xd85f,0xdd51,0xd85f,0xdd52,0xd85f,0xdd53,0xd85f,0xdd54, - 0xd85f,0xdd55,0xd85f,0xdd56,0xd85f,0xdd57,0xd85f,0xdd58,0xd85f,0xdd59, - 0xd85f,0xdd5a,0xd85f,0xdd5b,0xd85f,0xdd5c,0xd85f,0xdd5d,0xd85f,0xdd5e, - 0xd85f,0xdd5f,0xd85f,0xdd60,0xd85f,0xdd61,0xd85f,0xdd62,0xd85f,0xdd63, - 0xd85f,0xdd64,0xd85f,0xdd65,0xd85f,0xdd66,0xd85f,0xdd67,0xd85f,0xdd68, - 0xd85f,0xdd69,0xd85f,0xdd6a,0xd85f,0xdd6b,0xd85f,0xdd6c,0xd85f,0xdd6d, - 0xd85f,0xdd6e,0xd85f,0xdd6f,0xd85f,0xdd70,0xd85f,0xdd71,0xd85f,0xdd72, - 0xd85f,0xdd73,0xd85f,0xdd74,0xd85f,0xdd75,0xd85f,0xdd76,0xd85f,0xdd77, - 0xd85f,0xdd78,0xd85f,0xdd79,0xd85f,0xdd7a,0xd85f,0xdd7b,0xd85f,0xdd7c, - 0xd85f,0xdd7d,0xd85f,0xdd7e,0xd85f,0xdd7f,0xd85f,0xdd80,0xd85f,0xdd81, - 0xd85f,0xdd82,0xd85f,0xdd83,0xd85f,0xdd84,0xd85f,0xdd85,0xd85f,0xdd86, - 0xd85f,0xdd87,0xd85f,0xdd88,0xd85f,0xdd89,0xd85f,0xdd8a,0xd85f,0xdd8b, - 0xd85f,0xdd8c,0xd85f,0xdd8d,0xd85f,0xdd8e,0xd85f,0xdd8f,0xd85f,0xdd90, - 0xd85f,0xdd91,0xd85f,0xdd92,0xd85f,0xdd93,0xd85f,0xdd94,0xd85f,0xdd95, - 0xd85f,0xdd96,0xd85f,0xdd97,0xd85f,0xdd98,0xd85f,0xdd99,0xd85f,0xdd9a, - 0xd85f,0xdd9b,0xd85f,0xdd9c,0xd85f,0xdd9d,0xd85f,0xdd9e,0xd85f,0xdd9f, - 0xd85f,0xdda0,0xd85f,0xdda1,0xd85f,0xdda2,0xd85f,0xdda3,0xd85f,0xdda4, - 0xd85f,0xdda5,0xd85f,0xdda6,0xd85f,0xdda7,0xd85f,0xdda8,0xd85f,0xdda9, - 0xd85f,0xddaa,0xd85f,0xddab,0xd85f,0xddac,0xd85f,0xddad,0xd85f,0xddae, - 0xd85f,0xddaf,0xd85f,0xddb0,0xd85f,0xddb1,0xd85f,0xddb2,0xd85f,0xddb3, - 0xd85f,0xddb4,0xd85f,0xddb5,0xd85f,0xddb6,0xd85f,0xddb7,0xd85f,0xddb8, - 0xd85f,0xddb9,0xd85f,0xddba,0xd85f,0xddbb,0xd85f,0xddbc,0xd85f,0xddbd, - 0xd85f,0xddbe,0xd85f,0xddbf,0xd85f,0xddc0,0xd85f,0xddc1,0xd85f,0xddc2, - 0xd85f,0xddc3,0xd85f,0xddc4,0xd85f,0xddc5,0xd85f,0xddc6,0xd85f,0xddc7, - 0xd85f,0xddc8,0xd85f,0xddc9,0xd85f,0xddca,0xd85f,0xddcb,0xd85f,0xddcc, - 0xd85f,0xddcd,0xd85f,0xddce,0xd85f,0xddcf,0xd85f,0xddd0,0xd85f,0xddd1, - 0xd85f,0xddd2,0xd85f,0xddd3,0xd85f,0xddd4,0xd85f,0xddd5,0xd85f,0xddd6, - 0xd85f,0xddd7,0xd85f,0xddd8,0xd85f,0xddd9,0xd85f,0xddda,0xd85f,0xdddb, - 0xd85f,0xdddc,0xd85f,0xdddd,0xd85f,0xddde,0xd85f,0xdddf,0xd85f,0xdde0, - 0xd85f,0xdde1,0xd85f,0xdde2,0xd85f,0xdde3,0xd85f,0xdde4,0xd85f,0xdde5, - 0xd85f,0xdde6,0xd85f,0xdde7,0xd85f,0xdde8,0xd85f,0xdde9,0xd85f,0xddea, - 0xd85f,0xddeb,0xd85f,0xddec,0xd85f,0xdded,0xd85f,0xddee,0xd85f,0xddef, - 0xd85f,0xddf0,0xd85f,0xddf1,0xd85f,0xddf2,0xd85f,0xddf3,0xd85f,0xddf4, - 0xd85f,0xddf5,0xd85f,0xddf6,0xd85f,0xddf7,0xd85f,0xddf8,0xd85f,0xddf9, - 0xd85f,0xddfa,0xd85f,0xddfb,0xd85f,0xddfc,0xd85f,0xddfd,0xd85f,0xddfe, - 0xd85f,0xddff,0xd85f,0xde00,0xd85f,0xde01,0xd85f,0xde02,0xd85f,0xde03, - 0xd85f,0xde04,0xd85f,0xde05,0xd85f,0xde06,0xd85f,0xde07,0xd85f,0xde08, - 0xd85f,0xde09,0xd85f,0xde0a,0xd85f,0xde0b,0xd85f,0xde0c,0xd85f,0xde0d, - 0xd85f,0xde0e,0xd85f,0xde0f,0xd85f,0xde10,0xd85f,0xde11,0xd85f,0xde12, - 0xd85f,0xde13,0xd85f,0xde14,0xd85f,0xde15,0xd85f,0xde16,0xd85f,0xde17, - 0xd85f,0xde18,0xd85f,0xde19,0xd85f,0xde1a,0xd85f,0xde1b,0xd85f,0xde1c, - 0xd85f,0xde1d,0xd85f,0xde1e,0xd85f,0xde1f,0xd85f,0xde20,0xd85f,0xde21, - 0xd85f,0xde22,0xd85f,0xde23,0xd85f,0xde24,0xd85f,0xde25,0xd85f,0xde26, - 0xd85f,0xde27,0xd85f,0xde28,0xd85f,0xde29,0xd85f,0xde2a,0xd85f,0xde2b, - 0xd85f,0xde2c,0xd85f,0xde2d,0xd85f,0xde2e,0xd85f,0xde2f,0xd85f,0xde30, - 0xd85f,0xde31,0xd85f,0xde32,0xd85f,0xde33,0xd85f,0xde34,0xd85f,0xde35, - 0xd85f,0xde36,0xd85f,0xde37,0xd85f,0xde38,0xd85f,0xde39,0xd85f,0xde3a, - 0xd85f,0xde3b,0xd85f,0xde3c,0xd85f,0xde3d,0xd85f,0xde3e,0xd85f,0xde3f, - 0xd85f,0xde40,0xd85f,0xde41,0xd85f,0xde42,0xd85f,0xde43,0xd85f,0xde44, - 0xd85f,0xde45,0xd85f,0xde46,0xd85f,0xde47,0xd85f,0xde48,0xd85f,0xde49, - 0xd85f,0xde4a,0xd85f,0xde4b,0xd85f,0xde4c,0xd85f,0xde4d,0xd85f,0xde4e, - 0xd85f,0xde4f,0xd85f,0xde50,0xd85f,0xde51,0xd85f,0xde52,0xd85f,0xde53, - 0xd85f,0xde54,0xd85f,0xde55,0xd85f,0xde56,0xd85f,0xde57,0xd85f,0xde58, - 0xd85f,0xde59,0xd85f,0xde5a,0xd85f,0xde5b,0xd85f,0xde5c,0xd85f,0xde5d, - 0xd85f,0xde5e,0xd85f,0xde5f,0xd85f,0xde60,0xd85f,0xde61,0xd85f,0xde62, - 0xd85f,0xde63,0xd85f,0xde64,0xd85f,0xde65,0xd85f,0xde66,0xd85f,0xde67, - 0xd85f,0xde68,0xd85f,0xde69,0xd85f,0xde6a,0xd85f,0xde6b,0xd85f,0xde6c, - 0xd85f,0xde6d,0xd85f,0xde6e,0xd85f,0xde6f,0xd85f,0xde70,0xd85f,0xde71, - 0xd85f,0xde72,0xd85f,0xde73,0xd85f,0xde74,0xd85f,0xde75,0xd85f,0xde76, - 0xd85f,0xde77,0xd85f,0xde78,0xd85f,0xde79,0xd85f,0xde7a,0xd85f,0xde7b, - 0xd85f,0xde7c,0xd85f,0xde7d,0xd85f,0xde7e,0xd85f,0xde7f,0xd85f,0xde80, - 0xd85f,0xde81,0xd85f,0xde82,0xd85f,0xde83,0xd85f,0xde84,0xd85f,0xde85, - 0xd85f,0xde86,0xd85f,0xde87,0xd85f,0xde88,0xd85f,0xde89,0xd85f,0xde8a, - 0xd85f,0xde8b,0xd85f,0xde8c,0xd85f,0xde8d,0xd85f,0xde8e,0xd85f,0xde8f, - 0xd85f,0xde90,0xd85f,0xde91,0xd85f,0xde92,0xd85f,0xde93,0xd85f,0xde94, - 0xd85f,0xde95,0xd85f,0xde96,0xd85f,0xde97,0xd85f,0xde98,0xd85f,0xde99, - 0xd85f,0xde9a,0xd85f,0xde9b,0xd85f,0xde9c,0xd85f,0xde9d,0xd85f,0xde9e, - 0xd85f,0xde9f,0xd85f,0xdea0,0xd85f,0xdea1,0xd85f,0xdea2,0xd85f,0xdea3, - 0xd85f,0xdea4,0xd85f,0xdea5,0xd85f,0xdea6,0xd85f,0xdea7,0xd85f,0xdea8, - 0xd85f,0xdea9,0xd85f,0xdeaa,0xd85f,0xdeab,0xd85f,0xdeac,0xd85f,0xdead, - 0xd85f,0xdeae,0xd85f,0xdeaf,0xd85f,0xdeb0,0xd85f,0xdeb1,0xd85f,0xdeb2, - 0xd85f,0xdeb3,0xd85f,0xdeb4,0xd85f,0xdeb5,0xd85f,0xdeb6,0xd85f,0xdeb7, - 0xd85f,0xdeb8,0xd85f,0xdeb9,0xd85f,0xdeba,0xd85f,0xdebb,0xd85f,0xdebc, - 0xd85f,0xdebd,0xd85f,0xdebe,0xd85f,0xdebf,0xd85f,0xdec0,0xd85f,0xdec1, - 0xd85f,0xdec2,0xd85f,0xdec3,0xd85f,0xdec4,0xd85f,0xdec5,0xd85f,0xdec6, - 0xd85f,0xdec7,0xd85f,0xdec8,0xd85f,0xdec9,0xd85f,0xdeca,0xd85f,0xdecb, - 0xd85f,0xdecc,0xd85f,0xdecd,0xd85f,0xdece,0xd85f,0xdecf,0xd85f,0xded0, - 0xd85f,0xded1,0xd85f,0xded2,0xd85f,0xded3,0xd85f,0xded4,0xd85f,0xded5, - 0xd85f,0xded6,0xd85f,0xded7,0xd85f,0xded8,0xd85f,0xded9,0xd85f,0xdeda, - 0xd85f,0xdedb,0xd85f,0xdedc,0xd85f,0xdedd,0xd85f,0xdede,0xd85f,0xdedf, - 0xd85f,0xdee0,0xd85f,0xdee1,0xd85f,0xdee2,0xd85f,0xdee3,0xd85f,0xdee4, - 0xd85f,0xdee5,0xd85f,0xdee6,0xd85f,0xdee7,0xd85f,0xdee8,0xd85f,0xdee9, - 0xd85f,0xdeea,0xd85f,0xdeeb,0xd85f,0xdeec,0xd85f,0xdeed,0xd85f,0xdeee, - 0xd85f,0xdeef,0xd85f,0xdef0,0xd85f,0xdef1,0xd85f,0xdef2,0xd85f,0xdef3, - 0xd85f,0xdef4,0xd85f,0xdef5,0xd85f,0xdef6,0xd85f,0xdef7,0xd85f,0xdef8, - 0xd85f,0xdef9,0xd85f,0xdefa,0xd85f,0xdefb,0xd85f,0xdefc,0xd85f,0xdefd, - 0xd85f,0xdefe,0xd85f,0xdeff,0xd85f,0xdf00,0xd85f,0xdf01,0xd85f,0xdf02, - 0xd85f,0xdf03,0xd85f,0xdf04,0xd85f,0xdf05,0xd85f,0xdf06,0xd85f,0xdf07, - 0xd85f,0xdf08,0xd85f,0xdf09,0xd85f,0xdf0a,0xd85f,0xdf0b,0xd85f,0xdf0c, - 0xd85f,0xdf0d,0xd85f,0xdf0e,0xd85f,0xdf0f,0xd85f,0xdf10,0xd85f,0xdf11, - 0xd85f,0xdf12,0xd85f,0xdf13,0xd85f,0xdf14,0xd85f,0xdf15,0xd85f,0xdf16, - 0xd85f,0xdf17,0xd85f,0xdf18,0xd85f,0xdf19,0xd85f,0xdf1a,0xd85f,0xdf1b, - 0xd85f,0xdf1c,0xd85f,0xdf1d,0xd85f,0xdf1e,0xd85f,0xdf1f,0xd85f,0xdf20, - 0xd85f,0xdf21,0xd85f,0xdf22,0xd85f,0xdf23,0xd85f,0xdf24,0xd85f,0xdf25, - 0xd85f,0xdf26,0xd85f,0xdf27,0xd85f,0xdf28,0xd85f,0xdf29,0xd85f,0xdf2a, - 0xd85f,0xdf2b,0xd85f,0xdf2c,0xd85f,0xdf2d,0xd85f,0xdf2e,0xd85f,0xdf2f, - 0xd85f,0xdf30,0xd85f,0xdf31,0xd85f,0xdf32,0xd85f,0xdf33,0xd85f,0xdf34, - 0xd85f,0xdf35,0xd85f,0xdf36,0xd85f,0xdf37,0xd85f,0xdf38,0xd85f,0xdf39, - 0xd85f,0xdf3a,0xd85f,0xdf3b,0xd85f,0xdf3c,0xd85f,0xdf3d,0xd85f,0xdf3e, - 0xd85f,0xdf3f,0xd85f,0xdf40,0xd85f,0xdf41,0xd85f,0xdf42,0xd85f,0xdf43, - 0xd85f,0xdf44,0xd85f,0xdf45,0xd85f,0xdf46,0xd85f,0xdf47,0xd85f,0xdf48, - 0xd85f,0xdf49,0xd85f,0xdf4a,0xd85f,0xdf4b,0xd85f,0xdf4c,0xd85f,0xdf4d, - 0xd85f,0xdf4e,0xd85f,0xdf4f,0xd85f,0xdf50,0xd85f,0xdf51,0xd85f,0xdf52, - 0xd85f,0xdf53,0xd85f,0xdf54,0xd85f,0xdf55,0xd85f,0xdf56,0xd85f,0xdf57, - 0xd85f,0xdf58,0xd85f,0xdf59,0xd85f,0xdf5a,0xd85f,0xdf5b,0xd85f,0xdf5c, - 0xd85f,0xdf5d,0xd85f,0xdf5e,0xd85f,0xdf5f,0xd85f,0xdf60,0xd85f,0xdf61, - 0xd85f,0xdf62,0xd85f,0xdf63,0xd85f,0xdf64,0xd85f,0xdf65,0xd85f,0xdf66, - 0xd85f,0xdf67,0xd85f,0xdf68,0xd85f,0xdf69,0xd85f,0xdf6a,0xd85f,0xdf6b, - 0xd85f,0xdf6c,0xd85f,0xdf6d,0xd85f,0xdf6e,0xd85f,0xdf6f,0xd85f,0xdf70, - 0xd85f,0xdf71,0xd85f,0xdf72,0xd85f,0xdf73,0xd85f,0xdf74,0xd85f,0xdf75, - 0xd85f,0xdf76,0xd85f,0xdf77,0xd85f,0xdf78,0xd85f,0xdf79,0xd85f,0xdf7a, - 0xd85f,0xdf7b,0xd85f,0xdf7c,0xd85f,0xdf7d,0xd85f,0xdf7e,0xd85f,0xdf7f, - 0xd85f,0xdf80,0xd85f,0xdf81,0xd85f,0xdf82,0xd85f,0xdf83,0xd85f,0xdf84, - 0xd85f,0xdf85,0xd85f,0xdf86,0xd85f,0xdf87,0xd85f,0xdf88,0xd85f,0xdf89, - 0xd85f,0xdf8a,0xd85f,0xdf8b,0xd85f,0xdf8c,0xd85f,0xdf8d,0xd85f,0xdf8e, - 0xd85f,0xdf8f,0xd85f,0xdf90,0xd85f,0xdf91,0xd85f,0xdf92,0xd85f,0xdf93, - 0xd85f,0xdf94,0xd85f,0xdf95,0xd85f,0xdf96,0xd85f,0xdf97,0xd85f,0xdf98, - 0xd85f,0xdf99,0xd85f,0xdf9a,0xd85f,0xdf9b,0xd85f,0xdf9c,0xd85f,0xdf9d, - 0xd85f,0xdf9e,0xd85f,0xdf9f,0xd85f,0xdfa0,0xd85f,0xdfa1,0xd85f,0xdfa2, - 0xd85f,0xdfa3,0xd85f,0xdfa4,0xd85f,0xdfa5,0xd85f,0xdfa6,0xd85f,0xdfa7, - 0xd85f,0xdfa8,0xd85f,0xdfa9,0xd85f,0xdfaa,0xd85f,0xdfab,0xd85f,0xdfac, - 0xd85f,0xdfad,0xd85f,0xdfae,0xd85f,0xdfaf,0xd85f,0xdfb0,0xd85f,0xdfb1, - 0xd85f,0xdfb2,0xd85f,0xdfb3,0xd85f,0xdfb4,0xd85f,0xdfb5,0xd85f,0xdfb6, - 0xd85f,0xdfb7,0xd85f,0xdfb8,0xd85f,0xdfb9,0xd85f,0xdfba,0xd85f,0xdfbb, - 0xd85f,0xdfbc,0xd85f,0xdfbd,0xd85f,0xdfbe,0xd85f,0xdfbf,0xd85f,0xdfc0, - 0xd85f,0xdfc1,0xd85f,0xdfc2,0xd85f,0xdfc3,0xd85f,0xdfc4,0xd85f,0xdfc5, - 0xd85f,0xdfc6,0xd85f,0xdfc7,0xd85f,0xdfc8,0xd85f,0xdfc9,0xd85f,0xdfca, - 0xd85f,0xdfcb,0xd85f,0xdfcc,0xd85f,0xdfcd,0xd85f,0xdfce,0xd85f,0xdfcf, - 0xd85f,0xdfd0,0xd85f,0xdfd1,0xd85f,0xdfd2,0xd85f,0xdfd3,0xd85f,0xdfd4, - 0xd85f,0xdfd5,0xd85f,0xdfd6,0xd85f,0xdfd7,0xd85f,0xdfd8,0xd85f,0xdfd9, - 0xd85f,0xdfda,0xd85f,0xdfdb,0xd85f,0xdfdc,0xd85f,0xdfdd,0xd85f,0xdfde, - 0xd85f,0xdfdf,0xd85f,0xdfe0,0xd85f,0xdfe1,0xd85f,0xdfe2,0xd85f,0xdfe3, - 0xd85f,0xdfe4,0xd85f,0xdfe5,0xd85f,0xdfe6,0xd85f,0xdfe7,0xd85f,0xdfe8, - 0xd85f,0xdfe9,0xd85f,0xdfea,0xd85f,0xdfeb,0xd85f,0xdfec,0xd85f,0xdfed, - 0xd85f,0xdfee,0xd85f,0xdfef,0xd85f,0xdff0,0xd85f,0xdff1,0xd85f,0xdff2, - 0xd85f,0xdff3,0xd85f,0xdff4,0xd85f,0xdff5,0xd85f,0xdff6,0xd85f,0xdff7, - 0xd85f,0xdff8,0xd85f,0xdff9,0xd85f,0xdffa,0xd85f,0xdffb,0xd85f,0xdffc, - 0xd85f,0xdffd,0xd85f,0xdffe,0xd85f,0xdfff,0xd860,0xdc00,0xd860,0xdc01, - 0xd860,0xdc02,0xd860,0xdc03,0xd860,0xdc04,0xd860,0xdc05,0xd860,0xdc06, - 0xd860,0xdc07,0xd860,0xdc08,0xd860,0xdc09,0xd860,0xdc0a,0xd860,0xdc0b, - 0xd860,0xdc0c,0xd860,0xdc0d,0xd860,0xdc0e,0xd860,0xdc0f,0xd860,0xdc10, - 0xd860,0xdc11,0xd860,0xdc12,0xd860,0xdc13,0xd860,0xdc14,0xd860,0xdc15, - 0xd860,0xdc16,0xd860,0xdc17,0xd860,0xdc18,0xd860,0xdc19,0xd860,0xdc1a, - 0xd860,0xdc1b,0xd860,0xdc1c,0xd860,0xdc1d,0xd860,0xdc1e,0xd860,0xdc1f, - 0xd860,0xdc20,0xd860,0xdc21,0xd860,0xdc22,0xd860,0xdc23,0xd860,0xdc24, - 0xd860,0xdc25,0xd860,0xdc26,0xd860,0xdc27,0xd860,0xdc28,0xd860,0xdc29, - 0xd860,0xdc2a,0xd860,0xdc2b,0xd860,0xdc2c,0xd860,0xdc2d,0xd860,0xdc2e, - 0xd860,0xdc2f,0xd860,0xdc30,0xd860,0xdc31,0xd860,0xdc32,0xd860,0xdc33, - 0xd860,0xdc34,0xd860,0xdc35,0xd860,0xdc36,0xd860,0xdc37,0xd860,0xdc38, - 0xd860,0xdc39,0xd860,0xdc3a,0xd860,0xdc3b,0xd860,0xdc3c,0xd860,0xdc3d, - 0xd860,0xdc3e,0xd860,0xdc3f,0xd860,0xdc40,0xd860,0xdc41,0xd860,0xdc42, - 0xd860,0xdc43,0xd860,0xdc44,0xd860,0xdc45,0xd860,0xdc46,0xd860,0xdc47, - 0xd860,0xdc48,0xd860,0xdc49,0xd860,0xdc4a,0xd860,0xdc4b,0xd860,0xdc4c, - 0xd860,0xdc4d,0xd860,0xdc4e,0xd860,0xdc4f,0xd860,0xdc50,0xd860,0xdc51, - 0xd860,0xdc52,0xd860,0xdc53,0xd860,0xdc54,0xd860,0xdc55,0xd860,0xdc56, - 0xd860,0xdc57,0xd860,0xdc58,0xd860,0xdc59,0xd860,0xdc5a,0xd860,0xdc5b, - 0xd860,0xdc5c,0xd860,0xdc5d,0xd860,0xdc5e,0xd860,0xdc5f,0xd860,0xdc60, - 0xd860,0xdc61,0xd860,0xdc62,0xd860,0xdc63,0xd860,0xdc64,0xd860,0xdc65, - 0xd860,0xdc66,0xd860,0xdc67,0xd860,0xdc68,0xd860,0xdc69,0xd860,0xdc6a, - 0xd860,0xdc6b,0xd860,0xdc6c,0xd860,0xdc6d,0xd860,0xdc6e,0xd860,0xdc6f, - 0xd860,0xdc70,0xd860,0xdc71,0xd860,0xdc72,0xd860,0xdc73,0xd860,0xdc74, - 0xd860,0xdc75,0xd860,0xdc76,0xd860,0xdc77,0xd860,0xdc78,0xd860,0xdc79, - 0xd860,0xdc7a,0xd860,0xdc7b,0xd860,0xdc7c,0xd860,0xdc7d,0xd860,0xdc7e, - 0xd860,0xdc7f,0xd860,0xdc80,0xd860,0xdc81,0xd860,0xdc82,0xd860,0xdc83, - 0xd860,0xdc84,0xd860,0xdc85,0xd860,0xdc86,0xd860,0xdc87,0xd860,0xdc88, - 0xd860,0xdc89,0xd860,0xdc8a,0xd860,0xdc8b,0xd860,0xdc8c,0xd860,0xdc8d, - 0xd860,0xdc8e,0xd860,0xdc8f,0xd860,0xdc90,0xd860,0xdc91,0xd860,0xdc92, - 0xd860,0xdc93,0xd860,0xdc94,0xd860,0xdc95,0xd860,0xdc96,0xd860,0xdc97, - 0xd860,0xdc98,0xd860,0xdc99,0xd860,0xdc9a,0xd860,0xdc9b,0xd860,0xdc9c, - 0xd860,0xdc9d,0xd860,0xdc9e,0xd860,0xdc9f,0xd860,0xdca0,0xd860,0xdca1, - 0xd860,0xdca2,0xd860,0xdca3,0xd860,0xdca4,0xd860,0xdca5,0xd860,0xdca6, - 0xd860,0xdca7,0xd860,0xdca8,0xd860,0xdca9,0xd860,0xdcaa,0xd860,0xdcab, - 0xd860,0xdcac,0xd860,0xdcad,0xd860,0xdcae,0xd860,0xdcaf,0xd860,0xdcb0, - 0xd860,0xdcb1,0xd860,0xdcb2,0xd860,0xdcb3,0xd860,0xdcb4,0xd860,0xdcb5, - 0xd860,0xdcb6,0xd860,0xdcb7,0xd860,0xdcb8,0xd860,0xdcb9,0xd860,0xdcba, - 0xd860,0xdcbb,0xd860,0xdcbc,0xd860,0xdcbd,0xd860,0xdcbe,0xd860,0xdcbf, - 0xd860,0xdcc0,0xd860,0xdcc1,0xd860,0xdcc2,0xd860,0xdcc3,0xd860,0xdcc4, - 0xd860,0xdcc5,0xd860,0xdcc6,0xd860,0xdcc7,0xd860,0xdcc8,0xd860,0xdcc9, - 0xd860,0xdcca,0xd860,0xdccb,0xd860,0xdccc,0xd860,0xdccd,0xd860,0xdcce, - 0xd860,0xdccf,0xd860,0xdcd0,0xd860,0xdcd1,0xd860,0xdcd2,0xd860,0xdcd3, - 0xd860,0xdcd4,0xd860,0xdcd5,0xd860,0xdcd6,0xd860,0xdcd7,0xd860,0xdcd8, - 0xd860,0xdcd9,0xd860,0xdcda,0xd860,0xdcdb,0xd860,0xdcdc,0xd860,0xdcdd, - 0xd860,0xdcde,0xd860,0xdcdf,0xd860,0xdce0,0xd860,0xdce1,0xd860,0xdce2, - 0xd860,0xdce3,0xd860,0xdce4,0xd860,0xdce5,0xd860,0xdce6,0xd860,0xdce7, - 0xd860,0xdce8,0xd860,0xdce9,0xd860,0xdcea,0xd860,0xdceb,0xd860,0xdcec, - 0xd860,0xdced,0xd860,0xdcee,0xd860,0xdcef,0xd860,0xdcf0,0xd860,0xdcf1, - 0xd860,0xdcf2,0xd860,0xdcf3,0xd860,0xdcf4,0xd860,0xdcf5,0xd860,0xdcf6, - 0xd860,0xdcf7,0xd860,0xdcf8,0xd860,0xdcf9,0xd860,0xdcfa,0xd860,0xdcfb, - 0xd860,0xdcfc,0xd860,0xdcfd,0xd860,0xdcfe,0xd860,0xdcff,0xd860,0xdd00, - 0xd860,0xdd01,0xd860,0xdd02,0xd860,0xdd03,0xd860,0xdd04,0xd860,0xdd05, - 0xd860,0xdd06,0xd860,0xdd07,0xd860,0xdd08,0xd860,0xdd09,0xd860,0xdd0a, - 0xd860,0xdd0b,0xd860,0xdd0c,0xd860,0xdd0d,0xd860,0xdd0e,0xd860,0xdd0f, - 0xd860,0xdd10,0xd860,0xdd11,0xd860,0xdd12,0xd860,0xdd13,0xd860,0xdd14, - 0xd860,0xdd15,0xd860,0xdd16,0xd860,0xdd17,0xd860,0xdd18,0xd860,0xdd19, - 0xd860,0xdd1a,0xd860,0xdd1b,0xd860,0xdd1c,0xd860,0xdd1d,0xd860,0xdd1e, - 0xd860,0xdd1f,0xd860,0xdd20,0xd860,0xdd21,0xd860,0xdd22,0xd860,0xdd23, - 0xd860,0xdd24,0xd860,0xdd25,0xd860,0xdd26,0xd860,0xdd27,0xd860,0xdd28, - 0xd860,0xdd29,0xd860,0xdd2a,0xd860,0xdd2b,0xd860,0xdd2c,0xd860,0xdd2d, - 0xd860,0xdd2e,0xd860,0xdd2f,0xd860,0xdd30,0xd860,0xdd31,0xd860,0xdd32, - 0xd860,0xdd33,0xd860,0xdd34,0xd860,0xdd35,0xd860,0xdd36,0xd860,0xdd37, - 0xd860,0xdd38,0xd860,0xdd39,0xd860,0xdd3a,0xd860,0xdd3b,0xd860,0xdd3c, - 0xd860,0xdd3d,0xd860,0xdd3e,0xd860,0xdd3f,0xd860,0xdd40,0xd860,0xdd41, - 0xd860,0xdd42,0xd860,0xdd43,0xd860,0xdd44,0xd860,0xdd45,0xd860,0xdd46, - 0xd860,0xdd47,0xd860,0xdd48,0xd860,0xdd49,0xd860,0xdd4a,0xd860,0xdd4b, - 0xd860,0xdd4c,0xd860,0xdd4d,0xd860,0xdd4e,0xd860,0xdd4f,0xd860,0xdd50, - 0xd860,0xdd51,0xd860,0xdd52,0xd860,0xdd53,0xd860,0xdd54,0xd860,0xdd55, - 0xd860,0xdd56,0xd860,0xdd57,0xd860,0xdd58,0xd860,0xdd59,0xd860,0xdd5a, - 0xd860,0xdd5b,0xd860,0xdd5c,0xd860,0xdd5d,0xd860,0xdd5e,0xd860,0xdd5f, - 0xd860,0xdd60,0xd860,0xdd61,0xd860,0xdd62,0xd860,0xdd63,0xd860,0xdd64, - 0xd860,0xdd65,0xd860,0xdd66,0xd860,0xdd67,0xd860,0xdd68,0xd860,0xdd69, - 0xd860,0xdd6a,0xd860,0xdd6b,0xd860,0xdd6c,0xd860,0xdd6d,0xd860,0xdd6e, - 0xd860,0xdd6f,0xd860,0xdd70,0xd860,0xdd71,0xd860,0xdd72,0xd860,0xdd73, - 0xd860,0xdd74,0xd860,0xdd75,0xd860,0xdd76,0xd860,0xdd77,0xd860,0xdd78, - 0xd860,0xdd79,0xd860,0xdd7a,0xd860,0xdd7b,0xd860,0xdd7c,0xd860,0xdd7d, - 0xd860,0xdd7e,0xd860,0xdd7f,0xd860,0xdd80,0xd860,0xdd81,0xd860,0xdd82, - 0xd860,0xdd83,0xd860,0xdd84,0xd860,0xdd85,0xd860,0xdd86,0xd860,0xdd87, - 0xd860,0xdd88,0xd860,0xdd89,0xd860,0xdd8a,0xd860,0xdd8b,0xd860,0xdd8c, - 0xd860,0xdd8d,0xd860,0xdd8e,0xd860,0xdd8f,0xd860,0xdd90,0xd860,0xdd91, - 0xd860,0xdd92,0xd860,0xdd93,0xd860,0xdd94,0xd860,0xdd95,0xd860,0xdd96, - 0xd860,0xdd97,0xd860,0xdd98,0xd860,0xdd99,0xd860,0xdd9a,0xd860,0xdd9b, - 0xd860,0xdd9c,0xd860,0xdd9d,0xd860,0xdd9e,0xd860,0xdd9f,0xd860,0xdda0, - 0xd860,0xdda1,0xd860,0xdda2,0xd860,0xdda3,0xd860,0xdda4,0xd860,0xdda5, - 0xd860,0xdda6,0xd860,0xdda7,0xd860,0xdda8,0xd860,0xdda9,0xd860,0xddaa, - 0xd860,0xddab,0xd860,0xddac,0xd860,0xddad,0xd860,0xddae,0xd860,0xddaf, - 0xd860,0xddb0,0xd860,0xddb1,0xd860,0xddb2,0xd860,0xddb3,0xd860,0xddb4, - 0xd860,0xddb5,0xd860,0xddb6,0xd860,0xddb7,0xd860,0xddb8,0xd860,0xddb9, - 0xd860,0xddba,0xd860,0xddbb,0xd860,0xddbc,0xd860,0xddbd,0xd860,0xddbe, - 0xd860,0xddbf,0xd860,0xddc0,0xd860,0xddc1,0xd860,0xddc2,0xd860,0xddc3, - 0xd860,0xddc4,0xd860,0xddc5,0xd860,0xddc6,0xd860,0xddc7,0xd860,0xddc8, - 0xd860,0xddc9,0xd860,0xddca,0xd860,0xddcb,0xd860,0xddcc,0xd860,0xddcd, - 0xd860,0xddce,0xd860,0xddcf,0xd860,0xddd0,0xd860,0xddd1,0xd860,0xddd2, - 0xd860,0xddd3,0xd860,0xddd4,0xd860,0xddd5,0xd860,0xddd6,0xd860,0xddd7, - 0xd860,0xddd8,0xd860,0xddd9,0xd860,0xddda,0xd860,0xdddb,0xd860,0xdddc, - 0xd860,0xdddd,0xd860,0xddde,0xd860,0xdddf,0xd860,0xdde0,0xd860,0xdde1, - 0xd860,0xdde2,0xd860,0xdde3,0xd860,0xdde4,0xd860,0xdde5,0xd860,0xdde6, - 0xd860,0xdde7,0xd860,0xdde8,0xd860,0xdde9,0xd860,0xddea,0xd860,0xddeb, - 0xd860,0xddec,0xd860,0xdded,0xd860,0xddee,0xd860,0xddef,0xd860,0xddf0, - 0xd860,0xddf1,0xd860,0xddf2,0xd860,0xddf3,0xd860,0xddf4,0xd860,0xddf5, - 0xd860,0xddf6,0xd860,0xddf7,0xd860,0xddf8,0xd860,0xddf9,0xd860,0xddfa, - 0xd860,0xddfb,0xd860,0xddfc,0xd860,0xddfd,0xd860,0xddfe,0xd860,0xddff, - 0xd860,0xde00,0xd860,0xde01,0xd860,0xde02,0xd860,0xde03,0xd860,0xde04, - 0xd860,0xde05,0xd860,0xde06,0xd860,0xde07,0xd860,0xde08,0xd860,0xde09, - 0xd860,0xde0a,0xd860,0xde0b,0xd860,0xde0c,0xd860,0xde0d,0xd860,0xde0e, - 0xd860,0xde0f,0xd860,0xde10,0xd860,0xde11,0xd860,0xde12,0xd860,0xde13, - 0xd860,0xde14,0xd860,0xde15,0xd860,0xde16,0xd860,0xde17,0xd860,0xde18, - 0xd860,0xde19,0xd860,0xde1a,0xd860,0xde1b,0xd860,0xde1c,0xd860,0xde1d, - 0xd860,0xde1e,0xd860,0xde1f,0xd860,0xde20,0xd860,0xde21,0xd860,0xde22, - 0xd860,0xde23,0xd860,0xde24,0xd860,0xde25,0xd860,0xde26,0xd860,0xde27, - 0xd860,0xde28,0xd860,0xde29,0xd860,0xde2a,0xd860,0xde2b,0xd860,0xde2c, - 0xd860,0xde2d,0xd860,0xde2e,0xd860,0xde2f,0xd860,0xde30,0xd860,0xde31, - 0xd860,0xde32,0xd860,0xde33,0xd860,0xde34,0xd860,0xde35,0xd860,0xde36, - 0xd860,0xde37,0xd860,0xde38,0xd860,0xde39,0xd860,0xde3a,0xd860,0xde3b, - 0xd860,0xde3c,0xd860,0xde3d,0xd860,0xde3e,0xd860,0xde3f,0xd860,0xde40, - 0xd860,0xde41,0xd860,0xde42,0xd860,0xde43,0xd860,0xde44,0xd860,0xde45, - 0xd860,0xde46,0xd860,0xde47,0xd860,0xde48,0xd860,0xde49,0xd860,0xde4a, - 0xd860,0xde4b,0xd860,0xde4c,0xd860,0xde4d,0xd860,0xde4e,0xd860,0xde4f, - 0xd860,0xde50,0xd860,0xde51,0xd860,0xde52,0xd860,0xde53,0xd860,0xde54, - 0xd860,0xde55,0xd860,0xde56,0xd860,0xde57,0xd860,0xde58,0xd860,0xde59, - 0xd860,0xde5a,0xd860,0xde5b,0xd860,0xde5c,0xd860,0xde5d,0xd860,0xde5e, - 0xd860,0xde5f,0xd860,0xde60,0xd860,0xde61,0xd860,0xde62,0xd860,0xde63, - 0xd860,0xde64,0xd860,0xde65,0xd860,0xde66,0xd860,0xde67,0xd860,0xde68, - 0xd860,0xde69,0xd860,0xde6a,0xd860,0xde6b,0xd860,0xde6c,0xd860,0xde6d, - 0xd860,0xde6e,0xd860,0xde6f,0xd860,0xde70,0xd860,0xde71,0xd860,0xde72, - 0xd860,0xde73,0xd860,0xde74,0xd860,0xde75,0xd860,0xde76,0xd860,0xde77, - 0xd860,0xde78,0xd860,0xde79,0xd860,0xde7a,0xd860,0xde7b,0xd860,0xde7c, - 0xd860,0xde7d,0xd860,0xde7e,0xd860,0xde7f,0xd860,0xde80,0xd860,0xde81, - 0xd860,0xde82,0xd860,0xde83,0xd860,0xde84,0xd860,0xde85,0xd860,0xde86, - 0xd860,0xde87,0xd860,0xde88,0xd860,0xde89,0xd860,0xde8a,0xd860,0xde8b, - 0xd860,0xde8c,0xd860,0xde8d,0xd860,0xde8e,0xd860,0xde8f,0xd860,0xde90, - 0xd860,0xde91,0xd860,0xde92,0xd860,0xde93,0xd860,0xde94,0xd860,0xde95, - 0xd860,0xde96,0xd860,0xde97,0xd860,0xde98,0xd860,0xde99,0xd860,0xde9a, - 0xd860,0xde9b,0xd860,0xde9c,0xd860,0xde9d,0xd860,0xde9e,0xd860,0xde9f, - 0xd860,0xdea0,0xd860,0xdea1,0xd860,0xdea2,0xd860,0xdea3,0xd860,0xdea4, - 0xd860,0xdea5,0xd860,0xdea6,0xd860,0xdea7,0xd860,0xdea8,0xd860,0xdea9, - 0xd860,0xdeaa,0xd860,0xdeab,0xd860,0xdeac,0xd860,0xdead,0xd860,0xdeae, - 0xd860,0xdeaf,0xd860,0xdeb0,0xd860,0xdeb1,0xd860,0xdeb2,0xd860,0xdeb3, - 0xd860,0xdeb4,0xd860,0xdeb5,0xd860,0xdeb6,0xd860,0xdeb7,0xd860,0xdeb8, - 0xd860,0xdeb9,0xd860,0xdeba,0xd860,0xdebb,0xd860,0xdebc,0xd860,0xdebd, - 0xd860,0xdebe,0xd860,0xdebf,0xd860,0xdec0,0xd860,0xdec1,0xd860,0xdec2, - 0xd860,0xdec3,0xd860,0xdec4,0xd860,0xdec5,0xd860,0xdec6,0xd860,0xdec7, - 0xd860,0xdec8,0xd860,0xdec9,0xd860,0xdeca,0xd860,0xdecb,0xd860,0xdecc, - 0xd860,0xdecd,0xd860,0xdece,0xd860,0xdecf,0xd860,0xded0,0xd860,0xded1, - 0xd860,0xded2,0xd860,0xded3,0xd860,0xded4,0xd860,0xded5,0xd860,0xded6, - 0xd860,0xded7,0xd860,0xded8,0xd860,0xded9,0xd860,0xdeda,0xd860,0xdedb, - 0xd860,0xdedc,0xd860,0xdedd,0xd860,0xdede,0xd860,0xdedf,0xd860,0xdee0, - 0xd860,0xdee1,0xd860,0xdee2,0xd860,0xdee3,0xd860,0xdee4,0xd860,0xdee5, - 0xd860,0xdee6,0xd860,0xdee7,0xd860,0xdee8,0xd860,0xdee9,0xd860,0xdeea, - 0xd860,0xdeeb,0xd860,0xdeec,0xd860,0xdeed,0xd860,0xdeee,0xd860,0xdeef, - 0xd860,0xdef0,0xd860,0xdef1,0xd860,0xdef2,0xd860,0xdef3,0xd860,0xdef4, - 0xd860,0xdef5,0xd860,0xdef6,0xd860,0xdef7,0xd860,0xdef8,0xd860,0xdef9, - 0xd860,0xdefa,0xd860,0xdefb,0xd860,0xdefc,0xd860,0xdefd,0xd860,0xdefe, - 0xd860,0xdeff,0xd860,0xdf00,0xd860,0xdf01,0xd860,0xdf02,0xd860,0xdf03, - 0xd860,0xdf04,0xd860,0xdf05,0xd860,0xdf06,0xd860,0xdf07,0xd860,0xdf08, - 0xd860,0xdf09,0xd860,0xdf0a,0xd860,0xdf0b,0xd860,0xdf0c,0xd860,0xdf0d, - 0xd860,0xdf0e,0xd860,0xdf0f,0xd860,0xdf10,0xd860,0xdf11,0xd860,0xdf12, - 0xd860,0xdf13,0xd860,0xdf14,0xd860,0xdf15,0xd860,0xdf16,0xd860,0xdf17, - 0xd860,0xdf18,0xd860,0xdf19,0xd860,0xdf1a,0xd860,0xdf1b,0xd860,0xdf1c, - 0xd860,0xdf1d,0xd860,0xdf1e,0xd860,0xdf1f,0xd860,0xdf20,0xd860,0xdf21, - 0xd860,0xdf22,0xd860,0xdf23,0xd860,0xdf24,0xd860,0xdf25,0xd860,0xdf26, - 0xd860,0xdf27,0xd860,0xdf28,0xd860,0xdf29,0xd860,0xdf2a,0xd860,0xdf2b, - 0xd860,0xdf2c,0xd860,0xdf2d,0xd860,0xdf2e,0xd860,0xdf2f,0xd860,0xdf30, - 0xd860,0xdf31,0xd860,0xdf32,0xd860,0xdf33,0xd860,0xdf34,0xd860,0xdf35, - 0xd860,0xdf36,0xd860,0xdf37,0xd860,0xdf38,0xd860,0xdf39,0xd860,0xdf3a, - 0xd860,0xdf3b,0xd860,0xdf3c,0xd860,0xdf3d,0xd860,0xdf3e,0xd860,0xdf3f, - 0xd860,0xdf40,0xd860,0xdf41,0xd860,0xdf42,0xd860,0xdf43,0xd860,0xdf44, - 0xd860,0xdf45,0xd860,0xdf46,0xd860,0xdf47,0xd860,0xdf48,0xd860,0xdf49, - 0xd860,0xdf4a,0xd860,0xdf4b,0xd860,0xdf4c,0xd860,0xdf4d,0xd860,0xdf4e, - 0xd860,0xdf4f,0xd860,0xdf50,0xd860,0xdf51,0xd860,0xdf52,0xd860,0xdf53, - 0xd860,0xdf54,0xd860,0xdf55,0xd860,0xdf56,0xd860,0xdf57,0xd860,0xdf58, - 0xd860,0xdf59,0xd860,0xdf5a,0xd860,0xdf5b,0xd860,0xdf5c,0xd860,0xdf5d, - 0xd860,0xdf5e,0xd860,0xdf5f,0xd860,0xdf60,0xd860,0xdf61,0xd860,0xdf62, - 0xd860,0xdf63,0xd860,0xdf64,0xd860,0xdf65,0xd860,0xdf66,0xd860,0xdf67, - 0xd860,0xdf68,0xd860,0xdf69,0xd860,0xdf6a,0xd860,0xdf6b,0xd860,0xdf6c, - 0xd860,0xdf6d,0xd860,0xdf6e,0xd860,0xdf6f,0xd860,0xdf70,0xd860,0xdf71, - 0xd860,0xdf72,0xd860,0xdf73,0xd860,0xdf74,0xd860,0xdf75,0xd860,0xdf76, - 0xd860,0xdf77,0xd860,0xdf78,0xd860,0xdf79,0xd860,0xdf7a,0xd860,0xdf7b, - 0xd860,0xdf7c,0xd860,0xdf7d,0xd860,0xdf7e,0xd860,0xdf7f,0xd860,0xdf80, - 0xd860,0xdf81,0xd860,0xdf82,0xd860,0xdf83,0xd860,0xdf84,0xd860,0xdf85, - 0xd860,0xdf86,0xd860,0xdf87,0xd860,0xdf88,0xd860,0xdf89,0xd860,0xdf8a, - 0xd860,0xdf8b,0xd860,0xdf8c,0xd860,0xdf8d,0xd860,0xdf8e,0xd860,0xdf8f, - 0xd860,0xdf90,0xd860,0xdf91,0xd860,0xdf92,0xd860,0xdf93,0xd860,0xdf94, - 0xd860,0xdf95,0xd860,0xdf96,0xd860,0xdf97,0xd860,0xdf98,0xd860,0xdf99, - 0xd860,0xdf9a,0xd860,0xdf9b,0xd860,0xdf9c,0xd860,0xdf9d,0xd860,0xdf9e, - 0xd860,0xdf9f,0xd860,0xdfa0,0xd860,0xdfa1,0xd860,0xdfa2,0xd860,0xdfa3, - 0xd860,0xdfa4,0xd860,0xdfa5,0xd860,0xdfa6,0xd860,0xdfa7,0xd860,0xdfa8, - 0xd860,0xdfa9,0xd860,0xdfaa,0xd860,0xdfab,0xd860,0xdfac,0xd860,0xdfad, - 0xd860,0xdfae,0xd860,0xdfaf,0xd860,0xdfb0,0xd860,0xdfb1,0xd860,0xdfb2, - 0xd860,0xdfb3,0xd860,0xdfb4,0xd860,0xdfb5,0xd860,0xdfb6,0xd860,0xdfb7, - 0xd860,0xdfb8,0xd860,0xdfb9,0xd860,0xdfba,0xd860,0xdfbb,0xd860,0xdfbc, - 0xd860,0xdfbd,0xd860,0xdfbe,0xd860,0xdfbf,0xd860,0xdfc0,0xd860,0xdfc1, - 0xd860,0xdfc2,0xd860,0xdfc3,0xd860,0xdfc4,0xd860,0xdfc5,0xd860,0xdfc6, - 0xd860,0xdfc7,0xd860,0xdfc8,0xd860,0xdfc9,0xd860,0xdfca,0xd860,0xdfcb, - 0xd860,0xdfcc,0xd860,0xdfcd,0xd860,0xdfce,0xd860,0xdfcf,0xd860,0xdfd0, - 0xd860,0xdfd1,0xd860,0xdfd2,0xd860,0xdfd3,0xd860,0xdfd4,0xd860,0xdfd5, - 0xd860,0xdfd6,0xd860,0xdfd7,0xd860,0xdfd8,0xd860,0xdfd9,0xd860,0xdfda, - 0xd860,0xdfdb,0xd860,0xdfdc,0xd860,0xdfdd,0xd860,0xdfde,0xd860,0xdfdf, - 0xd860,0xdfe0,0xd860,0xdfe1,0xd860,0xdfe2,0xd860,0xdfe3,0xd860,0xdfe4, - 0xd860,0xdfe5,0xd860,0xdfe6,0xd860,0xdfe7,0xd860,0xdfe8,0xd860,0xdfe9, - 0xd860,0xdfea,0xd860,0xdfeb,0xd860,0xdfec,0xd860,0xdfed,0xd860,0xdfee, - 0xd860,0xdfef,0xd860,0xdff0,0xd860,0xdff1,0xd860,0xdff2,0xd860,0xdff3, - 0xd860,0xdff4,0xd860,0xdff5,0xd860,0xdff6,0xd860,0xdff7,0xd860,0xdff8, - 0xd860,0xdff9,0xd860,0xdffa,0xd860,0xdffb,0xd860,0xdffc,0xd860,0xdffd, - 0xd860,0xdffe,0xd860,0xdfff,0xd861,0xdc00,0xd861,0xdc01,0xd861,0xdc02, - 0xd861,0xdc03,0xd861,0xdc04,0xd861,0xdc05,0xd861,0xdc06,0xd861,0xdc07, - 0xd861,0xdc08,0xd861,0xdc09,0xd861,0xdc0a,0xd861,0xdc0b,0xd861,0xdc0c, - 0xd861,0xdc0d,0xd861,0xdc0e,0xd861,0xdc0f,0xd861,0xdc10,0xd861,0xdc11, - 0xd861,0xdc12,0xd861,0xdc13,0xd861,0xdc14,0xd861,0xdc15,0xd861,0xdc16, - 0xd861,0xdc17,0xd861,0xdc18,0xd861,0xdc19,0xd861,0xdc1a,0xd861,0xdc1b, - 0xd861,0xdc1c,0xd861,0xdc1d,0xd861,0xdc1e,0xd861,0xdc1f,0xd861,0xdc20, - 0xd861,0xdc21,0xd861,0xdc22,0xd861,0xdc23,0xd861,0xdc24,0xd861,0xdc25, - 0xd861,0xdc26,0xd861,0xdc27,0xd861,0xdc28,0xd861,0xdc29,0xd861,0xdc2a, - 0xd861,0xdc2b,0xd861,0xdc2c,0xd861,0xdc2d,0xd861,0xdc2e,0xd861,0xdc2f, - 0xd861,0xdc30,0xd861,0xdc31,0xd861,0xdc32,0xd861,0xdc33,0xd861,0xdc34, - 0xd861,0xdc35,0xd861,0xdc36,0xd861,0xdc37,0xd861,0xdc38,0xd861,0xdc39, - 0xd861,0xdc3a,0xd861,0xdc3b,0xd861,0xdc3c,0xd861,0xdc3d,0xd861,0xdc3e, - 0xd861,0xdc3f,0xd861,0xdc40,0xd861,0xdc41,0xd861,0xdc42,0xd861,0xdc43, - 0xd861,0xdc44,0xd861,0xdc45,0xd861,0xdc46,0xd861,0xdc47,0xd861,0xdc48, - 0xd861,0xdc49,0xd861,0xdc4a,0xd861,0xdc4b,0xd861,0xdc4c,0xd861,0xdc4d, - 0xd861,0xdc4e,0xd861,0xdc4f,0xd861,0xdc50,0xd861,0xdc51,0xd861,0xdc52, - 0xd861,0xdc53,0xd861,0xdc54,0xd861,0xdc55,0xd861,0xdc56,0xd861,0xdc57, - 0xd861,0xdc58,0xd861,0xdc59,0xd861,0xdc5a,0xd861,0xdc5b,0xd861,0xdc5c, - 0xd861,0xdc5d,0xd861,0xdc5e,0xd861,0xdc5f,0xd861,0xdc60,0xd861,0xdc61, - 0xd861,0xdc62,0xd861,0xdc63,0xd861,0xdc64,0xd861,0xdc65,0xd861,0xdc66, - 0xd861,0xdc67,0xd861,0xdc68,0xd861,0xdc69,0xd861,0xdc6a,0xd861,0xdc6b, - 0xd861,0xdc6c,0xd861,0xdc6d,0xd861,0xdc6e,0xd861,0xdc6f,0xd861,0xdc70, - 0xd861,0xdc71,0xd861,0xdc72,0xd861,0xdc73,0xd861,0xdc74,0xd861,0xdc75, - 0xd861,0xdc76,0xd861,0xdc77,0xd861,0xdc78,0xd861,0xdc79,0xd861,0xdc7a, - 0xd861,0xdc7b,0xd861,0xdc7c,0xd861,0xdc7d,0xd861,0xdc7e,0xd861,0xdc7f, - 0xd861,0xdc80,0xd861,0xdc81,0xd861,0xdc82,0xd861,0xdc83,0xd861,0xdc84, - 0xd861,0xdc85,0xd861,0xdc86,0xd861,0xdc87,0xd861,0xdc88,0xd861,0xdc89, - 0xd861,0xdc8a,0xd861,0xdc8b,0xd861,0xdc8c,0xd861,0xdc8d,0xd861,0xdc8e, - 0xd861,0xdc8f,0xd861,0xdc90,0xd861,0xdc91,0xd861,0xdc92,0xd861,0xdc93, - 0xd861,0xdc94,0xd861,0xdc95,0xd861,0xdc96,0xd861,0xdc97,0xd861,0xdc98, - 0xd861,0xdc99,0xd861,0xdc9a,0xd861,0xdc9b,0xd861,0xdc9c,0xd861,0xdc9d, - 0xd861,0xdc9e,0xd861,0xdc9f,0xd861,0xdca0,0xd861,0xdca1,0xd861,0xdca2, - 0xd861,0xdca3,0xd861,0xdca4,0xd861,0xdca5,0xd861,0xdca6,0xd861,0xdca7, - 0xd861,0xdca8,0xd861,0xdca9,0xd861,0xdcaa,0xd861,0xdcab,0xd861,0xdcac, - 0xd861,0xdcad,0xd861,0xdcae,0xd861,0xdcaf,0xd861,0xdcb0,0xd861,0xdcb1, - 0xd861,0xdcb2,0xd861,0xdcb3,0xd861,0xdcb4,0xd861,0xdcb5,0xd861,0xdcb6, - 0xd861,0xdcb7,0xd861,0xdcb8,0xd861,0xdcb9,0xd861,0xdcba,0xd861,0xdcbb, - 0xd861,0xdcbc,0xd861,0xdcbd,0xd861,0xdcbe,0xd861,0xdcbf,0xd861,0xdcc0, - 0xd861,0xdcc1,0xd861,0xdcc2,0xd861,0xdcc3,0xd861,0xdcc4,0xd861,0xdcc5, - 0xd861,0xdcc6,0xd861,0xdcc7,0xd861,0xdcc8,0xd861,0xdcc9,0xd861,0xdcca, - 0xd861,0xdccb,0xd861,0xdccc,0xd861,0xdccd,0xd861,0xdcce,0xd861,0xdccf, - 0xd861,0xdcd0,0xd861,0xdcd1,0xd861,0xdcd2,0xd861,0xdcd3,0xd861,0xdcd4, - 0xd861,0xdcd5,0xd861,0xdcd6,0xd861,0xdcd7,0xd861,0xdcd8,0xd861,0xdcd9, - 0xd861,0xdcda,0xd861,0xdcdb,0xd861,0xdcdc,0xd861,0xdcdd,0xd861,0xdcde, - 0xd861,0xdcdf,0xd861,0xdce0,0xd861,0xdce1,0xd861,0xdce2,0xd861,0xdce3, - 0xd861,0xdce4,0xd861,0xdce5,0xd861,0xdce6,0xd861,0xdce7,0xd861,0xdce8, - 0xd861,0xdce9,0xd861,0xdcea,0xd861,0xdceb,0xd861,0xdcec,0xd861,0xdced, - 0xd861,0xdcee,0xd861,0xdcef,0xd861,0xdcf0,0xd861,0xdcf1,0xd861,0xdcf2, - 0xd861,0xdcf3,0xd861,0xdcf4,0xd861,0xdcf5,0xd861,0xdcf6,0xd861,0xdcf7, - 0xd861,0xdcf8,0xd861,0xdcf9,0xd861,0xdcfa,0xd861,0xdcfb,0xd861,0xdcfc, - 0xd861,0xdcfd,0xd861,0xdcfe,0xd861,0xdcff,0xd861,0xdd00,0xd861,0xdd01, - 0xd861,0xdd02,0xd861,0xdd03,0xd861,0xdd04,0xd861,0xdd05,0xd861,0xdd06, - 0xd861,0xdd07,0xd861,0xdd08,0xd861,0xdd09,0xd861,0xdd0a,0xd861,0xdd0b, - 0xd861,0xdd0c,0xd861,0xdd0d,0xd861,0xdd0e,0xd861,0xdd0f,0xd861,0xdd10, - 0xd861,0xdd11,0xd861,0xdd12,0xd861,0xdd13,0xd861,0xdd14,0xd861,0xdd15, - 0xd861,0xdd16,0xd861,0xdd17,0xd861,0xdd18,0xd861,0xdd19,0xd861,0xdd1a, - 0xd861,0xdd1b,0xd861,0xdd1c,0xd861,0xdd1d,0xd861,0xdd1e,0xd861,0xdd1f, - 0xd861,0xdd20,0xd861,0xdd21,0xd861,0xdd22,0xd861,0xdd23,0xd861,0xdd24, - 0xd861,0xdd25,0xd861,0xdd26,0xd861,0xdd27,0xd861,0xdd28,0xd861,0xdd29, - 0xd861,0xdd2a,0xd861,0xdd2b,0xd861,0xdd2c,0xd861,0xdd2d,0xd861,0xdd2e, - 0xd861,0xdd2f,0xd861,0xdd30,0xd861,0xdd31,0xd861,0xdd32,0xd861,0xdd33, - 0xd861,0xdd34,0xd861,0xdd35,0xd861,0xdd36,0xd861,0xdd37,0xd861,0xdd38, - 0xd861,0xdd39,0xd861,0xdd3a,0xd861,0xdd3b,0xd861,0xdd3c,0xd861,0xdd3d, - 0xd861,0xdd3e,0xd861,0xdd3f,0xd861,0xdd40,0xd861,0xdd41,0xd861,0xdd42, - 0xd861,0xdd43,0xd861,0xdd44,0xd861,0xdd45,0xd861,0xdd46,0xd861,0xdd47, - 0xd861,0xdd48,0xd861,0xdd49,0xd861,0xdd4a,0xd861,0xdd4b,0xd861,0xdd4c, - 0xd861,0xdd4d,0xd861,0xdd4e,0xd861,0xdd4f,0xd861,0xdd50,0xd861,0xdd51, - 0xd861,0xdd52,0xd861,0xdd53,0xd861,0xdd54,0xd861,0xdd55,0xd861,0xdd56, - 0xd861,0xdd57,0xd861,0xdd58,0xd861,0xdd59,0xd861,0xdd5a,0xd861,0xdd5b, - 0xd861,0xdd5c,0xd861,0xdd5d,0xd861,0xdd5e,0xd861,0xdd5f,0xd861,0xdd60, - 0xd861,0xdd61,0xd861,0xdd62,0xd861,0xdd63,0xd861,0xdd64,0xd861,0xdd65, - 0xd861,0xdd66,0xd861,0xdd67,0xd861,0xdd68,0xd861,0xdd69,0xd861,0xdd6a, - 0xd861,0xdd6b,0xd861,0xdd6c,0xd861,0xdd6d,0xd861,0xdd6e,0xd861,0xdd6f, - 0xd861,0xdd70,0xd861,0xdd71,0xd861,0xdd72,0xd861,0xdd73,0xd861,0xdd74, - 0xd861,0xdd75,0xd861,0xdd76,0xd861,0xdd77,0xd861,0xdd78,0xd861,0xdd79, - 0xd861,0xdd7a,0xd861,0xdd7b,0xd861,0xdd7c,0xd861,0xdd7d,0xd861,0xdd7e, - 0xd861,0xdd7f,0xd861,0xdd80,0xd861,0xdd81,0xd861,0xdd82,0xd861,0xdd83, - 0xd861,0xdd84,0xd861,0xdd85,0xd861,0xdd86,0xd861,0xdd87,0xd861,0xdd88, - 0xd861,0xdd89,0xd861,0xdd8a,0xd861,0xdd8b,0xd861,0xdd8c,0xd861,0xdd8d, - 0xd861,0xdd8e,0xd861,0xdd8f,0xd861,0xdd90,0xd861,0xdd91,0xd861,0xdd92, - 0xd861,0xdd93,0xd861,0xdd94,0xd861,0xdd95,0xd861,0xdd96,0xd861,0xdd97, - 0xd861,0xdd98,0xd861,0xdd99,0xd861,0xdd9a,0xd861,0xdd9b,0xd861,0xdd9c, - 0xd861,0xdd9d,0xd861,0xdd9e,0xd861,0xdd9f,0xd861,0xdda0,0xd861,0xdda1, - 0xd861,0xdda2,0xd861,0xdda3,0xd861,0xdda4,0xd861,0xdda5,0xd861,0xdda6, - 0xd861,0xdda7,0xd861,0xdda8,0xd861,0xdda9,0xd861,0xddaa,0xd861,0xddab, - 0xd861,0xddac,0xd861,0xddad,0xd861,0xddae,0xd861,0xddaf,0xd861,0xddb0, - 0xd861,0xddb1,0xd861,0xddb2,0xd861,0xddb3,0xd861,0xddb4,0xd861,0xddb5, - 0xd861,0xddb6,0xd861,0xddb7,0xd861,0xddb8,0xd861,0xddb9,0xd861,0xddba, - 0xd861,0xddbb,0xd861,0xddbc,0xd861,0xddbd,0xd861,0xddbe,0xd861,0xddbf, - 0xd861,0xddc0,0xd861,0xddc1,0xd861,0xddc2,0xd861,0xddc3,0xd861,0xddc4, - 0xd861,0xddc5,0xd861,0xddc6,0xd861,0xddc7,0xd861,0xddc8,0xd861,0xddc9, - 0xd861,0xddca,0xd861,0xddcb,0xd861,0xddcc,0xd861,0xddcd,0xd861,0xddce, - 0xd861,0xddcf,0xd861,0xddd0,0xd861,0xddd1,0xd861,0xddd2,0xd861,0xddd3, - 0xd861,0xddd4,0xd861,0xddd5,0xd861,0xddd6,0xd861,0xddd7,0xd861,0xddd8, - 0xd861,0xddd9,0xd861,0xddda,0xd861,0xdddb,0xd861,0xdddc,0xd861,0xdddd, - 0xd861,0xddde,0xd861,0xdddf,0xd861,0xdde0,0xd861,0xdde1,0xd861,0xdde2, - 0xd861,0xdde3,0xd861,0xdde4,0xd861,0xdde5,0xd861,0xdde6,0xd861,0xdde7, - 0xd861,0xdde8,0xd861,0xdde9,0xd861,0xddea,0xd861,0xddeb,0xd861,0xddec, - 0xd861,0xdded,0xd861,0xddee,0xd861,0xddef,0xd861,0xddf0,0xd861,0xddf1, - 0xd861,0xddf2,0xd861,0xddf3,0xd861,0xddf4,0xd861,0xddf5,0xd861,0xddf6, - 0xd861,0xddf7,0xd861,0xddf8,0xd861,0xddf9,0xd861,0xddfa,0xd861,0xddfb, - 0xd861,0xddfc,0xd861,0xddfd,0xd861,0xddfe,0xd861,0xddff,0xd861,0xde00, - 0xd861,0xde01,0xd861,0xde02,0xd861,0xde03,0xd861,0xde04,0xd861,0xde05, - 0xd861,0xde06,0xd861,0xde07,0xd861,0xde08,0xd861,0xde09,0xd861,0xde0a, - 0xd861,0xde0b,0xd861,0xde0c,0xd861,0xde0d,0xd861,0xde0e,0xd861,0xde0f, - 0xd861,0xde10,0xd861,0xde11,0xd861,0xde12,0xd861,0xde13,0xd861,0xde14, - 0xd861,0xde15,0xd861,0xde16,0xd861,0xde17,0xd861,0xde18,0xd861,0xde19, - 0xd861,0xde1a,0xd861,0xde1b,0xd861,0xde1c,0xd861,0xde1d,0xd861,0xde1e, - 0xd861,0xde1f,0xd861,0xde20,0xd861,0xde21,0xd861,0xde22,0xd861,0xde23, - 0xd861,0xde24,0xd861,0xde25,0xd861,0xde26,0xd861,0xde27,0xd861,0xde28, - 0xd861,0xde29,0xd861,0xde2a,0xd861,0xde2b,0xd861,0xde2c,0xd861,0xde2d, - 0xd861,0xde2e,0xd861,0xde2f,0xd861,0xde30,0xd861,0xde31,0xd861,0xde32, - 0xd861,0xde33,0xd861,0xde34,0xd861,0xde35,0xd861,0xde36,0xd861,0xde37, - 0xd861,0xde38,0xd861,0xde39,0xd861,0xde3a,0xd861,0xde3b,0xd861,0xde3c, - 0xd861,0xde3d,0xd861,0xde3e,0xd861,0xde3f,0xd861,0xde40,0xd861,0xde41, - 0xd861,0xde42,0xd861,0xde43,0xd861,0xde44,0xd861,0xde45,0xd861,0xde46, - 0xd861,0xde47,0xd861,0xde48,0xd861,0xde49,0xd861,0xde4a,0xd861,0xde4b, - 0xd861,0xde4c,0xd861,0xde4d,0xd861,0xde4e,0xd861,0xde4f,0xd861,0xde50, - 0xd861,0xde51,0xd861,0xde52,0xd861,0xde53,0xd861,0xde54,0xd861,0xde55, - 0xd861,0xde56,0xd861,0xde57,0xd861,0xde58,0xd861,0xde59,0xd861,0xde5a, - 0xd861,0xde5b,0xd861,0xde5c,0xd861,0xde5d,0xd861,0xde5e,0xd861,0xde5f, - 0xd861,0xde60,0xd861,0xde61,0xd861,0xde62,0xd861,0xde63,0xd861,0xde64, - 0xd861,0xde65,0xd861,0xde66,0xd861,0xde67,0xd861,0xde68,0xd861,0xde69, - 0xd861,0xde6a,0xd861,0xde6b,0xd861,0xde6c,0xd861,0xde6d,0xd861,0xde6e, - 0xd861,0xde6f,0xd861,0xde70,0xd861,0xde71,0xd861,0xde72,0xd861,0xde73, - 0xd861,0xde74,0xd861,0xde75,0xd861,0xde76,0xd861,0xde77,0xd861,0xde78, - 0xd861,0xde79,0xd861,0xde7a,0xd861,0xde7b,0xd861,0xde7c,0xd861,0xde7d, - 0xd861,0xde7e,0xd861,0xde7f,0xd861,0xde80,0xd861,0xde81,0xd861,0xde82, - 0xd861,0xde83,0xd861,0xde84,0xd861,0xde85,0xd861,0xde86,0xd861,0xde87, - 0xd861,0xde88,0xd861,0xde89,0xd861,0xde8a,0xd861,0xde8b,0xd861,0xde8c, - 0xd861,0xde8d,0xd861,0xde8e,0xd861,0xde8f,0xd861,0xde90,0xd861,0xde91, - 0xd861,0xde92,0xd861,0xde93,0xd861,0xde94,0xd861,0xde95,0xd861,0xde96, - 0xd861,0xde97,0xd861,0xde98,0xd861,0xde99,0xd861,0xde9a,0xd861,0xde9b, - 0xd861,0xde9c,0xd861,0xde9d,0xd861,0xde9e,0xd861,0xde9f,0xd861,0xdea0, - 0xd861,0xdea1,0xd861,0xdea2,0xd861,0xdea3,0xd861,0xdea4,0xd861,0xdea5, - 0xd861,0xdea6,0xd861,0xdea7,0xd861,0xdea8,0xd861,0xdea9,0xd861,0xdeaa, - 0xd861,0xdeab,0xd861,0xdeac,0xd861,0xdead,0xd861,0xdeae,0xd861,0xdeaf, - 0xd861,0xdeb0,0xd861,0xdeb1,0xd861,0xdeb2,0xd861,0xdeb3,0xd861,0xdeb4, - 0xd861,0xdeb5,0xd861,0xdeb6,0xd861,0xdeb7,0xd861,0xdeb8,0xd861,0xdeb9, - 0xd861,0xdeba,0xd861,0xdebb,0xd861,0xdebc,0xd861,0xdebd,0xd861,0xdebe, - 0xd861,0xdebf,0xd861,0xdec0,0xd861,0xdec1,0xd861,0xdec2,0xd861,0xdec3, - 0xd861,0xdec4,0xd861,0xdec5,0xd861,0xdec6,0xd861,0xdec7,0xd861,0xdec8, - 0xd861,0xdec9,0xd861,0xdeca,0xd861,0xdecb,0xd861,0xdecc,0xd861,0xdecd, - 0xd861,0xdece,0xd861,0xdecf,0xd861,0xded0,0xd861,0xded1,0xd861,0xded2, - 0xd861,0xded3,0xd861,0xded4,0xd861,0xded5,0xd861,0xded6,0xd861,0xded7, - 0xd861,0xded8,0xd861,0xded9,0xd861,0xdeda,0xd861,0xdedb,0xd861,0xdedc, - 0xd861,0xdedd,0xd861,0xdede,0xd861,0xdedf,0xd861,0xdee0,0xd861,0xdee1, - 0xd861,0xdee2,0xd861,0xdee3,0xd861,0xdee4,0xd861,0xdee5,0xd861,0xdee6, - 0xd861,0xdee7,0xd861,0xdee8,0xd861,0xdee9,0xd861,0xdeea,0xd861,0xdeeb, - 0xd861,0xdeec,0xd861,0xdeed,0xd861,0xdeee,0xd861,0xdeef,0xd861,0xdef0, - 0xd861,0xdef1,0xd861,0xdef2,0xd861,0xdef3,0xd861,0xdef4,0xd861,0xdef5, - 0xd861,0xdef6,0xd861,0xdef7,0xd861,0xdef8,0xd861,0xdef9,0xd861,0xdefa, - 0xd861,0xdefb,0xd861,0xdefc,0xd861,0xdefd,0xd861,0xdefe,0xd861,0xdeff, - 0xd861,0xdf00,0xd861,0xdf01,0xd861,0xdf02,0xd861,0xdf03,0xd861,0xdf04, - 0xd861,0xdf05,0xd861,0xdf06,0xd861,0xdf07,0xd861,0xdf08,0xd861,0xdf09, - 0xd861,0xdf0a,0xd861,0xdf0b,0xd861,0xdf0c,0xd861,0xdf0d,0xd861,0xdf0e, - 0xd861,0xdf0f,0xd861,0xdf10,0xd861,0xdf11,0xd861,0xdf12,0xd861,0xdf13, - 0xd861,0xdf14,0xd861,0xdf15,0xd861,0xdf16,0xd861,0xdf17,0xd861,0xdf18, - 0xd861,0xdf19,0xd861,0xdf1a,0xd861,0xdf1b,0xd861,0xdf1c,0xd861,0xdf1d, - 0xd861,0xdf1e,0xd861,0xdf1f,0xd861,0xdf20,0xd861,0xdf21,0xd861,0xdf22, - 0xd861,0xdf23,0xd861,0xdf24,0xd861,0xdf25,0xd861,0xdf26,0xd861,0xdf27, - 0xd861,0xdf28,0xd861,0xdf29,0xd861,0xdf2a,0xd861,0xdf2b,0xd861,0xdf2c, - 0xd861,0xdf2d,0xd861,0xdf2e,0xd861,0xdf2f,0xd861,0xdf30,0xd861,0xdf31, - 0xd861,0xdf32,0xd861,0xdf33,0xd861,0xdf34,0xd861,0xdf35,0xd861,0xdf36, - 0xd861,0xdf37,0xd861,0xdf38,0xd861,0xdf39,0xd861,0xdf3a,0xd861,0xdf3b, - 0xd861,0xdf3c,0xd861,0xdf3d,0xd861,0xdf3e,0xd861,0xdf3f,0xd861,0xdf40, - 0xd861,0xdf41,0xd861,0xdf42,0xd861,0xdf43,0xd861,0xdf44,0xd861,0xdf45, - 0xd861,0xdf46,0xd861,0xdf47,0xd861,0xdf48,0xd861,0xdf49,0xd861,0xdf4a, - 0xd861,0xdf4b,0xd861,0xdf4c,0xd861,0xdf4d,0xd861,0xdf4e,0xd861,0xdf4f, - 0xd861,0xdf50,0xd861,0xdf51,0xd861,0xdf52,0xd861,0xdf53,0xd861,0xdf54, - 0xd861,0xdf55,0xd861,0xdf56,0xd861,0xdf57,0xd861,0xdf58,0xd861,0xdf59, - 0xd861,0xdf5a,0xd861,0xdf5b,0xd861,0xdf5c,0xd861,0xdf5d,0xd861,0xdf5e, - 0xd861,0xdf5f,0xd861,0xdf60,0xd861,0xdf61,0xd861,0xdf62,0xd861,0xdf63, - 0xd861,0xdf64,0xd861,0xdf65,0xd861,0xdf66,0xd861,0xdf67,0xd861,0xdf68, - 0xd861,0xdf69,0xd861,0xdf6a,0xd861,0xdf6b,0xd861,0xdf6c,0xd861,0xdf6d, - 0xd861,0xdf6e,0xd861,0xdf6f,0xd861,0xdf70,0xd861,0xdf71,0xd861,0xdf72, - 0xd861,0xdf73,0xd861,0xdf74,0xd861,0xdf75,0xd861,0xdf76,0xd861,0xdf77, - 0xd861,0xdf78,0xd861,0xdf79,0xd861,0xdf7a,0xd861,0xdf7b,0xd861,0xdf7c, - 0xd861,0xdf7d,0xd861,0xdf7e,0xd861,0xdf7f,0xd861,0xdf80,0xd861,0xdf81, - 0xd861,0xdf82,0xd861,0xdf83,0xd861,0xdf84,0xd861,0xdf85,0xd861,0xdf86, - 0xd861,0xdf87,0xd861,0xdf88,0xd861,0xdf89,0xd861,0xdf8a,0xd861,0xdf8b, - 0xd861,0xdf8c,0xd861,0xdf8d,0xd861,0xdf8e,0xd861,0xdf8f,0xd861,0xdf90, - 0xd861,0xdf91,0xd861,0xdf92,0xd861,0xdf93,0xd861,0xdf94,0xd861,0xdf95, - 0xd861,0xdf96,0xd861,0xdf97,0xd861,0xdf98,0xd861,0xdf99,0xd861,0xdf9a, - 0xd861,0xdf9b,0xd861,0xdf9c,0xd861,0xdf9d,0xd861,0xdf9e,0xd861,0xdf9f, - 0xd861,0xdfa0,0xd861,0xdfa1,0xd861,0xdfa2,0xd861,0xdfa3,0xd861,0xdfa4, - 0xd861,0xdfa5,0xd861,0xdfa6,0xd861,0xdfa7,0xd861,0xdfa8,0xd861,0xdfa9, - 0xd861,0xdfaa,0xd861,0xdfab,0xd861,0xdfac,0xd861,0xdfad,0xd861,0xdfae, - 0xd861,0xdfaf,0xd861,0xdfb0,0xd861,0xdfb1,0xd861,0xdfb2,0xd861,0xdfb3, - 0xd861,0xdfb4,0xd861,0xdfb5,0xd861,0xdfb6,0xd861,0xdfb7,0xd861,0xdfb8, - 0xd861,0xdfb9,0xd861,0xdfba,0xd861,0xdfbb,0xd861,0xdfbc,0xd861,0xdfbd, - 0xd861,0xdfbe,0xd861,0xdfbf,0xd861,0xdfc0,0xd861,0xdfc1,0xd861,0xdfc2, - 0xd861,0xdfc3,0xd861,0xdfc4,0xd861,0xdfc5,0xd861,0xdfc6,0xd861,0xdfc7, - 0xd861,0xdfc8,0xd861,0xdfc9,0xd861,0xdfca,0xd861,0xdfcb,0xd861,0xdfcc, - 0xd861,0xdfcd,0xd861,0xdfce,0xd861,0xdfcf,0xd861,0xdfd0,0xd861,0xdfd1, - 0xd861,0xdfd2,0xd861,0xdfd3,0xd861,0xdfd4,0xd861,0xdfd5,0xd861,0xdfd6, - 0xd861,0xdfd7,0xd861,0xdfd8,0xd861,0xdfd9,0xd861,0xdfda,0xd861,0xdfdb, - 0xd861,0xdfdc,0xd861,0xdfdd,0xd861,0xdfde,0xd861,0xdfdf,0xd861,0xdfe0, - 0xd861,0xdfe1,0xd861,0xdfe2,0xd861,0xdfe3,0xd861,0xdfe4,0xd861,0xdfe5, - 0xd861,0xdfe6,0xd861,0xdfe7,0xd861,0xdfe8,0xd861,0xdfe9,0xd861,0xdfea, - 0xd861,0xdfeb,0xd861,0xdfec,0xd861,0xdfed,0xd861,0xdfee,0xd861,0xdfef, - 0xd861,0xdff0,0xd861,0xdff1,0xd861,0xdff2,0xd861,0xdff3,0xd861,0xdff4, - 0xd861,0xdff5,0xd861,0xdff6,0xd861,0xdff7,0xd861,0xdff8,0xd861,0xdff9, - 0xd861,0xdffa,0xd861,0xdffb,0xd861,0xdffc,0xd861,0xdffd,0xd861,0xdffe, - 0xd861,0xdfff,0xd862,0xdc00,0xd862,0xdc01,0xd862,0xdc02,0xd862,0xdc03, - 0xd862,0xdc04,0xd862,0xdc05,0xd862,0xdc06,0xd862,0xdc07,0xd862,0xdc08, - 0xd862,0xdc09,0xd862,0xdc0a,0xd862,0xdc0b,0xd862,0xdc0c,0xd862,0xdc0d, - 0xd862,0xdc0e,0xd862,0xdc0f,0xd862,0xdc10,0xd862,0xdc11,0xd862,0xdc12, - 0xd862,0xdc13,0xd862,0xdc14,0xd862,0xdc15,0xd862,0xdc16,0xd862,0xdc17, - 0xd862,0xdc18,0xd862,0xdc19,0xd862,0xdc1a,0xd862,0xdc1b,0xd862,0xdc1c, - 0xd862,0xdc1d,0xd862,0xdc1e,0xd862,0xdc1f,0xd862,0xdc20,0xd862,0xdc21, - 0xd862,0xdc22,0xd862,0xdc23,0xd862,0xdc24,0xd862,0xdc25,0xd862,0xdc26, - 0xd862,0xdc27,0xd862,0xdc28,0xd862,0xdc29,0xd862,0xdc2a,0xd862,0xdc2b, - 0xd862,0xdc2c,0xd862,0xdc2d,0xd862,0xdc2e,0xd862,0xdc2f,0xd862,0xdc30, - 0xd862,0xdc31,0xd862,0xdc32,0xd862,0xdc33,0xd862,0xdc34,0xd862,0xdc35, - 0xd862,0xdc36,0xd862,0xdc37,0xd862,0xdc38,0xd862,0xdc39,0xd862,0xdc3a, - 0xd862,0xdc3b,0xd862,0xdc3c,0xd862,0xdc3d,0xd862,0xdc3e,0xd862,0xdc3f, - 0xd862,0xdc40,0xd862,0xdc41,0xd862,0xdc42,0xd862,0xdc43,0xd862,0xdc44, - 0xd862,0xdc45,0xd862,0xdc46,0xd862,0xdc47,0xd862,0xdc48,0xd862,0xdc49, - 0xd862,0xdc4a,0xd862,0xdc4b,0xd862,0xdc4c,0xd862,0xdc4d,0xd862,0xdc4e, - 0xd862,0xdc4f,0xd862,0xdc50,0xd862,0xdc51,0xd862,0xdc52,0xd862,0xdc53, - 0xd862,0xdc54,0xd862,0xdc55,0xd862,0xdc56,0xd862,0xdc57,0xd862,0xdc58, - 0xd862,0xdc59,0xd862,0xdc5a,0xd862,0xdc5b,0xd862,0xdc5c,0xd862,0xdc5d, - 0xd862,0xdc5e,0xd862,0xdc5f,0xd862,0xdc60,0xd862,0xdc61,0xd862,0xdc62, - 0xd862,0xdc63,0xd862,0xdc64,0xd862,0xdc65,0xd862,0xdc66,0xd862,0xdc67, - 0xd862,0xdc68,0xd862,0xdc69,0xd862,0xdc6a,0xd862,0xdc6b,0xd862,0xdc6c, - 0xd862,0xdc6d,0xd862,0xdc6e,0xd862,0xdc6f,0xd862,0xdc70,0xd862,0xdc71, - 0xd862,0xdc72,0xd862,0xdc73,0xd862,0xdc74,0xd862,0xdc75,0xd862,0xdc76, - 0xd862,0xdc77,0xd862,0xdc78,0xd862,0xdc79,0xd862,0xdc7a,0xd862,0xdc7b, - 0xd862,0xdc7c,0xd862,0xdc7d,0xd862,0xdc7e,0xd862,0xdc7f,0xd862,0xdc80, - 0xd862,0xdc81,0xd862,0xdc82,0xd862,0xdc83,0xd862,0xdc84,0xd862,0xdc85, - 0xd862,0xdc86,0xd862,0xdc87,0xd862,0xdc88,0xd862,0xdc89,0xd862,0xdc8a, - 0xd862,0xdc8b,0xd862,0xdc8c,0xd862,0xdc8d,0xd862,0xdc8e,0xd862,0xdc8f, - 0xd862,0xdc90,0xd862,0xdc91,0xd862,0xdc92,0xd862,0xdc93,0xd862,0xdc94, - 0xd862,0xdc95,0xd862,0xdc96,0xd862,0xdc97,0xd862,0xdc98,0xd862,0xdc99, - 0xd862,0xdc9a,0xd862,0xdc9b,0xd862,0xdc9c,0xd862,0xdc9d,0xd862,0xdc9e, - 0xd862,0xdc9f,0xd862,0xdca0,0xd862,0xdca1,0xd862,0xdca2,0xd862,0xdca3, - 0xd862,0xdca4,0xd862,0xdca5,0xd862,0xdca6,0xd862,0xdca7,0xd862,0xdca8, - 0xd862,0xdca9,0xd862,0xdcaa,0xd862,0xdcab,0xd862,0xdcac,0xd862,0xdcad, - 0xd862,0xdcae,0xd862,0xdcaf,0xd862,0xdcb0,0xd862,0xdcb1,0xd862,0xdcb2, - 0xd862,0xdcb3,0xd862,0xdcb4,0xd862,0xdcb5,0xd862,0xdcb6,0xd862,0xdcb7, - 0xd862,0xdcb8,0xd862,0xdcb9,0xd862,0xdcba,0xd862,0xdcbb,0xd862,0xdcbc, - 0xd862,0xdcbd,0xd862,0xdcbe,0xd862,0xdcbf,0xd862,0xdcc0,0xd862,0xdcc1, - 0xd862,0xdcc2,0xd862,0xdcc3,0xd862,0xdcc4,0xd862,0xdcc5,0xd862,0xdcc6, - 0xd862,0xdcc7,0xd862,0xdcc8,0xd862,0xdcc9,0xd862,0xdcca,0xd862,0xdccb, - 0xd862,0xdccc,0xd862,0xdccd,0xd862,0xdcce,0xd862,0xdccf,0xd862,0xdcd0, - 0xd862,0xdcd1,0xd862,0xdcd2,0xd862,0xdcd3,0xd862,0xdcd4,0xd862,0xdcd5, - 0xd862,0xdcd6,0xd862,0xdcd7,0xd862,0xdcd8,0xd862,0xdcd9,0xd862,0xdcda, - 0xd862,0xdcdb,0xd862,0xdcdc,0xd862,0xdcdd,0xd862,0xdcde,0xd862,0xdcdf, - 0xd862,0xdce0,0xd862,0xdce1,0xd862,0xdce2,0xd862,0xdce3,0xd862,0xdce4, - 0xd862,0xdce5,0xd862,0xdce6,0xd862,0xdce7,0xd862,0xdce8,0xd862,0xdce9, - 0xd862,0xdcea,0xd862,0xdceb,0xd862,0xdcec,0xd862,0xdced,0xd862,0xdcee, - 0xd862,0xdcef,0xd862,0xdcf0,0xd862,0xdcf1,0xd862,0xdcf2,0xd862,0xdcf3, - 0xd862,0xdcf4,0xd862,0xdcf5,0xd862,0xdcf6,0xd862,0xdcf7,0xd862,0xdcf8, - 0xd862,0xdcf9,0xd862,0xdcfa,0xd862,0xdcfb,0xd862,0xdcfc,0xd862,0xdcfd, - 0xd862,0xdcfe,0xd862,0xdcff,0xd862,0xdd00,0xd862,0xdd01,0xd862,0xdd02, - 0xd862,0xdd03,0xd862,0xdd04,0xd862,0xdd05,0xd862,0xdd06,0xd862,0xdd07, - 0xd862,0xdd08,0xd862,0xdd09,0xd862,0xdd0a,0xd862,0xdd0b,0xd862,0xdd0c, - 0xd862,0xdd0d,0xd862,0xdd0e,0xd862,0xdd0f,0xd862,0xdd10,0xd862,0xdd11, - 0xd862,0xdd12,0xd862,0xdd13,0xd862,0xdd14,0xd862,0xdd15,0xd862,0xdd16, - 0xd862,0xdd17,0xd862,0xdd18,0xd862,0xdd19,0xd862,0xdd1a,0xd862,0xdd1b, - 0xd862,0xdd1c,0xd862,0xdd1d,0xd862,0xdd1e,0xd862,0xdd1f,0xd862,0xdd20, - 0xd862,0xdd21,0xd862,0xdd22,0xd862,0xdd23,0xd862,0xdd24,0xd862,0xdd25, - 0xd862,0xdd26,0xd862,0xdd27,0xd862,0xdd28,0xd862,0xdd29,0xd862,0xdd2a, - 0xd862,0xdd2b,0xd862,0xdd2c,0xd862,0xdd2d,0xd862,0xdd2e,0xd862,0xdd2f, - 0xd862,0xdd30,0xd862,0xdd31,0xd862,0xdd32,0xd862,0xdd33,0xd862,0xdd34, - 0xd862,0xdd35,0xd862,0xdd36,0xd862,0xdd37,0xd862,0xdd38,0xd862,0xdd39, - 0xd862,0xdd3a,0xd862,0xdd3b,0xd862,0xdd3c,0xd862,0xdd3d,0xd862,0xdd3e, - 0xd862,0xdd3f,0xd862,0xdd40,0xd862,0xdd41,0xd862,0xdd42,0xd862,0xdd43, - 0xd862,0xdd44,0xd862,0xdd45,0xd862,0xdd46,0xd862,0xdd47,0xd862,0xdd48, - 0xd862,0xdd49,0xd862,0xdd4a,0xd862,0xdd4b,0xd862,0xdd4c,0xd862,0xdd4d, - 0xd862,0xdd4e,0xd862,0xdd4f,0xd862,0xdd50,0xd862,0xdd51,0xd862,0xdd52, - 0xd862,0xdd53,0xd862,0xdd54,0xd862,0xdd55,0xd862,0xdd56,0xd862,0xdd57, - 0xd862,0xdd58,0xd862,0xdd59,0xd862,0xdd5a,0xd862,0xdd5b,0xd862,0xdd5c, - 0xd862,0xdd5d,0xd862,0xdd5e,0xd862,0xdd5f,0xd862,0xdd60,0xd862,0xdd61, - 0xd862,0xdd62,0xd862,0xdd63,0xd862,0xdd64,0xd862,0xdd65,0xd862,0xdd66, - 0xd862,0xdd67,0xd862,0xdd68,0xd862,0xdd69,0xd862,0xdd6a,0xd862,0xdd6b, - 0xd862,0xdd6c,0xd862,0xdd6d,0xd862,0xdd6e,0xd862,0xdd6f,0xd862,0xdd70, - 0xd862,0xdd71,0xd862,0xdd72,0xd862,0xdd73,0xd862,0xdd74,0xd862,0xdd75, - 0xd862,0xdd76,0xd862,0xdd77,0xd862,0xdd78,0xd862,0xdd79,0xd862,0xdd7a, - 0xd862,0xdd7b,0xd862,0xdd7c,0xd862,0xdd7d,0xd862,0xdd7e,0xd862,0xdd7f, - 0xd862,0xdd80,0xd862,0xdd81,0xd862,0xdd82,0xd862,0xdd83,0xd862,0xdd84, - 0xd862,0xdd85,0xd862,0xdd86,0xd862,0xdd87,0xd862,0xdd88,0xd862,0xdd89, - 0xd862,0xdd8a,0xd862,0xdd8b,0xd862,0xdd8c,0xd862,0xdd8d,0xd862,0xdd8e, - 0xd862,0xdd8f,0xd862,0xdd90,0xd862,0xdd91,0xd862,0xdd92,0xd862,0xdd93, - 0xd862,0xdd94,0xd862,0xdd95,0xd862,0xdd96,0xd862,0xdd97,0xd862,0xdd98, - 0xd862,0xdd99,0xd862,0xdd9a,0xd862,0xdd9b,0xd862,0xdd9c,0xd862,0xdd9d, - 0xd862,0xdd9e,0xd862,0xdd9f,0xd862,0xdda0,0xd862,0xdda1,0xd862,0xdda2, - 0xd862,0xdda3,0xd862,0xdda4,0xd862,0xdda5,0xd862,0xdda6,0xd862,0xdda7, - 0xd862,0xdda8,0xd862,0xdda9,0xd862,0xddaa,0xd862,0xddab,0xd862,0xddac, - 0xd862,0xddad,0xd862,0xddae,0xd862,0xddaf,0xd862,0xddb0,0xd862,0xddb1, - 0xd862,0xddb2,0xd862,0xddb3,0xd862,0xddb4,0xd862,0xddb5,0xd862,0xddb6, - 0xd862,0xddb7,0xd862,0xddb8,0xd862,0xddb9,0xd862,0xddba,0xd862,0xddbb, - 0xd862,0xddbc,0xd862,0xddbd,0xd862,0xddbe,0xd862,0xddbf,0xd862,0xddc0, - 0xd862,0xddc1,0xd862,0xddc2,0xd862,0xddc3,0xd862,0xddc4,0xd862,0xddc5, - 0xd862,0xddc6,0xd862,0xddc7,0xd862,0xddc8,0xd862,0xddc9,0xd862,0xddca, - 0xd862,0xddcb,0xd862,0xddcc,0xd862,0xddcd,0xd862,0xddce,0xd862,0xddcf, - 0xd862,0xddd0,0xd862,0xddd1,0xd862,0xddd2,0xd862,0xddd3,0xd862,0xddd4, - 0xd862,0xddd5,0xd862,0xddd6,0xd862,0xddd7,0xd862,0xddd8,0xd862,0xddd9, - 0xd862,0xddda,0xd862,0xdddb,0xd862,0xdddc,0xd862,0xdddd,0xd862,0xddde, - 0xd862,0xdddf,0xd862,0xdde0,0xd862,0xdde1,0xd862,0xdde2,0xd862,0xdde3, - 0xd862,0xdde4,0xd862,0xdde5,0xd862,0xdde6,0xd862,0xdde7,0xd862,0xdde8, - 0xd862,0xdde9,0xd862,0xddea,0xd862,0xddeb,0xd862,0xddec,0xd862,0xdded, - 0xd862,0xddee,0xd862,0xddef,0xd862,0xddf0,0xd862,0xddf1,0xd862,0xddf2, - 0xd862,0xddf3,0xd862,0xddf4,0xd862,0xddf5,0xd862,0xddf6,0xd862,0xddf7, - 0xd862,0xddf8,0xd862,0xddf9,0xd862,0xddfa,0xd862,0xddfb,0xd862,0xddfc, - 0xd862,0xddfd,0xd862,0xddfe,0xd862,0xddff,0xd862,0xde00,0xd862,0xde01, - 0xd862,0xde02,0xd862,0xde03,0xd862,0xde04,0xd862,0xde05,0xd862,0xde06, - 0xd862,0xde07,0xd862,0xde08,0xd862,0xde09,0xd862,0xde0a,0xd862,0xde0b, - 0xd862,0xde0c,0xd862,0xde0d,0xd862,0xde0e,0xd862,0xde0f,0xd862,0xde10, - 0xd862,0xde11,0xd862,0xde12,0xd862,0xde13,0xd862,0xde14,0xd862,0xde15, - 0xd862,0xde16,0xd862,0xde17,0xd862,0xde18,0xd862,0xde19,0xd862,0xde1a, - 0xd862,0xde1b,0xd862,0xde1c,0xd862,0xde1d,0xd862,0xde1e,0xd862,0xde1f, - 0xd862,0xde20,0xd862,0xde21,0xd862,0xde22,0xd862,0xde23,0xd862,0xde24, - 0xd862,0xde25,0xd862,0xde26,0xd862,0xde27,0xd862,0xde28,0xd862,0xde29, - 0xd862,0xde2a,0xd862,0xde2b,0xd862,0xde2c,0xd862,0xde2d,0xd862,0xde2e, - 0xd862,0xde2f,0xd862,0xde30,0xd862,0xde31,0xd862,0xde32,0xd862,0xde33, - 0xd862,0xde34,0xd862,0xde35,0xd862,0xde36,0xd862,0xde37,0xd862,0xde38, - 0xd862,0xde39,0xd862,0xde3a,0xd862,0xde3b,0xd862,0xde3c,0xd862,0xde3d, - 0xd862,0xde3e,0xd862,0xde3f,0xd862,0xde40,0xd862,0xde41,0xd862,0xde42, - 0xd862,0xde43,0xd862,0xde44,0xd862,0xde45,0xd862,0xde46,0xd862,0xde47, - 0xd862,0xde48,0xd862,0xde49,0xd862,0xde4a,0xd862,0xde4b,0xd862,0xde4c, - 0xd862,0xde4d,0xd862,0xde4e,0xd862,0xde4f,0xd862,0xde50,0xd862,0xde51, - 0xd862,0xde52,0xd862,0xde53,0xd862,0xde54,0xd862,0xde55,0xd862,0xde56, - 0xd862,0xde57,0xd862,0xde58,0xd862,0xde59,0xd862,0xde5a,0xd862,0xde5b, - 0xd862,0xde5c,0xd862,0xde5d,0xd862,0xde5e,0xd862,0xde5f,0xd862,0xde60, - 0xd862,0xde61,0xd862,0xde62,0xd862,0xde63,0xd862,0xde64,0xd862,0xde65, - 0xd862,0xde66,0xd862,0xde67,0xd862,0xde68,0xd862,0xde69,0xd862,0xde6a, - 0xd862,0xde6b,0xd862,0xde6c,0xd862,0xde6d,0xd862,0xde6e,0xd862,0xde6f, - 0xd862,0xde70,0xd862,0xde71,0xd862,0xde72,0xd862,0xde73,0xd862,0xde74, - 0xd862,0xde75,0xd862,0xde76,0xd862,0xde77,0xd862,0xde78,0xd862,0xde79, - 0xd862,0xde7a,0xd862,0xde7b,0xd862,0xde7c,0xd862,0xde7d,0xd862,0xde7e, - 0xd862,0xde7f,0xd862,0xde80,0xd862,0xde81,0xd862,0xde82,0xd862,0xde83, - 0xd862,0xde84,0xd862,0xde85,0xd862,0xde86,0xd862,0xde87,0xd862,0xde88, - 0xd862,0xde89,0xd862,0xde8a,0xd862,0xde8b,0xd862,0xde8c,0xd862,0xde8d, - 0xd862,0xde8e,0xd862,0xde8f,0xd862,0xde90,0xd862,0xde91,0xd862,0xde92, - 0xd862,0xde93,0xd862,0xde94,0xd862,0xde95,0xd862,0xde96,0xd862,0xde97, - 0xd862,0xde98,0xd862,0xde99,0xd862,0xde9a,0xd862,0xde9b,0xd862,0xde9c, - 0xd862,0xde9d,0xd862,0xde9e,0xd862,0xde9f,0xd862,0xdea0,0xd862,0xdea1, - 0xd862,0xdea2,0xd862,0xdea3,0xd862,0xdea4,0xd862,0xdea5,0xd862,0xdea6, - 0xd862,0xdea7,0xd862,0xdea8,0xd862,0xdea9,0xd862,0xdeaa,0xd862,0xdeab, - 0xd862,0xdeac,0xd862,0xdead,0xd862,0xdeae,0xd862,0xdeaf,0xd862,0xdeb0, - 0xd862,0xdeb1,0xd862,0xdeb2,0xd862,0xdeb3,0xd862,0xdeb4,0xd862,0xdeb5, - 0xd862,0xdeb6,0xd862,0xdeb7,0xd862,0xdeb8,0xd862,0xdeb9,0xd862,0xdeba, - 0xd862,0xdebb,0xd862,0xdebc,0xd862,0xdebd,0xd862,0xdebe,0xd862,0xdebf, - 0xd862,0xdec0,0xd862,0xdec1,0xd862,0xdec2,0xd862,0xdec3,0xd862,0xdec4, - 0xd862,0xdec5,0xd862,0xdec6,0xd862,0xdec7,0xd862,0xdec8,0xd862,0xdec9, - 0xd862,0xdeca,0xd862,0xdecb,0xd862,0xdecc,0xd862,0xdecd,0xd862,0xdece, - 0xd862,0xdecf,0xd862,0xded0,0xd862,0xded1,0xd862,0xded2,0xd862,0xded3, - 0xd862,0xded4,0xd862,0xded5,0xd862,0xded6,0xd862,0xded7,0xd862,0xded8, - 0xd862,0xded9,0xd862,0xdeda,0xd862,0xdedb,0xd862,0xdedc,0xd862,0xdedd, - 0xd862,0xdede,0xd862,0xdedf,0xd862,0xdee0,0xd862,0xdee1,0xd862,0xdee2, - 0xd862,0xdee3,0xd862,0xdee4,0xd862,0xdee5,0xd862,0xdee6,0xd862,0xdee7, - 0xd862,0xdee8,0xd862,0xdee9,0xd862,0xdeea,0xd862,0xdeeb,0xd862,0xdeec, - 0xd862,0xdeed,0xd862,0xdeee,0xd862,0xdeef,0xd862,0xdef0,0xd862,0xdef1, - 0xd862,0xdef2,0xd862,0xdef3,0xd862,0xdef4,0xd862,0xdef5,0xd862,0xdef6, - 0xd862,0xdef7,0xd862,0xdef8,0xd862,0xdef9,0xd862,0xdefa,0xd862,0xdefb, - 0xd862,0xdefc,0xd862,0xdefd,0xd862,0xdefe,0xd862,0xdeff,0xd862,0xdf00, - 0xd862,0xdf01,0xd862,0xdf02,0xd862,0xdf03,0xd862,0xdf04,0xd862,0xdf05, - 0xd862,0xdf06,0xd862,0xdf07,0xd862,0xdf08,0xd862,0xdf09,0xd862,0xdf0a, - 0xd862,0xdf0b,0xd862,0xdf0c,0xd862,0xdf0d,0xd862,0xdf0e,0xd862,0xdf0f, - 0xd862,0xdf10,0xd862,0xdf11,0xd862,0xdf12,0xd862,0xdf13,0xd862,0xdf14, - 0xd862,0xdf15,0xd862,0xdf16,0xd862,0xdf17,0xd862,0xdf18,0xd862,0xdf19, - 0xd862,0xdf1a,0xd862,0xdf1b,0xd862,0xdf1c,0xd862,0xdf1d,0xd862,0xdf1e, - 0xd862,0xdf1f,0xd862,0xdf20,0xd862,0xdf21,0xd862,0xdf22,0xd862,0xdf23, - 0xd862,0xdf24,0xd862,0xdf25,0xd862,0xdf26,0xd862,0xdf27,0xd862,0xdf28, - 0xd862,0xdf29,0xd862,0xdf2a,0xd862,0xdf2b,0xd862,0xdf2c,0xd862,0xdf2d, - 0xd862,0xdf2e,0xd862,0xdf2f,0xd862,0xdf30,0xd862,0xdf31,0xd862,0xdf32, - 0xd862,0xdf33,0xd862,0xdf34,0xd862,0xdf35,0xd862,0xdf36,0xd862,0xdf37, - 0xd862,0xdf38,0xd862,0xdf39,0xd862,0xdf3a,0xd862,0xdf3b,0xd862,0xdf3c, - 0xd862,0xdf3d,0xd862,0xdf3e,0xd862,0xdf3f,0xd862,0xdf40,0xd862,0xdf41, - 0xd862,0xdf42,0xd862,0xdf43,0xd862,0xdf44,0xd862,0xdf45,0xd862,0xdf46, - 0xd862,0xdf47,0xd862,0xdf48,0xd862,0xdf49,0xd862,0xdf4a,0xd862,0xdf4b, - 0xd862,0xdf4c,0xd862,0xdf4d,0xd862,0xdf4e,0xd862,0xdf4f,0xd862,0xdf50, - 0xd862,0xdf51,0xd862,0xdf52,0xd862,0xdf53,0xd862,0xdf54,0xd862,0xdf55, - 0xd862,0xdf56,0xd862,0xdf57,0xd862,0xdf58,0xd862,0xdf59,0xd862,0xdf5a, - 0xd862,0xdf5b,0xd862,0xdf5c,0xd862,0xdf5d,0xd862,0xdf5e,0xd862,0xdf5f, - 0xd862,0xdf60,0xd862,0xdf61,0xd862,0xdf62,0xd862,0xdf63,0xd862,0xdf64, - 0xd862,0xdf65,0xd862,0xdf66,0xd862,0xdf67,0xd862,0xdf68,0xd862,0xdf69, - 0xd862,0xdf6a,0xd862,0xdf6b,0xd862,0xdf6c,0xd862,0xdf6d,0xd862,0xdf6e, - 0xd862,0xdf6f,0xd862,0xdf70,0xd862,0xdf71,0xd862,0xdf72,0xd862,0xdf73, - 0xd862,0xdf74,0xd862,0xdf75,0xd862,0xdf76,0xd862,0xdf77,0xd862,0xdf78, - 0xd862,0xdf79,0xd862,0xdf7a,0xd862,0xdf7b,0xd862,0xdf7c,0xd862,0xdf7d, - 0xd862,0xdf7e,0xd862,0xdf7f,0xd862,0xdf80,0xd862,0xdf81,0xd862,0xdf82, - 0xd862,0xdf83,0xd862,0xdf84,0xd862,0xdf85,0xd862,0xdf86,0xd862,0xdf87, - 0xd862,0xdf88,0xd862,0xdf89,0xd862,0xdf8a,0xd862,0xdf8b,0xd862,0xdf8c, - 0xd862,0xdf8d,0xd862,0xdf8e,0xd862,0xdf8f,0xd862,0xdf90,0xd862,0xdf91, - 0xd862,0xdf92,0xd862,0xdf93,0xd862,0xdf94,0xd862,0xdf95,0xd862,0xdf96, - 0xd862,0xdf97,0xd862,0xdf98,0xd862,0xdf99,0xd862,0xdf9a,0xd862,0xdf9b, - 0xd862,0xdf9c,0xd862,0xdf9d,0xd862,0xdf9e,0xd862,0xdf9f,0xd862,0xdfa0, - 0xd862,0xdfa1,0xd862,0xdfa2,0xd862,0xdfa3,0xd862,0xdfa4,0xd862,0xdfa5, - 0xd862,0xdfa6,0xd862,0xdfa7,0xd862,0xdfa8,0xd862,0xdfa9,0xd862,0xdfaa, - 0xd862,0xdfab,0xd862,0xdfac,0xd862,0xdfad,0xd862,0xdfae,0xd862,0xdfaf, - 0xd862,0xdfb0,0xd862,0xdfb1,0xd862,0xdfb2,0xd862,0xdfb3,0xd862,0xdfb4, - 0xd862,0xdfb5,0xd862,0xdfb6,0xd862,0xdfb7,0xd862,0xdfb8,0xd862,0xdfb9, - 0xd862,0xdfba,0xd862,0xdfbb,0xd862,0xdfbc,0xd862,0xdfbd,0xd862,0xdfbe, - 0xd862,0xdfbf,0xd862,0xdfc0,0xd862,0xdfc1,0xd862,0xdfc2,0xd862,0xdfc3, - 0xd862,0xdfc4,0xd862,0xdfc5,0xd862,0xdfc6,0xd862,0xdfc7,0xd862,0xdfc8, - 0xd862,0xdfc9,0xd862,0xdfca,0xd862,0xdfcb,0xd862,0xdfcc,0xd862,0xdfcd, - 0xd862,0xdfce,0xd862,0xdfcf,0xd862,0xdfd0,0xd862,0xdfd1,0xd862,0xdfd2, - 0xd862,0xdfd3,0xd862,0xdfd4,0xd862,0xdfd5,0xd862,0xdfd6,0xd862,0xdfd7, - 0xd862,0xdfd8,0xd862,0xdfd9,0xd862,0xdfda,0xd862,0xdfdb,0xd862,0xdfdc, - 0xd862,0xdfdd,0xd862,0xdfde,0xd862,0xdfdf,0xd862,0xdfe0,0xd862,0xdfe1, - 0xd862,0xdfe2,0xd862,0xdfe3,0xd862,0xdfe4,0xd862,0xdfe5,0xd862,0xdfe6, - 0xd862,0xdfe7,0xd862,0xdfe8,0xd862,0xdfe9,0xd862,0xdfea,0xd862,0xdfeb, - 0xd862,0xdfec,0xd862,0xdfed,0xd862,0xdfee,0xd862,0xdfef,0xd862,0xdff0, - 0xd862,0xdff1,0xd862,0xdff2,0xd862,0xdff3,0xd862,0xdff4,0xd862,0xdff5, - 0xd862,0xdff6,0xd862,0xdff7,0xd862,0xdff8,0xd862,0xdff9,0xd862,0xdffa, - 0xd862,0xdffb,0xd862,0xdffc,0xd862,0xdffd,0xd862,0xdffe,0xd862,0xdfff, - 0xd863,0xdc00,0xd863,0xdc01,0xd863,0xdc02,0xd863,0xdc03,0xd863,0xdc04, - 0xd863,0xdc05,0xd863,0xdc06,0xd863,0xdc07,0xd863,0xdc08,0xd863,0xdc09, - 0xd863,0xdc0a,0xd863,0xdc0b,0xd863,0xdc0c,0xd863,0xdc0d,0xd863,0xdc0e, - 0xd863,0xdc0f,0xd863,0xdc10,0xd863,0xdc11,0xd863,0xdc12,0xd863,0xdc13, - 0xd863,0xdc14,0xd863,0xdc15,0xd863,0xdc16,0xd863,0xdc17,0xd863,0xdc18, - 0xd863,0xdc19,0xd863,0xdc1a,0xd863,0xdc1b,0xd863,0xdc1c,0xd863,0xdc1d, - 0xd863,0xdc1e,0xd863,0xdc1f,0xd863,0xdc20,0xd863,0xdc21,0xd863,0xdc22, - 0xd863,0xdc23,0xd863,0xdc24,0xd863,0xdc25,0xd863,0xdc26,0xd863,0xdc27, - 0xd863,0xdc28,0xd863,0xdc29,0xd863,0xdc2a,0xd863,0xdc2b,0xd863,0xdc2c, - 0xd863,0xdc2d,0xd863,0xdc2e,0xd863,0xdc2f,0xd863,0xdc30,0xd863,0xdc31, - 0xd863,0xdc32,0xd863,0xdc33,0xd863,0xdc34,0xd863,0xdc35,0xd863,0xdc36, - 0xd863,0xdc37,0xd863,0xdc38,0xd863,0xdc39,0xd863,0xdc3a,0xd863,0xdc3b, - 0xd863,0xdc3c,0xd863,0xdc3d,0xd863,0xdc3e,0xd863,0xdc3f,0xd863,0xdc40, - 0xd863,0xdc41,0xd863,0xdc42,0xd863,0xdc43,0xd863,0xdc44,0xd863,0xdc45, - 0xd863,0xdc46,0xd863,0xdc47,0xd863,0xdc48,0xd863,0xdc49,0xd863,0xdc4a, - 0xd863,0xdc4b,0xd863,0xdc4c,0xd863,0xdc4d,0xd863,0xdc4e,0xd863,0xdc4f, - 0xd863,0xdc50,0xd863,0xdc51,0xd863,0xdc52,0xd863,0xdc53,0xd863,0xdc54, - 0xd863,0xdc55,0xd863,0xdc56,0xd863,0xdc57,0xd863,0xdc58,0xd863,0xdc59, - 0xd863,0xdc5a,0xd863,0xdc5b,0xd863,0xdc5c,0xd863,0xdc5d,0xd863,0xdc5e, - 0xd863,0xdc5f,0xd863,0xdc60,0xd863,0xdc61,0xd863,0xdc62,0xd863,0xdc63, - 0xd863,0xdc64,0xd863,0xdc65,0xd863,0xdc66,0xd863,0xdc67,0xd863,0xdc68, - 0xd863,0xdc69,0xd863,0xdc6a,0xd863,0xdc6b,0xd863,0xdc6c,0xd863,0xdc6d, - 0xd863,0xdc6e,0xd863,0xdc6f,0xd863,0xdc70,0xd863,0xdc71,0xd863,0xdc72, - 0xd863,0xdc73,0xd863,0xdc74,0xd863,0xdc75,0xd863,0xdc76,0xd863,0xdc77, - 0xd863,0xdc78,0xd863,0xdc79,0xd863,0xdc7a,0xd863,0xdc7b,0xd863,0xdc7c, - 0xd863,0xdc7d,0xd863,0xdc7e,0xd863,0xdc7f,0xd863,0xdc80,0xd863,0xdc81, - 0xd863,0xdc82,0xd863,0xdc83,0xd863,0xdc84,0xd863,0xdc85,0xd863,0xdc86, - 0xd863,0xdc87,0xd863,0xdc88,0xd863,0xdc89,0xd863,0xdc8a,0xd863,0xdc8b, - 0xd863,0xdc8c,0xd863,0xdc8d,0xd863,0xdc8e,0xd863,0xdc8f,0xd863,0xdc90, - 0xd863,0xdc91,0xd863,0xdc92,0xd863,0xdc93,0xd863,0xdc94,0xd863,0xdc95, - 0xd863,0xdc96,0xd863,0xdc97,0xd863,0xdc98,0xd863,0xdc99,0xd863,0xdc9a, - 0xd863,0xdc9b,0xd863,0xdc9c,0xd863,0xdc9d,0xd863,0xdc9e,0xd863,0xdc9f, - 0xd863,0xdca0,0xd863,0xdca1,0xd863,0xdca2,0xd863,0xdca3,0xd863,0xdca4, - 0xd863,0xdca5,0xd863,0xdca6,0xd863,0xdca7,0xd863,0xdca8,0xd863,0xdca9, - 0xd863,0xdcaa,0xd863,0xdcab,0xd863,0xdcac,0xd863,0xdcad,0xd863,0xdcae, - 0xd863,0xdcaf,0xd863,0xdcb0,0xd863,0xdcb1,0xd863,0xdcb2,0xd863,0xdcb3, - 0xd863,0xdcb4,0xd863,0xdcb5,0xd863,0xdcb6,0xd863,0xdcb7,0xd863,0xdcb8, - 0xd863,0xdcb9,0xd863,0xdcba,0xd863,0xdcbb,0xd863,0xdcbc,0xd863,0xdcbd, - 0xd863,0xdcbe,0xd863,0xdcbf,0xd863,0xdcc0,0xd863,0xdcc1,0xd863,0xdcc2, - 0xd863,0xdcc3,0xd863,0xdcc4,0xd863,0xdcc5,0xd863,0xdcc6,0xd863,0xdcc7, - 0xd863,0xdcc8,0xd863,0xdcc9,0xd863,0xdcca,0xd863,0xdccb,0xd863,0xdccc, - 0xd863,0xdccd,0xd863,0xdcce,0xd863,0xdccf,0xd863,0xdcd0,0xd863,0xdcd1, - 0xd863,0xdcd2,0xd863,0xdcd3,0xd863,0xdcd4,0xd863,0xdcd5,0xd863,0xdcd6, - 0xd863,0xdcd7,0xd863,0xdcd8,0xd863,0xdcd9,0xd863,0xdcda,0xd863,0xdcdb, - 0xd863,0xdcdc,0xd863,0xdcdd,0xd863,0xdcde,0xd863,0xdcdf,0xd863,0xdce0, - 0xd863,0xdce1,0xd863,0xdce2,0xd863,0xdce3,0xd863,0xdce4,0xd863,0xdce5, - 0xd863,0xdce6,0xd863,0xdce7,0xd863,0xdce8,0xd863,0xdce9,0xd863,0xdcea, - 0xd863,0xdceb,0xd863,0xdcec,0xd863,0xdced,0xd863,0xdcee,0xd863,0xdcef, - 0xd863,0xdcf0,0xd863,0xdcf1,0xd863,0xdcf2,0xd863,0xdcf3,0xd863,0xdcf4, - 0xd863,0xdcf5,0xd863,0xdcf6,0xd863,0xdcf7,0xd863,0xdcf8,0xd863,0xdcf9, - 0xd863,0xdcfa,0xd863,0xdcfb,0xd863,0xdcfc,0xd863,0xdcfd,0xd863,0xdcfe, - 0xd863,0xdcff,0xd863,0xdd00,0xd863,0xdd01,0xd863,0xdd02,0xd863,0xdd03, - 0xd863,0xdd04,0xd863,0xdd05,0xd863,0xdd06,0xd863,0xdd07,0xd863,0xdd08, - 0xd863,0xdd09,0xd863,0xdd0a,0xd863,0xdd0b,0xd863,0xdd0c,0xd863,0xdd0d, - 0xd863,0xdd0e,0xd863,0xdd0f,0xd863,0xdd10,0xd863,0xdd11,0xd863,0xdd12, - 0xd863,0xdd13,0xd863,0xdd14,0xd863,0xdd15,0xd863,0xdd16,0xd863,0xdd17, - 0xd863,0xdd18,0xd863,0xdd19,0xd863,0xdd1a,0xd863,0xdd1b,0xd863,0xdd1c, - 0xd863,0xdd1d,0xd863,0xdd1e,0xd863,0xdd1f,0xd863,0xdd20,0xd863,0xdd21, - 0xd863,0xdd22,0xd863,0xdd23,0xd863,0xdd24,0xd863,0xdd25,0xd863,0xdd26, - 0xd863,0xdd27,0xd863,0xdd28,0xd863,0xdd29,0xd863,0xdd2a,0xd863,0xdd2b, - 0xd863,0xdd2c,0xd863,0xdd2d,0xd863,0xdd2e,0xd863,0xdd2f,0xd863,0xdd30, - 0xd863,0xdd31,0xd863,0xdd32,0xd863,0xdd33,0xd863,0xdd34,0xd863,0xdd35, - 0xd863,0xdd36,0xd863,0xdd37,0xd863,0xdd38,0xd863,0xdd39,0xd863,0xdd3a, - 0xd863,0xdd3b,0xd863,0xdd3c,0xd863,0xdd3d,0xd863,0xdd3e,0xd863,0xdd3f, - 0xd863,0xdd40,0xd863,0xdd41,0xd863,0xdd42,0xd863,0xdd43,0xd863,0xdd44, - 0xd863,0xdd45,0xd863,0xdd46,0xd863,0xdd47,0xd863,0xdd48,0xd863,0xdd49, - 0xd863,0xdd4a,0xd863,0xdd4b,0xd863,0xdd4c,0xd863,0xdd4d,0xd863,0xdd4e, - 0xd863,0xdd4f,0xd863,0xdd50,0xd863,0xdd51,0xd863,0xdd52,0xd863,0xdd53, - 0xd863,0xdd54,0xd863,0xdd55,0xd863,0xdd56,0xd863,0xdd57,0xd863,0xdd58, - 0xd863,0xdd59,0xd863,0xdd5a,0xd863,0xdd5b,0xd863,0xdd5c,0xd863,0xdd5d, - 0xd863,0xdd5e,0xd863,0xdd5f,0xd863,0xdd60,0xd863,0xdd61,0xd863,0xdd62, - 0xd863,0xdd63,0xd863,0xdd64,0xd863,0xdd65,0xd863,0xdd66,0xd863,0xdd67, - 0xd863,0xdd68,0xd863,0xdd69,0xd863,0xdd6a,0xd863,0xdd6b,0xd863,0xdd6c, - 0xd863,0xdd6d,0xd863,0xdd6e,0xd863,0xdd6f,0xd863,0xdd70,0xd863,0xdd71, - 0xd863,0xdd72,0xd863,0xdd73,0xd863,0xdd74,0xd863,0xdd75,0xd863,0xdd76, - 0xd863,0xdd77,0xd863,0xdd78,0xd863,0xdd79,0xd863,0xdd7a,0xd863,0xdd7b, - 0xd863,0xdd7c,0xd863,0xdd7d,0xd863,0xdd7e,0xd863,0xdd7f,0xd863,0xdd80, - 0xd863,0xdd81,0xd863,0xdd82,0xd863,0xdd83,0xd863,0xdd84,0xd863,0xdd85, - 0xd863,0xdd86,0xd863,0xdd87,0xd863,0xdd88,0xd863,0xdd89,0xd863,0xdd8a, - 0xd863,0xdd8b,0xd863,0xdd8c,0xd863,0xdd8d,0xd863,0xdd8e,0xd863,0xdd8f, - 0xd863,0xdd90,0xd863,0xdd91,0xd863,0xdd92,0xd863,0xdd93,0xd863,0xdd94, - 0xd863,0xdd95,0xd863,0xdd96,0xd863,0xdd97,0xd863,0xdd98,0xd863,0xdd99, - 0xd863,0xdd9a,0xd863,0xdd9b,0xd863,0xdd9c,0xd863,0xdd9d,0xd863,0xdd9e, - 0xd863,0xdd9f,0xd863,0xdda0,0xd863,0xdda1,0xd863,0xdda2,0xd863,0xdda3, - 0xd863,0xdda4,0xd863,0xdda5,0xd863,0xdda6,0xd863,0xdda7,0xd863,0xdda8, - 0xd863,0xdda9,0xd863,0xddaa,0xd863,0xddab,0xd863,0xddac,0xd863,0xddad, - 0xd863,0xddae,0xd863,0xddaf,0xd863,0xddb0,0xd863,0xddb1,0xd863,0xddb2, - 0xd863,0xddb3,0xd863,0xddb4,0xd863,0xddb5,0xd863,0xddb6,0xd863,0xddb7, - 0xd863,0xddb8,0xd863,0xddb9,0xd863,0xddba,0xd863,0xddbb,0xd863,0xddbc, - 0xd863,0xddbd,0xd863,0xddbe,0xd863,0xddbf,0xd863,0xddc0,0xd863,0xddc1, - 0xd863,0xddc2,0xd863,0xddc3,0xd863,0xddc4,0xd863,0xddc5,0xd863,0xddc6, - 0xd863,0xddc7,0xd863,0xddc8,0xd863,0xddc9,0xd863,0xddca,0xd863,0xddcb, - 0xd863,0xddcc,0xd863,0xddcd,0xd863,0xddce,0xd863,0xddcf,0xd863,0xddd0, - 0xd863,0xddd1,0xd863,0xddd2,0xd863,0xddd3,0xd863,0xddd4,0xd863,0xddd5, - 0xd863,0xddd6,0xd863,0xddd7,0xd863,0xddd8,0xd863,0xddd9,0xd863,0xddda, - 0xd863,0xdddb,0xd863,0xdddc,0xd863,0xdddd,0xd863,0xddde,0xd863,0xdddf, - 0xd863,0xdde0,0xd863,0xdde1,0xd863,0xdde2,0xd863,0xdde3,0xd863,0xdde4, - 0xd863,0xdde5,0xd863,0xdde6,0xd863,0xdde7,0xd863,0xdde8,0xd863,0xdde9, - 0xd863,0xddea,0xd863,0xddeb,0xd863,0xddec,0xd863,0xdded,0xd863,0xddee, - 0xd863,0xddef,0xd863,0xddf0,0xd863,0xddf1,0xd863,0xddf2,0xd863,0xddf3, - 0xd863,0xddf4,0xd863,0xddf5,0xd863,0xddf6,0xd863,0xddf7,0xd863,0xddf8, - 0xd863,0xddf9,0xd863,0xddfa,0xd863,0xddfb,0xd863,0xddfc,0xd863,0xddfd, - 0xd863,0xddfe,0xd863,0xddff,0xd863,0xde00,0xd863,0xde01,0xd863,0xde02, - 0xd863,0xde03,0xd863,0xde04,0xd863,0xde05,0xd863,0xde06,0xd863,0xde07, - 0xd863,0xde08,0xd863,0xde09,0xd863,0xde0a,0xd863,0xde0b,0xd863,0xde0c, - 0xd863,0xde0d,0xd863,0xde0e,0xd863,0xde0f,0xd863,0xde10,0xd863,0xde11, - 0xd863,0xde12,0xd863,0xde13,0xd863,0xde14,0xd863,0xde15,0xd863,0xde16, - 0xd863,0xde17,0xd863,0xde18,0xd863,0xde19,0xd863,0xde1a,0xd863,0xde1b, - 0xd863,0xde1c,0xd863,0xde1d,0xd863,0xde1e,0xd863,0xde1f,0xd863,0xde20, - 0xd863,0xde21,0xd863,0xde22,0xd863,0xde23,0xd863,0xde24,0xd863,0xde25, - 0xd863,0xde26,0xd863,0xde27,0xd863,0xde28,0xd863,0xde29,0xd863,0xde2a, - 0xd863,0xde2b,0xd863,0xde2c,0xd863,0xde2d,0xd863,0xde2e,0xd863,0xde2f, - 0xd863,0xde30,0xd863,0xde31,0xd863,0xde32,0xd863,0xde33,0xd863,0xde34, - 0xd863,0xde35,0xd863,0xde36,0xd863,0xde37,0xd863,0xde38,0xd863,0xde39, - 0xd863,0xde3a,0xd863,0xde3b,0xd863,0xde3c,0xd863,0xde3d,0xd863,0xde3e, - 0xd863,0xde3f,0xd863,0xde40,0xd863,0xde41,0xd863,0xde42,0xd863,0xde43, - 0xd863,0xde44,0xd863,0xde45,0xd863,0xde46,0xd863,0xde47,0xd863,0xde48, - 0xd863,0xde49,0xd863,0xde4a,0xd863,0xde4b,0xd863,0xde4c,0xd863,0xde4d, - 0xd863,0xde4e,0xd863,0xde4f,0xd863,0xde50,0xd863,0xde51,0xd863,0xde52, - 0xd863,0xde53,0xd863,0xde54,0xd863,0xde55,0xd863,0xde56,0xd863,0xde57, - 0xd863,0xde58,0xd863,0xde59,0xd863,0xde5a,0xd863,0xde5b,0xd863,0xde5c, - 0xd863,0xde5d,0xd863,0xde5e,0xd863,0xde5f,0xd863,0xde60,0xd863,0xde61, - 0xd863,0xde62,0xd863,0xde63,0xd863,0xde64,0xd863,0xde65,0xd863,0xde66, - 0xd863,0xde67,0xd863,0xde68,0xd863,0xde69,0xd863,0xde6a,0xd863,0xde6b, - 0xd863,0xde6c,0xd863,0xde6d,0xd863,0xde6e,0xd863,0xde6f,0xd863,0xde70, - 0xd863,0xde71,0xd863,0xde72,0xd863,0xde73,0xd863,0xde74,0xd863,0xde75, - 0xd863,0xde76,0xd863,0xde77,0xd863,0xde78,0xd863,0xde79,0xd863,0xde7a, - 0xd863,0xde7b,0xd863,0xde7c,0xd863,0xde7d,0xd863,0xde7e,0xd863,0xde7f, - 0xd863,0xde80,0xd863,0xde81,0xd863,0xde82,0xd863,0xde83,0xd863,0xde84, - 0xd863,0xde85,0xd863,0xde86,0xd863,0xde87,0xd863,0xde88,0xd863,0xde89, - 0xd863,0xde8a,0xd863,0xde8b,0xd863,0xde8c,0xd863,0xde8d,0xd863,0xde8e, - 0xd863,0xde8f,0xd863,0xde90,0xd863,0xde91,0xd863,0xde92,0xd863,0xde93, - 0xd863,0xde94,0xd863,0xde95,0xd863,0xde96,0xd863,0xde97,0xd863,0xde98, - 0xd863,0xde99,0xd863,0xde9a,0xd863,0xde9b,0xd863,0xde9c,0xd863,0xde9d, - 0xd863,0xde9e,0xd863,0xde9f,0xd863,0xdea0,0xd863,0xdea1,0xd863,0xdea2, - 0xd863,0xdea3,0xd863,0xdea4,0xd863,0xdea5,0xd863,0xdea6,0xd863,0xdea7, - 0xd863,0xdea8,0xd863,0xdea9,0xd863,0xdeaa,0xd863,0xdeab,0xd863,0xdeac, - 0xd863,0xdead,0xd863,0xdeae,0xd863,0xdeaf,0xd863,0xdeb0,0xd863,0xdeb1, - 0xd863,0xdeb2,0xd863,0xdeb3,0xd863,0xdeb4,0xd863,0xdeb5,0xd863,0xdeb6, - 0xd863,0xdeb7,0xd863,0xdeb8,0xd863,0xdeb9,0xd863,0xdeba,0xd863,0xdebb, - 0xd863,0xdebc,0xd863,0xdebd,0xd863,0xdebe,0xd863,0xdebf,0xd863,0xdec0, - 0xd863,0xdec1,0xd863,0xdec2,0xd863,0xdec3,0xd863,0xdec4,0xd863,0xdec5, - 0xd863,0xdec6,0xd863,0xdec7,0xd863,0xdec8,0xd863,0xdec9,0xd863,0xdeca, - 0xd863,0xdecb,0xd863,0xdecc,0xd863,0xdecd,0xd863,0xdece,0xd863,0xdecf, - 0xd863,0xded0,0xd863,0xded1,0xd863,0xded2,0xd863,0xded3,0xd863,0xded4, - 0xd863,0xded5,0xd863,0xded6,0xd863,0xded7,0xd863,0xded8,0xd863,0xded9, - 0xd863,0xdeda,0xd863,0xdedb,0xd863,0xdedc,0xd863,0xdedd,0xd863,0xdede, - 0xd863,0xdedf,0xd863,0xdee0,0xd863,0xdee1,0xd863,0xdee2,0xd863,0xdee3, - 0xd863,0xdee4,0xd863,0xdee5,0xd863,0xdee6,0xd863,0xdee7,0xd863,0xdee8, - 0xd863,0xdee9,0xd863,0xdeea,0xd863,0xdeeb,0xd863,0xdeec,0xd863,0xdeed, - 0xd863,0xdeee,0xd863,0xdeef,0xd863,0xdef0,0xd863,0xdef1,0xd863,0xdef2, - 0xd863,0xdef3,0xd863,0xdef4,0xd863,0xdef5,0xd863,0xdef6,0xd863,0xdef7, - 0xd863,0xdef8,0xd863,0xdef9,0xd863,0xdefa,0xd863,0xdefb,0xd863,0xdefc, - 0xd863,0xdefd,0xd863,0xdefe,0xd863,0xdeff,0xd863,0xdf00,0xd863,0xdf01, - 0xd863,0xdf02,0xd863,0xdf03,0xd863,0xdf04,0xd863,0xdf05,0xd863,0xdf06, - 0xd863,0xdf07,0xd863,0xdf08,0xd863,0xdf09,0xd863,0xdf0a,0xd863,0xdf0b, - 0xd863,0xdf0c,0xd863,0xdf0d,0xd863,0xdf0e,0xd863,0xdf0f,0xd863,0xdf10, - 0xd863,0xdf11,0xd863,0xdf12,0xd863,0xdf13,0xd863,0xdf14,0xd863,0xdf15, - 0xd863,0xdf16,0xd863,0xdf17,0xd863,0xdf18,0xd863,0xdf19,0xd863,0xdf1a, - 0xd863,0xdf1b,0xd863,0xdf1c,0xd863,0xdf1d,0xd863,0xdf1e,0xd863,0xdf1f, - 0xd863,0xdf20,0xd863,0xdf21,0xd863,0xdf22,0xd863,0xdf23,0xd863,0xdf24, - 0xd863,0xdf25,0xd863,0xdf26,0xd863,0xdf27,0xd863,0xdf28,0xd863,0xdf29, - 0xd863,0xdf2a,0xd863,0xdf2b,0xd863,0xdf2c,0xd863,0xdf2d,0xd863,0xdf2e, - 0xd863,0xdf2f,0xd863,0xdf30,0xd863,0xdf31,0xd863,0xdf32,0xd863,0xdf33, - 0xd863,0xdf34,0xd863,0xdf35,0xd863,0xdf36,0xd863,0xdf37,0xd863,0xdf38, - 0xd863,0xdf39,0xd863,0xdf3a,0xd863,0xdf3b,0xd863,0xdf3c,0xd863,0xdf3d, - 0xd863,0xdf3e,0xd863,0xdf3f,0xd863,0xdf40,0xd863,0xdf41,0xd863,0xdf42, - 0xd863,0xdf43,0xd863,0xdf44,0xd863,0xdf45,0xd863,0xdf46,0xd863,0xdf47, - 0xd863,0xdf48,0xd863,0xdf49,0xd863,0xdf4a,0xd863,0xdf4b,0xd863,0xdf4c, - 0xd863,0xdf4d,0xd863,0xdf4e,0xd863,0xdf4f,0xd863,0xdf50,0xd863,0xdf51, - 0xd863,0xdf52,0xd863,0xdf53,0xd863,0xdf54,0xd863,0xdf55,0xd863,0xdf56, - 0xd863,0xdf57,0xd863,0xdf58,0xd863,0xdf59,0xd863,0xdf5a,0xd863,0xdf5b, - 0xd863,0xdf5c,0xd863,0xdf5d,0xd863,0xdf5e,0xd863,0xdf5f,0xd863,0xdf60, - 0xd863,0xdf61,0xd863,0xdf62,0xd863,0xdf63,0xd863,0xdf64,0xd863,0xdf65, - 0xd863,0xdf66,0xd863,0xdf67,0xd863,0xdf68,0xd863,0xdf69,0xd863,0xdf6a, - 0xd863,0xdf6b,0xd863,0xdf6c,0xd863,0xdf6d,0xd863,0xdf6e,0xd863,0xdf6f, - 0xd863,0xdf70,0xd863,0xdf71,0xd863,0xdf72,0xd863,0xdf73,0xd863,0xdf74, - 0xd863,0xdf75,0xd863,0xdf76,0xd863,0xdf77,0xd863,0xdf78,0xd863,0xdf79, - 0xd863,0xdf7a,0xd863,0xdf7b,0xd863,0xdf7c,0xd863,0xdf7d,0xd863,0xdf7e, - 0xd863,0xdf7f,0xd863,0xdf80,0xd863,0xdf81,0xd863,0xdf82,0xd863,0xdf83, - 0xd863,0xdf84,0xd863,0xdf85,0xd863,0xdf86,0xd863,0xdf87,0xd863,0xdf88, - 0xd863,0xdf89,0xd863,0xdf8a,0xd863,0xdf8b,0xd863,0xdf8c,0xd863,0xdf8d, - 0xd863,0xdf8e,0xd863,0xdf8f,0xd863,0xdf90,0xd863,0xdf91,0xd863,0xdf92, - 0xd863,0xdf93,0xd863,0xdf94,0xd863,0xdf95,0xd863,0xdf96,0xd863,0xdf97, - 0xd863,0xdf98,0xd863,0xdf99,0xd863,0xdf9a,0xd863,0xdf9b,0xd863,0xdf9c, - 0xd863,0xdf9d,0xd863,0xdf9e,0xd863,0xdf9f,0xd863,0xdfa0,0xd863,0xdfa1, - 0xd863,0xdfa2,0xd863,0xdfa3,0xd863,0xdfa4,0xd863,0xdfa5,0xd863,0xdfa6, - 0xd863,0xdfa7,0xd863,0xdfa8,0xd863,0xdfa9,0xd863,0xdfaa,0xd863,0xdfab, - 0xd863,0xdfac,0xd863,0xdfad,0xd863,0xdfae,0xd863,0xdfaf,0xd863,0xdfb0, - 0xd863,0xdfb1,0xd863,0xdfb2,0xd863,0xdfb3,0xd863,0xdfb4,0xd863,0xdfb5, - 0xd863,0xdfb6,0xd863,0xdfb7,0xd863,0xdfb8,0xd863,0xdfb9,0xd863,0xdfba, - 0xd863,0xdfbb,0xd863,0xdfbc,0xd863,0xdfbd,0xd863,0xdfbe,0xd863,0xdfbf, - 0xd863,0xdfc0,0xd863,0xdfc1,0xd863,0xdfc2,0xd863,0xdfc3,0xd863,0xdfc4, - 0xd863,0xdfc5,0xd863,0xdfc6,0xd863,0xdfc7,0xd863,0xdfc8,0xd863,0xdfc9, - 0xd863,0xdfca,0xd863,0xdfcb,0xd863,0xdfcc,0xd863,0xdfcd,0xd863,0xdfce, - 0xd863,0xdfcf,0xd863,0xdfd0,0xd863,0xdfd1,0xd863,0xdfd2,0xd863,0xdfd3, - 0xd863,0xdfd4,0xd863,0xdfd5,0xd863,0xdfd6,0xd863,0xdfd7,0xd863,0xdfd8, - 0xd863,0xdfd9,0xd863,0xdfda,0xd863,0xdfdb,0xd863,0xdfdc,0xd863,0xdfdd, - 0xd863,0xdfde,0xd863,0xdfdf,0xd863,0xdfe0,0xd863,0xdfe1,0xd863,0xdfe2, - 0xd863,0xdfe3,0xd863,0xdfe4,0xd863,0xdfe5,0xd863,0xdfe6,0xd863,0xdfe7, - 0xd863,0xdfe8,0xd863,0xdfe9,0xd863,0xdfea,0xd863,0xdfeb,0xd863,0xdfec, - 0xd863,0xdfed,0xd863,0xdfee,0xd863,0xdfef,0xd863,0xdff0,0xd863,0xdff1, - 0xd863,0xdff2,0xd863,0xdff3,0xd863,0xdff4,0xd863,0xdff5,0xd863,0xdff6, - 0xd863,0xdff7,0xd863,0xdff8,0xd863,0xdff9,0xd863,0xdffa,0xd863,0xdffb, - 0xd863,0xdffc,0xd863,0xdffd,0xd863,0xdffe,0xd863,0xdfff,0xd864,0xdc00, - 0xd864,0xdc01,0xd864,0xdc02,0xd864,0xdc03,0xd864,0xdc04,0xd864,0xdc05, - 0xd864,0xdc06,0xd864,0xdc07,0xd864,0xdc08,0xd864,0xdc09,0xd864,0xdc0a, - 0xd864,0xdc0b,0xd864,0xdc0c,0xd864,0xdc0d,0xd864,0xdc0e,0xd864,0xdc0f, - 0xd864,0xdc10,0xd864,0xdc11,0xd864,0xdc12,0xd864,0xdc13,0xd864,0xdc14, - 0xd864,0xdc15,0xd864,0xdc16,0xd864,0xdc17,0xd864,0xdc18,0xd864,0xdc19, - 0xd864,0xdc1a,0xd864,0xdc1b,0xd864,0xdc1c,0xd864,0xdc1d,0xd864,0xdc1e, - 0xd864,0xdc1f,0xd864,0xdc20,0xd864,0xdc21,0xd864,0xdc22,0xd864,0xdc23, - 0xd864,0xdc24,0xd864,0xdc25,0xd864,0xdc26,0xd864,0xdc27,0xd864,0xdc28, - 0xd864,0xdc29,0xd864,0xdc2a,0xd864,0xdc2b,0xd864,0xdc2c,0xd864,0xdc2d, - 0xd864,0xdc2e,0xd864,0xdc2f,0xd864,0xdc30,0xd864,0xdc31,0xd864,0xdc32, - 0xd864,0xdc33,0xd864,0xdc34,0xd864,0xdc35,0xd864,0xdc36,0xd864,0xdc37, - 0xd864,0xdc38,0xd864,0xdc39,0xd864,0xdc3a,0xd864,0xdc3b,0xd864,0xdc3c, - 0xd864,0xdc3d,0xd864,0xdc3e,0xd864,0xdc3f,0xd864,0xdc40,0xd864,0xdc41, - 0xd864,0xdc42,0xd864,0xdc43,0xd864,0xdc44,0xd864,0xdc45,0xd864,0xdc46, - 0xd864,0xdc47,0xd864,0xdc48,0xd864,0xdc49,0xd864,0xdc4a,0xd864,0xdc4b, - 0xd864,0xdc4c,0xd864,0xdc4d,0xd864,0xdc4e,0xd864,0xdc4f,0xd864,0xdc50, - 0xd864,0xdc51,0xd864,0xdc52,0xd864,0xdc53,0xd864,0xdc54,0xd864,0xdc55, - 0xd864,0xdc56,0xd864,0xdc57,0xd864,0xdc58,0xd864,0xdc59,0xd864,0xdc5a, - 0xd864,0xdc5b,0xd864,0xdc5c,0xd864,0xdc5d,0xd864,0xdc5e,0xd864,0xdc5f, - 0xd864,0xdc60,0xd864,0xdc61,0xd864,0xdc62,0xd864,0xdc63,0xd864,0xdc64, - 0xd864,0xdc65,0xd864,0xdc66,0xd864,0xdc67,0xd864,0xdc68,0xd864,0xdc69, - 0xd864,0xdc6a,0xd864,0xdc6b,0xd864,0xdc6c,0xd864,0xdc6d,0xd864,0xdc6e, - 0xd864,0xdc6f,0xd864,0xdc70,0xd864,0xdc71,0xd864,0xdc72,0xd864,0xdc73, - 0xd864,0xdc74,0xd864,0xdc75,0xd864,0xdc76,0xd864,0xdc77,0xd864,0xdc78, - 0xd864,0xdc79,0xd864,0xdc7a,0xd864,0xdc7b,0xd864,0xdc7c,0xd864,0xdc7d, - 0xd864,0xdc7e,0xd864,0xdc7f,0xd864,0xdc80,0xd864,0xdc81,0xd864,0xdc82, - 0xd864,0xdc83,0xd864,0xdc84,0xd864,0xdc85,0xd864,0xdc86,0xd864,0xdc87, - 0xd864,0xdc88,0xd864,0xdc89,0xd864,0xdc8a,0xd864,0xdc8b,0xd864,0xdc8c, - 0xd864,0xdc8d,0xd864,0xdc8e,0xd864,0xdc8f,0xd864,0xdc90,0xd864,0xdc91, - 0xd864,0xdc92,0xd864,0xdc93,0xd864,0xdc94,0xd864,0xdc95,0xd864,0xdc96, - 0xd864,0xdc97,0xd864,0xdc98,0xd864,0xdc99,0xd864,0xdc9a,0xd864,0xdc9b, - 0xd864,0xdc9c,0xd864,0xdc9d,0xd864,0xdc9e,0xd864,0xdc9f,0xd864,0xdca0, - 0xd864,0xdca1,0xd864,0xdca2,0xd864,0xdca3,0xd864,0xdca4,0xd864,0xdca5, - 0xd864,0xdca6,0xd864,0xdca7,0xd864,0xdca8,0xd864,0xdca9,0xd864,0xdcaa, - 0xd864,0xdcab,0xd864,0xdcac,0xd864,0xdcad,0xd864,0xdcae,0xd864,0xdcaf, - 0xd864,0xdcb0,0xd864,0xdcb1,0xd864,0xdcb2,0xd864,0xdcb3,0xd864,0xdcb4, - 0xd864,0xdcb5,0xd864,0xdcb6,0xd864,0xdcb7,0xd864,0xdcb8,0xd864,0xdcb9, - 0xd864,0xdcba,0xd864,0xdcbb,0xd864,0xdcbc,0xd864,0xdcbd,0xd864,0xdcbe, - 0xd864,0xdcbf,0xd864,0xdcc0,0xd864,0xdcc1,0xd864,0xdcc2,0xd864,0xdcc3, - 0xd864,0xdcc4,0xd864,0xdcc5,0xd864,0xdcc6,0xd864,0xdcc7,0xd864,0xdcc8, - 0xd864,0xdcc9,0xd864,0xdcca,0xd864,0xdccb,0xd864,0xdccc,0xd864,0xdccd, - 0xd864,0xdcce,0xd864,0xdccf,0xd864,0xdcd0,0xd864,0xdcd1,0xd864,0xdcd2, - 0xd864,0xdcd3,0xd864,0xdcd4,0xd864,0xdcd5,0xd864,0xdcd6,0xd864,0xdcd7, - 0xd864,0xdcd8,0xd864,0xdcd9,0xd864,0xdcda,0xd864,0xdcdb,0xd864,0xdcdc, - 0xd864,0xdcdd,0xd864,0xdcde,0xd864,0xdcdf,0xd864,0xdce0,0xd864,0xdce1, - 0xd864,0xdce2,0xd864,0xdce3,0xd864,0xdce4,0xd864,0xdce5,0xd864,0xdce6, - 0xd864,0xdce7,0xd864,0xdce8,0xd864,0xdce9,0xd864,0xdcea,0xd864,0xdceb, - 0xd864,0xdcec,0xd864,0xdced,0xd864,0xdcee,0xd864,0xdcef,0xd864,0xdcf0, - 0xd864,0xdcf1,0xd864,0xdcf2,0xd864,0xdcf3,0xd864,0xdcf4,0xd864,0xdcf5, - 0xd864,0xdcf6,0xd864,0xdcf7,0xd864,0xdcf8,0xd864,0xdcf9,0xd864,0xdcfa, - 0xd864,0xdcfb,0xd864,0xdcfc,0xd864,0xdcfd,0xd864,0xdcfe,0xd864,0xdcff, - 0xd864,0xdd00,0xd864,0xdd01,0xd864,0xdd02,0xd864,0xdd03,0xd864,0xdd04, - 0xd864,0xdd05,0xd864,0xdd06,0xd864,0xdd07,0xd864,0xdd08,0xd864,0xdd09, - 0xd864,0xdd0a,0xd864,0xdd0b,0xd864,0xdd0c,0xd864,0xdd0d,0xd864,0xdd0e, - 0xd864,0xdd0f,0xd864,0xdd10,0xd864,0xdd11,0xd864,0xdd12,0xd864,0xdd13, - 0xd864,0xdd14,0xd864,0xdd15,0xd864,0xdd16,0xd864,0xdd17,0xd864,0xdd18, - 0xd864,0xdd19,0xd864,0xdd1a,0xd864,0xdd1b,0xd864,0xdd1c,0xd864,0xdd1d, - 0xd864,0xdd1e,0xd864,0xdd1f,0xd864,0xdd20,0xd864,0xdd21,0xd864,0xdd22, - 0xd864,0xdd23,0xd864,0xdd24,0xd864,0xdd25,0xd864,0xdd26,0xd864,0xdd27, - 0xd864,0xdd28,0xd864,0xdd29,0xd864,0xdd2a,0xd864,0xdd2b,0xd864,0xdd2c, - 0xd864,0xdd2d,0xd864,0xdd2e,0xd864,0xdd2f,0xd864,0xdd30,0xd864,0xdd31, - 0xd864,0xdd32,0xd864,0xdd33,0xd864,0xdd34,0xd864,0xdd35,0xd864,0xdd36, - 0xd864,0xdd37,0xd864,0xdd38,0xd864,0xdd39,0xd864,0xdd3a,0xd864,0xdd3b, - 0xd864,0xdd3c,0xd864,0xdd3d,0xd864,0xdd3e,0xd864,0xdd3f,0xd864,0xdd40, - 0xd864,0xdd41,0xd864,0xdd42,0xd864,0xdd43,0xd864,0xdd44,0xd864,0xdd45, - 0xd864,0xdd46,0xd864,0xdd47,0xd864,0xdd48,0xd864,0xdd49,0xd864,0xdd4a, - 0xd864,0xdd4b,0xd864,0xdd4c,0xd864,0xdd4d,0xd864,0xdd4e,0xd864,0xdd4f, - 0xd864,0xdd50,0xd864,0xdd51,0xd864,0xdd52,0xd864,0xdd53,0xd864,0xdd54, - 0xd864,0xdd55,0xd864,0xdd56,0xd864,0xdd57,0xd864,0xdd58,0xd864,0xdd59, - 0xd864,0xdd5a,0xd864,0xdd5b,0xd864,0xdd5c,0xd864,0xdd5d,0xd864,0xdd5e, - 0xd864,0xdd5f,0xd864,0xdd60,0xd864,0xdd61,0xd864,0xdd62,0xd864,0xdd63, - 0xd864,0xdd64,0xd864,0xdd65,0xd864,0xdd66,0xd864,0xdd67,0xd864,0xdd68, - 0xd864,0xdd69,0xd864,0xdd6a,0xd864,0xdd6b,0xd864,0xdd6c,0xd864,0xdd6d, - 0xd864,0xdd6e,0xd864,0xdd6f,0xd864,0xdd70,0xd864,0xdd71,0xd864,0xdd72, - 0xd864,0xdd73,0xd864,0xdd74,0xd864,0xdd75,0xd864,0xdd76,0xd864,0xdd77, - 0xd864,0xdd78,0xd864,0xdd79,0xd864,0xdd7a,0xd864,0xdd7b,0xd864,0xdd7c, - 0xd864,0xdd7d,0xd864,0xdd7e,0xd864,0xdd7f,0xd864,0xdd80,0xd864,0xdd81, - 0xd864,0xdd82,0xd864,0xdd83,0xd864,0xdd84,0xd864,0xdd85,0xd864,0xdd86, - 0xd864,0xdd87,0xd864,0xdd88,0xd864,0xdd89,0xd864,0xdd8a,0xd864,0xdd8b, - 0xd864,0xdd8c,0xd864,0xdd8d,0xd864,0xdd8e,0xd864,0xdd8f,0xd864,0xdd90, - 0xd864,0xdd91,0xd864,0xdd92,0xd864,0xdd93,0xd864,0xdd94,0xd864,0xdd95, - 0xd864,0xdd96,0xd864,0xdd97,0xd864,0xdd98,0xd864,0xdd99,0xd864,0xdd9a, - 0xd864,0xdd9b,0xd864,0xdd9c,0xd864,0xdd9d,0xd864,0xdd9e,0xd864,0xdd9f, - 0xd864,0xdda0,0xd864,0xdda1,0xd864,0xdda2,0xd864,0xdda3,0xd864,0xdda4, - 0xd864,0xdda5,0xd864,0xdda6,0xd864,0xdda7,0xd864,0xdda8,0xd864,0xdda9, - 0xd864,0xddaa,0xd864,0xddab,0xd864,0xddac,0xd864,0xddad,0xd864,0xddae, - 0xd864,0xddaf,0xd864,0xddb0,0xd864,0xddb1,0xd864,0xddb2,0xd864,0xddb3, - 0xd864,0xddb4,0xd864,0xddb5,0xd864,0xddb6,0xd864,0xddb7,0xd864,0xddb8, - 0xd864,0xddb9,0xd864,0xddba,0xd864,0xddbb,0xd864,0xddbc,0xd864,0xddbd, - 0xd864,0xddbe,0xd864,0xddbf,0xd864,0xddc0,0xd864,0xddc1,0xd864,0xddc2, - 0xd864,0xddc3,0xd864,0xddc4,0xd864,0xddc5,0xd864,0xddc6,0xd864,0xddc7, - 0xd864,0xddc8,0xd864,0xddc9,0xd864,0xddca,0xd864,0xddcb,0xd864,0xddcc, - 0xd864,0xddcd,0xd864,0xddce,0xd864,0xddcf,0xd864,0xddd0,0xd864,0xddd1, - 0xd864,0xddd2,0xd864,0xddd3,0xd864,0xddd4,0xd864,0xddd5,0xd864,0xddd6, - 0xd864,0xddd7,0xd864,0xddd8,0xd864,0xddd9,0xd864,0xddda,0xd864,0xdddb, - 0xd864,0xdddc,0xd864,0xdddd,0xd864,0xddde,0xd864,0xdddf,0xd864,0xdde0, - 0xd864,0xdde1,0xd864,0xdde2,0xd864,0xdde3,0xd864,0xdde4,0xd864,0xdde5, - 0xd864,0xdde6,0xd864,0xdde7,0xd864,0xdde8,0xd864,0xdde9,0xd864,0xddea, - 0xd864,0xddeb,0xd864,0xddec,0xd864,0xdded,0xd864,0xddee,0xd864,0xddef, - 0xd864,0xddf0,0xd864,0xddf1,0xd864,0xddf2,0xd864,0xddf3,0xd864,0xddf4, - 0xd864,0xddf5,0xd864,0xddf6,0xd864,0xddf7,0xd864,0xddf8,0xd864,0xddf9, - 0xd864,0xddfa,0xd864,0xddfb,0xd864,0xddfc,0xd864,0xddfd,0xd864,0xddfe, - 0xd864,0xddff,0xd864,0xde00,0xd864,0xde01,0xd864,0xde02,0xd864,0xde03, - 0xd864,0xde04,0xd864,0xde05,0xd864,0xde06,0xd864,0xde07,0xd864,0xde08, - 0xd864,0xde09,0xd864,0xde0a,0xd864,0xde0b,0xd864,0xde0c,0xd864,0xde0d, - 0xd864,0xde0e,0xd864,0xde0f,0xd864,0xde10,0xd864,0xde11,0xd864,0xde12, - 0xd864,0xde13,0xd864,0xde14,0xd864,0xde15,0xd864,0xde16,0xd864,0xde17, - 0xd864,0xde18,0xd864,0xde19,0xd864,0xde1a,0xd864,0xde1b,0xd864,0xde1c, - 0xd864,0xde1d,0xd864,0xde1e,0xd864,0xde1f,0xd864,0xde20,0xd864,0xde21, - 0xd864,0xde22,0xd864,0xde23,0xd864,0xde24,0xd864,0xde25,0xd864,0xde26, - 0xd864,0xde27,0xd864,0xde28,0xd864,0xde29,0xd864,0xde2a,0xd864,0xde2b, - 0xd864,0xde2c,0xd864,0xde2d,0xd864,0xde2e,0xd864,0xde2f,0xd864,0xde30, - 0xd864,0xde31,0xd864,0xde32,0xd864,0xde33,0xd864,0xde34,0xd864,0xde35, - 0xd864,0xde36,0xd864,0xde37,0xd864,0xde38,0xd864,0xde39,0xd864,0xde3a, - 0xd864,0xde3b,0xd864,0xde3c,0xd864,0xde3d,0xd864,0xde3e,0xd864,0xde3f, - 0xd864,0xde40,0xd864,0xde41,0xd864,0xde42,0xd864,0xde43,0xd864,0xde44, - 0xd864,0xde45,0xd864,0xde46,0xd864,0xde47,0xd864,0xde48,0xd864,0xde49, - 0xd864,0xde4a,0xd864,0xde4b,0xd864,0xde4c,0xd864,0xde4d,0xd864,0xde4e, - 0xd864,0xde4f,0xd864,0xde50,0xd864,0xde51,0xd864,0xde52,0xd864,0xde53, - 0xd864,0xde54,0xd864,0xde55,0xd864,0xde56,0xd864,0xde57,0xd864,0xde58, - 0xd864,0xde59,0xd864,0xde5a,0xd864,0xde5b,0xd864,0xde5c,0xd864,0xde5d, - 0xd864,0xde5e,0xd864,0xde5f,0xd864,0xde60,0xd864,0xde61,0xd864,0xde62, - 0xd864,0xde63,0xd864,0xde64,0xd864,0xde65,0xd864,0xde66,0xd864,0xde67, - 0xd864,0xde68,0xd864,0xde69,0xd864,0xde6a,0xd864,0xde6b,0xd864,0xde6c, - 0xd864,0xde6d,0xd864,0xde6e,0xd864,0xde6f,0xd864,0xde70,0xd864,0xde71, - 0xd864,0xde72,0xd864,0xde73,0xd864,0xde74,0xd864,0xde75,0xd864,0xde76, - 0xd864,0xde77,0xd864,0xde78,0xd864,0xde79,0xd864,0xde7a,0xd864,0xde7b, - 0xd864,0xde7c,0xd864,0xde7d,0xd864,0xde7e,0xd864,0xde7f,0xd864,0xde80, - 0xd864,0xde81,0xd864,0xde82,0xd864,0xde83,0xd864,0xde84,0xd864,0xde85, - 0xd864,0xde86,0xd864,0xde87,0xd864,0xde88,0xd864,0xde89,0xd864,0xde8a, - 0xd864,0xde8b,0xd864,0xde8c,0xd864,0xde8d,0xd864,0xde8e,0xd864,0xde8f, - 0xd864,0xde90,0xd864,0xde91,0xd864,0xde92,0xd864,0xde93,0xd864,0xde94, - 0xd864,0xde95,0xd864,0xde96,0xd864,0xde97,0xd864,0xde98,0xd864,0xde99, - 0xd864,0xde9a,0xd864,0xde9b,0xd864,0xde9c,0xd864,0xde9d,0xd864,0xde9e, - 0xd864,0xde9f,0xd864,0xdea0,0xd864,0xdea1,0xd864,0xdea2,0xd864,0xdea3, - 0xd864,0xdea4,0xd864,0xdea5,0xd864,0xdea6,0xd864,0xdea7,0xd864,0xdea8, - 0xd864,0xdea9,0xd864,0xdeaa,0xd864,0xdeab,0xd864,0xdeac,0xd864,0xdead, - 0xd864,0xdeae,0xd864,0xdeaf,0xd864,0xdeb0,0xd864,0xdeb1,0xd864,0xdeb2, - 0xd864,0xdeb3,0xd864,0xdeb4,0xd864,0xdeb5,0xd864,0xdeb6,0xd864,0xdeb7, - 0xd864,0xdeb8,0xd864,0xdeb9,0xd864,0xdeba,0xd864,0xdebb,0xd864,0xdebc, - 0xd864,0xdebd,0xd864,0xdebe,0xd864,0xdebf,0xd864,0xdec0,0xd864,0xdec1, - 0xd864,0xdec2,0xd864,0xdec3,0xd864,0xdec4,0xd864,0xdec5,0xd864,0xdec6, - 0xd864,0xdec7,0xd864,0xdec8,0xd864,0xdec9,0xd864,0xdeca,0xd864,0xdecb, - 0xd864,0xdecc,0xd864,0xdecd,0xd864,0xdece,0xd864,0xdecf,0xd864,0xded0, - 0xd864,0xded1,0xd864,0xded2,0xd864,0xded3,0xd864,0xded4,0xd864,0xded5, - 0xd864,0xded6,0xd864,0xded7,0xd864,0xded8,0xd864,0xded9,0xd864,0xdeda, - 0xd864,0xdedb,0xd864,0xdedc,0xd864,0xdedd,0xd864,0xdede,0xd864,0xdedf, - 0xd864,0xdee0,0xd864,0xdee1,0xd864,0xdee2,0xd864,0xdee3,0xd864,0xdee4, - 0xd864,0xdee5,0xd864,0xdee6,0xd864,0xdee7,0xd864,0xdee8,0xd864,0xdee9, - 0xd864,0xdeea,0xd864,0xdeeb,0xd864,0xdeec,0xd864,0xdeed,0xd864,0xdeee, - 0xd864,0xdeef,0xd864,0xdef0,0xd864,0xdef1,0xd864,0xdef2,0xd864,0xdef3, - 0xd864,0xdef4,0xd864,0xdef5,0xd864,0xdef6,0xd864,0xdef7,0xd864,0xdef8, - 0xd864,0xdef9,0xd864,0xdefa,0xd864,0xdefb,0xd864,0xdefc,0xd864,0xdefd, - 0xd864,0xdefe,0xd864,0xdeff,0xd864,0xdf00,0xd864,0xdf01,0xd864,0xdf02, - 0xd864,0xdf03,0xd864,0xdf04,0xd864,0xdf05,0xd864,0xdf06,0xd864,0xdf07, - 0xd864,0xdf08,0xd864,0xdf09,0xd864,0xdf0a,0xd864,0xdf0b,0xd864,0xdf0c, - 0xd864,0xdf0d,0xd864,0xdf0e,0xd864,0xdf0f,0xd864,0xdf10,0xd864,0xdf11, - 0xd864,0xdf12,0xd864,0xdf13,0xd864,0xdf14,0xd864,0xdf15,0xd864,0xdf16, - 0xd864,0xdf17,0xd864,0xdf18,0xd864,0xdf19,0xd864,0xdf1a,0xd864,0xdf1b, - 0xd864,0xdf1c,0xd864,0xdf1d,0xd864,0xdf1e,0xd864,0xdf1f,0xd864,0xdf20, - 0xd864,0xdf21,0xd864,0xdf22,0xd864,0xdf23,0xd864,0xdf24,0xd864,0xdf25, - 0xd864,0xdf26,0xd864,0xdf27,0xd864,0xdf28,0xd864,0xdf29,0xd864,0xdf2a, - 0xd864,0xdf2b,0xd864,0xdf2c,0xd864,0xdf2d,0xd864,0xdf2e,0xd864,0xdf2f, - 0xd864,0xdf30,0xd864,0xdf31,0xd864,0xdf32,0xd864,0xdf33,0xd864,0xdf34, - 0xd864,0xdf35,0xd864,0xdf36,0xd864,0xdf37,0xd864,0xdf38,0xd864,0xdf39, - 0xd864,0xdf3a,0xd864,0xdf3b,0xd864,0xdf3c,0xd864,0xdf3d,0xd864,0xdf3e, - 0xd864,0xdf3f,0xd864,0xdf40,0xd864,0xdf41,0xd864,0xdf42,0xd864,0xdf43, - 0xd864,0xdf44,0xd864,0xdf45,0xd864,0xdf46,0xd864,0xdf47,0xd864,0xdf48, - 0xd864,0xdf49,0xd864,0xdf4a,0xd864,0xdf4b,0xd864,0xdf4c,0xd864,0xdf4d, - 0xd864,0xdf4e,0xd864,0xdf4f,0xd864,0xdf50,0xd864,0xdf51,0xd864,0xdf52, - 0xd864,0xdf53,0xd864,0xdf54,0xd864,0xdf55,0xd864,0xdf56,0xd864,0xdf57, - 0xd864,0xdf58,0xd864,0xdf59,0xd864,0xdf5a,0xd864,0xdf5b,0xd864,0xdf5c, - 0xd864,0xdf5d,0xd864,0xdf5e,0xd864,0xdf5f,0xd864,0xdf60,0xd864,0xdf61, - 0xd864,0xdf62,0xd864,0xdf63,0xd864,0xdf64,0xd864,0xdf65,0xd864,0xdf66, - 0xd864,0xdf67,0xd864,0xdf68,0xd864,0xdf69,0xd864,0xdf6a,0xd864,0xdf6b, - 0xd864,0xdf6c,0xd864,0xdf6d,0xd864,0xdf6e,0xd864,0xdf6f,0xd864,0xdf70, - 0xd864,0xdf71,0xd864,0xdf72,0xd864,0xdf73,0xd864,0xdf74,0xd864,0xdf75, - 0xd864,0xdf76,0xd864,0xdf77,0xd864,0xdf78,0xd864,0xdf79,0xd864,0xdf7a, - 0xd864,0xdf7b,0xd864,0xdf7c,0xd864,0xdf7d,0xd864,0xdf7e,0xd864,0xdf7f, - 0xd864,0xdf80,0xd864,0xdf81,0xd864,0xdf82,0xd864,0xdf83,0xd864,0xdf84, - 0xd864,0xdf85,0xd864,0xdf86,0xd864,0xdf87,0xd864,0xdf88,0xd864,0xdf89, - 0xd864,0xdf8a,0xd864,0xdf8b,0xd864,0xdf8c,0xd864,0xdf8d,0xd864,0xdf8e, - 0xd864,0xdf8f,0xd864,0xdf90,0xd864,0xdf91,0xd864,0xdf92,0xd864,0xdf93, - 0xd864,0xdf94,0xd864,0xdf95,0xd864,0xdf96,0xd864,0xdf97,0xd864,0xdf98, - 0xd864,0xdf99,0xd864,0xdf9a,0xd864,0xdf9b,0xd864,0xdf9c,0xd864,0xdf9d, - 0xd864,0xdf9e,0xd864,0xdf9f,0xd864,0xdfa0,0xd864,0xdfa1,0xd864,0xdfa2, - 0xd864,0xdfa3,0xd864,0xdfa4,0xd864,0xdfa5,0xd864,0xdfa6,0xd864,0xdfa7, - 0xd864,0xdfa8,0xd864,0xdfa9,0xd864,0xdfaa,0xd864,0xdfab,0xd864,0xdfac, - 0xd864,0xdfad,0xd864,0xdfae,0xd864,0xdfaf,0xd864,0xdfb0,0xd864,0xdfb1, - 0xd864,0xdfb2,0xd864,0xdfb3,0xd864,0xdfb4,0xd864,0xdfb5,0xd864,0xdfb6, - 0xd864,0xdfb7,0xd864,0xdfb8,0xd864,0xdfb9,0xd864,0xdfba,0xd864,0xdfbb, - 0xd864,0xdfbc,0xd864,0xdfbd,0xd864,0xdfbe,0xd864,0xdfbf,0xd864,0xdfc0, - 0xd864,0xdfc1,0xd864,0xdfc2,0xd864,0xdfc3,0xd864,0xdfc4,0xd864,0xdfc5, - 0xd864,0xdfc6,0xd864,0xdfc7,0xd864,0xdfc8,0xd864,0xdfc9,0xd864,0xdfca, - 0xd864,0xdfcb,0xd864,0xdfcc,0xd864,0xdfcd,0xd864,0xdfce,0xd864,0xdfcf, - 0xd864,0xdfd0,0xd864,0xdfd1,0xd864,0xdfd2,0xd864,0xdfd3,0xd864,0xdfd4, - 0xd864,0xdfd5,0xd864,0xdfd6,0xd864,0xdfd7,0xd864,0xdfd8,0xd864,0xdfd9, - 0xd864,0xdfda,0xd864,0xdfdb,0xd864,0xdfdc,0xd864,0xdfdd,0xd864,0xdfde, - 0xd864,0xdfdf,0xd864,0xdfe0,0xd864,0xdfe1,0xd864,0xdfe2,0xd864,0xdfe3, - 0xd864,0xdfe4,0xd864,0xdfe5,0xd864,0xdfe6,0xd864,0xdfe7,0xd864,0xdfe8, - 0xd864,0xdfe9,0xd864,0xdfea,0xd864,0xdfeb,0xd864,0xdfec,0xd864,0xdfed, - 0xd864,0xdfee,0xd864,0xdfef,0xd864,0xdff0,0xd864,0xdff1,0xd864,0xdff2, - 0xd864,0xdff3,0xd864,0xdff4,0xd864,0xdff5,0xd864,0xdff6,0xd864,0xdff7, - 0xd864,0xdff8,0xd864,0xdff9,0xd864,0xdffa,0xd864,0xdffb,0xd864,0xdffc, - 0xd864,0xdffd,0xd864,0xdffe,0xd864,0xdfff,0xd865,0xdc00,0xd865,0xdc01, - 0xd865,0xdc02,0xd865,0xdc03,0xd865,0xdc04,0xd865,0xdc05,0xd865,0xdc06, - 0xd865,0xdc07,0xd865,0xdc08,0xd865,0xdc09,0xd865,0xdc0a,0xd865,0xdc0b, - 0xd865,0xdc0c,0xd865,0xdc0d,0xd865,0xdc0e,0xd865,0xdc0f,0xd865,0xdc10, - 0xd865,0xdc11,0xd865,0xdc12,0xd865,0xdc13,0xd865,0xdc14,0xd865,0xdc15, - 0xd865,0xdc16,0xd865,0xdc17,0xd865,0xdc18,0xd865,0xdc19,0xd865,0xdc1a, - 0xd865,0xdc1b,0xd865,0xdc1c,0xd865,0xdc1d,0xd865,0xdc1e,0xd865,0xdc1f, - 0xd865,0xdc20,0xd865,0xdc21,0xd865,0xdc22,0xd865,0xdc23,0xd865,0xdc24, - 0xd865,0xdc25,0xd865,0xdc26,0xd865,0xdc27,0xd865,0xdc28,0xd865,0xdc29, - 0xd865,0xdc2a,0xd865,0xdc2b,0xd865,0xdc2c,0xd865,0xdc2d,0xd865,0xdc2e, - 0xd865,0xdc2f,0xd865,0xdc30,0xd865,0xdc31,0xd865,0xdc32,0xd865,0xdc33, - 0xd865,0xdc34,0xd865,0xdc35,0xd865,0xdc36,0xd865,0xdc37,0xd865,0xdc38, - 0xd865,0xdc39,0xd865,0xdc3a,0xd865,0xdc3b,0xd865,0xdc3c,0xd865,0xdc3d, - 0xd865,0xdc3e,0xd865,0xdc3f,0xd865,0xdc40,0xd865,0xdc41,0xd865,0xdc42, - 0xd865,0xdc43,0xd865,0xdc44,0xd865,0xdc45,0xd865,0xdc46,0xd865,0xdc47, - 0xd865,0xdc48,0xd865,0xdc49,0xd865,0xdc4a,0xd865,0xdc4b,0xd865,0xdc4c, - 0xd865,0xdc4d,0xd865,0xdc4e,0xd865,0xdc4f,0xd865,0xdc50,0xd865,0xdc51, - 0xd865,0xdc52,0xd865,0xdc53,0xd865,0xdc54,0xd865,0xdc55,0xd865,0xdc56, - 0xd865,0xdc57,0xd865,0xdc58,0xd865,0xdc59,0xd865,0xdc5a,0xd865,0xdc5b, - 0xd865,0xdc5c,0xd865,0xdc5d,0xd865,0xdc5e,0xd865,0xdc5f,0xd865,0xdc60, - 0xd865,0xdc61,0xd865,0xdc62,0xd865,0xdc63,0xd865,0xdc64,0xd865,0xdc65, - 0xd865,0xdc66,0xd865,0xdc67,0xd865,0xdc68,0xd865,0xdc69,0xd865,0xdc6a, - 0xd865,0xdc6b,0xd865,0xdc6c,0xd865,0xdc6d,0xd865,0xdc6e,0xd865,0xdc6f, - 0xd865,0xdc70,0xd865,0xdc71,0xd865,0xdc72,0xd865,0xdc73,0xd865,0xdc74, - 0xd865,0xdc75,0xd865,0xdc76,0xd865,0xdc77,0xd865,0xdc78,0xd865,0xdc79, - 0xd865,0xdc7a,0xd865,0xdc7b,0xd865,0xdc7c,0xd865,0xdc7d,0xd865,0xdc7e, - 0xd865,0xdc7f,0xd865,0xdc80,0xd865,0xdc81,0xd865,0xdc82,0xd865,0xdc83, - 0xd865,0xdc84,0xd865,0xdc85,0xd865,0xdc86,0xd865,0xdc87,0xd865,0xdc88, - 0xd865,0xdc89,0xd865,0xdc8a,0xd865,0xdc8b,0xd865,0xdc8c,0xd865,0xdc8d, - 0xd865,0xdc8e,0xd865,0xdc8f,0xd865,0xdc90,0xd865,0xdc91,0xd865,0xdc92, - 0xd865,0xdc93,0xd865,0xdc94,0xd865,0xdc95,0xd865,0xdc96,0xd865,0xdc97, - 0xd865,0xdc98,0xd865,0xdc99,0xd865,0xdc9a,0xd865,0xdc9b,0xd865,0xdc9c, - 0xd865,0xdc9d,0xd865,0xdc9e,0xd865,0xdc9f,0xd865,0xdca0,0xd865,0xdca1, - 0xd865,0xdca2,0xd865,0xdca3,0xd865,0xdca4,0xd865,0xdca5,0xd865,0xdca6, - 0xd865,0xdca7,0xd865,0xdca8,0xd865,0xdca9,0xd865,0xdcaa,0xd865,0xdcab, - 0xd865,0xdcac,0xd865,0xdcad,0xd865,0xdcae,0xd865,0xdcaf,0xd865,0xdcb0, - 0xd865,0xdcb1,0xd865,0xdcb2,0xd865,0xdcb3,0xd865,0xdcb4,0xd865,0xdcb5, - 0xd865,0xdcb6,0xd865,0xdcb7,0xd865,0xdcb8,0xd865,0xdcb9,0xd865,0xdcba, - 0xd865,0xdcbb,0xd865,0xdcbc,0xd865,0xdcbd,0xd865,0xdcbe,0xd865,0xdcbf, - 0xd865,0xdcc0,0xd865,0xdcc1,0xd865,0xdcc2,0xd865,0xdcc3,0xd865,0xdcc4, - 0xd865,0xdcc5,0xd865,0xdcc6,0xd865,0xdcc7,0xd865,0xdcc8,0xd865,0xdcc9, - 0xd865,0xdcca,0xd865,0xdccb,0xd865,0xdccc,0xd865,0xdccd,0xd865,0xdcce, - 0xd865,0xdccf,0xd865,0xdcd0,0xd865,0xdcd1,0xd865,0xdcd2,0xd865,0xdcd3, - 0xd865,0xdcd4,0xd865,0xdcd5,0xd865,0xdcd6,0xd865,0xdcd7,0xd865,0xdcd8, - 0xd865,0xdcd9,0xd865,0xdcda,0xd865,0xdcdb,0xd865,0xdcdc,0xd865,0xdcdd, - 0xd865,0xdcde,0xd865,0xdcdf,0xd865,0xdce0,0xd865,0xdce1,0xd865,0xdce2, - 0xd865,0xdce3,0xd865,0xdce4,0xd865,0xdce5,0xd865,0xdce6,0xd865,0xdce7, - 0xd865,0xdce8,0xd865,0xdce9,0xd865,0xdcea,0xd865,0xdceb,0xd865,0xdcec, - 0xd865,0xdced,0xd865,0xdcee,0xd865,0xdcef,0xd865,0xdcf0,0xd865,0xdcf1, - 0xd865,0xdcf2,0xd865,0xdcf3,0xd865,0xdcf4,0xd865,0xdcf5,0xd865,0xdcf6, - 0xd865,0xdcf7,0xd865,0xdcf8,0xd865,0xdcf9,0xd865,0xdcfa,0xd865,0xdcfb, - 0xd865,0xdcfc,0xd865,0xdcfd,0xd865,0xdcfe,0xd865,0xdcff,0xd865,0xdd00, - 0xd865,0xdd01,0xd865,0xdd02,0xd865,0xdd03,0xd865,0xdd04,0xd865,0xdd05, - 0xd865,0xdd06,0xd865,0xdd07,0xd865,0xdd08,0xd865,0xdd09,0xd865,0xdd0a, - 0xd865,0xdd0b,0xd865,0xdd0c,0xd865,0xdd0d,0xd865,0xdd0e,0xd865,0xdd0f, - 0xd865,0xdd10,0xd865,0xdd11,0xd865,0xdd12,0xd865,0xdd13,0xd865,0xdd14, - 0xd865,0xdd15,0xd865,0xdd16,0xd865,0xdd17,0xd865,0xdd18,0xd865,0xdd19, - 0xd865,0xdd1a,0xd865,0xdd1b,0xd865,0xdd1c,0xd865,0xdd1d,0xd865,0xdd1e, - 0xd865,0xdd1f,0xd865,0xdd20,0xd865,0xdd21,0xd865,0xdd22,0xd865,0xdd23, - 0xd865,0xdd24,0xd865,0xdd25,0xd865,0xdd26,0xd865,0xdd27,0xd865,0xdd28, - 0xd865,0xdd29,0xd865,0xdd2a,0xd865,0xdd2b,0xd865,0xdd2c,0xd865,0xdd2d, - 0xd865,0xdd2e,0xd865,0xdd2f,0xd865,0xdd30,0xd865,0xdd31,0xd865,0xdd32, - 0xd865,0xdd33,0xd865,0xdd34,0xd865,0xdd35,0xd865,0xdd36,0xd865,0xdd37, - 0xd865,0xdd38,0xd865,0xdd39,0xd865,0xdd3a,0xd865,0xdd3b,0xd865,0xdd3c, - 0xd865,0xdd3d,0xd865,0xdd3e,0xd865,0xdd3f,0xd865,0xdd40,0xd865,0xdd41, - 0xd865,0xdd42,0xd865,0xdd43,0xd865,0xdd44,0xd865,0xdd45,0xd865,0xdd46, - 0xd865,0xdd47,0xd865,0xdd48,0xd865,0xdd49,0xd865,0xdd4a,0xd865,0xdd4b, - 0xd865,0xdd4c,0xd865,0xdd4d,0xd865,0xdd4e,0xd865,0xdd4f,0xd865,0xdd50, - 0xd865,0xdd51,0xd865,0xdd52,0xd865,0xdd53,0xd865,0xdd54,0xd865,0xdd55, - 0xd865,0xdd56,0xd865,0xdd57,0xd865,0xdd58,0xd865,0xdd59,0xd865,0xdd5a, - 0xd865,0xdd5b,0xd865,0xdd5c,0xd865,0xdd5d,0xd865,0xdd5e,0xd865,0xdd5f, - 0xd865,0xdd60,0xd865,0xdd61,0xd865,0xdd62,0xd865,0xdd63,0xd865,0xdd64, - 0xd865,0xdd65,0xd865,0xdd66,0xd865,0xdd67,0xd865,0xdd68,0xd865,0xdd69, - 0xd865,0xdd6a,0xd865,0xdd6b,0xd865,0xdd6c,0xd865,0xdd6d,0xd865,0xdd6e, - 0xd865,0xdd6f,0xd865,0xdd70,0xd865,0xdd71,0xd865,0xdd72,0xd865,0xdd73, - 0xd865,0xdd74,0xd865,0xdd75,0xd865,0xdd76,0xd865,0xdd77,0xd865,0xdd78, - 0xd865,0xdd79,0xd865,0xdd7a,0xd865,0xdd7b,0xd865,0xdd7c,0xd865,0xdd7d, - 0xd865,0xdd7e,0xd865,0xdd7f,0xd865,0xdd80,0xd865,0xdd81,0xd865,0xdd82, - 0xd865,0xdd83,0xd865,0xdd84,0xd865,0xdd85,0xd865,0xdd86,0xd865,0xdd87, - 0xd865,0xdd88,0xd865,0xdd89,0xd865,0xdd8a,0xd865,0xdd8b,0xd865,0xdd8c, - 0xd865,0xdd8d,0xd865,0xdd8e,0xd865,0xdd8f,0xd865,0xdd90,0xd865,0xdd91, - 0xd865,0xdd92,0xd865,0xdd93,0xd865,0xdd94,0xd865,0xdd95,0xd865,0xdd96, - 0xd865,0xdd97,0xd865,0xdd98,0xd865,0xdd99,0xd865,0xdd9a,0xd865,0xdd9b, - 0xd865,0xdd9c,0xd865,0xdd9d,0xd865,0xdd9e,0xd865,0xdd9f,0xd865,0xdda0, - 0xd865,0xdda1,0xd865,0xdda2,0xd865,0xdda3,0xd865,0xdda4,0xd865,0xdda5, - 0xd865,0xdda6,0xd865,0xdda7,0xd865,0xdda8,0xd865,0xdda9,0xd865,0xddaa, - 0xd865,0xddab,0xd865,0xddac,0xd865,0xddad,0xd865,0xddae,0xd865,0xddaf, - 0xd865,0xddb0,0xd865,0xddb1,0xd865,0xddb2,0xd865,0xddb3,0xd865,0xddb4, - 0xd865,0xddb5,0xd865,0xddb6,0xd865,0xddb7,0xd865,0xddb8,0xd865,0xddb9, - 0xd865,0xddba,0xd865,0xddbb,0xd865,0xddbc,0xd865,0xddbd,0xd865,0xddbe, - 0xd865,0xddbf,0xd865,0xddc0,0xd865,0xddc1,0xd865,0xddc2,0xd865,0xddc3, - 0xd865,0xddc4,0xd865,0xddc5,0xd865,0xddc6,0xd865,0xddc7,0xd865,0xddc8, - 0xd865,0xddc9,0xd865,0xddca,0xd865,0xddcb,0xd865,0xddcc,0xd865,0xddcd, - 0xd865,0xddce,0xd865,0xddcf,0xd865,0xddd0,0xd865,0xddd1,0xd865,0xddd2, - 0xd865,0xddd3,0xd865,0xddd4,0xd865,0xddd5,0xd865,0xddd6,0xd865,0xddd7, - 0xd865,0xddd8,0xd865,0xddd9,0xd865,0xddda,0xd865,0xdddb,0xd865,0xdddc, - 0xd865,0xdddd,0xd865,0xddde,0xd865,0xdddf,0xd865,0xdde0,0xd865,0xdde1, - 0xd865,0xdde2,0xd865,0xdde3,0xd865,0xdde4,0xd865,0xdde5,0xd865,0xdde6, - 0xd865,0xdde7,0xd865,0xdde8,0xd865,0xdde9,0xd865,0xddea,0xd865,0xddeb, - 0xd865,0xddec,0xd865,0xdded,0xd865,0xddee,0xd865,0xddef,0xd865,0xddf0, - 0xd865,0xddf1,0xd865,0xddf2,0xd865,0xddf3,0xd865,0xddf4,0xd865,0xddf5, - 0xd865,0xddf6,0xd865,0xddf7,0xd865,0xddf8,0xd865,0xddf9,0xd865,0xddfa, - 0xd865,0xddfb,0xd865,0xddfc,0xd865,0xddfd,0xd865,0xddfe,0xd865,0xddff, - 0xd865,0xde00,0xd865,0xde01,0xd865,0xde02,0xd865,0xde03,0xd865,0xde04, - 0xd865,0xde05,0xd865,0xde06,0xd865,0xde07,0xd865,0xde08,0xd865,0xde09, - 0xd865,0xde0a,0xd865,0xde0b,0xd865,0xde0c,0xd865,0xde0d,0xd865,0xde0e, - 0xd865,0xde0f,0xd865,0xde10,0xd865,0xde11,0xd865,0xde12,0xd865,0xde13, - 0xd865,0xde14,0xd865,0xde15,0xd865,0xde16,0xd865,0xde17,0xd865,0xde18, - 0xd865,0xde19,0xd865,0xde1a,0xd865,0xde1b,0xd865,0xde1c,0xd865,0xde1d, - 0xd865,0xde1e,0xd865,0xde1f,0xd865,0xde20,0xd865,0xde21,0xd865,0xde22, - 0xd865,0xde23,0xd865,0xde24,0xd865,0xde25,0xd865,0xde26,0xd865,0xde27, - 0xd865,0xde28,0xd865,0xde29,0xd865,0xde2a,0xd865,0xde2b,0xd865,0xde2c, - 0xd865,0xde2d,0xd865,0xde2e,0xd865,0xde2f,0xd865,0xde30,0xd865,0xde31, - 0xd865,0xde32,0xd865,0xde33,0xd865,0xde34,0xd865,0xde35,0xd865,0xde36, - 0xd865,0xde37,0xd865,0xde38,0xd865,0xde39,0xd865,0xde3a,0xd865,0xde3b, - 0xd865,0xde3c,0xd865,0xde3d,0xd865,0xde3e,0xd865,0xde3f,0xd865,0xde40, - 0xd865,0xde41,0xd865,0xde42,0xd865,0xde43,0xd865,0xde44,0xd865,0xde45, - 0xd865,0xde46,0xd865,0xde47,0xd865,0xde48,0xd865,0xde49,0xd865,0xde4a, - 0xd865,0xde4b,0xd865,0xde4c,0xd865,0xde4d,0xd865,0xde4e,0xd865,0xde4f, - 0xd865,0xde50,0xd865,0xde51,0xd865,0xde52,0xd865,0xde53,0xd865,0xde54, - 0xd865,0xde55,0xd865,0xde56,0xd865,0xde57,0xd865,0xde58,0xd865,0xde59, - 0xd865,0xde5a,0xd865,0xde5b,0xd865,0xde5c,0xd865,0xde5d,0xd865,0xde5e, - 0xd865,0xde5f,0xd865,0xde60,0xd865,0xde61,0xd865,0xde62,0xd865,0xde63, - 0xd865,0xde64,0xd865,0xde65,0xd865,0xde66,0xd865,0xde67,0xd865,0xde68, - 0xd865,0xde69,0xd865,0xde6a,0xd865,0xde6b,0xd865,0xde6c,0xd865,0xde6d, - 0xd865,0xde6e,0xd865,0xde6f,0xd865,0xde70,0xd865,0xde71,0xd865,0xde72, - 0xd865,0xde73,0xd865,0xde74,0xd865,0xde75,0xd865,0xde76,0xd865,0xde77, - 0xd865,0xde78,0xd865,0xde79,0xd865,0xde7a,0xd865,0xde7b,0xd865,0xde7c, - 0xd865,0xde7d,0xd865,0xde7e,0xd865,0xde7f,0xd865,0xde80,0xd865,0xde81, - 0xd865,0xde82,0xd865,0xde83,0xd865,0xde84,0xd865,0xde85,0xd865,0xde86, - 0xd865,0xde87,0xd865,0xde88,0xd865,0xde89,0xd865,0xde8a,0xd865,0xde8b, - 0xd865,0xde8c,0xd865,0xde8d,0xd865,0xde8e,0xd865,0xde8f,0xd865,0xde90, - 0xd865,0xde91,0xd865,0xde92,0xd865,0xde93,0xd865,0xde94,0xd865,0xde95, - 0xd865,0xde96,0xd865,0xde97,0xd865,0xde98,0xd865,0xde99,0xd865,0xde9a, - 0xd865,0xde9b,0xd865,0xde9c,0xd865,0xde9d,0xd865,0xde9e,0xd865,0xde9f, - 0xd865,0xdea0,0xd865,0xdea1,0xd865,0xdea2,0xd865,0xdea3,0xd865,0xdea4, - 0xd865,0xdea5,0xd865,0xdea6,0xd865,0xdea7,0xd865,0xdea8,0xd865,0xdea9, - 0xd865,0xdeaa,0xd865,0xdeab,0xd865,0xdeac,0xd865,0xdead,0xd865,0xdeae, - 0xd865,0xdeaf,0xd865,0xdeb0,0xd865,0xdeb1,0xd865,0xdeb2,0xd865,0xdeb3, - 0xd865,0xdeb4,0xd865,0xdeb5,0xd865,0xdeb6,0xd865,0xdeb7,0xd865,0xdeb8, - 0xd865,0xdeb9,0xd865,0xdeba,0xd865,0xdebb,0xd865,0xdebc,0xd865,0xdebd, - 0xd865,0xdebe,0xd865,0xdebf,0xd865,0xdec0,0xd865,0xdec1,0xd865,0xdec2, - 0xd865,0xdec3,0xd865,0xdec4,0xd865,0xdec5,0xd865,0xdec6,0xd865,0xdec7, - 0xd865,0xdec8,0xd865,0xdec9,0xd865,0xdeca,0xd865,0xdecb,0xd865,0xdecc, - 0xd865,0xdecd,0xd865,0xdece,0xd865,0xdecf,0xd865,0xded0,0xd865,0xded1, - 0xd865,0xded2,0xd865,0xded3,0xd865,0xded4,0xd865,0xded5,0xd865,0xded6, - 0xd865,0xded7,0xd865,0xded8,0xd865,0xded9,0xd865,0xdeda,0xd865,0xdedb, - 0xd865,0xdedc,0xd865,0xdedd,0xd865,0xdede,0xd865,0xdedf,0xd865,0xdee0, - 0xd865,0xdee1,0xd865,0xdee2,0xd865,0xdee3,0xd865,0xdee4,0xd865,0xdee5, - 0xd865,0xdee6,0xd865,0xdee7,0xd865,0xdee8,0xd865,0xdee9,0xd865,0xdeea, - 0xd865,0xdeeb,0xd865,0xdeec,0xd865,0xdeed,0xd865,0xdeee,0xd865,0xdeef, - 0xd865,0xdef0,0xd865,0xdef1,0xd865,0xdef2,0xd865,0xdef3,0xd865,0xdef4, - 0xd865,0xdef5,0xd865,0xdef6,0xd865,0xdef7,0xd865,0xdef8,0xd865,0xdef9, - 0xd865,0xdefa,0xd865,0xdefb,0xd865,0xdefc,0xd865,0xdefd,0xd865,0xdefe, - 0xd865,0xdeff,0xd865,0xdf00,0xd865,0xdf01,0xd865,0xdf02,0xd865,0xdf03, - 0xd865,0xdf04,0xd865,0xdf05,0xd865,0xdf06,0xd865,0xdf07,0xd865,0xdf08, - 0xd865,0xdf09,0xd865,0xdf0a,0xd865,0xdf0b,0xd865,0xdf0c,0xd865,0xdf0d, - 0xd865,0xdf0e,0xd865,0xdf0f,0xd865,0xdf10,0xd865,0xdf11,0xd865,0xdf12, - 0xd865,0xdf13,0xd865,0xdf14,0xd865,0xdf15,0xd865,0xdf16,0xd865,0xdf17, - 0xd865,0xdf18,0xd865,0xdf19,0xd865,0xdf1a,0xd865,0xdf1b,0xd865,0xdf1c, - 0xd865,0xdf1d,0xd865,0xdf1e,0xd865,0xdf1f,0xd865,0xdf20,0xd865,0xdf21, - 0xd865,0xdf22,0xd865,0xdf23,0xd865,0xdf24,0xd865,0xdf25,0xd865,0xdf26, - 0xd865,0xdf27,0xd865,0xdf28,0xd865,0xdf29,0xd865,0xdf2a,0xd865,0xdf2b, - 0xd865,0xdf2c,0xd865,0xdf2d,0xd865,0xdf2e,0xd865,0xdf2f,0xd865,0xdf30, - 0xd865,0xdf31,0xd865,0xdf32,0xd865,0xdf33,0xd865,0xdf34,0xd865,0xdf35, - 0xd865,0xdf36,0xd865,0xdf37,0xd865,0xdf38,0xd865,0xdf39,0xd865,0xdf3a, - 0xd865,0xdf3b,0xd865,0xdf3c,0xd865,0xdf3d,0xd865,0xdf3e,0xd865,0xdf3f, - 0xd865,0xdf40,0xd865,0xdf41,0xd865,0xdf42,0xd865,0xdf43,0xd865,0xdf44, - 0xd865,0xdf45,0xd865,0xdf46,0xd865,0xdf47,0xd865,0xdf48,0xd865,0xdf49, - 0xd865,0xdf4a,0xd865,0xdf4b,0xd865,0xdf4c,0xd865,0xdf4d,0xd865,0xdf4e, - 0xd865,0xdf4f,0xd865,0xdf50,0xd865,0xdf51,0xd865,0xdf52,0xd865,0xdf53, - 0xd865,0xdf54,0xd865,0xdf55,0xd865,0xdf56,0xd865,0xdf57,0xd865,0xdf58, - 0xd865,0xdf59,0xd865,0xdf5a,0xd865,0xdf5b,0xd865,0xdf5c,0xd865,0xdf5d, - 0xd865,0xdf5e,0xd865,0xdf5f,0xd865,0xdf60,0xd865,0xdf61,0xd865,0xdf62, - 0xd865,0xdf63,0xd865,0xdf64,0xd865,0xdf65,0xd865,0xdf66,0xd865,0xdf67, - 0xd865,0xdf68,0xd865,0xdf69,0xd865,0xdf6a,0xd865,0xdf6b,0xd865,0xdf6c, - 0xd865,0xdf6d,0xd865,0xdf6e,0xd865,0xdf6f,0xd865,0xdf70,0xd865,0xdf71, - 0xd865,0xdf72,0xd865,0xdf73,0xd865,0xdf74,0xd865,0xdf75,0xd865,0xdf76, - 0xd865,0xdf77,0xd865,0xdf78,0xd865,0xdf79,0xd865,0xdf7a,0xd865,0xdf7b, - 0xd865,0xdf7c,0xd865,0xdf7d,0xd865,0xdf7e,0xd865,0xdf7f,0xd865,0xdf80, - 0xd865,0xdf81,0xd865,0xdf82,0xd865,0xdf83,0xd865,0xdf84,0xd865,0xdf85, - 0xd865,0xdf86,0xd865,0xdf87,0xd865,0xdf88,0xd865,0xdf89,0xd865,0xdf8a, - 0xd865,0xdf8b,0xd865,0xdf8c,0xd865,0xdf8d,0xd865,0xdf8e,0xd865,0xdf8f, - 0xd865,0xdf90,0xd865,0xdf91,0xd865,0xdf92,0xd865,0xdf93,0xd865,0xdf94, - 0xd865,0xdf95,0xd865,0xdf96,0xd865,0xdf97,0xd865,0xdf98,0xd865,0xdf99, - 0xd865,0xdf9a,0xd865,0xdf9b,0xd865,0xdf9c,0xd865,0xdf9d,0xd865,0xdf9e, - 0xd865,0xdf9f,0xd865,0xdfa0,0xd865,0xdfa1,0xd865,0xdfa2,0xd865,0xdfa3, - 0xd865,0xdfa4,0xd865,0xdfa5,0xd865,0xdfa6,0xd865,0xdfa7,0xd865,0xdfa8, - 0xd865,0xdfa9,0xd865,0xdfaa,0xd865,0xdfab,0xd865,0xdfac,0xd865,0xdfad, - 0xd865,0xdfae,0xd865,0xdfaf,0xd865,0xdfb0,0xd865,0xdfb1,0xd865,0xdfb2, - 0xd865,0xdfb3,0xd865,0xdfb4,0xd865,0xdfb5,0xd865,0xdfb6,0xd865,0xdfb7, - 0xd865,0xdfb8,0xd865,0xdfb9,0xd865,0xdfba,0xd865,0xdfbb,0xd865,0xdfbc, - 0xd865,0xdfbd,0xd865,0xdfbe,0xd865,0xdfbf,0xd865,0xdfc0,0xd865,0xdfc1, - 0xd865,0xdfc2,0xd865,0xdfc3,0xd865,0xdfc4,0xd865,0xdfc5,0xd865,0xdfc6, - 0xd865,0xdfc7,0xd865,0xdfc8,0xd865,0xdfc9,0xd865,0xdfca,0xd865,0xdfcb, - 0xd865,0xdfcc,0xd865,0xdfcd,0xd865,0xdfce,0xd865,0xdfcf,0xd865,0xdfd0, - 0xd865,0xdfd1,0xd865,0xdfd2,0xd865,0xdfd3,0xd865,0xdfd4,0xd865,0xdfd5, - 0xd865,0xdfd6,0xd865,0xdfd7,0xd865,0xdfd8,0xd865,0xdfd9,0xd865,0xdfda, - 0xd865,0xdfdb,0xd865,0xdfdc,0xd865,0xdfdd,0xd865,0xdfde,0xd865,0xdfdf, - 0xd865,0xdfe0,0xd865,0xdfe1,0xd865,0xdfe2,0xd865,0xdfe3,0xd865,0xdfe4, - 0xd865,0xdfe5,0xd865,0xdfe6,0xd865,0xdfe7,0xd865,0xdfe8,0xd865,0xdfe9, - 0xd865,0xdfea,0xd865,0xdfeb,0xd865,0xdfec,0xd865,0xdfed,0xd865,0xdfee, - 0xd865,0xdfef,0xd865,0xdff0,0xd865,0xdff1,0xd865,0xdff2,0xd865,0xdff3, - 0xd865,0xdff4,0xd865,0xdff5,0xd865,0xdff6,0xd865,0xdff7,0xd865,0xdff8, - 0xd865,0xdff9,0xd865,0xdffa,0xd865,0xdffb,0xd865,0xdffc,0xd865,0xdffd, - 0xd865,0xdffe,0xd865,0xdfff,0xd866,0xdc00,0xd866,0xdc01,0xd866,0xdc02, - 0xd866,0xdc03,0xd866,0xdc04,0xd866,0xdc05,0xd866,0xdc06,0xd866,0xdc07, - 0xd866,0xdc08,0xd866,0xdc09,0xd866,0xdc0a,0xd866,0xdc0b,0xd866,0xdc0c, - 0xd866,0xdc0d,0xd866,0xdc0e,0xd866,0xdc0f,0xd866,0xdc10,0xd866,0xdc11, - 0xd866,0xdc12,0xd866,0xdc13,0xd866,0xdc14,0xd866,0xdc15,0xd866,0xdc16, - 0xd866,0xdc17,0xd866,0xdc18,0xd866,0xdc19,0xd866,0xdc1a,0xd866,0xdc1b, - 0xd866,0xdc1c,0xd866,0xdc1d,0xd866,0xdc1e,0xd866,0xdc1f,0xd866,0xdc20, - 0xd866,0xdc21,0xd866,0xdc22,0xd866,0xdc23,0xd866,0xdc24,0xd866,0xdc25, - 0xd866,0xdc26,0xd866,0xdc27,0xd866,0xdc28,0xd866,0xdc29,0xd866,0xdc2a, - 0xd866,0xdc2b,0xd866,0xdc2c,0xd866,0xdc2d,0xd866,0xdc2e,0xd866,0xdc2f, - 0xd866,0xdc30,0xd866,0xdc31,0xd866,0xdc32,0xd866,0xdc33,0xd866,0xdc34, - 0xd866,0xdc35,0xd866,0xdc36,0xd866,0xdc37,0xd866,0xdc38,0xd866,0xdc39, - 0xd866,0xdc3a,0xd866,0xdc3b,0xd866,0xdc3c,0xd866,0xdc3d,0xd866,0xdc3e, - 0xd866,0xdc3f,0xd866,0xdc40,0xd866,0xdc41,0xd866,0xdc42,0xd866,0xdc43, - 0xd866,0xdc44,0xd866,0xdc45,0xd866,0xdc46,0xd866,0xdc47,0xd866,0xdc48, - 0xd866,0xdc49,0xd866,0xdc4a,0xd866,0xdc4b,0xd866,0xdc4c,0xd866,0xdc4d, - 0xd866,0xdc4e,0xd866,0xdc4f,0xd866,0xdc50,0xd866,0xdc51,0xd866,0xdc52, - 0xd866,0xdc53,0xd866,0xdc54,0xd866,0xdc55,0xd866,0xdc56,0xd866,0xdc57, - 0xd866,0xdc58,0xd866,0xdc59,0xd866,0xdc5a,0xd866,0xdc5b,0xd866,0xdc5c, - 0xd866,0xdc5d,0xd866,0xdc5e,0xd866,0xdc5f,0xd866,0xdc60,0xd866,0xdc61, - 0xd866,0xdc62,0xd866,0xdc63,0xd866,0xdc64,0xd866,0xdc65,0xd866,0xdc66, - 0xd866,0xdc67,0xd866,0xdc68,0xd866,0xdc69,0xd866,0xdc6a,0xd866,0xdc6b, - 0xd866,0xdc6c,0xd866,0xdc6d,0xd866,0xdc6e,0xd866,0xdc6f,0xd866,0xdc70, - 0xd866,0xdc71,0xd866,0xdc72,0xd866,0xdc73,0xd866,0xdc74,0xd866,0xdc75, - 0xd866,0xdc76,0xd866,0xdc77,0xd866,0xdc78,0xd866,0xdc79,0xd866,0xdc7a, - 0xd866,0xdc7b,0xd866,0xdc7c,0xd866,0xdc7d,0xd866,0xdc7e,0xd866,0xdc7f, - 0xd866,0xdc80,0xd866,0xdc81,0xd866,0xdc82,0xd866,0xdc83,0xd866,0xdc84, - 0xd866,0xdc85,0xd866,0xdc86,0xd866,0xdc87,0xd866,0xdc88,0xd866,0xdc89, - 0xd866,0xdc8a,0xd866,0xdc8b,0xd866,0xdc8c,0xd866,0xdc8d,0xd866,0xdc8e, - 0xd866,0xdc8f,0xd866,0xdc90,0xd866,0xdc91,0xd866,0xdc92,0xd866,0xdc93, - 0xd866,0xdc94,0xd866,0xdc95,0xd866,0xdc96,0xd866,0xdc97,0xd866,0xdc98, - 0xd866,0xdc99,0xd866,0xdc9a,0xd866,0xdc9b,0xd866,0xdc9c,0xd866,0xdc9d, - 0xd866,0xdc9e,0xd866,0xdc9f,0xd866,0xdca0,0xd866,0xdca1,0xd866,0xdca2, - 0xd866,0xdca3,0xd866,0xdca4,0xd866,0xdca5,0xd866,0xdca6,0xd866,0xdca7, - 0xd866,0xdca8,0xd866,0xdca9,0xd866,0xdcaa,0xd866,0xdcab,0xd866,0xdcac, - 0xd866,0xdcad,0xd866,0xdcae,0xd866,0xdcaf,0xd866,0xdcb0,0xd866,0xdcb1, - 0xd866,0xdcb2,0xd866,0xdcb3,0xd866,0xdcb4,0xd866,0xdcb5,0xd866,0xdcb6, - 0xd866,0xdcb7,0xd866,0xdcb8,0xd866,0xdcb9,0xd866,0xdcba,0xd866,0xdcbb, - 0xd866,0xdcbc,0xd866,0xdcbd,0xd866,0xdcbe,0xd866,0xdcbf,0xd866,0xdcc0, - 0xd866,0xdcc1,0xd866,0xdcc2,0xd866,0xdcc3,0xd866,0xdcc4,0xd866,0xdcc5, - 0xd866,0xdcc6,0xd866,0xdcc7,0xd866,0xdcc8,0xd866,0xdcc9,0xd866,0xdcca, - 0xd866,0xdccb,0xd866,0xdccc,0xd866,0xdccd,0xd866,0xdcce,0xd866,0xdccf, - 0xd866,0xdcd0,0xd866,0xdcd1,0xd866,0xdcd2,0xd866,0xdcd3,0xd866,0xdcd4, - 0xd866,0xdcd5,0xd866,0xdcd6,0xd866,0xdcd7,0xd866,0xdcd8,0xd866,0xdcd9, - 0xd866,0xdcda,0xd866,0xdcdb,0xd866,0xdcdc,0xd866,0xdcdd,0xd866,0xdcde, - 0xd866,0xdcdf,0xd866,0xdce0,0xd866,0xdce1,0xd866,0xdce2,0xd866,0xdce3, - 0xd866,0xdce4,0xd866,0xdce5,0xd866,0xdce6,0xd866,0xdce7,0xd866,0xdce8, - 0xd866,0xdce9,0xd866,0xdcea,0xd866,0xdceb,0xd866,0xdcec,0xd866,0xdced, - 0xd866,0xdcee,0xd866,0xdcef,0xd866,0xdcf0,0xd866,0xdcf1,0xd866,0xdcf2, - 0xd866,0xdcf3,0xd866,0xdcf4,0xd866,0xdcf5,0xd866,0xdcf6,0xd866,0xdcf7, - 0xd866,0xdcf8,0xd866,0xdcf9,0xd866,0xdcfa,0xd866,0xdcfb,0xd866,0xdcfc, - 0xd866,0xdcfd,0xd866,0xdcfe,0xd866,0xdcff,0xd866,0xdd00,0xd866,0xdd01, - 0xd866,0xdd02,0xd866,0xdd03,0xd866,0xdd04,0xd866,0xdd05,0xd866,0xdd06, - 0xd866,0xdd07,0xd866,0xdd08,0xd866,0xdd09,0xd866,0xdd0a,0xd866,0xdd0b, - 0xd866,0xdd0c,0xd866,0xdd0d,0xd866,0xdd0e,0xd866,0xdd0f,0xd866,0xdd10, - 0xd866,0xdd11,0xd866,0xdd12,0xd866,0xdd13,0xd866,0xdd14,0xd866,0xdd15, - 0xd866,0xdd16,0xd866,0xdd17,0xd866,0xdd18,0xd866,0xdd19,0xd866,0xdd1a, - 0xd866,0xdd1b,0xd866,0xdd1c,0xd866,0xdd1d,0xd866,0xdd1e,0xd866,0xdd1f, - 0xd866,0xdd20,0xd866,0xdd21,0xd866,0xdd22,0xd866,0xdd23,0xd866,0xdd24, - 0xd866,0xdd25,0xd866,0xdd26,0xd866,0xdd27,0xd866,0xdd28,0xd866,0xdd29, - 0xd866,0xdd2a,0xd866,0xdd2b,0xd866,0xdd2c,0xd866,0xdd2d,0xd866,0xdd2e, - 0xd866,0xdd2f,0xd866,0xdd30,0xd866,0xdd31,0xd866,0xdd32,0xd866,0xdd33, - 0xd866,0xdd34,0xd866,0xdd35,0xd866,0xdd36,0xd866,0xdd37,0xd866,0xdd38, - 0xd866,0xdd39,0xd866,0xdd3a,0xd866,0xdd3b,0xd866,0xdd3c,0xd866,0xdd3d, - 0xd866,0xdd3e,0xd866,0xdd3f,0xd866,0xdd40,0xd866,0xdd41,0xd866,0xdd42, - 0xd866,0xdd43,0xd866,0xdd44,0xd866,0xdd45,0xd866,0xdd46,0xd866,0xdd47, - 0xd866,0xdd48,0xd866,0xdd49,0xd866,0xdd4a,0xd866,0xdd4b,0xd866,0xdd4c, - 0xd866,0xdd4d,0xd866,0xdd4e,0xd866,0xdd4f,0xd866,0xdd50,0xd866,0xdd51, - 0xd866,0xdd52,0xd866,0xdd53,0xd866,0xdd54,0xd866,0xdd55,0xd866,0xdd56, - 0xd866,0xdd57,0xd866,0xdd58,0xd866,0xdd59,0xd866,0xdd5a,0xd866,0xdd5b, - 0xd866,0xdd5c,0xd866,0xdd5d,0xd866,0xdd5e,0xd866,0xdd5f,0xd866,0xdd60, - 0xd866,0xdd61,0xd866,0xdd62,0xd866,0xdd63,0xd866,0xdd64,0xd866,0xdd65, - 0xd866,0xdd66,0xd866,0xdd67,0xd866,0xdd68,0xd866,0xdd69,0xd866,0xdd6a, - 0xd866,0xdd6b,0xd866,0xdd6c,0xd866,0xdd6d,0xd866,0xdd6e,0xd866,0xdd6f, - 0xd866,0xdd70,0xd866,0xdd71,0xd866,0xdd72,0xd866,0xdd73,0xd866,0xdd74, - 0xd866,0xdd75,0xd866,0xdd76,0xd866,0xdd77,0xd866,0xdd78,0xd866,0xdd79, - 0xd866,0xdd7a,0xd866,0xdd7b,0xd866,0xdd7c,0xd866,0xdd7d,0xd866,0xdd7e, - 0xd866,0xdd7f,0xd866,0xdd80,0xd866,0xdd81,0xd866,0xdd82,0xd866,0xdd83, - 0xd866,0xdd84,0xd866,0xdd85,0xd866,0xdd86,0xd866,0xdd87,0xd866,0xdd88, - 0xd866,0xdd89,0xd866,0xdd8a,0xd866,0xdd8b,0xd866,0xdd8c,0xd866,0xdd8d, - 0xd866,0xdd8e,0xd866,0xdd8f,0xd866,0xdd90,0xd866,0xdd91,0xd866,0xdd92, - 0xd866,0xdd93,0xd866,0xdd94,0xd866,0xdd95,0xd866,0xdd96,0xd866,0xdd97, - 0xd866,0xdd98,0xd866,0xdd99,0xd866,0xdd9a,0xd866,0xdd9b,0xd866,0xdd9c, - 0xd866,0xdd9d,0xd866,0xdd9e,0xd866,0xdd9f,0xd866,0xdda0,0xd866,0xdda1, - 0xd866,0xdda2,0xd866,0xdda3,0xd866,0xdda4,0xd866,0xdda5,0xd866,0xdda6, - 0xd866,0xdda7,0xd866,0xdda8,0xd866,0xdda9,0xd866,0xddaa,0xd866,0xddab, - 0xd866,0xddac,0xd866,0xddad,0xd866,0xddae,0xd866,0xddaf,0xd866,0xddb0, - 0xd866,0xddb1,0xd866,0xddb2,0xd866,0xddb3,0xd866,0xddb4,0xd866,0xddb5, - 0xd866,0xddb6,0xd866,0xddb7,0xd866,0xddb8,0xd866,0xddb9,0xd866,0xddba, - 0xd866,0xddbb,0xd866,0xddbc,0xd866,0xddbd,0xd866,0xddbe,0xd866,0xddbf, - 0xd866,0xddc0,0xd866,0xddc1,0xd866,0xddc2,0xd866,0xddc3,0xd866,0xddc4, - 0xd866,0xddc5,0xd866,0xddc6,0xd866,0xddc7,0xd866,0xddc8,0xd866,0xddc9, - 0xd866,0xddca,0xd866,0xddcb,0xd866,0xddcc,0xd866,0xddcd,0xd866,0xddce, - 0xd866,0xddcf,0xd866,0xddd0,0xd866,0xddd1,0xd866,0xddd2,0xd866,0xddd3, - 0xd866,0xddd4,0xd866,0xddd5,0xd866,0xddd6,0xd866,0xddd7,0xd866,0xddd8, - 0xd866,0xddd9,0xd866,0xddda,0xd866,0xdddb,0xd866,0xdddc,0xd866,0xdddd, - 0xd866,0xddde,0xd866,0xdddf,0xd866,0xdde0,0xd866,0xdde1,0xd866,0xdde2, - 0xd866,0xdde3,0xd866,0xdde4,0xd866,0xdde5,0xd866,0xdde6,0xd866,0xdde7, - 0xd866,0xdde8,0xd866,0xdde9,0xd866,0xddea,0xd866,0xddeb,0xd866,0xddec, - 0xd866,0xdded,0xd866,0xddee,0xd866,0xddef,0xd866,0xddf0,0xd866,0xddf1, - 0xd866,0xddf2,0xd866,0xddf3,0xd866,0xddf4,0xd866,0xddf5,0xd866,0xddf6, - 0xd866,0xddf7,0xd866,0xddf8,0xd866,0xddf9,0xd866,0xddfa,0xd866,0xddfb, - 0xd866,0xddfc,0xd866,0xddfd,0xd866,0xddfe,0xd866,0xddff,0xd866,0xde00, - 0xd866,0xde01,0xd866,0xde02,0xd866,0xde03,0xd866,0xde04,0xd866,0xde05, - 0xd866,0xde06,0xd866,0xde07,0xd866,0xde08,0xd866,0xde09,0xd866,0xde0a, - 0xd866,0xde0b,0xd866,0xde0c,0xd866,0xde0d,0xd866,0xde0e,0xd866,0xde0f, - 0xd866,0xde10,0xd866,0xde11,0xd866,0xde12,0xd866,0xde13,0xd866,0xde14, - 0xd866,0xde15,0xd866,0xde16,0xd866,0xde17,0xd866,0xde18,0xd866,0xde19, - 0xd866,0xde1a,0xd866,0xde1b,0xd866,0xde1c,0xd866,0xde1d,0xd866,0xde1e, - 0xd866,0xde1f,0xd866,0xde20,0xd866,0xde21,0xd866,0xde22,0xd866,0xde23, - 0xd866,0xde24,0xd866,0xde25,0xd866,0xde26,0xd866,0xde27,0xd866,0xde28, - 0xd866,0xde29,0xd866,0xde2a,0xd866,0xde2b,0xd866,0xde2c,0xd866,0xde2d, - 0xd866,0xde2e,0xd866,0xde2f,0xd866,0xde30,0xd866,0xde31,0xd866,0xde32, - 0xd866,0xde33,0xd866,0xde34,0xd866,0xde35,0xd866,0xde36,0xd866,0xde37, - 0xd866,0xde38,0xd866,0xde39,0xd866,0xde3a,0xd866,0xde3b,0xd866,0xde3c, - 0xd866,0xde3d,0xd866,0xde3e,0xd866,0xde3f,0xd866,0xde40,0xd866,0xde41, - 0xd866,0xde42,0xd866,0xde43,0xd866,0xde44,0xd866,0xde45,0xd866,0xde46, - 0xd866,0xde47,0xd866,0xde48,0xd866,0xde49,0xd866,0xde4a,0xd866,0xde4b, - 0xd866,0xde4c,0xd866,0xde4d,0xd866,0xde4e,0xd866,0xde4f,0xd866,0xde50, - 0xd866,0xde51,0xd866,0xde52,0xd866,0xde53,0xd866,0xde54,0xd866,0xde55, - 0xd866,0xde56,0xd866,0xde57,0xd866,0xde58,0xd866,0xde59,0xd866,0xde5a, - 0xd866,0xde5b,0xd866,0xde5c,0xd866,0xde5d,0xd866,0xde5e,0xd866,0xde5f, - 0xd866,0xde60,0xd866,0xde61,0xd866,0xde62,0xd866,0xde63,0xd866,0xde64, - 0xd866,0xde65,0xd866,0xde66,0xd866,0xde67,0xd866,0xde68,0xd866,0xde69, - 0xd866,0xde6a,0xd866,0xde6b,0xd866,0xde6c,0xd866,0xde6d,0xd866,0xde6e, - 0xd866,0xde6f,0xd866,0xde70,0xd866,0xde71,0xd866,0xde72,0xd866,0xde73, - 0xd866,0xde74,0xd866,0xde75,0xd866,0xde76,0xd866,0xde77,0xd866,0xde78, - 0xd866,0xde79,0xd866,0xde7a,0xd866,0xde7b,0xd866,0xde7c,0xd866,0xde7d, - 0xd866,0xde7e,0xd866,0xde7f,0xd866,0xde80,0xd866,0xde81,0xd866,0xde82, - 0xd866,0xde83,0xd866,0xde84,0xd866,0xde85,0xd866,0xde86,0xd866,0xde87, - 0xd866,0xde88,0xd866,0xde89,0xd866,0xde8a,0xd866,0xde8b,0xd866,0xde8c, - 0xd866,0xde8d,0xd866,0xde8e,0xd866,0xde8f,0xd866,0xde90,0xd866,0xde91, - 0xd866,0xde92,0xd866,0xde93,0xd866,0xde94,0xd866,0xde95,0xd866,0xde96, - 0xd866,0xde97,0xd866,0xde98,0xd866,0xde99,0xd866,0xde9a,0xd866,0xde9b, - 0xd866,0xde9c,0xd866,0xde9d,0xd866,0xde9e,0xd866,0xde9f,0xd866,0xdea0, - 0xd866,0xdea1,0xd866,0xdea2,0xd866,0xdea3,0xd866,0xdea4,0xd866,0xdea5, - 0xd866,0xdea6,0xd866,0xdea7,0xd866,0xdea8,0xd866,0xdea9,0xd866,0xdeaa, - 0xd866,0xdeab,0xd866,0xdeac,0xd866,0xdead,0xd866,0xdeae,0xd866,0xdeaf, - 0xd866,0xdeb0,0xd866,0xdeb1,0xd866,0xdeb2,0xd866,0xdeb3,0xd866,0xdeb4, - 0xd866,0xdeb5,0xd866,0xdeb6,0xd866,0xdeb7,0xd866,0xdeb8,0xd866,0xdeb9, - 0xd866,0xdeba,0xd866,0xdebb,0xd866,0xdebc,0xd866,0xdebd,0xd866,0xdebe, - 0xd866,0xdebf,0xd866,0xdec0,0xd866,0xdec1,0xd866,0xdec2,0xd866,0xdec3, - 0xd866,0xdec4,0xd866,0xdec5,0xd866,0xdec6,0xd866,0xdec7,0xd866,0xdec8, - 0xd866,0xdec9,0xd866,0xdeca,0xd866,0xdecb,0xd866,0xdecc,0xd866,0xdecd, - 0xd866,0xdece,0xd866,0xdecf,0xd866,0xded0,0xd866,0xded1,0xd866,0xded2, - 0xd866,0xded3,0xd866,0xded4,0xd866,0xded5,0xd866,0xded6,0xd866,0xded7, - 0xd866,0xded8,0xd866,0xded9,0xd866,0xdeda,0xd866,0xdedb,0xd866,0xdedc, - 0xd866,0xdedd,0xd866,0xdede,0xd866,0xdedf,0xd866,0xdee0,0xd866,0xdee1, - 0xd866,0xdee2,0xd866,0xdee3,0xd866,0xdee4,0xd866,0xdee5,0xd866,0xdee6, - 0xd866,0xdee7,0xd866,0xdee8,0xd866,0xdee9,0xd866,0xdeea,0xd866,0xdeeb, - 0xd866,0xdeec,0xd866,0xdeed,0xd866,0xdeee,0xd866,0xdeef,0xd866,0xdef0, - 0xd866,0xdef1,0xd866,0xdef2,0xd866,0xdef3,0xd866,0xdef4,0xd866,0xdef5, - 0xd866,0xdef6,0xd866,0xdef7,0xd866,0xdef8,0xd866,0xdef9,0xd866,0xdefa, - 0xd866,0xdefb,0xd866,0xdefc,0xd866,0xdefd,0xd866,0xdefe,0xd866,0xdeff, - 0xd866,0xdf00,0xd866,0xdf01,0xd866,0xdf02,0xd866,0xdf03,0xd866,0xdf04, - 0xd866,0xdf05,0xd866,0xdf06,0xd866,0xdf07,0xd866,0xdf08,0xd866,0xdf09, - 0xd866,0xdf0a,0xd866,0xdf0b,0xd866,0xdf0c,0xd866,0xdf0d,0xd866,0xdf0e, - 0xd866,0xdf0f,0xd866,0xdf10,0xd866,0xdf11,0xd866,0xdf12,0xd866,0xdf13, - 0xd866,0xdf14,0xd866,0xdf15,0xd866,0xdf16,0xd866,0xdf17,0xd866,0xdf18, - 0xd866,0xdf19,0xd866,0xdf1a,0xd866,0xdf1b,0xd866,0xdf1c,0xd866,0xdf1d, - 0xd866,0xdf1e,0xd866,0xdf1f,0xd866,0xdf20,0xd866,0xdf21,0xd866,0xdf22, - 0xd866,0xdf23,0xd866,0xdf24,0xd866,0xdf25,0xd866,0xdf26,0xd866,0xdf27, - 0xd866,0xdf28,0xd866,0xdf29,0xd866,0xdf2a,0xd866,0xdf2b,0xd866,0xdf2c, - 0xd866,0xdf2d,0xd866,0xdf2e,0xd866,0xdf2f,0xd866,0xdf30,0xd866,0xdf31, - 0xd866,0xdf32,0xd866,0xdf33,0xd866,0xdf34,0xd866,0xdf35,0xd866,0xdf36, - 0xd866,0xdf37,0xd866,0xdf38,0xd866,0xdf39,0xd866,0xdf3a,0xd866,0xdf3b, - 0xd866,0xdf3c,0xd866,0xdf3d,0xd866,0xdf3e,0xd866,0xdf3f,0xd866,0xdf40, - 0xd866,0xdf41,0xd866,0xdf42,0xd866,0xdf43,0xd866,0xdf44,0xd866,0xdf45, - 0xd866,0xdf46,0xd866,0xdf47,0xd866,0xdf48,0xd866,0xdf49,0xd866,0xdf4a, - 0xd866,0xdf4b,0xd866,0xdf4c,0xd866,0xdf4d,0xd866,0xdf4e,0xd866,0xdf4f, - 0xd866,0xdf50,0xd866,0xdf51,0xd866,0xdf52,0xd866,0xdf53,0xd866,0xdf54, - 0xd866,0xdf55,0xd866,0xdf56,0xd866,0xdf57,0xd866,0xdf58,0xd866,0xdf59, - 0xd866,0xdf5a,0xd866,0xdf5b,0xd866,0xdf5c,0xd866,0xdf5d,0xd866,0xdf5e, - 0xd866,0xdf5f,0xd866,0xdf60,0xd866,0xdf61,0xd866,0xdf62,0xd866,0xdf63, - 0xd866,0xdf64,0xd866,0xdf65,0xd866,0xdf66,0xd866,0xdf67,0xd866,0xdf68, - 0xd866,0xdf69,0xd866,0xdf6a,0xd866,0xdf6b,0xd866,0xdf6c,0xd866,0xdf6d, - 0xd866,0xdf6e,0xd866,0xdf6f,0xd866,0xdf70,0xd866,0xdf71,0xd866,0xdf72, - 0xd866,0xdf73,0xd866,0xdf74,0xd866,0xdf75,0xd866,0xdf76,0xd866,0xdf77, - 0xd866,0xdf78,0xd866,0xdf79,0xd866,0xdf7a,0xd866,0xdf7b,0xd866,0xdf7c, - 0xd866,0xdf7d,0xd866,0xdf7e,0xd866,0xdf7f,0xd866,0xdf80,0xd866,0xdf81, - 0xd866,0xdf82,0xd866,0xdf83,0xd866,0xdf84,0xd866,0xdf85,0xd866,0xdf86, - 0xd866,0xdf87,0xd866,0xdf88,0xd866,0xdf89,0xd866,0xdf8a,0xd866,0xdf8b, - 0xd866,0xdf8c,0xd866,0xdf8d,0xd866,0xdf8e,0xd866,0xdf8f,0xd866,0xdf90, - 0xd866,0xdf91,0xd866,0xdf92,0xd866,0xdf93,0xd866,0xdf94,0xd866,0xdf95, - 0xd866,0xdf96,0xd866,0xdf97,0xd866,0xdf98,0xd866,0xdf99,0xd866,0xdf9a, - 0xd866,0xdf9b,0xd866,0xdf9c,0xd866,0xdf9d,0xd866,0xdf9e,0xd866,0xdf9f, - 0xd866,0xdfa0,0xd866,0xdfa1,0xd866,0xdfa2,0xd866,0xdfa3,0xd866,0xdfa4, - 0xd866,0xdfa5,0xd866,0xdfa6,0xd866,0xdfa7,0xd866,0xdfa8,0xd866,0xdfa9, - 0xd866,0xdfaa,0xd866,0xdfab,0xd866,0xdfac,0xd866,0xdfad,0xd866,0xdfae, - 0xd866,0xdfaf,0xd866,0xdfb0,0xd866,0xdfb1,0xd866,0xdfb2,0xd866,0xdfb3, - 0xd866,0xdfb4,0xd866,0xdfb5,0xd866,0xdfb6,0xd866,0xdfb7,0xd866,0xdfb8, - 0xd866,0xdfb9,0xd866,0xdfba,0xd866,0xdfbb,0xd866,0xdfbc,0xd866,0xdfbd, - 0xd866,0xdfbe,0xd866,0xdfbf,0xd866,0xdfc0,0xd866,0xdfc1,0xd866,0xdfc2, - 0xd866,0xdfc3,0xd866,0xdfc4,0xd866,0xdfc5,0xd866,0xdfc6,0xd866,0xdfc7, - 0xd866,0xdfc8,0xd866,0xdfc9,0xd866,0xdfca,0xd866,0xdfcb,0xd866,0xdfcc, - 0xd866,0xdfcd,0xd866,0xdfce,0xd866,0xdfcf,0xd866,0xdfd0,0xd866,0xdfd1, - 0xd866,0xdfd2,0xd866,0xdfd3,0xd866,0xdfd4,0xd866,0xdfd5,0xd866,0xdfd6, - 0xd866,0xdfd7,0xd866,0xdfd8,0xd866,0xdfd9,0xd866,0xdfda,0xd866,0xdfdb, - 0xd866,0xdfdc,0xd866,0xdfdd,0xd866,0xdfde,0xd866,0xdfdf,0xd866,0xdfe0, - 0xd866,0xdfe1,0xd866,0xdfe2,0xd866,0xdfe3,0xd866,0xdfe4,0xd866,0xdfe5, - 0xd866,0xdfe6,0xd866,0xdfe7,0xd866,0xdfe8,0xd866,0xdfe9,0xd866,0xdfea, - 0xd866,0xdfeb,0xd866,0xdfec,0xd866,0xdfed,0xd866,0xdfee,0xd866,0xdfef, - 0xd866,0xdff0,0xd866,0xdff1,0xd866,0xdff2,0xd866,0xdff3,0xd866,0xdff4, - 0xd866,0xdff5,0xd866,0xdff6,0xd866,0xdff7,0xd866,0xdff8,0xd866,0xdff9, - 0xd866,0xdffa,0xd866,0xdffb,0xd866,0xdffc,0xd866,0xdffd,0xd866,0xdffe, - 0xd866,0xdfff,0xd867,0xdc00,0xd867,0xdc01,0xd867,0xdc02,0xd867,0xdc03, - 0xd867,0xdc04,0xd867,0xdc05,0xd867,0xdc06,0xd867,0xdc07,0xd867,0xdc08, - 0xd867,0xdc09,0xd867,0xdc0a,0xd867,0xdc0b,0xd867,0xdc0c,0xd867,0xdc0d, - 0xd867,0xdc0e,0xd867,0xdc0f,0xd867,0xdc10,0xd867,0xdc11,0xd867,0xdc12, - 0xd867,0xdc13,0xd867,0xdc14,0xd867,0xdc15,0xd867,0xdc16,0xd867,0xdc17, - 0xd867,0xdc18,0xd867,0xdc19,0xd867,0xdc1a,0xd867,0xdc1b,0xd867,0xdc1c, - 0xd867,0xdc1d,0xd867,0xdc1e,0xd867,0xdc1f,0xd867,0xdc20,0xd867,0xdc21, - 0xd867,0xdc22,0xd867,0xdc23,0xd867,0xdc24,0xd867,0xdc25,0xd867,0xdc26, - 0xd867,0xdc27,0xd867,0xdc28,0xd867,0xdc29,0xd867,0xdc2a,0xd867,0xdc2b, - 0xd867,0xdc2c,0xd867,0xdc2d,0xd867,0xdc2e,0xd867,0xdc2f,0xd867,0xdc30, - 0xd867,0xdc31,0xd867,0xdc32,0xd867,0xdc33,0xd867,0xdc34,0xd867,0xdc35, - 0xd867,0xdc36,0xd867,0xdc37,0xd867,0xdc38,0xd867,0xdc39,0xd867,0xdc3a, - 0xd867,0xdc3b,0xd867,0xdc3c,0xd867,0xdc3d,0xd867,0xdc3e,0xd867,0xdc3f, - 0xd867,0xdc40,0xd867,0xdc41,0xd867,0xdc42,0xd867,0xdc43,0xd867,0xdc44, - 0xd867,0xdc45,0xd867,0xdc46,0xd867,0xdc47,0xd867,0xdc48,0xd867,0xdc49, - 0xd867,0xdc4a,0xd867,0xdc4b,0xd867,0xdc4c,0xd867,0xdc4d,0xd867,0xdc4e, - 0xd867,0xdc4f,0xd867,0xdc50,0xd867,0xdc51,0xd867,0xdc52,0xd867,0xdc53, - 0xd867,0xdc54,0xd867,0xdc55,0xd867,0xdc56,0xd867,0xdc57,0xd867,0xdc58, - 0xd867,0xdc59,0xd867,0xdc5a,0xd867,0xdc5b,0xd867,0xdc5c,0xd867,0xdc5d, - 0xd867,0xdc5e,0xd867,0xdc5f,0xd867,0xdc60,0xd867,0xdc61,0xd867,0xdc62, - 0xd867,0xdc63,0xd867,0xdc64,0xd867,0xdc65,0xd867,0xdc66,0xd867,0xdc67, - 0xd867,0xdc68,0xd867,0xdc69,0xd867,0xdc6a,0xd867,0xdc6b,0xd867,0xdc6c, - 0xd867,0xdc6d,0xd867,0xdc6e,0xd867,0xdc6f,0xd867,0xdc70,0xd867,0xdc71, - 0xd867,0xdc72,0xd867,0xdc73,0xd867,0xdc74,0xd867,0xdc75,0xd867,0xdc76, - 0xd867,0xdc77,0xd867,0xdc78,0xd867,0xdc79,0xd867,0xdc7a,0xd867,0xdc7b, - 0xd867,0xdc7c,0xd867,0xdc7d,0xd867,0xdc7e,0xd867,0xdc7f,0xd867,0xdc80, - 0xd867,0xdc81,0xd867,0xdc82,0xd867,0xdc83,0xd867,0xdc84,0xd867,0xdc85, - 0xd867,0xdc86,0xd867,0xdc87,0xd867,0xdc88,0xd867,0xdc89,0xd867,0xdc8a, - 0xd867,0xdc8b,0xd867,0xdc8c,0xd867,0xdc8d,0xd867,0xdc8e,0xd867,0xdc8f, - 0xd867,0xdc90,0xd867,0xdc91,0xd867,0xdc92,0xd867,0xdc93,0xd867,0xdc94, - 0xd867,0xdc95,0xd867,0xdc96,0xd867,0xdc97,0xd867,0xdc98,0xd867,0xdc99, - 0xd867,0xdc9a,0xd867,0xdc9b,0xd867,0xdc9c,0xd867,0xdc9d,0xd867,0xdc9e, - 0xd867,0xdc9f,0xd867,0xdca0,0xd867,0xdca1,0xd867,0xdca2,0xd867,0xdca3, - 0xd867,0xdca4,0xd867,0xdca5,0xd867,0xdca6,0xd867,0xdca7,0xd867,0xdca8, - 0xd867,0xdca9,0xd867,0xdcaa,0xd867,0xdcab,0xd867,0xdcac,0xd867,0xdcad, - 0xd867,0xdcae,0xd867,0xdcaf,0xd867,0xdcb0,0xd867,0xdcb1,0xd867,0xdcb2, - 0xd867,0xdcb3,0xd867,0xdcb4,0xd867,0xdcb5,0xd867,0xdcb6,0xd867,0xdcb7, - 0xd867,0xdcb8,0xd867,0xdcb9,0xd867,0xdcba,0xd867,0xdcbb,0xd867,0xdcbc, - 0xd867,0xdcbd,0xd867,0xdcbe,0xd867,0xdcbf,0xd867,0xdcc0,0xd867,0xdcc1, - 0xd867,0xdcc2,0xd867,0xdcc3,0xd867,0xdcc4,0xd867,0xdcc5,0xd867,0xdcc6, - 0xd867,0xdcc7,0xd867,0xdcc8,0xd867,0xdcc9,0xd867,0xdcca,0xd867,0xdccb, - 0xd867,0xdccc,0xd867,0xdccd,0xd867,0xdcce,0xd867,0xdccf,0xd867,0xdcd0, - 0xd867,0xdcd1,0xd867,0xdcd2,0xd867,0xdcd3,0xd867,0xdcd4,0xd867,0xdcd5, - 0xd867,0xdcd6,0xd867,0xdcd7,0xd867,0xdcd8,0xd867,0xdcd9,0xd867,0xdcda, - 0xd867,0xdcdb,0xd867,0xdcdc,0xd867,0xdcdd,0xd867,0xdcde,0xd867,0xdcdf, - 0xd867,0xdce0,0xd867,0xdce1,0xd867,0xdce2,0xd867,0xdce3,0xd867,0xdce4, - 0xd867,0xdce5,0xd867,0xdce6,0xd867,0xdce7,0xd867,0xdce8,0xd867,0xdce9, - 0xd867,0xdcea,0xd867,0xdceb,0xd867,0xdcec,0xd867,0xdced,0xd867,0xdcee, - 0xd867,0xdcef,0xd867,0xdcf0,0xd867,0xdcf1,0xd867,0xdcf2,0xd867,0xdcf3, - 0xd867,0xdcf4,0xd867,0xdcf5,0xd867,0xdcf6,0xd867,0xdcf7,0xd867,0xdcf8, - 0xd867,0xdcf9,0xd867,0xdcfa,0xd867,0xdcfb,0xd867,0xdcfc,0xd867,0xdcfd, - 0xd867,0xdcfe,0xd867,0xdcff,0xd867,0xdd00,0xd867,0xdd01,0xd867,0xdd02, - 0xd867,0xdd03,0xd867,0xdd04,0xd867,0xdd05,0xd867,0xdd06,0xd867,0xdd07, - 0xd867,0xdd08,0xd867,0xdd09,0xd867,0xdd0a,0xd867,0xdd0b,0xd867,0xdd0c, - 0xd867,0xdd0d,0xd867,0xdd0e,0xd867,0xdd0f,0xd867,0xdd10,0xd867,0xdd11, - 0xd867,0xdd12,0xd867,0xdd13,0xd867,0xdd14,0xd867,0xdd15,0xd867,0xdd16, - 0xd867,0xdd17,0xd867,0xdd18,0xd867,0xdd19,0xd867,0xdd1a,0xd867,0xdd1b, - 0xd867,0xdd1c,0xd867,0xdd1d,0xd867,0xdd1e,0xd867,0xdd1f,0xd867,0xdd20, - 0xd867,0xdd21,0xd867,0xdd22,0xd867,0xdd23,0xd867,0xdd24,0xd867,0xdd25, - 0xd867,0xdd26,0xd867,0xdd27,0xd867,0xdd28,0xd867,0xdd29,0xd867,0xdd2a, - 0xd867,0xdd2b,0xd867,0xdd2c,0xd867,0xdd2d,0xd867,0xdd2e,0xd867,0xdd2f, - 0xd867,0xdd30,0xd867,0xdd31,0xd867,0xdd32,0xd867,0xdd33,0xd867,0xdd34, - 0xd867,0xdd35,0xd867,0xdd36,0xd867,0xdd37,0xd867,0xdd38,0xd867,0xdd39, - 0xd867,0xdd3a,0xd867,0xdd3b,0xd867,0xdd3c,0xd867,0xdd3d,0xd867,0xdd3e, - 0xd867,0xdd3f,0xd867,0xdd40,0xd867,0xdd41,0xd867,0xdd42,0xd867,0xdd43, - 0xd867,0xdd44,0xd867,0xdd45,0xd867,0xdd46,0xd867,0xdd47,0xd867,0xdd48, - 0xd867,0xdd49,0xd867,0xdd4a,0xd867,0xdd4b,0xd867,0xdd4c,0xd867,0xdd4d, - 0xd867,0xdd4e,0xd867,0xdd4f,0xd867,0xdd50,0xd867,0xdd51,0xd867,0xdd52, - 0xd867,0xdd53,0xd867,0xdd54,0xd867,0xdd55,0xd867,0xdd56,0xd867,0xdd57, - 0xd867,0xdd58,0xd867,0xdd59,0xd867,0xdd5a,0xd867,0xdd5b,0xd867,0xdd5c, - 0xd867,0xdd5d,0xd867,0xdd5e,0xd867,0xdd5f,0xd867,0xdd60,0xd867,0xdd61, - 0xd867,0xdd62,0xd867,0xdd63,0xd867,0xdd64,0xd867,0xdd65,0xd867,0xdd66, - 0xd867,0xdd67,0xd867,0xdd68,0xd867,0xdd69,0xd867,0xdd6a,0xd867,0xdd6b, - 0xd867,0xdd6c,0xd867,0xdd6d,0xd867,0xdd6e,0xd867,0xdd6f,0xd867,0xdd70, - 0xd867,0xdd71,0xd867,0xdd72,0xd867,0xdd73,0xd867,0xdd74,0xd867,0xdd75, - 0xd867,0xdd76,0xd867,0xdd77,0xd867,0xdd78,0xd867,0xdd79,0xd867,0xdd7a, - 0xd867,0xdd7b,0xd867,0xdd7c,0xd867,0xdd7d,0xd867,0xdd7e,0xd867,0xdd7f, - 0xd867,0xdd80,0xd867,0xdd81,0xd867,0xdd82,0xd867,0xdd83,0xd867,0xdd84, - 0xd867,0xdd85,0xd867,0xdd86,0xd867,0xdd87,0xd867,0xdd88,0xd867,0xdd89, - 0xd867,0xdd8a,0xd867,0xdd8b,0xd867,0xdd8c,0xd867,0xdd8d,0xd867,0xdd8e, - 0xd867,0xdd8f,0xd867,0xdd90,0xd867,0xdd91,0xd867,0xdd92,0xd867,0xdd93, - 0xd867,0xdd94,0xd867,0xdd95,0xd867,0xdd96,0xd867,0xdd97,0xd867,0xdd98, - 0xd867,0xdd99,0xd867,0xdd9a,0xd867,0xdd9b,0xd867,0xdd9c,0xd867,0xdd9d, - 0xd867,0xdd9e,0xd867,0xdd9f,0xd867,0xdda0,0xd867,0xdda1,0xd867,0xdda2, - 0xd867,0xdda3,0xd867,0xdda4,0xd867,0xdda5,0xd867,0xdda6,0xd867,0xdda7, - 0xd867,0xdda8,0xd867,0xdda9,0xd867,0xddaa,0xd867,0xddab,0xd867,0xddac, - 0xd867,0xddad,0xd867,0xddae,0xd867,0xddaf,0xd867,0xddb0,0xd867,0xddb1, - 0xd867,0xddb2,0xd867,0xddb3,0xd867,0xddb4,0xd867,0xddb5,0xd867,0xddb6, - 0xd867,0xddb7,0xd867,0xddb8,0xd867,0xddb9,0xd867,0xddba,0xd867,0xddbb, - 0xd867,0xddbc,0xd867,0xddbd,0xd867,0xddbe,0xd867,0xddbf,0xd867,0xddc0, - 0xd867,0xddc1,0xd867,0xddc2,0xd867,0xddc3,0xd867,0xddc4,0xd867,0xddc5, - 0xd867,0xddc6,0xd867,0xddc7,0xd867,0xddc8,0xd867,0xddc9,0xd867,0xddca, - 0xd867,0xddcb,0xd867,0xddcc,0xd867,0xddcd,0xd867,0xddce,0xd867,0xddcf, - 0xd867,0xddd0,0xd867,0xddd1,0xd867,0xddd2,0xd867,0xddd3,0xd867,0xddd4, - 0xd867,0xddd5,0xd867,0xddd6,0xd867,0xddd7,0xd867,0xddd8,0xd867,0xddd9, - 0xd867,0xddda,0xd867,0xdddb,0xd867,0xdddc,0xd867,0xdddd,0xd867,0xddde, - 0xd867,0xdddf,0xd867,0xdde0,0xd867,0xdde1,0xd867,0xdde2,0xd867,0xdde3, - 0xd867,0xdde4,0xd867,0xdde5,0xd867,0xdde6,0xd867,0xdde7,0xd867,0xdde8, - 0xd867,0xdde9,0xd867,0xddea,0xd867,0xddeb,0xd867,0xddec,0xd867,0xdded, - 0xd867,0xddee,0xd867,0xddef,0xd867,0xddf0,0xd867,0xddf1,0xd867,0xddf2, - 0xd867,0xddf3,0xd867,0xddf4,0xd867,0xddf5,0xd867,0xddf6,0xd867,0xddf7, - 0xd867,0xddf8,0xd867,0xddf9,0xd867,0xddfa,0xd867,0xddfb,0xd867,0xddfc, - 0xd867,0xddfd,0xd867,0xddfe,0xd867,0xddff,0xd867,0xde00,0xd867,0xde01, - 0xd867,0xde02,0xd867,0xde03,0xd867,0xde04,0xd867,0xde05,0xd867,0xde06, - 0xd867,0xde07,0xd867,0xde08,0xd867,0xde09,0xd867,0xde0a,0xd867,0xde0b, - 0xd867,0xde0c,0xd867,0xde0d,0xd867,0xde0e,0xd867,0xde0f,0xd867,0xde10, - 0xd867,0xde11,0xd867,0xde12,0xd867,0xde13,0xd867,0xde14,0xd867,0xde15, - 0xd867,0xde16,0xd867,0xde17,0xd867,0xde18,0xd867,0xde19,0xd867,0xde1a, - 0xd867,0xde1b,0xd867,0xde1c,0xd867,0xde1d,0xd867,0xde1e,0xd867,0xde1f, - 0xd867,0xde20,0xd867,0xde21,0xd867,0xde22,0xd867,0xde23,0xd867,0xde24, - 0xd867,0xde25,0xd867,0xde26,0xd867,0xde27,0xd867,0xde28,0xd867,0xde29, - 0xd867,0xde2a,0xd867,0xde2b,0xd867,0xde2c,0xd867,0xde2d,0xd867,0xde2e, - 0xd867,0xde2f,0xd867,0xde30,0xd867,0xde31,0xd867,0xde32,0xd867,0xde33, - 0xd867,0xde34,0xd867,0xde35,0xd867,0xde36,0xd867,0xde37,0xd867,0xde38, - 0xd867,0xde39,0xd867,0xde3a,0xd867,0xde3b,0xd867,0xde3c,0xd867,0xde3d, - 0xd867,0xde3e,0xd867,0xde3f,0xd867,0xde40,0xd867,0xde41,0xd867,0xde42, - 0xd867,0xde43,0xd867,0xde44,0xd867,0xde45,0xd867,0xde46,0xd867,0xde47, - 0xd867,0xde48,0xd867,0xde49,0xd867,0xde4a,0xd867,0xde4b,0xd867,0xde4c, - 0xd867,0xde4d,0xd867,0xde4e,0xd867,0xde4f,0xd867,0xde50,0xd867,0xde51, - 0xd867,0xde52,0xd867,0xde53,0xd867,0xde54,0xd867,0xde55,0xd867,0xde56, - 0xd867,0xde57,0xd867,0xde58,0xd867,0xde59,0xd867,0xde5a,0xd867,0xde5b, - 0xd867,0xde5c,0xd867,0xde5d,0xd867,0xde5e,0xd867,0xde5f,0xd867,0xde60, - 0xd867,0xde61,0xd867,0xde62,0xd867,0xde63,0xd867,0xde64,0xd867,0xde65, - 0xd867,0xde66,0xd867,0xde67,0xd867,0xde68,0xd867,0xde69,0xd867,0xde6a, - 0xd867,0xde6b,0xd867,0xde6c,0xd867,0xde6d,0xd867,0xde6e,0xd867,0xde6f, - 0xd867,0xde70,0xd867,0xde71,0xd867,0xde72,0xd867,0xde73,0xd867,0xde74, - 0xd867,0xde75,0xd867,0xde76,0xd867,0xde77,0xd867,0xde78,0xd867,0xde79, - 0xd867,0xde7a,0xd867,0xde7b,0xd867,0xde7c,0xd867,0xde7d,0xd867,0xde7e, - 0xd867,0xde7f,0xd867,0xde80,0xd867,0xde81,0xd867,0xde82,0xd867,0xde83, - 0xd867,0xde84,0xd867,0xde85,0xd867,0xde86,0xd867,0xde87,0xd867,0xde88, - 0xd867,0xde89,0xd867,0xde8a,0xd867,0xde8b,0xd867,0xde8c,0xd867,0xde8d, - 0xd867,0xde8e,0xd867,0xde8f,0xd867,0xde90,0xd867,0xde91,0xd867,0xde92, - 0xd867,0xde93,0xd867,0xde94,0xd867,0xde95,0xd867,0xde96,0xd867,0xde97, - 0xd867,0xde98,0xd867,0xde99,0xd867,0xde9a,0xd867,0xde9b,0xd867,0xde9c, - 0xd867,0xde9d,0xd867,0xde9e,0xd867,0xde9f,0xd867,0xdea0,0xd867,0xdea1, - 0xd867,0xdea2,0xd867,0xdea3,0xd867,0xdea4,0xd867,0xdea5,0xd867,0xdea6, - 0xd867,0xdea7,0xd867,0xdea8,0xd867,0xdea9,0xd867,0xdeaa,0xd867,0xdeab, - 0xd867,0xdeac,0xd867,0xdead,0xd867,0xdeae,0xd867,0xdeaf,0xd867,0xdeb0, - 0xd867,0xdeb1,0xd867,0xdeb2,0xd867,0xdeb3,0xd867,0xdeb4,0xd867,0xdeb5, - 0xd867,0xdeb6,0xd867,0xdeb7,0xd867,0xdeb8,0xd867,0xdeb9,0xd867,0xdeba, - 0xd867,0xdebb,0xd867,0xdebc,0xd867,0xdebd,0xd867,0xdebe,0xd867,0xdebf, - 0xd867,0xdec0,0xd867,0xdec1,0xd867,0xdec2,0xd867,0xdec3,0xd867,0xdec4, - 0xd867,0xdec5,0xd867,0xdec6,0xd867,0xdec7,0xd867,0xdec8,0xd867,0xdec9, - 0xd867,0xdeca,0xd867,0xdecb,0xd867,0xdecc,0xd867,0xdecd,0xd867,0xdece, - 0xd867,0xdecf,0xd867,0xded0,0xd867,0xded1,0xd867,0xded2,0xd867,0xded3, - 0xd867,0xded4,0xd867,0xded5,0xd867,0xded6,0xd867,0xded7,0xd867,0xded8, - 0xd867,0xded9,0xd867,0xdeda,0xd867,0xdedb,0xd867,0xdedc,0xd867,0xdedd, - 0xd867,0xdede,0xd867,0xdedf,0xd867,0xdee0,0xd867,0xdee1,0xd867,0xdee2, - 0xd867,0xdee3,0xd867,0xdee4,0xd867,0xdee5,0xd867,0xdee6,0xd867,0xdee7, - 0xd867,0xdee8,0xd867,0xdee9,0xd867,0xdeea,0xd867,0xdeeb,0xd867,0xdeec, - 0xd867,0xdeed,0xd867,0xdeee,0xd867,0xdeef,0xd867,0xdef0,0xd867,0xdef1, - 0xd867,0xdef2,0xd867,0xdef3,0xd867,0xdef4,0xd867,0xdef5,0xd867,0xdef6, - 0xd867,0xdef7,0xd867,0xdef8,0xd867,0xdef9,0xd867,0xdefa,0xd867,0xdefb, - 0xd867,0xdefc,0xd867,0xdefd,0xd867,0xdefe,0xd867,0xdeff,0xd867,0xdf00, - 0xd867,0xdf01,0xd867,0xdf02,0xd867,0xdf03,0xd867,0xdf04,0xd867,0xdf05, - 0xd867,0xdf06,0xd867,0xdf07,0xd867,0xdf08,0xd867,0xdf09,0xd867,0xdf0a, - 0xd867,0xdf0b,0xd867,0xdf0c,0xd867,0xdf0d,0xd867,0xdf0e,0xd867,0xdf0f, - 0xd867,0xdf10,0xd867,0xdf11,0xd867,0xdf12,0xd867,0xdf13,0xd867,0xdf14, - 0xd867,0xdf15,0xd867,0xdf16,0xd867,0xdf17,0xd867,0xdf18,0xd867,0xdf19, - 0xd867,0xdf1a,0xd867,0xdf1b,0xd867,0xdf1c,0xd867,0xdf1d,0xd867,0xdf1e, - 0xd867,0xdf1f,0xd867,0xdf20,0xd867,0xdf21,0xd867,0xdf22,0xd867,0xdf23, - 0xd867,0xdf24,0xd867,0xdf25,0xd867,0xdf26,0xd867,0xdf27,0xd867,0xdf28, - 0xd867,0xdf29,0xd867,0xdf2a,0xd867,0xdf2b,0xd867,0xdf2c,0xd867,0xdf2d, - 0xd867,0xdf2e,0xd867,0xdf2f,0xd867,0xdf30,0xd867,0xdf31,0xd867,0xdf32, - 0xd867,0xdf33,0xd867,0xdf34,0xd867,0xdf35,0xd867,0xdf36,0xd867,0xdf37, - 0xd867,0xdf38,0xd867,0xdf39,0xd867,0xdf3a,0xd867,0xdf3b,0xd867,0xdf3c, - 0xd867,0xdf3d,0xd867,0xdf3e,0xd867,0xdf3f,0xd867,0xdf40,0xd867,0xdf41, - 0xd867,0xdf42,0xd867,0xdf43,0xd867,0xdf44,0xd867,0xdf45,0xd867,0xdf46, - 0xd867,0xdf47,0xd867,0xdf48,0xd867,0xdf49,0xd867,0xdf4a,0xd867,0xdf4b, - 0xd867,0xdf4c,0xd867,0xdf4d,0xd867,0xdf4e,0xd867,0xdf4f,0xd867,0xdf50, - 0xd867,0xdf51,0xd867,0xdf52,0xd867,0xdf53,0xd867,0xdf54,0xd867,0xdf55, - 0xd867,0xdf56,0xd867,0xdf57,0xd867,0xdf58,0xd867,0xdf59,0xd867,0xdf5a, - 0xd867,0xdf5b,0xd867,0xdf5c,0xd867,0xdf5d,0xd867,0xdf5e,0xd867,0xdf5f, - 0xd867,0xdf60,0xd867,0xdf61,0xd867,0xdf62,0xd867,0xdf63,0xd867,0xdf64, - 0xd867,0xdf65,0xd867,0xdf66,0xd867,0xdf67,0xd867,0xdf68,0xd867,0xdf69, - 0xd867,0xdf6a,0xd867,0xdf6b,0xd867,0xdf6c,0xd867,0xdf6d,0xd867,0xdf6e, - 0xd867,0xdf6f,0xd867,0xdf70,0xd867,0xdf71,0xd867,0xdf72,0xd867,0xdf73, - 0xd867,0xdf74,0xd867,0xdf75,0xd867,0xdf76,0xd867,0xdf77,0xd867,0xdf78, - 0xd867,0xdf79,0xd867,0xdf7a,0xd867,0xdf7b,0xd867,0xdf7c,0xd867,0xdf7d, - 0xd867,0xdf7e,0xd867,0xdf7f,0xd867,0xdf80,0xd867,0xdf81,0xd867,0xdf82, - 0xd867,0xdf83,0xd867,0xdf84,0xd867,0xdf85,0xd867,0xdf86,0xd867,0xdf87, - 0xd867,0xdf88,0xd867,0xdf89,0xd867,0xdf8a,0xd867,0xdf8b,0xd867,0xdf8c, - 0xd867,0xdf8d,0xd867,0xdf8e,0xd867,0xdf8f,0xd867,0xdf90,0xd867,0xdf91, - 0xd867,0xdf92,0xd867,0xdf93,0xd867,0xdf94,0xd867,0xdf95,0xd867,0xdf96, - 0xd867,0xdf97,0xd867,0xdf98,0xd867,0xdf99,0xd867,0xdf9a,0xd867,0xdf9b, - 0xd867,0xdf9c,0xd867,0xdf9d,0xd867,0xdf9e,0xd867,0xdf9f,0xd867,0xdfa0, - 0xd867,0xdfa1,0xd867,0xdfa2,0xd867,0xdfa3,0xd867,0xdfa4,0xd867,0xdfa5, - 0xd867,0xdfa6,0xd867,0xdfa7,0xd867,0xdfa8,0xd867,0xdfa9,0xd867,0xdfaa, - 0xd867,0xdfab,0xd867,0xdfac,0xd867,0xdfad,0xd867,0xdfae,0xd867,0xdfaf, - 0xd867,0xdfb0,0xd867,0xdfb1,0xd867,0xdfb2,0xd867,0xdfb3,0xd867,0xdfb4, - 0xd867,0xdfb5,0xd867,0xdfb6,0xd867,0xdfb7,0xd867,0xdfb8,0xd867,0xdfb9, - 0xd867,0xdfba,0xd867,0xdfbb,0xd867,0xdfbc,0xd867,0xdfbd,0xd867,0xdfbe, - 0xd867,0xdfbf,0xd867,0xdfc0,0xd867,0xdfc1,0xd867,0xdfc2,0xd867,0xdfc3, - 0xd867,0xdfc4,0xd867,0xdfc5,0xd867,0xdfc6,0xd867,0xdfc7,0xd867,0xdfc8, - 0xd867,0xdfc9,0xd867,0xdfca,0xd867,0xdfcb,0xd867,0xdfcc,0xd867,0xdfcd, - 0xd867,0xdfce,0xd867,0xdfcf,0xd867,0xdfd0,0xd867,0xdfd1,0xd867,0xdfd2, - 0xd867,0xdfd3,0xd867,0xdfd4,0xd867,0xdfd5,0xd867,0xdfd6,0xd867,0xdfd7, - 0xd867,0xdfd8,0xd867,0xdfd9,0xd867,0xdfda,0xd867,0xdfdb,0xd867,0xdfdc, - 0xd867,0xdfdd,0xd867,0xdfde,0xd867,0xdfdf,0xd867,0xdfe0,0xd867,0xdfe1, - 0xd867,0xdfe2,0xd867,0xdfe3,0xd867,0xdfe4,0xd867,0xdfe5,0xd867,0xdfe6, - 0xd867,0xdfe7,0xd867,0xdfe8,0xd867,0xdfe9,0xd867,0xdfea,0xd867,0xdfeb, - 0xd867,0xdfec,0xd867,0xdfed,0xd867,0xdfee,0xd867,0xdfef,0xd867,0xdff0, - 0xd867,0xdff1,0xd867,0xdff2,0xd867,0xdff3,0xd867,0xdff4,0xd867,0xdff5, - 0xd867,0xdff6,0xd867,0xdff7,0xd867,0xdff8,0xd867,0xdff9,0xd867,0xdffa, - 0xd867,0xdffb,0xd867,0xdffc,0xd867,0xdffd,0xd867,0xdffe,0xd867,0xdfff, - 0xd868,0xdc00,0xd868,0xdc01,0xd868,0xdc02,0xd868,0xdc03,0xd868,0xdc04, - 0xd868,0xdc05,0xd868,0xdc06,0xd868,0xdc07,0xd868,0xdc08,0xd868,0xdc09, - 0xd868,0xdc0a,0xd868,0xdc0b,0xd868,0xdc0c,0xd868,0xdc0d,0xd868,0xdc0e, - 0xd868,0xdc0f,0xd868,0xdc10,0xd868,0xdc11,0xd868,0xdc12,0xd868,0xdc13, - 0xd868,0xdc14,0xd868,0xdc15,0xd868,0xdc16,0xd868,0xdc17,0xd868,0xdc18, - 0xd868,0xdc19,0xd868,0xdc1a,0xd868,0xdc1b,0xd868,0xdc1c,0xd868,0xdc1d, - 0xd868,0xdc1e,0xd868,0xdc1f,0xd868,0xdc20,0xd868,0xdc21,0xd868,0xdc22, - 0xd868,0xdc23,0xd868,0xdc24,0xd868,0xdc25,0xd868,0xdc26,0xd868,0xdc27, - 0xd868,0xdc28,0xd868,0xdc29,0xd868,0xdc2a,0xd868,0xdc2b,0xd868,0xdc2c, - 0xd868,0xdc2d,0xd868,0xdc2e,0xd868,0xdc2f,0xd868,0xdc30,0xd868,0xdc31, - 0xd868,0xdc32,0xd868,0xdc33,0xd868,0xdc34,0xd868,0xdc35,0xd868,0xdc36, - 0xd868,0xdc37,0xd868,0xdc38,0xd868,0xdc39,0xd868,0xdc3a,0xd868,0xdc3b, - 0xd868,0xdc3c,0xd868,0xdc3d,0xd868,0xdc3e,0xd868,0xdc3f,0xd868,0xdc40, - 0xd868,0xdc41,0xd868,0xdc42,0xd868,0xdc43,0xd868,0xdc44,0xd868,0xdc45, - 0xd868,0xdc46,0xd868,0xdc47,0xd868,0xdc48,0xd868,0xdc49,0xd868,0xdc4a, - 0xd868,0xdc4b,0xd868,0xdc4c,0xd868,0xdc4d,0xd868,0xdc4e,0xd868,0xdc4f, - 0xd868,0xdc50,0xd868,0xdc51,0xd868,0xdc52,0xd868,0xdc53,0xd868,0xdc54, - 0xd868,0xdc55,0xd868,0xdc56,0xd868,0xdc57,0xd868,0xdc58,0xd868,0xdc59, - 0xd868,0xdc5a,0xd868,0xdc5b,0xd868,0xdc5c,0xd868,0xdc5d,0xd868,0xdc5e, - 0xd868,0xdc5f,0xd868,0xdc60,0xd868,0xdc61,0xd868,0xdc62,0xd868,0xdc63, - 0xd868,0xdc64,0xd868,0xdc65,0xd868,0xdc66,0xd868,0xdc67,0xd868,0xdc68, - 0xd868,0xdc69,0xd868,0xdc6a,0xd868,0xdc6b,0xd868,0xdc6c,0xd868,0xdc6d, - 0xd868,0xdc6e,0xd868,0xdc6f,0xd868,0xdc70,0xd868,0xdc71,0xd868,0xdc72, - 0xd868,0xdc73,0xd868,0xdc74,0xd868,0xdc75,0xd868,0xdc76,0xd868,0xdc77, - 0xd868,0xdc78,0xd868,0xdc79,0xd868,0xdc7a,0xd868,0xdc7b,0xd868,0xdc7c, - 0xd868,0xdc7d,0xd868,0xdc7e,0xd868,0xdc7f,0xd868,0xdc80,0xd868,0xdc81, - 0xd868,0xdc82,0xd868,0xdc83,0xd868,0xdc84,0xd868,0xdc85,0xd868,0xdc86, - 0xd868,0xdc87,0xd868,0xdc88,0xd868,0xdc89,0xd868,0xdc8a,0xd868,0xdc8b, - 0xd868,0xdc8c,0xd868,0xdc8d,0xd868,0xdc8e,0xd868,0xdc8f,0xd868,0xdc90, - 0xd868,0xdc91,0xd868,0xdc92,0xd868,0xdc93,0xd868,0xdc94,0xd868,0xdc95, - 0xd868,0xdc96,0xd868,0xdc97,0xd868,0xdc98,0xd868,0xdc99,0xd868,0xdc9a, - 0xd868,0xdc9b,0xd868,0xdc9c,0xd868,0xdc9d,0xd868,0xdc9e,0xd868,0xdc9f, - 0xd868,0xdca0,0xd868,0xdca1,0xd868,0xdca2,0xd868,0xdca3,0xd868,0xdca4, - 0xd868,0xdca5,0xd868,0xdca6,0xd868,0xdca7,0xd868,0xdca8,0xd868,0xdca9, - 0xd868,0xdcaa,0xd868,0xdcab,0xd868,0xdcac,0xd868,0xdcad,0xd868,0xdcae, - 0xd868,0xdcaf,0xd868,0xdcb0,0xd868,0xdcb1,0xd868,0xdcb2,0xd868,0xdcb3, - 0xd868,0xdcb4,0xd868,0xdcb5,0xd868,0xdcb6,0xd868,0xdcb7,0xd868,0xdcb8, - 0xd868,0xdcb9,0xd868,0xdcba,0xd868,0xdcbb,0xd868,0xdcbc,0xd868,0xdcbd, - 0xd868,0xdcbe,0xd868,0xdcbf,0xd868,0xdcc0,0xd868,0xdcc1,0xd868,0xdcc2, - 0xd868,0xdcc3,0xd868,0xdcc4,0xd868,0xdcc5,0xd868,0xdcc6,0xd868,0xdcc7, - 0xd868,0xdcc8,0xd868,0xdcc9,0xd868,0xdcca,0xd868,0xdccb,0xd868,0xdccc, - 0xd868,0xdccd,0xd868,0xdcce,0xd868,0xdccf,0xd868,0xdcd0,0xd868,0xdcd1, - 0xd868,0xdcd2,0xd868,0xdcd3,0xd868,0xdcd4,0xd868,0xdcd5,0xd868,0xdcd6, - 0xd868,0xdcd7,0xd868,0xdcd8,0xd868,0xdcd9,0xd868,0xdcda,0xd868,0xdcdb, - 0xd868,0xdcdc,0xd868,0xdcdd,0xd868,0xdcde,0xd868,0xdcdf,0xd868,0xdce0, - 0xd868,0xdce1,0xd868,0xdce2,0xd868,0xdce3,0xd868,0xdce4,0xd868,0xdce5, - 0xd868,0xdce6,0xd868,0xdce7,0xd868,0xdce8,0xd868,0xdce9,0xd868,0xdcea, - 0xd868,0xdceb,0xd868,0xdcec,0xd868,0xdced,0xd868,0xdcee,0xd868,0xdcef, - 0xd868,0xdcf0,0xd868,0xdcf1,0xd868,0xdcf2,0xd868,0xdcf3,0xd868,0xdcf4, - 0xd868,0xdcf5,0xd868,0xdcf6,0xd868,0xdcf7,0xd868,0xdcf8,0xd868,0xdcf9, - 0xd868,0xdcfa,0xd868,0xdcfb,0xd868,0xdcfc,0xd868,0xdcfd,0xd868,0xdcfe, - 0xd868,0xdcff,0xd868,0xdd00,0xd868,0xdd01,0xd868,0xdd02,0xd868,0xdd03, - 0xd868,0xdd04,0xd868,0xdd05,0xd868,0xdd06,0xd868,0xdd07,0xd868,0xdd08, - 0xd868,0xdd09,0xd868,0xdd0a,0xd868,0xdd0b,0xd868,0xdd0c,0xd868,0xdd0d, - 0xd868,0xdd0e,0xd868,0xdd0f,0xd868,0xdd10,0xd868,0xdd11,0xd868,0xdd12, - 0xd868,0xdd13,0xd868,0xdd14,0xd868,0xdd15,0xd868,0xdd16,0xd868,0xdd17, - 0xd868,0xdd18,0xd868,0xdd19,0xd868,0xdd1a,0xd868,0xdd1b,0xd868,0xdd1c, - 0xd868,0xdd1d,0xd868,0xdd1e,0xd868,0xdd1f,0xd868,0xdd20,0xd868,0xdd21, - 0xd868,0xdd22,0xd868,0xdd23,0xd868,0xdd24,0xd868,0xdd25,0xd868,0xdd26, - 0xd868,0xdd27,0xd868,0xdd28,0xd868,0xdd29,0xd868,0xdd2a,0xd868,0xdd2b, - 0xd868,0xdd2c,0xd868,0xdd2d,0xd868,0xdd2e,0xd868,0xdd2f,0xd868,0xdd30, - 0xd868,0xdd31,0xd868,0xdd32,0xd868,0xdd33,0xd868,0xdd34,0xd868,0xdd35, - 0xd868,0xdd36,0xd868,0xdd37,0xd868,0xdd38,0xd868,0xdd39,0xd868,0xdd3a, - 0xd868,0xdd3b,0xd868,0xdd3c,0xd868,0xdd3d,0xd868,0xdd3e,0xd868,0xdd3f, - 0xd868,0xdd40,0xd868,0xdd41,0xd868,0xdd42,0xd868,0xdd43,0xd868,0xdd44, - 0xd868,0xdd45,0xd868,0xdd46,0xd868,0xdd47,0xd868,0xdd48,0xd868,0xdd49, - 0xd868,0xdd4a,0xd868,0xdd4b,0xd868,0xdd4c,0xd868,0xdd4d,0xd868,0xdd4e, - 0xd868,0xdd4f,0xd868,0xdd50,0xd868,0xdd51,0xd868,0xdd52,0xd868,0xdd53, - 0xd868,0xdd54,0xd868,0xdd55,0xd868,0xdd56,0xd868,0xdd57,0xd868,0xdd58, - 0xd868,0xdd59,0xd868,0xdd5a,0xd868,0xdd5b,0xd868,0xdd5c,0xd868,0xdd5d, - 0xd868,0xdd5e,0xd868,0xdd5f,0xd868,0xdd60,0xd868,0xdd61,0xd868,0xdd62, - 0xd868,0xdd63,0xd868,0xdd64,0xd868,0xdd65,0xd868,0xdd66,0xd868,0xdd67, - 0xd868,0xdd68,0xd868,0xdd69,0xd868,0xdd6a,0xd868,0xdd6b,0xd868,0xdd6c, - 0xd868,0xdd6d,0xd868,0xdd6e,0xd868,0xdd6f,0xd868,0xdd70,0xd868,0xdd71, - 0xd868,0xdd72,0xd868,0xdd73,0xd868,0xdd74,0xd868,0xdd75,0xd868,0xdd76, - 0xd868,0xdd77,0xd868,0xdd78,0xd868,0xdd79,0xd868,0xdd7a,0xd868,0xdd7b, - 0xd868,0xdd7c,0xd868,0xdd7d,0xd868,0xdd7e,0xd868,0xdd7f,0xd868,0xdd80, - 0xd868,0xdd81,0xd868,0xdd82,0xd868,0xdd83,0xd868,0xdd84,0xd868,0xdd85, - 0xd868,0xdd86,0xd868,0xdd87,0xd868,0xdd88,0xd868,0xdd89,0xd868,0xdd8a, - 0xd868,0xdd8b,0xd868,0xdd8c,0xd868,0xdd8d,0xd868,0xdd8e,0xd868,0xdd8f, - 0xd868,0xdd90,0xd868,0xdd91,0xd868,0xdd92,0xd868,0xdd93,0xd868,0xdd94, - 0xd868,0xdd95,0xd868,0xdd96,0xd868,0xdd97,0xd868,0xdd98,0xd868,0xdd99, - 0xd868,0xdd9a,0xd868,0xdd9b,0xd868,0xdd9c,0xd868,0xdd9d,0xd868,0xdd9e, - 0xd868,0xdd9f,0xd868,0xdda0,0xd868,0xdda1,0xd868,0xdda2,0xd868,0xdda3, - 0xd868,0xdda4,0xd868,0xdda5,0xd868,0xdda6,0xd868,0xdda7,0xd868,0xdda8, - 0xd868,0xdda9,0xd868,0xddaa,0xd868,0xddab,0xd868,0xddac,0xd868,0xddad, - 0xd868,0xddae,0xd868,0xddaf,0xd868,0xddb0,0xd868,0xddb1,0xd868,0xddb2, - 0xd868,0xddb3,0xd868,0xddb4,0xd868,0xddb5,0xd868,0xddb6,0xd868,0xddb7, - 0xd868,0xddb8,0xd868,0xddb9,0xd868,0xddba,0xd868,0xddbb,0xd868,0xddbc, - 0xd868,0xddbd,0xd868,0xddbe,0xd868,0xddbf,0xd868,0xddc0,0xd868,0xddc1, - 0xd868,0xddc2,0xd868,0xddc3,0xd868,0xddc4,0xd868,0xddc5,0xd868,0xddc6, - 0xd868,0xddc7,0xd868,0xddc8,0xd868,0xddc9,0xd868,0xddca,0xd868,0xddcb, - 0xd868,0xddcc,0xd868,0xddcd,0xd868,0xddce,0xd868,0xddcf,0xd868,0xddd0, - 0xd868,0xddd1,0xd868,0xddd2,0xd868,0xddd3,0xd868,0xddd4,0xd868,0xddd5, - 0xd868,0xddd6,0xd868,0xddd7,0xd868,0xddd8,0xd868,0xddd9,0xd868,0xddda, - 0xd868,0xdddb,0xd868,0xdddc,0xd868,0xdddd,0xd868,0xddde,0xd868,0xdddf, - 0xd868,0xdde0,0xd868,0xdde1,0xd868,0xdde2,0xd868,0xdde3,0xd868,0xdde4, - 0xd868,0xdde5,0xd868,0xdde6,0xd868,0xdde7,0xd868,0xdde8,0xd868,0xdde9, - 0xd868,0xddea,0xd868,0xddeb,0xd868,0xddec,0xd868,0xdded,0xd868,0xddee, - 0xd868,0xddef,0xd868,0xddf0,0xd868,0xddf1,0xd868,0xddf2,0xd868,0xddf3, - 0xd868,0xddf4,0xd868,0xddf5,0xd868,0xddf6,0xd868,0xddf7,0xd868,0xddf8, - 0xd868,0xddf9,0xd868,0xddfa,0xd868,0xddfb,0xd868,0xddfc,0xd868,0xddfd, - 0xd868,0xddfe,0xd868,0xddff,0xd868,0xde00,0xd868,0xde01,0xd868,0xde02, - 0xd868,0xde03,0xd868,0xde04,0xd868,0xde05,0xd868,0xde06,0xd868,0xde07, - 0xd868,0xde08,0xd868,0xde09,0xd868,0xde0a,0xd868,0xde0b,0xd868,0xde0c, - 0xd868,0xde0d,0xd868,0xde0e,0xd868,0xde0f,0xd868,0xde10,0xd868,0xde11, - 0xd868,0xde12,0xd868,0xde13,0xd868,0xde14,0xd868,0xde15,0xd868,0xde16, - 0xd868,0xde17,0xd868,0xde18,0xd868,0xde19,0xd868,0xde1a,0xd868,0xde1b, - 0xd868,0xde1c,0xd868,0xde1d,0xd868,0xde1e,0xd868,0xde1f,0xd868,0xde20, - 0xd868,0xde21,0xd868,0xde22,0xd868,0xde23,0xd868,0xde24,0xd868,0xde25, - 0xd868,0xde26,0xd868,0xde27,0xd868,0xde28,0xd868,0xde29,0xd868,0xde2a, - 0xd868,0xde2b,0xd868,0xde2c,0xd868,0xde2d,0xd868,0xde2e,0xd868,0xde2f, - 0xd868,0xde30,0xd868,0xde31,0xd868,0xde32,0xd868,0xde33,0xd868,0xde34, - 0xd868,0xde35,0xd868,0xde36,0xd868,0xde37,0xd868,0xde38,0xd868,0xde39, - 0xd868,0xde3a,0xd868,0xde3b,0xd868,0xde3c,0xd868,0xde3d,0xd868,0xde3e, - 0xd868,0xde3f,0xd868,0xde40,0xd868,0xde41,0xd868,0xde42,0xd868,0xde43, - 0xd868,0xde44,0xd868,0xde45,0xd868,0xde46,0xd868,0xde47,0xd868,0xde48, - 0xd868,0xde49,0xd868,0xde4a,0xd868,0xde4b,0xd868,0xde4c,0xd868,0xde4d, - 0xd868,0xde4e,0xd868,0xde4f,0xd868,0xde50,0xd868,0xde51,0xd868,0xde52, - 0xd868,0xde53,0xd868,0xde54,0xd868,0xde55,0xd868,0xde56,0xd868,0xde57, - 0xd868,0xde58,0xd868,0xde59,0xd868,0xde5a,0xd868,0xde5b,0xd868,0xde5c, - 0xd868,0xde5d,0xd868,0xde5e,0xd868,0xde5f,0xd868,0xde60,0xd868,0xde61, - 0xd868,0xde62,0xd868,0xde63,0xd868,0xde64,0xd868,0xde65,0xd868,0xde66, - 0xd868,0xde67,0xd868,0xde68,0xd868,0xde69,0xd868,0xde6a,0xd868,0xde6b, - 0xd868,0xde6c,0xd868,0xde6d,0xd868,0xde6e,0xd868,0xde6f,0xd868,0xde70, - 0xd868,0xde71,0xd868,0xde72,0xd868,0xde73,0xd868,0xde74,0xd868,0xde75, - 0xd868,0xde76,0xd868,0xde77,0xd868,0xde78,0xd868,0xde79,0xd868,0xde7a, - 0xd868,0xde7b,0xd868,0xde7c,0xd868,0xde7d,0xd868,0xde7e,0xd868,0xde7f, - 0xd868,0xde80,0xd868,0xde81,0xd868,0xde82,0xd868,0xde83,0xd868,0xde84, - 0xd868,0xde85,0xd868,0xde86,0xd868,0xde87,0xd868,0xde88,0xd868,0xde89, - 0xd868,0xde8a,0xd868,0xde8b,0xd868,0xde8c,0xd868,0xde8d,0xd868,0xde8e, - 0xd868,0xde8f,0xd868,0xde90,0xd868,0xde91,0xd868,0xde92,0xd868,0xde93, - 0xd868,0xde94,0xd868,0xde95,0xd868,0xde96,0xd868,0xde97,0xd868,0xde98, - 0xd868,0xde99,0xd868,0xde9a,0xd868,0xde9b,0xd868,0xde9c,0xd868,0xde9d, - 0xd868,0xde9e,0xd868,0xde9f,0xd868,0xdea0,0xd868,0xdea1,0xd868,0xdea2, - 0xd868,0xdea3,0xd868,0xdea4,0xd868,0xdea5,0xd868,0xdea6,0xd868,0xdea7, - 0xd868,0xdea8,0xd868,0xdea9,0xd868,0xdeaa,0xd868,0xdeab,0xd868,0xdeac, - 0xd868,0xdead,0xd868,0xdeae,0xd868,0xdeaf,0xd868,0xdeb0,0xd868,0xdeb1, - 0xd868,0xdeb2,0xd868,0xdeb3,0xd868,0xdeb4,0xd868,0xdeb5,0xd868,0xdeb6, - 0xd868,0xdeb7,0xd868,0xdeb8,0xd868,0xdeb9,0xd868,0xdeba,0xd868,0xdebb, - 0xd868,0xdebc,0xd868,0xdebd,0xd868,0xdebe,0xd868,0xdebf,0xd868,0xdec0, - 0xd868,0xdec1,0xd868,0xdec2,0xd868,0xdec3,0xd868,0xdec4,0xd868,0xdec5, - 0xd868,0xdec6,0xd868,0xdec7,0xd868,0xdec8,0xd868,0xdec9,0xd868,0xdeca, - 0xd868,0xdecb,0xd868,0xdecc,0xd868,0xdecd,0xd868,0xdece,0xd868,0xdecf, - 0xd868,0xded0,0xd868,0xded1,0xd868,0xded2,0xd868,0xded3,0xd868,0xded4, - 0xd868,0xded5,0xd868,0xded6,0xd868,0xded7,0xd868,0xded8,0xd868,0xded9, - 0xd868,0xdeda,0xd868,0xdedb,0xd868,0xdedc,0xd868,0xdedd,0xd868,0xdede, - 0xd868,0xdedf,0xd868,0xdee0,0xd868,0xdee1,0xd868,0xdee2,0xd868,0xdee3, - 0xd868,0xdee4,0xd868,0xdee5,0xd868,0xdee6,0xd868,0xdee7,0xd868,0xdee8, - 0xd868,0xdee9,0xd868,0xdeea,0xd868,0xdeeb,0xd868,0xdeec,0xd868,0xdeed, - 0xd868,0xdeee,0xd868,0xdeef,0xd868,0xdef0,0xd868,0xdef1,0xd868,0xdef2, - 0xd868,0xdef3,0xd868,0xdef4,0xd868,0xdef5,0xd868,0xdef6,0xd868,0xdef7, - 0xd868,0xdef8,0xd868,0xdef9,0xd868,0xdefa,0xd868,0xdefb,0xd868,0xdefc, - 0xd868,0xdefd,0xd868,0xdefe,0xd868,0xdeff,0xd868,0xdf00,0xd868,0xdf01, - 0xd868,0xdf02,0xd868,0xdf03,0xd868,0xdf04,0xd868,0xdf05,0xd868,0xdf06, - 0xd868,0xdf07,0xd868,0xdf08,0xd868,0xdf09,0xd868,0xdf0a,0xd868,0xdf0b, - 0xd868,0xdf0c,0xd868,0xdf0d,0xd868,0xdf0e,0xd868,0xdf0f,0xd868,0xdf10, - 0xd868,0xdf11,0xd868,0xdf12,0xd868,0xdf13,0xd868,0xdf14,0xd868,0xdf15, - 0xd868,0xdf16,0xd868,0xdf17,0xd868,0xdf18,0xd868,0xdf19,0xd868,0xdf1a, - 0xd868,0xdf1b,0xd868,0xdf1c,0xd868,0xdf1d,0xd868,0xdf1e,0xd868,0xdf1f, - 0xd868,0xdf20,0xd868,0xdf21,0xd868,0xdf22,0xd868,0xdf23,0xd868,0xdf24, - 0xd868,0xdf25,0xd868,0xdf26,0xd868,0xdf27,0xd868,0xdf28,0xd868,0xdf29, - 0xd868,0xdf2a,0xd868,0xdf2b,0xd868,0xdf2c,0xd868,0xdf2d,0xd868,0xdf2e, - 0xd868,0xdf2f,0xd868,0xdf30,0xd868,0xdf31,0xd868,0xdf32,0xd868,0xdf33, - 0xd868,0xdf34,0xd868,0xdf35,0xd868,0xdf36,0xd868,0xdf37,0xd868,0xdf38, - 0xd868,0xdf39,0xd868,0xdf3a,0xd868,0xdf3b,0xd868,0xdf3c,0xd868,0xdf3d, - 0xd868,0xdf3e,0xd868,0xdf3f,0xd868,0xdf40,0xd868,0xdf41,0xd868,0xdf42, - 0xd868,0xdf43,0xd868,0xdf44,0xd868,0xdf45,0xd868,0xdf46,0xd868,0xdf47, - 0xd868,0xdf48,0xd868,0xdf49,0xd868,0xdf4a,0xd868,0xdf4b,0xd868,0xdf4c, - 0xd868,0xdf4d,0xd868,0xdf4e,0xd868,0xdf4f,0xd868,0xdf50,0xd868,0xdf51, - 0xd868,0xdf52,0xd868,0xdf53,0xd868,0xdf54,0xd868,0xdf55,0xd868,0xdf56, - 0xd868,0xdf57,0xd868,0xdf58,0xd868,0xdf59,0xd868,0xdf5a,0xd868,0xdf5b, - 0xd868,0xdf5c,0xd868,0xdf5d,0xd868,0xdf5e,0xd868,0xdf5f,0xd868,0xdf60, - 0xd868,0xdf61,0xd868,0xdf62,0xd868,0xdf63,0xd868,0xdf64,0xd868,0xdf65, - 0xd868,0xdf66,0xd868,0xdf67,0xd868,0xdf68,0xd868,0xdf69,0xd868,0xdf6a, - 0xd868,0xdf6b,0xd868,0xdf6c,0xd868,0xdf6d,0xd868,0xdf6e,0xd868,0xdf6f, - 0xd868,0xdf70,0xd868,0xdf71,0xd868,0xdf72,0xd868,0xdf73,0xd868,0xdf74, - 0xd868,0xdf75,0xd868,0xdf76,0xd868,0xdf77,0xd868,0xdf78,0xd868,0xdf79, - 0xd868,0xdf7a,0xd868,0xdf7b,0xd868,0xdf7c,0xd868,0xdf7d,0xd868,0xdf7e, - 0xd868,0xdf7f,0xd868,0xdf80,0xd868,0xdf81,0xd868,0xdf82,0xd868,0xdf83, - 0xd868,0xdf84,0xd868,0xdf85,0xd868,0xdf86,0xd868,0xdf87,0xd868,0xdf88, - 0xd868,0xdf89,0xd868,0xdf8a,0xd868,0xdf8b,0xd868,0xdf8c,0xd868,0xdf8d, - 0xd868,0xdf8e,0xd868,0xdf8f,0xd868,0xdf90,0xd868,0xdf91,0xd868,0xdf92, - 0xd868,0xdf93,0xd868,0xdf94,0xd868,0xdf95,0xd868,0xdf96,0xd868,0xdf97, - 0xd868,0xdf98,0xd868,0xdf99,0xd868,0xdf9a,0xd868,0xdf9b,0xd868,0xdf9c, - 0xd868,0xdf9d,0xd868,0xdf9e,0xd868,0xdf9f,0xd868,0xdfa0,0xd868,0xdfa1, - 0xd868,0xdfa2,0xd868,0xdfa3,0xd868,0xdfa4,0xd868,0xdfa5,0xd868,0xdfa6, - 0xd868,0xdfa7,0xd868,0xdfa8,0xd868,0xdfa9,0xd868,0xdfaa,0xd868,0xdfab, - 0xd868,0xdfac,0xd868,0xdfad,0xd868,0xdfae,0xd868,0xdfaf,0xd868,0xdfb0, - 0xd868,0xdfb1,0xd868,0xdfb2,0xd868,0xdfb3,0xd868,0xdfb4,0xd868,0xdfb5, - 0xd868,0xdfb6,0xd868,0xdfb7,0xd868,0xdfb8,0xd868,0xdfb9,0xd868,0xdfba, - 0xd868,0xdfbb,0xd868,0xdfbc,0xd868,0xdfbd,0xd868,0xdfbe,0xd868,0xdfbf, - 0xd868,0xdfc0,0xd868,0xdfc1,0xd868,0xdfc2,0xd868,0xdfc3,0xd868,0xdfc4, - 0xd868,0xdfc5,0xd868,0xdfc6,0xd868,0xdfc7,0xd868,0xdfc8,0xd868,0xdfc9, - 0xd868,0xdfca,0xd868,0xdfcb,0xd868,0xdfcc,0xd868,0xdfcd,0xd868,0xdfce, - 0xd868,0xdfcf,0xd868,0xdfd0,0xd868,0xdfd1,0xd868,0xdfd2,0xd868,0xdfd3, - 0xd868,0xdfd4,0xd868,0xdfd5,0xd868,0xdfd6,0xd868,0xdfd7,0xd868,0xdfd8, - 0xd868,0xdfd9,0xd868,0xdfda,0xd868,0xdfdb,0xd868,0xdfdc,0xd868,0xdfdd, - 0xd868,0xdfde,0xd868,0xdfdf,0xd868,0xdfe0,0xd868,0xdfe1,0xd868,0xdfe2, - 0xd868,0xdfe3,0xd868,0xdfe4,0xd868,0xdfe5,0xd868,0xdfe6,0xd868,0xdfe7, - 0xd868,0xdfe8,0xd868,0xdfe9,0xd868,0xdfea,0xd868,0xdfeb,0xd868,0xdfec, - 0xd868,0xdfed,0xd868,0xdfee,0xd868,0xdfef,0xd868,0xdff0,0xd868,0xdff1, - 0xd868,0xdff2,0xd868,0xdff3,0xd868,0xdff4,0xd868,0xdff5,0xd868,0xdff6, - 0xd868,0xdff7,0xd868,0xdff8,0xd868,0xdff9,0xd868,0xdffa,0xd868,0xdffb, - 0xd868,0xdffc,0xd868,0xdffd,0xd868,0xdffe,0xd868,0xdfff,0xd869,0xdc00, - 0xd869,0xdc01,0xd869,0xdc02,0xd869,0xdc03,0xd869,0xdc04,0xd869,0xdc05, - 0xd869,0xdc06,0xd869,0xdc07,0xd869,0xdc08,0xd869,0xdc09,0xd869,0xdc0a, - 0xd869,0xdc0b,0xd869,0xdc0c,0xd869,0xdc0d,0xd869,0xdc0e,0xd869,0xdc0f, - 0xd869,0xdc10,0xd869,0xdc11,0xd869,0xdc12,0xd869,0xdc13,0xd869,0xdc14, - 0xd869,0xdc15,0xd869,0xdc16,0xd869,0xdc17,0xd869,0xdc18,0xd869,0xdc19, - 0xd869,0xdc1a,0xd869,0xdc1b,0xd869,0xdc1c,0xd869,0xdc1d,0xd869,0xdc1e, - 0xd869,0xdc1f,0xd869,0xdc20,0xd869,0xdc21,0xd869,0xdc22,0xd869,0xdc23, - 0xd869,0xdc24,0xd869,0xdc25,0xd869,0xdc26,0xd869,0xdc27,0xd869,0xdc28, - 0xd869,0xdc29,0xd869,0xdc2a,0xd869,0xdc2b,0xd869,0xdc2c,0xd869,0xdc2d, - 0xd869,0xdc2e,0xd869,0xdc2f,0xd869,0xdc30,0xd869,0xdc31,0xd869,0xdc32, - 0xd869,0xdc33,0xd869,0xdc34,0xd869,0xdc35,0xd869,0xdc36,0xd869,0xdc37, - 0xd869,0xdc38,0xd869,0xdc39,0xd869,0xdc3a,0xd869,0xdc3b,0xd869,0xdc3c, - 0xd869,0xdc3d,0xd869,0xdc3e,0xd869,0xdc3f,0xd869,0xdc40,0xd869,0xdc41, - 0xd869,0xdc42,0xd869,0xdc43,0xd869,0xdc44,0xd869,0xdc45,0xd869,0xdc46, - 0xd869,0xdc47,0xd869,0xdc48,0xd869,0xdc49,0xd869,0xdc4a,0xd869,0xdc4b, - 0xd869,0xdc4c,0xd869,0xdc4d,0xd869,0xdc4e,0xd869,0xdc4f,0xd869,0xdc50, - 0xd869,0xdc51,0xd869,0xdc52,0xd869,0xdc53,0xd869,0xdc54,0xd869,0xdc55, - 0xd869,0xdc56,0xd869,0xdc57,0xd869,0xdc58,0xd869,0xdc59,0xd869,0xdc5a, - 0xd869,0xdc5b,0xd869,0xdc5c,0xd869,0xdc5d,0xd869,0xdc5e,0xd869,0xdc5f, - 0xd869,0xdc60,0xd869,0xdc61,0xd869,0xdc62,0xd869,0xdc63,0xd869,0xdc64, - 0xd869,0xdc65,0xd869,0xdc66,0xd869,0xdc67,0xd869,0xdc68,0xd869,0xdc69, - 0xd869,0xdc6a,0xd869,0xdc6b,0xd869,0xdc6c,0xd869,0xdc6d,0xd869,0xdc6e, - 0xd869,0xdc6f,0xd869,0xdc70,0xd869,0xdc71,0xd869,0xdc72,0xd869,0xdc73, - 0xd869,0xdc74,0xd869,0xdc75,0xd869,0xdc76,0xd869,0xdc77,0xd869,0xdc78, - 0xd869,0xdc79,0xd869,0xdc7a,0xd869,0xdc7b,0xd869,0xdc7c,0xd869,0xdc7d, - 0xd869,0xdc7e,0xd869,0xdc7f,0xd869,0xdc80,0xd869,0xdc81,0xd869,0xdc82, - 0xd869,0xdc83,0xd869,0xdc84,0xd869,0xdc85,0xd869,0xdc86,0xd869,0xdc87, - 0xd869,0xdc88,0xd869,0xdc89,0xd869,0xdc8a,0xd869,0xdc8b,0xd869,0xdc8c, - 0xd869,0xdc8d,0xd869,0xdc8e,0xd869,0xdc8f,0xd869,0xdc90,0xd869,0xdc91, - 0xd869,0xdc92,0xd869,0xdc93,0xd869,0xdc94,0xd869,0xdc95,0xd869,0xdc96, - 0xd869,0xdc97,0xd869,0xdc98,0xd869,0xdc99,0xd869,0xdc9a,0xd869,0xdc9b, - 0xd869,0xdc9c,0xd869,0xdc9d,0xd869,0xdc9e,0xd869,0xdc9f,0xd869,0xdca0, - 0xd869,0xdca1,0xd869,0xdca2,0xd869,0xdca3,0xd869,0xdca4,0xd869,0xdca5, - 0xd869,0xdca6,0xd869,0xdca7,0xd869,0xdca8,0xd869,0xdca9,0xd869,0xdcaa, - 0xd869,0xdcab,0xd869,0xdcac,0xd869,0xdcad,0xd869,0xdcae,0xd869,0xdcaf, - 0xd869,0xdcb0,0xd869,0xdcb1,0xd869,0xdcb2,0xd869,0xdcb3,0xd869,0xdcb4, - 0xd869,0xdcb5,0xd869,0xdcb6,0xd869,0xdcb7,0xd869,0xdcb8,0xd869,0xdcb9, - 0xd869,0xdcba,0xd869,0xdcbb,0xd869,0xdcbc,0xd869,0xdcbd,0xd869,0xdcbe, - 0xd869,0xdcbf,0xd869,0xdcc0,0xd869,0xdcc1,0xd869,0xdcc2,0xd869,0xdcc3, - 0xd869,0xdcc4,0xd869,0xdcc5,0xd869,0xdcc6,0xd869,0xdcc7,0xd869,0xdcc8, - 0xd869,0xdcc9,0xd869,0xdcca,0xd869,0xdccb,0xd869,0xdccc,0xd869,0xdccd, - 0xd869,0xdcce,0xd869,0xdccf,0xd869,0xdcd0,0xd869,0xdcd1,0xd869,0xdcd2, - 0xd869,0xdcd3,0xd869,0xdcd4,0xd869,0xdcd5,0xd869,0xdcd6,0xd869,0xdcd7, - 0xd869,0xdcd8,0xd869,0xdcd9,0xd869,0xdcda,0xd869,0xdcdb,0xd869,0xdcdc, - 0xd869,0xdcdd,0xd869,0xdcde,0xd869,0xdcdf,0xd869,0xdce0,0xd869,0xdce1, - 0xd869,0xdce2,0xd869,0xdce3,0xd869,0xdce4,0xd869,0xdce5,0xd869,0xdce6, - 0xd869,0xdce7,0xd869,0xdce8,0xd869,0xdce9,0xd869,0xdcea,0xd869,0xdceb, - 0xd869,0xdcec,0xd869,0xdced,0xd869,0xdcee,0xd869,0xdcef,0xd869,0xdcf0, - 0xd869,0xdcf1,0xd869,0xdcf2,0xd869,0xdcf3,0xd869,0xdcf4,0xd869,0xdcf5, - 0xd869,0xdcf6,0xd869,0xdcf7,0xd869,0xdcf8,0xd869,0xdcf9,0xd869,0xdcfa, - 0xd869,0xdcfb,0xd869,0xdcfc,0xd869,0xdcfd,0xd869,0xdcfe,0xd869,0xdcff, - 0xd869,0xdd00,0xd869,0xdd01,0xd869,0xdd02,0xd869,0xdd03,0xd869,0xdd04, - 0xd869,0xdd05,0xd869,0xdd06,0xd869,0xdd07,0xd869,0xdd08,0xd869,0xdd09, - 0xd869,0xdd0a,0xd869,0xdd0b,0xd869,0xdd0c,0xd869,0xdd0d,0xd869,0xdd0e, - 0xd869,0xdd0f,0xd869,0xdd10,0xd869,0xdd11,0xd869,0xdd12,0xd869,0xdd13, - 0xd869,0xdd14,0xd869,0xdd15,0xd869,0xdd16,0xd869,0xdd17,0xd869,0xdd18, - 0xd869,0xdd19,0xd869,0xdd1a,0xd869,0xdd1b,0xd869,0xdd1c,0xd869,0xdd1d, - 0xd869,0xdd1e,0xd869,0xdd1f,0xd869,0xdd20,0xd869,0xdd21,0xd869,0xdd22, - 0xd869,0xdd23,0xd869,0xdd24,0xd869,0xdd25,0xd869,0xdd26,0xd869,0xdd27, - 0xd869,0xdd28,0xd869,0xdd29,0xd869,0xdd2a,0xd869,0xdd2b,0xd869,0xdd2c, - 0xd869,0xdd2d,0xd869,0xdd2e,0xd869,0xdd2f,0xd869,0xdd30,0xd869,0xdd31, - 0xd869,0xdd32,0xd869,0xdd33,0xd869,0xdd34,0xd869,0xdd35,0xd869,0xdd36, - 0xd869,0xdd37,0xd869,0xdd38,0xd869,0xdd39,0xd869,0xdd3a,0xd869,0xdd3b, - 0xd869,0xdd3c,0xd869,0xdd3d,0xd869,0xdd3e,0xd869,0xdd3f,0xd869,0xdd40, - 0xd869,0xdd41,0xd869,0xdd42,0xd869,0xdd43,0xd869,0xdd44,0xd869,0xdd45, - 0xd869,0xdd46,0xd869,0xdd47,0xd869,0xdd48,0xd869,0xdd49,0xd869,0xdd4a, - 0xd869,0xdd4b,0xd869,0xdd4c,0xd869,0xdd4d,0xd869,0xdd4e,0xd869,0xdd4f, - 0xd869,0xdd50,0xd869,0xdd51,0xd869,0xdd52,0xd869,0xdd53,0xd869,0xdd54, - 0xd869,0xdd55,0xd869,0xdd56,0xd869,0xdd57,0xd869,0xdd58,0xd869,0xdd59, - 0xd869,0xdd5a,0xd869,0xdd5b,0xd869,0xdd5c,0xd869,0xdd5d,0xd869,0xdd5e, - 0xd869,0xdd5f,0xd869,0xdd60,0xd869,0xdd61,0xd869,0xdd62,0xd869,0xdd63, - 0xd869,0xdd64,0xd869,0xdd65,0xd869,0xdd66,0xd869,0xdd67,0xd869,0xdd68, - 0xd869,0xdd69,0xd869,0xdd6a,0xd869,0xdd6b,0xd869,0xdd6c,0xd869,0xdd6d, - 0xd869,0xdd6e,0xd869,0xdd6f,0xd869,0xdd70,0xd869,0xdd71,0xd869,0xdd72, - 0xd869,0xdd73,0xd869,0xdd74,0xd869,0xdd75,0xd869,0xdd76,0xd869,0xdd77, - 0xd869,0xdd78,0xd869,0xdd79,0xd869,0xdd7a,0xd869,0xdd7b,0xd869,0xdd7c, - 0xd869,0xdd7d,0xd869,0xdd7e,0xd869,0xdd7f,0xd869,0xdd80,0xd869,0xdd81, - 0xd869,0xdd82,0xd869,0xdd83,0xd869,0xdd84,0xd869,0xdd85,0xd869,0xdd86, - 0xd869,0xdd87,0xd869,0xdd88,0xd869,0xdd89,0xd869,0xdd8a,0xd869,0xdd8b, - 0xd869,0xdd8c,0xd869,0xdd8d,0xd869,0xdd8e,0xd869,0xdd8f,0xd869,0xdd90, - 0xd869,0xdd91,0xd869,0xdd92,0xd869,0xdd93,0xd869,0xdd94,0xd869,0xdd95, - 0xd869,0xdd96,0xd869,0xdd97,0xd869,0xdd98,0xd869,0xdd99,0xd869,0xdd9a, - 0xd869,0xdd9b,0xd869,0xdd9c,0xd869,0xdd9d,0xd869,0xdd9e,0xd869,0xdd9f, - 0xd869,0xdda0,0xd869,0xdda1,0xd869,0xdda2,0xd869,0xdda3,0xd869,0xdda4, - 0xd869,0xdda5,0xd869,0xdda6,0xd869,0xdda7,0xd869,0xdda8,0xd869,0xdda9, - 0xd869,0xddaa,0xd869,0xddab,0xd869,0xddac,0xd869,0xddad,0xd869,0xddae, - 0xd869,0xddaf,0xd869,0xddb0,0xd869,0xddb1,0xd869,0xddb2,0xd869,0xddb3, - 0xd869,0xddb4,0xd869,0xddb5,0xd869,0xddb6,0xd869,0xddb7,0xd869,0xddb8, - 0xd869,0xddb9,0xd869,0xddba,0xd869,0xddbb,0xd869,0xddbc,0xd869,0xddbd, - 0xd869,0xddbe,0xd869,0xddbf,0xd869,0xddc0,0xd869,0xddc1,0xd869,0xddc2, - 0xd869,0xddc3,0xd869,0xddc4,0xd869,0xddc5,0xd869,0xddc6,0xd869,0xddc7, - 0xd869,0xddc8,0xd869,0xddc9,0xd869,0xddca,0xd869,0xddcb,0xd869,0xddcc, - 0xd869,0xddcd,0xd869,0xddce,0xd869,0xddcf,0xd869,0xddd0,0xd869,0xddd1, - 0xd869,0xddd2,0xd869,0xddd3,0xd869,0xddd4,0xd869,0xddd5,0xd869,0xddd6, - 0xd869,0xddd7,0xd869,0xddd8,0xd869,0xddd9,0xd869,0xddda,0xd869,0xdddb, - 0xd869,0xdddc,0xd869,0xdddd,0xd869,0xddde,0xd869,0xdddf,0xd869,0xdde0, - 0xd869,0xdde1,0xd869,0xdde2,0xd869,0xdde3,0xd869,0xdde4,0xd869,0xdde5, - 0xd869,0xdde6,0xd869,0xdde7,0xd869,0xdde8,0xd869,0xdde9,0xd869,0xddea, - 0xd869,0xddeb,0xd869,0xddec,0xd869,0xdded,0xd869,0xddee,0xd869,0xddef, - 0xd869,0xddf0,0xd869,0xddf1,0xd869,0xddf2,0xd869,0xddf3,0xd869,0xddf4, - 0xd869,0xddf5,0xd869,0xddf6,0xd869,0xddf7,0xd869,0xddf8,0xd869,0xddf9, - 0xd869,0xddfa,0xd869,0xddfb,0xd869,0xddfc,0xd869,0xddfd,0xd869,0xddfe, - 0xd869,0xddff,0xd869,0xde00,0xd869,0xde01,0xd869,0xde02,0xd869,0xde03, - 0xd869,0xde04,0xd869,0xde05,0xd869,0xde06,0xd869,0xde07,0xd869,0xde08, - 0xd869,0xde09,0xd869,0xde0a,0xd869,0xde0b,0xd869,0xde0c,0xd869,0xde0d, - 0xd869,0xde0e,0xd869,0xde0f,0xd869,0xde10,0xd869,0xde11,0xd869,0xde12, - 0xd869,0xde13,0xd869,0xde14,0xd869,0xde15,0xd869,0xde16,0xd869,0xde17, - 0xd869,0xde18,0xd869,0xde19,0xd869,0xde1a,0xd869,0xde1b,0xd869,0xde1c, - 0xd869,0xde1d,0xd869,0xde1e,0xd869,0xde1f,0xd869,0xde20,0xd869,0xde21, - 0xd869,0xde22,0xd869,0xde23,0xd869,0xde24,0xd869,0xde25,0xd869,0xde26, - 0xd869,0xde27,0xd869,0xde28,0xd869,0xde29,0xd869,0xde2a,0xd869,0xde2b, - 0xd869,0xde2c,0xd869,0xde2d,0xd869,0xde2e,0xd869,0xde2f,0xd869,0xde30, - 0xd869,0xde31,0xd869,0xde32,0xd869,0xde33,0xd869,0xde34,0xd869,0xde35, - 0xd869,0xde36,0xd869,0xde37,0xd869,0xde38,0xd869,0xde39,0xd869,0xde3a, - 0xd869,0xde3b,0xd869,0xde3c,0xd869,0xde3d,0xd869,0xde3e,0xd869,0xde3f, - 0xd869,0xde40,0xd869,0xde41,0xd869,0xde42,0xd869,0xde43,0xd869,0xde44, - 0xd869,0xde45,0xd869,0xde46,0xd869,0xde47,0xd869,0xde48,0xd869,0xde49, - 0xd869,0xde4a,0xd869,0xde4b,0xd869,0xde4c,0xd869,0xde4d,0xd869,0xde4e, - 0xd869,0xde4f,0xd869,0xde50,0xd869,0xde51,0xd869,0xde52,0xd869,0xde53, - 0xd869,0xde54,0xd869,0xde55,0xd869,0xde56,0xd869,0xde57,0xd869,0xde58, - 0xd869,0xde59,0xd869,0xde5a,0xd869,0xde5b,0xd869,0xde5c,0xd869,0xde5d, - 0xd869,0xde5e,0xd869,0xde5f,0xd869,0xde60,0xd869,0xde61,0xd869,0xde62, - 0xd869,0xde63,0xd869,0xde64,0xd869,0xde65,0xd869,0xde66,0xd869,0xde67, - 0xd869,0xde68,0xd869,0xde69,0xd869,0xde6a,0xd869,0xde6b,0xd869,0xde6c, - 0xd869,0xde6d,0xd869,0xde6e,0xd869,0xde6f,0xd869,0xde70,0xd869,0xde71, - 0xd869,0xde72,0xd869,0xde73,0xd869,0xde74,0xd869,0xde75,0xd869,0xde76, - 0xd869,0xde77,0xd869,0xde78,0xd869,0xde79,0xd869,0xde7a,0xd869,0xde7b, - 0xd869,0xde7c,0xd869,0xde7d,0xd869,0xde7e,0xd869,0xde7f,0xd869,0xde80, - 0xd869,0xde81,0xd869,0xde82,0xd869,0xde83,0xd869,0xde84,0xd869,0xde85, - 0xd869,0xde86,0xd869,0xde87,0xd869,0xde88,0xd869,0xde89,0xd869,0xde8a, - 0xd869,0xde8b,0xd869,0xde8c,0xd869,0xde8d,0xd869,0xde8e,0xd869,0xde8f, - 0xd869,0xde90,0xd869,0xde91,0xd869,0xde92,0xd869,0xde93,0xd869,0xde94, - 0xd869,0xde95,0xd869,0xde96,0xd869,0xde97,0xd869,0xde98,0xd869,0xde99, - 0xd869,0xde9a,0xd869,0xde9b,0xd869,0xde9c,0xd869,0xde9d,0xd869,0xde9e, - 0xd869,0xde9f,0xd869,0xdea0,0xd869,0xdea1,0xd869,0xdea2,0xd869,0xdea3, - 0xd869,0xdea4,0xd869,0xdea5,0xd869,0xdea6,0xd869,0xdea7,0xd869,0xdea8, - 0xd869,0xdea9,0xd869,0xdeaa,0xd869,0xdeab,0xd869,0xdeac,0xd869,0xdead, - 0xd869,0xdeae,0xd869,0xdeaf,0xd869,0xdeb0,0xd869,0xdeb1,0xd869,0xdeb2, - 0xd869,0xdeb3,0xd869,0xdeb4,0xd869,0xdeb5,0xd869,0xdeb6,0xd869,0xdeb7, - 0xd869,0xdeb8,0xd869,0xdeb9,0xd869,0xdeba,0xd869,0xdebb,0xd869,0xdebc, - 0xd869,0xdebd,0xd869,0xdebe,0xd869,0xdebf,0xd869,0xdec0,0xd869,0xdec1, - 0xd869,0xdec2,0xd869,0xdec3,0xd869,0xdec4,0xd869,0xdec5,0xd869,0xdec6, - 0xd869,0xdec7,0xd869,0xdec8,0xd869,0xdec9,0xd869,0xdeca,0xd869,0xdecb, - 0xd869,0xdecc,0xd869,0xdecd,0xd869,0xdece,0xd869,0xdecf,0xd869,0xded0, - 0xd869,0xded1,0xd869,0xded2,0xd869,0xded3,0xd869,0xded4,0xd869,0xded5, - 0xd87e,0xdc00,0xd87e,0xdc01,0xd87e,0xdc02,0xd87e,0xdc03,0xd87e,0xdc04, - 0xd87e,0xdc05,0xd87e,0xdc06,0xd87e,0xdc07,0xd87e,0xdc08,0xd87e,0xdc09, - 0xd87e,0xdc0a,0xd87e,0xdc0b,0xd87e,0xdc0c,0xd87e,0xdc0d,0xd87e,0xdc0e, - 0xd87e,0xdc0f,0xd87e,0xdc10,0xd87e,0xdc11,0xd87e,0xdc12,0xd87e,0xdc13, - 0xd87e,0xdc14,0xd87e,0xdc15,0xd87e,0xdc16,0xd87e,0xdc17,0xd87e,0xdc18, - 0xd87e,0xdc19,0xd87e,0xdc1a,0xd87e,0xdc1b,0xd87e,0xdc1c,0xd87e,0xdc1d, - 0xd87e,0xdc1e,0xd87e,0xdc1f,0xd87e,0xdc20,0xd87e,0xdc21,0xd87e,0xdc22, - 0xd87e,0xdc23,0xd87e,0xdc24,0xd87e,0xdc25,0xd87e,0xdc26,0xd87e,0xdc27, - 0xd87e,0xdc28,0xd87e,0xdc29,0xd87e,0xdc2a,0xd87e,0xdc2b,0xd87e,0xdc2c, - 0xd87e,0xdc2d,0xd87e,0xdc2e,0xd87e,0xdc2f,0xd87e,0xdc30,0xd87e,0xdc31, - 0xd87e,0xdc32,0xd87e,0xdc33,0xd87e,0xdc34,0xd87e,0xdc35,0xd87e,0xdc36, - 0xd87e,0xdc37,0xd87e,0xdc38,0xd87e,0xdc39,0xd87e,0xdc3a,0xd87e,0xdc3b, - 0xd87e,0xdc3c,0xd87e,0xdc3d,0xd87e,0xdc3e,0xd87e,0xdc3f,0xd87e,0xdc40, - 0xd87e,0xdc41,0xd87e,0xdc42,0xd87e,0xdc43,0xd87e,0xdc44,0xd87e,0xdc45, - 0xd87e,0xdc46,0xd87e,0xdc47,0xd87e,0xdc48,0xd87e,0xdc49,0xd87e,0xdc4a, - 0xd87e,0xdc4b,0xd87e,0xdc4c,0xd87e,0xdc4d,0xd87e,0xdc4e,0xd87e,0xdc4f, - 0xd87e,0xdc50,0xd87e,0xdc51,0xd87e,0xdc52,0xd87e,0xdc53,0xd87e,0xdc54, - 0xd87e,0xdc55,0xd87e,0xdc56,0xd87e,0xdc57,0xd87e,0xdc58,0xd87e,0xdc59, - 0xd87e,0xdc5a,0xd87e,0xdc5b,0xd87e,0xdc5c,0xd87e,0xdc5d,0xd87e,0xdc5e, - 0xd87e,0xdc5f,0xd87e,0xdc60,0xd87e,0xdc61,0xd87e,0xdc62,0xd87e,0xdc63, - 0xd87e,0xdc64,0xd87e,0xdc65,0xd87e,0xdc66,0xd87e,0xdc67,0xd87e,0xdc68, - 0xd87e,0xdc69,0xd87e,0xdc6a,0xd87e,0xdc6b,0xd87e,0xdc6c,0xd87e,0xdc6d, - 0xd87e,0xdc6e,0xd87e,0xdc6f,0xd87e,0xdc70,0xd87e,0xdc71,0xd87e,0xdc72, - 0xd87e,0xdc73,0xd87e,0xdc74,0xd87e,0xdc75,0xd87e,0xdc76,0xd87e,0xdc77, - 0xd87e,0xdc78,0xd87e,0xdc79,0xd87e,0xdc7a,0xd87e,0xdc7b,0xd87e,0xdc7c, - 0xd87e,0xdc7d,0xd87e,0xdc7e,0xd87e,0xdc7f,0xd87e,0xdc80,0xd87e,0xdc81, - 0xd87e,0xdc82,0xd87e,0xdc83,0xd87e,0xdc84,0xd87e,0xdc85,0xd87e,0xdc86, - 0xd87e,0xdc87,0xd87e,0xdc88,0xd87e,0xdc89,0xd87e,0xdc8a,0xd87e,0xdc8b, - 0xd87e,0xdc8c,0xd87e,0xdc8d,0xd87e,0xdc8e,0xd87e,0xdc8f,0xd87e,0xdc90, - 0xd87e,0xdc91,0xd87e,0xdc92,0xd87e,0xdc93,0xd87e,0xdc94,0xd87e,0xdc95, - 0xd87e,0xdc96,0xd87e,0xdc97,0xd87e,0xdc98,0xd87e,0xdc99,0xd87e,0xdc9a, - 0xd87e,0xdc9b,0xd87e,0xdc9c,0xd87e,0xdc9d,0xd87e,0xdc9e,0xd87e,0xdc9f, - 0xd87e,0xdca0,0xd87e,0xdca1,0xd87e,0xdca2,0xd87e,0xdca3,0xd87e,0xdca4, - 0xd87e,0xdca5,0xd87e,0xdca6,0xd87e,0xdca7,0xd87e,0xdca8,0xd87e,0xdca9, - 0xd87e,0xdcaa,0xd87e,0xdcab,0xd87e,0xdcac,0xd87e,0xdcad,0xd87e,0xdcae, - 0xd87e,0xdcaf,0xd87e,0xdcb0,0xd87e,0xdcb1,0xd87e,0xdcb2,0xd87e,0xdcb3, - 0xd87e,0xdcb4,0xd87e,0xdcb5,0xd87e,0xdcb6,0xd87e,0xdcb7,0xd87e,0xdcb8, - 0xd87e,0xdcb9,0xd87e,0xdcba,0xd87e,0xdcbb,0xd87e,0xdcbc,0xd87e,0xdcbd, - 0xd87e,0xdcbe,0xd87e,0xdcbf,0xd87e,0xdcc0,0xd87e,0xdcc1,0xd87e,0xdcc2, - 0xd87e,0xdcc3,0xd87e,0xdcc4,0xd87e,0xdcc5,0xd87e,0xdcc6,0xd87e,0xdcc7, - 0xd87e,0xdcc8,0xd87e,0xdcc9,0xd87e,0xdcca,0xd87e,0xdccb,0xd87e,0xdccc, - 0xd87e,0xdccd,0xd87e,0xdcce,0xd87e,0xdccf,0xd87e,0xdcd0,0xd87e,0xdcd1, - 0xd87e,0xdcd2,0xd87e,0xdcd3,0xd87e,0xdcd4,0xd87e,0xdcd5,0xd87e,0xdcd6, - 0xd87e,0xdcd7,0xd87e,0xdcd8,0xd87e,0xdcd9,0xd87e,0xdcda,0xd87e,0xdcdb, - 0xd87e,0xdcdc,0xd87e,0xdcdd,0xd87e,0xdcde,0xd87e,0xdcdf,0xd87e,0xdce0, - 0xd87e,0xdce1,0xd87e,0xdce2,0xd87e,0xdce3,0xd87e,0xdce4,0xd87e,0xdce5, - 0xd87e,0xdce6,0xd87e,0xdce7,0xd87e,0xdce8,0xd87e,0xdce9,0xd87e,0xdcea, - 0xd87e,0xdceb,0xd87e,0xdcec,0xd87e,0xdced,0xd87e,0xdcee,0xd87e,0xdcef, - 0xd87e,0xdcf0,0xd87e,0xdcf1,0xd87e,0xdcf2,0xd87e,0xdcf3,0xd87e,0xdcf4, - 0xd87e,0xdcf5,0xd87e,0xdcf6,0xd87e,0xdcf7,0xd87e,0xdcf8,0xd87e,0xdcf9, - 0xd87e,0xdcfa,0xd87e,0xdcfb,0xd87e,0xdcfc,0xd87e,0xdcfd,0xd87e,0xdcfe, - 0xd87e,0xdcff,0xd87e,0xdd00,0xd87e,0xdd01,0xd87e,0xdd02,0xd87e,0xdd03, - 0xd87e,0xdd04,0xd87e,0xdd05,0xd87e,0xdd06,0xd87e,0xdd07,0xd87e,0xdd08, - 0xd87e,0xdd09,0xd87e,0xdd0a,0xd87e,0xdd0b,0xd87e,0xdd0c,0xd87e,0xdd0d, - 0xd87e,0xdd0e,0xd87e,0xdd0f,0xd87e,0xdd10,0xd87e,0xdd11,0xd87e,0xdd12, - 0xd87e,0xdd13,0xd87e,0xdd14,0xd87e,0xdd15,0xd87e,0xdd16,0xd87e,0xdd17, - 0xd87e,0xdd18,0xd87e,0xdd19,0xd87e,0xdd1a,0xd87e,0xdd1b,0xd87e,0xdd1c, - 0xd87e,0xdd1d,0xd87e,0xdd1e,0xd87e,0xdd1f,0xd87e,0xdd20,0xd87e,0xdd21, - 0xd87e,0xdd22,0xd87e,0xdd23,0xd87e,0xdd24,0xd87e,0xdd25,0xd87e,0xdd26, - 0xd87e,0xdd27,0xd87e,0xdd28,0xd87e,0xdd29,0xd87e,0xdd2a,0xd87e,0xdd2b, - 0xd87e,0xdd2c,0xd87e,0xdd2d,0xd87e,0xdd2e,0xd87e,0xdd2f,0xd87e,0xdd30, - 0xd87e,0xdd31,0xd87e,0xdd32,0xd87e,0xdd33,0xd87e,0xdd34,0xd87e,0xdd35, - 0xd87e,0xdd36,0xd87e,0xdd37,0xd87e,0xdd38,0xd87e,0xdd39,0xd87e,0xdd3a, - 0xd87e,0xdd3b,0xd87e,0xdd3c,0xd87e,0xdd3d,0xd87e,0xdd3e,0xd87e,0xdd3f, - 0xd87e,0xdd40,0xd87e,0xdd41,0xd87e,0xdd42,0xd87e,0xdd43,0xd87e,0xdd44, - 0xd87e,0xdd45,0xd87e,0xdd46,0xd87e,0xdd47,0xd87e,0xdd48,0xd87e,0xdd49, - 0xd87e,0xdd4a,0xd87e,0xdd4b,0xd87e,0xdd4c,0xd87e,0xdd4d,0xd87e,0xdd4e, - 0xd87e,0xdd4f,0xd87e,0xdd50,0xd87e,0xdd51,0xd87e,0xdd52,0xd87e,0xdd53, - 0xd87e,0xdd54,0xd87e,0xdd55,0xd87e,0xdd56,0xd87e,0xdd57,0xd87e,0xdd58, - 0xd87e,0xdd59,0xd87e,0xdd5a,0xd87e,0xdd5b,0xd87e,0xdd5c,0xd87e,0xdd5d, - 0xd87e,0xdd5e,0xd87e,0xdd5f,0xd87e,0xdd60,0xd87e,0xdd61,0xd87e,0xdd62, - 0xd87e,0xdd63,0xd87e,0xdd64,0xd87e,0xdd65,0xd87e,0xdd66,0xd87e,0xdd67, - 0xd87e,0xdd68,0xd87e,0xdd69,0xd87e,0xdd6a,0xd87e,0xdd6b,0xd87e,0xdd6c, - 0xd87e,0xdd6d,0xd87e,0xdd6e,0xd87e,0xdd6f,0xd87e,0xdd70,0xd87e,0xdd71, - 0xd87e,0xdd72,0xd87e,0xdd73,0xd87e,0xdd74,0xd87e,0xdd75,0xd87e,0xdd76, - 0xd87e,0xdd77,0xd87e,0xdd78,0xd87e,0xdd79,0xd87e,0xdd7a,0xd87e,0xdd7b, - 0xd87e,0xdd7c,0xd87e,0xdd7d,0xd87e,0xdd7e,0xd87e,0xdd7f,0xd87e,0xdd80, - 0xd87e,0xdd81,0xd87e,0xdd82,0xd87e,0xdd83,0xd87e,0xdd84,0xd87e,0xdd85, - 0xd87e,0xdd86,0xd87e,0xdd87,0xd87e,0xdd88,0xd87e,0xdd89,0xd87e,0xdd8a, - 0xd87e,0xdd8b,0xd87e,0xdd8c,0xd87e,0xdd8d,0xd87e,0xdd8e,0xd87e,0xdd8f, - 0xd87e,0xdd90,0xd87e,0xdd91,0xd87e,0xdd92,0xd87e,0xdd93,0xd87e,0xdd94, - 0xd87e,0xdd95,0xd87e,0xdd96,0xd87e,0xdd97,0xd87e,0xdd98,0xd87e,0xdd99, - 0xd87e,0xdd9a,0xd87e,0xdd9b,0xd87e,0xdd9c,0xd87e,0xdd9d,0xd87e,0xdd9e, - 0xd87e,0xdd9f,0xd87e,0xdda0,0xd87e,0xdda1,0xd87e,0xdda2,0xd87e,0xdda3, - 0xd87e,0xdda4,0xd87e,0xdda5,0xd87e,0xdda6,0xd87e,0xdda7,0xd87e,0xdda8, - 0xd87e,0xdda9,0xd87e,0xddaa,0xd87e,0xddab,0xd87e,0xddac,0xd87e,0xddad, - 0xd87e,0xddae,0xd87e,0xddaf,0xd87e,0xddb0,0xd87e,0xddb1,0xd87e,0xddb2, - 0xd87e,0xddb3,0xd87e,0xddb4,0xd87e,0xddb5,0xd87e,0xddb6,0xd87e,0xddb7, - 0xd87e,0xddb8,0xd87e,0xddb9,0xd87e,0xddba,0xd87e,0xddbb,0xd87e,0xddbc, - 0xd87e,0xddbd,0xd87e,0xddbe,0xd87e,0xddbf,0xd87e,0xddc0,0xd87e,0xddc1, - 0xd87e,0xddc2,0xd87e,0xddc3,0xd87e,0xddc4,0xd87e,0xddc5,0xd87e,0xddc6, - 0xd87e,0xddc7,0xd87e,0xddc8,0xd87e,0xddc9,0xd87e,0xddca,0xd87e,0xddcb, - 0xd87e,0xddcc,0xd87e,0xddcd,0xd87e,0xddce,0xd87e,0xddcf,0xd87e,0xddd0, - 0xd87e,0xddd1,0xd87e,0xddd2,0xd87e,0xddd3,0xd87e,0xddd4,0xd87e,0xddd5, - 0xd87e,0xddd6,0xd87e,0xddd7,0xd87e,0xddd8,0xd87e,0xddd9,0xd87e,0xddda, - 0xd87e,0xdddb,0xd87e,0xdddc,0xd87e,0xdddd,0xd87e,0xddde,0xd87e,0xdddf, - 0xd87e,0xdde0,0xd87e,0xdde1,0xd87e,0xdde2,0xd87e,0xdde3,0xd87e,0xdde4, - 0xd87e,0xdde5,0xd87e,0xdde6,0xd87e,0xdde7,0xd87e,0xdde8,0xd87e,0xdde9, - 0xd87e,0xddea,0xd87e,0xddeb,0xd87e,0xddec,0xd87e,0xdded,0xd87e,0xddee, - 0xd87e,0xddef,0xd87e,0xddf0,0xd87e,0xddf1,0xd87e,0xddf2,0xd87e,0xddf3, - 0xd87e,0xddf4,0xd87e,0xddf5,0xd87e,0xddf6,0xd87e,0xddf7,0xd87e,0xddf8, - 0xd87e,0xddf9,0xd87e,0xddfa,0xd87e,0xddfb,0xd87e,0xddfc,0xd87e,0xddfd, - 0xd87e,0xddfe,0xd87e,0xddff,0xd87e,0xde00,0xd87e,0xde01,0xd87e,0xde02, - 0xd87e,0xde03,0xd87e,0xde04,0xd87e,0xde05,0xd87e,0xde06,0xd87e,0xde07, - 0xd87e,0xde08,0xd87e,0xde09,0xd87e,0xde0a,0xd87e,0xde0b,0xd87e,0xde0c, - 0xd87e,0xde0d,0xd87e,0xde0e,0xd87e,0xde0f,0xd87e,0xde10,0xd87e,0xde11, - 0xd87e,0xde12,0xd87e,0xde13,0xd87e,0xde14,0xd87e,0xde15,0xd87e,0xde16, - 0xd87e,0xde17,0xd87e,0xde18,0xd87e,0xde19,0xd87e,0xde1a,0xd87e,0xde1b, - 0xd87e,0xde1c,0xd87e,0xde1d, - }; -static const TUint KIdeographicLength = 41779 + 86504; -static const TUint KIdeographicClass = MLineBreaker::EIdLineBreakClass; - - -// This constant defines the Unicode characters in the "Inseparable" category. -static const TUint16 KInseparable[] = - { - 0x2024,0x2025,0x2026 - }; -static const TUint KInseparableLength = 3; -static const TUint KInseparableClass = MLineBreaker::EInLineBreakClass; - - -// This constant defines the Unicode characters in the "Hyphen" category. -static const TUint16 KHyphen[] = - { - 0x2d - }; -static const TUint KHyphenLength = 1; -static const TUint KHyphenClass = MLineBreaker::EHyLineBreakClass; - - -// This constant defines the Unicode characters in the "BreakAfter" category. -static const TUint16 KBreakAfter[] = - { - 0x9,0x7c,0xad,0xb4,0x58a,0xf0b,0x1361,0x1680,0x17d5,0x2000,0x2001, - 0x2002,0x2003,0x2004,0x2005,0x2006,0x2008,0x2009,0x200a,0x2010, - 0x2012,0x2013,0x2027 - }; -static const TUint KBreakAfterLength = 23; -static const TUint KBreakAfterClass = MLineBreaker::EBaLineBreakClass; - - -// This constant defines the Unicode characters in the "BreakBefore" category. -static const TUint16 KBreakBefore[] = - { - 0x2c8,0x2cc,0x1806 - }; -static const TUint KBreakBeforeLength = 3; -static const TUint KBreakBeforeClass = MLineBreaker::EBbLineBreakClass; - - -// This constant defines the Unicode characters in the "BreakBeforeandAfter" category. -static const TUint16 KBreakBeforeandAfter[] = - { - 0x2014 - }; -static const TUint KBreakBeforeandAfterLength = 1; -static const TUint KBreakBeforeandAfterClass = MLineBreaker::EB2LineBreakClass; - - -// This constant defines the Unicode characters in the "ZeroWidthSpace" category. -static const TUint16 KZeroWidthSpace[] = - { - 0x200b - }; -static const TUint KZeroWidthSpaceLength = 1; -static const TUint KZeroWidthSpaceClass = MLineBreaker::EZwLineBreakClass; - - -// This constant defines the Unicode characters in the "CombiningMark" category. -static const TUint16 KCombiningMark[] = - { - 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x000b, - 0x000e,0x000f,0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, - 0x0018,0x0019,0x001a,0x001b,0x001c,0x001d,0x001e,0x001f,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,0x0300,0x0301,0x0302,0x0303,0x0304,0x0305,0x0306,0x0307,0x0308, - 0x0309,0x030a,0x030b,0x030c,0x030d,0x030e,0x030f,0x0310,0x0311,0x0312, - 0x0313,0x0314,0x0315,0x0316,0x0317,0x0318,0x0319,0x031a,0x031b,0x031c, - 0x031d,0x031e,0x031f,0x0320,0x0321,0x0322,0x0323,0x0324,0x0325,0x0326, - 0x0327,0x0328,0x0329,0x032a,0x032b,0x032c,0x032d,0x032e,0x032f,0x0330, - 0x0331,0x0332,0x0333,0x0334,0x0335,0x0336,0x0337,0x0338,0x0339,0x033a, - 0x033b,0x033c,0x033d,0x033e,0x033f,0x0340,0x0341,0x0342,0x0343,0x0344, - 0x0345,0x0346,0x0347,0x0348,0x0349,0x034a,0x034b,0x034c,0x034d,0x034e, - 0x0350,0x0351,0x0352,0x0353,0x0354,0x0355,0x0356,0x0357,0x0358,0x0359, - 0x035a,0x035b,0x0360,0x0361,0x0362,0x0363,0x0364,0x0365,0x0366,0x0367, - 0x0368,0x0369,0x036a,0x036b,0x036c,0x036d,0x036e,0x036f,0x0483,0x0484, - 0x0485,0x0486,0x0488,0x0489,0x0591,0x0592,0x0593,0x0594,0x0595,0x0596, - 0x0597,0x0598,0x0599,0x059a,0x059b,0x059c,0x059d,0x059e,0x059f,0x05a0, - 0x05a1,0x05a2,0x05a3,0x05a4,0x05a5,0x05a6,0x05a7,0x05a8,0x05a9,0x05aa, - 0x05ab,0x05ac,0x05ad,0x05ae,0x05af,0x05b0,0x05b1,0x05b2,0x05b3,0x05b4, - 0x05b5,0x05b6,0x05b7,0x05b8,0x05b9,0x05ba,0x05bb,0x05bc,0x05bd,0x05bf, - 0x05c1,0x05c2,0x05c4,0x05c5,0x05c7,0x0610,0x0611,0x0612,0x0613,0x0614, - 0x0615,0x064b,0x064c,0x064d,0x064e,0x064f,0x0650,0x0651,0x0652,0x0653, - 0x0654,0x0655,0x0656,0x0657,0x0658,0x0659,0x065a,0x065b,0x065c,0x065d, - 0x065e,0x0670,0x06d6,0x06d7,0x06d8,0x06d9,0x06da,0x06db,0x06dc,0x06dd, - 0x06de,0x06df,0x06e0,0x06e1,0x06e2,0x06e3,0x06e4,0x06e7,0x06e8,0x06ea, - 0x06eb,0x06ec,0x06ed,0x070f,0x0711,0x0730,0x0731,0x0732,0x0733,0x0734, - 0x0735,0x0736,0x0737,0x0738,0x0739,0x073a,0x073b,0x073c,0x073d,0x073e, - 0x073f,0x0740,0x0741,0x0742,0x0743,0x0744,0x0745,0x0746,0x0747,0x0748, - 0x0749,0x074a,0x07a6,0x07a7,0x07a8,0x07a9,0x07aa,0x07ab,0x07ac,0x07ad, - 0x07ae,0x07af,0x07b0,0x07eb,0x07ec,0x07ed,0x07ee,0x07ef,0x07f0,0x07f1, - 0x07f2,0x07f3,0x0901,0x0902,0x0903,0x093c,0x093e,0x093f,0x0940,0x0941, - 0x0942,0x0943,0x0944,0x0945,0x0946,0x0947,0x0948,0x0949,0x094a,0x094b, - 0x094c,0x094d,0x0951,0x0952,0x0953,0x0954,0x0962,0x0963,0x0981,0x0982, - 0x0983,0x09bc,0x09be,0x09bf,0x09c0,0x09c1,0x09c2,0x09c3,0x09c4,0x09c7, - 0x09c8,0x09cb,0x09cc,0x09cd,0x09d7,0x09e2,0x09e3,0x0a01,0x0a02,0x0a03, - 0x0a3c,0x0a3e,0x0a3f,0x0a40,0x0a41,0x0a42,0x0a47,0x0a48,0x0a4b,0x0a4c, - 0x0a4d,0x0a70,0x0a71,0x0a81,0x0a82,0x0a83,0x0abc,0x0abe,0x0abf,0x0ac0, - 0x0ac1,0x0ac2,0x0ac3,0x0ac4,0x0ac5,0x0ac7,0x0ac8,0x0ac9,0x0acb,0x0acc, - 0x0acd,0x0ae2,0x0ae3,0x0b01,0x0b02,0x0b03,0x0b3c,0x0b3e,0x0b3f,0x0b40, - 0x0b41,0x0b42,0x0b43,0x0b47,0x0b48,0x0b4b,0x0b4c,0x0b4d,0x0b56,0x0b57, - 0x0b82,0x0b83,0x0bbe,0x0bbf,0x0bc0,0x0bc1,0x0bc2,0x0bc6,0x0bc7,0x0bc8, - 0x0bca,0x0bcb,0x0bcc,0x0bcd,0x0bd7,0x0c01,0x0c02,0x0c03,0x0c3e,0x0c3f, - 0x0c40,0x0c41,0x0c42,0x0c43,0x0c44,0x0c46,0x0c47,0x0c48,0x0c4a,0x0c4b, - 0x0c4c,0x0c4d,0x0c55,0x0c56,0x0c82,0x0c83,0x0cbc,0x0cbe,0x0cbf,0x0cc0, - 0x0cc1,0x0cc2,0x0cc3,0x0cc4,0x0cc6,0x0cc7,0x0cc8,0x0cca,0x0ccb,0x0ccc, - 0x0ccd,0x0cd5,0x0cd6,0x0ce2,0x0ce3,0x0d02,0x0d03,0x0d3e,0x0d3f,0x0d40, - 0x0d41,0x0d42,0x0d43,0x0d46,0x0d47,0x0d48,0x0d4a,0x0d4b,0x0d4c,0x0d4d, - 0x0d57,0x0d82,0x0d83,0x0dca,0x0dcf,0x0dd0,0x0dd1,0x0dd2,0x0dd3,0x0dd4, - 0x0dd6,0x0dd8,0x0dd9,0x0dda,0x0ddb,0x0ddc,0x0ddd,0x0dde,0x0ddf,0x0df2, - 0x0df3,0x0e31,0x0e34,0x0e35,0x0e36,0x0e37,0x0e38,0x0e39,0x0e3a,0x0e47, - 0x0e48,0x0e49,0x0e4a,0x0e4b,0x0e4c,0x0e4d,0x0e4e,0x0eb1,0x0eb4,0x0eb5, - 0x0eb6,0x0eb7,0x0eb8,0x0eb9,0x0ebb,0x0ebc,0x0ec8,0x0ec9,0x0eca,0x0ecb, - 0x0ecc,0x0ecd,0x0f18,0x0f19,0x0f35,0x0f37,0x0f39,0x0f3e,0x0f3f,0x0f71, - 0x0f72,0x0f73,0x0f74,0x0f75,0x0f76,0x0f77,0x0f78,0x0f79,0x0f7a,0x0f7b, - 0x0f7c,0x0f7d,0x0f7e,0x0f7f,0x0f80,0x0f81,0x0f82,0x0f83,0x0f84,0x0f86, - 0x0f87,0x0f90,0x0f91,0x0f92,0x0f93,0x0f94,0x0f95,0x0f96,0x0f97,0x0f99, - 0x0f9a,0x0f9b,0x0f9c,0x0f9d,0x0f9e,0x0f9f,0x0fa0,0x0fa1,0x0fa2,0x0fa3, - 0x0fa4,0x0fa5,0x0fa6,0x0fa7,0x0fa8,0x0fa9,0x0faa,0x0fab,0x0fac,0x0fad, - 0x0fae,0x0faf,0x0fb0,0x0fb1,0x0fb2,0x0fb3,0x0fb4,0x0fb5,0x0fb6,0x0fb7, - 0x0fb8,0x0fb9,0x0fba,0x0fbb,0x0fbc,0x0fc6,0x102c,0x102d,0x102e,0x102f, - 0x1030,0x1031,0x1032,0x1036,0x1037,0x1038,0x1039,0x1056,0x1057,0x1058, - 0x1059,0x1160,0x1161,0x1162,0x1163,0x1164,0x1165,0x1166,0x1167,0x1168, - 0x1169,0x116a,0x116b,0x116c,0x116d,0x116e,0x116f,0x1170,0x1171,0x1172, - 0x1173,0x1174,0x1175,0x1176,0x1177,0x1178,0x1179,0x117a,0x117b,0x117c, - 0x117d,0x117e,0x117f,0x1180,0x1181,0x1182,0x1183,0x1184,0x1185,0x1186, - 0x1187,0x1188,0x1189,0x118a,0x118b,0x118c,0x118d,0x118e,0x118f,0x1190, - 0x1191,0x1192,0x1193,0x1194,0x1195,0x1196,0x1197,0x1198,0x1199,0x119a, - 0x119b,0x119c,0x119d,0x119e,0x119f,0x11a0,0x11a1,0x11a2,0x11a8,0x11a9, - 0x11aa,0x11ab,0x11ac,0x11ad,0x11ae,0x11af,0x11b0,0x11b1,0x11b2,0x11b3, - 0x11b4,0x11b5,0x11b6,0x11b7,0x11b8,0x11b9,0x11ba,0x11bb,0x11bc,0x11bd, - 0x11be,0x11bf,0x11c0,0x11c1,0x11c2,0x11c3,0x11c4,0x11c5,0x11c6,0x11c7, - 0x11c8,0x11c9,0x11ca,0x11cb,0x11cc,0x11cd,0x11ce,0x11cf,0x11d0,0x11d1, - 0x11d2,0x11d3,0x11d4,0x11d5,0x11d6,0x11d7,0x11d8,0x11d9,0x11da,0x11db, - 0x11dc,0x11dd,0x11de,0x11df,0x11e0,0x11e1,0x11e2,0x11e3,0x11e4,0x11e5, - 0x11e6,0x11e7,0x11e8,0x11e9,0x11ea,0x11eb,0x11ec,0x11ed,0x11ee,0x11ef, - 0x11f0,0x11f1,0x11f2,0x11f3,0x11f4,0x11f5,0x11f6,0x11f7,0x11f8,0x11f9, - 0x135f,0x1712,0x1713,0x1714,0x1732,0x1733,0x1734,0x1752,0x1753,0x1772, - 0x1773,0x17b4,0x17b5,0x17b6,0x17b7,0x17b8,0x17b9,0x17ba,0x17bb,0x17bc, - 0x17bd,0x17be,0x17bf,0x17c0,0x17c1,0x17c2,0x17c3,0x17c4,0x17c5,0x17c6, - 0x17c7,0x17c8,0x17c9,0x17ca,0x17cb,0x17cc,0x17cd,0x17ce,0x17cf,0x17d0, - 0x17d1,0x17d2,0x17d3,0x180b,0x180c,0x180d,0x180e,0x18a9,0x1920,0x1921, - 0x1922,0x1923,0x1924,0x1925,0x1926,0x1927,0x1928,0x1929,0x192a,0x192b, - 0x1930,0x1931,0x1932,0x1933,0x1934,0x1935,0x1936,0x1937,0x1938,0x1939, - 0x193a,0x193b,0x1a17,0x1a18,0x1a19,0x1a1a,0x1a1b,0x1b00,0x1b01,0x1b02, - 0x1b03,0x1b04,0x1b34,0x1b35,0x1b36,0x1b37,0x1b38,0x1b39,0x1b3a,0x1b3b, - 0x1b3c,0x1b3d,0x1b3e,0x1b3f,0x1b40,0x1b41,0x1b42,0x1b43,0x1b44,0x1b6b, - 0x1b6c,0x1b6d,0x1b6e,0x1b6f,0x1b70,0x1b71,0x1b72,0x1b73,0x1dc0,0x1dc1, - 0x1dc2,0x1dc3,0x1dc4,0x1dc5,0x1dc6,0x1dc7,0x1dc8,0x1dc9,0x1dca,0x1dfe, - 0x1dff,0x200c,0x200d,0x200e,0x200f,0x202a,0x202b,0x202c,0x202d,0x202e, - 0x206a,0x206b,0x206c,0x206d,0x206e,0x206f,0x20d0,0x20d1,0x20d2,0x20d3, - 0x20d4,0x20d5,0x20d6,0x20d7,0x20d8,0x20d9,0x20da,0x20db,0x20dc,0x20dd, - 0x20de,0x20df,0x20e0,0x20e1,0x20e2,0x20e3,0x20e4,0x20e5,0x20e6,0x20e7, - 0x20e8,0x20e9,0x20ea,0x20eb,0x20ec,0x20ed,0x20ee,0x20ef,0x302a,0x302b, - 0x302c,0x302d,0x302e,0x302f,0x3099,0x309a,0xa802,0xa806,0xa80b,0xa823, - 0xa824,0xa825,0xa826,0xa827,0xfb1e,0xfe00,0xfe01,0xfe02,0xfe03,0xfe04, - 0xfe05,0xfe06,0xfe07,0xfe08,0xfe09,0xfe0a,0xfe0b,0xfe0c,0xfe0d,0xfe0e, - 0xfe0f,0xfe20,0xfe21,0xfe22,0xfe23,0xfff9,0xfffa,0xfffb, - }; -static const TUint KCombiningMarkLength = 988; -static const TUint KCombiningMarkClass = MLineBreaker::ECmLineBreakClass; - - -// This constant defines the Unicode characters in the "MandatoryBreak" category. -static const TUint16 KMandatoryBreak[] = - { - 0xc,0x2028,0x2029 - }; -static const TUint KMandatoryBreakLength = 3; -static const TUint KMandatoryBreakClass = MLineBreaker::EBkLineBreakClass; - - -// This constant defines the Unicode characters in the "CarriageReturn" category. -static const TUint16 KCarriageReturn[] = - { - 0xd - }; -static const TUint KCarriageReturnLength = 1; -static const TUint KCarriageReturnClass = MLineBreaker::ECrLineBreakClass; - - -// This constant defines the Unicode characters in the "LineFeed" category. -static const TUint16 KLineFeed[] = - { - 0xa - }; -static const TUint KLineFeedLength = 1; -static const TUint KLineFeedClass = MLineBreaker::ELfLineBreakClass; - - -// This constant defines the Unicode characters in the "Surrogate" category. -static const TUint16 KSurrogate[] = - { - 0xd800,0xd801,0xd802,0xd803,0xd804,0xd805,0xd806,0xd807,0xd808, - 0xd809,0xd80a,0xd80b,0xd80c,0xd80d,0xd80e,0xd80f,0xd810,0xd811, - 0xd812,0xd813,0xd814,0xd815,0xd816,0xd817,0xd818,0xd819,0xd81a, - 0xd81b,0xd81c,0xd81d,0xd81e,0xd81f,0xd820,0xd821,0xd822,0xd823, - 0xd824,0xd825,0xd826,0xd827,0xd828,0xd829,0xd82a,0xd82b,0xd82c, - 0xd82d,0xd82e,0xd82f,0xd830,0xd831,0xd832,0xd833,0xd834,0xd835, - 0xd836,0xd837,0xd838,0xd839,0xd83a,0xd83b,0xd83c,0xd83d,0xd83e, - 0xd83f,0xd840,0xd841,0xd842,0xd843,0xd844,0xd845,0xd846,0xd847, - 0xd848,0xd849,0xd84a,0xd84b,0xd84c,0xd84d,0xd84e,0xd84f,0xd850, - 0xd851,0xd852,0xd853,0xd854,0xd855,0xd856,0xd857,0xd858,0xd859, - 0xd85a,0xd85b,0xd85c,0xd85d,0xd85e,0xd85f,0xd860,0xd861,0xd862, - 0xd863,0xd864,0xd865,0xd866,0xd867,0xd868,0xd869,0xd86a,0xd86b, - 0xd86c,0xd86d,0xd86e,0xd86f,0xd870,0xd871,0xd872,0xd873,0xd874, - 0xd875,0xd876,0xd877,0xd878,0xd879,0xd87a,0xd87b,0xd87c,0xd87d, - 0xd87e,0xd87f,0xd880,0xd881,0xd882,0xd883,0xd884,0xd885,0xd886, - 0xd887,0xd888,0xd889,0xd88a,0xd88b,0xd88c,0xd88d,0xd88e,0xd88f, - 0xd890,0xd891,0xd892,0xd893,0xd894,0xd895,0xd896,0xd897,0xd898, - 0xd899,0xd89a,0xd89b,0xd89c,0xd89d,0xd89e,0xd89f,0xd8a0,0xd8a1, - 0xd8a2,0xd8a3,0xd8a4,0xd8a5,0xd8a6,0xd8a7,0xd8a8,0xd8a9,0xd8aa, - 0xd8ab,0xd8ac,0xd8ad,0xd8ae,0xd8af,0xd8b0,0xd8b1,0xd8b2,0xd8b3, - 0xd8b4,0xd8b5,0xd8b6,0xd8b7,0xd8b8,0xd8b9,0xd8ba,0xd8bb,0xd8bc, - 0xd8bd,0xd8be,0xd8bf,0xd8c0,0xd8c1,0xd8c2,0xd8c3,0xd8c4,0xd8c5, - 0xd8c6,0xd8c7,0xd8c8,0xd8c9,0xd8ca,0xd8cb,0xd8cc,0xd8cd,0xd8ce, - 0xd8cf,0xd8d0,0xd8d1,0xd8d2,0xd8d3,0xd8d4,0xd8d5,0xd8d6,0xd8d7, - 0xd8d8,0xd8d9,0xd8da,0xd8db,0xd8dc,0xd8dd,0xd8de,0xd8df,0xd8e0, - 0xd8e1,0xd8e2,0xd8e3,0xd8e4,0xd8e5,0xd8e6,0xd8e7,0xd8e8,0xd8e9, - 0xd8ea,0xd8eb,0xd8ec,0xd8ed,0xd8ee,0xd8ef,0xd8f0,0xd8f1,0xd8f2, - 0xd8f3,0xd8f4,0xd8f5,0xd8f6,0xd8f7,0xd8f8,0xd8f9,0xd8fa,0xd8fb, - 0xd8fc,0xd8fd,0xd8fe,0xd8ff,0xd900,0xd901,0xd902,0xd903,0xd904, - 0xd905,0xd906,0xd907,0xd908,0xd909,0xd90a,0xd90b,0xd90c,0xd90d, - 0xd90e,0xd90f,0xd910,0xd911,0xd912,0xd913,0xd914,0xd915,0xd916, - 0xd917,0xd918,0xd919,0xd91a,0xd91b,0xd91c,0xd91d,0xd91e,0xd91f, - 0xd920,0xd921,0xd922,0xd923,0xd924,0xd925,0xd926,0xd927,0xd928, - 0xd929,0xd92a,0xd92b,0xd92c,0xd92d,0xd92e,0xd92f,0xd930,0xd931, - 0xd932,0xd933,0xd934,0xd935,0xd936,0xd937,0xd938,0xd939,0xd93a, - 0xd93b,0xd93c,0xd93d,0xd93e,0xd93f,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,0xd97f,0xd980,0xd981,0xd982, - 0xd983,0xd984,0xd985,0xd986,0xd987,0xd988,0xd989,0xd98a,0xd98b, - 0xd98c,0xd98d,0xd98e,0xd98f,0xd990,0xd991,0xd992,0xd993,0xd994, - 0xd995,0xd996,0xd997,0xd998,0xd999,0xd99a,0xd99b,0xd99c,0xd99d, - 0xd99e,0xd99f,0xd9a0,0xd9a1,0xd9a2,0xd9a3,0xd9a4,0xd9a5,0xd9a6, - 0xd9a7,0xd9a8,0xd9a9,0xd9aa,0xd9ab,0xd9ac,0xd9ad,0xd9ae,0xd9af, - 0xd9b0,0xd9b1,0xd9b2,0xd9b3,0xd9b4,0xd9b5,0xd9b6,0xd9b7,0xd9b8, - 0xd9b9,0xd9ba,0xd9bb,0xd9bc,0xd9bd,0xd9be,0xd9bf,0xd9c0,0xd9c1, - 0xd9c2,0xd9c3,0xd9c4,0xd9c5,0xd9c6,0xd9c7,0xd9c8,0xd9c9,0xd9ca, - 0xd9cb,0xd9cc,0xd9cd,0xd9ce,0xd9cf,0xd9d0,0xd9d1,0xd9d2,0xd9d3, - 0xd9d4,0xd9d5,0xd9d6,0xd9d7,0xd9d8,0xd9d9,0xd9da,0xd9db,0xd9dc, - 0xd9dd,0xd9de,0xd9df,0xd9e0,0xd9e1,0xd9e2,0xd9e3,0xd9e4,0xd9e5, - 0xd9e6,0xd9e7,0xd9e8,0xd9e9,0xd9ea,0xd9eb,0xd9ec,0xd9ed,0xd9ee, - 0xd9ef,0xd9f0,0xd9f1,0xd9f2,0xd9f3,0xd9f4,0xd9f5,0xd9f6,0xd9f7, - 0xd9f8,0xd9f9,0xd9fa,0xd9fb,0xd9fc,0xd9fd,0xd9fe,0xd9ff,0xda00, - 0xda01,0xda02,0xda03,0xda04,0xda05,0xda06,0xda07,0xda08,0xda09, - 0xda0a,0xda0b,0xda0c,0xda0d,0xda0e,0xda0f,0xda10,0xda11,0xda12, - 0xda13,0xda14,0xda15,0xda16,0xda17,0xda18,0xda19,0xda1a,0xda1b, - 0xda1c,0xda1d,0xda1e,0xda1f,0xda20,0xda21,0xda22,0xda23,0xda24, - 0xda25,0xda26,0xda27,0xda28,0xda29,0xda2a,0xda2b,0xda2c,0xda2d, - 0xda2e,0xda2f,0xda30,0xda31,0xda32,0xda33,0xda34,0xda35,0xda36, - 0xda37,0xda38,0xda39,0xda3a,0xda3b,0xda3c,0xda3d,0xda3e,0xda3f, - 0xda40,0xda41,0xda42,0xda43,0xda44,0xda45,0xda46,0xda47,0xda48, - 0xda49,0xda4a,0xda4b,0xda4c,0xda4d,0xda4e,0xda4f,0xda50,0xda51, - 0xda52,0xda53,0xda54,0xda55,0xda56,0xda57,0xda58,0xda59,0xda5a, - 0xda5b,0xda5c,0xda5d,0xda5e,0xda5f,0xda60,0xda61,0xda62,0xda63, - 0xda64,0xda65,0xda66,0xda67,0xda68,0xda69,0xda6a,0xda6b,0xda6c, - 0xda6d,0xda6e,0xda6f,0xda70,0xda71,0xda72,0xda73,0xda74,0xda75, - 0xda76,0xda77,0xda78,0xda79,0xda7a,0xda7b,0xda7c,0xda7d,0xda7e, - 0xda7f,0xda80,0xda81,0xda82,0xda83,0xda84,0xda85,0xda86,0xda87, - 0xda88,0xda89,0xda8a,0xda8b,0xda8c,0xda8d,0xda8e,0xda8f,0xda90, - 0xda91,0xda92,0xda93,0xda94,0xda95,0xda96,0xda97,0xda98,0xda99, - 0xda9a,0xda9b,0xda9c,0xda9d,0xda9e,0xda9f,0xdaa0,0xdaa1,0xdaa2, - 0xdaa3,0xdaa4,0xdaa5,0xdaa6,0xdaa7,0xdaa8,0xdaa9,0xdaaa,0xdaab, - 0xdaac,0xdaad,0xdaae,0xdaaf,0xdab0,0xdab1,0xdab2,0xdab3,0xdab4, - 0xdab5,0xdab6,0xdab7,0xdab8,0xdab9,0xdaba,0xdabb,0xdabc,0xdabd, - 0xdabe,0xdabf,0xdac0,0xdac1,0xdac2,0xdac3,0xdac4,0xdac5,0xdac6, - 0xdac7,0xdac8,0xdac9,0xdaca,0xdacb,0xdacc,0xdacd,0xdace,0xdacf, - 0xdad0,0xdad1,0xdad2,0xdad3,0xdad4,0xdad5,0xdad6,0xdad7,0xdad8, - 0xdad9,0xdada,0xdadb,0xdadc,0xdadd,0xdade,0xdadf,0xdae0,0xdae1, - 0xdae2,0xdae3,0xdae4,0xdae5,0xdae6,0xdae7,0xdae8,0xdae9,0xdaea, - 0xdaeb,0xdaec,0xdaed,0xdaee,0xdaef,0xdaf0,0xdaf1,0xdaf2,0xdaf3, - 0xdaf4,0xdaf5,0xdaf6,0xdaf7,0xdaf8,0xdaf9,0xdafa,0xdafb,0xdafc, - 0xdafd,0xdafe,0xdaff,0xdb00,0xdb01,0xdb02,0xdb03,0xdb04,0xdb05, - 0xdb06,0xdb07,0xdb08,0xdb09,0xdb0a,0xdb0b,0xdb0c,0xdb0d,0xdb0e, - 0xdb0f,0xdb10,0xdb11,0xdb12,0xdb13,0xdb14,0xdb15,0xdb16,0xdb17, - 0xdb18,0xdb19,0xdb1a,0xdb1b,0xdb1c,0xdb1d,0xdb1e,0xdb1f,0xdb20, - 0xdb21,0xdb22,0xdb23,0xdb24,0xdb25,0xdb26,0xdb27,0xdb28,0xdb29, - 0xdb2a,0xdb2b,0xdb2c,0xdb2d,0xdb2e,0xdb2f,0xdb30,0xdb31,0xdb32, - 0xdb33,0xdb34,0xdb35,0xdb36,0xdb37,0xdb38,0xdb39,0xdb3a,0xdb3b, - 0xdb3c,0xdb3d,0xdb3e,0xdb3f,0xdb40,0xdb41,0xdb42,0xdb43,0xdb44, - 0xdb45,0xdb46,0xdb47,0xdb48,0xdb49,0xdb4a,0xdb4b,0xdb4c,0xdb4d, - 0xdb4e,0xdb4f,0xdb50,0xdb51,0xdb52,0xdb53,0xdb54,0xdb55,0xdb56, - 0xdb57,0xdb58,0xdb59,0xdb5a,0xdb5b,0xdb5c,0xdb5d,0xdb5e,0xdb5f, - 0xdb60,0xdb61,0xdb62,0xdb63,0xdb64,0xdb65,0xdb66,0xdb67,0xdb68, - 0xdb69,0xdb6a,0xdb6b,0xdb6c,0xdb6d,0xdb6e,0xdb6f,0xdb70,0xdb71, - 0xdb72,0xdb73,0xdb74,0xdb75,0xdb76,0xdb77,0xdb78,0xdb79,0xdb7a, - 0xdb7b,0xdb7c,0xdb7d,0xdb7e,0xdb7f,0xdb80,0xdb81,0xdb82,0xdb83, - 0xdb84,0xdb85,0xdb86,0xdb87,0xdb88,0xdb89,0xdb8a,0xdb8b,0xdb8c, - 0xdb8d,0xdb8e,0xdb8f,0xdb90,0xdb91,0xdb92,0xdb93,0xdb94,0xdb95, - 0xdb96,0xdb97,0xdb98,0xdb99,0xdb9a,0xdb9b,0xdb9c,0xdb9d,0xdb9e, - 0xdb9f,0xdba0,0xdba1,0xdba2,0xdba3,0xdba4,0xdba5,0xdba6,0xdba7, - 0xdba8,0xdba9,0xdbaa,0xdbab,0xdbac,0xdbad,0xdbae,0xdbaf,0xdbb0, - 0xdbb1,0xdbb2,0xdbb3,0xdbb4,0xdbb5,0xdbb6,0xdbb7,0xdbb8,0xdbb9, - 0xdbba,0xdbbb,0xdbbc,0xdbbd,0xdbbe,0xdbbf,0xdbc0,0xdbc1,0xdbc2, - 0xdbc3,0xdbc4,0xdbc5,0xdbc6,0xdbc7,0xdbc8,0xdbc9,0xdbca,0xdbcb, - 0xdbcc,0xdbcd,0xdbce,0xdbcf,0xdbd0,0xdbd1,0xdbd2,0xdbd3,0xdbd4, - 0xdbd5,0xdbd6,0xdbd7,0xdbd8,0xdbd9,0xdbda,0xdbdb,0xdbdc,0xdbdd, - 0xdbde,0xdbdf,0xdbe0,0xdbe1,0xdbe2,0xdbe3,0xdbe4,0xdbe5,0xdbe6, - 0xdbe7,0xdbe8,0xdbe9,0xdbea,0xdbeb,0xdbec,0xdbed,0xdbee,0xdbef, - 0xdbf0,0xdbf1,0xdbf2,0xdbf3,0xdbf4,0xdbf5,0xdbf6,0xdbf7,0xdbf8, - 0xdbf9,0xdbfa,0xdbfb,0xdbfc,0xdbfd,0xdbfe,0xdbff,0xdc00,0xdc01, - 0xdc02,0xdc03,0xdc04,0xdc05,0xdc06,0xdc07,0xdc08,0xdc09,0xdc0a, - 0xdc0b,0xdc0c,0xdc0d,0xdc0e,0xdc0f,0xdc10,0xdc11,0xdc12,0xdc13, - 0xdc14,0xdc15,0xdc16,0xdc17,0xdc18,0xdc19,0xdc1a,0xdc1b,0xdc1c, - 0xdc1d,0xdc1e,0xdc1f,0xdc20,0xdc21,0xdc22,0xdc23,0xdc24,0xdc25, - 0xdc26,0xdc27,0xdc28,0xdc29,0xdc2a,0xdc2b,0xdc2c,0xdc2d,0xdc2e, - 0xdc2f,0xdc30,0xdc31,0xdc32,0xdc33,0xdc34,0xdc35,0xdc36,0xdc37, - 0xdc38,0xdc39,0xdc3a,0xdc3b,0xdc3c,0xdc3d,0xdc3e,0xdc3f,0xdc40, - 0xdc41,0xdc42,0xdc43,0xdc44,0xdc45,0xdc46,0xdc47,0xdc48,0xdc49, - 0xdc4a,0xdc4b,0xdc4c,0xdc4d,0xdc4e,0xdc4f,0xdc50,0xdc51,0xdc52, - 0xdc53,0xdc54,0xdc55,0xdc56,0xdc57,0xdc58,0xdc59,0xdc5a,0xdc5b, - 0xdc5c,0xdc5d,0xdc5e,0xdc5f,0xdc60,0xdc61,0xdc62,0xdc63,0xdc64, - 0xdc65,0xdc66,0xdc67,0xdc68,0xdc69,0xdc6a,0xdc6b,0xdc6c,0xdc6d, - 0xdc6e,0xdc6f,0xdc70,0xdc71,0xdc72,0xdc73,0xdc74,0xdc75,0xdc76, - 0xdc77,0xdc78,0xdc79,0xdc7a,0xdc7b,0xdc7c,0xdc7d,0xdc7e,0xdc7f, - 0xdc80,0xdc81,0xdc82,0xdc83,0xdc84,0xdc85,0xdc86,0xdc87,0xdc88, - 0xdc89,0xdc8a,0xdc8b,0xdc8c,0xdc8d,0xdc8e,0xdc8f,0xdc90,0xdc91, - 0xdc92,0xdc93,0xdc94,0xdc95,0xdc96,0xdc97,0xdc98,0xdc99,0xdc9a, - 0xdc9b,0xdc9c,0xdc9d,0xdc9e,0xdc9f,0xdca0,0xdca1,0xdca2,0xdca3, - 0xdca4,0xdca5,0xdca6,0xdca7,0xdca8,0xdca9,0xdcaa,0xdcab,0xdcac, - 0xdcad,0xdcae,0xdcaf,0xdcb0,0xdcb1,0xdcb2,0xdcb3,0xdcb4,0xdcb5, - 0xdcb6,0xdcb7,0xdcb8,0xdcb9,0xdcba,0xdcbb,0xdcbc,0xdcbd,0xdcbe, - 0xdcbf,0xdcc0,0xdcc1,0xdcc2,0xdcc3,0xdcc4,0xdcc5,0xdcc6,0xdcc7, - 0xdcc8,0xdcc9,0xdcca,0xdccb,0xdccc,0xdccd,0xdcce,0xdccf,0xdcd0, - 0xdcd1,0xdcd2,0xdcd3,0xdcd4,0xdcd5,0xdcd6,0xdcd7,0xdcd8,0xdcd9, - 0xdcda,0xdcdb,0xdcdc,0xdcdd,0xdcde,0xdcdf,0xdce0,0xdce1,0xdce2, - 0xdce3,0xdce4,0xdce5,0xdce6,0xdce7,0xdce8,0xdce9,0xdcea,0xdceb, - 0xdcec,0xdced,0xdcee,0xdcef,0xdcf0,0xdcf1,0xdcf2,0xdcf3,0xdcf4, - 0xdcf5,0xdcf6,0xdcf7,0xdcf8,0xdcf9,0xdcfa,0xdcfb,0xdcfc,0xdcfd, - 0xdcfe,0xdcff,0xdd00,0xdd01,0xdd02,0xdd03,0xdd04,0xdd05,0xdd06, - 0xdd07,0xdd08,0xdd09,0xdd0a,0xdd0b,0xdd0c,0xdd0d,0xdd0e,0xdd0f, - 0xdd10,0xdd11,0xdd12,0xdd13,0xdd14,0xdd15,0xdd16,0xdd17,0xdd18, - 0xdd19,0xdd1a,0xdd1b,0xdd1c,0xdd1d,0xdd1e,0xdd1f,0xdd20,0xdd21, - 0xdd22,0xdd23,0xdd24,0xdd25,0xdd26,0xdd27,0xdd28,0xdd29,0xdd2a, - 0xdd2b,0xdd2c,0xdd2d,0xdd2e,0xdd2f,0xdd30,0xdd31,0xdd32,0xdd33, - 0xdd34,0xdd35,0xdd36,0xdd37,0xdd38,0xdd39,0xdd3a,0xdd3b,0xdd3c, - 0xdd3d,0xdd3e,0xdd3f,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,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,0xdd7f,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,0xdda1,0xdda2,0xdda3,0xdda4,0xdda5,0xdda6,0xdda7,0xdda8, - 0xdda9,0xddaa,0xddab,0xddac,0xddad,0xddae,0xddaf,0xddb0,0xddb1, - 0xddb2,0xddb3,0xddb4,0xddb5,0xddb6,0xddb7,0xddb8,0xddb9,0xddba, - 0xddbb,0xddbc,0xddbd,0xddbe,0xddbf,0xddc0,0xddc1,0xddc2,0xddc3, - 0xddc4,0xddc5,0xddc6,0xddc7,0xddc8,0xddc9,0xddca,0xddcb,0xddcc, - 0xddcd,0xddce,0xddcf,0xddd0,0xddd1,0xddd2,0xddd3,0xddd4,0xddd5, - 0xddd6,0xddd7,0xddd8,0xddd9,0xddda,0xdddb,0xdddc,0xdddd,0xddde, - 0xdddf,0xdde0,0xdde1,0xdde2,0xdde3,0xdde4,0xdde5,0xdde6,0xdde7, - 0xdde8,0xdde9,0xddea,0xddeb,0xddec,0xdded,0xddee,0xddef,0xddf0, - 0xddf1,0xddf2,0xddf3,0xddf4,0xddf5,0xddf6,0xddf7,0xddf8,0xddf9, - 0xddfa,0xddfb,0xddfc,0xddfd,0xddfe,0xddff,0xde00,0xde01,0xde02, - 0xde03,0xde04,0xde05,0xde06,0xde07,0xde08,0xde09,0xde0a,0xde0b, - 0xde0c,0xde0d,0xde0e,0xde0f,0xde10,0xde11,0xde12,0xde13,0xde14, - 0xde15,0xde16,0xde17,0xde18,0xde19,0xde1a,0xde1b,0xde1c,0xde1d, - 0xde1e,0xde1f,0xde20,0xde21,0xde22,0xde23,0xde24,0xde25,0xde26, - 0xde27,0xde28,0xde29,0xde2a,0xde2b,0xde2c,0xde2d,0xde2e,0xde2f, - 0xde30,0xde31,0xde32,0xde33,0xde34,0xde35,0xde36,0xde37,0xde38, - 0xde39,0xde3a,0xde3b,0xde3c,0xde3d,0xde3e,0xde3f,0xde40,0xde41, - 0xde42,0xde43,0xde44,0xde45,0xde46,0xde47,0xde48,0xde49,0xde4a, - 0xde4b,0xde4c,0xde4d,0xde4e,0xde4f,0xde50,0xde51,0xde52,0xde53, - 0xde54,0xde55,0xde56,0xde57,0xde58,0xde59,0xde5a,0xde5b,0xde5c, - 0xde5d,0xde5e,0xde5f,0xde60,0xde61,0xde62,0xde63,0xde64,0xde65, - 0xde66,0xde67,0xde68,0xde69,0xde6a,0xde6b,0xde6c,0xde6d,0xde6e, - 0xde6f,0xde70,0xde71,0xde72,0xde73,0xde74,0xde75,0xde76,0xde77, - 0xde78,0xde79,0xde7a,0xde7b,0xde7c,0xde7d,0xde7e,0xde7f,0xde80, - 0xde81,0xde82,0xde83,0xde84,0xde85,0xde86,0xde87,0xde88,0xde89, - 0xde8a,0xde8b,0xde8c,0xde8d,0xde8e,0xde8f,0xde90,0xde91,0xde92, - 0xde93,0xde94,0xde95,0xde96,0xde97,0xde98,0xde99,0xde9a,0xde9b, - 0xde9c,0xde9d,0xde9e,0xde9f,0xdea0,0xdea1,0xdea2,0xdea3,0xdea4, - 0xdea5,0xdea6,0xdea7,0xdea8,0xdea9,0xdeaa,0xdeab,0xdeac,0xdead, - 0xdeae,0xdeaf,0xdeb0,0xdeb1,0xdeb2,0xdeb3,0xdeb4,0xdeb5,0xdeb6, - 0xdeb7,0xdeb8,0xdeb9,0xdeba,0xdebb,0xdebc,0xdebd,0xdebe,0xdebf, - 0xdec0,0xdec1,0xdec2,0xdec3,0xdec4,0xdec5,0xdec6,0xdec7,0xdec8, - 0xdec9,0xdeca,0xdecb,0xdecc,0xdecd,0xdece,0xdecf,0xded0,0xded1, - 0xded2,0xded3,0xded4,0xded5,0xded6,0xded7,0xded8,0xded9,0xdeda, - 0xdedb,0xdedc,0xdedd,0xdede,0xdedf,0xdee0,0xdee1,0xdee2,0xdee3, - 0xdee4,0xdee5,0xdee6,0xdee7,0xdee8,0xdee9,0xdeea,0xdeeb,0xdeec, - 0xdeed,0xdeee,0xdeef,0xdef0,0xdef1,0xdef2,0xdef3,0xdef4,0xdef5, - 0xdef6,0xdef7,0xdef8,0xdef9,0xdefa,0xdefb,0xdefc,0xdefd,0xdefe, - 0xdeff,0xdf00,0xdf01,0xdf02,0xdf03,0xdf04,0xdf05,0xdf06,0xdf07, - 0xdf08,0xdf09,0xdf0a,0xdf0b,0xdf0c,0xdf0d,0xdf0e,0xdf0f,0xdf10, - 0xdf11,0xdf12,0xdf13,0xdf14,0xdf15,0xdf16,0xdf17,0xdf18,0xdf19, - 0xdf1a,0xdf1b,0xdf1c,0xdf1d,0xdf1e,0xdf1f,0xdf20,0xdf21,0xdf22, - 0xdf23,0xdf24,0xdf25,0xdf26,0xdf27,0xdf28,0xdf29,0xdf2a,0xdf2b, - 0xdf2c,0xdf2d,0xdf2e,0xdf2f,0xdf30,0xdf31,0xdf32,0xdf33,0xdf34, - 0xdf35,0xdf36,0xdf37,0xdf38,0xdf39,0xdf3a,0xdf3b,0xdf3c,0xdf3d, - 0xdf3e,0xdf3f,0xdf40,0xdf41,0xdf42,0xdf43,0xdf44,0xdf45,0xdf46, - 0xdf47,0xdf48,0xdf49,0xdf4a,0xdf4b,0xdf4c,0xdf4d,0xdf4e,0xdf4f, - 0xdf50,0xdf51,0xdf52,0xdf53,0xdf54,0xdf55,0xdf56,0xdf57,0xdf58, - 0xdf59,0xdf5a,0xdf5b,0xdf5c,0xdf5d,0xdf5e,0xdf5f,0xdf60,0xdf61, - 0xdf62,0xdf63,0xdf64,0xdf65,0xdf66,0xdf67,0xdf68,0xdf69,0xdf6a, - 0xdf6b,0xdf6c,0xdf6d,0xdf6e,0xdf6f,0xdf70,0xdf71,0xdf72,0xdf73, - 0xdf74,0xdf75,0xdf76,0xdf77,0xdf78,0xdf79,0xdf7a,0xdf7b,0xdf7c, - 0xdf7d,0xdf7e,0xdf7f,0xdf80,0xdf81,0xdf82,0xdf83,0xdf84,0xdf85, - 0xdf86,0xdf87,0xdf88,0xdf89,0xdf8a,0xdf8b,0xdf8c,0xdf8d,0xdf8e, - 0xdf8f,0xdf90,0xdf91,0xdf92,0xdf93,0xdf94,0xdf95,0xdf96,0xdf97, - 0xdf98,0xdf99,0xdf9a,0xdf9b,0xdf9c,0xdf9d,0xdf9e,0xdf9f,0xdfa0, - 0xdfa1,0xdfa2,0xdfa3,0xdfa4,0xdfa5,0xdfa6,0xdfa7,0xdfa8,0xdfa9, - 0xdfaa,0xdfab,0xdfac,0xdfad,0xdfae,0xdfaf,0xdfb0,0xdfb1,0xdfb2, - 0xdfb3,0xdfb4,0xdfb5,0xdfb6,0xdfb7,0xdfb8,0xdfb9,0xdfba,0xdfbb, - 0xdfbc,0xdfbd,0xdfbe,0xdfbf,0xdfc0,0xdfc1,0xdfc2,0xdfc3,0xdfc4, - 0xdfc5,0xdfc6,0xdfc7,0xdfc8,0xdfc9,0xdfca,0xdfcb,0xdfcc,0xdfcd, - 0xdfce,0xdfcf,0xdfd0,0xdfd1,0xdfd2,0xdfd3,0xdfd4,0xdfd5,0xdfd6, - 0xdfd7,0xdfd8,0xdfd9,0xdfda,0xdfdb,0xdfdc,0xdfdd,0xdfde,0xdfdf, - 0xdfe0,0xdfe1,0xdfe2,0xdfe3,0xdfe4,0xdfe5,0xdfe6,0xdfe7,0xdfe8, - 0xdfe9,0xdfea,0xdfeb,0xdfec,0xdfed,0xdfee,0xdfef,0xdff0,0xdff1, - 0xdff2,0xdff3,0xdff4,0xdff5,0xdff6,0xdff7,0xdff8,0xdff9,0xdffa, - 0xdffb,0xdffc,0xdffd,0xdffe,0xdfff - }; -static const TUint KSurrogateLength = 2048; -static const TUint KSurrogateClass = MLineBreaker::ESgLineBreakClass; - - -// This constant defines the Unicode characters in the "ContingentBreak" (CB) category. -static const TUint16 KContingentBreak[] = - { - 0xfffc - }; -static const TUint KContingentBreakLength = 1; -static const TUint KContingentBreakClass = MLineBreaker::ECbLineBreakClass; - - -// This constant defines the Unicode characters in the "Space" (SP) category. -static const TUint16 KSpace[] = - { - 0x20 - }; -static const TUint KSpaceLength = 1; -static const TUint KSpaceClass = MLineBreaker::ESpLineBreakClass; - - -// This constant defines the Unicode characters in the "ComplexContext" category. -static const TUint16 KComplexContext[] = - { - 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,0x0e32,0x0e33, - 0x0e40,0x0e41,0x0e42,0x0e43,0x0e44,0x0e45,0x0e46,0x0e81,0x0e82,0x0e84, - 0x0e87,0x0e88,0x0e8a,0x0e8d,0x0e94,0x0e95,0x0e96,0x0e97,0x0e99,0x0e9a, - 0x0e9b,0x0e9c,0x0e9d,0x0e9e,0x0e9f,0x0ea1,0x0ea2,0x0ea3,0x0ea5,0x0ea7, - 0x0eaa,0x0eab,0x0ead,0x0eae,0x0eaf,0x0eb0,0x0eb2,0x0eb3,0x0ebd,0x0ec0, - 0x0ec1,0x0ec2,0x0ec3,0x0ec4,0x0ec6,0x0edc,0x0edd,0x1000,0x1001,0x1002, - 0x1003,0x1004,0x1005,0x1006,0x1007,0x1008,0x1009,0x100a,0x100b,0x100c, - 0x100d,0x100e,0x100f,0x1010,0x1011,0x1012,0x1013,0x1014,0x1015,0x1016, - 0x1017,0x1018,0x1019,0x101a,0x101b,0x101c,0x101d,0x101e,0x101f,0x1020, - 0x1021,0x1023,0x1024,0x1025,0x1026,0x1027,0x1029,0x102a,0x1050,0x1051, - 0x1052,0x1053,0x1054,0x1055,0x1780,0x1781,0x1782,0x1783,0x1784,0x1785, - 0x1786,0x1787,0x1788,0x1789,0x178a,0x178b,0x178c,0x178d,0x178e,0x178f, - 0x1790,0x1791,0x1792,0x1793,0x1794,0x1795,0x1796,0x1797,0x1798,0x1799, - 0x179a,0x179b,0x179c,0x179d,0x179e,0x179f,0x17a0,0x17a1,0x17a2,0x17a3, - 0x17a4,0x17a5,0x17a6,0x17a7,0x17a8,0x17a9,0x17aa,0x17ab,0x17ac,0x17ad, - 0x17ae,0x17af,0x17b0,0x17b1,0x17b2,0x17b3,0x17dd,0x1950,0x1951,0x1952, - 0x1953,0x1954,0x1955,0x1956,0x1957,0x1958,0x1959,0x195a,0x195b,0x195c, - 0x195d,0x195e,0x195f,0x1960,0x1961,0x1962,0x1963,0x1964,0x1965,0x1966, - 0x1967,0x1968,0x1969,0x196a,0x196b,0x196c,0x196d,0x1970,0x1971,0x1972, - 0x1973,0x1974,0x1980,0x1981,0x1982,0x1983,0x1984,0x1985,0x1986,0x1987, - 0x1988,0x1989,0x198a,0x198b,0x198c,0x198d,0x198e,0x198f,0x1990,0x1991, - 0x1992,0x1993,0x1994,0x1995,0x1996,0x1997,0x1998,0x1999,0x199a,0x199b, - 0x199c,0x199d,0x199e,0x199f,0x19a0,0x19a1,0x19a2,0x19a3,0x19a4,0x19a5, - 0x19a6,0x19a7,0x19a8,0x19a9,0x19b0,0x19b1,0x19b2,0x19b3,0x19b4,0x19b5, - 0x19b6,0x19b7,0x19b8,0x19b9,0x19ba,0x19bb,0x19bc,0x19bd,0x19be,0x19bf, - 0x19c0,0x19c1,0x19c2,0x19c3,0x19c4,0x19c5,0x19c6,0x19c7,0x19c8,0x19c9, - 0x19de,0x19df, - }; -static const TUint KComplexContextLength = 302; -static const TUint KComplexContextClass = MLineBreaker::ESaLineBreakClass; - - -// This constant defines the Unicode characters in the "Ambiguous" category. -static const TUint16 KAmbiguous[] = - { - 0x00a1,0x00a7,0x00a8,0x00aa,0x00b2,0x00b3,0x00b6,0x00b7,0x00b8,0x00b9, - 0x00ba,0x00bc,0x00bd,0x00be,0x00bf,0x00c6,0x00d0,0x00d7,0x00d8,0x00de, - 0x00df,0x00e0,0x00e1,0x00e6,0x00e8,0x00e9,0x00ea,0x00ec,0x00ed,0x00f0, - 0x00f2,0x00f3,0x00f7,0x00f8,0x00f9,0x00fa,0x00fc,0x00fe,0x0101,0x0111, - 0x0113,0x011b,0x0126,0x0127,0x012b,0x0131,0x0132,0x0133,0x0138,0x013f, - 0x0140,0x0141,0x0142,0x0144,0x0148,0x0149,0x014a,0x014d,0x0152,0x0153, - 0x0166,0x0167,0x016b,0x01ce,0x01d0,0x01d2,0x01d4,0x01d6,0x01d8,0x01da, - 0x01dc,0x0251,0x0261,0x02c7,0x02c9,0x02ca,0x02cb,0x02cd,0x02d0,0x02d8, - 0x02d9,0x02da,0x02db,0x02dd,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,0x0401,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,0x0451,0x2016,0x2020, - 0x2021,0x203b,0x2074,0x207f,0x2081,0x2082,0x2083,0x2084,0x2105,0x2113, - 0x2121,0x2122,0x212b,0x2154,0x2155,0x215b,0x215e,0x2160,0x2161,0x2162, - 0x2163,0x2164,0x2165,0x2166,0x2167,0x2168,0x2169,0x216a,0x216b,0x2170, - 0x2171,0x2172,0x2173,0x2174,0x2175,0x2176,0x2177,0x2178,0x2179,0x2190, - 0x2191,0x2192,0x2193,0x2194,0x2195,0x2196,0x2197,0x2198,0x2199,0x21d2, - 0x21d4,0x2200,0x2202,0x2203,0x2207,0x2208,0x220b,0x220f,0x2211,0x2215, - 0x221a,0x221d,0x221e,0x221f,0x2220,0x2223,0x2225,0x2227,0x2228,0x2229, - 0x222a,0x222b,0x222c,0x222e,0x2234,0x2235,0x2236,0x2237,0x223c,0x223d, - 0x2248,0x224c,0x2252,0x2260,0x2261,0x2264,0x2265,0x2266,0x2267,0x226a, - 0x226b,0x226e,0x226f,0x2282,0x2283,0x2286,0x2287,0x2295,0x2299,0x22a5, - 0x22bf,0x2312,0x2460,0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467, - 0x2468,0x2469,0x246a,0x246b,0x246c,0x246d,0x246e,0x246f,0x2470,0x2471, - 0x2472,0x2473,0x2474,0x2475,0x2476,0x2477,0x2478,0x2479,0x247a,0x247b, - 0x247c,0x247d,0x247e,0x247f,0x2480,0x2481,0x2482,0x2483,0x2484,0x2485, - 0x2486,0x2487,0x2488,0x2489,0x248a,0x248b,0x248c,0x248d,0x248e,0x248f, - 0x2490,0x2491,0x2492,0x2493,0x2494,0x2495,0x2496,0x2497,0x2498,0x2499, - 0x249a,0x249b,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,0x24b6,0x24b7, - 0x24b8,0x24b9,0x24ba,0x24bb,0x24bc,0x24bd,0x24be,0x24bf,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,0x24eb,0x24ec,0x24ed,0x24ee,0x24ef,0x24f0, - 0x24f1,0x24f2,0x24f3,0x24f4,0x24f5,0x24f6,0x24f7,0x24f8,0x24f9,0x24fa, - 0x24fb,0x24fc,0x24fd,0x24fe,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, - 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,0x2574,0x2580,0x2581,0x2582, - 0x2583,0x2584,0x2585,0x2586,0x2587,0x2588,0x2589,0x258a,0x258b,0x258c, - 0x258d,0x258e,0x258f,0x2592,0x2593,0x2594,0x2595,0x25a0,0x25a1,0x25a3, - 0x25a4,0x25a5,0x25a6,0x25a7,0x25a8,0x25a9,0x25b2,0x25b3,0x25b6,0x25b7, - 0x25bc,0x25bd,0x25c0,0x25c1,0x25c6,0x25c7,0x25cb,0x25ce,0x25cf,0x25d0, - 0x25d1,0x25e2,0x25e3,0x25e4,0x25e5,0x25ef,0x2605,0x2606,0x2609,0x260e, - 0x260f,0x2614,0x2615,0x2616,0x2617,0x261c,0x261e,0x2640,0x2642,0x2660, - 0x2661,0x2663,0x2664,0x2665,0x2667,0x2668,0x2669,0x266a,0x266c,0x266d, - 0x266f,0xe000,0xe001,0xe002,0xe003,0xe004,0xe005,0xe006,0xe007,0xe008, - 0xe009,0xe00a,0xe00b,0xe00c,0xe00d,0xe00e,0xe00f,0xe010,0xe011,0xe012, - 0xe013,0xe014,0xe015,0xe016,0xe017,0xe018,0xe019,0xe01a,0xe01b,0xe01c, - 0xe01d,0xe01e,0xe01f,0xe020,0xe021,0xe022,0xe023,0xe024,0xe025,0xe026, - 0xe027,0xe028,0xe029,0xe02a,0xe02b,0xe02c,0xe02d,0xe02e,0xe02f,0xe030, - 0xe031,0xe032,0xe033,0xe034,0xe035,0xe036,0xe037,0xe038,0xe039,0xe03a, - 0xe03b,0xe03c,0xe03d,0xe03e,0xe03f,0xe040,0xe041,0xe042,0xe043,0xe044, - 0xe045,0xe046,0xe047,0xe048,0xe049,0xe04a,0xe04b,0xe04c,0xe04d,0xe04e, - 0xe04f,0xe050,0xe051,0xe052,0xe053,0xe054,0xe055,0xe056,0xe057,0xe058, - 0xe059,0xe05a,0xe05b,0xe05c,0xe05d,0xe05e,0xe05f,0xe060,0xe061,0xe062, - 0xe063,0xe064,0xe065,0xe066,0xe067,0xe068,0xe069,0xe06a,0xe06b,0xe06c, - 0xe06d,0xe06e,0xe06f,0xe070,0xe071,0xe072,0xe073,0xe074,0xe075,0xe076, - 0xe077,0xe078,0xe079,0xe07a,0xe07b,0xe07c,0xe07d,0xe07e,0xe07f,0xe080, - 0xe081,0xe082,0xe083,0xe084,0xe085,0xe086,0xe087,0xe088,0xe089,0xe08a, - 0xe08b,0xe08c,0xe08d,0xe08e,0xe08f,0xe090,0xe091,0xe092,0xe093,0xe094, - 0xe095,0xe096,0xe097,0xe098,0xe099,0xe09a,0xe09b,0xe09c,0xe09d,0xe09e, - 0xe09f,0xe0a0,0xe0a1,0xe0a2,0xe0a3,0xe0a4,0xe0a5,0xe0a6,0xe0a7,0xe0a8, - 0xe0a9,0xe0aa,0xe0ab,0xe0ac,0xe0ad,0xe0ae,0xe0af,0xe0b0,0xe0b1,0xe0b2, - 0xe0b3,0xe0b4,0xe0b5,0xe0b6,0xe0b7,0xe0b8,0xe0b9,0xe0ba,0xe0bb,0xe0bc, - 0xe0bd,0xe0be,0xe0bf,0xe0c0,0xe0c1,0xe0c2,0xe0c3,0xe0c4,0xe0c5,0xe0c6, - 0xe0c7,0xe0c8,0xe0c9,0xe0ca,0xe0cb,0xe0cc,0xe0cd,0xe0ce,0xe0cf,0xe0d0, - 0xe0d1,0xe0d2,0xe0d3,0xe0d4,0xe0d5,0xe0d6,0xe0d7,0xe0d8,0xe0d9,0xe0da, - 0xe0db,0xe0dc,0xe0dd,0xe0de,0xe0df,0xe0e0,0xe0e1,0xe0e2,0xe0e3,0xe0e4, - 0xe0e5,0xe0e6,0xe0e7,0xe0e8,0xe0e9,0xe0ea,0xe0eb,0xe0ec,0xe0ed,0xe0ee, - 0xe0ef,0xe0f0,0xe0f1,0xe0f2,0xe0f3,0xe0f4,0xe0f5,0xe0f6,0xe0f7,0xe0f8, - 0xe0f9,0xe0fa,0xe0fb,0xe0fc,0xe0fd,0xe0fe,0xe0ff,0xe100,0xe101,0xe102, - 0xe103,0xe104,0xe105,0xe106,0xe107,0xe108,0xe109,0xe10a,0xe10b,0xe10c, - 0xe10d,0xe10e,0xe10f,0xe110,0xe111,0xe112,0xe113,0xe114,0xe115,0xe116, - 0xe117,0xe118,0xe119,0xe11a,0xe11b,0xe11c,0xe11d,0xe11e,0xe11f,0xe120, - 0xe121,0xe122,0xe123,0xe124,0xe125,0xe126,0xe127,0xe128,0xe129,0xe12a, - 0xe12b,0xe12c,0xe12d,0xe12e,0xe12f,0xe130,0xe131,0xe132,0xe133,0xe134, - 0xe135,0xe136,0xe137,0xe138,0xe139,0xe13a,0xe13b,0xe13c,0xe13d,0xe13e, - 0xe13f,0xe140,0xe141,0xe142,0xe143,0xe144,0xe145,0xe146,0xe147,0xe148, - 0xe149,0xe14a,0xe14b,0xe14c,0xe14d,0xe14e,0xe14f,0xe150,0xe151,0xe152, - 0xe153,0xe154,0xe155,0xe156,0xe157,0xe158,0xe159,0xe15a,0xe15b,0xe15c, - 0xe15d,0xe15e,0xe15f,0xe160,0xe161,0xe162,0xe163,0xe164,0xe165,0xe166, - 0xe167,0xe168,0xe169,0xe16a,0xe16b,0xe16c,0xe16d,0xe16e,0xe16f,0xe170, - 0xe171,0xe172,0xe173,0xe174,0xe175,0xe176,0xe177,0xe178,0xe179,0xe17a, - 0xe17b,0xe17c,0xe17d,0xe17e,0xe17f,0xe180,0xe181,0xe182,0xe183,0xe184, - 0xe185,0xe186,0xe187,0xe188,0xe189,0xe18a,0xe18b,0xe18c,0xe18d,0xe18e, - 0xe18f,0xe190,0xe191,0xe192,0xe193,0xe194,0xe195,0xe196,0xe197,0xe198, - 0xe199,0xe19a,0xe19b,0xe19c,0xe19d,0xe19e,0xe19f,0xe1a0,0xe1a1,0xe1a2, - 0xe1a3,0xe1a4,0xe1a5,0xe1a6,0xe1a7,0xe1a8,0xe1a9,0xe1aa,0xe1ab,0xe1ac, - 0xe1ad,0xe1ae,0xe1af,0xe1b0,0xe1b1,0xe1b2,0xe1b3,0xe1b4,0xe1b5,0xe1b6, - 0xe1b7,0xe1b8,0xe1b9,0xe1ba,0xe1bb,0xe1bc,0xe1bd,0xe1be,0xe1bf,0xe1c0, - 0xe1c1,0xe1c2,0xe1c3,0xe1c4,0xe1c5,0xe1c6,0xe1c7,0xe1c8,0xe1c9,0xe1ca, - 0xe1cb,0xe1cc,0xe1cd,0xe1ce,0xe1cf,0xe1d0,0xe1d1,0xe1d2,0xe1d3,0xe1d4, - 0xe1d5,0xe1d6,0xe1d7,0xe1d8,0xe1d9,0xe1da,0xe1db,0xe1dc,0xe1dd,0xe1de, - 0xe1df,0xe1e0,0xe1e1,0xe1e2,0xe1e3,0xe1e4,0xe1e5,0xe1e6,0xe1e7,0xe1e8, - 0xe1e9,0xe1ea,0xe1eb,0xe1ec,0xe1ed,0xe1ee,0xe1ef,0xe1f0,0xe1f1,0xe1f2, - 0xe1f3,0xe1f4,0xe1f5,0xe1f6,0xe1f7,0xe1f8,0xe1f9,0xe1fa,0xe1fb,0xe1fc, - 0xe1fd,0xe1fe,0xe1ff,0xe200,0xe201,0xe202,0xe203,0xe204,0xe205,0xe206, - 0xe207,0xe208,0xe209,0xe20a,0xe20b,0xe20c,0xe20d,0xe20e,0xe20f,0xe210, - 0xe211,0xe212,0xe213,0xe214,0xe215,0xe216,0xe217,0xe218,0xe219,0xe21a, - 0xe21b,0xe21c,0xe21d,0xe21e,0xe21f,0xe220,0xe221,0xe222,0xe223,0xe224, - 0xe225,0xe226,0xe227,0xe228,0xe229,0xe22a,0xe22b,0xe22c,0xe22d,0xe22e, - 0xe22f,0xe230,0xe231,0xe232,0xe233,0xe234,0xe235,0xe236,0xe237,0xe238, - 0xe239,0xe23a,0xe23b,0xe23c,0xe23d,0xe23e,0xe23f,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,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, - 0xe27f,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,0xe2a1,0xe2a2,0xe2a3,0xe2a4,0xe2a5,0xe2a6, - 0xe2a7,0xe2a8,0xe2a9,0xe2aa,0xe2ab,0xe2ac,0xe2ad,0xe2ae,0xe2af,0xe2b0, - 0xe2b1,0xe2b2,0xe2b3,0xe2b4,0xe2b5,0xe2b6,0xe2b7,0xe2b8,0xe2b9,0xe2ba, - 0xe2bb,0xe2bc,0xe2bd,0xe2be,0xe2bf,0xe2c0,0xe2c1,0xe2c2,0xe2c3,0xe2c4, - 0xe2c5,0xe2c6,0xe2c7,0xe2c8,0xe2c9,0xe2ca,0xe2cb,0xe2cc,0xe2cd,0xe2ce, - 0xe2cf,0xe2d0,0xe2d1,0xe2d2,0xe2d3,0xe2d4,0xe2d5,0xe2d6,0xe2d7,0xe2d8, - 0xe2d9,0xe2da,0xe2db,0xe2dc,0xe2dd,0xe2de,0xe2df,0xe2e0,0xe2e1,0xe2e2, - 0xe2e3,0xe2e4,0xe2e5,0xe2e6,0xe2e7,0xe2e8,0xe2e9,0xe2ea,0xe2eb,0xe2ec, - 0xe2ed,0xe2ee,0xe2ef,0xe2f0,0xe2f1,0xe2f2,0xe2f3,0xe2f4,0xe2f5,0xe2f6, - 0xe2f7,0xe2f8,0xe2f9,0xe2fa,0xe2fb,0xe2fc,0xe2fd,0xe2fe,0xe2ff,0xe300, - 0xe301,0xe302,0xe303,0xe304,0xe305,0xe306,0xe307,0xe308,0xe309,0xe30a, - 0xe30b,0xe30c,0xe30d,0xe30e,0xe30f,0xe310,0xe311,0xe312,0xe313,0xe314, - 0xe315,0xe316,0xe317,0xe318,0xe319,0xe31a,0xe31b,0xe31c,0xe31d,0xe31e, - 0xe31f,0xe320,0xe321,0xe322,0xe323,0xe324,0xe325,0xe326,0xe327,0xe328, - 0xe329,0xe32a,0xe32b,0xe32c,0xe32d,0xe32e,0xe32f,0xe330,0xe331,0xe332, - 0xe333,0xe334,0xe335,0xe336,0xe337,0xe338,0xe339,0xe33a,0xe33b,0xe33c, - 0xe33d,0xe33e,0xe33f,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,0xe36e, - 0xe36f,0xe370,0xe371,0xe372,0xe373,0xe374,0xe375,0xe376,0xe377,0xe378, - 0xe379,0xe37a,0xe37b,0xe37c,0xe37d,0xe37e,0xe37f,0xe380,0xe381,0xe382, - 0xe383,0xe384,0xe385,0xe386,0xe387,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, - 0xe3a1,0xe3a2,0xe3a3,0xe3a4,0xe3a5,0xe3a6,0xe3a7,0xe3a8,0xe3a9,0xe3aa, - 0xe3ab,0xe3ac,0xe3ad,0xe3ae,0xe3af,0xe3b0,0xe3b1,0xe3b2,0xe3b3,0xe3b4, - 0xe3b5,0xe3b6,0xe3b7,0xe3b8,0xe3b9,0xe3ba,0xe3bb,0xe3bc,0xe3bd,0xe3be, - 0xe3bf,0xe3c0,0xe3c1,0xe3c2,0xe3c3,0xe3c4,0xe3c5,0xe3c6,0xe3c7,0xe3c8, - 0xe3c9,0xe3ca,0xe3cb,0xe3cc,0xe3cd,0xe3ce,0xe3cf,0xe3d0,0xe3d1,0xe3d2, - 0xe3d3,0xe3d4,0xe3d5,0xe3d6,0xe3d7,0xe3d8,0xe3d9,0xe3da,0xe3db,0xe3dc, - 0xe3dd,0xe3de,0xe3df,0xe3e0,0xe3e1,0xe3e2,0xe3e3,0xe3e4,0xe3e5,0xe3e6, - 0xe3e7,0xe3e8,0xe3e9,0xe3ea,0xe3eb,0xe3ec,0xe3ed,0xe3ee,0xe3ef,0xe3f0, - 0xe3f1,0xe3f2,0xe3f3,0xe3f4,0xe3f5,0xe3f6,0xe3f7,0xe3f8,0xe3f9,0xe3fa, - 0xe3fb,0xe3fc,0xe3fd,0xe3fe,0xe3ff,0xe400,0xe401,0xe402,0xe403,0xe404, - 0xe405,0xe406,0xe407,0xe408,0xe409,0xe40a,0xe40b,0xe40c,0xe40d,0xe40e, - 0xe40f,0xe410,0xe411,0xe412,0xe413,0xe414,0xe415,0xe416,0xe417,0xe418, - 0xe419,0xe41a,0xe41b,0xe41c,0xe41d,0xe41e,0xe41f,0xe420,0xe421,0xe422, - 0xe423,0xe424,0xe425,0xe426,0xe427,0xe428,0xe429,0xe42a,0xe42b,0xe42c, - 0xe42d,0xe42e,0xe42f,0xe430,0xe431,0xe432,0xe433,0xe434,0xe435,0xe436, - 0xe437,0xe438,0xe439,0xe43a,0xe43b,0xe43c,0xe43d,0xe43e,0xe43f,0xe440, - 0xe441,0xe442,0xe443,0xe444,0xe445,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, - 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,0xe47f,0xe480,0xe481,0xe482,0xe483,0xe484,0xe485,0xe486, - 0xe487,0xe488,0xe489,0xe48a,0xe48b,0xe48c,0xe48d,0xe48e,0xe48f,0xe490, - 0xe491,0xe492,0xe493,0xe494,0xe495,0xe496,0xe497,0xe498,0xe499,0xe49a, - 0xe49b,0xe49c,0xe49d,0xe49e,0xe49f,0xe4a0,0xe4a1,0xe4a2,0xe4a3,0xe4a4, - 0xe4a5,0xe4a6,0xe4a7,0xe4a8,0xe4a9,0xe4aa,0xe4ab,0xe4ac,0xe4ad,0xe4ae, - 0xe4af,0xe4b0,0xe4b1,0xe4b2,0xe4b3,0xe4b4,0xe4b5,0xe4b6,0xe4b7,0xe4b8, - 0xe4b9,0xe4ba,0xe4bb,0xe4bc,0xe4bd,0xe4be,0xe4bf,0xe4c0,0xe4c1,0xe4c2, - 0xe4c3,0xe4c4,0xe4c5,0xe4c6,0xe4c7,0xe4c8,0xe4c9,0xe4ca,0xe4cb,0xe4cc, - 0xe4cd,0xe4ce,0xe4cf,0xe4d0,0xe4d1,0xe4d2,0xe4d3,0xe4d4,0xe4d5,0xe4d6, - 0xe4d7,0xe4d8,0xe4d9,0xe4da,0xe4db,0xe4dc,0xe4dd,0xe4de,0xe4df,0xe4e0, - 0xe4e1,0xe4e2,0xe4e3,0xe4e4,0xe4e5,0xe4e6,0xe4e7,0xe4e8,0xe4e9,0xe4ea, - 0xe4eb,0xe4ec,0xe4ed,0xe4ee,0xe4ef,0xe4f0,0xe4f1,0xe4f2,0xe4f3,0xe4f4, - 0xe4f5,0xe4f6,0xe4f7,0xe4f8,0xe4f9,0xe4fa,0xe4fb,0xe4fc,0xe4fd,0xe4fe, - 0xe4ff,0xe500,0xe501,0xe502,0xe503,0xe504,0xe505,0xe506,0xe507,0xe508, - 0xe509,0xe50a,0xe50b,0xe50c,0xe50d,0xe50e,0xe50f,0xe510,0xe511,0xe512, - 0xe513,0xe514,0xe515,0xe516,0xe517,0xe518,0xe519,0xe51a,0xe51b,0xe51c, - 0xe51d,0xe51e,0xe51f,0xe520,0xe521,0xe522,0xe523,0xe524,0xe525,0xe526, - 0xe527,0xe528,0xe529,0xe52a,0xe52b,0xe52c,0xe52d,0xe52e,0xe52f,0xe530, - 0xe531,0xe532,0xe533,0xe534,0xe535,0xe536,0xe537,0xe538,0xe539,0xe53a, - 0xe53b,0xe53c,0xe53d,0xe53e,0xe53f,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,0xe574,0xe575,0xe576, - 0xe577,0xe578,0xe579,0xe57a,0xe57b,0xe57c,0xe57d,0xe57e,0xe57f,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,0xe5a0,0xe5a1,0xe5a2,0xe5a3,0xe5a4,0xe5a5,0xe5a6,0xe5a7,0xe5a8, - 0xe5a9,0xe5aa,0xe5ab,0xe5ac,0xe5ad,0xe5ae,0xe5af,0xe5b0,0xe5b1,0xe5b2, - 0xe5b3,0xe5b4,0xe5b5,0xe5b6,0xe5b7,0xe5b8,0xe5b9,0xe5ba,0xe5bb,0xe5bc, - 0xe5bd,0xe5be,0xe5bf,0xe5c0,0xe5c1,0xe5c2,0xe5c3,0xe5c4,0xe5c5,0xe5c6, - 0xe5c7,0xe5c8,0xe5c9,0xe5ca,0xe5cb,0xe5cc,0xe5cd,0xe5ce,0xe5cf,0xe5d0, - 0xe5d1,0xe5d2,0xe5d3,0xe5d4,0xe5d5,0xe5d6,0xe5d7,0xe5d8,0xe5d9,0xe5da, - 0xe5db,0xe5dc,0xe5dd,0xe5de,0xe5df,0xe5e0,0xe5e1,0xe5e2,0xe5e3,0xe5e4, - 0xe5e5,0xe5e6,0xe5e7,0xe5e8,0xe5e9,0xe5ea,0xe5eb,0xe5ec,0xe5ed,0xe5ee, - 0xe5ef,0xe5f0,0xe5f1,0xe5f2,0xe5f3,0xe5f4,0xe5f5,0xe5f6,0xe5f7,0xe5f8, - 0xe5f9,0xe5fa,0xe5fb,0xe5fc,0xe5fd,0xe5fe,0xe5ff,0xe600,0xe601,0xe602, - 0xe603,0xe604,0xe605,0xe606,0xe607,0xe608,0xe609,0xe60a,0xe60b,0xe60c, - 0xe60d,0xe60e,0xe60f,0xe610,0xe611,0xe612,0xe613,0xe614,0xe615,0xe616, - 0xe617,0xe618,0xe619,0xe61a,0xe61b,0xe61c,0xe61d,0xe61e,0xe61f,0xe620, - 0xe621,0xe622,0xe623,0xe624,0xe625,0xe626,0xe627,0xe628,0xe629,0xe62a, - 0xe62b,0xe62c,0xe62d,0xe62e,0xe62f,0xe630,0xe631,0xe632,0xe633,0xe634, - 0xe635,0xe636,0xe637,0xe638,0xe639,0xe63a,0xe63b,0xe63c,0xe63d,0xe63e, - 0xe63f,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,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,0xe67f,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,0xe69e,0xe69f,0xe6a0,0xe6a1,0xe6a2, - 0xe6a3,0xe6a4,0xe6a5,0xe6a6,0xe6a7,0xe6a8,0xe6a9,0xe6aa,0xe6ab,0xe6ac, - 0xe6ad,0xe6ae,0xe6af,0xe6b0,0xe6b1,0xe6b2,0xe6b3,0xe6b4,0xe6b5,0xe6b6, - 0xe6b7,0xe6b8,0xe6b9,0xe6ba,0xe6bb,0xe6bc,0xe6bd,0xe6be,0xe6bf,0xe6c0, - 0xe6c1,0xe6c2,0xe6c3,0xe6c4,0xe6c5,0xe6c6,0xe6c7,0xe6c8,0xe6c9,0xe6ca, - 0xe6cb,0xe6cc,0xe6cd,0xe6ce,0xe6cf,0xe6d0,0xe6d1,0xe6d2,0xe6d3,0xe6d4, - 0xe6d5,0xe6d6,0xe6d7,0xe6d8,0xe6d9,0xe6da,0xe6db,0xe6dc,0xe6dd,0xe6de, - 0xe6df,0xe6e0,0xe6e1,0xe6e2,0xe6e3,0xe6e4,0xe6e5,0xe6e6,0xe6e7,0xe6e8, - 0xe6e9,0xe6ea,0xe6eb,0xe6ec,0xe6ed,0xe6ee,0xe6ef,0xe6f0,0xe6f1,0xe6f2, - 0xe6f3,0xe6f4,0xe6f5,0xe6f6,0xe6f7,0xe6f8,0xe6f9,0xe6fa,0xe6fb,0xe6fc, - 0xe6fd,0xe6fe,0xe6ff,0xe700,0xe701,0xe702,0xe703,0xe704,0xe705,0xe706, - 0xe707,0xe708,0xe709,0xe70a,0xe70b,0xe70c,0xe70d,0xe70e,0xe70f,0xe710, - 0xe711,0xe712,0xe713,0xe714,0xe715,0xe716,0xe717,0xe718,0xe719,0xe71a, - 0xe71b,0xe71c,0xe71d,0xe71e,0xe71f,0xe720,0xe721,0xe722,0xe723,0xe724, - 0xe725,0xe726,0xe727,0xe728,0xe729,0xe72a,0xe72b,0xe72c,0xe72d,0xe72e, - 0xe72f,0xe730,0xe731,0xe732,0xe733,0xe734,0xe735,0xe736,0xe737,0xe738, - 0xe739,0xe73a,0xe73b,0xe73c,0xe73d,0xe73e,0xe73f,0xe740,0xe741,0xe742, - 0xe743,0xe744,0xe745,0xe746,0xe747,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,0xe771,0xe772,0xe773,0xe774, - 0xe775,0xe776,0xe777,0xe778,0xe779,0xe77a,0xe77b,0xe77c,0xe77d,0xe77e, - 0xe77f,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,0xe7a1,0xe7a2,0xe7a3,0xe7a4,0xe7a5,0xe7a6, - 0xe7a7,0xe7a8,0xe7a9,0xe7aa,0xe7ab,0xe7ac,0xe7ad,0xe7ae,0xe7af,0xe7b0, - 0xe7b1,0xe7b2,0xe7b3,0xe7b4,0xe7b5,0xe7b6,0xe7b7,0xe7b8,0xe7b9,0xe7ba, - 0xe7bb,0xe7bc,0xe7bd,0xe7be,0xe7bf,0xe7c0,0xe7c1,0xe7c2,0xe7c3,0xe7c4, - 0xe7c5,0xe7c6,0xe7c7,0xe7c8,0xe7c9,0xe7ca,0xe7cb,0xe7cc,0xe7cd,0xe7ce, - 0xe7cf,0xe7d0,0xe7d1,0xe7d2,0xe7d3,0xe7d4,0xe7d5,0xe7d6,0xe7d7,0xe7d8, - 0xe7d9,0xe7da,0xe7db,0xe7dc,0xe7dd,0xe7de,0xe7df,0xe7e0,0xe7e1,0xe7e2, - 0xe7e3,0xe7e4,0xe7e5,0xe7e6,0xe7e7,0xe7e8,0xe7e9,0xe7ea,0xe7eb,0xe7ec, - 0xe7ed,0xe7ee,0xe7ef,0xe7f0,0xe7f1,0xe7f2,0xe7f3,0xe7f4,0xe7f5,0xe7f6, - 0xe7f7,0xe7f8,0xe7f9,0xe7fa,0xe7fb,0xe7fc,0xe7fd,0xe7fe,0xe7ff,0xe800, - 0xe801,0xe802,0xe803,0xe804,0xe805,0xe806,0xe807,0xe808,0xe809,0xe80a, - 0xe80b,0xe80c,0xe80d,0xe80e,0xe80f,0xe810,0xe811,0xe812,0xe813,0xe814, - 0xe815,0xe816,0xe817,0xe818,0xe819,0xe81a,0xe81b,0xe81c,0xe81d,0xe81e, - 0xe81f,0xe820,0xe821,0xe822,0xe823,0xe824,0xe825,0xe826,0xe827,0xe828, - 0xe829,0xe82a,0xe82b,0xe82c,0xe82d,0xe82e,0xe82f,0xe830,0xe831,0xe832, - 0xe833,0xe834,0xe835,0xe836,0xe837,0xe838,0xe839,0xe83a,0xe83b,0xe83c, - 0xe83d,0xe83e,0xe83f,0xe840,0xe841,0xe842,0xe843,0xe844,0xe845,0xe846, - 0xe847,0xe848,0xe849,0xe84a,0xe84b,0xe84c,0xe84d,0xe84e,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,0xe87b,0xe87c,0xe87d,0xe87e,0xe87f,0xe880,0xe881,0xe882, - 0xe883,0xe884,0xe885,0xe886,0xe887,0xe888,0xe889,0xe88a,0xe88b,0xe88c, - 0xe88d,0xe88e,0xe88f,0xe890,0xe891,0xe892,0xe893,0xe894,0xe895,0xe896, - 0xe897,0xe898,0xe899,0xe89a,0xe89b,0xe89c,0xe89d,0xe89e,0xe89f,0xe8a0, - 0xe8a1,0xe8a2,0xe8a3,0xe8a4,0xe8a5,0xe8a6,0xe8a7,0xe8a8,0xe8a9,0xe8aa, - 0xe8ab,0xe8ac,0xe8ad,0xe8ae,0xe8af,0xe8b0,0xe8b1,0xe8b2,0xe8b3,0xe8b4, - 0xe8b5,0xe8b6,0xe8b7,0xe8b8,0xe8b9,0xe8ba,0xe8bb,0xe8bc,0xe8bd,0xe8be, - 0xe8bf,0xe8c0,0xe8c1,0xe8c2,0xe8c3,0xe8c4,0xe8c5,0xe8c6,0xe8c7,0xe8c8, - 0xe8c9,0xe8ca,0xe8cb,0xe8cc,0xe8cd,0xe8ce,0xe8cf,0xe8d0,0xe8d1,0xe8d2, - 0xe8d3,0xe8d4,0xe8d5,0xe8d6,0xe8d7,0xe8d8,0xe8d9,0xe8da,0xe8db,0xe8dc, - 0xe8dd,0xe8de,0xe8df,0xe8e0,0xe8e1,0xe8e2,0xe8e3,0xe8e4,0xe8e5,0xe8e6, - 0xe8e7,0xe8e8,0xe8e9,0xe8ea,0xe8eb,0xe8ec,0xe8ed,0xe8ee,0xe8ef,0xe8f0, - 0xe8f1,0xe8f2,0xe8f3,0xe8f4,0xe8f5,0xe8f6,0xe8f7,0xe8f8,0xe8f9,0xe8fa, - 0xe8fb,0xe8fc,0xe8fd,0xe8fe,0xe8ff,0xe900,0xe901,0xe902,0xe903,0xe904, - 0xe905,0xe906,0xe907,0xe908,0xe909,0xe90a,0xe90b,0xe90c,0xe90d,0xe90e, - 0xe90f,0xe910,0xe911,0xe912,0xe913,0xe914,0xe915,0xe916,0xe917,0xe918, - 0xe919,0xe91a,0xe91b,0xe91c,0xe91d,0xe91e,0xe91f,0xe920,0xe921,0xe922, - 0xe923,0xe924,0xe925,0xe926,0xe927,0xe928,0xe929,0xe92a,0xe92b,0xe92c, - 0xe92d,0xe92e,0xe92f,0xe930,0xe931,0xe932,0xe933,0xe934,0xe935,0xe936, - 0xe937,0xe938,0xe939,0xe93a,0xe93b,0xe93c,0xe93d,0xe93e,0xe93f,0xe940, - 0xe941,0xe942,0xe943,0xe944,0xe945,0xe946,0xe947,0xe948,0xe949,0xe94a, - 0xe94b,0xe94c,0xe94d,0xe94e,0xe94f,0xe950,0xe951,0xe952,0xe953,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,0xe97f,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,0xe9a1,0xe9a2,0xe9a3,0xe9a4, - 0xe9a5,0xe9a6,0xe9a7,0xe9a8,0xe9a9,0xe9aa,0xe9ab,0xe9ac,0xe9ad,0xe9ae, - 0xe9af,0xe9b0,0xe9b1,0xe9b2,0xe9b3,0xe9b4,0xe9b5,0xe9b6,0xe9b7,0xe9b8, - 0xe9b9,0xe9ba,0xe9bb,0xe9bc,0xe9bd,0xe9be,0xe9bf,0xe9c0,0xe9c1,0xe9c2, - 0xe9c3,0xe9c4,0xe9c5,0xe9c6,0xe9c7,0xe9c8,0xe9c9,0xe9ca,0xe9cb,0xe9cc, - 0xe9cd,0xe9ce,0xe9cf,0xe9d0,0xe9d1,0xe9d2,0xe9d3,0xe9d4,0xe9d5,0xe9d6, - 0xe9d7,0xe9d8,0xe9d9,0xe9da,0xe9db,0xe9dc,0xe9dd,0xe9de,0xe9df,0xe9e0, - 0xe9e1,0xe9e2,0xe9e3,0xe9e4,0xe9e5,0xe9e6,0xe9e7,0xe9e8,0xe9e9,0xe9ea, - 0xe9eb,0xe9ec,0xe9ed,0xe9ee,0xe9ef,0xe9f0,0xe9f1,0xe9f2,0xe9f3,0xe9f4, - 0xe9f5,0xe9f6,0xe9f7,0xe9f8,0xe9f9,0xe9fa,0xe9fb,0xe9fc,0xe9fd,0xe9fe, - 0xe9ff,0xea00,0xea01,0xea02,0xea03,0xea04,0xea05,0xea06,0xea07,0xea08, - 0xea09,0xea0a,0xea0b,0xea0c,0xea0d,0xea0e,0xea0f,0xea10,0xea11,0xea12, - 0xea13,0xea14,0xea15,0xea16,0xea17,0xea18,0xea19,0xea1a,0xea1b,0xea1c, - 0xea1d,0xea1e,0xea1f,0xea20,0xea21,0xea22,0xea23,0xea24,0xea25,0xea26, - 0xea27,0xea28,0xea29,0xea2a,0xea2b,0xea2c,0xea2d,0xea2e,0xea2f,0xea30, - 0xea31,0xea32,0xea33,0xea34,0xea35,0xea36,0xea37,0xea38,0xea39,0xea3a, - 0xea3b,0xea3c,0xea3d,0xea3e,0xea3f,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,0xea5c,0xea5d,0xea5e,0xea5f,0xea60,0xea61,0xea62, - 0xea63,0xea64,0xea65,0xea66,0xea67,0xea68,0xea69,0xea6a,0xea6b,0xea6c, - 0xea6d,0xea6e,0xea6f,0xea70,0xea71,0xea72,0xea73,0xea74,0xea75,0xea76, - 0xea77,0xea78,0xea79,0xea7a,0xea7b,0xea7c,0xea7d,0xea7e,0xea7f,0xea80, - 0xea81,0xea82,0xea83,0xea84,0xea85,0xea86,0xea87,0xea88,0xea89,0xea8a, - 0xea8b,0xea8c,0xea8d,0xea8e,0xea8f,0xea90,0xea91,0xea92,0xea93,0xea94, - 0xea95,0xea96,0xea97,0xea98,0xea99,0xea9a,0xea9b,0xea9c,0xea9d,0xea9e, - 0xea9f,0xeaa0,0xeaa1,0xeaa2,0xeaa3,0xeaa4,0xeaa5,0xeaa6,0xeaa7,0xeaa8, - 0xeaa9,0xeaaa,0xeaab,0xeaac,0xeaad,0xeaae,0xeaaf,0xeab0,0xeab1,0xeab2, - 0xeab3,0xeab4,0xeab5,0xeab6,0xeab7,0xeab8,0xeab9,0xeaba,0xeabb,0xeabc, - 0xeabd,0xeabe,0xeabf,0xeac0,0xeac1,0xeac2,0xeac3,0xeac4,0xeac5,0xeac6, - 0xeac7,0xeac8,0xeac9,0xeaca,0xeacb,0xeacc,0xeacd,0xeace,0xeacf,0xead0, - 0xead1,0xead2,0xead3,0xead4,0xead5,0xead6,0xead7,0xead8,0xead9,0xeada, - 0xeadb,0xeadc,0xeadd,0xeade,0xeadf,0xeae0,0xeae1,0xeae2,0xeae3,0xeae4, - 0xeae5,0xeae6,0xeae7,0xeae8,0xeae9,0xeaea,0xeaeb,0xeaec,0xeaed,0xeaee, - 0xeaef,0xeaf0,0xeaf1,0xeaf2,0xeaf3,0xeaf4,0xeaf5,0xeaf6,0xeaf7,0xeaf8, - 0xeaf9,0xeafa,0xeafb,0xeafc,0xeafd,0xeafe,0xeaff,0xeb00,0xeb01,0xeb02, - 0xeb03,0xeb04,0xeb05,0xeb06,0xeb07,0xeb08,0xeb09,0xeb0a,0xeb0b,0xeb0c, - 0xeb0d,0xeb0e,0xeb0f,0xeb10,0xeb11,0xeb12,0xeb13,0xeb14,0xeb15,0xeb16, - 0xeb17,0xeb18,0xeb19,0xeb1a,0xeb1b,0xeb1c,0xeb1d,0xeb1e,0xeb1f,0xeb20, - 0xeb21,0xeb22,0xeb23,0xeb24,0xeb25,0xeb26,0xeb27,0xeb28,0xeb29,0xeb2a, - 0xeb2b,0xeb2c,0xeb2d,0xeb2e,0xeb2f,0xeb30,0xeb31,0xeb32,0xeb33,0xeb34, - 0xeb35,0xeb36,0xeb37,0xeb38,0xeb39,0xeb3a,0xeb3b,0xeb3c,0xeb3d,0xeb3e, - 0xeb3f,0xeb40,0xeb41,0xeb42,0xeb43,0xeb44,0xeb45,0xeb46,0xeb47,0xeb48, - 0xeb49,0xeb4a,0xeb4b,0xeb4c,0xeb4d,0xeb4e,0xeb4f,0xeb50,0xeb51,0xeb52, - 0xeb53,0xeb54,0xeb55,0xeb56,0xeb57,0xeb58,0xeb59,0xeb5a,0xeb5b,0xeb5c, - 0xeb5d,0xeb5e,0xeb5f,0xeb60,0xeb61,0xeb62,0xeb63,0xeb64,0xeb65,0xeb66, - 0xeb67,0xeb68,0xeb69,0xeb6a,0xeb6b,0xeb6c,0xeb6d,0xeb6e,0xeb6f,0xeb70, - 0xeb71,0xeb72,0xeb73,0xeb74,0xeb75,0xeb76,0xeb77,0xeb78,0xeb79,0xeb7a, - 0xeb7b,0xeb7c,0xeb7d,0xeb7e,0xeb7f,0xeb80,0xeb81,0xeb82,0xeb83,0xeb84, - 0xeb85,0xeb86,0xeb87,0xeb88,0xeb89,0xeb8a,0xeb8b,0xeb8c,0xeb8d,0xeb8e, - 0xeb8f,0xeb90,0xeb91,0xeb92,0xeb93,0xeb94,0xeb95,0xeb96,0xeb97,0xeb98, - 0xeb99,0xeb9a,0xeb9b,0xeb9c,0xeb9d,0xeb9e,0xeb9f,0xeba0,0xeba1,0xeba2, - 0xeba3,0xeba4,0xeba5,0xeba6,0xeba7,0xeba8,0xeba9,0xebaa,0xebab,0xebac, - 0xebad,0xebae,0xebaf,0xebb0,0xebb1,0xebb2,0xebb3,0xebb4,0xebb5,0xebb6, - 0xebb7,0xebb8,0xebb9,0xebba,0xebbb,0xebbc,0xebbd,0xebbe,0xebbf,0xebc0, - 0xebc1,0xebc2,0xebc3,0xebc4,0xebc5,0xebc6,0xebc7,0xebc8,0xebc9,0xebca, - 0xebcb,0xebcc,0xebcd,0xebce,0xebcf,0xebd0,0xebd1,0xebd2,0xebd3,0xebd4, - 0xebd5,0xebd6,0xebd7,0xebd8,0xebd9,0xebda,0xebdb,0xebdc,0xebdd,0xebde, - 0xebdf,0xebe0,0xebe1,0xebe2,0xebe3,0xebe4,0xebe5,0xebe6,0xebe7,0xebe8, - 0xebe9,0xebea,0xebeb,0xebec,0xebed,0xebee,0xebef,0xebf0,0xebf1,0xebf2, - 0xebf3,0xebf4,0xebf5,0xebf6,0xebf7,0xebf8,0xebf9,0xebfa,0xebfb,0xebfc, - 0xebfd,0xebfe,0xebff,0xec00,0xec01,0xec02,0xec03,0xec04,0xec05,0xec06, - 0xec07,0xec08,0xec09,0xec0a,0xec0b,0xec0c,0xec0d,0xec0e,0xec0f,0xec10, - 0xec11,0xec12,0xec13,0xec14,0xec15,0xec16,0xec17,0xec18,0xec19,0xec1a, - 0xec1b,0xec1c,0xec1d,0xec1e,0xec1f,0xec20,0xec21,0xec22,0xec23,0xec24, - 0xec25,0xec26,0xec27,0xec28,0xec29,0xec2a,0xec2b,0xec2c,0xec2d,0xec2e, - 0xec2f,0xec30,0xec31,0xec32,0xec33,0xec34,0xec35,0xec36,0xec37,0xec38, - 0xec39,0xec3a,0xec3b,0xec3c,0xec3d,0xec3e,0xec3f,0xec40,0xec41,0xec42, - 0xec43,0xec44,0xec45,0xec46,0xec47,0xec48,0xec49,0xec4a,0xec4b,0xec4c, - 0xec4d,0xec4e,0xec4f,0xec50,0xec51,0xec52,0xec53,0xec54,0xec55,0xec56, - 0xec57,0xec58,0xec59,0xec5a,0xec5b,0xec5c,0xec5d,0xec5e,0xec5f,0xec60, - 0xec61,0xec62,0xec63,0xec64,0xec65,0xec66,0xec67,0xec68,0xec69,0xec6a, - 0xec6b,0xec6c,0xec6d,0xec6e,0xec6f,0xec70,0xec71,0xec72,0xec73,0xec74, - 0xec75,0xec76,0xec77,0xec78,0xec79,0xec7a,0xec7b,0xec7c,0xec7d,0xec7e, - 0xec7f,0xec80,0xec81,0xec82,0xec83,0xec84,0xec85,0xec86,0xec87,0xec88, - 0xec89,0xec8a,0xec8b,0xec8c,0xec8d,0xec8e,0xec8f,0xec90,0xec91,0xec92, - 0xec93,0xec94,0xec95,0xec96,0xec97,0xec98,0xec99,0xec9a,0xec9b,0xec9c, - 0xec9d,0xec9e,0xec9f,0xeca0,0xeca1,0xeca2,0xeca3,0xeca4,0xeca5,0xeca6, - 0xeca7,0xeca8,0xeca9,0xecaa,0xecab,0xecac,0xecad,0xecae,0xecaf,0xecb0, - 0xecb1,0xecb2,0xecb3,0xecb4,0xecb5,0xecb6,0xecb7,0xecb8,0xecb9,0xecba, - 0xecbb,0xecbc,0xecbd,0xecbe,0xecbf,0xecc0,0xecc1,0xecc2,0xecc3,0xecc4, - 0xecc5,0xecc6,0xecc7,0xecc8,0xecc9,0xecca,0xeccb,0xeccc,0xeccd,0xecce, - 0xeccf,0xecd0,0xecd1,0xecd2,0xecd3,0xecd4,0xecd5,0xecd6,0xecd7,0xecd8, - 0xecd9,0xecda,0xecdb,0xecdc,0xecdd,0xecde,0xecdf,0xece0,0xece1,0xece2, - 0xece3,0xece4,0xece5,0xece6,0xece7,0xece8,0xece9,0xecea,0xeceb,0xecec, - 0xeced,0xecee,0xecef,0xecf0,0xecf1,0xecf2,0xecf3,0xecf4,0xecf5,0xecf6, - 0xecf7,0xecf8,0xecf9,0xecfa,0xecfb,0xecfc,0xecfd,0xecfe,0xecff,0xed00, - 0xed01,0xed02,0xed03,0xed04,0xed05,0xed06,0xed07,0xed08,0xed09,0xed0a, - 0xed0b,0xed0c,0xed0d,0xed0e,0xed0f,0xed10,0xed11,0xed12,0xed13,0xed14, - 0xed15,0xed16,0xed17,0xed18,0xed19,0xed1a,0xed1b,0xed1c,0xed1d,0xed1e, - 0xed1f,0xed20,0xed21,0xed22,0xed23,0xed24,0xed25,0xed26,0xed27,0xed28, - 0xed29,0xed2a,0xed2b,0xed2c,0xed2d,0xed2e,0xed2f,0xed30,0xed31,0xed32, - 0xed33,0xed34,0xed35,0xed36,0xed37,0xed38,0xed39,0xed3a,0xed3b,0xed3c, - 0xed3d,0xed3e,0xed3f,0xed40,0xed41,0xed42,0xed43,0xed44,0xed45,0xed46, - 0xed47,0xed48,0xed49,0xed4a,0xed4b,0xed4c,0xed4d,0xed4e,0xed4f,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,0xed7f,0xed80,0xed81,0xed82, - 0xed83,0xed84,0xed85,0xed86,0xed87,0xed88,0xed89,0xed8a,0xed8b,0xed8c, - 0xed8d,0xed8e,0xed8f,0xed90,0xed91,0xed92,0xed93,0xed94,0xed95,0xed96, - 0xed97,0xed98,0xed99,0xed9a,0xed9b,0xed9c,0xed9d,0xed9e,0xed9f,0xeda0, - 0xeda1,0xeda2,0xeda3,0xeda4,0xeda5,0xeda6,0xeda7,0xeda8,0xeda9,0xedaa, - 0xedab,0xedac,0xedad,0xedae,0xedaf,0xedb0,0xedb1,0xedb2,0xedb3,0xedb4, - 0xedb5,0xedb6,0xedb7,0xedb8,0xedb9,0xedba,0xedbb,0xedbc,0xedbd,0xedbe, - 0xedbf,0xedc0,0xedc1,0xedc2,0xedc3,0xedc4,0xedc5,0xedc6,0xedc7,0xedc8, - 0xedc9,0xedca,0xedcb,0xedcc,0xedcd,0xedce,0xedcf,0xedd0,0xedd1,0xedd2, - 0xedd3,0xedd4,0xedd5,0xedd6,0xedd7,0xedd8,0xedd9,0xedda,0xeddb,0xeddc, - 0xeddd,0xedde,0xeddf,0xede0,0xede1,0xede2,0xede3,0xede4,0xede5,0xede6, - 0xede7,0xede8,0xede9,0xedea,0xedeb,0xedec,0xeded,0xedee,0xedef,0xedf0, - 0xedf1,0xedf2,0xedf3,0xedf4,0xedf5,0xedf6,0xedf7,0xedf8,0xedf9,0xedfa, - 0xedfb,0xedfc,0xedfd,0xedfe,0xedff,0xee00,0xee01,0xee02,0xee03,0xee04, - 0xee05,0xee06,0xee07,0xee08,0xee09,0xee0a,0xee0b,0xee0c,0xee0d,0xee0e, - 0xee0f,0xee10,0xee11,0xee12,0xee13,0xee14,0xee15,0xee16,0xee17,0xee18, - 0xee19,0xee1a,0xee1b,0xee1c,0xee1d,0xee1e,0xee1f,0xee20,0xee21,0xee22, - 0xee23,0xee24,0xee25,0xee26,0xee27,0xee28,0xee29,0xee2a,0xee2b,0xee2c, - 0xee2d,0xee2e,0xee2f,0xee30,0xee31,0xee32,0xee33,0xee34,0xee35,0xee36, - 0xee37,0xee38,0xee39,0xee3a,0xee3b,0xee3c,0xee3d,0xee3e,0xee3f,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,0xee7f,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,0xeea1,0xeea2,0xeea3,0xeea4, - 0xeea5,0xeea6,0xeea7,0xeea8,0xeea9,0xeeaa,0xeeab,0xeeac,0xeead,0xeeae, - 0xeeaf,0xeeb0,0xeeb1,0xeeb2,0xeeb3,0xeeb4,0xeeb5,0xeeb6,0xeeb7,0xeeb8, - 0xeeb9,0xeeba,0xeebb,0xeebc,0xeebd,0xeebe,0xeebf,0xeec0,0xeec1,0xeec2, - 0xeec3,0xeec4,0xeec5,0xeec6,0xeec7,0xeec8,0xeec9,0xeeca,0xeecb,0xeecc, - 0xeecd,0xeece,0xeecf,0xeed0,0xeed1,0xeed2,0xeed3,0xeed4,0xeed5,0xeed6, - 0xeed7,0xeed8,0xeed9,0xeeda,0xeedb,0xeedc,0xeedd,0xeede,0xeedf,0xeee0, - 0xeee1,0xeee2,0xeee3,0xeee4,0xeee5,0xeee6,0xeee7,0xeee8,0xeee9,0xeeea, - 0xeeeb,0xeeec,0xeeed,0xeeee,0xeeef,0xeef0,0xeef1,0xeef2,0xeef3,0xeef4, - 0xeef5,0xeef6,0xeef7,0xeef8,0xeef9,0xeefa,0xeefb,0xeefc,0xeefd,0xeefe, - 0xeeff,0xef00,0xef01,0xef02,0xef03,0xef04,0xef05,0xef06,0xef07,0xef08, - 0xef09,0xef0a,0xef0b,0xef0c,0xef0d,0xef0e,0xef0f,0xef10,0xef11,0xef12, - 0xef13,0xef14,0xef15,0xef16,0xef17,0xef18,0xef19,0xef1a,0xef1b,0xef1c, - 0xef1d,0xef1e,0xef1f,0xef20,0xef21,0xef22,0xef23,0xef24,0xef25,0xef26, - 0xef27,0xef28,0xef29,0xef2a,0xef2b,0xef2c,0xef2d,0xef2e,0xef2f,0xef30, - 0xef31,0xef32,0xef33,0xef34,0xef35,0xef36,0xef37,0xef38,0xef39,0xef3a, - 0xef3b,0xef3c,0xef3d,0xef3e,0xef3f,0xef40,0xef41,0xef42,0xef43,0xef44, - 0xef45,0xef46,0xef47,0xef48,0xef49,0xef4a,0xef4b,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,0xef72,0xef73,0xef74,0xef75,0xef76, - 0xef77,0xef78,0xef79,0xef7a,0xef7b,0xef7c,0xef7d,0xef7e,0xef7f,0xef80, - 0xef81,0xef82,0xef83,0xef84,0xef85,0xef86,0xef87,0xef88,0xef89,0xef8a, - 0xef8b,0xef8c,0xef8d,0xef8e,0xef8f,0xef90,0xef91,0xef92,0xef93,0xef94, - 0xef95,0xef96,0xef97,0xef98,0xef99,0xef9a,0xef9b,0xef9c,0xef9d,0xef9e, - 0xef9f,0xefa0,0xefa1,0xefa2,0xefa3,0xefa4,0xefa5,0xefa6,0xefa7,0xefa8, - 0xefa9,0xefaa,0xefab,0xefac,0xefad,0xefae,0xefaf,0xefb0,0xefb1,0xefb2, - 0xefb3,0xefb4,0xefb5,0xefb6,0xefb7,0xefb8,0xefb9,0xefba,0xefbb,0xefbc, - 0xefbd,0xefbe,0xefbf,0xefc0,0xefc1,0xefc2,0xefc3,0xefc4,0xefc5,0xefc6, - 0xefc7,0xefc8,0xefc9,0xefca,0xefcb,0xefcc,0xefcd,0xefce,0xefcf,0xefd0, - 0xefd1,0xefd2,0xefd3,0xefd4,0xefd5,0xefd6,0xefd7,0xefd8,0xefd9,0xefda, - 0xefdb,0xefdc,0xefdd,0xefde,0xefdf,0xefe0,0xefe1,0xefe2,0xefe3,0xefe4, - 0xefe5,0xefe6,0xefe7,0xefe8,0xefe9,0xefea,0xefeb,0xefec,0xefed,0xefee, - 0xefef,0xeff0,0xeff1,0xeff2,0xeff3,0xeff4,0xeff5,0xeff6,0xeff7,0xeff8, - 0xeff9,0xeffa,0xeffb,0xeffc,0xeffd,0xeffe,0xefff,0xf000,0xf001,0xf002, - 0xf003,0xf004,0xf005,0xf006,0xf007,0xf008,0xf009,0xf00a,0xf00b,0xf00c, - 0xf00d,0xf00e,0xf00f,0xf010,0xf011,0xf012,0xf013,0xf014,0xf015,0xf016, - 0xf017,0xf018,0xf019,0xf01a,0xf01b,0xf01c,0xf01d,0xf01e,0xf01f,0xf020, - 0xf021,0xf022,0xf023,0xf024,0xf025,0xf026,0xf027,0xf028,0xf029,0xf02a, - 0xf02b,0xf02c,0xf02d,0xf02e,0xf02f,0xf030,0xf031,0xf032,0xf033,0xf034, - 0xf035,0xf036,0xf037,0xf038,0xf039,0xf03a,0xf03b,0xf03c,0xf03d,0xf03e, - 0xf03f,0xf040,0xf041,0xf042,0xf043,0xf044,0xf045,0xf046,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,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,0xf07f,0xf080,0xf081,0xf082,0xf083,0xf084, - 0xf085,0xf086,0xf087,0xf088,0xf089,0xf08a,0xf08b,0xf08c,0xf08d,0xf08e, - 0xf08f,0xf090,0xf091,0xf092,0xf093,0xf094,0xf095,0xf096,0xf097,0xf098, - 0xf099,0xf09a,0xf09b,0xf09c,0xf09d,0xf09e,0xf09f,0xf0a0,0xf0a1,0xf0a2, - 0xf0a3,0xf0a4,0xf0a5,0xf0a6,0xf0a7,0xf0a8,0xf0a9,0xf0aa,0xf0ab,0xf0ac, - 0xf0ad,0xf0ae,0xf0af,0xf0b0,0xf0b1,0xf0b2,0xf0b3,0xf0b4,0xf0b5,0xf0b6, - 0xf0b7,0xf0b8,0xf0b9,0xf0ba,0xf0bb,0xf0bc,0xf0bd,0xf0be,0xf0bf,0xf0c0, - 0xf0c1,0xf0c2,0xf0c3,0xf0c4,0xf0c5,0xf0c6,0xf0c7,0xf0c8,0xf0c9,0xf0ca, - 0xf0cb,0xf0cc,0xf0cd,0xf0ce,0xf0cf,0xf0d0,0xf0d1,0xf0d2,0xf0d3,0xf0d4, - 0xf0d5,0xf0d6,0xf0d7,0xf0d8,0xf0d9,0xf0da,0xf0db,0xf0dc,0xf0dd,0xf0de, - 0xf0df,0xf0e0,0xf0e1,0xf0e2,0xf0e3,0xf0e4,0xf0e5,0xf0e6,0xf0e7,0xf0e8, - 0xf0e9,0xf0ea,0xf0eb,0xf0ec,0xf0ed,0xf0ee,0xf0ef,0xf0f0,0xf0f1,0xf0f2, - 0xf0f3,0xf0f4,0xf0f5,0xf0f6,0xf0f7,0xf0f8,0xf0f9,0xf0fa,0xf0fb,0xf0fc, - 0xf0fd,0xf0fe,0xf0ff,0xf100,0xf101,0xf102,0xf103,0xf104,0xf105,0xf106, - 0xf107,0xf108,0xf109,0xf10a,0xf10b,0xf10c,0xf10d,0xf10e,0xf10f,0xf110, - 0xf111,0xf112,0xf113,0xf114,0xf115,0xf116,0xf117,0xf118,0xf119,0xf11a, - 0xf11b,0xf11c,0xf11d,0xf11e,0xf11f,0xf120,0xf121,0xf122,0xf123,0xf124, - 0xf125,0xf126,0xf127,0xf128,0xf129,0xf12a,0xf12b,0xf12c,0xf12d,0xf12e, - 0xf12f,0xf130,0xf131,0xf132,0xf133,0xf134,0xf135,0xf136,0xf137,0xf138, - 0xf139,0xf13a,0xf13b,0xf13c,0xf13d,0xf13e,0xf13f,0xf140,0xf141,0xf142, - 0xf143,0xf144,0xf145,0xf146,0xf147,0xf148,0xf149,0xf14a,0xf14b,0xf14c, - 0xf14d,0xf14e,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, - 0xf17f,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,0xf1a1,0xf1a2,0xf1a3,0xf1a4,0xf1a5,0xf1a6, - 0xf1a7,0xf1a8,0xf1a9,0xf1aa,0xf1ab,0xf1ac,0xf1ad,0xf1ae,0xf1af,0xf1b0, - 0xf1b1,0xf1b2,0xf1b3,0xf1b4,0xf1b5,0xf1b6,0xf1b7,0xf1b8,0xf1b9,0xf1ba, - 0xf1bb,0xf1bc,0xf1bd,0xf1be,0xf1bf,0xf1c0,0xf1c1,0xf1c2,0xf1c3,0xf1c4, - 0xf1c5,0xf1c6,0xf1c7,0xf1c8,0xf1c9,0xf1ca,0xf1cb,0xf1cc,0xf1cd,0xf1ce, - 0xf1cf,0xf1d0,0xf1d1,0xf1d2,0xf1d3,0xf1d4,0xf1d5,0xf1d6,0xf1d7,0xf1d8, - 0xf1d9,0xf1da,0xf1db,0xf1dc,0xf1dd,0xf1de,0xf1df,0xf1e0,0xf1e1,0xf1e2, - 0xf1e3,0xf1e4,0xf1e5,0xf1e6,0xf1e7,0xf1e8,0xf1e9,0xf1ea,0xf1eb,0xf1ec, - 0xf1ed,0xf1ee,0xf1ef,0xf1f0,0xf1f1,0xf1f2,0xf1f3,0xf1f4,0xf1f5,0xf1f6, - 0xf1f7,0xf1f8,0xf1f9,0xf1fa,0xf1fb,0xf1fc,0xf1fd,0xf1fe,0xf1ff,0xf200, - 0xf201,0xf202,0xf203,0xf204,0xf205,0xf206,0xf207,0xf208,0xf209,0xf20a, - 0xf20b,0xf20c,0xf20d,0xf20e,0xf20f,0xf210,0xf211,0xf212,0xf213,0xf214, - 0xf215,0xf216,0xf217,0xf218,0xf219,0xf21a,0xf21b,0xf21c,0xf21d,0xf21e, - 0xf21f,0xf220,0xf221,0xf222,0xf223,0xf224,0xf225,0xf226,0xf227,0xf228, - 0xf229,0xf22a,0xf22b,0xf22c,0xf22d,0xf22e,0xf22f,0xf230,0xf231,0xf232, - 0xf233,0xf234,0xf235,0xf236,0xf237,0xf238,0xf239,0xf23a,0xf23b,0xf23c, - 0xf23d,0xf23e,0xf23f,0xf240,0xf241,0xf242,0xf243,0xf244,0xf245,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,0xf27f,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, - 0xf2a1,0xf2a2,0xf2a3,0xf2a4,0xf2a5,0xf2a6,0xf2a7,0xf2a8,0xf2a9,0xf2aa, - 0xf2ab,0xf2ac,0xf2ad,0xf2ae,0xf2af,0xf2b0,0xf2b1,0xf2b2,0xf2b3,0xf2b4, - 0xf2b5,0xf2b6,0xf2b7,0xf2b8,0xf2b9,0xf2ba,0xf2bb,0xf2bc,0xf2bd,0xf2be, - 0xf2bf,0xf2c0,0xf2c1,0xf2c2,0xf2c3,0xf2c4,0xf2c5,0xf2c6,0xf2c7,0xf2c8, - 0xf2c9,0xf2ca,0xf2cb,0xf2cc,0xf2cd,0xf2ce,0xf2cf,0xf2d0,0xf2d1,0xf2d2, - 0xf2d3,0xf2d4,0xf2d5,0xf2d6,0xf2d7,0xf2d8,0xf2d9,0xf2da,0xf2db,0xf2dc, - 0xf2dd,0xf2de,0xf2df,0xf2e0,0xf2e1,0xf2e2,0xf2e3,0xf2e4,0xf2e5,0xf2e6, - 0xf2e7,0xf2e8,0xf2e9,0xf2ea,0xf2eb,0xf2ec,0xf2ed,0xf2ee,0xf2ef,0xf2f0, - 0xf2f1,0xf2f2,0xf2f3,0xf2f4,0xf2f5,0xf2f6,0xf2f7,0xf2f8,0xf2f9,0xf2fa, - 0xf2fb,0xf2fc,0xf2fd,0xf2fe,0xf2ff,0xf300,0xf301,0xf302,0xf303,0xf304, - 0xf305,0xf306,0xf307,0xf308,0xf309,0xf30a,0xf30b,0xf30c,0xf30d,0xf30e, - 0xf30f,0xf310,0xf311,0xf312,0xf313,0xf314,0xf315,0xf316,0xf317,0xf318, - 0xf319,0xf31a,0xf31b,0xf31c,0xf31d,0xf31e,0xf31f,0xf320,0xf321,0xf322, - 0xf323,0xf324,0xf325,0xf326,0xf327,0xf328,0xf329,0xf32a,0xf32b,0xf32c, - 0xf32d,0xf32e,0xf32f,0xf330,0xf331,0xf332,0xf333,0xf334,0xf335,0xf336, - 0xf337,0xf338,0xf339,0xf33a,0xf33b,0xf33c,0xf33d,0xf33e,0xf33f,0xf340, - 0xf341,0xf342,0xf343,0xf344,0xf345,0xf346,0xf347,0xf348,0xf349,0xf34a, - 0xf34b,0xf34c,0xf34d,0xf34e,0xf34f,0xf350,0xf351,0xf352,0xf353,0xf354, - 0xf355,0xf356,0xf357,0xf358,0xf359,0xf35a,0xf35b,0xf35c,0xf35d,0xf35e, - 0xf35f,0xf360,0xf361,0xf362,0xf363,0xf364,0xf365,0xf366,0xf367,0xf368, - 0xf369,0xf36a,0xf36b,0xf36c,0xf36d,0xf36e,0xf36f,0xf370,0xf371,0xf372, - 0xf373,0xf374,0xf375,0xf376,0xf377,0xf378,0xf379,0xf37a,0xf37b,0xf37c, - 0xf37d,0xf37e,0xf37f,0xf380,0xf381,0xf382,0xf383,0xf384,0xf385,0xf386, - 0xf387,0xf388,0xf389,0xf38a,0xf38b,0xf38c,0xf38d,0xf38e,0xf38f,0xf390, - 0xf391,0xf392,0xf393,0xf394,0xf395,0xf396,0xf397,0xf398,0xf399,0xf39a, - 0xf39b,0xf39c,0xf39d,0xf39e,0xf39f,0xf3a0,0xf3a1,0xf3a2,0xf3a3,0xf3a4, - 0xf3a5,0xf3a6,0xf3a7,0xf3a8,0xf3a9,0xf3aa,0xf3ab,0xf3ac,0xf3ad,0xf3ae, - 0xf3af,0xf3b0,0xf3b1,0xf3b2,0xf3b3,0xf3b4,0xf3b5,0xf3b6,0xf3b7,0xf3b8, - 0xf3b9,0xf3ba,0xf3bb,0xf3bc,0xf3bd,0xf3be,0xf3bf,0xf3c0,0xf3c1,0xf3c2, - 0xf3c3,0xf3c4,0xf3c5,0xf3c6,0xf3c7,0xf3c8,0xf3c9,0xf3ca,0xf3cb,0xf3cc, - 0xf3cd,0xf3ce,0xf3cf,0xf3d0,0xf3d1,0xf3d2,0xf3d3,0xf3d4,0xf3d5,0xf3d6, - 0xf3d7,0xf3d8,0xf3d9,0xf3da,0xf3db,0xf3dc,0xf3dd,0xf3de,0xf3df,0xf3e0, - 0xf3e1,0xf3e2,0xf3e3,0xf3e4,0xf3e5,0xf3e6,0xf3e7,0xf3e8,0xf3e9,0xf3ea, - 0xf3eb,0xf3ec,0xf3ed,0xf3ee,0xf3ef,0xf3f0,0xf3f1,0xf3f2,0xf3f3,0xf3f4, - 0xf3f5,0xf3f6,0xf3f7,0xf3f8,0xf3f9,0xf3fa,0xf3fb,0xf3fc,0xf3fd,0xf3fe, - 0xf3ff,0xf400,0xf401,0xf402,0xf403,0xf404,0xf405,0xf406,0xf407,0xf408, - 0xf409,0xf40a,0xf40b,0xf40c,0xf40d,0xf40e,0xf40f,0xf410,0xf411,0xf412, - 0xf413,0xf414,0xf415,0xf416,0xf417,0xf418,0xf419,0xf41a,0xf41b,0xf41c, - 0xf41d,0xf41e,0xf41f,0xf420,0xf421,0xf422,0xf423,0xf424,0xf425,0xf426, - 0xf427,0xf428,0xf429,0xf42a,0xf42b,0xf42c,0xf42d,0xf42e,0xf42f,0xf430, - 0xf431,0xf432,0xf433,0xf434,0xf435,0xf436,0xf437,0xf438,0xf439,0xf43a, - 0xf43b,0xf43c,0xf43d,0xf43e,0xf43f,0xf440,0xf441,0xf442,0xf443,0xf444, - 0xf445,0xf446,0xf447,0xf448,0xf449,0xf44a,0xf44b,0xf44c,0xf44d,0xf44e, - 0xf44f,0xf450,0xf451,0xf452,0xf453,0xf454,0xf455,0xf456,0xf457,0xf458, - 0xf459,0xf45a,0xf45b,0xf45c,0xf45d,0xf45e,0xf45f,0xf460,0xf461,0xf462, - 0xf463,0xf464,0xf465,0xf466,0xf467,0xf468,0xf469,0xf46a,0xf46b,0xf46c, - 0xf46d,0xf46e,0xf46f,0xf470,0xf471,0xf472,0xf473,0xf474,0xf475,0xf476, - 0xf477,0xf478,0xf479,0xf47a,0xf47b,0xf47c,0xf47d,0xf47e,0xf47f,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,0xf4a1,0xf4a2,0xf4a3,0xf4a4,0xf4a5,0xf4a6,0xf4a7,0xf4a8, - 0xf4a9,0xf4aa,0xf4ab,0xf4ac,0xf4ad,0xf4ae,0xf4af,0xf4b0,0xf4b1,0xf4b2, - 0xf4b3,0xf4b4,0xf4b5,0xf4b6,0xf4b7,0xf4b8,0xf4b9,0xf4ba,0xf4bb,0xf4bc, - 0xf4bd,0xf4be,0xf4bf,0xf4c0,0xf4c1,0xf4c2,0xf4c3,0xf4c4,0xf4c5,0xf4c6, - 0xf4c7,0xf4c8,0xf4c9,0xf4ca,0xf4cb,0xf4cc,0xf4cd,0xf4ce,0xf4cf,0xf4d0, - 0xf4d1,0xf4d2,0xf4d3,0xf4d4,0xf4d5,0xf4d6,0xf4d7,0xf4d8,0xf4d9,0xf4da, - 0xf4db,0xf4dc,0xf4dd,0xf4de,0xf4df,0xf4e0,0xf4e1,0xf4e2,0xf4e3,0xf4e4, - 0xf4e5,0xf4e6,0xf4e7,0xf4e8,0xf4e9,0xf4ea,0xf4eb,0xf4ec,0xf4ed,0xf4ee, - 0xf4ef,0xf4f0,0xf4f1,0xf4f2,0xf4f3,0xf4f4,0xf4f5,0xf4f6,0xf4f7,0xf4f8, - 0xf4f9,0xf4fa,0xf4fb,0xf4fc,0xf4fd,0xf4fe,0xf4ff,0xf500,0xf501,0xf502, - 0xf503,0xf504,0xf505,0xf506,0xf507,0xf508,0xf509,0xf50a,0xf50b,0xf50c, - 0xf50d,0xf50e,0xf50f,0xf510,0xf511,0xf512,0xf513,0xf514,0xf515,0xf516, - 0xf517,0xf518,0xf519,0xf51a,0xf51b,0xf51c,0xf51d,0xf51e,0xf51f,0xf520, - 0xf521,0xf522,0xf523,0xf524,0xf525,0xf526,0xf527,0xf528,0xf529,0xf52a, - 0xf52b,0xf52c,0xf52d,0xf52e,0xf52f,0xf530,0xf531,0xf532,0xf533,0xf534, - 0xf535,0xf536,0xf537,0xf538,0xf539,0xf53a,0xf53b,0xf53c,0xf53d,0xf53e, - 0xf53f,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,0xf57f,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,0xf5a1,0xf5a2, - 0xf5a3,0xf5a4,0xf5a5,0xf5a6,0xf5a7,0xf5a8,0xf5a9,0xf5aa,0xf5ab,0xf5ac, - 0xf5ad,0xf5ae,0xf5af,0xf5b0,0xf5b1,0xf5b2,0xf5b3,0xf5b4,0xf5b5,0xf5b6, - 0xf5b7,0xf5b8,0xf5b9,0xf5ba,0xf5bb,0xf5bc,0xf5bd,0xf5be,0xf5bf,0xf5c0, - 0xf5c1,0xf5c2,0xf5c3,0xf5c4,0xf5c5,0xf5c6,0xf5c7,0xf5c8,0xf5c9,0xf5ca, - 0xf5cb,0xf5cc,0xf5cd,0xf5ce,0xf5cf,0xf5d0,0xf5d1,0xf5d2,0xf5d3,0xf5d4, - 0xf5d5,0xf5d6,0xf5d7,0xf5d8,0xf5d9,0xf5da,0xf5db,0xf5dc,0xf5dd,0xf5de, - 0xf5df,0xf5e0,0xf5e1,0xf5e2,0xf5e3,0xf5e4,0xf5e5,0xf5e6,0xf5e7,0xf5e8, - 0xf5e9,0xf5ea,0xf5eb,0xf5ec,0xf5ed,0xf5ee,0xf5ef,0xf5f0,0xf5f1,0xf5f2, - 0xf5f3,0xf5f4,0xf5f5,0xf5f6,0xf5f7,0xf5f8,0xf5f9,0xf5fa,0xf5fb,0xf5fc, - 0xf5fd,0xf5fe,0xf5ff,0xf600,0xf601,0xf602,0xf603,0xf604,0xf605,0xf606, - 0xf607,0xf608,0xf609,0xf60a,0xf60b,0xf60c,0xf60d,0xf60e,0xf60f,0xf610, - 0xf611,0xf612,0xf613,0xf614,0xf615,0xf616,0xf617,0xf618,0xf619,0xf61a, - 0xf61b,0xf61c,0xf61d,0xf61e,0xf61f,0xf620,0xf621,0xf622,0xf623,0xf624, - 0xf625,0xf626,0xf627,0xf628,0xf629,0xf62a,0xf62b,0xf62c,0xf62d,0xf62e, - 0xf62f,0xf630,0xf631,0xf632,0xf633,0xf634,0xf635,0xf636,0xf637,0xf638, - 0xf639,0xf63a,0xf63b,0xf63c,0xf63d,0xf63e,0xf63f,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,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, - 0xf67f,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,0xf6a1,0xf6a2,0xf6a3,0xf6a4,0xf6a5,0xf6a6, - 0xf6a7,0xf6a8,0xf6a9,0xf6aa,0xf6ab,0xf6ac,0xf6ad,0xf6ae,0xf6af,0xf6b0, - 0xf6b1,0xf6b2,0xf6b3,0xf6b4,0xf6b5,0xf6b6,0xf6b7,0xf6b8,0xf6b9,0xf6ba, - 0xf6bb,0xf6bc,0xf6bd,0xf6be,0xf6bf,0xf6c0,0xf6c1,0xf6c2,0xf6c3,0xf6c4, - 0xf6c5,0xf6c6,0xf6c7,0xf6c8,0xf6c9,0xf6ca,0xf6cb,0xf6cc,0xf6cd,0xf6ce, - 0xf6cf,0xf6d0,0xf6d1,0xf6d2,0xf6d3,0xf6d4,0xf6d5,0xf6d6,0xf6d7,0xf6d8, - 0xf6d9,0xf6da,0xf6db,0xf6dc,0xf6dd,0xf6de,0xf6df,0xf6e0,0xf6e1,0xf6e2, - 0xf6e3,0xf6e4,0xf6e5,0xf6e6,0xf6e7,0xf6e8,0xf6e9,0xf6ea,0xf6eb,0xf6ec, - 0xf6ed,0xf6ee,0xf6ef,0xf6f0,0xf6f1,0xf6f2,0xf6f3,0xf6f4,0xf6f5,0xf6f6, - 0xf6f7,0xf6f8,0xf6f9,0xf6fa,0xf6fb,0xf6fc,0xf6fd,0xf6fe,0xf6ff,0xf700, - 0xf701,0xf702,0xf703,0xf704,0xf705,0xf706,0xf707,0xf708,0xf709,0xf70a, - 0xf70b,0xf70c,0xf70d,0xf70e,0xf70f,0xf710,0xf711,0xf712,0xf713,0xf714, - 0xf715,0xf716,0xf717,0xf718,0xf719,0xf71a,0xf71b,0xf71c,0xf71d,0xf71e, - 0xf71f,0xf720,0xf721,0xf722,0xf723,0xf724,0xf725,0xf726,0xf727,0xf728, - 0xf729,0xf72a,0xf72b,0xf72c,0xf72d,0xf72e,0xf72f,0xf730,0xf731,0xf732, - 0xf733,0xf734,0xf735,0xf736,0xf737,0xf738,0xf739,0xf73a,0xf73b,0xf73c, - 0xf73d,0xf73e,0xf73f,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,0xf77f,0xf780,0xf781,0xf782, - 0xf783,0xf784,0xf785,0xf786,0xf787,0xf788,0xf789,0xf78a,0xf78b,0xf78c, - 0xf78d,0xf78e,0xf78f,0xf790,0xf791,0xf792,0xf793,0xf794,0xf795,0xf796, - 0xf797,0xf798,0xf799,0xf79a,0xf79b,0xf79c,0xf79d,0xf79e,0xf79f,0xf7a0, - 0xf7a1,0xf7a2,0xf7a3,0xf7a4,0xf7a5,0xf7a6,0xf7a7,0xf7a8,0xf7a9,0xf7aa, - 0xf7ab,0xf7ac,0xf7ad,0xf7ae,0xf7af,0xf7b0,0xf7b1,0xf7b2,0xf7b3,0xf7b4, - 0xf7b5,0xf7b6,0xf7b7,0xf7b8,0xf7b9,0xf7ba,0xf7bb,0xf7bc,0xf7bd,0xf7be, - 0xf7bf,0xf7c0,0xf7c1,0xf7c2,0xf7c3,0xf7c4,0xf7c5,0xf7c6,0xf7c7,0xf7c8, - 0xf7c9,0xf7ca,0xf7cb,0xf7cc,0xf7cd,0xf7ce,0xf7cf,0xf7d0,0xf7d1,0xf7d2, - 0xf7d3,0xf7d4,0xf7d5,0xf7d6,0xf7d7,0xf7d8,0xf7d9,0xf7da,0xf7db,0xf7dc, - 0xf7dd,0xf7de,0xf7df,0xf7e0,0xf7e1,0xf7e2,0xf7e3,0xf7e4,0xf7e5,0xf7e6, - 0xf7e7,0xf7e8,0xf7e9,0xf7ea,0xf7eb,0xf7ec,0xf7ed,0xf7ee,0xf7ef,0xf7f0, - 0xf7f1,0xf7f2,0xf7f3,0xf7f4,0xf7f5,0xf7f6,0xf7f7,0xf7f8,0xf7f9,0xf7fa, - 0xf7fb,0xf7fc,0xf7fd,0xf7fe,0xf7ff,0xf800,0xf801,0xf802,0xf803,0xf804, - 0xf805,0xf806,0xf807,0xf808,0xf809,0xf80a,0xf80b,0xf80c,0xf80d,0xf80e, - 0xf80f,0xf810,0xf811,0xf812,0xf813,0xf814,0xf815,0xf816,0xf817,0xf818, - 0xf819,0xf81a,0xf81b,0xf81c,0xf81d,0xf81e,0xf81f,0xf820,0xf821,0xf822, - 0xf823,0xf824,0xf825,0xf826,0xf827,0xf828,0xf829,0xf82a,0xf82b,0xf82c, - 0xf82d,0xf82e,0xf82f,0xf830,0xf831,0xf832,0xf833,0xf834,0xf835,0xf836, - 0xf837,0xf838,0xf839,0xf83a,0xf83b,0xf83c,0xf83d,0xf83e,0xf83f,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,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,0xf87f,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,0xf8a1,0xf8a2,0xf8a3,0xf8a4, - 0xf8a5,0xf8a6,0xf8a7,0xf8a8,0xf8a9,0xf8aa,0xf8ab,0xf8ac,0xf8ad,0xf8ae, - 0xf8af,0xf8b0,0xf8b1,0xf8b2,0xf8b3,0xf8b4,0xf8b5,0xf8b6,0xf8b7,0xf8b8, - 0xf8b9,0xf8ba,0xf8bb,0xf8bc,0xf8bd,0xf8be,0xf8bf,0xf8c0,0xf8c1,0xf8c2, - 0xf8c3,0xf8c4,0xf8c5,0xf8c6,0xf8c7,0xf8c8,0xf8c9,0xf8ca,0xf8cb,0xf8cc, - 0xf8cd,0xf8ce,0xf8cf,0xf8d0,0xf8d1,0xf8d2,0xf8d3,0xf8d4,0xf8d5,0xf8d6, - 0xf8d7,0xf8d8,0xf8d9,0xf8da,0xf8db,0xf8dc,0xf8dd,0xf8de,0xf8df,0xf8e0, - 0xf8e1,0xf8e2,0xf8e3,0xf8e4,0xf8e5,0xf8e6,0xf8e7,0xf8e8,0xf8e9,0xf8ea, - 0xf8eb,0xf8ec,0xf8ed,0xf8ee,0xf8ef,0xf8f0,0xf8f1,0xf8f2,0xf8f3,0xf8f4, - 0xf8f5,0xf8f6,0xf8f7,0xf8f8,0xf8f9,0xf8fa,0xf8fb,0xf8fc,0xf8fd,0xf8fe, - 0xf8ff,0xfffd, - }; -static const TUint KAmbiguousLength = 7032; -static const TUint KAmbiguousClass = MLineBreaker::EAiLineBreakClass; -class LineBreakerClassData - { -public: - const TUint16* iData; - const TUint iLength; - const TUint iClass; - LineBreakerClassData(const TUint16* aData, const TUint aLength, const TUint aClass) : - iData(aData), iLength(aLength), iClass(aClass) - { - } - }; -static const LineBreakerClassData KClassData[] = - { - LineBreakerClassData(KOpeningPunctuation , KOpeningPunctuationLength, KOpeningPunctuationClass), // 0 - LineBreakerClassData(KClosingPunctuation , KClosingPunctuationLength, KClosingPunctuationClass), - LineBreakerClassData(KAmbiguousQuotes , KAmbiguousQuotesLength, KAmbiguousQuotesClass), - LineBreakerClassData(KGlue , KGlueLength, KGlueClass), - LineBreakerClassData(KNonStarter , KNonStarterLength, KNonStarterClass), - LineBreakerClassData(KExclamationOrInterrogation , KExclamationOrInterrogationLength, KExclamationOrInterrogationClass), // 5 - LineBreakerClassData(KSymbol , KSymbolLength, KSymbolClass), - LineBreakerClassData(KNumericInfixSeparator , KNumericInfixSeparatorLength, KNumericInfixSeparatorClass), - LineBreakerClassData(KNumericPrefix , KNumericPrefixLength, KNumericPrefixClass), - LineBreakerClassData(KNumericPostfix , KNumericPostfixLength, KNumericPostfixClass), - LineBreakerClassData(KNumeric , KNumericLength, KNumericClass), // 10 - LineBreakerClassData(KAlphabetic , KAlphabeticLength, KAlphabeticClass), - LineBreakerClassData(KIdeographic , KIdeographicLength, KIdeographicClass), - LineBreakerClassData(KInseparable , KInseparableLength, KInseparableClass), - LineBreakerClassData(KHyphen , KHyphenLength, KHyphenClass), - LineBreakerClassData(KBreakAfter , KBreakAfterLength, KBreakAfterClass), // 15 - LineBreakerClassData(KBreakBefore , KBreakBeforeLength, KBreakBeforeClass), - LineBreakerClassData(KBreakBeforeandAfter , KBreakBeforeandAfterLength, KBreakBeforeandAfterClass), - LineBreakerClassData(KZeroWidthSpace , KZeroWidthSpaceLength, KZeroWidthSpaceClass), - LineBreakerClassData(KCombiningMark , KCombiningMarkLength, KCombiningMarkClass), - LineBreakerClassData(KMandatoryBreak , KMandatoryBreakLength, KMandatoryBreakClass), // 20 - LineBreakerClassData(KCarriageReturn , KCarriageReturnLength, KCarriageReturnClass), - LineBreakerClassData(KLineFeed , KLineFeedLength, KLineFeedClass), - LineBreakerClassData(KSurrogate , KSurrogateLength, KSurrogateClass), - LineBreakerClassData(KContingentBreak , KContingentBreakLength, KContingentBreakClass), - LineBreakerClassData(KSpace , KSpaceLength, KSpaceClass), // 25 - LineBreakerClassData(KComplexContext , KComplexContextLength, KComplexContextClass), - LineBreakerClassData(KAmbiguous , KAmbiguousLength, KAmbiguousClass) // 27 - }; -static const TUint KClassDataLength = sizeof(KClassData) / sizeof (LineBreakerClassData); - -static const TUint KTabularClasses = 20; //number of classes in the table below - -static const TBool KLineBreakOpportunities [KTabularClasses][KTabularClasses][2] = - { - { //Before class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, EFalse }, //^ After class - KAmbiguousQuotesClass - { EFalse, EFalse }, //^ After class - KGlueClass - { EFalse, EFalse }, //^ After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { EFalse, EFalse }, //^ After class - KNumericPrefixClass - { EFalse, EFalse }, //^ After class - KNumericPostfixClass - { EFalse, EFalse }, //^ After class - KNumericClass - { EFalse, EFalse }, //^ After class - KAlphabeticClass - { EFalse, EFalse }, //^ After class - KIdeographicClass - { EFalse, EFalse }, //^ After class - KInseparableClass - { EFalse, EFalse }, //^ After class - KHyphenClass - { EFalse, EFalse }, //^ After class - KBreakAfterClass - { EFalse, EFalse }, //^ After class - KBreakBeforeClass - { EFalse, EFalse }, //^ After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KClosingPunctuationClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, EFalse }, //^ After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { EFalse, ETrue }, //% After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KAmbiguousQuotesClass - { EFalse, EFalse }, //^ After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { EFalse, ETrue }, //% After class - KNumericPrefixClass - { EFalse, ETrue }, //% After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { EFalse, ETrue }, //% After class - KAlphabeticClass - { EFalse, ETrue }, //% After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { EFalse, ETrue }, //% After class - KBreakBeforeClass - { EFalse, ETrue }, //% After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KGlueClass - { EFalse, ETrue }, //% After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { EFalse, ETrue }, //% After class - KNumericPrefixClass - { EFalse, ETrue }, //% After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { EFalse, ETrue }, //% After class - KAlphabeticClass - { EFalse, ETrue }, //% After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { EFalse, ETrue }, //% After class - KBreakBeforeClass - { EFalse, ETrue }, //% After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KNonStarterClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KExclamationOrInterrogationClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KSymbolClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KNumericPrefixClass - { EFalse, ETrue }, //% After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { EFalse, ETrue }, //% After class - KAlphabeticClass - { EFalse, ETrue }, //% After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KNumericClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { EFalse, ETrue }, //% After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { EFalse, ETrue }, //% After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { EFalse, ETrue }, //% After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KIdeographicClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { EFalse, ETrue }, //% After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KInseparableClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KHyphenClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KBreakBeforeClass - { EFalse, ETrue }, //% After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { EFalse, ETrue }, //% After class - KNumericPrefixClass - { EFalse, ETrue }, //% After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { EFalse, ETrue }, //% After class - KAlphabeticClass - { EFalse, ETrue }, //% After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { EFalse, ETrue }, //% After class - KBreakBeforeClass - { EFalse, ETrue }, //% After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KBreakBeforeandAfterClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { EFalse, EFalse }, //^ After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KZeroWidthSpaceClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { ETrue, ETrue }, //? After class - KClosingPunctuationClass - { ETrue, ETrue }, //? After class - KAmbiguousQuotesClass - { ETrue, ETrue }, //? After class - KGlueClass - { ETrue, ETrue }, //? After class - KNonStarterClass - { ETrue, ETrue }, //? After class - KExclamationOrInterrogationClass - { ETrue, ETrue }, //? After class - KSymbolClass - { ETrue, ETrue }, //? After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { ETrue, ETrue }, //? After class - KNumericClass - { ETrue, ETrue }, //? After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { ETrue, ETrue }, //? After class - KInseparableClass - { ETrue, ETrue }, //? After class - KHyphenClass - { ETrue, ETrue }, //? After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - }, - { //Before class - KCombiningMarkClass - { ETrue, ETrue }, //? After class - KOpeningPunctuationClass - { EFalse, EFalse }, //^ After class - KClosingPunctuationClass - { EFalse, ETrue }, //% After class - KAmbiguousQuotesClass - { EFalse, ETrue }, //% After class - KGlueClass - { EFalse, ETrue }, //% After class - KNonStarterClass - { EFalse, EFalse }, //^ After class - KExclamationOrInterrogationClass - { EFalse, EFalse }, //^ After class - KSymbolClass - { EFalse, EFalse }, //^ After class - KNumericInfixSeparatorClass - { ETrue, ETrue }, //? After class - KNumericPrefixClass - { ETrue, ETrue }, //? After class - KNumericPostfixClass - { EFalse, ETrue }, //% After class - KNumericClass - { EFalse, ETrue }, //% After class - KAlphabeticClass - { ETrue, ETrue }, //? After class - KIdeographicClass - { EFalse, ETrue }, //% After class - KInseparableClass - { EFalse, ETrue }, //% After class - KHyphenClass - { EFalse, ETrue }, //% After class - KBreakAfterClass - { ETrue, ETrue }, //? After class - KBreakBeforeClass - { ETrue, ETrue }, //? After class - KBreakBeforeandAfterClass - { EFalse, EFalse }, //^ After class - KZeroWidthSpaceClass - { EFalse, ETrue } //% After class - KCombiningMarkClass - } - }; - -// -// Test Data & Code for Thai Line breaking unit tests -// - -/** - This global variable is an array of Thai UTF16 consonant characters. -*/ -LOCAL_D const TText16 KThaiConsonantTable[] = { - 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, - 0xffff - }; - -/** - The structure below is used to hold a UTF16 text Thai syllable. -*/ -struct TThaiSyllableConstruct - { - TInt iLength; - TText16 iText[8]; - }; -const TText16 KAnyTC = 0xffff; // Value used to indicate any Thai consonant - -/** - This global variable holds Thai vowel syllables, consonant digraphs and - combining sequece forms which the line breaking algorithm must not - break within. Used in test loops which directly call the - MLineBreaker::GetLineBreakInContext() API. - With this data here we are assuming all Thai chars can be supplied to this - routine thus testing all Thai rules. In practive, only SA class character - sequences (consonants, prevowels, postvowels) are supplied by the - MLineBreaker class. -*/ -LOCAL_D const TThaiSyllableConstruct KThaiSyllableTable[] = { -// 0..4 VOWEL FORMS - { 2, { KAnyTC, 0x0e2d} }, - { 0, { KAnyTC, 0x0e27, KAnyTC} }, // V.Rare not supported - { 2, { KAnyTC, 0x0e30 } }, - { 3, { KAnyTC, 0x0e31, KAnyTC } }, - { 2, { KAnyTC, 0x0e32 } }, -// 5..9 - { 2, { KAnyTC, 0x0e33 } }, - { 2, { KAnyTC, 0x0e34 } }, - { 2, { KAnyTC, 0x0e35 } }, - { 2, { KAnyTC, 0x0e36 } }, - { 2, { KAnyTC, 0x0e37 } }, -// 10..14 - { 2, { KAnyTC, 0x0e38 } }, - { 2, { KAnyTC, 0x0e39 } }, - { 3, { 0x0e40, KAnyTC, 0x0e30 } }, - { 2, { 0x0e40, KAnyTC } }, - { 4, { 0x0e40, KAnyTC, 0x0e32, 0x0e30 } }, -// 15..19 - { 3, { 0x0e40, KAnyTC, 0x0e32 } }, - { 4, { 0x0e40, KAnyTC, 0x0e34, KAnyTC } }, - { 5, { 0x0e40, KAnyTC, 0x0e35, 0x0e22, 0x0e30 } }, - { 4, { 0x0e40, KAnyTC, 0x0e35, 0x0e22 } }, - { 4, { 0x0e40, KAnyTC, 0x0e22, 0x0e27 } }, -// 20..24 - { 5, { 0x0e40, KAnyTC, 0x0e37, 0x0e2d, 0x0e30 } }, - { 4, { 0x0e40, KAnyTC, 0x0e37, 0x0e2d } }, - { 4, { 0x0e40, KAnyTC, 0x0e2d, 0x0e30 } }, - { 3, { 0x0e40, KAnyTC, 0x0e2d } }, - { 3, { 0x0e40, KAnyTC, 0x0e22 } }, -// 25..29 - { 3, { 0x0e40, KAnyTC, 0x0e27 } }, - { 3, { 0x0e41, KAnyTC, 0x0e30 } }, - { 2, { 0x0e41, KAnyTC } }, - { 3, { 0x0e42, KAnyTC, 0x0e30 } }, - { 2, { 0x0e42, KAnyTC } }, -// 30..33 - { 2, { 0x0e43, KAnyTC } }, - { 2, { 0x0e44, KAnyTC } }, - { 3, { KAnyTC, 0x0e31, 0x0e27 } }, - { 4, { KAnyTC, 0x0e31, 0x0e27, 0x0e30 } }, - -// 34..41 CONSONANT FORMS - { 2, { 0x0e2b, 0x0e07 } }, - { 2, { 0x0e2b, 0x0e19 } }, - { 2, { 0x0e2b, 0x0e21 } }, - { 2, { 0x0e2b, 0x0e25 } }, - { 2, { 0x0e2b, 0x0e27 } }, - { 2, { 0x0e2b, 0x0e23 } }, - { 2, { 0x0e2b, 0x0e22 } }, - { 2, { 0x0e2d, 0x0e22 } }, - -// 42..51 COMBINING FORMS - { 3, { KAnyTC, 0x0e31, 0x0e48 } }, // Above vowels with tones - { 3, { KAnyTC, 0x0e34, 0x0e48 } }, - { 3, { KAnyTC, 0x0e35, 0x0e48 } }, - { 3, { KAnyTC, 0x0e36, 0x0e48 } }, - { 3, { KAnyTC, 0x0e37, 0x0e48 } }, - { 3, { KAnyTC, 0x0e47, 0x0e48 } }, - { 3, { KAnyTC, 0x0e35, 0x0e48 } }, - { 3, { KAnyTC, 0x0e35, 0x0e49 } }, - { 3, { KAnyTC, 0x0e35, 0x0e4a } }, - { 3, { KAnyTC, 0x0e35, 0x0e4b } }, -// 52..55 - { 3, { KAnyTC, 0x0e38, 0x0e48 } }, // below vowels with tones - { 3, { KAnyTC, 0x0e39, 0x0e49 } }, - { 3, { KAnyTC, 0x0e38, 0x0e4a } }, - { 3, { KAnyTC, 0x0e39, 0x0e4b } }, -// 56..58 - { 2, { KAnyTC, 0x0e3a} }, // signs - { 2, { KAnyTC, 0x0e4c} }, - { 2, { KAnyTC, 0x0e4d} }, - { 2, { KAnyTC, 0x0e4e} }, - -// 59 END TBALE - { -1, { 0 }} - }; - - -const TBuf<8> KThai_ae_khokhon(_L16("\x0e41\x0e05")); -const TBuf<8> KThai_e_X_a(_L16("\x0e40\x0e02\x0e32")); -const TBuf<8> KThai_e_X_ii_yoyak(_L16("\x0e40\x0e2e\x0e35\x0e22")); - - - -/** -* Class to test MLinebreaker -*/ - - - -class CTMLineBreaker : public CTGraphicsBase - { -public: - CTMLineBreaker(CTestStep* aStep) : - CTGraphicsBase(aStep) - { - - } - -protected: -//from CTGraphicsStep - virtual void RunTestCaseL(TInt aCurTestCase); - -/** - * - * Find the "range" of a Linebreaker class - * - * @param "const TUint16* aData" - * Buffer containing characters all in a given line break class. - * - * @param "const TUint16 aLength" - * Number of 16-bit characters in aData - * - * @param "const TUint aCode" - * A character possibly in the same linebreaker class as the characters in aData - * - * @param "TUint& aRangeStart" - * Returns character code starting range of characters in class if aCode found. - * A range is not necessarily the whole of aData, this may contain one or - * more contiguous ranges of characters. - * - * @param "TUint& aRangeEnd" - * Returns one beyond the end of the range of characters in class (if aCode found) - * - * @return ETrue if aCode in aData - * - * - */ - TBool FindClassRange(const TUint16* aData, const TUint aLength, const TUint aCode, - TUint& aRangeStart, TUint& aRangeEnd, const TBool aCombineSurrogatePairs); - -/** - * - * Test for MLineBreaker::LineBreakClass - * - * @param "const TUint16* aData" - * Buffer containing characters all in a given line break class. - * - * @param "const TUint16 aLength" - * Number of 16-bit characters in aData - * - * @param "const TUint aClass" - * class of these characters as defined in MLinebreaker - * - */ - void TestSingleLinebreakClass(const TUint16* aData , const TUint aLength, const TUint aClass, const TBool aCombineSurrogatePairs); - /** - * - * Test MLineBreaker::LineBreakClass with every character - * - */ - void TestLineBreakClass(); - - /** - * - * Test MLineBreaker::LineBreakPossible with every character - * - */ - void TestLineBreakPossible(); - - /** - * - * MLinebreaker::GetLineBreakInContext - * - */ - void TestGetLineBreakInContext(); - - //placeholder for future tests - MLinebreaker::isHangingCharacter is unimplemented - void TestHangingCharacterL() - { - } - - /** - * - * Test MLineBreaker::GetLineBreak - * - */ - - void TestGetLineBreak(); - - /** - * Exactly the same as GetLineBreak, but aCbDelegate's functions may leave - * so the whole function may leave. - */ - void TestGetLineBreakL() - { - } - void TestThaiLineBreak_Syllables(); - void TestThaiLineBreak_SyllablePairs(); - void TestThaiLineBreak_SentenceAndDirection(); - void TestThaiLineBreak_OtherSaComplexContent(); - void TestThaiLineBreak_LineBreakSaCm(); - void TestThaiLineBreak_LineBreakSaForeignCm(); - void SingleThaiTest(const TDesC& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, - TBool aForwards, TInt aExpectedBreakPos); - void TestThaiLineBreak_LineBreakSaContext(); - void TestThatLineBreak_Regression(); - void TestThatLineBreak_ZWS(); - void DEF037641_L(); - void TestGurmukhi(); - void TestMalayalam(); - void INC142588_L(); - }; - -/** - This routine is used to verify that valid Thai character sequences - are not broken by the MLineBreaker::GetLineBreakInContext() API. -*/ -void CTMLineBreaker::TestThaiLineBreak_Syllables() - { - TBool result; - MLineBreaker breaker; - TInt breakPos = 0; - TUint failures = 0; - TBuf<8> text; - const TText16* consonant; - - for (TInt form = 0; KThaiSyllableTable[form].iLength != -1; ++form) - { - if (KThaiSyllableTable[form].iLength == 0) // Ignore syllables not supported. - { - form++; - continue; - } - - - for (consonant = KThaiConsonantTable; *consonant != 0xffff; ++consonant) - { - text.SetLength(KThaiSyllableTable[form].iLength); - for (int i=0; i < KThaiSyllableTable[form].iLength; i++) - { - if (KThaiSyllableTable[form].iText[i] != 0xffff) - text[i] = KThaiSyllableTable[form].iText[i]; - else - text[i] = *consonant; - } - result = breaker.GetLineBreakInContext (text, 0, - KThaiSyllableTable[form].iLength, ETrue, breakPos); - if (result) - { - failures++; - INFO_PRINTF3(_L("TestThaiLineBreak_Syllables failed on forward form:%d, consonant:%d\n"), form, *consonant); - } - } - - } - - if (failures) - INFO_PRINTF2(_L("TestThaiLineBreak_Syllables total failed: %d\n"), failures); - TEST (failures == 0); - } - - -/** - This routine is used to verify all known legal inter-syllable breaks - occur by pairing syllables together and asking for a break in both - the forward na dbackwards direction. This is known to uncover a weakness - in the original MLineBreaker class and so uses the top level API - MLineBreaker::GetLineBreak(). -*/ -void CTMLineBreaker::TestThaiLineBreak_SyllablePairs() - { - TBool result1; - TBool result2; - MLineBreaker breaker; - TInt breakPos1=0; - TInt breakPos2=0; - TInt breakPosAS=0; - TUint failures=0; - TUint runs=0; - TBuf<16> text; - TBuf<256> logBuf; - TBool failForward; - TBool failBackward; - - /*{ //Useful extra logging for when there is a test failure - _LIT(KString,"Truncated text"); - _LIT(KCharInfo,"Char 0x%04x (%d '%c') LineBreakClass %d Range %d-%d"); - text.Append(KString); - const TInt len=text.Length(); - TUint chr,lbCl,start,end; - TInt ii; - for (ii=0;ii<len;++ii) - { - chr=text[ii]; - lbCl=breaker.LineBreakClass(chr,start,end); - INFO_PRINTF7(KCharInfo,text[ii],text[ii],text[ii],lbCl,start,end); - } - text.Zero(); - }*/ - - for (TInt form1 = 0; KThaiSyllableTable[form1].iLength != -1; ++form1) - { - if (KThaiSyllableTable[form1].iLength == 0) // Ignore syllables not supported. - continue; - if (form1==6 || form1==19 || form1==25 || form1==32 || form1==38 || - (form1>=40 && form1<=43)) continue; - - for (TInt form2 = 0; KThaiSyllableTable[form2].iLength != -1; ++form2) - { - if (KThaiSyllableTable[form2].iLength == 0) // Ignore syllables not supported. - continue; - if (form2==40 || form2==41) continue; - - text = TPtrC(KThaiSyllableTable[form1].iText, KThaiSyllableTable[form1].iLength); - text += TPtrC(KThaiSyllableTable[form2].iText, KThaiSyllableTable[form2].iLength); - for (TInt ii=0; ii<text.Length(); ++ii) - { - if (text[ii]==0xffff) text[ii] = 0x0e01; - } - - runs++; - - result1=breaker.GetLineBreak(text,0,text.Length(),ETrue,0,breakPos1,breakPosAS); - result2=breaker.GetLineBreak(text,0,text.Length(),EFalse,0,breakPos2,breakPosAS); - _LIT(KFail,"TestThaiLineBreak_SyllablePairs failed, form pair %d %d. Forward: "); - _LIT(KPass,"Pass"); - _LIT(KBackward,". Backward: "); - _LIT(KNoBreak,"No Break Found"); - _LIT(KFound,"Break At %d, should be %d"); - failForward=(!result1 || breakPos1!=KThaiSyllableTable[form1].iLength); - failBackward=(!result2 || breakPos2!=KThaiSyllableTable[form1].iLength); - if (failForward || failBackward) - { - logBuf.Format(KFail,form1,form2); - if (!failForward) - logBuf.Append(KPass); - else - { - ++failures; - if (!result1) - logBuf.Append(KNoBreak); - else - logBuf.AppendFormat(KFound,breakPos1,KThaiSyllableTable[form1].iLength); - } - logBuf.Append(KBackward); - if (!failBackward) - logBuf.Append(KPass); - else - { - ++failures; - if (!result2) - logBuf.Append(KNoBreak); - else - logBuf.AppendFormat(KFound,breakPos2,KThaiSyllableTable[form1].iLength); - } - } - } - } - - if (failures) - INFO_PRINTF2(_L("TestThaiLineBreak_SyllablePairs total failed: %d\n"), failures); - TEST (failures == 0); - } - - -/** - This routine is used to verify the parsing of Thai sentences in both - the forawrd and backward directorions ensuring the - MLineBreaker::GetLineBreakInContext() API only breaks between the - syllables and forms in the line. Each line contains three syllables. -*/ -void CTMLineBreaker::TestThaiLineBreak_SentenceAndDirection() - { - TBool result; - MLineBreaker breaker; - TInt breakPos = 0; - TUint failures = 0; - TBuf<32> text; - - for (TInt form = 0; KThaiSyllableTable[form].iLength != -1; form++) - { - if (KThaiSyllableTable[form].iLength == 0) // Ignore syllables not supported. - { - form++; - continue; - } - - text = KThai_e_X_a; - text.SetLength(KThai_e_X_a.Length()+KThaiSyllableTable[form].iLength); - for (int i=0; i < KThaiSyllableTable[form].iLength; i++) - { - if (KThaiSyllableTable[form].iText[i] != 0xffff) - text[KThai_e_X_a.Length()+i] = KThaiSyllableTable[form].iText[i]; - else - text[KThai_e_X_a.Length()+i] = (TText16)0x0e0c; - } - text += KThai_e_X_ii_yoyak; - - breakPos = -1; - result = breaker.GetLineBreakInContext (text, 0, text.Length(), ETrue, breakPos); - if (!result || - (result && (breakPos != KThai_e_X_a.Length()))) - { - failures++; - INFO_PRINTF3(_L("TestGetLineBreakInContext failed on forward form:%d break:%d\n"), form, breakPos); - } - - breakPos = -1; - result = breaker.GetLineBreakInContext (text, 0, text.Length(), EFalse, breakPos); - if (!result || - (result && (breakPos != text.Length()-KThai_e_X_ii_yoyak.Length()))) - { - failures++; - INFO_PRINTF3(_L("TestGetLineBreakInContext failed on backwards form:%d break:%d\n"), form, breakPos); - } - - } - - if (failures) - INFO_PRINTF2(_L("TestGetLineBreakInContext total failed: %d\n"), failures); - TEST (failures == 0); - } - - -/** - The purpose of this routine is to test MLineBreaker::GetLineBreakInContext() - with other East Asia 'Sa' (Complex Content) text in combinantion with a Thai - syllable. - Currently there are 3 other East Asia sciprts that are not supported, - these are from the countries: Laos, Burma & Cambodia. -*/ -void CTMLineBreaker::TestThaiLineBreak_OtherSaComplexContent() - { - TBool result; - MLineBreaker breaker; - TInt breakPos; - TBuf<32> text; - TBuf<8> thai_e_X_a(_L16("\x0e40\x0e02\x0e32")); - TBuf<8> thai_e_X_ii_yoyak(_L16("\x0e40\x0e2e\x0e35\x0e22")); - - // Test the API with Thai syllable followed by Lao 'Sa' text - TBuf<8> lao_ei_ko(_L16("\x0ec1\x0e81")); - text = thai_e_X_a; - text += lao_ei_ko; - breakPos = -1; - result = breaker.GetLineBreakInContext (text, 0, text.Length(), ETrue, breakPos); - TEST(result && breakPos == 3); - - // Test the API with Thai syllable followed by Myanmar 'Sa' text - TBuf<8> myanmar_cha_i_nna(_L16("\x1006\x1023\x100f")); - text = thai_e_X_ii_yoyak; - text += myanmar_cha_i_nna; - breakPos = -1; - result = breaker.GetLineBreakInContext (text, 0, text.Length(), ETrue, breakPos); - TEST(result && breakPos == 4); - - // Test the API with by Khmer 'Sa' text followed by Thai syllable - TBuf<8> Khmer_ta_qi_mo(_L16("\x178f\x17a5\x1798")); - text = Khmer_ta_qi_mo ; - text += thai_e_X_ii_yoyak; - breakPos = -1; - result = breaker.GetLineBreakInContext (text, 0, text.Length(), ETrue, breakPos); - TEST(result && 3 == breakPos); - } - - -/** - This routine is used to verify the parsing of Thai sentences in both - the forward and backward directions ensuring the framework - MLineBreaker::GetLineBreak() API only breaks between the - syllables and forms in the line. Each line contains three syllables. -*/ -void CTMLineBreaker::TestThaiLineBreak_LineBreakSaCm() - { - TBool result; - MLineBreaker breaker; - TInt breakPos; - TInt breakPosAS; - TUint failures = 0; - TBuf<32> text(_L16("\x0e01\x0e36\x0e01\x0e38\x0e01\x0e36")); - - breakPos = breakPosAS = -1; - result = breaker.GetLineBreak (text, 0, text.Length(), ETrue, 0, breakPos, breakPosAS); - if (!result || - (result && (breakPos != 2))) - { - failures++; - INFO_PRINTF2(_L("TestThaiLineBreak_LineBreakSaCm failed on forward break:%d\n"), breakPos); - } - - breakPos = breakPosAS = -1; - result = breaker.GetLineBreak (text, 0, text.Length(), EFalse, 0, breakPos, breakPosAS); - if (!result || - (result && (breakPos != 4))) - { - failures++; - INFO_PRINTF2(_L("TestThaiLineBreak_LineBreakSaCm failed on backwards break:%d\n"), breakPos); - } - - if (failures) - INFO_PRINTF2(_L("TestThaiLineBreak_LineBreakSaCm total failed: %d\n"), failures); - TEST (failures == 0); - } - -/** - Tests that the Thai line breaking ignores combining classes. -*/ -void CTMLineBreaker::TestThaiLineBreak_LineBreakSaForeignCm() - { - MLineBreaker breaker; - _LIT(KRepresentativeThaiCharacters, "A\xE01\xE07\xE22\xE27\xE2B\xE2D\xE30\xE31\xE32\xE33\xE34\xE35\xE40\xE45"); - const TText* chars = &KRepresentativeThaiCharacters()[0]; - const TInt length = KRepresentativeThaiCharacters().Length(); - const TInt KCombiningGraveAccent = 0x300; - TBuf<3> thai; - TBuf<6> adornedThai; - thai.SetLength(3); - adornedThai.SetLength(6); - for (TInt i = 0; i != length; ++i) - { - thai[0] = chars[i]; - adornedThai[0] = chars[i]; - adornedThai[1] = KCombiningGraveAccent; - for (TInt j = 0; j != length; ++j) - { - thai[1] = chars[j]; - adornedThai[2] = chars[j]; - adornedThai[3] = KCombiningGraveAccent; - for (TInt k = 0; k != length; ++k) - { - thai[2] = chars[k]; - adornedThai[4] = chars[k]; - adornedThai[5] = KCombiningGraveAccent; - TInt breakPoint; - TInt breakPointAfterSpaces; - TBool result = breaker.GetLineBreak( - thai, 1, 3, ETrue, 0, breakPoint, breakPointAfterSpaces); - TEST(!result || breakPointAfterSpaces == breakPoint); - TInt breakPointAdorned; - TBool resultAdorned = breaker.GetLineBreak( - adornedThai, 1, 6, ETrue, 0, - breakPointAdorned, breakPointAfterSpaces); - TEST(!resultAdorned || breakPointAfterSpaces == breakPointAdorned); - // If one has a result so should the other, and they should match. - TEST(!result || (resultAdorned && - breakPointAdorned == breakPoint * 2)); - // If one has no result, the other should have no result as well. - TEST(result || !resultAdorned); - - // And backwards: - result = breaker.GetLineBreak( - thai, 1, 3, EFalse, 0, breakPoint, breakPointAfterSpaces); - TEST(!result || breakPointAfterSpaces == breakPoint); - resultAdorned = breaker.GetLineBreak( - adornedThai, 1, 6, EFalse, 0, - breakPointAdorned, breakPointAfterSpaces); - TEST(!resultAdorned || breakPointAfterSpaces == breakPointAdorned); - // If one has a result so should the other, and they should match. - TEST(!result || (resultAdorned && - breakPointAdorned == breakPoint * 2)); - // If one has no result, the other should have no result as well. - TEST(result || !resultAdorned); - } - } - } - } - -/** - Tests that aText breaks at aExpectedBreakPos (or does not break if - aExpectedBreakPos == -1) with the minimum and maximum break points set to - aMinBreakPos and aMaxBreakPos. Search is forwards if aForwards is true, - backwards otherwise. -*/ -void CTMLineBreaker::SingleThaiTest(const TDesC& aText, - TInt aMinBreakPos, TInt aMaxBreakPos, - TBool aForwards, TInt aExpectedBreakPos) - { - MLineBreaker breaker; - TInt breakPoint; - TInt breakAfterSpaces; - TBool result = breaker.GetLineBreak( - aText, aMinBreakPos, aMaxBreakPos, aForwards, 0, - breakPoint, breakAfterSpaces); - TEST(!result || breakAfterSpaces == breakPoint); - TEST(!result || breakPoint == aExpectedBreakPos); - TEST(result || aExpectedBreakPos == -1); - } - -/** - Tests that specifying restrictive minimum and maximum break points does not - confuse the SA line breaker. -*/ -void CTMLineBreaker::TestThaiLineBreak_LineBreakSaContext() - { - _LIT(KKoKaiGraveKoKai, "\xE01\x300\xE01"); - SingleThaiTest(KKoKaiGraveKoKai, 2, 2, ETrue, 2); - SingleThaiTest(KKoKaiGraveKoKai, 2, 2, EFalse, 2); - } - -/** - Tests some specific problems. -*/ -void CTMLineBreaker::TestThatLineBreak_Regression() - { - SingleThaiTest(_L("\xE27\xE01"), 1, 1, ETrue, 1); - SingleThaiTest(_L("\xE27\xE2B"), 1, 1, ETrue, -1); - } - -/** - Tests ZWS for splitting word. For INC135997 -*/ -void CTMLineBreaker::TestThatLineBreak_ZWS() - { - _LIT(KZWSMsg, "\xE40\xE27\xE47\xE1A\x200B\xE25\xE34\xE07\xE04\xE4C\xE02\xE48\xE32"); - SingleThaiTest(KZWSMsg, 1, 13, ETrue, 5); - } - -/** - This function determines the series of characters a particular line break class covers - returning the start & end characters and a boolean indicating the range was found -*/ -TBool CTMLineBreaker::FindClassRange(const TUint16* aData, const TUint aLength, const TUint aCode, - TUint& aRangeStart, TUint& aRangeEnd, const TBool aCombineSurrogatePairs) - { - TextIterator iterator(aData, aLength, 0, aCombineSurrogatePairs); - TUint index = 0; - while (!iterator.Wrapped()) - { - TUint ch = iterator.NextChar(); - if (ch == aCode) - { - // scan for start of range - TUint startChar = ch; - iterator.SetIndex(index); - TUint current = iterator.Char(); - while (iterator.Index() > 0) - { - TUint previous = iterator.PreviousChar(); - if (previous != current - 1) - { - break; - } - current = iterator.Char(); - } - startChar = current; - - // scan for end of range - TUint endChar = ch; - iterator.SetIndex(index); - current = iterator.NextChar(); - while (!iterator.Wrapped()) - { - TUint next = iterator.Char(); - if (current != next - 1) - { - break; - } - current = iterator.NextChar(); - } - endChar = current; - - aRangeStart = startChar; - aRangeEnd = endChar + 1; - return ETrue; - } - index = iterator.Index(); - } - - return EFalse; - } - -/** - This function is part of the TestLineBreakClass test case, testing the line breaking behaviour of Symbian's implementation of the Unicode Line-Breaking Algorithm (UAX#14) - Specifically, it compares the line break class for a given character conforms to UAX#14. It locates - the start & end characters for a given line break class & compares them to an expected range -*/ -void CTMLineBreaker::TestSingleLinebreakClass(const TUint16* aData , const TUint aLength, const TUint aClass, const TBool aCombineSurrogatePairs) - { - MLineBreaker breaker; - TextIterator iterator(aData, aLength, 0, aCombineSurrogatePairs); - while (!iterator.Wrapped()) - { - TUint myChar = iterator.NextChar(); -// this->Logger().LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, _L("char = %x"), myChar); - TUint theirStart; - TUint theirEnd; - TUint theirClass = breaker.LineBreakClass(myChar, theirStart, theirEnd); - TUint myStart; - TUint myEnd; - TEST(theirClass == aClass); - TEST(FindClassRange(aData, aLength, myChar, myStart, myEnd, aCombineSurrogatePairs)); - // Defect fix for DEF085772 changed the ranges. It is now possible that - // consecutive characters belonging to the same class are now in different ranges. - // So the range can be smaller than the expected range. - TEST(theirStart>=myStart); - TEST(theirEnd<=myEnd); - } - } - -/** - This function tests the line breaking behaviour of Symbian's implementation of the Unicode Line-Breaking Algorithm (UAX#14) - Specifically, it checks the line break class for a series of characters & confirms they're consistent - with UAX#14 - It also profiles the time taken to iterate through the entire table of characters & their corresponding line break properties -*/ -void CTMLineBreaker::TestLineBreakClass() - { - TStopWatch profile; - - profile.Start(); - for (TUint i = 0 ; i < KClassDataLength ; ++i) - { -// this->Logger().LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, _L("%d of %d"), i, KClassDataLength); - if (KClassData[i].iData != KSurrogate) - TestSingleLinebreakClass(KClassData[i].iData, KClassData[i].iLength, KClassData[i].iClass, ETrue); - else - TestSingleLinebreakClass(KClassData[i].iData, KClassData[i].iLength, KClassData[i].iClass, EFalse); - } - TUint numMilliSecs = profile.Stop(); - - RDebug::Print(_L("...Test performed in %d.%d s\n"),numMilliSecs/1000,numMilliSecs%1000); - }; - -/** - This function tests the behaviour of Symbian's implementation of the Unicode Line-Breaking Algorithm (UAX#14) - Specifically, it tests MLineBreaker::LineBreakPossible method's behaviour in determining whether line - breaks are permitted between different combinations of LineBreak classes -*/ -void CTMLineBreaker::TestLineBreakPossible() - { - MLineBreaker breaker; - for (TUint i = 0 ; i < KTabularClasses ; ++i) - { - for (TUint j = 0 ; j < KTabularClasses ; ++j) - { - TBool breakPossibleWithoutSpaces = breaker.LineBreakPossible( - KClassData[i].iClass, KClassData[j].iClass, EFalse - ); - TBool breakPossibleWithSpaces = breaker.LineBreakPossible( - KClassData[i].iClass, KClassData[j].iClass, ETrue - ); - - TEST(breakPossibleWithoutSpaces == KLineBreakOpportunities[i][j][0]); - TEST(breakPossibleWithSpaces == KLineBreakOpportunities[i][j][1]); - - } - } - } - -/** - This function tests the Thai line breaking feature of the - MLineBreaker class in the LineBreak.dll. First introduced - during the Sirocco project (A3.1.2). -@SYMFssID Graphics/GDI/LineBreaker/2 -*/ -void CTMLineBreaker::TestGetLineBreakInContext() - { - INFO_PRINTF1(_L("Thai syllables")); - TestThaiLineBreak_Syllables(); - INFO_PRINTF1(_L("Thai syllable pairs")); - TestThaiLineBreak_SyllablePairs(); - INFO_PRINTF1(_L("Thai sentence and direction")); - TestThaiLineBreak_SentenceAndDirection(); - INFO_PRINTF1(_L("Thai with foreign SA")); - TestThaiLineBreak_OtherSaComplexContent(); - INFO_PRINTF1(_L("Thai with CM")); - TestThaiLineBreak_LineBreakSaCm(); - - INFO_PRINTF1(_L("Thai with foreign CM")); - TestThaiLineBreak_LineBreakSaForeignCm(); - INFO_PRINTF1(_L("Thai requiring context")); - TestThaiLineBreak_LineBreakSaContext(); - INFO_PRINTF1(_L("Thai regression tests")); - TestThatLineBreak_Regression(); - INFO_PRINTF1(_L("Thai ZWS Split. For INC135997.")); - TestThatLineBreak_ZWS(); - } - -/** - This function tests the MLineBreaker::GetLineBreak method's behaviour. The results returned by the - method are compared against known sample data. -*/ -void CTMLineBreaker::TestGetLineBreak() - { - MLineBreaker breaker; - TBuf<24> testData; - TUint i,j,k,l; - for (i = 0 ; i < KTabularClasses ; ++i) - { - TUint16 beforeLength = KClassData[i].iLength; - TextIterator beforeIterator(KClassData[i].iData, beforeLength); - - for (j = 0 ; j < KTabularClasses ; ++j) - { - TUint16 afterLength = KClassData[j].iLength; - TextIterator afterIterator(KClassData[j].iData, afterLength); - - TUint longest = (beforeLength >= afterLength) ? beforeLength : afterLength; - - for (k = 0 ; k < longest ; ++k) - { - TInt lineBreak = 0; - TInt nextLine = 0; - TUint before = beforeIterator.NextChar(); - TUint after = afterIterator.NextChar(); - //first test no interposing spaces case - testData.Zero(); - AppendCharacter(&testData, before); - AppendCharacter(&testData, after); - - TBool breakPossibleWithoutSpaces = - breaker.GetLineBreak(testData, 0, testData.Length(), - ETrue, 0, lineBreak, nextLine); - - //second test interposing spaces case - - - testData.Zero(); - AppendCharacter(&testData, before); - for (l = 0 ; l < 10 ; ++l) - { - AppendCharacter(&testData, 0x20); //interpose some spaces - } - AppendCharacter(&testData, after); - - - TBool breakPossibleWithSpaces = - breaker.GetLineBreak(testData, 0, testData.Length(), - ETrue, 0, lineBreak, nextLine); - - - TEST(breakPossibleWithoutSpaces == KLineBreakOpportunities[i][j][0]); - TEST(breakPossibleWithSpaces == KLineBreakOpportunities[i][j][1]); - } - } - } - } - -/** -@SYMTestCaseID GRAPHICS-GDI-LineBreak-0008 -@SYMTestCaseDesc Case to check Gurmukhi line break -@SYMTestPriority High -@SYMTestActions Format text and check line break -@SYMTestExpectedResults 1. Line is broken at syllable border - 2. Line is broken at word boundary. -@SYMPREQ 1922: Gurmukhi support -*/ -void CTMLineBreaker::TestGurmukhi() - { - _LIT(KGurmuhiTestData, - "\x0a28\x0a2e\x0a38 \x0a15\x0a3e\x0a30\x0a26\x0a3e"); - _LIT(KGurmuhiTestData2, - "\x0a28\x0a3f\x0a1a\x0a3f \x0a70\x0a26\x0a41\x0020 \x0a28\x0a3f"); - _LIT(KGurmuhiTestData3, - "\x0a17\x0a4d\x0a30\x0a39\x0a3f \x0a2a\x0a70"); - _LIT(KGurmuhiTestData4, - "\x0a16\x0a40\x0a05\x0a32\x0a4b\x0a2a\x0a70 \x0a16\x0a40\x0a05\x0a32\x0a4b\x0a2a\x0a30\x0a09\x0a2a\x0a15\x0a3e\x0a30\x0a3f\x0a06\x0a2a\x0a4d\x0a30\x0a24\x0a3e\x0a2a\x0a3f"); - MLineBreaker breaker; - TInt lineBreak = -23456; - TInt lineBreakAfterSpaces = -12345; - breaker.GetLineBreak(KGurmuhiTestData, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 3); - TEST(lineBreakAfterSpaces == 4); - - breaker.GetLineBreak(KGurmuhiTestData2, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 4); - TEST(lineBreakAfterSpaces == 5); - - breaker.GetLineBreak(KGurmuhiTestData3, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 5); - TEST(lineBreakAfterSpaces == 6); - - breaker.GetLineBreak(KGurmuhiTestData4, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - - TEST(lineBreak == 7); - TEST(lineBreakAfterSpaces == 8); - } - - -/** -@SYMTestCaseID GRAPHICS-GDI-LineBreak-0009 -@SYMTestCaseDesc Case to check Malayalam line break -@SYMTestPriority High -@SYMTestActions Format text and check line break -@SYMTestExpectedResults 1. Line is broken at syllable border - 2. Line is broken at word boundary. -@SYMPREQ 1922: Malayalam support -*/ -void CTMLineBreaker::TestMalayalam() - { - _LIT(KMalayalamTestData, - "\xd2a\xd23\xd3f \xd2e\xd41\xd1f\xd15\xd4d\xd15\xd4d"); - _LIT(KMalayalamTestData2, - "\xd15\xd4d\x200c\xd2a \xd42\xd30\xd4d\x200d"); - _LIT(KMalayalamTestData3, - "\xd15\xd4d\xd15\xd4b\xd1f\xd4d\x200c\xd35\xd3f\xd35\xd3f\xd27\xd06\xd35\xd36\xd4d"); - _LIT(KMalayalamTestData4, - "\xd28\xd41\xd02\xd1a\xd46\xd2f\xd4d \xd24\xd24\xd41\xd2a\xd4b\xd32\xd46\xd2f\xd41\xd33\xd4d\xd33"); - MLineBreaker breaker; - TInt lineBreak = -23456; - TInt lineBreakAfterSpaces = -12345; - breaker.GetLineBreak(KMalayalamTestData, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 3); - TEST(lineBreakAfterSpaces == 4); - - breaker.GetLineBreak(KMalayalamTestData2, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 4); - TEST(lineBreakAfterSpaces == 5); - - breaker.GetLineBreak(KMalayalamTestData3, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 4); - TEST(lineBreakAfterSpaces == 5); - - breaker.GetLineBreak(KMalayalamTestData4, 1, 25, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - - TEST(lineBreak == 7); - TEST(lineBreakAfterSpaces == 8); - } - - -void CTMLineBreaker::DEF037641_L() - { - _LIT(KIthakiAthenaLefkadaDecomposed, - "\x399\x3B8\x3B1\x301\x3BA\x3B9 \x391\x3B8\x3B7\x301\x3BD\x3B1 \x39B\x3B5\x3C5\x3BA\x3B1\x301\x3B4\x3B1"); - _LIT(KIthakiAthenaLefkadaComposed, - "\x399\x3B8\x3AC\x3BA\x3B9 \x391\x3B8\x3AE\x3BD\x3B1 \x39B\x3B5\x3C5\x3BA\x3AC\x3B4\x3B1"); - MLineBreaker breaker; - TInt lineBreak = -23456; - TInt lineBreakAfterSpaces = -12345; - breaker.GetLineBreak(KIthakiAthenaLefkadaDecomposed, 1, 21, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 6); - TEST(lineBreakAfterSpaces == 7); - breaker.GetLineBreak(KIthakiAthenaLefkadaDecomposed, 1, 21, EFalse, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 13); - TEST(lineBreakAfterSpaces == 14); - breaker.GetLineBreak(KIthakiAthenaLefkadaComposed, 1, 18, ETrue, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 5); - TEST(lineBreakAfterSpaces == 6); - breaker.GetLineBreak(KIthakiAthenaLefkadaComposed, 1, 18, EFalse, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 11); - TEST(lineBreakAfterSpaces == 12); - - // Hmm, those seemed to work despite the presence of DEF037641. - // Let's try something else. - _LIT(KIthakiCommaAthena, - "\x399\x3B8\x3B1\x301\x3BA\x3B9,\x391\x3B8\x3B7\x301\x3BD\x3B1"); - breaker.GetLineBreak(KIthakiCommaAthena, 1, 12, EFalse, 0, - lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 7); - TEST(lineBreakAfterSpaces == 7); - } - -// this custom line breaker forces break after underline '_' -class TCustomLineBreaker : public MLineBreaker - { - public: - virtual TUint LineBreakClass(TUint aCode, TUint& aRangeStart, TUint& aRangeEnd) const - { - if (aCode == 0x5f) - return MLineBreaker::EBaLineBreakClass; - else - return MLineBreaker::LineBreakClass(aCode, aRangeStart, aRangeEnd); - } - }; - -void CTMLineBreaker::INC142588_L() - { - // should break after underline '_' - _LIT(KSourceText, "abcdefgh_ijklmn"); - TCustomLineBreaker breaker; - TInt lineBreak = -23456; - TInt lineBreakAfterSpaces = -12345; - breaker.GetLineBreak(KSourceText, 1, 10, ETrue, 0, lineBreak, lineBreakAfterSpaces); - TEST(lineBreak == 9); - TEST(lineBreakAfterSpaces == 9); - } - -void CTMLineBreaker::RunTestCaseL(TInt aCurTestCase) - { - ((CTLineBreakStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); - switch(aCurTestCase) - { - case 1: -/** - @SYMTestCaseID GRAPHICS-GDI-LineBreak-0001 -*/ - INFO_PRINTF1(_L("LineBreaker tests-1")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0001")); - TestLineBreakClass(); - break; - case 2: -/** - @SYMTestCaseID GRAPHICS-GDI-LineBreak-0002 -*/ - INFO_PRINTF1(_L("LineBreaker tests-2")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0002")); - TestLineBreakPossible(); - break; - case 3: -/** - @SYMTestCaseID GRAPHICS-GDI-LineBreak-0003 -*/ - INFO_PRINTF1(_L("LineBreaker tests-3 - GetLineBreakInContext()")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0003")); - TestGetLineBreakInContext(); - break; - case 4: -/** - @SYMTestCaseID GRAPHICS-GDI-LineBreak-0004 -*/ - INFO_PRINTF1(_L("LineBreaker tests-4")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0004")); - TestGetLineBreak(); - break; - case 5: -/** - @SYMTestCaseID GRAPHICS-GDI-LineBreak-0005 -*/ - INFO_PRINTF1(_L("LineBreaker tests-5")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0005")); - TestGetLineBreakL(); - break; - case 6: -/** - @SYMTestCaseID GRAPHICS-GDI-LineBreak-0006 -*/ - INFO_PRINTF1(_L("LineBreaker tests-6")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0006")); - TestHangingCharacterL(); - break; - case 7: -/** - @SYMTestCaseID GRAPHICS-GDI-LineBreak-0007 -*/ - INFO_PRINTF1(_L("DEF037641 - Default line breaking broken for Greek and Cyrillic")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0007")); - DEF037641_L(); - break; - case 8: - INFO_PRINTF1(_L("Indic Gurmukhi line breaking")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0008")); - TestGurmukhi(); - break; - case 9: - INFO_PRINTF1(_L("Indic Malayalam line breaking")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-LineBreak-0009")); - TestMalayalam(); - break; - case 10: - /** - @SYMTestCaseID TI18N-GDI-CIT-4078 - */ - INFO_PRINTF1(_L("INC142588 - Customized line break class sometimes does not work")); - ((CTLineBreakStep*)iStep)->SetTestStepID(_L("TI18N-GDI-CIT-4078")); - INC142588_L(); - break; - case 11: - ((CTLineBreakStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); - ((CTLineBreakStep*)iStep)->CloseTMSGraphicsStep(); - TestComplete(); - break; - } - ((CTLineBreakStep*)iStep)->RecordTestResultL(); - } - -//-------------- -CTLineBreakStep::CTLineBreakStep() - { - SetTestStepName(KTLineBreakStep); - } - -CTGraphicsBase* CTLineBreakStep::CreateTestL() - { - return new (ELeave) CTMLineBreaker(this); - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TLineBreak.h --- a/graphicsdeviceinterface/gdi/tgdi/TLineBreak.h Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __TLINEBREAK_H__ -#define __TLINEBREAK_H__ - -#include "TGraphicsHarness.h" - - - -class CTLineBreakStep : public CTGraphicsStep - { -public: - CTLineBreakStep(); -protected: - //from CTGraphicsStep - virtual CTGraphicsBase* CreateTestL(); - }; - -_LIT(KTLineBreakStep,"TLineBreak"); - - - -#endif diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TTFSTORE.CPP --- a/graphicsdeviceinterface/gdi/tgdi/TTFSTORE.CPP Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#include "TGraphicsContext.h" -#include "TTYPES.H" - - -CTestTypefaceStore::CTestTypefaceStore(CTTypes* aTest) : - iTest(aTest) - { - } - -void CTestTypefaceStore::ConstructTestL() - { - ConstructL(); - } - -TInt CTestTypefaceStore::AccessCount(TInt aIndex) - { - return(iFontAccess->At(aIndex).iAccessCount); - } - -TInt CTestTypefaceStore::Count() - { - return(iFontAccess->Count()); - } - -void CTestTypefaceStore::AddFont(CFont* aFont) - { - TRAPD(ret,AddFontL(aFont)); - iTest->TEST2(ret, KErrNone); - } - -void CTestTypefaceStore::OpenFont(CFont* aFont) - { - TInt numfonts=Count(); - for(TInt count=0;count<numfonts;count++) - { - if(iFontAccess->At(count).iFont==aFont) - { - iFontAccess->At(count).iAccessCount++; - return; - } - } - } - -TestTFStore::TestTFStore(CTTypes* aTest) : - iTTFStore(aTest), - iTest(aTest) - { - - } - -/** - TestTFStore::Test - - Method to test the functionality associated with CTypeFaceStore (abstract base) class - The implementation is contained within CTestTypeFaceStore - Called from the TTypes test script -*/ -void TestTFStore::Test() - { - CFont* f1=new CTestFont; - CFont* f2=new CTestFont; - CFont* f3=new CTestFont; - CFont* f4=new CTestFont; - CFont* f5=new CTestFont; - - TRAPD(errCode, iTTFStore.ConstructTestL()); - iTest->TEST2(errCode, KErrNone); - iTTFStore.AddFont(f1); - iTest->TEST(iTTFStore.Count()==1); - iTest->TEST(iTTFStore.AccessCount(0)==1); - iTTFStore.AddFont(f2); - iTest->TEST(iTTFStore.Count()==2); - iTest->TEST(iTTFStore.AccessCount(0)==1); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTTFStore.AddFont(f3); - iTest->TEST(iTTFStore.Count()==3); - iTest->TEST(iTTFStore.AccessCount(0)==1); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTest->TEST(iTTFStore.AccessCount(2)==1); - iTTFStore.AddFont(f4); - iTest->TEST(iTTFStore.Count()==4); - iTest->TEST(iTTFStore.AccessCount(0)==1); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTest->TEST(iTTFStore.AccessCount(2)==1); - iTest->TEST(iTTFStore.AccessCount(3)==1); - iTTFStore.OpenFont(f1); - iTest->TEST(iTTFStore.Count()==4); - iTest->TEST(iTTFStore.AccessCount(0)==2); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTest->TEST(iTTFStore.AccessCount(2)==1); - iTest->TEST(iTTFStore.AccessCount(3)==1); - iTTFStore.OpenFont(f4); - iTest->TEST(iTTFStore.Count()==4); - iTest->TEST(iTTFStore.AccessCount(0)==2); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTest->TEST(iTTFStore.AccessCount(2)==1); - iTest->TEST(iTTFStore.AccessCount(3)==2); - iTTFStore.AddFont(f5); - iTest->TEST(iTTFStore.Count()==5); - iTest->TEST(iTTFStore.AccessCount(0)==2); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTest->TEST(iTTFStore.AccessCount(2)==1); - iTest->TEST(iTTFStore.AccessCount(3)==2); - iTest->TEST(iTTFStore.AccessCount(4)==1); - iTTFStore.OpenFont(f5); - iTest->TEST(iTTFStore.Count()==5); - iTest->TEST(iTTFStore.AccessCount(0)==2); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTest->TEST(iTTFStore.AccessCount(2)==1); - iTest->TEST(iTTFStore.AccessCount(3)==2); - iTest->TEST(iTTFStore.AccessCount(4)==2); - iTTFStore.OpenFont(f4); - iTest->TEST(iTTFStore.Count()==5); - iTest->TEST(iTTFStore.AccessCount(0)==2); - iTest->TEST(iTTFStore.AccessCount(1)==1); - iTest->TEST(iTTFStore.AccessCount(2)==1); - iTest->TEST(iTTFStore.AccessCount(3)==3); - iTest->TEST(iTTFStore.AccessCount(4)==2); -// - iTTFStore.ReleaseFont(f1); - iTTFStore.ReleaseFont(f2); - iTTFStore.ReleaseFont(f4); - iTTFStore.ReleaseFont(f4); - iTTFStore.ReleaseFont(f3); - iTTFStore.ReleaseFont(f5); - iTTFStore.ReleaseFont(f4); - iTTFStore.ReleaseFont(f1); - iTTFStore.ReleaseFont(f5); - } - -TestFontCache::TestFontCache(CTTypes* aTest): - iTest(aTest) - { - - } - -/** - TestFontCache::Test() - - Method to test the functionality within the CFontCache class - Called from the TTypes test script -*/ -void TestFontCache::Test() - { - TRAPD(ret,TestL()); - iTest->TEST2(ret, KErrNone); - } - -/** - TestFontCache::TestL() - - Method to test the functionality within the CFontCache class - Test the creation of CFontCache instance & the adding/removal of CFont fonts to the cache - Confirm no memory leaks occur - -*/ -void TestFontCache::TestL() - { - User::Heap().__DbgMarkStart(); - - iCache = new(ELeave) CFontCache; - CFont* font = NULL; - CFont* discard = NULL; - TFontSpec fs; - - for (TInt count1 = 0; count1 < KMaxFontCacheEntries; count1++) - { - font = (CFont*)(count1 + 1); - discard = iCache->AddEntryL(font,fs); - iTest->TEST(discard==NULL); - } - - font = (CFont*)KMaxFontCacheEntries; - discard = iCache->AddEntryL(font,fs); - iTest->TEST(discard==(CFont*)0x1); - delete iCache; - iCache = NULL; - - iCache = new(ELeave) CFontCache; - - for (TInt count2 = 0; count2 <= KMaxFontCacheEntries; count2++) - { - iCache->AddEntryL(NULL,fs); - iCache->RemoveFirstEntry(); - } - - delete iCache; - - User::Heap().__DbgMarkEnd(0); - } diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TTYPES.CPP --- a/graphicsdeviceinterface/gdi/tgdi/TTYPES.CPP Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/tgdi/TTYPES.CPP Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -23,446 +23,6 @@ CDirectFileStore* readstore=NULL; RStoreWriteStream writestrm; RStoreReadStream readstrm; - -TestTypeface::TestTypeface( - const TBuf<KMaxTypefaceNameLength>& aName, - TUint32 aFlags, - CTTypes* aTest) : - iName(aName), - iFlags(aFlags), - iTest(aTest) - {} - -/** - TestTypeface::Test - Tests functionality contained within TTypeface, settings various attributes - on the typeface & retrieving them to confirm the result - The test also streams the typeface to file, via CDirectFileStore calls & retrieves again - from the store to confirm result -*/ -void TestTypeface::Test() - { - TTypeface typeface1; - typeface1.iName = iName; - const TBool prop = iFlags & TTypeface::EProportional; - const TBool seri = iFlags & TTypeface::ESerif; - const TBool symb = iFlags & TTypeface::ESymbol; - - typeface1.SetIsProportional(prop); - iTest->TEST(typeface1.IsProportional() == prop); - - typeface1.SetIsSerif(seri); - iTest->TEST(typeface1.IsSerif() == seri); - iTest->TEST(typeface1.IsProportional() == prop); - - typeface1.SetIsSymbol(symb); - iTest->TEST(typeface1.IsSymbol() == symb); - iTest->TEST(typeface1.IsProportional() == prop); - iTest->TEST(typeface1.IsSerif() == seri); - - TTypeface typeface2; - typeface2.iName = iName; - typeface2.SetIsProportional(prop); - typeface2.SetIsSerif(seri); - typeface2.SetIsSymbol(symb); - iTest->TEST(typeface1 == typeface2); - - TestStream(); - - for (TInt i = 0; i < 8; i++) - { - typeface1.SetAttributes(i); - iTest->TEST(typeface1.Attributes() == i); - } - - for (TInt i = 0; i < 16; i++) - { - typeface1.SetScriptTypeForMetrics(i); - iTest->TEST(typeface1.ScriptTypeForMetrics() == i); - } - - // test for PDEF124646. The test shouldn't cause any thread panic when passing in - // a big value of an invalid TLanguage index. If the fix is not present this test will crash. - - for (TInt ii = 1; ii < 1000000; ii *= 10) - { - typeface1.SetScriptTypeForMetrics(static_cast<TLanguage>(ii)); - } - } - -/** - TestTypeface::TestStream - Called by the TestTypeface::Test method, this function - sets attributes on a typeface & streams the object to file, via CDirectFileStore calls. - It then retrieves the typeface from the store to confirm result -*/ -void TestTypeface::TestStream() - { - TTypeface typeface1; - typeface1.iName = iName; - typeface1.SetIsProportional(TTypeface::EProportional & iFlags); - typeface1.SetIsSerif(TTypeface::ESerif & iFlags); - typeface1.SetIsSymbol(TTypeface::ESymbol & iFlags); - iTest->InitialiseWriteStream(); - TRAPD(ret, typeface1.ExternalizeL(writestrm)); - iTest->TEST2(ret, KErrNone); - iTest->ResetWriteStream(); - - TTypeface typeface2; - iTest->InitialiseReadStream(); - TRAP(ret, typeface2.InternalizeL(readstrm)); - iTest->TEST2(ret, KErrNone); - iTest->ResetReadStream(); - iTest->TEST(typeface1 == typeface2); - } - -TestMargins::TestMargins(TInt aLeft,TInt aRight,TInt aTop,TInt aBottom, CTTypes* aTest): - iLeft(aLeft), - iRight(aRight), - iTop(aTop), - iBottom(aBottom), - iTest(aTest) - {} - -/** - TestMargins::Test - Tests functionality contained within the TMargins class, settings various attributes - on the margins & streaming the object to file, via CDirectFileStore calls. - The TMargins object is then retrieved from the store & compared within original to confirm result -*/ -void TestMargins::Test() - { - TestStream(); - } - -/** - TestMargins::TestStream - Tests functionality contained within the TMargins class, settings various attributes - on the margins & streaming the object to file, via CDirectFileStore calls. - The TMargins object is then retrieved from the store & compared within original to confirm result -*/ -void TestMargins::TestStream() - { - TMargins tm; - tm.iLeft=iLeft; - tm.iRight=iRight; - tm.iTop=iTop; - tm.iBottom=iBottom; - iTest->InitialiseWriteStream(); - TRAPD(ret,tm.ExternalizeL(writestrm)); - iTest->TEST2(ret, KErrNone); - iTest->ResetWriteStream(); - TMargins tm2; - tm2.iLeft=0; - tm2.iRight=0; - tm2.iTop=0; - tm2.iBottom=0; - iTest->InitialiseReadStream(); - TRAP(ret,tm2.InternalizeL(readstrm)); - iTest->TEST2(ret, KErrNone); - iTest->ResetReadStream(); - iTest->TEST(tm.iLeft==tm2.iLeft); - iTest->TEST(tm.iRight==tm2.iRight); - iTest->TEST(tm.iTop==tm2.iTop); - iTest->TEST(tm.iBottom==tm2.iBottom); - } - -//--------- -/** - @SYMTestCaseID GRAPHICS-GDI-0001 - - @SYMPREQ PREQ1301 - - @SYMREQ REQ5381 - - @SYMTestCaseDesc Getting/setting font effects with FontEffect - - @SYMTestPriority Critical - - @SYMTestStatus Implemented - - @SYMTestActions (1) Call SetEffect with attributes EAlgorithmicBold and EFalse - (2) Call IsEffectOn with attribute EAlgorithmicBold to check (1) - (3) Call SetEffect with attributes EAlgorithmicBold and ETrue - (4) Call IsEffectOn with attribute EAlgorithmicBold to check (3) - (5) Repeat (1) - (4) with all supported font effects attributes - - @SYMTestExpectedResults Getters should return the expected results set by setters - (2) IsEffectOn should return a value EFalse - (4) IsEffectOn should return a value ETrue -*/ -void TestFontEffect::Test() - { - TUint32 fontEffect = FontEffect::ENone; - - FontEffect::SetEffect(FontEffect::EAlgorithmicBold, EFalse, fontEffect); - iTest->TEST(!FontEffect::IsEffectOn(FontEffect::EAlgorithmicBold, fontEffect)); - FontEffect::SetEffect(FontEffect::EAlgorithmicBold, ETrue, fontEffect); - iTest->TEST( FontEffect::IsEffectOn(FontEffect::EAlgorithmicBold, fontEffect)); - - FontEffect::SetEffect(FontEffect::EDropShadow, EFalse, fontEffect); - iTest->TEST(!FontEffect::IsEffectOn(FontEffect::EDropShadow, fontEffect)); - FontEffect::SetEffect(FontEffect::EDropShadow, ETrue, fontEffect); - iTest->TEST( FontEffect::IsEffectOn(FontEffect::EDropShadow, fontEffect)); - - FontEffect::SetEffect(FontEffect::EOutline, EFalse, fontEffect); - iTest->TEST(!FontEffect::IsEffectOn(FontEffect::EOutline, fontEffect)); - FontEffect::SetEffect(FontEffect::EOutline, ETrue, fontEffect); - iTest->TEST( FontEffect::IsEffectOn(FontEffect::EOutline, fontEffect)); - - FontEffect::SetEffect(FontEffect::EEmbossed, EFalse, fontEffect); - iTest->TEST(!FontEffect::IsEffectOn(FontEffect::EEmbossed, fontEffect)); - FontEffect::SetEffect(FontEffect::EEmbossed, ETrue, fontEffect); - iTest->TEST( FontEffect::IsEffectOn(FontEffect::EEmbossed, fontEffect)); - - FontEffect::SetEffect(FontEffect::EEngraved, EFalse, fontEffect); - iTest->TEST(!FontEffect::IsEffectOn(FontEffect::EEngraved, fontEffect)); - FontEffect::SetEffect(FontEffect::EEngraved, ETrue, fontEffect); - iTest->TEST( FontEffect::IsEffectOn(FontEffect::EEngraved, fontEffect)); - - FontEffect::SetEffect(FontEffect::ESoftEdge, EFalse, fontEffect); - iTest->TEST(!FontEffect::IsEffectOn(FontEffect::ESoftEdge, fontEffect)); - FontEffect::SetEffect(FontEffect::ESoftEdge, ETrue, fontEffect); - iTest->TEST( FontEffect::IsEffectOn(FontEffect::ESoftEdge, fontEffect)); - } - -void TestTFontStyle::Test() - { - TFontStyle fontStyle00; - TFontStyle fontStyle01(EPostureUpright, EStrokeWeightNormal, EPrintPosNormal); - TFontStyle fontStyle02(EPostureItalic, EStrokeWeightNormal, EPrintPosNormal); - TFontStyle fontStyle03(EPostureUpright, EStrokeWeightBold, EPrintPosNormal); - TFontStyle fontStyle04(EPostureItalic, EStrokeWeightBold, EPrintPosNormal); - TFontStyle fontStyle05(EPostureUpright, EStrokeWeightNormal, EPrintPosSuperscript); - TFontStyle fontStyle06(EPostureItalic, EStrokeWeightNormal, EPrintPosSuperscript); - TFontStyle fontStyle07(EPostureUpright, EStrokeWeightBold, EPrintPosSuperscript); - TFontStyle fontStyle08(EPostureItalic, EStrokeWeightBold, EPrintPosSuperscript); - TFontStyle fontStyle09(EPostureUpright, EStrokeWeightNormal, EPrintPosSubscript); - TFontStyle fontStyle10(EPostureItalic, EStrokeWeightNormal, EPrintPosSubscript); - TFontStyle fontStyle11(EPostureUpright, EStrokeWeightBold, EPrintPosSubscript); - TFontStyle fontStyle12(EPostureItalic, EStrokeWeightBold, EPrintPosSubscript); - - Test(fontStyle00); - Test(fontStyle01); - Test(fontStyle02); - Test(fontStyle03); - Test(fontStyle04); - Test(fontStyle05); - Test(fontStyle06); - Test(fontStyle07); - Test(fontStyle08); - Test(fontStyle09); - Test(fontStyle10); - Test(fontStyle11); - Test(fontStyle12); - } - -/** - TestFontStyle::Test - Tests functionality contained within the TFontStyle class. - a TFontStyle object is streamed to & from a file store (via CDirectFileStore) & the results are compared. - Attributes such as Posture, Stroke, Position, BitmapType etc are set & the result verified -*/ -void TestTFontStyle::Test(TFontStyle& aFontStyle) - { - TestStream(aFontStyle); - TestStyle(aFontStyle); - TestBitmapType(aFontStyle); - TestFontEffect(aFontStyle); - } - -/** - TestFontStyle::TestStream - Streams a TFontStyle object is to & from a file store (via CDirectFileStore) & the results are compared. -*/ -void TestTFontStyle::TestStream(const TFontStyle& aFontStyle) - { - iTest -> InitialiseWriteStream(); - TRAPD(ret, aFontStyle.ExternalizeL(writestrm)); - iTest -> TEST2(ret, KErrNone); - iTest -> ResetWriteStream(); - TFontStyle fontStyle; - iTest -> InitialiseReadStream(); - TRAP(ret, fontStyle.InternalizeL(readstrm)); - iTest -> TEST2(ret, KErrNone); - iTest -> ResetReadStream(); - iTest -> TEST(aFontStyle == fontStyle); - } - -/** - TestFontStyle::TestStyle - Tests key attributes of a TFontStyle object by settings Posture, Stroke, Print position & verifiying the result -*/ -void TestTFontStyle::TestStyle(TFontStyle& aFontStyle) - { - iTest -> TEST(TestPosture(aFontStyle)); - iTest -> TEST(TestStrokeWeight(aFontStyle)); - iTest -> TEST(TestPrintPosition(aFontStyle)); - } - -/** - TestFontStyle::TestPosture - Tests Posture attribute of a TFontStyle object by setting a particular value that opposes the original posture & verifiying the new setting -*/ -TBool TestTFontStyle::TestPosture(TFontStyle& aFontStyle) - { - if (EPostureUpright == aFontStyle.Posture()) - { - aFontStyle.SetPosture(EPostureItalic); - return VerifyStyle(aFontStyle, EPostureItalic, aFontStyle.StrokeWeight(), aFontStyle.PrintPosition()); - } - else if (EPostureItalic == aFontStyle.Posture()) - { - aFontStyle.SetPosture(EPostureUpright); - return VerifyStyle(aFontStyle, EPostureUpright, aFontStyle.StrokeWeight(), aFontStyle.PrintPosition()); - } - return EFalse; - } - -/** - TestFontStyle::TestStrokeWeight - Tests Stroke attribute of a TFontStyle object by setting a particular value that opposes the original stroke & verifiying the new setting -*/ -TBool TestTFontStyle::TestStrokeWeight(TFontStyle& aFontStyle) - { - if (EStrokeWeightNormal == aFontStyle.StrokeWeight()) - { - aFontStyle.SetStrokeWeight(EStrokeWeightBold); - return VerifyStyle(aFontStyle, aFontStyle.Posture(), EStrokeWeightBold, aFontStyle.PrintPosition()); - } - else if (EStrokeWeightBold == aFontStyle.StrokeWeight()) - { - aFontStyle.SetStrokeWeight(EStrokeWeightNormal); - return VerifyStyle(aFontStyle, aFontStyle.Posture(), EStrokeWeightNormal, aFontStyle.PrintPosition()); - } - return EFalse; - } - -/** - TestFontStyle::TestPrintPosition - Tests Print Position attribute of a TFontStyle object by setting a particular value that opposes the original position & verifiying the new setting -*/ -TBool TestTFontStyle::TestPrintPosition(TFontStyle& aFontStyle) - { - if (EPrintPosNormal == aFontStyle.PrintPosition()) - { - aFontStyle.SetPrintPosition(EPrintPosSuperscript); - return VerifyStyle(aFontStyle, aFontStyle.Posture(), aFontStyle.StrokeWeight(), EPrintPosSuperscript); - } - else if (EPrintPosSuperscript == aFontStyle.PrintPosition()) - { - aFontStyle.SetPrintPosition(EPrintPosSubscript); - return VerifyStyle(aFontStyle, aFontStyle.Posture(), aFontStyle.StrokeWeight(), EPrintPosSubscript); - } - else if (EPrintPosSubscript == aFontStyle.PrintPosition()) - { - aFontStyle.SetPrintPosition(EPrintPosNormal); - return VerifyStyle(aFontStyle, aFontStyle.Posture(), aFontStyle.StrokeWeight(), EPrintPosNormal); - } - return EFalse; - } - -/** - TestFontStyle::VerifyStyle - Verifies the various attributes in a TFontStyle object -*/ -TBool TestTFontStyle::VerifyStyle( - const TFontStyle& aFontStyle, - TFontPosture aFontPosture, - TFontStrokeWeight aFontStrokeWeight, - TFontPrintPosition aFontPrintPosition) - { - return - aFontPosture == aFontStyle.Posture() && - aFontStrokeWeight == aFontStyle.StrokeWeight() && - aFontPrintPosition == aFontStyle.PrintPosition(); - } - -/** - TestFontStyle::TestBitmapType - Sets the BitmapType attribute for a TFontStyle object to different values & verifies the result is recorded -*/ -void TestTFontStyle::TestBitmapType(TFontStyle& aFontStyle) - { - aFontStyle.SetBitmapType(EDefaultGlyphBitmap); - iTest -> TEST(EDefaultGlyphBitmap == aFontStyle.BitmapType()); - aFontStyle.SetBitmapType(EMonochromeGlyphBitmap); - iTest -> TEST(EMonochromeGlyphBitmap == aFontStyle.BitmapType()); - aFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap); - iTest -> TEST(EAntiAliasedGlyphBitmap == aFontStyle.BitmapType()); - } - -/** - @SYMTestCaseID GRAPHICS-GDI-0002 - - @SYMPREQ PREQ1301 - - @SYMREQ REQ5381 - - @SYMTestCaseDesc Getting/setting font effects on TFontStyle - - @SYMTestPriority Critical - - @SYMTestStatus Implemented - - @SYMTestActions (1) Call SetEffects with attributes EAlgorithmicBold and EFalse - (2) Call IsEffectOn with attribute EAlgorithmicBold to check (1) - (3) Call SetEffects with attributes EAlgorithmicBold and ETrue - (4) Call IsEffectOn with attribute EAlgorithmicBold to check (3) - (5) Call SetEffects/Effects to verify the attribute set in (3) - (6) Repeat (1) - (5) with all supported font effects attributes - - @SYMTestExpectedResults Getters should return the expected results set by setters - (2) IsEffectOn should return a value EFalse - (4) IsEffectOn should return a value ETrue - (5) Effects should return the value set by SetEffects -*/ -void TestTFontStyle::TestFontEffect(TFontStyle& aFontStyle) - { - aFontStyle.SetEffects(FontEffect::EAlgorithmicBold, EFalse); - iTest -> TEST(!aFontStyle.IsEffectOn(FontEffect::EAlgorithmicBold)); - aFontStyle.SetEffects(FontEffect::EAlgorithmicBold, ETrue); - iTest -> TEST( aFontStyle.IsEffectOn(FontEffect::EAlgorithmicBold)); - VerifyFontEffect(aFontStyle); - - aFontStyle.SetEffects(FontEffect::EDropShadow, EFalse); - iTest -> TEST(!aFontStyle.IsEffectOn(FontEffect::EDropShadow)); - aFontStyle.SetEffects(FontEffect::EDropShadow, ETrue); - iTest -> TEST( aFontStyle.IsEffectOn(FontEffect::EDropShadow)); - VerifyFontEffect(aFontStyle); - - aFontStyle.SetEffects(FontEffect::EOutline, EFalse); - iTest -> TEST(!aFontStyle.IsEffectOn(FontEffect::EOutline)); - aFontStyle.SetEffects(FontEffect::EOutline, ETrue); - iTest -> TEST( aFontStyle.IsEffectOn(FontEffect::EOutline)); - VerifyFontEffect(aFontStyle); - - aFontStyle.SetEffects(FontEffect::EEmbossed, EFalse); - iTest -> TEST(!aFontStyle.IsEffectOn(FontEffect::EEmbossed)); - aFontStyle.SetEffects(FontEffect::EEmbossed, ETrue); - iTest -> TEST( aFontStyle.IsEffectOn(FontEffect::EEmbossed)); - VerifyFontEffect(aFontStyle); - - aFontStyle.SetEffects(FontEffect::EEngraved, EFalse); - iTest -> TEST(!aFontStyle.IsEffectOn(FontEffect::EEngraved)); - aFontStyle.SetEffects(FontEffect::EEngraved, ETrue); - iTest -> TEST( aFontStyle.IsEffectOn(FontEffect::EEngraved)); - VerifyFontEffect(aFontStyle); - - aFontStyle.SetEffects(FontEffect::ESoftEdge, EFalse); - iTest -> TEST(!aFontStyle.IsEffectOn(FontEffect::ESoftEdge)); - aFontStyle.SetEffects(FontEffect::ESoftEdge, ETrue); - iTest -> TEST( aFontStyle.IsEffectOn(FontEffect::ESoftEdge)); - VerifyFontEffect(aFontStyle); - } - -void TestTFontStyle::VerifyFontEffect(TFontStyle& aFontStyle) - { - const TUint32 effects = aFontStyle.Effects(); - aFontStyle.SetEffects(effects); - iTest -> TEST(effects == aFontStyle.Effects()); - } - //----------- TestPageSpec::TestPageSpec(TPageSpec::TPageOrientation aOrientation,const TSize& aSize, CTTypes* aTest): iPortraitPageSize(aSize), @@ -508,49 +68,6 @@ iTest->TEST(tpss==tpss2); } -/** - TestFontSSpec::Test - Tests functionality contained within the TFontSpec class. - a TFontSpec object is streamed to & from a file store (via CDirectFileStore) & the results are compared. - Attributes such as typeface, font height, style are set & the result verified -*/ -TestFontSpec::TestFontSpec(const TTypeface& aTypeface,TInt aHeight,TFontStyle aStyle, CTTypes* aTest): - iTypeface(aTypeface), - iHeight(aHeight), - iStyle(aStyle), - iTest(aTest) - {} - -void TestFontSpec::Test() - { - TFontSpec fontspec; - fontspec.iTypeface=iTypeface; - fontspec.iHeight=iHeight; - fontspec.iFontStyle=iStyle; - TFontSpec fontspec2(iTypeface.iName,iHeight); - fontspec2.iTypeface=iTypeface; - fontspec2.iFontStyle=iStyle; - iTest->TEST(fontspec==fontspec2); - TestStream(); - } - -void TestFontSpec::TestStream() - { - TFontSpec fs(iTypeface.iName,iHeight); - fs.iTypeface=iTypeface; - fs.iFontStyle=iStyle; - iTest->InitialiseWriteStream(); - TRAPD(ret,fs.ExternalizeL(writestrm)); - iTest->TEST2(ret, KErrNone); - iTest->ResetWriteStream(); - TFontSpec fs2; - iTest->InitialiseReadStream(); - TRAP(ret,fs2.InternalizeL(readstrm)); - iTest->TEST2(ret, KErrNone); - iTest->ResetReadStream(); - iTest->TEST(fs==fs2); - } - TestRgb::TestRgb(TUint8 r1,TUint8 g1,TUint8 b1, CTTypes* aTest): iR(r1), @@ -752,34 +269,12 @@ break; case 2: { - INFO_PRINTF1(_L("TTypeface")); - TestTypeface ttf1(_L(""), 0, this); - TestTypeface ttf2(_L("Font name"), 1, this); - TestTypeface ttf3(_L("Font name"), 2, this); - TestTypeface ttf4(_L("Font name"), 3, this); - TestTypeface ttf5(_L("Font name"), 4, this); - TestTypeface ttf6(_L("Font name"), 5, this); - TestTypeface ttf7(_L("Font name"), 6, this); - TestTypeface ttf8(_L("Another font name"), 7, this); - ttf1.Test(); - ttf2.Test(); - ttf3.Test(); - ttf4.Test(); - ttf5.Test(); - ttf6.Test(); - ttf7.Test(); - ttf8.Test(); + INFO_PRINTF1(_L("TTypeface is moved to TextBase")); } break; case 3: { - TestMargins tm1(0,0,0,0, this); - TestMargins tm2(10,20,30,40, this); - TestMargins tm3(-10,-20,-30,-40, this); - INFO_PRINTF1(_L("TMargins")); - tm1.Test(); - tm2.Test(); - tm3.Test(); + INFO_PRINTF1(_L("TMargins is moved to TextBase")); } break; case 4: @@ -801,28 +296,17 @@ break; case 5: { - INFO_PRINTF1(_L("FontEffect")); - ((CTTypesStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-0002")); - TestFontEffect te(this); - ((CTTypesStep*)iStep)->RecordTestResultL(); - te.Test(); + INFO_PRINTF1(_L("FontEffect is moved to TextBase")); } break; case 6: { - INFO_PRINTF1(_L("TFontSyle")); - TestTFontStyle ts(this); - ts.Test(); + INFO_PRINTF1(_L("TFontSyle is moved to TextBase")); } break; case 7: { - TTypeface typeface; - typeface.iName=_L("Font name"); - TFontStyle fontstyle; - TestFontSpec tfspec(typeface,200,fontstyle, this); - INFO_PRINTF1(_L("TFontSpec")); - tfspec.Test(); + INFO_PRINTF1(_L("TFontSpec is moved to TextBase")); } break; case 8: @@ -856,16 +340,12 @@ break; case 9: { - INFO_PRINTF1(_L("CTypefaceStore")); - TestTFStore ttfs(this); - ttfs.Test(); + INFO_PRINTF1(_L("CTypefaceStore is moved to TextBase")); } break; case 10: { - INFO_PRINTF1(_L("CFontCache")); - TestFontCache tfc(this); - tfc.Test(); + INFO_PRINTF1(_L("CFontCache is moved to TextBase")); } break; case 11: diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/TTYPES.H --- a/graphicsdeviceinterface/gdi/tgdi/TTYPES.H Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/tgdi/TTYPES.H Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -103,56 +103,6 @@ CTestPalette* iPalette2; CTTypes* iTest; }; - -class TTestFontAccess - { -public: - CFont* iFont; - TInt iAccessCount; - }; - -class CTestTypefaceStore : public CTypefaceStore - { -public: - CTestTypefaceStore(CTTypes* aTest); - void ConstructTestL(); - TInt Count(); - TInt AccessCount(TInt aIndex); - void AddFont(CFont*); - void OpenFont(CFont*); - // CTypefaceStore implementation - TInt GetNearestFontInTwips(CFont*&, const TFontSpec&) { return KErrNone; } - TInt GetNearestFontToDesignHeightInTwips(CFont*&, const TFontSpec&) { return KErrNone; } - TInt GetNearestFontToMaxHeightInTwips(CFont*&, const TFontSpec&, TInt) { return KErrNone; } - virtual TInt NumTypefaces() const {return(0);} - virtual void TypefaceSupport(TTypefaceSupport&,TInt) const {} - virtual TInt FontHeightInTwips(TInt,TInt) const {return(0);} - virtual TBool IsSameFont(CFont* aFirstFont,CFont* aSecondFont) {return(aFirstFont==aSecondFont);} -private: - CTTypes* iTest; - }; - -class TestTFStore - { -public: - TestTFStore(CTTypes* aTest); - void Test(); -private: - CTestTypefaceStore iTTFStore; - CTTypes* iTest; - }; - -class TestFontCache - { -public: - TestFontCache(CTTypes* aTest); - void Test(); - void TestL(); -public: - CFontCache* iCache; - CTTypes* iTest; - }; - class TestLine { public: @@ -170,33 +120,6 @@ TPoint iFinish; CTTypes* iTest; }; - -class TestTypeface - { -public: - TestTypeface(const TBuf<KMaxTypefaceNameLength>& aName,TUint32 aFlags, CTTypes* aTest); - void Test(); - void TestStream(); -private: - TBuf<KMaxTypefaceNameLength> iName; - TUint32 iFlags; - CTTypes* iTest; - }; - -class TestMargins - { -public: - TestMargins(TInt aLeft,TInt aRight,TInt aTop,TInt aBottom, CTTypes* aTest); - void Test(); - void TestStream(); -private: - TInt iLeft; - TInt iRight; - TInt iTop; - TInt iBottom; - CTTypes* iTest; - }; - class TestPageSpec { public: @@ -208,56 +131,6 @@ TPageSpec::TPageOrientation iOrientation; CTTypes* iTest; }; - -class TestFontEffect - { -public: - TestFontEffect(CTTypes* aTest) : - iTest(aTest) - { - - } - void Test(); - CTTypes* iTest; - }; - -class TestTFontStyle - { -public: - TestTFontStyle(CTTypes* aTest) : - iTest(aTest) - { - - } - void Test(); -private: - void Test(TFontStyle& aFontStyle); - void TestStream(const TFontStyle& aFontStyle); - void TestStyle(TFontStyle& aFontStyle); - TBool TestPosture(TFontStyle& aFontStyle); - TBool TestStrokeWeight(TFontStyle& aFontStyle); - TBool TestPrintPosition(TFontStyle& aFontStyle); - TBool VerifyStyle(const TFontStyle& aFontStyle, TFontPosture aFontPosture, TFontStrokeWeight aFontStrokeWeight, TFontPrintPosition aFontPrintPosition); - void TestBitmapType(TFontStyle& aFontStyle); - void TestFontEffect(TFontStyle& aFontStyle); - void VerifyFontEffect(TFontStyle& aFontStyle); -protected: - CTTypes* iTest; - }; - -class TestFontSpec - { -public: - TestFontSpec(const TTypeface& aTypeface,TInt aHeight,TFontStyle aStyle, CTTypes* aTest); - void Test(); - void TestStream(); -private: - TTypeface iTypeface; - TInt iHeight; - TFontStyle iStyle; - CTTypes* iTest; - }; - class TestRgb { public: diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_All.script --- a/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_All.script Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_All.script Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -18,15 +18,3 @@ LOAD_SUITE TGdiServer RUN_TEST_STEP 100 TGdiServer TRgb RUN_TEST_STEP 100 TGdiServer TTypes -RUN_TEST_STEP 1000 TGdiServer TBiDiDefect -RUN_TEST_STEP 3000 TGdiServer TLineBreak - -RUN_UTILS MakeReadWrite C:\TNR_Dev_OT.ttf -RUN_UTILS CopyFile z:\RESOURCE\FONTS\TNR_Dev_OT.ttf C:\TNR_Dev_OT.ttf -RUN_UTILS MakeReadWrite C:\TNR_Dev_OT.TTF -RUN_UTILS MakeReadWrite C:\s60ssb_v500.ttf -RUN_UTILS CopyFile z:\RESOURCE\FONTS\s60ssb_v500.ttf C:\s60ssb_v500.ttf -RUN_UTILS MakeReadWrite C:\s60ssb_v500.ttf -RUN_TEST_STEP 100 TGdiServer TGlyphSelection - -RUN_TEST_STEP 100 TGdiServer TBiDi diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_BiDi.script --- a/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_BiDi.script Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -PRINT Run TBiDi gdi test -// -LOAD_SUITE TGdiServer -RUN_TEST_STEP 100 TGdiServer TBiDi diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_BiDiDefect.script --- a/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_BiDiDefect.script Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -PRINT Run TBiDiDefect gdi test -// -LOAD_SUITE TGdiServer -RUN_TEST_STEP 100 TGdiServer TBiDiDefect diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_GlyphSelection.script --- a/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_GlyphSelection.script Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -PRINT Run TGlyphSelection gdi test -// - -// this test needs another copy of the font on the C drive -RUN_UTILS MakeReadWrite C:\TNR_Dev_OT.ttf -RUN_UTILS CopyFile z:\RESOURCE\FONTS\TNR_Dev_OT.ttf C:\TNR_Dev_OT.ttf -RUN_UTILS MakeReadWrite C:\TNR_Dev_OT.TTF - -RUN_UTILS MakeReadWrite C:\s60ssb_v500.ttf -RUN_UTILS CopyFile z:\RESOURCE\FONTS\s60ssb_v500.ttf C:\s60ssb_v500.ttf -RUN_UTILS MakeReadWrite C:\s60ssb_v500.ttf - -RUN_UTILS MakeReadWrite C:\TestExtB.ttf -RUN_UTILS CopyFile z:\RESOURCE\FONTS\TestExtB.ttf C:\TestExtB.ttf -RUN_UTILS MakeReadWrite C:\TestExtB.ttf - -LOAD_SUITE TGdiServer -RUN_TEST_STEP 100 TGdiServer TGlyphSelection diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_LineBreak.script --- a/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_T_LineBreak.script Thu Sep 02 21:50:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -PRINT Run TLineBreak gdi test -// -LOAD_SUITE TGdiServer -RUN_TEST_STEP 20000 TGdiServer TLineBreak diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/tgdi/scripts/gditest_run.bat --- a/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_run.bat Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/tgdi/scripts/gditest_run.bat Fri Sep 17 08:36:49 2010 +0300 @@ -1,4 +1,4 @@ -rem Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +rem Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). rem All rights reserved. rem This component and the accompanying materials are made available rem under the terms of "Eclipse Public License v1.0" @@ -24,11 +24,3 @@ copy c:\logs\testexecute\gditest_t_rgb.htm e:\logs\testexecute\gditest_t_rgb.htm testexecute.exe z:\gditest\gditest_t_types.script copy c:\logs\testexecute\gditest_t_types.htm e:\logs\testexecute\gditest_t_types.htm -testexecute.exe z:\gditest\gditest_t_bididefect.script -copy c:\logs\testexecute\gditest_t_bididefect.htm e:\logs\testexecute\gditest_t_bididefect.htm -testexecute.exe z:\gditest\gditest_t_linebreak.script -copy c:\logs\testexecute\gditest_t_linebreak.htm e:\logs\testexecute\gditest_t_linebreak.htm -testexecute.exe z:\gditest\gditest_t_glyphselection.script -copy c:\logs\testexecute\gditest_t_glyphselection.htm e:\logs\testexecute\gditest_t_glyphselection.htm -testexecute.exe z:\gditest\gditest_t_bidi.script -copy c:\logs\testexecute\gditest_t_bidi.htm e:\logs\testexecute\gditest_t_bidi.htm diff -r 2bd88482bfe5 -r 6a1564a2f3e6 windowing/windowserver/test/t_genericplugin/group/t_wservgenericplugin_helium.pkg --- a/windowing/windowserver/test/t_genericplugin/group/t_wservgenericplugin_helium.pkg Thu Sep 02 21:50:40 2010 +0300 +++ b/windowing/windowserver/test/t_genericplugin/group/t_wservgenericplugin_helium.pkg Fri Sep 17 08:36:49 2010 +0300 @@ -34,4 +34,4 @@ ;*Files To Copy...<src> <destination> "\epoc32\data\z\wstest\genericplugin\graphics-wserv-genericplugin-load-nga.script"-"c:\wstest\genericplugin\graphics-wserv-genericplugin-load-nga.script" - +"\epoc32\data\z\wstest\genericplugin\graphics-wserv-genericplugin-nga.ini"-"c:\wstest\genericplugin\graphics-wserv-genericplugin-nga.ini" diff -r 2bd88482bfe5 -r 6a1564a2f3e6 windowing/windowserver/test/tcsc/resources/wsini_csc_nga_naviengine.ini Binary file windowing/windowserver/test/tcsc/resources/wsini_csc_nga_naviengine.ini has changed